Skip to content

Commit 53dbfe8

Browse files
authored
docs: add purpose documentation, README rewrite, and agent infrastructure (#79)
* docs: add purpose documentation, README rewrite, and agent infrastructure - Rewrite README intro with purpose-driven framing: discovery, personas, relationship to NL search app, Mermaid architecture diagram - Add docs/concepts/purpose.md: full conceptual framework explaining metadata layer design, the property test, feedback loop, and architecture overview - Update .github/copilot-instructions.md: add ASAM standards reference section with navigation guide, citation patterns, and property test - Update asam-openx-standards submodule to include AGENTS.md, CROSS_REFERENCES.md, and ENUMERATIONS.yaml for efficient agent navigation of source standards The ontologies are searchable metadata descriptors enabling natural language search over simulation assets. This documentation makes that goal explicit. Signed-off-by: Carlo van Driesten <carlo.van-driesten@bmw.de> * Update ASCS link in README.md Signed-off-by: Carlo van Driesten <carlo.van-driesten@bmw.de> --------- Signed-off-by: Carlo van Driesten <carlo.van-driesten@bmw.de>
1 parent 39c420b commit 53dbfe8

4 files changed

Lines changed: 243 additions & 10 deletions

File tree

.github/copilot-instructions.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,52 @@ git add artifacts/ && git commit -s -S -m "feat: ..."
166166
If hooks still fail, `--no-verify` is acceptable but **verify CI passes after push**.
167167
The committed state must be byte-identical to Linux `make generate` + hook normalization.
168168

169+
## ASAM Standards Reference (submodule)
170+
171+
Standards are in `submodules/asam-openx-standards/standards/`. See the submodule's
172+
`AGENTS.md` for full navigation guidance.
173+
174+
### Key Files for Ontology Work
175+
176+
| Task | File to Read |
177+
|------|-------------|
178+
| Validate hdmap enum values | `standards/asam-opendrive/map-uml-enumerations.md` |
179+
| Check road/lane definitions | `standards/asam-opendrive/03-terms-and-definitions.md` |
180+
| Understand ODD taxonomy | `standards/asam-openodd/06-02-*` through `06-08-*` |
181+
| Cross-check openlabel types | `standards/asam-openlabel/INDEX.md` |
182+
| Verify OpenSCENARIO concepts | `standards/asam-openscenario-dsl/` chapters |
183+
| Find machine-readable enums | `ENUMERATIONS.yaml` (root of submodule) |
184+
| Map concepts across standards | `CROSS_REFERENCES.md` (root of submodule) |
185+
186+
### Ontology Purpose
187+
188+
These ontologies are **searchable metadata descriptors** — NOT full data models.
189+
They summarize what's inside simulation files to enable natural language search
190+
via [ontology-based-nl-search](https://github.com/ASCS-eV/ontology-based-nl-search).
191+
192+
When adding properties, apply the property test:
193+
> "What natural language search query does this property enable?"
194+
195+
### Citation Pattern
196+
197+
When modifying ontology properties that reference ASAM standards:
198+
199+
```turtle
200+
# In SHACL
201+
sh:description "Road types per OpenDRIVE v1.9.0, Annex A.6.2 (e_roadType)"@en ;
202+
203+
# In OWL
204+
dcterms:source "ASAM OpenDRIVE v1.9.0, Annex A.6.2, Table 194" ;
205+
```
206+
207+
```yaml
208+
# In LinkML
209+
comments:
210+
- "[OpenDRIVE] Annex A.3.7, Table 176 (e_laneType)"
211+
see_also:
212+
- https://publications.pages.asam.net/standards/ASAM_OpenDRIVE/...
213+
```
214+
169215
## Git Commit Policy
170216
171217
**STRICT REQUIREMENTS:**

README.md

Lines changed: 39 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,38 @@
33
[![CI Pipeline](https://github.com/ASCS-eV/ontology-management-base/actions/workflows/ci-quality.yml/badge.svg)](https://github.com/ASCS-eV/ontology-management-base/actions/workflows/ci-quality.yml)
44
[![Documentation](https://img.shields.io/badge/docs-GitHub%20Pages-blue)](https://ascs-ev.github.io/ontology-management-base/)
55

6-
Central repository for the [ENVITED-X Ecosystem](https://envited-x.net/) of the Automotive Solution Center for Simulation e.V. It serves as the single source of truth for [Gaia-X 25.11](https://gitlab.com/gaia-x/technical-committee/service-characteristics-working-group/service-characteristics) compliant ontologies, including those developed within the [Gaia-X 4 PLC-AAD](https://www.gaia-x4plcaad.info/) project.
6+
Ontologies for **discovering and describing simulation assets** in the [ENVITED-X](https://envited-x.net/) data space, maintained by the Automotive Solution Center for Simulation e.V. ([ASCS](https://www.asc-s.de/)). Compliant with [Gaia-X 25.11](https://gitlab.com/gaia-x/technical-committee/service-characteristics-working-group/service-characteristics).
77

88
> **Note:** This repository is the active development home, forked from [GAIA-X4PLC-AAD/ontology-management-base](https://github.com/GAIA-X4PLC-AAD/ontology-management-base) (archived after `v0.1.0`).
99
10+
## What This Does
11+
12+
These ontologies define **searchable metadata** for simulation assets (HD maps, scenarios, sensor traces, environment models). They enable:
13+
14+
- **Natural language search** — "find all German motorway maps with 3+ lanes" → [ontology-based-nl-search](https://github.com/ASCS-eV/ontology-based-nl-search)
15+
- **Structured annotation** — describe your assets so others can find them → [sl-5-8-asset-tools](https://github.com/openMSL/sl-5-8-asset-tools)
16+
- **Cross-domain discovery** — find scenarios that reference a specific HD map
17+
- **Quality validation** — ensure metadata annotations are complete and correct (SHACL)
18+
19+
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.
20+
21+
## Who Uses This
22+
23+
| Role | Activity | Tool |
24+
|------|----------|------|
25+
| **Data Searcher** | Find assets by properties (NL or structured) | [NL Search App](https://github.com/ASCS-eV/ontology-based-nl-search) |
26+
| **Data Creator** | Annotate assets with metadata for discovery | [Asset Tools](https://github.com/openMSL/sl-5-8-asset-tools) |
27+
| **Ontology Developer** | Extend the metadata schema for new domains | This repository |
28+
29+
## How It Works
30+
31+
```mermaid
32+
flowchart TD
33+
A[/"Simulation Asset<br/>(OpenDRIVE, OSI, OpenSCENARIO...)"/] -->|annotate| B["JSON-LD Metadata<br/>(@type: hdmap:HdMap)"]
34+
B -->|validate · SHACL| C[("Knowledge Graph<br/>(SPARQL endpoint)")]
35+
C -->|search · NL → SPARQL| D["'Show me highway maps near Munich'"]
36+
```
37+
1038
## Getting Started
1139

1240
**New to this project?** Start with the [install, test, build guide](https://ascs-ev.github.io/ontology-management-base/getting-started/install-test-build/).
@@ -17,17 +45,19 @@ Central repository for the [ENVITED-X Ecosystem](https://envited-x.net/) of the
1745

1846
## Quick Links
1947

20-
- **[Full Documentation](https://ascs-ev.github.io/ontology-management-base/)** - Complete guides and references
21-
- **[Validation](https://ascs-ev.github.io/ontology-management-base/validation/strategy/)** - Run checks on your data
22-
- **[Contributing](https://ascs-ev.github.io/ontology-management-base/getting-started/contribute/)** - How to add or modify ontologies
23-
- **[Gaia-X 4 PLC-AAD](https://ascs-ev.github.io/ontology-management-base/gaiax/gaiax4plc-aad/)** - Federated catalog upload flow
48+
- **[Full Documentation](https://ascs-ev.github.io/ontology-management-base/)** — Complete guides and references
49+
- **[Validation](https://ascs-ev.github.io/ontology-management-base/validation/strategy/)** — Run checks on your data
50+
- **[Contributing](https://ascs-ev.github.io/ontology-management-base/getting-started/contribute/)** — How to add or modify ontologies
51+
- **[ASAM OpenX Standards](https://github.com/ASCS-eV/asam-openx-standards)** — Source standard references (submodule)
52+
- **[Gaia-X 4 PLC-AAD](https://ascs-ev.github.io/ontology-management-base/gaiax/gaiax4plc-aad/)** — Federated catalog upload flow
2453

2554
## What's in This Repository
2655

27-
- **Ontologies** - OWL definitions with SHACL validation shapes
28-
- **Validation Tools** - Python scripts to validate instances
29-
- **Test Data** - Examples and regression tests
30-
- **Documentation** - Guides, APIs, and specifications
56+
- **Ontologies** — OWL definitions with SHACL validation shapes (`artifacts/`)
57+
- **Validation Tools** — Python suite to validate metadata instances (`src/tools/`)
58+
- **Test Data** — Valid and invalid examples per domain (`tests/data/`)
59+
- **Documentation** — Guides, architecture, and specifications (`docs/`)
60+
- **Standard References** — ASAM OpenX specs as submodule (`submodules/asam-openx-standards/`)
3161

3262
## Requirements
3363

docs/concepts/purpose.md

Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
# Purpose and Design Philosophy
2+
3+
## Why These Ontologies Exist
4+
5+
The ENVITED-X ontologies solve a fundamental problem: **simulation assets are opaque files**. An OpenDRIVE map file, an OpenSCENARIO scenario, or an OSI trace contains rich structured data — but you cannot search across thousands of them without first understanding what's inside each one.
6+
7+
These ontologies provide a **searchable metadata layer** that sits alongside simulation assets, enabling discovery without parsing each file's native format.
8+
9+
## The Two Personas
10+
11+
### Data Searcher
12+
13+
> "Show me all HD maps of German motorways with at least 3 lanes and right-hand traffic"
14+
15+
The searcher doesn't want to download and parse hundreds of `.xodr` files. They need a search interface that understands simulation-domain concepts (road types, lane types, geographic coverage, accuracy) and can query structured metadata.
16+
17+
**How it works:**
18+
19+
1. A natural language query is translated into structured search slots
20+
2. Slots are validated against the SHACL schema (ensuring valid property names and enum values)
21+
3. A SPARQL query is compiled from the validated slots
22+
4. The graph store returns matching assets
23+
24+
The [ontology-based-nl-search](https://github.com/ASCS-eV/ontology-based-nl-search) application implements this flow. The ontology IS the search schema — every property becomes a searchable facet, every enum value becomes a filter option.
25+
26+
### Data Creator
27+
28+
> "I have an OpenDRIVE 1.8 file of the A9 near Munich — how do I make it findable?"
29+
30+
The creator annotates their asset with JSON-LD metadata conforming to the ontology. The annotation captures what's important for discovery without duplicating the entire file content.
31+
32+
**How it works:**
33+
34+
1. The creator (or automated tooling like [sl-5-8-asset-tools](https://github.com/openMSL/sl-5-8-asset-tools)) produces a JSON-LD instance
35+
2. The instance declares `@type: hdmap:HdMap` and populates properties (format, content, quality, quantity)
36+
3. SHACL validation ensures the metadata is complete and values are correct
37+
4. The validated metadata is indexed in a knowledge graph for search
38+
39+
### The Feedback Loop
40+
41+
Both personas generate feedback that improves the ontology:
42+
43+
- **Searcher can't find what they want** → missing property or enum value
44+
- **Creator can't describe their asset** → missing concept or inadequate granularity
45+
- **Search returns wrong results** → property semantics unclear or overlapping
46+
47+
This gap-discovery process drives ontology evolution.
48+
49+
## Metadata, Not Data Modeling
50+
51+
A critical design principle: **these ontologies describe metadata ABOUT simulation assets, not the assets themselves**.
52+
53+
```
54+
┌────────────────────────────────────────────────────┐
55+
│ SIMULATION ASSET (e.g., highway.xodr, 100MB) │
56+
│ │
57+
│ Contains: every road, lane, junction, signal, │
58+
│ geometry point, elevation sample... │
59+
│ Format: OpenDRIVE XSD schema (implicit ontology) │
60+
└────────────────────────────────────────────────────┘
61+
62+
│ DESCRIBED BY (summarized, not duplicated)
63+
64+
┌────────────────────────────────────────────────────┐
65+
│ METADATA ANNOTATION (~2KB JSON-LD) │
66+
│ │
67+
│ "This file is an ASAM OpenDRIVE v1.8 map. │
68+
│ It covers 45km of motorway with 12 junctions. │
69+
│ Right-hand traffic. Lane types: driving, │
70+
│ shoulder. Accuracy: ±0.1m 2D." │
71+
│ │
72+
│ Format: ENVITED-X ontology (explicit, searchable) │
73+
└────────────────────────────────────────────────────┘
74+
```
75+
76+
The ontology does NOT re-model OpenDRIVE's road geometry, signal semantics, or lane structure. Instead it captures the **discovery-relevant summary** of what's inside.
77+
78+
## Relationship to Source Standards
79+
80+
The ontologies relate to ASAM/ISO standards in five ways:
81+
82+
| Relationship | Description | Example |
83+
|-------------|-------------|---------|
84+
| **Aligns** | Uses the same terminology and enum values | `hdmap:roadTypes` uses OpenDRIVE `e_roadType` values verbatim |
85+
| **Summarizes** | Counts or lists what's in the file | `numberJunctions: 12` (not each junction's structure) |
86+
| **Extends** | Adds metadata not present in the format itself | `accuracyLaneModel2d: 0.1` (quality info external to the file) |
87+
| **Complements** | Adds governance/provenance context | `hasManifest`, `hasResourceDescription` (Gaia-X layer) |
88+
| **Interconnects** | Links across simulation domains | `scenario` references `hdmap` + `environment-model` |
89+
90+
## Design Principles
91+
92+
1. **Search-first** — Every property should answer a plausible user query. If no one would search by it, it's low priority.
93+
94+
2. **Standard-aligned** — Use the same terms as ASAM/ISO standards. Don't invent new names for existing concepts. Cite the normative source.
95+
96+
3. **Version-aware** — Track format versions and enforce version-appropriate constraints. OpenDRIVE 1.4 has different valid values than 1.8.
97+
98+
4. **Cross-domain** — Enable queries that span multiple asset types. "Find scenarios that use a specific HD map" requires linked metadata.
99+
100+
5. **Fail-fast validation** — SHACL shapes ensure metadata is correct at creation time, not when someone tries to search and gets bad results.
101+
102+
6. **Gap-discoverable** — When the search app can't answer a question, that's a signal to add a property. Document gaps explicitly.
103+
104+
## The Property Test
105+
106+
When considering adding a new ontology property, apply this test:
107+
108+
> **"What natural language search query does this property enable?"**
109+
110+
-`junctionTypes` → "Find maps with roundabouts" — clear search value
111+
-`geometryTypes` → "Find maps with spiral road segments" — useful for tooling
112+
-`numberOfGeometryPoints` → Nobody searches by vertex count — too low-level
113+
-`xmlSchemaVersion` → Internal technical detail, not a discovery criterion
114+
115+
## Architecture Overview
116+
117+
```
118+
ENVITED-X Ontology Stack
119+
═══════════════════════════════════════════════════════
120+
121+
┌─────────────────────────────────────────────┐
122+
│ Gaia-X Trust Framework │ Governance
123+
│ (gx:ServiceOffering, Compliance, Trust) │ & Identity
124+
└──────────────────────┬──────────────────────┘
125+
126+
┌──────────────────────▼──────────────────────┐
127+
│ envited-x (base layer) │ Shared Types
128+
│ SimulationAsset, Manifest, ResourceDesc │ & Wrappers
129+
└──────────────────────┬──────────────────────┘
130+
131+
┌──────────┬───────────┼───────────┬──────────┐
132+
│ │ │ │ │
133+
▼ ▼ ▼ ▼ ▼
134+
┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐
135+
│ hdmap │ │scenario│ │osi- │ │environ-│ │surface-│ Domain
136+
│ │ │ │ │trace │ │ment- │ │model │ Specific
137+
│OpenDRIVE│ │OpenSCE-│ │OSI │ │model │ │OpenCRG │
138+
│Lanelet │ │NARIO │ │ │ │OpenMAT │ │ │
139+
└────────┘ └────────┘ └────────┘ └────────┘ └────────┘
140+
141+
┌──────────────────────────────────────────────┐
142+
│ openlabel-v2 (cross-cutting) │ ODD/Labeling
143+
│ ISO 34503 taxonomy, weather, road users │ (shared by
144+
│ OpenODD modules, OpenLABEL types │ multiple)
145+
└──────────────────────────────────────────────┘
146+
```
147+
148+
Each domain ontology:
149+
150+
- Is a subclass of `envited-x:SimulationAsset`
151+
- Has a `DomainSpecification` with format, content, quality, quantity facets
152+
- Uses SHACL to validate enum values appropriate to the format version
153+
- Can reference other domains (e.g., scenario → hdmap)
154+
155+
## Source Standards Reference
156+
157+
The [asam-openx-standards](https://github.com/ASCS-eV/asam-openx-standards) submodule (at `submodules/asam-openx-standards/`) contains version-pinned markdown copies of all referenced ASAM standards. See its `AGENTS.md` for navigation guidance and `ENUMERATIONS.yaml` for machine-readable enum data.

0 commit comments

Comments
 (0)