OMI-SPEC-330 – Container-Architektur
Status
Entwurf
Version: 0.1.0
Alte Kennung: OMI-SPEC-012
Basiert auf: OMI-SPEC-320 (Dateiformat)
Zweck
Die Container-Architektur definiert die portable Paketstruktur, die zum Austausch und zur Aufbewahrung eines Manuskripts im Format „OMI“ zusammen mit dessen Metadaten, Historie, Anmerkungen, Zitaten, Assets, Profilen und Erweiterungen verwendet wird.
Der Container ergänzt die Spezifikation „File Format“: OMI-SPEC-320 definiert die logische Darstellung des Manuskripts, während diese Spezifikation festlegt, wie die zugehörigen Dateien zu einem Paket zusammengefasst werden.
Empfohlene Anordnung der Behälter
Die folgende Verzeichnisstruktur entspricht der derzeit empfohlenen Anordnung. Sie gilt vorläufig, solange sich diese Spezifikation im Entwurfsstatus befindet.
paper.omi
├── META-INF/
│ ├── manifest.json
│ ├── mimetype
│ ├── checksums.json
│ └── signatures.json
├── manuscript/
│ ├── document.json
│ ├── metadata.json
│ ├── history.json
│ └── review.json
├── annotations.json
├── citations.json
├── anchors.json
├── provenance.json
├── media/
│ ├── images/
│ ├── figures/
│ ├── assets/
│ └── datasets/
├── profiles/
└── plugins/
Grundsätze für die Verpackung
Ein „OMI“-Container sollte folgende Eigenschaften aufweisen:
- selbstbeschreibend;
- plattformunabhängig;
- mit gängigen Archivierungstools einsehbar;
- zur Validierung geeignet;
- für die Langzeitlagerung geeignet;
- in der Lage, unbekannte Erweiterungen beizubehalten;
- unabhängig von einem bestimmten Redakteur oder Veröffentlichungssystem.
META-INF
Das Verzeichnis „META-INF“ enthält Steuerungsinformationen auf Paketebene.
manifest.json
Das Manifest enthält Angaben zu den Paketelementen, deren Medientypen, logischen Rollen, Versionen und optionalen Abhängigkeiten.
mimetype
Die Datei „mimetype“ gibt den Medientyp des Pakets an. Der genaue Wert und die Anforderungen an die Platzierung werden vor Erreichen des Status „Review Candidate“ festgelegt.
checksums.json
Mithilfe von Prüfsummen können Implementierungen versehentliche Änderungen oder Beschädigungen erkennen.
signatures.json
Digitale Signaturen sind im Architekturentwurf optional. Ein künftiges Integritätsprofil wird Anforderungen an Signaturalgorithmen, Kanonisierung, Vertrauenswürdigkeit und Verifizierung festlegen.
Bestandteile eines Manuskripts
Im Verzeichnis „manuscript“ werden die wichtigsten strukturierten Darstellungen gespeichert:
document.json— Aufbau und Inhalt des Manuskripts;metadata.json— beschreibende, administrative und konservatorische Metadaten;history.json— Versions- und Änderungshistorie;review.json— Überprüfen Sie die im Paket enthaltenen Objekte.
Ein Veröffentlichungs- oder Archivierungsprofil kann festlegen, welche Komponenten zulässig oder erforderlich sind.
Beziehungsdateien
Das Paket kann Beziehungssammlungen separat speichern:
annotations.json;citations.json;anchors.json;provenance.json.
Die Trennung dieser Sammlungen ermöglicht eine unabhängige Verarbeitung, wobei stabile Identifikatoren zwischen ihnen erhalten bleiben.
Medien und Ressourcen
Binärdateien und von externen Autoren erstellte Ressourcen gehören unter media.
Implementierungen müssen unsichere Pfade, Verwechslungen mit ausführbaren Inhalten, das Durchsuchen von Archiven und die unkontrollierte Auflösung von Remote-Ressourcen verhindern.
Jedes gepackte Element sollte durch einen Manifest-Eintrag und eine Prüfsumme referenziert werden.
Profile und Plugins
Das Verzeichnis „profiles“ kann deklarierte Publikations-, Fachbereichs-, Validierungs- oder Langzeitarchivierungsprofile enthalten.
Das Verzeichnis „plugins“ enthält möglicherweise Erweiterungsdaten, die zur Interpretation von durch Plugins definierten Objekten erforderlich sind. Die Einbindung von Erweiterungsdaten bedeutet nicht, dass jeder Nutzer den Plugin-Code ausführen muss.
Ein konformer Konservierungsprozessor sollte Ressourcen mit unbekannter Erweiterung beibehalten, sofern dies ohne Risiko möglich ist.
Komprimierung und Serialisierung
Das physische Archivformat, das Komprimierungsverfahren, die Reihenfolge der Einträge, die Kodierung der Dateinamen und die kanonische Byte-Darstellung werden festgelegt, bevor diese Spezifikation den Status „Implementation Candidate“ erreicht.
Ein Container darf nicht von einer betriebssystemspezifischen Pfadsyntax abhängig sein.
Validierung
Die Container-Validierung sollte Folgendes umfassen:
- erforderliche Steuerdateien;
- offensichtliche Vollständigkeit;
- einzigartige und sichere Wege;
- Integrität der Prüfsumme;
- deklarierte Medientypen;
- Vorhandensein der referenzierten Datei;
- Konsistenz der Bezeichner;
- nicht unterstützte oder unbekannte Dateiendungen;
- Maximale Ressourcen- und Expansionsgrenzen.
Sicherheitsaspekte
Implementierungen müssen Container als nicht vertrauenswürdige Eingaben behandeln.
Prozessoren sollten sich gegen Folgendes schützen:
- Pfaddurchlauf;
- Archivbomben;
- doppelte oder mehrdeutige Pfade;
- bösartiger aktiver Inhalt;
- unsichere symbolische Links;
- irreführende Medienvertreter;
- Signaturfälschung;
- unbegrenzte Dekomprimierung oder Analyse.
Das Öffnen eines Containers darf nicht automatisch zur Ausführung von darin enthaltenem Code führen.
Änderungshistorie
- 0.1.0 — Migration von der vorläufigen URL
OMI-SPEC-012zur kanonischen URLOMI-SPEC-330; Korrektur der fehlerhaften Struktur unter Markdown und Erweiterung der ursprünglichen Paketvoraussetzungen.
Zusammenfassung
Die „OMI“-Containerarchitektur bündelt ein semantisches Manuskript und die dazugehörigen Ressourcen zu einer portablen, überprüfbaren und dauerhaft erhaltbaren Einheit.
Es definiert Struktur und Integrität auf Paketebene, während die Semantik des Manuskripts dem Dateiformat „OMI“ und den zugehörigen Modellspezifikationen überlassen bleibt.