The following document contains the listing of user tags found in the code. Below is the summary of the occurrences per tag.

Tag Class Total number of occurrences Tag strings used by tag class
Functionalities to implement 99 TODO
Implementation notes 4 XXX
Problems to fix 1 FIXME

Each tag is detailed below:

Functionalities to implement

Number of occurrences found in the code: 99

eu.fbk.knowledgestore.triplestore.virtuoso.VirtuosoTripleStore Line
eu.fbk.knowledgestore.triplestore.virtuoso.VirtuosoJdbcTripleStore Line
eu.fbk.knowledgestore.triplestore.SelectQuery Line
eu.fbk.knowledgestore.triplestore.SPARQLRenderer Line
eu.fbk.knowledgestore.tool.TestGenerator Line
eu.fbk.knowledgestore.server.http.jaxrs.RenderUtils Line
eu.fbk.knowledgestore.server.http.jaxrs.Match Line
eu.fbk.knowledgestore.server.http.RepresentationResourceTest Line
eu.fbk.knowledgestore.server.http.HttpServer Line
eu.fbk.knowledgestore.server.Server Line
eu.fbk.knowledgestore.runtime.SerializerAvro Line
eu.fbk.knowledgestore.populator.rdf.Decoder Line
eu.fbk.knowledgestore.populator.naf.submitKS Line
eu.fbk.knowledgestore.populator.naf.processNAF Line
eu.fbk.knowledgestore.populator.naf.nafPopulator Line
eu.fbk.knowledgestore.populator.naf.NAFRunner Line
eu.fbk.knowledgestore.package-info Line
eu.fbk.knowledgestore.internal.rdf.RDFUtil Line
eu.fbk.knowledgestore.internal.jaxrs.Serializer Line
eu.fbk.knowledgestore.datastore.hbase.utils.TephraHBaseUtils Line
eu.fbk.knowledgestore.datastore.hbase.utils.OmidHBaseUtils Line
eu.fbk.knowledgestore.datastore.hbase.utils.HBaseUtils Line
eu.fbk.knowledgestore.datastore.hbase.utils.AvroSerializer Line
eu.fbk.knowledgestore.datastore.hbase.HBaseDataStoreTest Line
eu.fbk.knowledgestore.datastore.MySQLDataStoreTest Line
eu.fbk.knowledgestore.datastore.MemoryDataStore Line
eu.fbk.knowledgestore.datastore.CachingDataStore Line Line Line Line
eu.fbk.knowledgestore.client.package-info Line
eu.fbk.knowledgestore.client.KnowledgeStoreClientTest Line
eu.fbk.knowledgestore.client.Client Line
eu.fbk.knowledgestore.OperationException Line
eu.fbk.knowledgestore.Operation Line
errors from the handlers are logged and cause the invocation to be interrupted eventually; still, the handler will be notified of all the outcomes until the invocation ends 589
add missing namespaces based on available namespaces 996
make OperationException unchecked? 9
decide where to place the Configuration class 68
--No comment-- 436
intercept client-side connection close 33
revise documentation 1
RDF conversion 34
bytes 35
getterOf, getterOfUnique, converterTo 36
this class needs urgent refactoring </p> 99
perhaps datatype should be based on denoted value, rather than class (e.g. 3.0f -> 3 xsd:byte) 825
currently we check only the characters forming the IRI, not its structure 1095
we only replace illegal characters, but we should also check and fix the IRI structure 1138
this is not efficient! add Node.toBytes 847
add subject(), predicate(), object(), context() functions to extract statement components 47
--No comment-- 210
--No comment-- 222
--No comment-- 232
--No comment-- 244
--No comment-- 254
--No comment-- 264
--No comment-- 274
--No comment-- 284
--No comment-- 306
--No comment-- 316
--No comment-- 326
--No comment-- 336
--No comment-- 346
--No comment-- 356
--No comment-- 366
--No comment-- 376
--No comment-- 407
--No comment-- 417
--No comment-- 427
--No comment-- 437
--No comment-- 447
--No comment-- 457
--No comment-- 467
--No comment-- 477
--No comment-- 487
--No comment-- 497
--No comment-- 507
global cache should store byte[] rather than Record object trees, so that a larger cache size can be used; this need to move serialization logic (no more Avro-based, please!) in ks-core 32
--No comment-- 274
I don't thing this will work condition.decompose(propertyRanges); 60
Auto-generated catch block 71
I don't thing this will work condition.decompose(propertyRanges); 49
Auto-generated catch block 60
add ideas from smaz/jsmaz to dictionary-compress short strings / uris <> (30-50% string reduction achievable) 51
check if this is ok 170
rollback is there is an exception 154
propagate exceptions 156
propagate exceptions 160
propagate exceptions 145
rollback if there is an exception 164
propagate exceptions 166
propagate exceptions 170
supported types depend on imported libraries 61
reorganize code in this class 90
revise documentation 1
if batchsize ==-1 so submit all once?! check it 349
--No comment-- 395
important if any illegal input crash with error message 141
mohammed if there already decided an externalRef don't add new one. 415
--No comment-- 554
we need to verify the mapping here m.add(NWR.CERTAINTY, fvObj.getPrediction()); m.add(NWR.FACTUALITY, fvObj.getPrediction()); 626
remove it @mohammed Sept2014PREFIX uri = PREFIX+uri; 1878
do the deletion of the previous ks resources then return true; 90
--No comment-- 106
--No comment-- 28
add ideas from smaz/jsmaz to dictionary-compress short strings / uris <> (30-50% string reduction achievable) 51
file garbage collection 48
--No comment-- 84
inefficient + conversion to String may not work as charset is unknown 278
--No comment-- 969
--No comment-- 1075
add here filtering logic to be applied to records coming from the client 1087
validation and inference can be triggered here (perhaps using a Schema object) 1092
this has to be done better using some Schema object 1097
handle entities, axioms and contexts 1115
check 38
add DOSFilter and QOSFilter from jetty-servlets 41
getters and tostring 43
handle this 449
handle this 452
--No comment-- 14
--No comment-- 8
only XML enabled by default - should be generalized / made more robust 183
remove this hack, necessary for giving gzip enough time to complete writing the file (the fix should be added to IO.write()) 447
not accepted by Virtuoso :-( else if (c >= 0x0 && c <= 0x8 || c == 0xB || c == 0xC || c >= 0xE && c <= 0x1F || c >= 0x7F && c <= 0xFFFF) { builder.append("\\u").append( Strings.padStart(Integer.toHexString(c).toUpperCase(), 4, '0')); } else if (c >= 0x10000 && c <= 0x10FFFF) { builder.append("\\U").append( Strings.padStart(Integer.toHexString(c).toUpperCase(), 8, '0')); } 232
Virtuoso fix :-( 557
--No comment-- 580
workaround for Virtuoso 1497
check whether the visitor code (taken from BindingAssigner) is enough, especially w.r.t. variables appearing in projection nodes (= SELECT clause). 227
try to better implement this method without checking for string containment (perhaps now we have access to some SQL code) 299
disabled so not to depend on HDFS 250
disabled so not to depend on HDFS 264
disabled so not to depend on HDFS 278

Implementation notes

Number of occurrences found in the code: 4

eu.fbk.knowledgestore.datastore.DataTransaction Line
'union' merge criteria has a natural mapping in a HBase layout where the value is incorporated in the column name; when writing an attribute, this layout avoid the need to retrieve the previous values of an attribute in order to do the merge and compute the new values, which is more efficient in case a large number of values can be associated to the attribute; however, we do not expect this to be the case (apart from the 'isReferredBy' attribute, that is not stored however) -> ignoring this consideration, it seems OK to move all the logic related to merge criteria in the frontend 250
Coprocessors could be used in order to implement the merge and update primitives (the latter via a custom CoprocessorProtocol); still, they would need to implement: merge criteria, validation, update of related object (e.g., to manipulate bidirectional relations). If we avoid coprocessors, then the KS server (= HBase client) would need to fetch the previous values for the object being modified and handle merge criteria, validation and enforcing of bidirectionality locally. This would require an additional communication between the KS server and the affected region server(s), whose cost depend on round-trip latency and bandwidth. We may ignore bandwidth (100+MBits/sec in a LAN) and use batching techniques (HBase batch calls) to distribute latency (~1ms) over multiple calls, so to make it almost irrelevant. By adopting this approach, the benefits of using coprocessors seems greatly overcome by their far greater implementation costs, hence they are not adopted 258
AggregateClient can be used to implement count (in future, we may extract more elaborated statistics introducing some kind of 'stats' primitive and a corresponding coprocessor) 270
an alternative way to delete records would be something like delete(condition), which would allow deleting a bunch of objects satisfying a condition without first retrieving them; still, it is unlikely the frontend may delete objects without looking at their data and fixing related objects, so a retrieval would still be needed in most cases; given also that delete performances are not so important as the performances of other operations, the decisions is to stick with delete(object) which seems simpler to implement 273

Problems to fix

Number of occurrences found in the code: 1

eu.fbk.knowledgestore.tool.TestDriver Line
conditions do not seem to work 740

Back to top

Last Published: 2016/02/08.

Reflow Maven skin by Andrius Velykis.

Data and Knowledge Management tools