# Oxiland 0.2 compatibility report
Status: complete
Milestone: 0.2 — Redland-shaped RDF input and output
Oxiland version: 0.2.0
Oxigraph version: 0.5.9
Inventory:
[`compatibility/inventory/redland-1.0.17-oxiland-0.2.json`](../../compatibility/inventory/redland-1.0.17-oxiland-0.2.json)
## Claim
Oxiland 0.2 provides safe, stream-oriented `Parser` and `Serializer` facades
with closed `Syntax` discovery for Turtle, N-Triples, N-Quads, TriG, and
RDF/XML. Compatibility is scoped to the curated I/O inventory slice and the
evidence linked below. It does **not** claim full Redland API accounting, C
source/ABI compatibility, or byte-identical serialization.
## Decisions
- ADR-007 — progressive `load_into` with explicit collecting path
- ADR-008 — closed `Syntax` and curated alias table
- Graph targets, parse/serialize/Io error categories, and serializer prefix
builder lifecycle documented in
[`docs/design/0.2-io-api.md`](../design/0.2-io-api.md)
## Evidence
| Integration tests | `tests/io.rs` |
| Curated syntax conformance | `tests/conformance.rs`, `compatibility/conformance/` |
| Format matrix | `compatibility/baseline/format-matrix.json` |
| Native oracle smoke | `compatibility/harness/oracle_smoke.py` |
| Differential smoke | `compatibility/harness/differential_smoke.py` |
| Public API snapshot | `api/oxiland-public-api.txt` |
| Inventory validation | `scripts/check-inventory.py` |
## Acceptance matrix summary
Advertised syntaxes pass empty/one-triple round-trips, malformed-input
categorization, language/datatype preservation, Unicode literals, base/relative
IRI resolution (Turtle), named-graph preservation (N-Quads/TriG), early-stop
streaming, and large-input iteration without a facade-level full collect.
N3 and JSON-LD are unsupported/deferred with explicit errors.
## Known deviations
- Redland content sniffing (`guess`) is unsupported.
- Ambiguous aliases such as `text/plain`, `application/xml`, `.txt`, and `.xml`
are rejected; callers must use unambiguous media types/extensions or an
explicit `Syntax` (ADR-008).
- N3 and JSON-LD are not advertised.
- RDF/XML parse diagnostics may omit line/column when Oxigraph does not provide
a location.
- Progressive model load is intentionally non-atomic until 0.4 transactions;
Fjall persists each successful progressive insert.
- Serialization is standards-valid, not byte-identical to Raptor.
## Non-claims
SPARQL result formats, SPARQL Update, transactional import, network fetch,
custom factory registration, and C ABI remain out of scope for 0.2.