sparq
One engine · 5 themes · honestly labelled

The whole RDF stack, one Rust engine — in your tab.

Every sparq capability, grouped into five themes you can scan in seconds. Query, reason, search, prove, and serve — each surface runs the real engine and wears a badge that says exactly how it runs, from live wasm to a captured-output walkthrough. No demo pretends to be more than it is.

across 5 capability themes
22surfacesacross 5 capability themes
run the real engine in your browser
9in-tabrun the real engine in your browser
ZK · MPC · Solid, end-to-end
3flagshipsZK · MPC · Solid, end-to-end
SPARQL + RDF-star, native Rust
1.1 / 1.2SPARQL + RDF-star, native Rust
Live in your tabLive SPARQL
Run query
PREFIX ex:   <http://example.org/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name ?age ?friend WHERE {
  ex:alice foaf:name  ?name ;
           foaf:age   ?age ;
           foaf:knows ?friend .
} ORDER BY ?friend

The real prefilled query from the sample social graph — open it in the workbench.

Start here

Three proofs that the breadth is real

Not feature checkboxes — complete, runnable demos that each prove one hard thing. Open one and walk away having seen it work.

The full surface set

Every capability, five themes

Each tile is a real surface. The badge is the honest contract for how that surface runs on this static site.

  • Live in your tabshipped wasm, running in your tab now
  • Live (new wasm)an additional wasm bundle, lazy-loaded on expand
  • Live via bb.jsin-tab proving via 3rd-party bb.js UltraHonk
  • Live simulationa faithful in-tab JS simulation of the native protocol
  • Native cratea built, opt-in Rust crate with code and docs linked from this static site
  • Walkthroughcaptured, verbatim engine output replayed (no backend on a static site)
01 / 05

Query & data

Query, exchange, and analyse RDF — SPARQL 1.1/1.2, data formats, canonicalization, and graph algorithms.

Open the SPARQL workbench
SPARQL 1.1 / 1.2
SELECT / ASK / CONSTRUCT / UPDATE, property paths, RDF 1.2 triple terms.
Live in your tabOpen
Data formats
Turtle / N-Triples / N-Quads / TriG + compressed ingest.
Live in your tabOpen
JavaScript / WASM
The @jeswr/sparq browser & Node API — streaming cursors, match, applyDelta.
Live in your tabOpen
Graph analytics
PageRank, centrality, communities, SCCs, and topological order over a directed RDF projection.
let ranks = sparq_algos::pagerank(&graph, Default::default());
Native crate
RDFC-1.0 canonicalization
Canonical blank-node labelling for stable N-Quads, hashing, signing, and graph isomorphism.
let canonical = sparq_canon::canonicalize(&quads)?;
Native crate
Arrow export
Faithful SPARQL SELECT interchange through Arrow RecordBatch, Parquet, and Arrow IPC.
let batch = sparq_arrow::to_record_batch(&result)?;
Native crate
02 / 05

Reason & validate

Derive, trace, validate, and govern RDF — RDFS / OWL 2 RL / N3 closure, PROV-O lineage, SHACL, and ODRL usage-control policy decisions.

Inference
RDFS / OWL 2 RL / N3 closure + proof trees.
Live (new wasm)Open
SHACL
SHACL Core + SHACL-SPARQL → W3C validation report.
Live in your tabOpen
PROV-O lineage
PROV-O derivations for CONSTRUCT, DESCRIBE, UPDATE, and optional reasoner proof trees.
let derivation = sparq_prov::derive_construct(&graph, query, config)?;
Native crate
03 / 05

Search & GenAI

Find and generate over RDF — BM25 full-text, vector k-NN, and a natural-language → SPARQL loop.

04 / 05

Privacy (ZK / MPC)

Answer queries without revealing the data — zero-knowledge query proofs and threshold MPC federation. Research-grade: the v1 verifier is not externally audited.

Research-grade, labelled as such. The v1 ZK verifier is not externally audited — sound as landed under its stated threat model, pending re-review. MPC runs as a faithful in-tab simulation of the native protocol, not a proof of correctness. Indicative engineering, not an audited cryptographic guarantee.
05 / 05

Serve & embed

Run sparq as a service or embed it — HTTP, MCP, CLI, Python, and streaming RSP-QL.

MCP server
Read-only-by-default MCP tools for SPARQL, schema introspection, stats, prefixes, and VoID.
let mut server = sparq_mcp::McpServer::new(graph);
Native crate
CLI
sparq-cli — query / reason / build / query-mmap.
WalkthroughSource
Python
sparq pyo3 bindings.
WalkthroughSource