OMI-SPEC-330 — Контейнерна архитектура
Статус
Чернова
Версия: 0.1.0
Старият идентификатор: OMI-SPEC-012
Зависи от: OMI-SPEC-320 (формат на файла)
Цел
Архитектурата „Container“ определя преносимата структура на пакета, използвана за обмен и съхранение на ръкопис от типа „OMI“, заедно с неговите метаданни, история, анотации, цитати, ресурси, профили и разширения.
Контейнерът допълва спецификацията „File Format“: OMI-SPEC-320 определя логическото представяне на ръкописа, докато настоящата спецификация определя как свързаните файлове се обединяват в един пакет.
Препоръчително разположение на контейнерите
Следната структура на директориите е настоящата препоръчителна организация. Тя остава временна, докато тази спецификация е в етап „Проект“.
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/
Принципи на пакетирането
Контейнерът на „OMI“ трябва да бъде:
- самоописателен;
- независима от платформата;
- може да се преглежда със стандартни инструменти за работа с архиви;
- подходящ за валидиране;
- подходящ за дългосрочно съхранение;
- способен да запазва неизвестни разширения;
- независимо от конкретен редактор или издателска система.
META-INF
Директорията „META-INF“ съдържа информация за управление на ниво пакети.
manifest.json
Манифестът определя елементите на пакета, техните типове медии, логическите им роли, версиите и опционалните зависимости.
mimetype
Файлът „mimetype“ определя типа на носителя на пакета. Точната му стойност и изискванията за разположението му ще бъдат определени преди достигането на статуса „Кандидат за преглед“.
checksums.json
Контролните суми позволяват на системите да откриват случайно променяне или повреждане на данните.
signatures.json
Цифровите подписи са по избор в проекта за архитектура. Бъдещ профил за целостност ще определи алгоритмите за подписване, канонизацията, доверието и изискванията за проверка.
Елементи на ръкописа
Директорията „manuscript“ съдържа основните структурирани представяния:
document.json— структура и съдържание на ръкописа;metadata.json— описателни, административни и консервационни метаданни;history.json— версия и история на промените;review.json— прегледайте обектите, включени в пакета.
Даден профил за публикуване или съхранение може да ограничава кои компоненти са разрешени или задължителни.
Файлове за взаимоотношенията
Пакетът може да съхранява колекциите от връзки поотделно:
annotations.json;citations.json;anchors.json;provenance.json.
Разделянето на тези колекции позволява независима обработка, като същевременно се запазват стабилни идентификатори между тях.
Медии и ресурси
Двоичните файлове и ресурсите, създадени от външни автори, трябва да се поместват в media.
Реализациите трябва да предотвратяват опасни пътища, объркване с изпълними файлове, обхождане на архиви и неконтролирано разрешаване на отдалечени ресурси.
Всеки пакетиран ресурс трябва да бъде посочен чрез запис в манифеста и контролна сума.
Профили и плъгини
Директорията „profiles“ може да съдържа декларирани профили за публикуване, дисциплина, валидиране или съхранение.
Директорията „plugins“ може да съдържа данни за разширенията, необходими за интерпретирането на обектите, дефинирани от плъгините. Включването на данни за разширенията в пакета не означава, че всеки потребител трябва да изпълнява кода на плъгина.
Един съобразен с изискванията процесор за запазване трябва да запазва ресурсите с неизвестни разширения, когато това може да се направи безопасно.
Компресиране и сериализация
Форматът на физическия архив, методът на компресиране, подреждането на записите, кодирането на имената на файловете и каноничното представяне в байтове ще бъдат определени, преди настоящата спецификация да достигне етапа „Кандидат за внедряване“.
Контейнерът не трябва да зависи от синтаксиса на пътеките, специфичен за дадена операционна система.
Валидиране
Проверката на контейнерите трябва да включва:
- необходимите контролни файлове;
- явна пълнота;
- уникални и безопасни маршрути;
- целостта на контролната сума;
- декларирани типове медии;
- наличие на посочения файл;
- съгласуваност на идентификаторите;
- неподдържани или неизвестни разширения;
- максимални ограничения за ресурсите и разширяването.
Съображения, свързани със сигурността
Реализациите трябва да третират контейнерите като недостоверни входни данни.
Процесорите трябва да се защитават срещу:
- обхождане на пътя;
- архивни бомби;
- дублирани или неясни пътища;
- зловредно активно съдържание;
- небезопасни символни връзки;
- подвеждащи медийни фигури;
- фалшифициране на подписи;
- неограничена декомпресия или синтаксичен анализ.
Отварянето на контейнер не трябва автоматично да води до изпълнение на кода, съдържащ се в него.
Хронология на промените
- 0.1.0 — Прехвърлено от временния адрес
OMI-SPEC-012към основния адресOMI-SPEC-330; поправена е неправилната структура на Markdown и са разширени първоначалните изисквания към пакетите.
Обобщение
Архитектурата на контейнерите „OMI“ обединява семантичен манускрипт и свързаните с него ресурси в преносима, подлежаща на проверка и подходяща за съхранение единица.
Той определя структурата и целостта на ниво пакет, като оставя семантиката на ръкописа на формат на файловете „OMI“ и свързаните с него спецификации на модела.