The proposal is to create a non-core extension of Jelly that would implement the RDF Patch protocol for communicating changes to RDF datasets in a transactional manner.
Scope:
Implement all features of RDF Patch, including transactions and prefixes.
Some new messages will need to be defined – corresponding to the different commands (e.g., TX, TC, PA, PD...).
See also: #12
For the A and D commands, the inner messages should be RDF triples or quads from the core Jelly.
The outer wrapping messages from Jelly core (RdfStreamRow and RdfStreamFrame) should not be reused/extended, to avoid spaghettifying the code and making changes harder in the future. New wrapping messages dedicated to RDF Patch should be defined.
Up for discussion:
Should the GRAPHS stream type be implemented? It may be problematic... I think just TRIPLES and QUADS will suffice.
How should the header look like? Possibly have a new message (PatchStreamOptions) that wraps RdfStreamOptions and adds a new field for the RDF Patch header content?
Implement this in Jelly-JVM. Possible module structure (TBD):
jelly-patch-core – depends only on jelly-core, library-agnostic implementation
jelly-patch-jena – depends on jelly-patch-core and jelly-jena, implementation fully integrated with Apache Jena
... possible implementation for RDF4J, if this will make sense (not sure if there are APIs for this). TBD
Not in scope:
Integrating Jelly RDF Patch with the gRPC streaming protocol spec. The protocol probably would have to implement something like this. If anyone is interested in that, we can open a separate issue.
Any suggestions, ideas, or expressions of interest are welcome.
The proposal is to create a non-core extension of Jelly that would implement the RDF Patch protocol for communicating changes to RDF datasets in a transactional manner.
Scope:
Implementation:
.proto
file with the format specification.jelly-patch-core
– depends only onjelly-core
, library-agnostic implementationjelly-patch-jena
– depends onjelly-patch-core
andjelly-jena
, implementation fully integrated with Apache JenaNot in scope:
Any suggestions, ideas, or expressions of interest are welcome.