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