1 of 24

Jelly: a Fast and Convenient RDF Serialization Format

Piotr Sowiński1,2, Karolina Bogacka1,2, Anastasiya Danilenka1,2, Nikita Kozlov1,2

¹ NeverBlink

² Warsaw University of Technology, Poland

September 3, 2025��SemDev @ SEMANTiCS, Vienna, Austria

2 of 24

We have RDF formats that do things well!

  • N-Triples – simplicity
  • Turtle – human readability
  • JSON-LD – non-RDF experience
  • HDT – compressed, queryable dumps
  • RDF/XML – being annoying…

2

3 of 24

But, I desire speed.

  • Client-server communication
  • Inter-service communication
  • DB dumps and bulk loads
  • Streaming pipelines
  • DB replication
  • Change data capture

3

Stefan Laube, public domain

4 of 24

Jelly in a nutshell

  • Binary RDF format based on Protobuf
  • 100% open spec & open source (https://w3id.org/jelly)
  • Implemented for: Java, Python, Rust (experimental)
  • Convenient CLI tool
  • Very fast
  • Reasonably well compressed

4

5 of 24

Serialization speed (Apache Jena)

RiverBench task: flat-serialization-throughput, profile: flat-mixed-rdfstar 2.1.0. Details: https://w3id.org/jelly/dev/performance

5

6 of 24

Parsing speed (Apache Jena)

RiverBench task: flat-deserialization-throughput, profile: flat-mixed-rdfstar 2.1.0. Details: https://w3id.org/jelly/dev/performance

6

7 of 24

Compression ratio

RiverBench task: flat-compression, profile: flat-mixed-rdfstar 2.1.0. Details: https://w3id.org/jelly/dev/performance

7

8 of 24

How does Jelly work?

  • Lightweight streaming compression algorithm
  • For n triples:
    • O(1) memory complexity
    • O(n) time complexity
  • Max supported triple count =
  • 1 file can contain 1 RDF document (graph or dataset)...
  • …or 1 file can contain many RDF documents (!)

8

RDF dataset

RDF dataset

RDF dataset

RDF dataset

9 of 24

9

(experimental)

Jelly-JVM

pyjelly

jelly.rs

RDFLib

Apache�Jena

Titanium�RDF API

Sophia

Pure Python�(no lib)

10 of 24

Get started -> https://w3id.org/jelly

10

11 of 24

11

12 of 24

12

13 of 24

13

14 of 24

14

15 of 24

15

16 of 24

Other cool things you can do with Jelly

  • Streaming over Kafka, MQTT, etc.
  • gRPC
  • Merging & recompressing RDF streams on the fly
  • Live database replication (with Jelly-Patch)
  • Change data capture (with Jelly-Patch)

Real-life use cases? 🡒 See my Industry Track talk on Friday!

16

17 of 24

Interoperability (and reuse)

  • 100% open specification
  • Conformance test kit
  • Guide for new implementations
  • Full coverage of RDF 1.1 and RDF-star

17

(experimental)

Jelly-JVM

pyjelly

jelly.rs

18 of 24

Reuse (and interoperability)

  • Generic implementations + library integrations pattern
    • Less work in maintaining implementations!
  • Focus on supporting popular RDF libraries
  • Simple dependencies (only Protobuf)
  • Comprehensive docs with user stories
  • Quick start guide

18

19 of 24

Conclusion

  • Fast and convenient RDF format
  • Works with Java, Python, Rust (experimental)
  • Integrations for Jena, RDF4J, RDFLib, Neo4j & more
  • Community
    • 100% open source
    • Community Discord servercome chat with us!
    • Community-led implementation for Rust�(big thanks to Arthur Vercruysse)
  • Real-life gains 🡒 Friday, Industry Track talk

⭐ Star us on GitHub!

20 of 24

Acknowledgements

Big thanks to all Jelly developers and the community who make this project possible!

The development of the Jelly protocol, its implementations, and supporting tooling was co-funded by the European Union. Project no. 0021/2025, funding program FENG.02.28-IP.02-0006/23 (Startup Booster Poland – HugeThing Sector Agnostic). The views expressed are of its authors and do not necessarily reflect the views of the European Union.

Total cost of project: 149 941,44 PLN�Contribution from European Funds: 149 941,44 PLN​

20

21 of 24

Backup slides

22 of 24

Interoperability & reuse in action

22

23 of 24

Serializat

23

24 of 24

24