Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposal: Jelly extension for RDF Patch #11

Open
Ostrzyciel opened this issue Oct 31, 2024 · 0 comments
Open

Proposal: Jelly extension for RDF Patch #11

Ostrzyciel opened this issue Oct 31, 2024 · 0 comments
Labels
new protocol feature Discussion about a new feature in the Jelly protocol

Comments

@Ostrzyciel
Copy link
Member

Ostrzyciel commented Oct 31, 2024

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...).
  • 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?

Implementation:

  • Existing related work: RDF Patch implementation with Thrift in Apache Jena
  • Create a new .proto file with the format specification.
  • Create a separate specification document for Jelly RDF Patch. The spec will use the serialization format spec as its basis in the same way that the gRPC streaming protocol spec does.
  • 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
new protocol feature Discussion about a new feature in the Jelly protocol
Projects
None yet
Development

No branches or pull requests

1 participant