Claude,

Good timing!

This is what RDF Delta does and for updates rather than just StreamRDF additions though its not to an RDFConnection - it's to a patch service.

With hindsight, I wonder if that woudl have been better as BufferingDatasetGraph - a DSG that keeps changes and makes the view of the buffer and underlying DatasetGraph behave correctly (find* works and has the right cardinality of results). Its a bit fiddley to get it all right but once it works it is a building block that has a lot of re-usability.

I came across this with the SHACL work for a BufferingGraph (with prefixes) give "abort" of transactions to simple graphs which aren't transactional.

But it occurs in Fuseki with complex dataset set ups like rules.

    Andy

On 08/07/2019 11:09, Claude Warren wrote:
I have written an RDFStream to RDFConnection with caching.  Basically, the
stream caches triples/quads until a limit is reached and then it writes
them to the RDFConnection.  At finish it writes any triples/quads in the
cache to the RDFConnection.

Internally I cache the stream in a dataset.  I write triples to the default
dataset and quads as appropriate.

I have a couple of questions:

1) In this arrangement what does the "base" tell me? I currently ignore it
and want to make sure I havn't missed something.

The parser saw a BASE statement.

Like PREFIX, in Turtle, it can happen mid-file (e.g. when files are concatenated).

Its not necessary because the data stream should have resolved IRIs in it so base is used in a stream.

2) I capture all the prefix calls in a PrefixMapping that is accessible
from the RDFConnectionStream class.  They are not passed into the dataset
in any way.  I didn't see any method to do so and don't really think it is
needed.  Does anyone see a problem with this?

3) Does anyone have a use for this class?  If so I am happy to contribute
it, though the next question becomes what module to put it in?  Perhaps we
should have an extras package for RDFStream implementations?

Claude

Reply via email to