Русское издание для чтения. Нормативным источником остаётся оригинал на английском, сверенный с ревизией
61e75e9aa9a8719dfb480bf1f5226553b3a21d70. Перевод не вводит новую редакцию спецификации.
skosovsky/okf-v0.2Этот каталог содержит исполняемый контракт инструментария для версии проекции 0.2. Он не является онтологией исходной спецификации OKF. Машиночитаемые закрытые классы определяют каждый допустимый предикат с явной минимальной и максимальной кратностью, видом значения IRI или литерала и типом данных. Правила идентификации, коллекций, устранения дубликатов и соответствия JSON-LD/N-Triples также зафиксированы в v0.2.json и проверяются тестами пакета.
IRI концептов состоит из local:bundle: и идентификатора концепта с экранированием для пути URL. Синтетические узлы используют зарезервированное пространство имён urn:skosovsky:okf:graph:v0.2:. Их компоненты представляются в base64url без заполнения, поэтому синтетические идентификаторы однозначны и не могут совпасть ни с IRI концептов, ни друг с другом из-за неоднозначности разделителей.
Нулевые значения не создают предикаты коллекций. JSON-LD сворачивает единственное значение в скаляр или объект, а несколько значений представляет массивом. N-Triples выводит по одной тройке на значение. Узлы с одинаковой синтетической идентичностью ресурса объединяются; одинаковые значения свойств выводятся один раз.
В корне документа JSON-LD находятся только @context и @graph. Метаданные проекции представлены обычным узлом Projection внутри @graph, поэтому JSON-LD и N-Triples описывают один и тот же граф RDF по умолчанию.
Каждый модуль вывода предоставляет Render<Format>Context и Render<Format>WithOptionsContext. Отмена проверяется при подтверждении версии, обходе проекции, стабильном упорядочивании, экранировании и выводе порциями. Исторические методы делегируют вызов с context.Background() и сохраняют точный побайтовый контракт. Ошибка записи или неполная запись, уже замеченная модулем вывода, имеет приоритет над отменой, замеченной в ходе той же записи. JSON-LD кодируется детерминированно в поток, без построения единого монолитного буфера вывода.
Даты и значения даты со временем получают типы XSD только тогда, когда bundle сообщает о них как о корректных типизированных значениях. Модули вывода графа не разбирают исходный текст дат. YAML-поле relations выводится в виде наблюдений ToolkitExtensionRelation, включая корректные, но неразрешённые цели со значением targetExists=false.
stalenessAsOf и stale представляют сведения, выведенные из корректного stale_after, только если вызывающая сторона явно передала Options.AsOf. Без него устаревание не вычисляется, а модуль вывода никогда не использует текущее время системы. Если объявление отсутствует или некорректно, эти предикаты не выводятся. Для источника происхождения требуется полное корректное наблюдение источника с ресурсом. Общее окно использования и окна отдельных источников выводятся только при корректности всего выбранного окна.
AttestedComputationContract выводится только для документа с точным значением type: Attested Computation. Его обязательное поле computationMode сохраняет состояние данных, определённое набором документов: inline, file, absent, ambiguous или malformed.
Параметры вычисления, контракты исполнителя и подтверждающей стороны выводятся только из полных корректных наблюдений набора. В частности, отсутствие или некорректность логического required никогда не превращается в выдуманное false.
Атрибуция утверждений использует общую нормализацию меток ссылок CommonMark. Каждый ProvenanceSource сохраняет исходный sourceID; ClaimAttribution.sourceID содержит нормализованную идентичность. Совпадение нормализованных меток приводит к детерминированному соединению «многие ко многим»: attributedSource содержит каждый корректный спроецированный источник с этой нормализованной идентичностью, а не первое совпадение, зависящее от порядка.
Каждый концепт имеет effectiveStatus. Отсутствующее объявление даёт stable; корректное объявление даёт своё значение открытой строки; присутствующее некорректное объявление даёт специальное значение графа unresolved, при этом исходное отображаемое значение остаётся доступно как declaredStatus.
Тесты пакета используют стандартный процессор github.com/piprate/json-gold/ld для преобразования выводимого JSON-LD в RDF, отклонения расхождений именованных графов и точного сравнения семантического множества троек графа по умолчанию с N-Triples. Зафиксированный эталон RDF для приложения A независимо от обоих модулей вывода закрепляет полную каноническую проекцию.