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 /
SERVICEHTTP 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.