diff --git a/.flake8 b/.flake8 deleted file mode 100644 index cb50e3a..0000000 --- a/.flake8 +++ /dev/null @@ -1,3 +0,0 @@ -[flake8] -max-line-length = 88 -extend-ignore = E501 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..4587672 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,7 @@ +# Enforce LF line endings for all text files +* text=auto eol=lf + +# Git LFS - track large binary assets in generated/input/ +generated/input/**/*.png filter=lfs diff=lfs merge=lfs -text +generated/input/**/*.pdf filter=lfs diff=lfs merge=lfs -text +generated/input/**/*.xodr filter=lfs diff=lfs merge=lfs -text diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 0000000..d9e4822 --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,56 @@ +# HD-Map Asset Example — Copilot Instructions + +## Project Overview + +This is a **reference asset repository** for onboarding HD-Map simulation data into the ENVITED-X Dataspace. Users stage input files in `generated/input/`, then `make generate` runs the sl-5-8 pipeline to produce a complete, EVES-003-conformant asset in `generated/output/`. + +Assets follow the [EVES-003](https://ascs-ev.github.io/EVES/EVES-003/eves-003.html) specification. + +## Repository Structure + +- `generated/input/` — Staged pipeline inputs (manifest, `.xodr` files, media, docs) +- `generated/output/` — Pipeline output: complete EVES-003 asset ready for validation and release +- `submodules/sl-5-8-asset-tools/` — Asset creation and processing tools (git submodule from [openMSL/sl-5-8-asset-tools](https://github.com/openMSL/sl-5-8-asset-tools)) + - `submodules/ontology-management-base/` — Nested submodule: SHACL shapes, OWL ontologies, JSON-LD contexts, and Python validation tools (from [ASCS-eV/ontology-management-base](https://github.com/ASCS-eV/ontology-management-base)) + +## Setup and Validation + +```bash +make setup +make validate +``` + +All commands are exposed via `make` targets -- run `make help` for the full list. + +## Linting (pre-commit hooks) + +Configured in `.pre-commit-config.yaml` — all hooks delegate to `make` targets. + +## Key Conventions + +### Asset Structure (EVES-003) + +Every asset must contain: `simulation-data/`, `metadata/`, `media/`, `documentation/`, and a `manifest.json` at the root. Optional: `validation-reports/`. + +### JSON-LD Metadata + +- `manifest.json` — Content registry linking all asset files with access roles (`isOwner`, `isRegistered`, `isPublic`) and categories (`isSimulationData`, `isMetadata`, `isMedia`, etc.) +- `metadata/hdmap.json` — Domain-specific metadata (format, content, quantity, quality, data source, georeference) conforming to the HD-Map SHACL shapes from ontology-management-base + +Both files use typed `@value`/`@type` pairs for literals and reference ontologies via `@context` prefixes like `hdmap:`, `manifest:`, `envited-x:`, `georeference:`, `gx:`. + +### Submodules + +Only one direct submodule: `submodules/sl-5-8-asset-tools` (which contains `ontology-management-base` as a nested submodule). After cloning, initialize with: + +```bash +make setup +``` + +### Commits + +This project uses [DCO sign-off](CONTRIBUTING.md). All commits require `Signed-off-by` — use `git commit -s`. Do **not** add `Co-authored-by: Copilot` trailers. + +## Release Workflow + +The GitHub Actions workflow (`.github/workflows/release.yml`) triggers on version tags (`v*.*.*`), runs `make setup && make generate && make validate`, and uploads the pipeline-generated `asset.zip` as a GitHub release artifact. diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index acfbe1f..c2d5f97 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,48 +5,36 @@ on: tags: - 'v*.*.*' # Triggers the workflow on version tags +permissions: + contents: write + jobs: release: runs-on: ubuntu-latest steps: - - name: Checkout repository (+ download lfs dependencies) + - name: Checkout repository uses: actions/checkout@v4 with: lfs: true + submodules: recursive + - name: Checkout LFS objects run: git lfs checkout - - name: Set up Node.js - uses: actions/setup-node@v4 + - name: Set up Python + uses: actions/setup-python@v5 with: - node-version: '20' - - - name: Install zip - run: sudo apt-get install -y zip + python-version: '3.12' - - name: Create zip file + - name: Setup, generate, and validate run: | - cd asset - zip -r ../Testfeld_Niedersachsen_ALKS_xodr_sample.zip ./* - - - name: Create Release - id: create_release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ github.ref }} - release_name: Release ${{ github.ref }} - draft: false - prerelease: false - - - name: Upload Release Asset - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + make setup + make generate + make validate + + - name: Create Release and Upload Asset + uses: softprops/action-gh-release@v2 with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./Testfeld_Niedersachsen_ALKS_xodr_sample.zip - asset_name: Testfeld_Niedersachsen_ALKS_xodr_sample.zip - asset_content_type: application/zip + files: "generated/output/**/*.zip" + generate_release_notes: true diff --git a/.gitignore b/.gitignore index d3b7e50..3b0ad68 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ /.venv/ output.log +*.zip +/generated/output/ +!/generated/input/ \ No newline at end of file diff --git a/.gitmodules b/.gitmodules index 184cfeb..6692a47 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,7 @@ -[submodule "ontology-management-base"] - path = ontology-management-base - url = https://github.com/GAIA-X4PLC-AAD/ontology-management-base.git +[submodule "submodules/sl-5-8-asset-tools"] + path = submodules/sl-5-8-asset-tools + url = https://github.com/openMSL/sl-5-8-asset-tools.git + branch = main +[submodule "submodules/EVES"] + path = submodules/EVES + url = https://github.com/ASCS-eV/EVES.git diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9ce777e..9d2a3c5 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -2,45 +2,9 @@ repos: - repo: local hooks: - - id: black - name: black - entry: black + - id: validate + name: validate asset JSON-LD + entry: make validate language: system - types: [python] - args: ["--config=pyproject.toml"] - pass_filenames: true - exclude: ontology-management-base/ - - - id: isort - name: isort - entry: isort - language: system - types: [python] - args: ["--settings=pyproject.toml"] - pass_filenames: true - exclude: ontology-management-base/ - - - id: flake8 - name: flake8 - entry: flake8 - language: system - types: [python] - args: ["--config=.flake8"] - pass_filenames: true - exclude: ontology-management-base/ - - - id: jsonld-lint - name: JSON-LD Linter - entry: python ontology-management-base/src/jsonld_lint.py - language: system - types: [json] - files: \.json$ - exclude: ontology-management-base/ - - - id: turtle-lint - name: Turtle Linter - entry: python ontology-management-base/src/turtle_lint.py - language: system - types: [text] - files: \.(ttl)$ - exclude: ontology-management-base/ + pass_filenames: false + always_run: true diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..ecef399 --- /dev/null +++ b/Makefile @@ -0,0 +1,191 @@ +# Makefile for hd-map-asset-example +# Build command center for common development tasks + +# Allow parent makefiles to override the venv path/tooling. +VENV ?= .venv + +# Submodule path aliases (hide deep paths) +ASSET_TOOLS := submodules/sl-5-8-asset-tools +OMB := $(ASSET_TOOLS)/submodules/ontology-management-base + +# OS detection for cross-platform support (Windows vs Unix) +ifeq ($(OS),Windows_NT) + VENV_BIN := $(VENV)/Scripts + PYTHON ?= $(VENV_BIN)/python.exe + BOOTSTRAP_PYTHON ?= python + ACTIVATE_SCRIPT := $(VENV_BIN)/activate + ACTIVATE_HINT := use the activation script under $(VENV_BIN) for your shell +else + VENV_BIN := $(VENV)/bin + PYTHON ?= $(VENV_BIN)/python3 + BOOTSTRAP_PYTHON ?= python3 + ACTIVATE_SCRIPT := $(VENV_BIN)/activate + ACTIVATE_HINT := source $(ACTIVATE_SCRIPT) +endif + +# Generated asset directory +GENERATED_DIR := generated +GEN_INPUT := $(GENERATED_DIR)/input +GEN_OUTPUT := $(GENERATED_DIR)/output +GEN_CONFIGS := $(ASSET_TOOLS)/configs + +# ── Subcommand support ─────────────────────────────────────────────── +# Enables: make generate clean, make setup qc +SUBCMD = $(word 2,$(MAKECMDGOALS)) + +# ── Guards ─────────────────────────────────────────────────────────── +define check_dev_setup + @"$(PYTHON)" -c "True" 2>/dev/null || { \ + echo ""; \ + echo "[ERR] Development environment not set up."; \ + echo " Run: make setup"; \ + echo ""; \ + exit 1; \ + } +endef + +.PHONY: all setup install lint format validate generate clean help + +# Default target +all: lint validate + +# ── Setup & Install ────────────────────────────────────────────────── + +setup: $(ACTIVATE_SCRIPT) +ifeq ($(SUBCMD),qc) + $(call check_dev_setup) + @echo "[INFO] Installing quality checker runtime dependencies..." + @"$(PYTHON)" -m pip install -e "$(ASSET_TOOLS)[qc-deps]" --quiet + @echo "[INFO] Installing quality checker packages (--no-deps to avoid upstream lxml/numpy constraints)..." + @"$(PYTHON)" -m pip install poetry-core --quiet 2>/dev/null || true + @"$(PYTHON)" -m pip install --no-deps \ + "asam-qc-baselib@git+https://github.com/asam-ev/qc-baselib-py@main" \ + "asam-qc-opendrive@git+https://github.com/jdsika/qc-opendrive@fix-contact-point-missing-road-link" \ + "asam-qc-openscenarioxml@git+https://github.com/asam-ev/qc-openscenarioxml@main" \ + "openmsl-qc-opendrive@git+https://github.com/openMSL/sl-5-9-openmsl-qc-opendrive@main" +# NOTE: qc-opendrive is pinned to a fork pending upstream PR asam-ev/qc-opendrive#139. +# Switch back to @main once the PR is merged. + @echo "[OK] Quality checkers installed" +else + @"$(MAKE)" -C "$(ASSET_TOOLS)" setup VENV="$(CURDIR)/$(VENV)" PYTHON="$(CURDIR)/$(PYTHON)" + @"$(PYTHON)" -m pre_commit install --allow-missing-config >/dev/null 2>&1 || true + @echo "[OK] Setup complete. Activate with: $(ACTIVATE_HINT)" +endif + +$(PYTHON): + @echo "[INFO] Creating virtual environment at $(VENV)..." + @"$(BOOTSTRAP_PYTHON)" -m venv "$(VENV)" + @"$(PYTHON)" -m pip install --upgrade pip + +$(ACTIVATE_SCRIPT): $(PYTHON) + @"$(MAKE)" -C "$(ASSET_TOOLS)" setup VENV="$(CURDIR)/$(VENV)" PYTHON="$(CURDIR)/$(PYTHON)" + @touch "$(ACTIVATE_SCRIPT)" + +install: + $(call check_dev_setup) + @"$(MAKE)" -C "$(ASSET_TOOLS)" install VENV="$(CURDIR)/$(VENV)" PYTHON="$(CURDIR)/$(PYTHON)" + @echo "[OK] Install complete" + +# ── Lint & Format ──────────────────────────────────────────────────── +# Root repo has no Python files — lint validates JSON-LD asset data. + +lint: validate + +format: + $(call check_dev_setup) + @echo "[INFO] Nothing to format (no Python files in root repo)" + +# ── Validate ───────────────────────────────────────────────────────── +# Validates JSON-LD files for every generated asset in the output directory. + +validate: +ifneq ($(firstword $(MAKECMDGOALS)),generate) + $(call check_dev_setup) + @"$(PYTHON)" -c "\ +import pathlib, sys; \ +out = pathlib.Path('$(GEN_OUTPUT)'); \ +dirs = sorted(d for d in out.iterdir() if d.is_dir()) if out.exists() else []; \ +sys.exit('[SKIP] No generated asset found (run: make generate)') if not dirs else None; \ +bad = [str(d) for d in dirs if not [p for p in [d / 'manifest.json', d / 'metadata' / 'hdmap.json'] if p.exists()]]; \ +sys.exit('[ERR] No manifest or metadata found in: ' + ', '.join(bad)) if bad else None; \ +all_paths = [str(p) for d in dirs for p in [d / 'manifest.json', d / 'metadata' / 'hdmap.json'] if p.exists()]; \ +print(' '.join(all_paths)); \ +" > .validate_paths 2>&1 && \ + "$(PYTHON)" -m src.tools.validators.validation_suite \ + --run check-data-conformance \ + --data-paths $$(cat .validate_paths) \ + --artifacts "$(OMB)/artifacts" && \ + rm -f .validate_paths && \ + echo "[OK] Validation complete" || \ + { cat .validate_paths 2>/dev/null; rm -f .validate_paths; exit 1; } +endif + +# ── Generate (full pipeline) ───────────────────────────────────────── + +generate: +ifeq ($(SUBCMD),clean) + @echo "[INFO] Removing generated/output/ directory..." + @"$(PYTHON)" -c "import shutil; shutil.rmtree('$(GEN_OUTPUT)', ignore_errors=True)" + @echo "[OK] Generated output removed (input/ blueprint preserved)" +else ifeq ($(SUBCMD),validate) + @"$(MAKE)" validate +else + $(call check_dev_setup) + @"$(PYTHON)" -c "\ +import pathlib, sys; \ +im = pathlib.Path('$(GEN_INPUT)') / 'input_manifest.json'; \ +sys.exit('[ERR] No input_manifest.json in $(GEN_INPUT)/. Stage input files first.') if not im.exists() else None; \ +" + @mkdir -p "$(GEN_OUTPUT)" 2>/dev/null || "$(PYTHON)" -c "import pathlib; pathlib.Path('$(GEN_OUTPUT)').mkdir(parents=True, exist_ok=True)" + @echo "[INFO] Running asset creation pipeline..." + @cd "$(GEN_INPUT)" && "$(CURDIR)/$(PYTHON)" -m asset_extraction.main \ + input_manifest.json \ + -config "$(CURDIR)/$(GEN_CONFIGS)" \ + -out "$(CURDIR)/$(GEN_OUTPUT)" + @echo "" + @echo "[OK] Asset generated in $(GEN_OUTPUT)/" +endif + +# ── Clean ──────────────────────────────────────────────────────────── + +clean: +ifneq ($(firstword $(MAKECMDGOALS)),generate) + @echo "[INFO] Cleaning..." + @rm -rf build/ dist/ .pytest_cache/ .mypy_cache/ "$(GENERATED_DIR)" + @find . -maxdepth 3 -type d -name __pycache__ -not -path "*/$(ASSET_TOOLS)/*" -exec rm -rf {} + 2>/dev/null || true + @find . -maxdepth 1 -name "*.egg-info" -exec rm -rf {} + 2>/dev/null || true + @rm -f *.zip + @echo "[OK] Cleaned" +endif + +# ── Help ───────────────────────────────────────────────────────────── + +help: + @echo "hd-map-asset-example -- Available Commands" + @echo "" + @echo " make setup Create venv and install all dependencies" + @echo " make setup qc Also install quality checker tools (optional, slow)" + @echo " make install Install packages" + @echo "" + @echo " make generate Run full pipeline: .xodr -> generated/ asset + zip" + @echo " make generate validate Validate the generated asset" + @echo " make generate clean Remove generated/output/ directory" + @echo "" + @echo " make lint Lint (validates asset JSON-LD)" + @echo " make validate Validate generated/output/ asset against SHACL" + @echo "" + @echo " make clean Remove all build artifacts, caches, and generated/" + @echo "" + @echo "Debug logging:" + @echo " SL58_LOG_MODE=debug make generate" + @echo " Shows full subprocess command lines, stdout/stderr, and tracebacks." + @echo "" + @echo "Deterministic mode (reproducible output):" + @echo " SL58_DETERMINISTIC=1 make generate" + @echo " Same input files produce identical UUIDs, timestamps, and CID." + +# ── Catch-all for subcommand arguments ─────────────────────────────── +ifneq ($(filter setup generate,$(firstword $(MAKECMDGOALS))),) +%: + @: +endif diff --git a/README.md b/README.md index 984dea8..306f818 100644 --- a/README.md +++ b/README.md @@ -1,78 +1,326 @@ -# HD-Map Asset Example - -This repository serves as a reference for onboarding a HD-Map asset into the ENVITED X Dataspace and can be used as a template for other dataspaces as well. It contains the full description as **`manifest_reference.json` - file** in addition to a consistent example of an HD-Map asset data. - -A complete **`asset`** in a specific domain includes the data itself and all necessary files for describing, evaluating, and visualizing the dataset. - -The repository has the following folder structure and the asset sample can be downloaded as artifact from the lastest release (**`asset.zip`**). - -All ENVITED X Dataspace assets are defined according to [EVES-003](https://ascs-ev.github.io/EVES/EVES-003/eves-003.html). - -## Installation - -If you want to use the validation scripts from 📁 `ontology-management-base/src` then you need to isntall the following dependencies: - -```bash -# On Windows use python instead of python3 -sudo apt-get install python3-full -python3 -m venv .venv/ -source .venv/bin/activate # On Windows use: source .venv/Scripts/activate -python3 -m pip install -r ontology-management-base/requirements.txt -# Example check -python3 ontology-management-base/src/check_jsonld_against_shacl_schema.py asset/manifest_reference.json asset/metadata/hdmap_instance.json -``` - -## Repo Structure - -The Repo has the following structure: - -📁 `.github` *-> github workflows* - -📁 `asset` *-> contains the asset* - -- 📄 *`README.md`* (defines asset folder structure) -- 📄 *`..more..`* (see folder) - -📁 `ontology-management-base` - -- contains all SHACLs and ontologies needed for onboarding and registering datasets, including semantic and syntactic validation of the provided metadata. -- Versioned git submodule of [ontology-management-base](https://github.com/GAIA-X4PLC-AAD/ontology-management-base). - -📄 `CONTRIBUTING.md` *-> contributing guidelines* - -📄 `README.md` *-> documentation of the Repo and the asset* - -### Legend - -- 📁 `folder-name`: A folder in the repo. -- 📄 `assetName`: A file in the repo. -- (optional) : This file or folder is optional and can be added or omitted as needed. - -## FAQ - -### How can I easily create a Simulation Asset? - -- **Preparation :** *Ensure you understood this repository and the necessary data to create a SimulationAsset for the ENVITED-X Data Space and familiarize yourself with the concept of an asset [EVES-003](https://ascs-ev.github.io/EVES/EVES-003/eves-003.html).* - -- **Provider Tools :** *You can use the [GaiaX 4 PLC-AAD Provider Tools](https://github.com/GAIA-X4PLC-AAD/provider-tools) to create your own asset in a guided way.* - -### Which roles can I define for access management? - -- **isOwner** *: The owner has full access to the asset and its associated files. This role includes permissions to download the asset.* - -- **isRegistered** *: A registered user has access to certain files and data within the asset but can't download the asset.* - -- **isPublic** *: A public user has only viewing rights to certain files or metadata.* - -### Which SCHAL - Files are used to generate the domainMetadata.json ? - --You need to use the following Ontology from [Ontology Management Base Repository](https://github.com/GAIA-X4PLC-AAD/ontology-management-base) - [HdMap_Ontology](https://github.com/GAIA-X4PLC-AAD/ontology-management-base/blob/main/hdmap/hdmap_ontology.ttl). - -## Usage - - 1. Read the `README.md` - file. - 2. Download the lastest `asset.zip` - file release. - 3. Explore the provided data files and documentation. - 4. Create the same folder and file structure for your asset, along with an appropriate `hdmap_instance.json` - file and `manifest_reference.json` - file. - 5. Zip your fills to an `asset.zip` - file. - 6. You are now ready to upload `asset.zip` - file and start registration of your asset. +# HD-Map Asset Example + +This repository serves as a reference for onboarding a HD-Map asset into the ENVITED-X Dataspace and can be used as a template for other dataspaces as well. It contains the full description as **`manifest.json`** in addition to a consistent example of an HD-Map asset data. + +A complete **`asset`** in a specific domain includes the data itself and all necessary files for describing, evaluating, and visualizing the dataset. + +The asset is generated from source files in `generated/input/` using the pipeline, and the release zip can be downloaded as an artifact from the latest release. + +All ENVITED-X Dataspace assets are defined according to [EVES-003](https://ascs-ev.github.io/EVES/EVES-003/eves-003.html). + +## Quick Start + +```bash +# 1. Clone with submodules +git clone --recurse-submodules +cd hd-map-asset-example + +# 2. Install everything +make setup + +# 3. Generate a complete asset from the example .xodr +make generate + +# 4. Validate the generated asset +make generate validate +``` + +If already cloned without submodules: + +```bash +git submodule update --init --recursive +make setup +``` + +## How It Works + +The `generated/input/` folder contains the **pipeline inputs** — an OpenDRIVE `.xodr` file plus supplementary material (images, docs, license). `make generate` uses the [sl-5-8-asset-tools](https://github.com/openMSL/sl-5-8-asset-tools) pipeline to produce a complete EVES-003 asset in `generated/output/`. + +### What Gets Auto-Generated vs. Provided as Input + +Everything begins with **one input file**: an OpenDRIVE (`.xodr`) HD-Map file. The pipeline auto-generates most of the asset — the rest is supplementary material you provide (screenshots, docs, license). + +| File | Auto-Generated? | How | +|------|:---:|---| +| `simulation-data/*.xodr` | — | **Your input file** (the map itself) | +| `simulation-data/*.bjson` | ✅ | `asset_reducer` extracts a search-optimized binary JSON | +| `metadata/hdmap.json` | ✅ | `meta_data_extractor` → `jsonLD_creator` builds the JSON-LD | +| `manifest.json` | ✅ | `structure_creator` → `jsonLD_creator` builds the manifest | +| `media/roadNetwork.geojson` | ✅ | `xodr_routing_creator` converts road geometry to GeoJSON | +| `media/bbox.geojson` | ✅ | `xodr_routing_creator` computes the bounding box polygon | +| `media/3d_preview/*.json` | ✅ | `xodr_to_geojson_caller` converts road/lane/object geometry | +| `validation-reports/*_asam_*.xqar/.txt` | ✅ | `qualitychecker_caller` runs ASAM OpenDRIVE checks | +| `validation-reports/*_openmsl_*.xqar/.txt` | ✅ | `qualitychecker_caller` runs OpenMSL checks | +| `media/*.png` (screenshots) | ❌ | Manually captured in a map viewer | +| `documentation/*.pdf` | ❌ | Manually written documentation | +| `documentation/*_stats.txt` | ❌ | Manually created statistics | + +### Pipeline Architecture + +The asset creation pipeline runs as a sequence of modular steps, each building on the previous one's output: + +``` + Your .xodr file ──► meta_data_extractor ──► jsonLD_creator (asset) + Parse .xodr XML Build hdmap.json + 🌐 geocoding + + │ + ├──► shacl_combiner ──► jsonLD_validator + │ Combine SHACL shapes Validate metadata + │ + ├──► qualitychecker_caller (optional: needs make setup qc) + │ Run ASAM + OpenMSL checks → validation-reports/ + │ + ├──► xodr_routing_creator + │ .xodr → roadNetwork.geojson + bbox.geojson + │ + ├──► xodr_to_geojson_caller + │ .xodr → 3d_preview/*.json (road/lane/object geometry) + │ + ├──► asset_reducer + │ .xodr → .bjson (binary search index) + │ + └──► structure_creator ──► jsonLD_creator (manifest) + Organize into EVES-003 Build manifest.json + folder structure ──► jsonLD_validator (manifest) + + 🌐 = requires internet connection (reverse geocoding only) +``` + +## Generating an Asset (Step by Step) + +### Step 1 — Set up the environment + +```bash +make setup +``` + +Creates a Python virtual environment (`.venv/`) and installs the pipeline with all dependencies. + +### Step 2 — (Optional) Install quality checkers + +```bash +make setup qc +``` + +Installs the [ASAM](https://github.com/asam-ev/qc-opendrive) and [OpenMSL](https://github.com/openMSL/sl-5-9-openmsl-qc-opendrive) quality checkers from GitHub. Without these, the pipeline skips quality checking and produces no validation reports. The install takes a few minutes. + +### Step 3 — Generate the asset + +```bash +make generate +``` + +This single command: +1. **Reads** the `input_manifest.json` blueprint from `generated/input/` +2. **Runs** the full pipeline → outputs to `generated/output//` +3. **Creates** a release-ready zip at `generated/output/.zip` + +The generated asset contains the complete EVES-003 folder structure: + +``` +generated/output// +├── simulation-data/ ← .xodr + .bjson search index +├── metadata/ ← hdmap.json (JSON-LD) +├── media/ ← GeoJSON maps + impression PNGs + 3D preview +├── documentation/ ← PDF + stats +├── validation-reports/ ← ASAM + OpenMSL QC reports +├── manifest.json +└── README.md +``` + +> 🌐 **Internet required for geocoding only** — reverse geocoding uses the Nominatim API. Ontology schemas and SHACL shapes are bundled via the `ontology-management-base` submodule. + +### Step 4 — Validate the generated asset + +```bash +make generate validate +``` + +Runs the SHACL validation suite against the generated `manifest.json` and `hdmap.json`. + +### Step 5 — Clean up + +```bash +make generate clean +``` + +Removes the `generated/output/` directory. Re-run `make generate` to regenerate. + +## Creating Your Own Asset + +To create a new HD-Map asset from **your own** `.xodr` file, you have two options: + +### Option A — Use `make generate` (recommended) + +1. Replace the `.xodr` in `generated/input/` with your own +2. Replace images and docs in `generated/input/` with yours +3. Update `generated/input/input_manifest.json` to list your files +4. Run `make generate clean && make generate` + +The pipeline will run all steps and produce a fresh asset in `generated/output/`. + +### Option B — Run the pipeline manually + +Create a working directory with all your input files **and** an `uploadedFiles.json` manifest: + +```bash +mkdir -p my_asset/input my_asset/output + +# Copy your files into the input directory +cp path/to/your_map.xodr my_asset/input/ +cp path/to/screenshot.png my_asset/input/ +cp path/to/documentation.pdf my_asset/input/ +cp LICENSE my_asset/input/ +``` + +Create `my_asset/input/uploadedFiles.json`: + +```json +[ + { + "filename": "your_map.xodr", + "type": "Asset", + "category": "isSimulationData", + "did": "did:key:yourUniqueIdentifier" + }, + { + "filename": "documentation.pdf", + "type": "Document", + "category": "isDocumentation" + }, + { + "filename": "screenshot.png", + "type": "Image", + "category": "isMedia" + }, + { + "filename": "LICENSE", + "type": "License", + "category": "isLicense" + } +] +``` + +Run the pipeline: + +```bash +cd my_asset/input + +# Windows: +../../.venv/Scripts/python -m asset_extraction.main \ + uploadedFiles.json \ + -config ../../submodules/sl-5-8-asset-tools/configs \ + -out ../output + +# macOS/Linux: +../../.venv/bin/python -m asset_extraction.main \ + uploadedFiles.json \ + -config ../../submodules/sl-5-8-asset-tools/configs \ + -out ../output +``` + +> ⚠️ **Important path rules:** +> - All input files **must be in the same directory** as `uploadedFiles.json` +> - Use **bare filenames** (no subdirectories) in `uploadedFiles.json` +> - The **output directory must be separate** from the input directory + +Supported file types and categories: + +| Type | Category | Examples | +|------|----------|---------| +| `Asset` | `isSimulationData` | `.xodr`, `.xosc`, `.crg` | +| `Document` | `isDocumentation` | `.pdf`, `.txt`, `.md` | +| `Image` | `isMedia` | `.png`, `.jpg`, `.jpeg` | +| `Video` | `isMedia` | `.mp4` | +| `3DPreview` | `isMedia` | `.json` (3D visualization data) | +| `License` | `isLicense` | `LICENSE` | + +## Repo Structure + +📁 `.github` → GitHub Actions release workflow + +📁 `generated/input` → Pipeline input files (`.xodr`, images, docs, license, `input_manifest.json`) + +📁 `generated/output` → Pipeline output (auto-generated, not committed) + +- 📁 `/simulation-data` → OpenDRIVE map file (`.xodr`) + search index (`.bjson`) +- 📁 `/metadata` → `hdmap.json` (domain-specific JSON-LD metadata) +- 📁 `/media` → Screenshots, GeoJSON maps, 3D preview data +- 📁 `/documentation` → PDF documentation and statistics +- 📁 `/validation-reports` → ASAM and OpenMSL quality check results +- 📄 `/manifest.json` → Content registry linking all files with access roles + +📁 `submodules/sl-5-8-asset-tools` + +- Asset creation and processing pipeline tools. +- Contains `ontology-management-base` as a nested submodule with all SHACLs and ontologies needed for validation. +- Versioned git submodule of [sl-5-8-asset-tools](https://github.com/openMSL/sl-5-8-asset-tools). + +📄 `CONTRIBUTING.md` → Contributing guidelines (DCO sign-off required) + +📄 `Makefile` → Central command center for all operations + +## Available Make Targets + +```bash +make help # Show all available commands + +make setup # Create venv and install all dependencies +make setup qc # Also install quality checker tools (optional, slow) +make install # Install packages + +make generate # Run full pipeline: .xodr → generated/ asset + zip +make generate validate # Validate the generated asset +make generate clean # Remove generated/output/ directory + +make validate # Validate the generated asset against SHACL +make lint # Lint (same as validate) + +make clean # Remove all build artifacts, caches, and generated/ +``` + +## FAQ + +### How can I easily create a Simulation Asset? + +- **One command:** Run `make generate` — it reads the input blueprint from `generated/input/`, runs the full pipeline, and outputs a complete EVES-003 asset to `generated/output/`. + +- **Preparation:** Ensure you understood this repository and the necessary data to create a SimulationAsset for the ENVITED-X Data Space and familiarize yourself with the concept of an asset ([EVES-003](https://ascs-ev.github.io/EVES/EVES-003/eves-003.html)). + +- **Guided Web UI:** You can use the [GaiaX 4 PLC-AAD Provider Tools](https://github.com/GAIA-X4PLC-AAD/provider-tools) to create your own asset in a guided way. + +### Which roles can I define for access management? + +- **isOwner**: The owner has full access to the asset and its associated files. This role includes permissions to download the asset. + +- **isRegistered**: A registered user has access to certain files and data within the asset but can't download the asset. + +- **isPublic**: A public user has only viewing rights to certain files or metadata. + +### Which SHACL files are used to generate the domain metadata? + +You need to use the following ontology from [Ontology Management Base Repository](https://github.com/ASCS-eV/ontology-management-base) — [HdMap Ontology](https://github.com/ASCS-eV/ontology-management-base/blob/main/artifacts/hdmap/hdmap.owl.ttl). + +### What does the pipeline need to run? + +- **Python 3.12+** and `make` +- The `sl-5-8-asset-tools` submodule (initialized via `git submodule update --init --recursive`) +- **Internet connection** — required only for reverse geocoding (Nominatim API); ontology schemas and SHACL shapes are provided locally by the `ontology-management-base` submodule +- For quality checking (optional): run `make setup qc` to install the ASAM and OpenMSL checker tools from GitHub + +### What is the `uploadedFiles.json`? + +It's a simple JSON array that tells the pipeline which files to process and how to categorize them. Each entry has: +- `filename` — path or URL to the file +- `type` — what kind of file it is (`Asset`, `Document`, `Image`, `License`, etc.) +- `category` — the EVES-003 category (`isSimulationData`, `isDocumentation`, `isMedia`, etc.) +- `did` (optional) — a decentralized identifier for the asset + +When using `make generate`, this file is created automatically. + +### Known Limitations + +- **Geocoding timeouts** — The `meta_data_extractor` uses the Nominatim API for reverse geocoding. If the API is slow or rate-limited, the pipeline may fail. Simply retry. +- **Quality checkers require extra install** — The `[qc]` optional dependencies install from Git branches and may take a while. Without them, quality checking is skipped (no validation reports generated). +- **Ontology versions** — The pipeline generates metadata using the **latest** ontology versions. Both current and older versions are valid but produce different JSON-LD structures. diff --git a/asset.zip b/asset.zip deleted file mode 100644 index d65624a..0000000 Binary files a/asset.zip and /dev/null differ diff --git a/asset/README.md b/asset/README.md deleted file mode 100644 index 823205c..0000000 --- a/asset/README.md +++ /dev/null @@ -1,63 +0,0 @@ -# Testfeld Niedersachsen ALKS xodr sample - -Simple hdmap example file on the Testfeld Niedersachsen suitable for ALKS scenarios. - -## Digital Assets - -This is a digital asset according to the ENVITED Ecosystem Specification [EVES-003](https://ascs-ev.github.io/EVES/EVES-003/eves-003.html) for the ENVITED-X Data Space. It can be used as a template for other dataspaces as well. It contains a fully described and consistent example of a digital asset including a **`manifest.json` - file** as content registry. - -A complete **`digital asset`** in a specific domain includes the data itself and all necessary files for describing, evaluating, and visualizing the dataset. - -## Example Asset Folder Structure - -A sample **`digital asset`** can be downloaded from the [GAIA-X4PLC-AAD/hd-map-asset-example](https://github.com/GAIA-X4PLC-AAD/hd-map-asset-example) as artifact of the lastest release (**`asset.zip`**) containing the following structure: - -📁 `asset` - -- 📁 `simulation-data` - - 📄 `assetName.xodr` - - 📄 *`assetName_offset.xodr`* (optional) -- 📁 `documentation` - - 📄 `assetName_Documentation.pdf` - - 📄 *`assetName_[Name].[ext]`* (optional) -- 📁 `metadata` - - 📄 `hdmap_instance.json` -- 📁 *`validation-reports`* (optional) - - 📄 *`qcReport.txt`* (optional) -- 📁 `media` - - 📁 `3d_preview` *-> 3d preview files* (optional) - - 📄 `assetName_01.png` *-> eyecatcher* - - 📄 *`assetName_[XX].png`* *-> impression* (optional) - - 📄 `bbox.geojson` - - 📄 *`roadNetwork.geojson`* (optional) - - 📄 *`detailRoadNetwork.geojson`* (optional) -- 📄 `README` -- 📄 `manifest.json` - -### Legend - -- 📁 `folder-name`: A folder in the repo. -- 📄 `assetName`: A file in the repo. -- (optional) : This file or folder is optional and can be added or omitted as needed. - -### Description of the respective folders - -- 📁 `simulation-data` : *Contains all valuble data files of the asset.* -- 📁 `documentation` : *Contains an instruction as well as technical specification of the asset.* -- 📁 `metadata` : *Contains all metadata which are necassary to describe this asset, that includes all domain sepcific metadata from the [Ontology Management Base Repository](https://github.com/GAIA-X4PLC-AAD/ontology-management-base) (and all GAIA-X metadata form the [gaia-x-compliant-claims-example](https://github.com/GAIA-X4PLC-AAD/gaia-x-compliant-claims-example) to be compliant with the [GAIA-X Trust Framework](https://docs.gaia-x.eu/policy-rules-committee/trust-framework/22.10/). -> needs to be defined in a next step)* -- 📁 `validation-reports` : *Contains the results provided by a validation suite.* -- 📁 `media` : *Contains all viusalization content from the asset which includes positionings decribed by a bounding box or maps as well as images and videos.* - -### Description of the respective files - -📄 `manifest_reference.json`: - -- *This manifest file defined the link structure depending on the domain sepecific asset.zip. It includes a context section defining namespaces for various terms, an identifier (`@id`) for the asset, and a type (`@type`) indicating it is a manifest. The `manifest:links` section contains multiple entries, each specifying a type of link (e.g., license, simulation-data, media) with details such as relative paths, formats, and access roles. Optional metadata and visualization files are also included, with different access roles like `isOwner`,`isRegistered`, and `isPublic`.* - -📄 `hdmap_instance.json` (domain metadata): - -- *This JSON file describes the metadata and links associated with a high-definition map (HD map) used in the Gaia-X 4 PLC-AAD project. It includes a context section defining namespaces for various terms, an identifier (@id) for the HD map, and a type (@type) indicating it is an HD map. The `DataResource` section provides details such as the name, description, and the GAIA-X metadata from the [gaia-x-compliant-claims-example](https://github.com/GAIA-X4PLC-AAD/gaia-x-compliant-claims-example) to be compliant with the [GAIA-X Trust Framework](https://docs.gaia-x.eu/policy-rules-committee/trust-framework/22.10/). The `manifest` section contains multiple entries, each specified by a category of link (e.g., simulation-data, metadata, media, documentation, validation-report) with details such as URLs and types. The `format` section specifies the type and version of the HD map format. The `content` section describes road types, lane types, and traffic direction. The `quantity` section provides measurements like length, elevation range, and counts of intersections, traffic lights, and signs. The `quality` section details precision and accuracy metrics. The `dataSource` section lists the data sources and measurement system used. Finally, the `georeference` section provides geolocation information, including the bounding box and geodetic reference system.* - -### Create an asset - -You can use the GaiaX 4 PLC-AAD [Provider Services](https://github.com/GAIA-X4PLC-AAD/provider-services) and [Provider Tools](https://github.com/GAIA-X4PLC-AAD/provider-tools) to create your own digital asset. diff --git a/asset/documentation/Testfeld_Niedersachsen_ALKS_xodr_sample_offset_documentation.pdf b/asset/documentation/Testfeld_Niedersachsen_ALKS_xodr_sample_offset_documentation.pdf deleted file mode 100644 index 31ad4f5..0000000 Binary files a/asset/documentation/Testfeld_Niedersachsen_ALKS_xodr_sample_offset_documentation.pdf and /dev/null differ diff --git a/asset/manifest_reference.json b/asset/manifest_reference.json deleted file mode 100644 index 243dede..0000000 --- a/asset/manifest_reference.json +++ /dev/null @@ -1,734 +0,0 @@ -{ - "@context": { - "envited-x": "https://ontologies.envited-x.net/envited-x/v2/ontology#", - "manifest": "https://ontologies.envited-x.net/manifest/v4/ontology#", - "gx": "https://registry.lab.gaia-x.eu/development/api/trusted-shape-registry/v1/shapes/jsonld/trustframework#", - "sh": "http://www.w3.org/ns/shacl#", - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "xsd": "http://www.w3.org/2001/XMLSchema#", - "skos": "http://www.w3.org/2004/02/skos/core#" - }, - "@id": "did:web:registry.gaia-x.eu:Manifest:ZNh9Z-tHQpkpxJhNobhUVmauYxrfTAZdQy9L", - "@type": "envited-x:Manifest", - "manifest:hasManifestReference": { - "@type": "manifest:Link", - "manifest:hasAccessRole": { - "@type": "manifest:AccessRole", - "@id": "envited-x:isPublic" - }, - "manifest:hasCategory": { - "@type": "manifest:Category", - "@id": "envited-x:isManifest" - }, - "manifest:hasFileMetadata": { - "@type": "manifest:FileMetadata", - "manifest:filePath": { - "@value": "./manifest_reference.json", - "@type": "xsd:anyURI" - }, - "manifest:mimeType": { - "@value": "application/ld+json", - "@type": "xsd:string" - } - } - }, - "manifest:hasLicense": { - "@type": "manifest:License", - "gx:license": { - "@value": "MPL-2.0" - }, - "manifest:licenseData": { - "@type": "manifest:Link", - "manifest:hasAccessRole": { - "@type": "manifest:AccessRole", - "@id": "envited-x:isPublic" - }, - "manifest:hasCategory": { - "@type": "manifest:Category", - "@id": "envited-x:isLicense" - }, - "manifest:hasFileMetadata": { - "@type": "manifest:FileMetadata", - "manifest:filePath": { - "@value": "https://www.mozilla.org/en-US/MPL/2.0/", - "@type": "xsd:anyURI" - }, - "manifest:mimeType": { - "@value": "text/html", - "@type": "xsd:string" - } - } - } - }, - "manifest:hasArtifacts": [ - { - "@type": "manifest:Link", - "manifest:hasAccessRole": { - "@type": "manifest:AccessRole", - "@id": "envited-x:isOwner" - }, - "manifest:hasCategory": { - "@type": "manifest:Category", - "@id": "envited-x:isSimulationData" - }, - "manifest:hasFileMetadata": { - "@type": "manifest:FileMetadata", - "manifest:filePath": { - "@value": "./simulation-data/Testfeld_Niedersachsen_ALKS_xodr_sample_offset.xodr", - "@type": "xsd:anyURI" - }, - "manifest:mimeType": { - "@value": "application/x-xodr", - "@type": "xsd:string" - }, - "manifest:fileSize": { - "@value": 645096, - "@type": "xsd:integer" - }, - "manifest:filename": { - "@value": "Testfeld_Niedersachsen_ALKS_xodr_sample_offset.xodr", - "@type": "xsd:string" - } - } - }, - { - "@type": "manifest:Link", - "manifest:hasAccessRole": { - "@type": "manifest:AccessRole", - "@id": "envited-x:isRegistered" - }, - "manifest:hasCategory": { - "@type": "manifest:Category", - "@id": "envited-x:isMiscellaneous" - }, - "manifest:hasFileMetadata": { - "@type": "manifest:FileMetadata", - "manifest:filePath": { - "@value": "./simulation-data/Testfeld_Niedersachsen_ALKS_xodr_sample_offset.bjson", - "@type": "xsd:anyURI" - }, - "manifest:mimeType": { - "@value": "application/json", - "@type": "xsd:string" - }, - "manifest:fileSize": { - "@value": 61104, - "@type": "xsd:integer" - }, - "manifest:filename": { - "@value": "Testfeld_Niedersachsen_ALKS_xodr_sample_offset.bjson", - "@type": "xsd:string" - } - } - }, - { - "@type": "manifest:Link", - "manifest:hasAccessRole": { - "@type": "manifest:AccessRole", - "@id": "envited-x:isPublic" - }, - "manifest:hasCategory": { - "@type": "manifest:Category", - "@id": "envited-x:isDocumentation" - }, - "manifest:hasFileMetadata": { - "@type": "manifest:FileMetadata", - "manifest:filePath": { - "@value": "./documentation/Testfeld_Niedersachsen_ALKS_xodr_sample_offset_documentation.pdf", - "@type": "xsd:anyURI" - }, - "manifest:mimeType": { - "@value": "application/pdf", - "@type": "xsd:string" - }, - "manifest:fileSize": { - "@value": 101219, - "@type": "xsd:integer" - }, - "manifest:filename": { - "@value": "Testfeld_Niedersachsen_ALKS_xodr_sample_offset_documentation.pdf", - "@type": "xsd:string" - } - } - }, - { - "@type": "manifest:Link", - "manifest:hasAccessRole": { - "@type": "manifest:AccessRole", - "@id": "envited-x:isRegistered" - }, - "manifest:hasCategory": { - "@type": "manifest:Category", - "@id": "envited-x:isDocumentation" - }, - "manifest:hasFileMetadata": { - "@type": "manifest:FileMetadata", - "manifest:filePath": { - "@value": "./documentation/Testfeld_Niedersachsen_ALKS_xodr_sample_offset_documentation_stats.txt", - "@type": "xsd:anyURI" - }, - "manifest:mimeType": { - "@value": "text/plain", - "@type": "xsd:string" - }, - "manifest:fileSize": { - "@value": 4536, - "@type": "xsd:integer" - }, - "manifest:filename": { - "@value": "Testfeld_Niedersachsen_ALKS_xodr_sample_offset_documentation_stats.txt", - "@type": "xsd:string" - } - } - }, - { - "@type": "manifest:Link", - "manifest:iri": { - "@id": "did:web:registry.gaia-x.eu:HdMap:DjHgK5ErTBow1Ya3J05tW9l12skGWgZn6kA9" - }, - "skos:note": { - "@value": "This is the domain metadata for a HD Map.", - "@type": "xsd:string" - }, - "sh:conformsTo": [ - { - "@id": "https://ontologies.envited-x.net/hdmap/v3/ontology" - } - ], - "manifest:hasAccessRole": { - "@type": "manifest:AccessRole", - "@id": "envited-x:isPublic" - }, - "manifest:hasCategory": { - "@type": "manifest:Category", - "@id": "envited-x:isMetadata" - }, - "manifest:hasFileMetadata": { - "@type": "manifest:FileMetadata", - "manifest:filePath": { - "@value": "./metadata/hdmap_instance.json", - "@type": "xsd:anyURI" - }, - "manifest:mimeType": { - "@value": "application/ld+json", - "@type": "xsd:string" - }, - "manifest:fileSize": { - "@value": 3751, - "@type": "xsd:integer" - }, - "manifest:filename": { - "@value": "hdmap_instance.json", - "@type": "xsd:string" - } - } - }, - { - "@type": "manifest:Link", - "manifest:hasAccessRole": { - "@type": "manifest:AccessRole", - "@id": "envited-x:isRegistered" - }, - "manifest:hasCategory": { - "@type": "manifest:Category", - "@id": "envited-x:isValidationReport" - }, - "manifest:hasFileMetadata": { - "@type": "manifest:FileMetadata", - "manifest:filePath": { - "@value": "./validation-reports/Testfeld_Niedersachsen_ALKS_xodr_sample_offset_asam_cb_xodr.xqar", - "@type": "xsd:anyURI" - }, - "manifest:mimeType": { - "@value": "application/x-xqar", - "@type": "xsd:string" - }, - "manifest:fileSize": { - "@value": 9524, - "@type": "xsd:integer" - }, - "manifest:filename": { - "@value": "Testfeld_Niedersachsen_ALKS_xodr_sample_offset_asam_cb_xodr.xqar", - "@type": "xsd:string" - } - } - }, - { - "@type": "manifest:Link", - "manifest:hasAccessRole": { - "@type": "manifest:AccessRole", - "@id": "envited-x:isPublic" - }, - "manifest:hasCategory": { - "@type": "manifest:Category", - "@id": "envited-x:isValidationReport" - }, - "manifest:hasFileMetadata": { - "@type": "manifest:FileMetadata", - "manifest:filePath": { - "@value": "./validation-reports/Testfeld_Niedersachsen_ALKS_xodr_sample_offset_asam_cb_xodr_QCReport.txt", - "@type": "xsd:anyURI" - }, - "manifest:mimeType": { - "@value": "text/plain", - "@type": "xsd:string" - }, - "manifest:fileSize": { - "@value": 14106, - "@type": "xsd:integer" - }, - "manifest:filename": { - "@value": "Testfeld_Niedersachsen_ALKS_xodr_sample_offset_asam_cb_xodr_QCReport.txt", - "@type": "xsd:string" - } - } - }, - { - "@type": "manifest:Link", - "manifest:hasAccessRole": { - "@type": "manifest:AccessRole", - "@id": "envited-x:isRegistered" - }, - "manifest:hasCategory": { - "@type": "manifest:Category", - "@id": "envited-x:isValidationReport" - }, - "manifest:hasFileMetadata": { - "@type": "manifest:FileMetadata", - "manifest:filePath": { - "@value": "./validation-reports/Testfeld_Niedersachsen_ALKS_xodr_sample_offset_openmsl_cb_xodr.xqar", - "@type": "xsd:anyURI" - }, - "manifest:mimeType": { - "@value": "application/x-xqar", - "@type": "xsd:string" - }, - "manifest:fileSize": { - "@value": 62409, - "@type": "xsd:integer" - }, - "manifest:filename": { - "@value": "Testfeld_Niedersachsen_ALKS_xodr_sample_offset_openmsl_cb_xodr.xqar", - "@type": "xsd:string" - } - } - }, - { - "@type": "manifest:Link", - "manifest:hasAccessRole": { - "@type": "manifest:AccessRole", - "@id": "envited-x:isPublic" - }, - "manifest:hasCategory": { - "@type": "manifest:Category", - "@id": "envited-x:isDocumentation" - }, - "manifest:hasFileMetadata": { - "@type": "manifest:FileMetadata", - "manifest:filePath": { - "@value": "./README.md", - "@type": "xsd:anyURI" - }, - "manifest:mimeType": { - "@value": "text/markdown", - "@type": "xsd:string" - }, - "manifest:filename": { - "@value": "README.md", - "@type": "xsd:string" - } - } - }, - { - "@type": "manifest:Link", - "manifest:hasAccessRole": { - "@type": "manifest:AccessRole", - "@id": "envited-x:isPublic" - }, - "manifest:hasCategory": { - "@type": "manifest:Category", - "@id": "envited-x:isMedia" - }, - "manifest:hasFileMetadata": { - "@type": "manifest:FileMetadata", - "manifest:filePath": { - "@value": "./media/Testfeld_Niedersachsen_ALKS_xodr_sample_offset_impression-01.png", - "@type": "xsd:anyURI" - }, - "manifest:mimeType": { - "@value": "image/png", - "@type": "xsd:string" - }, - "manifest:filename": { - "@value": "Testfeld_Niedersachsen_ALKS_xodr_sample_offset_impression-01.png", - "@type": "xsd:string" - } - } - }, - { - "@type": "manifest:Link", - "manifest:hasAccessRole": { - "@type": "manifest:AccessRole", - "@id": "envited-x:isRegistered" - }, - "manifest:hasCategory": { - "@type": "manifest:Category", - "@id": "envited-x:isMedia" - }, - "manifest:hasFileMetadata": { - "@type": "manifest:FileMetadata", - "manifest:filePath": { - "@value": "./media/Testfeld_Niedersachsen_ALKS_xodr_sample_offset_impression-02.png", - "@type": "xsd:anyURI" - }, - "manifest:mimeType": { - "@value": "image/png", - "@type": "xsd:string" - }, - "manifest:filename": { - "@value": "Testfeld_Niedersachsen_ALKS_xodr_sample_offset_impression-02.png", - "@type": "xsd:string" - } - } - }, - { - "@type": "manifest:Link", - "manifest:hasAccessRole": { - "@type": "manifest:AccessRole", - "@id": "envited-x:isRegistered" - }, - "manifest:hasCategory": { - "@type": "manifest:Category", - "@id": "envited-x:isMedia" - }, - "manifest:hasFileMetadata": { - "@type": "manifest:FileMetadata", - "manifest:filePath": { - "@value": "./media/Testfeld_Niedersachsen_ALKS_xodr_sample_offset_impression-03.png", - "@type": "xsd:anyURI" - }, - "manifest:mimeType": { - "@value": "image/png", - "@type": "xsd:string" - }, - "manifest:filename": { - "@value": "Testfeld_Niedersachsen_ALKS_xodr_sample_offset_impression-03.png", - "@type": "xsd:string" - } - } - }, - { - "@type": "manifest:Link", - "manifest:hasAccessRole": { - "@type": "manifest:AccessRole", - "@id": "envited-x:isRegistered" - }, - "manifest:hasCategory": { - "@type": "manifest:Category", - "@id": "envited-x:isMedia" - }, - "manifest:hasFileMetadata": { - "@type": "manifest:FileMetadata", - "manifest:filePath": { - "@value": "./media/bbox.geojson", - "@type": "xsd:anyURI" - }, - "manifest:mimeType": { - "@value": "application/x-geojson", - "@type": "xsd:string" - }, - "manifest:filename": { - "@value": "bbox.geojson", - "@type": "xsd:string" - } - } - }, - { - "@type": "manifest:Link", - "manifest:hasAccessRole": { - "@type": "manifest:AccessRole", - "@id": "envited-x:isRegistered" - }, - "manifest:hasCategory": { - "@type": "manifest:Category", - "@id": "envited-x:isMedia" - }, - "manifest:hasFileMetadata": { - "@type": "manifest:FileMetadata", - "manifest:filePath": { - "@value": "./media/roadNetwork.geojson", - "@type": "xsd:anyURI" - }, - "manifest:mimeType": { - "@value": "application/x-geojson", - "@type": "xsd:string" - }, - "manifest:filename": { - "@value": "roadNetwork.geojson", - "@type": "xsd:string" - } - } - }, - { - "@type": "manifest:Link", - "manifest:hasAccessRole": { - "@type": "manifest:AccessRole", - "@id": "envited-x:isRegistered" - }, - "manifest:hasCategory": { - "@type": "manifest:Category", - "@id": "envited-x:isMedia" - }, - "manifest:hasFileMetadata": { - "@type": "manifest:FileMetadata", - "manifest:filePath": { - "@value": "./media/3d_preview/breakLines.json", - "@type": "xsd:anyURI" - }, - "manifest:mimeType": { - "@value": "application/json", - "@type": "xsd:string" - }, - "manifest:filename": { - "@value": "breakLines.json", - "@type": "xsd:string" - } - } - }, - { - "@type": "manifest:Link", - "manifest:hasAccessRole": { - "@type": "manifest:AccessRole", - "@id": "envited-x:isRegistered" - }, - "manifest:hasCategory": { - "@type": "manifest:Category", - "@id": "envited-x:isMedia" - }, - "manifest:hasFileMetadata": { - "@type": "manifest:FileMetadata", - "manifest:filePath": { - "@value": "./media/3d_preview/junctions.json", - "@type": "xsd:anyURI" - }, - "manifest:mimeType": { - "@value": "application/json", - "@type": "xsd:string" - }, - "manifest:filename": { - "@value": "junctions.json", - "@type": "xsd:string" - } - } - }, - { - "@type": "manifest:Link", - "manifest:hasAccessRole": { - "@type": "manifest:AccessRole", - "@id": "envited-x:isRegistered" - }, - "manifest:hasCategory": { - "@type": "manifest:Category", - "@id": "envited-x:isMedia" - }, - "manifest:hasFileMetadata": { - "@type": "manifest:FileMetadata", - "manifest:filePath": { - "@value": "./media/3d_preview/laneSections.json", - "@type": "xsd:anyURI" - }, - "manifest:mimeType": { - "@value": "application/json", - "@type": "xsd:string" - }, - "manifest:filename": { - "@value": "laneSections.json", - "@type": "xsd:string" - } - } - }, - { - "@type": "manifest:Link", - "manifest:hasAccessRole": { - "@type": "manifest:AccessRole", - "@id": "envited-x:isRegistered" - }, - "manifest:hasCategory": { - "@type": "manifest:Category", - "@id": "envited-x:isMedia" - }, - "manifest:hasFileMetadata": { - "@type": "manifest:FileMetadata", - "manifest:filePath": { - "@value": "./media/3d_preview/lanes.json", - "@type": "xsd:anyURI" - }, - "manifest:mimeType": { - "@value": "application/json", - "@type": "xsd:string" - }, - "manifest:filename": { - "@value": "lanes.json", - "@type": "xsd:string" - } - } - }, - { - "@type": "manifest:Link", - "manifest:hasAccessRole": { - "@type": "manifest:AccessRole", - "@id": "envited-x:isRegistered" - }, - "manifest:hasCategory": { - "@type": "manifest:Category", - "@id": "envited-x:isMedia" - }, - "manifest:hasFileMetadata": { - "@type": "manifest:FileMetadata", - "manifest:filePath": { - "@value": "./media/3d_preview/objects.json", - "@type": "xsd:anyURI" - }, - "manifest:mimeType": { - "@value": "application/json", - "@type": "xsd:string" - }, - "manifest:filename": { - "@value": "objects.json", - "@type": "xsd:string" - } - } - }, - { - "@type": "manifest:Link", - "manifest:hasAccessRole": { - "@type": "manifest:AccessRole", - "@id": "envited-x:isRegistered" - }, - "manifest:hasCategory": { - "@type": "manifest:Category", - "@id": "envited-x:isMedia" - }, - "manifest:hasFileMetadata": { - "@type": "manifest:FileMetadata", - "manifest:filePath": { - "@value": "./media/3d_preview/refLine.json", - "@type": "xsd:anyURI" - }, - "manifest:mimeType": { - "@value": "application/json", - "@type": "xsd:string" - }, - "manifest:filename": { - "@value": "refLine.json", - "@type": "xsd:string" - } - } - }, - { - "@type": "manifest:Link", - "manifest:hasAccessRole": { - "@type": "manifest:AccessRole", - "@id": "envited-x:isRegistered" - }, - "manifest:hasCategory": { - "@type": "manifest:Category", - "@id": "envited-x:isMedia" - }, - "manifest:hasFileMetadata": { - "@type": "manifest:FileMetadata", - "manifest:filePath": { - "@value": "./media/3d_preview/roadMarks.json", - "@type": "xsd:anyURI" - }, - "manifest:mimeType": { - "@value": "application/json", - "@type": "xsd:string" - }, - "manifest:filename": { - "@value": "roadMarks.json", - "@type": "xsd:string" - } - } - }, - { - "@type": "manifest:Link", - "manifest:hasAccessRole": { - "@type": "manifest:AccessRole", - "@id": "envited-x:isRegistered" - }, - "manifest:hasCategory": { - "@type": "manifest:Category", - "@id": "envited-x:isMedia" - }, - "manifest:hasFileMetadata": { - "@type": "manifest:FileMetadata", - "manifest:filePath": { - "@value": "./media/3d_preview/roads.json", - "@type": "xsd:anyURI" - }, - "manifest:mimeType": { - "@value": "application/json", - "@type": "xsd:string" - }, - "manifest:filename": { - "@value": "roads.json", - "@type": "xsd:string" - } - } - }, - { - "@type": "manifest:Link", - "manifest:hasAccessRole": { - "@type": "manifest:AccessRole", - "@id": "envited-x:isRegistered" - }, - "manifest:hasCategory": { - "@type": "manifest:Category", - "@id": "envited-x:isMedia" - }, - "manifest:hasFileMetadata": { - "@type": "manifest:FileMetadata", - "manifest:filePath": { - "@value": "./media/3d_preview/signals.json", - "@type": "xsd:anyURI" - }, - "manifest:mimeType": { - "@value": "application/json", - "@type": "xsd:string" - }, - "manifest:filename": { - "@value": "signals.json", - "@type": "xsd:string" - } - } - }, - { - "@type": "manifest:Link", - "manifest:hasAccessRole": { - "@type": "manifest:AccessRole", - "@id": "envited-x:isRegistered" - }, - "manifest:hasCategory": { - "@type": "manifest:Category", - "@id": "envited-x:isValidationReport" - }, - "manifest:hasFileMetadata": { - "@type": "manifest:FileMetadata", - "manifest:filePath": { - "@value": "./validation-reports/Testfeld_Niedersachsen_ALKS_xodr_sample_offset_openmsl_cb_xodr_QCReport.txt", - "@type": "xsd:anyURI" - }, - "manifest:mimeType": { - "@value": "text/plain", - "@type": "xsd:string" - }, - "manifest:filename": { - "@value": "Testfeld_Niedersachsen_ALKS_xodr_sample_offset_openmsl_cb_xodr_QCReport.txt", - "@type": "xsd:string" - } - } - } - ], - "manifest:hasReferencedArtifacts": [] -} diff --git a/asset/media/Testfeld_Niedersachsen_ALKS_xodr_sample_offset_impression-01.png b/asset/media/Testfeld_Niedersachsen_ALKS_xodr_sample_offset_impression-01.png deleted file mode 100644 index 6734c13..0000000 Binary files a/asset/media/Testfeld_Niedersachsen_ALKS_xodr_sample_offset_impression-01.png and /dev/null differ diff --git a/asset/media/Testfeld_Niedersachsen_ALKS_xodr_sample_offset_impression-02.png b/asset/media/Testfeld_Niedersachsen_ALKS_xodr_sample_offset_impression-02.png deleted file mode 100644 index 974ad26..0000000 Binary files a/asset/media/Testfeld_Niedersachsen_ALKS_xodr_sample_offset_impression-02.png and /dev/null differ diff --git a/asset/media/Testfeld_Niedersachsen_ALKS_xodr_sample_offset_impression-03.png b/asset/media/Testfeld_Niedersachsen_ALKS_xodr_sample_offset_impression-03.png deleted file mode 100644 index 8f2d1f0..0000000 Binary files a/asset/media/Testfeld_Niedersachsen_ALKS_xodr_sample_offset_impression-03.png and /dev/null differ diff --git a/asset/media/bbox.geojson b/asset/media/bbox.geojson deleted file mode 100644 index a8bb90f..0000000 --- a/asset/media/bbox.geojson +++ /dev/null @@ -1,15 +0,0 @@ - - - - - Box - - - - 10.720741008237813,52.29672226262295,0.0 10.730432209669724,52.29672226262295,0.0 10.730432209669724,52.31580272353997,0.0 10.720741008237813,52.31580272353997,0.0 10.720741008237813,52.29672226262295,0.0 - - - - - - diff --git a/asset/media/roadNetwork.geojson b/asset/media/roadNetwork.geojson deleted file mode 100644 index 3c0d5e4..0000000 --- a/asset/media/roadNetwork.geojson +++ /dev/null @@ -1,83 +0,0 @@ - - - - - Line - - 10.729392062123965,52.31331519276468,0.0 10.729380017311751,52.31328752933886,0.0 10.729366288346831,52.31325600646671,0.0 10.729354239082653,52.31322834377077,0.0 - - - - Line - - 10.721592796080888,52.29835153941007,0.0 10.721576943144903,52.29832461586111,0.0 10.721558877798465,52.29829393563797,0.0 10.721543022404267,52.29826701264558,0.0 - - - - Line - - 10.730432209669724,52.31580272353997,0.0 10.730300313180642,52.315474895087206,0.0 10.730102047799054,52.31498885800144,0.0 10.729815066023443,52.31429413875,0.0 10.729657858057884,52.31392760155802,0.0 10.72956754534271,52.313719180786606,0.0 10.729555554532416,52.31369150853186,0.0 10.729541884267546,52.313659976072216,0.0 10.729529881420643,52.3136323057804,0.0 10.72948969026634,52.31353973177404,0.0 10.72944946896068,52.3134471625291,0.0 10.729409213101633,52.313354598811365,0.0 10.729404626805191,52.31334405950779,0.0 10.729399409961717,52.31333207310991,0.0 10.729393804188796,52.31331919463202,0.0 10.72939322467532,52.313317863365484,0.0 10.72939264390358,52.31331652921312,0.0 10.729392062126934,52.31331519276279,0.0 - - - - Line - - 10.721543016326857,52.29826701398924,0.0 10.72153437351238,52.298254062674076,0.0 10.721503133996393,52.298216437016485,0.0 10.721455072429707,52.29816217999614,0.0 10.721413961235479,52.298121630504085,0.0 10.72139619022575,52.29810531542943,0.0 - - - - Line - - 10.724322498892288,52.30296626188741,0.0 10.7243118757982,52.30294671266424,0.0 10.724299755369563,52.30292443871944,0.0 10.724289113203454,52.3029048933948,0.0 - - - - Line - - 10.721645064086497,52.29824439898239,0.0 10.721620891456215,52.29820335262613,0.0 10.721560642095621,52.29810020712704,0.0 10.7214679309667,52.29794053688282,0.0 10.721343389784968,52.29773268645087,0.0 10.721103530762258,52.29732817404877,0.0 10.720895753628373,52.296980274918916,0.0 10.720741008237813,52.29672226262295,0.0 - - - - Line - - 10.725231771921404,52.30506565772071,0.0 10.72521163570346,52.30502681009113,0.0 10.725146106124285,52.30490078463245,0.0 10.725035043775742,52.30468760838238,0.0 10.724918885067542,52.30446494538665,0.0 10.72482677690564,52.30429189132215,0.0 10.72474606352371,52.30413412613032,0.0 10.72464267418671,52.30393569940782,0.0 10.72453249442277,52.3037049299096,0.0 10.724439116161319,52.30349201688943,0.0 10.724365817105724,52.30331502955027,0.0 10.724304009321429,52.30317138330754,0.0 10.724253249077904,52.30306214060519,0.0 10.724228163519792,52.303006455842706,0.0 10.724219001514408,52.30298738285871,0.0 - - - - Line - - 10.724289104576439,52.3029048951677,0.0 10.72427428187419,52.30287774381136,0.0 10.72425738211987,52.30284680571171,0.0 10.72424254521874,52.302819657274114,0.0 10.724002777407575,52.30238225924271,0.0 10.723601113085914,52.30165657309744,0.0 10.72294615121872,52.30049555193061,0.0 10.722367969018617,52.29948468411796,0.0 10.721948685890565,52.29876276018376,0.0 10.721781349023873,52.29847643101337,0.0 10.721765583362298,52.298449480330184,0.0 10.721747614035575,52.29841876992653,0.0 10.721731844300345,52.298391820143415,0.0 10.72171955837542,52.29837085263804,0.0 10.72170724600407,52.298349890965824,0.0 10.721694922002492,52.298328931855856,0.0 - - - - Line - - 10.729250728290188,52.313245287389826,0.0 10.729244265416854,52.313232498413605,0.0 10.729206845027798,52.31316310750479,0.0 10.729143926741289,52.31305027315531,0.0 10.729055952518829,52.312895791579315,0.0 10.72894645845523,52.312699946865365,0.0 10.728816913231244,52.31244834494677,0.0 10.728692393390036,52.31218319334149,0.0 10.72859069850679,52.31196079366692,0.0 10.728537213531787,52.3118431682112,0.0 10.728519317928582,52.311803723106905,0.0 - - - - Line - - 10.721694913034899,52.29832893383668,0.0 10.721679041387606,52.29830200655466,0.0 10.721660944275555,52.29827132437312,0.0 10.72164506181834,52.29824439948579,0.0 - - - - Line - - 10.724218528924402,52.302987471636165,0.0 10.724207901860687,52.30296795838302,0.0 10.724195761714073,52.30294572853145,0.0 10.72418510343353,52.30292622163793,0.0 - - - - Line - - 10.72935423693615,52.31322834412389,0.0 10.729149844157257,52.31276095691232,0.0 10.72881370773164,52.31200190329089,0.0 10.728375558804625,52.31103630863929,0.0 10.728034299569321,52.31030143686608,0.0 10.727707085204928,52.30960774220158,0.0 10.727373308866692,52.308912138482306,0.0 10.727037473006558,52.308219974344,0.0 10.726717426556437,52.30757184578446,0.0 10.726380782136342,52.30689544739947,0.0 10.726005716329341,52.30615424610893,0.0 10.725519217037524,52.30521150380207,0.0 10.725055852021761,52.3043302910163,0.0 10.72468626516007,52.30363832348955,0.0 10.724481654086741,52.30326077837702,0.0 10.724372948859237,52.30305945436007,0.0 10.724322590460279,52.302966243267484,0.0 - - - - Line - - 10.729288528875838,52.31333212217113,0.0 10.72927649088173,52.31330446331993,0.0 10.72926277287951,52.313272945149095,0.0 10.72925073298638,52.313245286616315,0.0 - - - - diff --git a/asset/metadata/hdmap_instance.json b/asset/metadata/hdmap_instance.json deleted file mode 100644 index 0f8d9a4..0000000 --- a/asset/metadata/hdmap_instance.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "@context": { - "hdmap": "https://ontologies.envited-x.net/hdmap/v4/ontology#", - "envited-x": "https://ontologies.envited-x.net/envited-x/v2/ontology#", - "georeference": "https://ontologies.envited-x.net/georeference/v3/ontology#", - "manifest": "https://ontologies.envited-x.net/manifest/v4/ontology#", - "sh": "http://www.w3.org/ns/shacl#", - "gx": "https://registry.lab.gaia-x.eu/development/api/trusted-shape-registry/v1/shapes/jsonld/trustframework#", - "xsd": "http://www.w3.org/2001/XMLSchema#", - "skos": "http://www.w3.org/2004/02/skos/core#" - }, - "@id": "did:web:registry.gaia-x.eu:HdMap:DjHgK5ErTBow1Ya3J05tW9l12skGWgZn6kA9", - "@type": "hdmap:HdMap", - "hdmap:hasDataResource": { - "@type": "envited-x:DataResource", - "gx:name": { - "@value": "Testfeld Niedersachsen ALKS xodr sample offset", - "@type": "xsd:string" - }, - "gx:description": { - "@value": "Simple hdmap example file on the Testfeld Niedersachsen suitable for ALKS scenarios", - "@type": "xsd:string" - } - }, - "hdmap:hasDataResourceExtension": { - "@type": "hdmap:DataResourceExtension", - "hdmap:hasFormat": { - "@type": "hdmap:Format", - "hdmap:formatType": "ASAM OpenDRIVE", - "hdmap:version": { - "@value": "1.6", - "@type": "xsd:string" - } - }, - "hdmap:hasContent": { - "@type": "hdmap:Content", - "hdmap:roadTypes": [ - "motorway" - ], - "hdmap:laneTypes": [ - "exit", - "entry", - "none", - "shoulder", - "driving", - "restricted", - "border", - "stop" - ], - "hdmap:levelOfDetail": "car", - "hdmap:trafficDirection": "right-hand" - }, - "hdmap:hasQuantity": { - "@type": "hdmap:Quantity", - "hdmap:length": { - "@value": "2.68", - "@type": "xsd:float" - }, - "hdmap:elevationRange": { - "@value": "5.6", - "@type": "xsd:float" - }, - "hdmap:numberIntersections": { - "@value": "3", - "@type": "xsd:unsignedInt" - }, - "hdmap:numberTrafficLights": { - "@value": "0", - "@type": "xsd:unsignedInt" - }, - "hdmap:numberTrafficSigns": { - "@value": "0", - "@type": "xsd:unsignedInt" - }, - "hdmap:numberObjects": { - "@value": "0", - "@type": "xsd:unsignedInt" - }, - "hdmap:numberOutlines": { - "@value": "0", - "@type": "xsd:unsignedInt" - }, - "hdmap:speedLimit": { - "@type": "hdmap:Range2D", - "hdmap:min": { - "@value": "50", - "@type": "xsd:float" - }, - "hdmap:max": { - "@value": "250", - "@type": "xsd:float" - } - }, - "hdmap:rangeOfModeling": { - "@value": "0", - "@type": "xsd:float" - } - }, - "hdmap:hasQuality": { - "@type": "hdmap:Quality", - "hdmap:precision": { - "@value": "0.01", - "@type": "xsd:float" - }, - "hdmap:accuracyLaneModel2d": { - "@value": "0.1", - "@type": "xsd:float" - }, - "hdmap:accuracyLaneModelHeight": { - "@value": "0.1", - "@type": "xsd:float" - }, - "hdmap:accuracySignals": { - "@value": "0", - "@type": "xsd:float" - }, - "hdmap:accuracyObjects": { - "@value": "0", - "@type": "xsd:float" - } - }, - "hdmap:hasDataSource": { - "@type": "hdmap:DataSource", - "hdmap:usedDataSources": { - "@value": "laserscanner", - "@type": "xsd:string" - }, - "hdmap:measurementSystem": { - "@value": "3DMS system", - "@type": "xsd:string" - } - }, - "hdmap:hasGeoreference": { - "@type": "georeference:Georeference", - "georeference:hasProjectLocation": { - "@type": "georeference:ProjectLocation", - "georeference:state": { - "@value": "DE-NI", - "@type": "xsd:string" - }, - "georeference:city": { - "@value": "Koenigslutter am Elm", - "@type": "xsd:string" - }, - "georeference:region": { - "@value": "Landkreis Helmstedt", - "@type": "xsd:string" - }, - "georeference:country": { - "@value": "DE", - "@type": "xsd:string" - }, - "georeference:hasBoundingBox": { - "@type": "georeference:BoundingBox", - "georeference:xMin": { - "@value": "10.720740862799195", - "@type": "xsd:float" - }, - "georeference:yMin": { - "@value": "52.29672229543727", - "@type": "xsd:float" - }, - "georeference:xMax": { - "@value": "10.730432209669724", - "@type": "xsd:float" - }, - "georeference:yMax": { - "@value": "52.31580272353997", - "@type": "xsd:float" - } - } - }, - "georeference:hasGeodeticReferenceSystem": { - "@type": "georeference:GeodeticReferenceSystem", - "georeference:hasOrigin": { - "@type": "georeference:LatLonCoordinate", - "georeference:lat": { - "@value": "52.275329463992996", - "@type": "xsd:float" - }, - "georeference:lon": { - "@value": "10.685571633942278", - "@type": "xsd:float" - } - }, - "georeference:coordinateSystemName": { - "@value": "tmerc", - "@type": "xsd:string" - } - } - } - }, - "hdmap:hasManifest": { - "@type": "manifest:Link", - "manifest:iri": { - "@id": "did:web:registry.gaia-x.eu:Manifest:ZNh9Z-tHQpkpxJhNobhUVmauYxrfTAZdQy9L" - }, - "skos:note": { - "@value": "Ensure that 'manifest_reference.json' contains all required categories: simulationData, documentation, metadata, media.", - "@type": "xsd:string" - }, - "sh:conformsTo": [ - { - "@id": "https://github.com/GAIA-X4PLC-AAD/ontology-management-base/tree/main/envited-x/" - }, - { - "@id": "https://github.com/GAIA-X4PLC-AAD/ontology-management-base/tree/main/manifest/" - } - ], - "manifest:hasAccessRole": { - "@type": "manifest:AccessRole", - "@id": "envited-x:isPublic" - }, - "manifest:hasCategory": { - "@type": "manifest:Category", - "@id": "envited-x:isManifest" - }, - "manifest:hasFileMetadata": { - "@type": "manifest:FileMetadata", - "manifest:filePath": { - "@value": "./manifest_reference.json", - "@type": "xsd:anyURI" - }, - "manifest:mimeType": { - "@value": "application/ld+json", - "@type": "xsd:string" - } - } - } -} diff --git a/asset/simulation-data/Testfeld_Niedersachsen_ALKS_xodr_sample_offset.bjson b/asset/simulation-data/Testfeld_Niedersachsen_ALKS_xodr_sample_offset.bjson deleted file mode 100644 index fbc8d5d..0000000 Binary files a/asset/simulation-data/Testfeld_Niedersachsen_ALKS_xodr_sample_offset.bjson and /dev/null differ diff --git a/asset/simulation-data/Testfeld_Niedersachsen_ALKS_xodr_sample_offset.xodr b/asset/simulation-data/Testfeld_Niedersachsen_ALKS_xodr_sample_offset.xodr deleted file mode 100644 index bfdfe48..0000000 --- a/asset/simulation-data/Testfeld_Niedersachsen_ALKS_xodr_sample_offset.xodr +++ /dev/null @@ -1,8617 +0,0 @@ - - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -