Jelly-JVM
Jelly-JVM is an implementation of the Jelly serialization format and gRPC streaming protocol for the Java Virtual Machine (JVM). It supports Apache Jena, Eclipse RDF4J, the Titanium RDF API, and Neo4j.
Jelly-JVM provides a full stack of utilities for fast and scalable RDF streaming with Jelly. Oh, and it's blazing-fast, too!
Getting started with plugins – no code required
Use our plugins for Neo4j, Apache Jena, and RDF4J to quickly add Jelly support to your applications without writing any code.
Getting started for application developers
If you want to use the full feature set of Jelly-JVM in your code, see the getting started guide for application developers.
This documentation is for the latest development version of Jelly-JVM – it is not considered stable. If you are looking for the documentation of a stable release, use the version selector on the left of the top navigation bar. See: latest stable version.
Library modules
The implementation is split into a few modules that can be used separately:
-
jelly-core
– core generic code for serializing/deserializing Jelly data. You need an additional module (likejelly-jena
) to integrate it with a specific RDF library. -
jelly-jena
– integration with Apache Jena. Learn more -
jelly-rdf4j
– integration with Eclipse RDF4J. Learn more -
jelly-titanium-rdf-api
– integration with the Titanium RDF API. Learn more -
jelly-neo4j-plugin
– integration with the Neo4j graph database via the neosemantics plugin. Learn more -
jelly-pekko-stream
– utilities for building Reactive Streams of RDF data, based on Pekko Streams. Useful for integrating with for example gRPC, Kafka, or MQTT. Learn more -
jelly-pekko-grpc
– implementation of a gRPC client and server for the Jelly gRPC streaming protocol. Learn more
Jelly-Patch (experimental)
Jelly-Patch is an efficient format for recording changes to RDF datasets. Jelly-JVM has an experimental implementation of Jelly-Patch:
jelly-core-patch
– core generic code for serializing/deserializing Jelly-Patch data. You need an additional module (likejelly-jena-patch
) to integrate it with a specific RDF library.jelly-jena-patch
– integration with Apache Jena.jelly-rdf4j-patch
– partial integration with Eclipse RDF4J. RDF4J does not support RDF Patch, so this module only provides low-level Jelly-Patch support.
Plugin JARs
We also publish plugin JARs which allow you to use Jelly-JVM with Apache Jena, RDF4J, and Neo4j just by dropping the JARs into the classpath.
Compatibility
Jelly-JVM is compatible with Java 17 and newer. Java 17, 21, and 24 are tested in CI and are guaranteed to work. The modules integrating with Pekko Streams use Scala and are built with Scala 3 LTS releases.
The following table shows the compatibility of the Jelly-JVM implementation with other libraries:
Jelly-JVM | Java | Scala | RDF4J | Jena | Pekko | Neo4j |
---|---|---|---|---|---|---|
3.5.x–3.5.0 | 17+ | 3.3.x (LTS)2 | 4.3.x–5.x.x | 5.x.x | 1.1.x | 5.1.0–5.20.0 |
3.0.x–3.4.x | 17+ | 3.3.x (LTS)2 | 5.x.x | 5.x.x | 1.1.x | – |
2.0.x–2.10.x | 17+ | 3.3.x (LTS) | 5.x.x | 5.x.x | 1.1.x | – |
1.0.x | 11+ | 3.3.x (LTS) 2.13.x1 |
4.x.x | 4.x.x | 1.0.x | – |
See the compatibility policy for more details and the release notes on GitHub.
Documentation
Below is a list of all documentation pages about Jelly-JVM. You can also browse the Javadoc using the badges in the module list above. The documentation uses examples written in Scala, but the libraries can be used from Java as well.
- Getting started
- Jena/RDF4J plugins – how to use Jelly-JVM as a plugin for Apache Jena or RDF4J, without writing any code.
- Neo4j plugin – how to use the Jelly plugin with Neo4j and neosemantics.
- Application developers – how to use Jelly-JVM in code.
- User guide
- Contributing to Jelly-JVM
- License and citation
- Release notes on GitHub
- Main Jelly website – including the Jelly protocol specification and explanation of the various stream types.
Commercial and community support
NeverBlink provides commercial support services for Jelly, including implementing custom features, system integrations, implementations for new frameworks, benchmarking, and more.
Community support is available on the Jelly Discord chat.
The development of the Jelly protocol, its implementations, and supporting tooling was co-funded by the European Union. More details.
-
Scala 2.13-compatible builds of Jelly-JVM are available for Jelly-JVM 1.0.x. Scala 2 support was removed in subsequent versions. See more details. ↩
-
Scala version applies only to the
jelly-pekko-*
modules. The other modules do not depend on Scala and are compatible with any version of Java 17+. ↩↩