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 |
eu.fbk.knowledgestore.data.XPathFunction | Line |
eu.fbk.knowledgestore.data.Record | Line |
eu.fbk.knowledgestore.data.Data | 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 <https://github.com/icedrake/jsmaz> (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 <https://github.com/icedrake/jsmaz> (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 https://jersey.java.net/apidocs/2.5.1/jersey/org/glassfish/jersey/server/filter/UriConnegFilter.html | 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 |