Durable transaction backend for SPARQL updates
Status: moved — the durable node:sqlite store that this page documented
left this repository on 2026-08-17. SqliteStore now ships from
@worlds/sqlite, packaged with
the worlds impl (the same way LibsqlRdfjsStore ships in @worlds/libsql).
The full design doc — schema, transaction semantics, crash-recovery matrix,
verified behavior, and cost story — now lives at
@worlds/sqlite docs/durable-transactions.md.
What remains engine-side is the contract, unchanged:
// @wazoo/sparql-engine — WazooSparqlEngineOptions.createTransaction
interface WazooSparqlTransaction {
add(quad: rdfjs.Quad): unknown; // buffer an insert
delete(quad: rdfjs.Quad): unknown; // buffer a delete
commit(): Promise<void>; // persist the patch atomically
rollback(): void; // discard the patch
}
Wire the store through it:
import { SqliteStore } from "@worlds/sqlite";
const store = new SqliteStore({ path: "data.sqlite" });
const engine = new WazooSparqlEngine({
store,
createTransaction: () => store.createTransaction(),
});
The engine’s export graph remains free of node:/npm: runtime imports — only
opting into @worlds/sqlite loads node:sqlite.