Skip to content

Milestone 0.3 — Query and results

Status: complete
Outcome: complete Redland-style SPARQL workflows without forcing result materialization
Depends on: 0.2 dataset loading and result serialization primitives
Blocks: 0.4 storage/transactions that assume update + result tooling
Release evidence: docs/reports/0.3.md

This is the executable specification for 0.3. The roadmap defines the release outcome; this document defines the work packages and acceptance criteria. Design detail: 0.3-query-api.md. Decisions: ADR-009–ADR-012.

User-visible result

At the end of 0.3, a Rust caller can:

  • configure parsed queries with base IRI, prefixes, limit, offset, dataset, and cancellation;
  • consume boolean, bindings, and graph result forms via streaming iterators;
  • look up solution variables by name and position (None = unbound);
  • run SPARQL Update against a model (Fjall stores resync after update);
  • serialize ASK/SELECT results as XML, JSON, CSV, or TSV;
  • serialize CONSTRUCT/DESCRIBE graphs with the 0.2 RDF Serializer;
  • observe a documented cancellation policy (token supported; wall-clock timeout is caller-driven).

oxiland::sparql remains an Oxigraph escape hatch, not the verified surface.

Non-goals

  • C ABI query handles (0.8+)
  • SPARQL protocol HTTP endpoint / SERVICE HTTP federation
  • Guaranteeing order without ORDER BY
  • Storage transactions (0.4)
  • Python package (0.7)

Work package sequence

ID Package Depends on
WP-03-01 Design, inventory, ADRs
WP-03-02 Query configuration facade WP-03-01
WP-03-03 Streaming result adapters WP-03-02
WP-03-04 ASK/SELECT/CONSTRUCT/DESCRIBE evidence WP-03-03
WP-03-05 SPARQL Update WP-03-02
WP-03-06 Result serialization WP-03-03
WP-03-07 Cancellation, fixtures, CI WP-03-05, WP-03-06
WP-03-08 Reports, parity, 0.3.0 release all

Evidence gates

  • Each query result kind has positive, empty, and failure-path tests.
  • Update and dataset behavior have fixtures (oracle where available).
  • Iterator early-stop tests do not require full materialization.
  • Ordering is asserted only with ORDER BY.
  • Parse versus evaluation error categories are preserved.
  • Inventory 0.3 rows are verified with test links.