====== Dokumentmetadaten ======
**B2Base · 1.0.0-draft.1 · Projektentwurf**
Dateien und Nachweise referenzieren, beschreiben und auf Integrität prüfen.
[[schemes:scheme|Bibliothek]] · [[schemes:process|Aufgaben, Dokumente und Übergaben]] · [[schemes:principles|Internationale Grundregeln]]
===== Direkt verwenden =====
[[b2schema>1.0.0-draft.1/process/document.schema.json|Austauschschema (JSON)]] · [[b2schema>1.0.0-draft.1/process/document.editor.schema.json|Schema für den Designer]] · [[b2schema>1.0.0-draft.1/process/document.examples.json|Beispieldaten]]
**Austauschschema:** vollständige Strukturprüfung mit JSON Schema 2020-12. **Designer-Fassung:** gleiche Datenfelder mit reduzierten Strukturregeln zur Feldübernahme. [[:guidelines#im_workflowdesigner_verwenden|Anleitung und Grenzen]]
===== Felder im Überblick =====
^ Feld ^ Typ ^ Pflicht im Modul ^ Bedeutung ^
| ''id'' | string | Ja | Dokumentkennung. |
| ''title'' | string | Ja | Lesbarer Titel. |
| ''fileName'' | string | Nein | Angezeigter Dateiname; kein freigegebener lokaler Dateipfad. |
| ''mediaType'' | string | Ja | IANA-Medientyp ohne Parameter; tatsächlichen Inhalt separat prüfen. |
| ''byteSize'' | integer | Nein | Dateigröße in Byte, nicht Textzeichen. |
| ''contentUri'' | string | Ja | Verweis auf den Inhalt; Berechtigungen und Abruf werden gesondert geregelt. |
| ''sha256'' | string | Nein | Optionaler SHA-256-Hash der tatsächlichen Dateibytes. |
| ''language'' | string | Nein | BCP-47-Sprachtag, etwa de, zh-Hant-TW, sr-Latn oder x-internal. Das Muster prüft nur die Grundform, nicht Registrierung oder alle BCP-47-Regeln. |
| ''createdAt'' | string | Nein | Erstellungszeitpunkt. |
| ''relatedParty'' | object | Nein | Verweis auf eine separat gespeicherte Person oder juristische Person; kein JSON-Schema-Verweis. |
| ''extensions'' | object | Nein | Vereinbarte Erweiterungen; Schlüssel als absolute URI des Herausgebers. Keine stillschweigende Änderung von Kernfeldern. |
Pflichtangaben gelten für das jeweilige Objekt, wenn dieses Modul verwendet wird. Zusätzliche Alternativen und Statusregeln stehen im Austauschschema. Optionale Felder weglassen, wenn sie unbekannt oder nicht anwendbar sind; ein leeres Pflichtfeld ist kein gültiger Ersatz.
===== International richtig einsetzen =====
* Inhalt und Beschreibung sind getrennt. Ein Link ersetzt keine Zugriffskontrolle und muss nicht öffentlich sein.
* Medientyp und Dateiname garantieren keinen sicheren Inhalt. Der Hash muss über die unveränderten Dateibytes berechnet werden.
* Der aktuelle Workspace transportiert Dateien in einem anderen Format. Ein Adapter muss Metadaten und Inhalt gezielt zuordnen.
===== Gültige Beispiele =====
Alle Beispiele sind synthetisch. Sie werden mit dem mitgelieferten Schema geprüft; daraus folgt keine fachliche Echtheit oder externe Erreichbarkeit.
==== Beispiel 1 ====
{
"id": "urn:example:document:42",
"title": "Antragsunterlagen",
"fileName": "申請.pdf",
"mediaType": "application/pdf",
"contentUri": "https://example.org/documents/42",
"language": "ja"
}
===== Umstellung aus dem bisherigen Wiki =====
Neuer Standard für Dokumentmetadaten; bestehende Dokumentdaten im Workspace werden dadurch nicht automatisch migriert.
[[schemes:migration|Änderungsübersicht und Migrationsregeln]]
===== Vollständiges Schema =====
Die Datei ist eigenständig: verwendete Bausteine sind unter ''$defs'' eingebettet, Referenzen bleiben lokal. ''$id'' ist die kanonische Kennung. Die Downloads oben verwenden den aktuellen Server; eine Veröffentlichung unter der kanonischen Domain ist damit nicht behauptet.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://b2base.eu/schemas/1.0.0-draft.1/process/document.schema.json",
"title": "Dokumentmetadaten",
"$comment": "B2Base 1.0.0-draft.1. Projektentwurf, kein durch ISO oder andere Normungsgremien verabschiedeter Standard.",
"type": "object",
"description": "Beschreibung eines separat gespeicherten Dokuments.",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "Dokumentkennung.",
"format": "uri"
},
"title": {
"type": "string",
"minLength": 1,
"description": "Lesbarer Titel."
},
"fileName": {
"type": "string",
"minLength": 1,
"description": "Angezeigter Dateiname; kein freigegebener lokaler Dateipfad."
},
"mediaType": {
"type": "string",
"minLength": 1,
"description": "IANA-Medientyp ohne Parameter; tatsächlichen Inhalt separat prüfen.",
"pattern": "^[A-Za-z0-9!#$&^_.+-]+/[A-Za-z0-9!#$&^_.+-]+$"
},
"byteSize": {
"type": "integer",
"description": "Dateigröße in Byte, nicht Textzeichen.",
"minimum": 0,
"maximum": 9007199254740991
},
"contentUri": {
"type": "string",
"minLength": 1,
"description": "Verweis auf den Inhalt; Berechtigungen und Abruf werden gesondert geregelt.",
"format": "uri"
},
"sha256": {
"type": "string",
"minLength": 1,
"description": "Optionaler SHA-256-Hash der tatsächlichen Dateibytes.",
"pattern": "^[a-f0-9]{64}$"
},
"language": {
"$ref": "#/$defs/LanguageTag"
},
"createdAt": {
"type": "string",
"minLength": 1,
"description": "Erstellungszeitpunkt.",
"format": "date-time"
},
"relatedParty": {
"$ref": "#/$defs/PartyRef"
},
"extensions": {
"type": "object",
"description": "Vereinbarte Erweiterungen; Schlüssel als absolute URI des Herausgebers. Keine stillschweigende Änderung von Kernfeldern.",
"properties": {},
"additionalProperties": true,
"propertyNames": {
"format": "uri"
}
}
},
"required": [
"id",
"title",
"mediaType",
"contentUri"
],
"additionalProperties": false,
"$defs": {
"LanguageTag": {
"type": "string",
"minLength": 1,
"description": "BCP-47-Sprachtag, etwa de, zh-Hant-TW, sr-Latn oder x-internal. Das Muster prüft nur die Grundform, nicht Registrierung oder alle BCP-47-Regeln.",
"pattern": "^[A-Za-z]{1,8}(-[A-Za-z0-9]{1,8})*$"
},
"PartyRef": {
"type": "object",
"description": "Verweis auf eine separat gespeicherte Person oder juristische Person; kein JSON-Schema-Verweis.",
"properties": {
"entityType": {
"type": "string",
"minLength": 1,
"description": "Art der referenzierten Einheit.",
"enum": [
"person",
"legalEntity"
]
},
"id": {
"type": "string",
"minLength": 1,
"description": "Stabile absolute URI oder URN des Datensatzes, nicht dessen Name.",
"format": "uri"
},
"name": {
"type": "string",
"minLength": 1,
"description": "Optionale Anzeige; nicht als Identitätsschlüssel verwenden."
}
},
"required": [
"entityType",
"id"
],
"additionalProperties": false
}
},
"examples": [
{
"id": "urn:example:document:42",
"title": "Antragsunterlagen",
"fileName": "申請.pdf",
"mediaType": "application/pdf",
"contentUri": "https://example.org/documents/42",
"language": "ja"
}
]
}
===== Quellen und Abgrenzung =====
* [[https://www.iana.org/assignments/media-types|IANA: Media Types]]
* [[https://www.rfc-editor.org/rfc/rfc3339.html|IETF RFC 3339: Datum und Zeitstempel]]
Quellen geprüft am 8. September 2026. Die B2Base-Felder und ihre Kombination sind ein eigener Entwurf. Code-Register, nationale Regeln, Echtheit, Zeitfolgen und Referenzziele benötigen die im jeweiligen Verfahren vereinbarten Zusatzprüfungen.
[[schemes:scheme|Zur Bibliothek]] · [[:guidelines|Integration]] · [[:faq|Häufige Fragen]]