rocket_launchForward edge — what's next
v0.5.0 is final. The entire SPARQL surface — read, write, CONSTRUCT, DESCRIBE, property paths, named graphs — is shipped and on a tagged, Latest release. This page records what landed and the post-v0.5 backlog. Tracked in
SPEC.pgRDF.LLD.v0.4andSPEC.pgRDF.LLD.v0.5-FUTURE.
check_circleShipped (tagged releases)
- check_circlePhase B — v0.4.2 — Graph lifecycle UDFs:
drop_graph,clear_graph,copy_graph,move_graph. - check_circlePhase C — v0.4.3 — Full SPARQL UPDATE surface: INSERT/DELETE DATA, pattern-driven INSERT/DELETE WHERE, atomic DELETE+INSERT/WHERE, WITH + inline GRAPH scoping, DROP/CLEAR/CREATE lifecycle algebra.
- check_circlePhase D — v0.4.4 — CONSTRUCT: constant-only + variable + blank-node + multi-triple templates, GRAPH-scoped WHERE, WHERE-shorthand, round-trip ingest,
sparql_parseshape analysis. - check_circlePhase E — v0.4.5 — Property paths:
^+*?|with cycle-safe recursive CTEs, thepgrdf.path_max_depthguard, W3C §9.3 zero-length semantics, and the materialised-closure no-CTE fast path. - check_circlev0.5.0 (final) — the residual surface that closed the cut:
DESCRIBE(W3C §16.4 CBD viapgrdf.describe),VALUESinline bindings, downstreamBIND(after the BGP block), aggregates overUNION, type-awareORDER BY, multi-tripleOPTIONAL,TriG+N-Quadsingest (pgrdf.parse_trig/pgrdf.parse_nquads), BIGINT and IRI overloads on every lifecycle UDF (drop_graph/clear_graph/copy_graph/move_graph), thepgrdf.materialize(g, profile)selector ('owl-rl'+'rdfs'), and genuine W3C SHACL Core 25/25 plus the wired W3C SHACL manifest runner.
That closes the LLD v0.4 §4 / §5 / §6 / §7 columns and the v0.5.0 residual list. The SPARQL read and write surface, named graphs, lifecycle, CONSTRUCT, DESCRIBE, VALUES, and property paths are all on the tagged, Latest v0.5.0 release.
rocket_launchStill ahead — the v0.6-FUTURE backlog
v0.5.0 is feature-complete for its scope. The post-v0.5 backlog in the v0.5-FUTURE spec is performance and depth work, not missing pillar surface:
- rocket_launch
executor.rscore-BGP carve — restructure the BGP translator core for clarity and reuse. - rocket_launch
heap_multi_insertphase B — the direct-heap ingest fast path beyond the current prepared-statement pipeline. - rocket_launchA native SHACL-SPARQL engine — see the upstream gate below.
- rocket_launchFederated
SERVICE— query across remote SPARQL endpoints. - rocket_launchIncremental materialisation — re-materialise only the affected closure on graph delta.
- rocket_launchRDF 1.2 triple terms — see the upstream gate below.
scheduleDocumented upstream gates (not pgRDF defects)
Two items are blocked on a third-party crate shipping the required surface. They are honest, documented dependencies — the pgRDF side is built; the upstream side is the gate:
| Erratum | What | Upstream gate |
|---|---|---|
| E-011 | RDF 1.2 triple terms and the crates.io publish | Both wait on gtfierro/reasonable#50. The crates.io publish is deliberately held until that lands — the tarball / OCI bundle are the consumption path meanwhile. |
| E-012 | SHACL-SPARQL constraint execution (sh:sparql / sh:select / sh:ask) | Waits on rudof (#21 / #94). The pgrdf.validate(…, mode => 'sparql') surface is shipped and honest — it reports what it can and is clear about what the upstream engine doesn't yet execute. See SHACL-SPARQL. |
Spec-permitted gaps (by design, not "coming soon")
These are explicitly out of scope per the LLD — pgRDF rejects them with a stable prefix rather than silently mis-answering:
- Negated property sets
?s !(p) ?o— panics with a stable prefix. - Explicit sequence path-expressions
?s p1/p2 ?o— use the equivalent multi-pattern BGP{ ?s p1 ?m . ?m p2 ?o }; the explicitSequencepath-expr is rejected with a pointer to the BGP form. - The gated path remainder — an alternation arm that is itself a sequence/recursive path (
(a/b|c),(a+|b)), or a recursive operator whose inner box is a sequence ((p1/p2)+). Folding these would compose a recursive CTE inside an alternation arm; LLD §7.1 explicitly permits gating them. They preview-panic with a stable nested-recursive prefix.sparql_parsedoes not panic — it flags only the gated remainder inunsupported_algebra.