PDTF schema RML schema–ontology verification
Ontology and Schema are two independent accounts derived from the same PDTF schema data — one in OWL/RDF, one in JSON Schema. This section documents the legacy RML schema–ontology verification mapping: a machine-checked bridge between them, tracing every ontology term back to the exact schema location it was minted from, and every schema location forward to the ontology term (if any) that represents it.
This is not the SPDTF cross-context semantic mapping, the Property Pack item-to-construct coverage link, a JSON-LD context, or a runtime transformation. Those distinct meanings are qualified in the SPDTF mapping guide.
Why a second provenance mechanism
Every opda: term already carries a dct:source citation to its
authoritative origin (see Decision provenance). But
dct:source is single-valued — it can answer which one source defines
this term's meaning, but not everywhere this term's data actually occurs,
and nothing about that convention alone independently checks that a citation resolves to
something real.
ODR-0035 adopted
RML (RDF Mapping Language) to
close that gap: a second, independent, bidirectional trace, checked two ways — every
schema location the mapping cites resolves in the real PDTF v3 schema, and every ontology
term it addresses is a real, declared opda: term. The two mechanisms are
expected to usually agree (68 of 73 directly comparable predicates did, when
checked) but are verified independently and are not required to. The audit that motivated
this caught real, pre-existing defects — 8 stale-path and 16 unresolved
dct:source citations — that the ontology generator's own emission process had
never verified.
The mapping consumes a PDTF v3 transaction instance and emits RDF purely to verify the schema↔ontology correspondence — it is not, and must not become, an executable pipeline against real transaction data (ODR-0035 §Rules). No instance data is required for, or produced by, the primary validation gate.
The mapping, by the numbers
| Metric | Count | Source |
|---|---|---|
rr:TriplesMap rules | 158 | triplesmap-index.json — live |
| Real predicateObjectMaps (owned by a TriplesMap) | 438 | triplesmap-index.json — live |
| Domain-module resources mapped | 466 / 469 (99.4%) | build/final-gap.json, as of 2026-07-05 — see Coverage & gaps |
The first two rows are counted live from the committed
triplesmap-index.json at build time — that
file is generated from the mapping via Jena arq
(make triplesmap-index), which is also how it distinguishes real
predicateObjectMaps from the FNML-nested ones (the
mapping file has 526 total predicateObjectMap
triples; 88 of those bind FNML function calls, not a
schema↔ontology correspondence). The coverage row is not live — it's the
output of a separate harness whose build artefacts are gitignored, cited here with its
regeneration command on Running & validating. And 469 is
the curated domain-module resource count, not the raw 8,458-leaf schema dictionary — see
why that's the right denominator.
JSON-LD mappings is a separate, still-unbuilt
workstream: per-overlay @context files for production JSON-LD
round-tripping (BASPI v5 first). It solves a different problem for a different
audience — this section is the internal, already-largely-complete verification trace;
that one is external data-interop tooling yet to be built.
Explore this section
How it works
RMLMapper + Jena validation, the two checking gates, and the enum→SKOS-concept-IRI technique.
TriplesMaps reference
Every rule, documented — plus two bidirectional indices: browse by ontology resource, or by JSON Schema path.
Coverage & gaps
What's mapped, what's genuinely out of scope, and the honest-non-mapping discipline.
Running & validating
The make targets, the file layout, and links into the real harness files.
Comments
Loading comments…
Sign in to post a comment