# Manifest-Standard v0.1

> Die neun Pflichtfelder, die vier Schnittstellentypen, die vier Prüfstufen und die typischen Fehler.


Diese Zusammenfassung ist **nicht normativ**; Wortlaut und Details regelt allein die Standard-Quelle im Register-Repository (`registry/standard/README.md`). Version 0.1, Entwurf vom 15.08.2026, verbindlich erst nach Ratifikation durch die Standard-Kommission (Art. 13 Statuten).

## Pflichtfelder {#pflichtfelder}

| Feld | Form | Beispiel |
|---|---|---|
| `$schema` | datierte, unveränderliche Schema-URL | `https://ld.openhelvetia.swiss/ns/manifest/schema/2026-08-15/manifest.schema.json` |
| `@context` | genau ein String | `https://ld.openhelvetia.swiss/ns/manifest/v1` |
| `@id` | stabile HTTPS-URI; Dateiname = Slug | `https://ld.openhelvetia.swiss/registry/openhelvetia-fedlex-mcp` |
| `@type` | konstant | `Manifest` |
| `title` | Sprach-Map, ein String je Sprache (de, fr, it, rm, en) | `{"de": "…", "en": "…"}` |
| `publisher` | IRI | `https://ld.openhelvetia.swiss/org/openhelvetia` |
| `license` | IRI | `https://dcat-ap.ch/vocabulary/licenses/terms_open` |
| `interfaces` | Array typisierter Objekte; je Objekt Pflicht: `@type`, `endpoint`, `auth.authType` | `[{"@type": "McpInterface", "endpoint": "…", "auth": {"authType": "none"}}]` |
| `issued` | ISO-Datum | `2026-08-26` |

Optional und empfohlen: `description` und `keyword` (Sprach-Maps), `landingPage`, `conformsTo`, `legalBasis`, `exactMatch`, `modified`; je Schnittstelle `docs`, `conformsTo`, `tier` und `probe`. Unbekannte Schlüssel sind Validierungsfehler.

## Schnittstellentypen {#schnittstellentypen}

| Typ | Bedeutung | Übliche Probe |
|---|---|---|
| `McpInterface` | MCP-Server, direkt von KI-Systemen nutzbar | `mcp-discover` oder `mcp-initialize` |
| `SparqlInterface` | SPARQL-Endpunkt für Linked-Data-Abfragen | `sparql-ask` |
| `RestInterface` | REST-API; Dokumentation, z. B. OpenAPI, in `docs` | `http-get` oder `http-head` |
| `DownloadInterface` | Dumps und Datei-Distributionen | `http-head` |

`auth.authType`: `none` · `apikey` · `oauth2` · `other`. `tier` je Schnittstelle: `base` (zustandslos, günstig) · `semantic` · `generative`. Die Zuordnung Typ → Probe ist üblich, nicht vorgeschrieben; der Standard schliesst nur die Liste der Probe-Arten.

## So wird geprüft {#so-wird-geprueft}

1. **JSON-Schema.** Struktur und Pflichtfelder, `additionalProperties: false`. Selbst möglich mit jedem Validator für JSON Schema 2020-12.
2. **JSON-LD-Roundtrip.** Erzwingt die eine kanonische Form (Schlüsselreihenfolge, Sprachreihenfolge de/fr/it/rm/en, zwei Leerzeichen, LF). In `oh-validate`, Rust, offline.
3. **SHACL.** Gegen die versionierten Shapes; jede Shape-Regel hat einen Negativfall, der nachweislich anschlägt.
4. **Gesamtgraph.** Nach dem Merge: RDFC-1.0-Fingerabdruck und kritische Invarianten als SPARQL-Abfragen; jede Verletzung nennt ihre Knoten.

Alle vier Stufen laufen als Gate vor jeder Änderung am Register.

## Typische Fehler {#fehler}

- `"@context": [ … ]` — Arrays und Inline-Kontexte sind unzulässig; genau ein String
- `"title": "…"` — Titel ist eine Sprach-Map, kein String
- `"license": "CC BY 4.0"` — Lizenz ist eine IRI; bei 10 von 19 erprobten Quellen war sie maschinell nicht eindeutig
- `"licence": …` — unbekannter Schlüssel: Validierungsfehler, kein stilles Ignorieren
- Dateiname ≠ Slug der `@id` — Dateiname = Slug, registry-weit eindeutig

## Erprobung {#erprobung}

Der Standard ist gegen einen internen Testkorpus aus 19 realen Schweizer Datenquellen entwickelt und validiert. Der Korpus ist Erprobungsmaterial, kein Verzeichnisinhalt. Ein Befund daraus: Bei 10 der 19 Quellen ist die Lizenz maschinell nicht eindeutig auswertbar, der Grund für die Lizenz als Pflichtfeld mit IRI.

## Dateien {#dateien}

Kanonischer Daten-Host ist `https://ld.openhelvetia.swiss` (Spiegel `w3id.org/openhelvetia`). Im Repository: `registry/standard/README.md` (normative Quelle), `context/v1.jsonld`, `frame/v1.frame.jsonld`, `schema/manifest.schema.json`, `oh-validate/`. Öffentlich ausgeliefert, byte-identisch: `/ns/manifest/v1` und `/ns/manifest/schema/2026-08-15/manifest.schema.json`.

---

Quelle: docs/de/reference/manifest-standard.md
