Details

      Description

      The STORE_BLANK_NODES option on the AbstractTripleStore only causes the mapping from the blank node ID to the term identifier to be stored in the lexicon. It must be extended to also store the reverse mapping from term identifier to blank node ID and the logic in _getTerm(long id) and getTerms(Collection<Long>) must be modified to resolve the term identifier of a blank node against the lexicon in order to recover the "told" blank node identifier.

        Activity

        Hide
        pchampin Pierre-Antoine Champin added a comment -

        Does it work correctly? It is hard to say from an outsider's point of view, as it is barely documented in the wiki.

        Here's what I tried:

        • create a namespace with storeBlankNodes set to true
        • insert the following triples (using the update tab, and the N-Quads format) :
          _:x <tag:p> <tag:o1> .
          _:x <tag:p> <tag:o2> .
          
        • then insert the following triples the same way:
          _:x <tag:p> <tag:o3> .
          
        • switching to the query tab, I type "select * { ?s ?p ?o }

          ", and I get :

          s	p	o
          genid-faa347ddcec84f5f9782058e9b2bdb1a-x	<tag:p>	<tag:o1>
          genid-faa347ddcec84f5f9782058e9b2bdb1a-x	<tag:p>	<tag:o2>
          genid-9398a6fb208943f4b2dd6d0f25a29c4f-x	<tag:p>	<tag:o3>
          

        So the _:x bnodes from my two batches have generated different bnodes, which seems to contradict what the wiki says about the "told bnodes" mode:

        When using this option, the blank node IDs are treated in much the same manner as URIs. They are stable identifiers which may be used to refer to the blank node. In this case, the interchange of RDF data may be broken down into multiple documents and blank node identity will be preserved.

        Show
        pchampin Pierre-Antoine Champin added a comment - Does it work correctly? It is hard to say from an outsider's point of view, as it is barely documented in the wiki. Here's what I tried: create a namespace with storeBlankNodes set to true insert the following triples (using the update tab, and the N-Quads format) : _:x <tag:p> <tag:o1> . _:x <tag:p> <tag:o2> . then insert the following triples the same way: _:x <tag:p> <tag:o3> . switching to the query tab, I type "select * { ?s ?p ?o } ", and I get : s p o genid-faa347ddcec84f5f9782058e9b2bdb1a-x <tag:p> <tag:o1> genid-faa347ddcec84f5f9782058e9b2bdb1a-x <tag:p> <tag:o2> genid-9398a6fb208943f4b2dd6d0f25a29c4f-x <tag:p> <tag:o3> So the _:x bnodes from my two batches have generated different bnodes, which seems to contradict what the wiki says about the "told bnodes" mode: When using this option, the blank node IDs are treated in much the same manner as URIs. They are stable identifiers which may be used to refer to the blank node. In this case, the interchange of RDF data may be broken down into multiple documents and blank node identity will be preserved.
        Hide
        bryanthompson bryanthompson added a comment -

        This issue has been resolved. The STORE_BLANK_NODES mode now works correctly.

        Show
        bryanthompson bryanthompson added a comment - This issue has been resolved. The STORE_BLANK_NODES mode now works correctly.

          People

          • Assignee:
            bryanthompson bryanthompson
            Reporter:
            bryanthompson bryanthompson
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: