Ontology Management Base
Ontologies for discovering and describing simulation assets in the ENVITED-X data space, maintained by the Automotive Solution Center for Simulation e.V. (ASCS). Compliant with Gaia-X 2.5.0.
Note: This repository is the active development home, forked from GAIA-X4PLC-AAD/ontology-management-base (archived after
v0.1.0).
What This Does
These ontologies define searchable metadata for simulation assets (HD maps, scenarios, sensor traces, environment models). They enable:
- Natural language search — "find all German motorway maps with 3+ lanes" → ontology-based-nl-search
- Structured annotation — describe your assets so others can find them → sl-5-8-asset-tools
- Cross-domain discovery — find scenarios that reference a specific HD map
- Quality validation — ensure metadata annotations are complete and correct (SHACL)
The ontology is not a copy of the ASAM OpenDRIVE/OpenSCENARIO data model. It's a metadata layer that summarizes what's inside data files — a 100MB OpenDRIVE file is described by ~2KB of searchable hdmap:HdMap metadata.
Who Uses This
| Role | Activity | Tool |
|---|---|---|
| Data Searcher | Find assets by properties (NL or structured) | NL Search App |
| Data Creator | Annotate assets with metadata for discovery | Asset Tools |
| Ontology Developer | Extend the metadata schema for new domains | This repository |
How It Works
flowchart TD
A[/"Simulation Asset<br/>(OpenDRIVE, OSI, OpenSCENARIO...)"/] -->|annotate| B["JSON-LD Metadata<br/>(@type: hdmap:HdMap)"]
B -->|validate · SHACL| C[("Knowledge Graph<br/>(SPARQL endpoint)")]
C -->|search · NL → SPARQL| D["'Show me highway maps near Munich'"]
Getting Started
New to this project? Start with the install, test, build guide.
Looking for ontologies? Browse the ontology catalog.
Need technical details? See concepts and validation strategy.
Quick Links
- Full Documentation — Complete guides and references
- Validation — Run checks on your data
- Contributing — How to add or modify ontologies
- ASAM OpenX Standards — Source standard references (submodule)
- Gaia-X 4 PLC-AAD — Federated catalog upload flow
What's in This Repository
- Ontologies — OWL definitions with SHACL validation shapes (
artifacts/) - Validation Tools — Python suite to validate metadata instances (
omb/) - Test Data — Valid and invalid examples per domain (
tests/data/) - Documentation — Guides, architecture, and specifications (
docs/) - Standard References — ASAM OpenX specs as submodule (
submodules/asam-openx-standards/)
Use It in Your Own Repository
If you model your data (in LinkML or otherwise), generate OWL/SHACL/JSON-LD artifacts, and want your test suite to prove that your shapes accept what they should and reject what they should not, install the package — no clone required:
pip install ontology-management-base # or: uv add ontology-management-base
# data that must conform, validated against your generated artifacts
onto-validate --run check-data-conformance --data-paths tests/data/valid --artifacts artifacts
# data that must fail, checked against its recorded .expected snapshot
onto-validate --run check-failing-tests --data-paths tests/data/invalid --artifacts artifacts
from omb.api import check_negative_fixtures, validate_data
result = validate_data(["tests/data/valid"], artifacts=["artifacts"])
assert result.conforms, result.report_text
report = check_negative_fixtures(["tests/data/invalid"], artifacts=["artifacts"])
assert report.ok, "\n".join(f.message for f in report.failures)
The wheel bundles OMB's own ontologies, imports and registry, so validation works
offline and without a checkout. Runtime dependencies are rdflib, pyshacl and
oxrdflib. Full guide: Python API.
Requirements
Using the package: Python ≥ 3.12 and nothing else.
Developing the ontologies in this repository:
- Python ≥ 3.12 (required — older versions will fail with syntax errors)
- Git
- uv (installation guide)
- just (installation packages)
Installation (for development)
git clone https://github.com/ASCS-eV/ontology-management-base.git
cd ontology-management-base
# One-command setup (creates .venv, installs dev dependencies, and pre-commit hooks)
just setup
No activation is required for just recipes; they run through uv run. Activate the environment only for direct Python or pip commands:
# Linux / macOS / Git Bash
source .venv/bin/activate
# Windows PowerShell
.venv\Scripts\Activate.ps1
# Windows CMD
.venv\Scripts\activate.bat
Without Installing the Toolchain
A development container carries uv, just, Python 3.12 and the dev dependencies, so no
Python, uv or just is needed on the host:
docker compose build
docker compose run --rm ontology-tools just --list
See Run the Toolchain in a Container.
Validation
# Validate test data
just test
# See validation options
just validate --help
# Validate specific domain
just test-domain hdmap
# Validate a single data file
just validate-file path/to/instance.json
# See all just recipes
just --list
Local Docs Build
# Preview locally
DOCS_SITE_URL=http://127.0.0.1:8000/ontology-management-base just docs-serve
# Build static docs site
just docs-build
Notes:
Hook flow (via hooks/copy_artifacts.py):
- The hook runs
properties_updaterandclass_page_generator(DOCS_SITE_URL is optional and only affects local diagram links). properties_updaterwrites trackedartifacts/<domain>/PROPERTIES.md, generatesdocs/ontologies/properties/<domain>.md(ignored by git), builds thedocs/ontologies/properties.mddomains overview, and refreshesdocs/ontologies/catalog.md.class_page_generatorwritesdocs/ontologies/classes/<domain>/*.mdand usesDOCS_SITE_URLto build local diagram links.- The hook copies
artifacts/<domain>/intodocs/artifacts/<domain>/<versionInfo>/and adds example instances fromtests/data/.
Maintained Ontologies
| Ontology / Resource IRI | Local Artifact File |
|---|---|
https://openlabel.asam.net/V1-0-0/ontologies/ |
openlabel/openlabel.owl.ttl |
https://openlabel.asam.net/V1-0-0/ontologies/context |
openlabel/openlabel.context.jsonld |
https://openlabel.asam.net/V1-0-0/ontologies/shapes |
openlabel/openlabel.shacl.ttl |
https://w3id.org/ascs-ev/envited-x/environment-model/v5 |
environment-model/environment-model.owl.ttl |
https://w3id.org/ascs-ev/envited-x/environment-model/v5/context |
environment-model/environment-model.context.jsonld |
https://w3id.org/ascs-ev/envited-x/environment-model/v5/shapes |
environment-model/environment-model.shacl.ttl |
https://w3id.org/ascs-ev/envited-x/envited-x/v3 |
envited-x/envited-x.owl.ttl |
https://w3id.org/ascs-ev/envited-x/envited-x/v3/context |
envited-x/envited-x.context.jsonld |
https://w3id.org/ascs-ev/envited-x/envited-x/v3/shapes |
envited-x/envited-x.shacl.ttl |
https://w3id.org/ascs-ev/envited-x/georeference/v5 |
georeference/georeference.owl.ttl |
https://w3id.org/ascs-ev/envited-x/georeference/v5/context |
georeference/georeference.context.jsonld |
https://w3id.org/ascs-ev/envited-x/georeference/v5/shapes |
georeference/georeference.shacl.ttl |
https://w3id.org/ascs-ev/envited-x/hdmap/v6 |
hdmap/hdmap.owl.ttl |
https://w3id.org/ascs-ev/envited-x/hdmap/v6/context |
hdmap/hdmap.context.jsonld |
https://w3id.org/ascs-ev/envited-x/hdmap/v6/shapes |
hdmap/hdmap.shacl.ttl |
https://w3id.org/ascs-ev/envited-x/manifest/v5 |
manifest/manifest.owl.ttl |
https://w3id.org/ascs-ev/envited-x/manifest/v5/context |
manifest/manifest.context.jsonld |
https://w3id.org/ascs-ev/envited-x/manifest/v5/shapes |
manifest/manifest.shacl.ttl |
https://w3id.org/ascs-ev/envited-x/openlabel/v2 |
openlabel-v2/openlabel-v2.owl.ttl |
https://w3id.org/ascs-ev/envited-x/openlabel/v2/context |
openlabel-v2/openlabel-v2.context.jsonld |
https://w3id.org/ascs-ev/envited-x/openlabel/v2/shapes |
openlabel-v2/openlabel-v2.shacl.ttl |
https://w3id.org/ascs-ev/envited-x/ositrace/v6 |
ositrace/ositrace.owl.ttl |
https://w3id.org/ascs-ev/envited-x/ositrace/v6/context |
ositrace/ositrace.context.jsonld |
https://w3id.org/ascs-ev/envited-x/ositrace/v6/shapes |
ositrace/ositrace.shacl.ttl |
https://w3id.org/ascs-ev/envited-x/scenario/v6 |
scenario/scenario.owl.ttl |
https://w3id.org/ascs-ev/envited-x/scenario/v6/context |
scenario/scenario.context.jsonld |
https://w3id.org/ascs-ev/envited-x/scenario/v6/shapes |
scenario/scenario.shacl.ttl |
https://w3id.org/ascs-ev/envited-x/surface-model/v6 |
surface-model/surface-model.owl.ttl |
https://w3id.org/ascs-ev/envited-x/surface-model/v6/context |
surface-model/surface-model.context.jsonld |
https://w3id.org/ascs-ev/envited-x/surface-model/v6/shapes |
surface-model/surface-model.shacl.ttl |
https://w3id.org/ascs-ev/envited-x/tzip21/v1 |
tzip21/tzip21.owl.ttl |
https://w3id.org/ascs-ev/envited-x/tzip21/v1/context |
tzip21/tzip21.context.jsonld |
https://w3id.org/ascs-ev/envited-x/tzip21/v1/shapes |
tzip21/tzip21.shacl.ttl |
https://w3id.org/gaia-x/development# |
gx/gx.owl.ttl |
https://w3id.org/gaia-x/development#context |
gx/gx.context.jsonld |
https://w3id.org/gaia-x/development#shapes |
gx/gx.shacl.ttl |
https://w3id.org/gaia-x4plcaad/ontologies/automotive-simulator/v2 |
automotive-simulator/automotive-simulator.owl.ttl |
https://w3id.org/gaia-x4plcaad/ontologies/automotive-simulator/v2/context |
automotive-simulator/automotive-simulator.context.jsonld |
https://w3id.org/gaia-x4plcaad/ontologies/automotive-simulator/v2/shapes |
automotive-simulator/automotive-simulator.shacl.ttl |
https://w3id.org/gaia-x4plcaad/ontologies/description/v1 |
description/description.owl.ttl |
https://w3id.org/gaia-x4plcaad/ontologies/description/v1/context |
description/description.context.jsonld |
https://w3id.org/gaia-x4plcaad/ontologies/description/v1/shapes |
description/description.shacl.ttl |
https://w3id.org/gaia-x4plcaad/ontologies/example/v1 |
example/example.owl.ttl |
https://w3id.org/gaia-x4plcaad/ontologies/example/v1/context |
example/example.context.jsonld |
https://w3id.org/gaia-x4plcaad/ontologies/example/v1/shapes |
example/example.shacl.ttl |
https://w3id.org/gaia-x4plcaad/ontologies/general/v3 |
general/general.owl.ttl |
https://w3id.org/gaia-x4plcaad/ontologies/general/v3/context |
general/general.context.jsonld |
https://w3id.org/gaia-x4plcaad/ontologies/general/v3/shapes |
general/general.shacl.ttl |
https://w3id.org/gaia-x4plcaad/ontologies/leakage-test/v3 |
leakage-test/leakage-test.owl.ttl |
https://w3id.org/gaia-x4plcaad/ontologies/leakage-test/v3/context |
leakage-test/leakage-test.context.jsonld |
https://w3id.org/gaia-x4plcaad/ontologies/leakage-test/v3/shapes |
leakage-test/leakage-test.shacl.ttl |
https://w3id.org/gaia-x4plcaad/ontologies/service/v2 |
service/service.owl.ttl |
https://w3id.org/gaia-x4plcaad/ontologies/service/v2/context |
service/service.context.jsonld |
https://w3id.org/gaia-x4plcaad/ontologies/service/v2/shapes |
service/service.shacl.ttl |
https://w3id.org/gaia-x4plcaad/ontologies/simulated-sensor/v2 |
simulated-sensor/simulated-sensor.owl.ttl |
https://w3id.org/gaia-x4plcaad/ontologies/simulated-sensor/v2/context |
simulated-sensor/simulated-sensor.context.jsonld |
https://w3id.org/gaia-x4plcaad/ontologies/simulated-sensor/v2/shapes |
simulated-sensor/simulated-sensor.shacl.ttl |
https://w3id.org/gaia-x4plcaad/ontologies/simulation-model/v3 |
simulation-model/simulation-model.owl.ttl |
https://w3id.org/gaia-x4plcaad/ontologies/simulation-model/v3/context |
simulation-model/simulation-model.context.jsonld |
https://w3id.org/gaia-x4plcaad/ontologies/simulation-model/v3/shapes |
simulation-model/simulation-model.shacl.ttl |
https://w3id.org/gaia-x4plcaad/ontologies/survey/v6 |
survey/survey.owl.ttl |
https://w3id.org/gaia-x4plcaad/ontologies/survey/v6/context |
survey/survey.context.jsonld |
https://w3id.org/gaia-x4plcaad/ontologies/survey/v6/shapes/result-data-offering |
survey/survey-result-data-offering.shacl.ttl |
https://w3id.org/gaia-x4plcaad/ontologies/survey/v6/shapes/service-offering |
survey/survey-service-offering.shacl.ttl |
https://w3id.org/gaia-x4plcaad/ontologies/vv-report/v2 |
vv-report/vv-report.owl.ttl |
https://w3id.org/gaia-x4plcaad/ontologies/vv-report/v2/context |
vv-report/vv-report.context.jsonld |
https://w3id.org/gaia-x4plcaad/ontologies/vv-report/v2/shapes |
vv-report/vv-report.shacl.ttl |
Acknowledgements
Funded by the European Union. Views and opinions expressed are however those of the author(s) only and do not necessarily reflect those of the European Union or European Climate, Infrastructure and Environment Executive Agency (CINEA). Neither the European Union nor the granting authority can be held responsible for them.
Consumer contract
See the supported interfaces and feature tests for PyPI and Docker usage.
License
See LICENSE for details.
Metadata
Release files for ontology-management-base 0.5.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ontology_management_base-0.5.1.tar.gz | 1.8 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ontology_management_base-0.5.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 3.7 MB
Release files / ontology_management_base-0.5.1.tar.gz
| Download URL | ontology_management_base-0.5.1.tar.gz |
|---|---|
| Size | 1.8 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
13a2d56188a987db6f0c1bf104be16b22be4137030d66314cc0864b4bf1e28ee
|
|
BLAKE2b-256 checksum How to use checksums |
132e17b103e1b00a891e499023b93e3a5796c77077e833f005d1c53dc7e376da
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.
Transparency logRelease files / ontology_management_base-0.5.1-py3-none-any.whl
| Download URL | ontology_management_base-0.5.1-py3-none-any.whl |
|---|---|
| Size | 1.9 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9842d39228f2ae75f892589fc5d00556c4db284f82b06e860982b7cdcc292c5e
|
|
BLAKE2b-256 checksum How to use checksums |
5cc906a07bcc8273320ed46821a2b67362109c0724d18ca83a0c5770a2bbd787
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.
Transparency log