Skip to content

rete v0.1.0

Choose a tag to compare

@caviri caviri released this 20 Jun 11:18

rete v0.1.0 — first tagged minor release.

Put an RDF graph in one immutable .rete file, drop it on any HTTP host that honors range requests, and run real SPARQL against it in place — including in the browser via WebAssembly, fetching only the bytes a query needs. Think Parquet (tables) or PMTiles (maps), but for RDF graphs + SPARQL.

Try it in your browser · Docs · Benchmarks

Highlights

Format & storage

  • Single-file, immutable .rete image — dictionary, SPO/POS/OSP permutation indexes, and a pyramidal community summary — queryable in place over HTTP Range requests, no server.
  • Tiled permutation sections with per-tile zone maps plus tile synopses: per-tile min/max of the non-leading columns in a backward-compatible trailer, so a range reader prunes a routed tile by a bound secondary component before fetching it (a negative/sparse lookup costs zero tile reads).
  • Append-only pyramid-meta blocks: schema pyramid (semantic zoom), planner query_stats, characteristic sets / entity shapes, and a bounded label index.

Query

  • SPARQL SELECT / ASK / CONSTRUCT / DESCRIBE with joins, OPTIONAL, UNION, MINUS, FILTER, BIND, property paths, aggregation, GeoSPARQL — ~75% of the W3C query-evaluation suite.
  • Cost-based BGP join ordering from the summary + measured per-predicate selectivity; hash + index-nested-loop joins.
  • rete search — case-insensitive label prefix search from a bounded label index (~22× a FILTER(STRSTARTS(LCASE(…))) scan).

Reasoning, validation, federation

  • Prototype OWL RL / RDFS reasoner (coherence + optional materialization), SHACL Core validation, and UNION federation across several .rete files.

Performance

  • Build peak RAM cut ~39% on a 3 M-triple build (stream-parse + drop the raw string statements before the pyramid).
  • Louvain community-pyramid build ~2.7× faster (dense-scratch local moving, byte-identical output).
  • WASM query-result serialization ~13× less peak heap and ~10× faster (direct-to-string envelope instead of a serde_json::Value tree).

Tooling — the rete CLI, the WASM browser client + static playground, and the rete-bench build/query memory profilers.

Format compatibility

On-disk format version v0.2 (readers still accept v0.1), tracked separately from this crate version, in the file header. Experimental: the format is not yet guaranteed stable across releases — rebuild to upgrade.

Full notes in CHANGELOG.md.

What's Changed

  • feat: add shacl and progressive summary tooling by @caviri in #2
  • chore: add .editorconfig to enforce LF and UTF-8 across editors by @caviri in #3
  • feat: add result provenance by @caviri in #4
  • docs: refresh oxigraph benchmark by @caviri in #5
  • perf: switch SPARQL engine to integer slot rows by @caviri in #6
  • perf: adaptive index-nested-loop joins via lazy block group directory by @caviri in #7
  • feat: community-split SPARQL - compute per pyramid community, aggrega… by @caviri in #8
  • Explorer HF-Space source + sharding/federation + SPARQL conformance by @caviri in #10
  • Graph-map / topic-map / 3D experiments + browser graphRAG + Wikidata-1GB by @caviri in #9
  • Fix CI rustfmt + de-duplicate graph-map nav group by @caviri in #11
  • feat(bench): dataset sha256 + git-commit provenance in the report (re… by @caviri in #12
  • playground: bigger causal graph + SPARQL & SHACL examples by @caviri in #13
  • core: count named-graph quads in the header quad_count by @caviri in #15
  • Playground overhaul: console UX, dataset browser, Map/Time views, WASM test matrix by @caviri in #14
  • playground: Map and Time available on every query by @caviri in #16
  • playground: lazy Coherence over HTTP range (card-powered inspection, step 1) by @caviri in #18
  • playground: cache 'preparing' phase + selective ohm Map/Time examples by @caviri in #17
  • playground: switch Output type re-renders the last result (no re-run) by @caviri in #19
  • playground: keep the row cache across TTL/JSON-LD switches by @caviri in #20
  • playground: group the mode rail into Ask / Inspect, pin History to the bottom by @caviri in #21
  • playground: Explore works on remote-lazy datasets (real entities over range) by @caviri in #22
  • playground: type FactGrid by P2 so its Explore lists classes by @caviri in #23
  • playground: paginated, lazy Explore entity tables (HF dataset-viewer style) by @caviri in #24
  • playground: read the packed schema on cache instead of rescanning by @caviri in #25
  • wasm/playground: a resident Graph handle for in-memory queries by @caviri in #26
  • playground: fix remote schema over worker + rail/header polish by @caviri in #27
  • playground: progress for remote schema reads + rail no longer clips History by @caviri in #28
  • cli: rete repyramid — rebuild a file's pyramid in place by @caviri in #29
  • cli: rete repyramid --card — embed a Dataset Card while rebuilding by @caviri in #30
  • playground: adapt the layout for phones by @caviri in #31
  • playground: add the Chemotion chemistry-ELN dataset (remote, lazy) by @caviri in #32
  • playground: federation across sources + the full ChEBI ontology (remote, lazy) by @caviri in #33
  • perf: parallelize and speed up the .rete build by @caviri in #34
  • playground: surface the federation example on chemotion too by @caviri in #35
  • perf(wasm): cache remote byte ranges across queries (resident RemoteGraph) by @caviri in #36
  • docs: federation (CLI + playground), full optimized .rete builds, remote caching by @caviri in #37
  • perf(query): cardinality-aware BGP join ordering (cost-based) by @caviri in #38
  • perf(wasm): key the remote session/block cache by content hash by @caviri in #39
  • docs(architecture): join order is now cost-based by @caviri in #40
  • feat(format): query_stats block — per-predicate planner cardinality by @caviri in #41
  • perf(query): measured distinct-S/O selectivity in the planner (1b) by @caviri in #42
  • docs(architecture): planner uses measured query_stats selectivity (1b) by @caviri in #43
  • perf(query): hash join builds the smaller side by @caviri in #44
  • docs(architecture): hash join builds the smaller side by @caviri in #45
  • feat(format): characteristic sets — entity shapes in the pyramid by @caviri in #46
  • docs: rete stats planner stats + entity shapes by @caviri in #47
  • feat: label prefix-search index (autocomplete without a literal scan) by @caviri in #48
  • perf(build): cut peak RAM on big builds (~1371→836 MiB, 39%) by @caviri in #49
  • perf(build): 2.7× faster Louvain pyramid (dense scratch, byte-identical) by @caviri in #50
  • feat(index): tile synopses — prune a routed tile by a bound secondary before fetching by @caviri in #51
  • perf(wasm): serialize query results direct-to-string (~13× less heap, ~10× faster) by @caviri in #52
  • chore(release): v0.1.0 — version bump, CHANGELOG, README/docs by @caviri in #53

Full Changelog: 0.0.1...v0.1.0