Jelly-SPARQL implementation roadmap #108
Ostrzyciel
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
The following is a roadmap that we came up with in late 2025 for the implementation of Jelly-SPARQL. This project was not funded, and we have no immediate plans to implement it, so we put it up here for anyone in the community who may be interested.
Tasks
T1.1: Design a Jelly-based SPARQL result format
We will design a new SPARQL 1.1 result format (Jelly-SPARQL) based on the Jelly RDF serialization format (see specification: https://w3id.org/jelly/dev/specification/serialization). The format will be designed to cover all cases envisioned by the SPARQL 1.1 W3C Recommendation. The design will take the form of a Protocol Buffers definition and a textual specification, published on the Jelly website, in the same style as the aforementioned Jelly RDF serialization format. A set of conformance test cases will be prepared, for testing compatibility of Jelly-SPARQL implementations, following the already established format of test cases for Jelly-RDF, based on the W3C test case system (https://w3id.org/jelly/dev/conformance/rdf-test-cases/). Additionally, a documentation page will be prepared explaining how the format works in a less formal manner. The results of this task will be used by all downstream tasks.
T2.1: Create a universal JVM base for Jelly-SPARQL implementations
We will prepare the base universal code in Java needed for implementing Jelly-SPARQL in Java Virtual Machine (JVM) RDF libraries: Apache Jena and Eclipse RDF4J (T3, T4). The code will be implemented in the Jelly-JVM GitHub repository as a new project module. Unit and integration tests will be created using a mock RDF library that will test the correctness of the implementation. The task also includes preparing the necessary documentation: Javadoc, and a page explaining how to integrate this implementation with real RDF libraries.
T2.2: Implement Jelly-SPARQL for Apache Jena
We will implement Jelly-SPARQL for Apache Jena and Apache Jena Fuseki using the universal base code from T2. Namely, full support for serializing/deserializing SPARQL result sets using Jelly-SPARQL will be added to Apache Jena Fuseki endpoints and SPARQL federation logic. The integration will take the form of a module in the Jelly-JVM GitHub repository, which will be published to Maven so that adopters can use it as a dependency. Additionally, the Jelly-SPARQL functionality will be added to the existing Jelly plugin for Apache Jena to make installation as easy as adding a single file to the classpath. This task also includes documenting the newly implemented features in Javadoc and on the Jelly documentation website. Unit and integration tests will be implemented as well. Finally, we will attempt to upstream Jelly-SPARQL support to Apache Jena, following a consultation with the project’s maintainers.
This task overlaps with T2.1, as we will use the Jena integration for early end-to-end testing of the JVM implementation.
T2.3: Implement Jelly-SPARQL for Eclipse RDF4J
We will implement Jelly-SPARQL for Eclipse RDF4J using the universal base code from T2.1. Namely, full support for serializing/deserializing SPARQL result sets using Jelly-SPARQL will be added to HTTP endpoints and to the SPARQL federation logic. The integration will take the form of a module in the Jelly-JVM GitHub repository, which will be published to Maven Central so that adopters can use it as a dependency. Additionally, the Jelly-SPARQL functionality will be added to the existing Jelly plugin for RDF4J to make installation as easy as adding a single file to the classpath. This task also includes documenting the newly implemented features in Javadoc/Scaladoc and on the Jelly documentation website. Unit and integration tests will be implemented as well. Finally, we will attempt to upstream Jelly-SPARQL support to RDF4J, following a consultation with the project’s maintainers.
T2.4: Add Jelly-SPARQL support to jelly-cli
We will extend the jelly-cli command-line tool (https://github.com/Jelly-RDF/cli) with 4 new commands: “sparql to-jelly”, “sparql from-jelly”, “sparql validate”, and “sparql inspect” to support conversions to/from Jelly-SPARQL, validating its files, and inspecting them for debugging purposes. These commands will use the integration with Apache Jena (T2.2) and will support all W3C-standard result set formats. This tool will be extremely useful in developing and testing other implementations of Jelly-SPARQL (Python and TypeScript).
T3.1: Create a universal Python base for Jelly-SPARQL implementations
Similarly to Jelly-JVM, we will extend the existing pyjelly project (https://github.com/Jelly-RDF/pyjelly) to add support for serializing/deserializing Jelly-SPARQL data. We will update the current generic integration (dubbed “nolib”, as it does not depend on RDFLib) to also include support for reading/writing SPARQL result sets. Unit and integration tests will be added for the new code. Appropriate documentation will be provided: docstrings and a user guide for the generic integration.
T3.2: Implement Jelly-SPARQL for RDFLib (Python)
We will integrate the Python implementation of Jelly-SPARQL with the popular RDFLib library and support the same features as the implementations in Java: Jelly-SPARQL result set serialization/deserialization, and integration with the various mechanisms of RDFLib (e.g., content negotiation, SPARQL federation). Documentation in the form of docstrings and a documentation website with usage examples will be prepared to help users and contributors. Automated tests will be written for the implemented functionalities. Finally, we will attempt to upstream Jelly-SPARQL support to RDFLib, following a consultation with the project’s maintainers.
T4.1: Implement Jelly and Jelly-SPARQL for Comunica (TypeScript)
In JavaScript/TypeScript there’s an ecosystem of libraries around RDF-JS (https://rdf.js.org) and the Comunica (https://comunica.dev) querying engine. Based on the created specifications, we will implement serializers and parsers for Jelly and Jelly-SPARQL natively in TypeScript. This will boost Jelly adoption, as currently, Jelly is not available within browsers.
T4.2: Integrate Jelly and Jelly-SPARQL support in the JS/TS ecosystem
The implemented parsers and serializers from T4.1 will be integrated in the JS/TS ecosystem. For this, the tools will be integrated as actors within the modular Comunica query engine following Comunica’s interfaces. This allows them to be used for federated query processing (required for T5.1), and reusable parsing and serialization libraries such as rdf-parse, rdf-serialize, and rdf-dereference.
Beta Was this translation helpful? Give feedback.
All reactions