Skip to content

Implement sparqld in Rust

Decided · 31 July 2026

Context

sparqld will watch a directory of JSON-LD files and expose their current RDF dataset through a live, read-only SPARQL endpoint. The implementation language must support reliable JSON-LD processing, SPARQL evaluation, filesystem watching, HTTP serving, and straightforward distribution as a local command-line tool; choosing it now will establish the project’s library ecosystem and runtime model before implementation begins.

Decision

Language JSON-LD 1.1 SPARQL 1.1 Combined semantic stack Decision
Rust ⚠ oxigraph/oxigraph ✅ 0.5.9 ✅ Chosen
Python ✅ ✅ 7.6.0 Not selected
TypeScript ✅ ✅ jsonld 9.0.0 + Comunica 5.3.0 Not selected
C# ✅ ✅ 3.5.1 Not selected
Java
JVM
✅ ✅ 6.1.0 Not selected
Kotlin
JVM
Jena ARQ Jena 6.1.0 Not selected
Clojure
JVM
Jena ARQ Jena 6.1.0 Not selected
Go ✅ piprate/json-gold ✅ v0.1.13 ❌ Excluded
Insufficient adoption
C++ ⚠ dcdpr/jsonld-cpp ⚠ ⚠ no release dcdpr/jsonld-cpp
Rasqal 0.9.33
❌ Excluded
Incomplete JSON-LD dcdpr/jsonld-cpp + partial SPARQL
Haskell ❌ ❌ rdf4h 5.2.2
2018 agentultra/json-ld · archived cordawyn/aeson-ld
❌ Excluded
Maintained stack lacks JSON-LD and SPARQL
Zig ❌ ⚠ gHashTag/zig-knowledge-graph Unreleased gHashTag/zig-knowledge-graph ❌ Excluded
No JSON-LD implementation identified + unreleased SPARQL gHashTag/zig-knowledge-graph

Capability rows: ✅ direct support · host-language interoperability · ⚠ partial or unverified · ❌ unavailable. Decision row: ✅ chosen · not selected · ❌ excluded.

Consequences