Capabilities at a glance

The engine core is always built; every capability below is an opt-in crate or feature that the core does not depend on, so the core stays lean. Each links the standard it implements and its usage guide.

  • SPARQL query — run SPARQL 1.1 and 1.2 over your data (guide).
  • SPARQL Update — insert, delete, and load data with SPARQL 1.1 Update (guide).
  • RDF parsing & ingest — load and parse Turtle, N-Triples, N-Quads, and TriG, with transparent .gz / .bz2 / .zst decompression (guide).
  • Rust-native RDF objects — bind a focus term to an owned or borrowed store, traverse outgoing/incoming predicates, and convert typed literal values without handling raw triples (guide).
  • RDF 1.2 triple terms — store and query triple terms per RDF 1.2 Concepts (guide).
  • Custom extension functions — register your own Rust functions under IRIs and call them in SPARQL (docs/extension-functions.md).
  • RDFS / OWL-RL / N3 reasoning — materialise entailments under RDFS, the OWL 2 RL profile, and Notation3 (guide). N3 is measured against the w3c/N3 community-group suite (report); the community notation3tests suite runs in an advisory lane with no published baseline yet.
  • SHACL validation — validate graphs against shapes with SHACL (guide).
  • Full-text search — index and search RDF literals from SPARQL (guide).
  • GeoSPARQL — spatial filters and functions over geometries with OGC GeoSPARQL (guide).
  • Vector & similarity search — embedding-based nearest-neighbour and structural similarity over entities (guide).
  • Natural-language & GenAI retrieval — schema introspection and grounded NL→SPARQL for LLM agents (guide).
  • HDT archives — load compressed HDT datasets (crate).
  • RDF stream processing — continuous windowed queries with RSP-QL (guide).
  • Solid access control — enforce Solid WAC and ACP authorisation (crate).
  • RDF Dataset Canonicalization — deterministic, blank-node-relabelled canonical form for hashing/signing/diffing with RDFC-1.0 (guide).

A note on SPARQL Update 1.1 vs 1.2

SPARQL 1.1 Update is fully supported: INSERT DATA, DELETE DATA, DELETE/INSERT … WHERE (with USING / WITH), LOAD, CLEAR, CREATE, DROP, COPY, MOVE, and ADD, with request-level atomicity for ;-separated bodies.

SPARQL 1.2 Update adds no new operations over 1.1; its substantive change is the RDF 1.2 triple-term semantics inside INSERT DATA / DELETE DATA and DELETE/INSERT … WHERE — inserting or deleting a reifying triple (rdf:reifies <<( s p o )>>) operates on that triple term itself and does not automatically assert or retract the asserted triple it refers to. sparq handles this: triple terms are stored and matched as structural object terms, so a reifying triple is added or removed as an exact term with no coupling to its asserted counterpart. This behaviour is exercised by the engine's write tests (crates/sparq-engine/tests/rdfstar_write.rs); it has not been checked against a formal SPARQL 1.2 conformance suite.

Research scaffolds (no security guarantee yet)

Two capabilities are research scaffolds. They are honest models of the protocols, but they do not yet provide the cryptographic guarantee a relying party would need. Treat any engineering numbers as indicative, not as an audited cryptographic guarantee. The two maturity caveats below are single-sourced verbatim (build-time {{#include}}) from their canonical guides, so they cannot drift from the source of truth — see the zk-query-proofs guide, the mpc guide, and SECURITY.md for the full scope.

Zero-knowledge query proofs —

Research-stage / experimental — NOT-yet-sound. The composition verifier's soundness is the subject of an open audit (sq-qhy4 / sq-9hrn; remediation epic sq-1s2): a passing proof is NOT a guarantee the SPARQL statement holds under an adversarial prover. Read the "Honest scope" section before relying on a guarantee — only Simple entailment is proved; circuit members are fixed buckets. The query fragment covers BGP scans, integer FILTER (and the integer-valued xsd:double fragment), and a single-prover hidden cross-credential JOIN — the JOIN restricted to credentials sharing ONE issuer-signed revocation slot (sq-cuvmj; see "Honest scope").

Federated MPC —

Maturity (read first). EARLY / RESEARCH, native-only (deliberately not in the wasm build). The Shamir layer's reconstruction is RS-consistency-checked: it detects (and, with enough redundancy, robustly corrects) actively-tampered shares and reports the exact guarantee via BackendInfo.malicious_security — but the degree-2t equality open in the hidden-value join is not hardened at n = 2t+1 (see Gotchas). The primitives run as an in-process simulation (one process plays all parties) for correctness/cost counting, AND over a REAL multi-process loopback transport (transport module — each party its own process over 127.0.0.1; all four QueryClass cells incl. the multi-round oblivious shuffle/sort run on the wire) for MEASURED wall-clock + bytes-on-wire. The collaborative ZK proof of correctness + issuer-attestation is not implemented: those methods return MpcError::NotYetImplemented naming their gate. No fake crypto anywhere. See Gotchas for the full envelope.

Interfaces