Context
The mobilityDCAT-AP ontology is currently maintained in three separate files:
mobilitydcat-ap_v1.1.0.ttl — Turtle (hand-edited)
mobilitydcat-ap_v1.1.0.rdf — RDF/XML (hand-edited)
mobilitydcat-ap_v1.1.0.jsonld — JSON-LD (hand-edited)
All three are edited independently, which leads to inconsistencies — the bugs
found in issue #179 exist because the three files have drifted from each other.
Proposal
Single source of truth: the TTL file.
The RDF/XML and JSON-LD serialisations should be automatically generated from
the TTL file using a script. This means:
- Maintainers only edit
mobilitydcat-ap_v1.1.0.ttl
- A script converts it to
.rdf and .jsonld
- The generated files are committed to the repository
- CI can verify the generated files are up to date with the TTL source
Implementation
A script scripts/serialise_ontology.py using rdflib:
from rdflib import Graph
g = Graph()
g.parse("mobilitydcat-ap_v1.1.0.ttl", format="turtle")
g.serialize("mobilitydcat-ap_v1.1.0.rdf", format="xml")
g.serialize("mobilitydcat-ap_v1.1.0.jsonld", format="json-ld")
Benefits
- Single point of edit — no more three-way inconsistencies
- Bugs fixed in TTL automatically propagate to all formats
- Simpler review — only TTL needs to be reviewed in PRs
- Can be integrated into CI to auto-regenerate on TTL change
Relation to existing scripts
The repository already has scripts/serialise-vocabulary.sh and
scripts/serialise-examples.sh. This would add a dedicated ontology
serialisation script following the same pattern.
Related
- #179 — bugs caused by manual three-file maintenance
- #180 — PR fixing those bugs across all three files manually (last time)
Context
The mobilityDCAT-AP ontology is currently maintained in three separate files:
mobilitydcat-ap_v1.1.0.ttl— Turtle (hand-edited)mobilitydcat-ap_v1.1.0.rdf— RDF/XML (hand-edited)mobilitydcat-ap_v1.1.0.jsonld— JSON-LD (hand-edited)All three are edited independently, which leads to inconsistencies — the bugs
found in issue #179 exist because the three files have drifted from each other.
Proposal
Single source of truth: the TTL file.
The RDF/XML and JSON-LD serialisations should be automatically generated from
the TTL file using a script. This means:
mobilitydcat-ap_v1.1.0.ttl.rdfand.jsonldImplementation
A script
scripts/serialise_ontology.pyusing rdflib:Benefits
Relation to existing scripts
The repository already has
scripts/serialise-vocabulary.shandscripts/serialise-examples.sh. This would add a dedicated ontologyserialisation script following the same pattern.
Related