December 13th, 2010

flow

Форматы данных ISO 15926

Часто возникает путаница в вопросах, связанных со стандартом ISO 15926:

1. Что именно, и в каких машиночитаемых форматах данных специфицируется в различных частях стандарта.

2. Какие следует использовать форматы для описания иной информации по стандарту ISO 15926, будь то локальные онтологии или каталоги.

3. Как учесть их разнообразие в программных продуктах.

Разберёмся по порядку.

Прошлое.

Следуя традициям ISO/TC184/SC4 каждый следующий стандарт должен опираться на уже стандартизированные ранее решения. Так произошло с ISO 15926 по отношению к ISO 10303. В частности, из ISO 10303 был унаследован язык описаний EXPRESS. Именно на нём было осуществлено формальное описание типов в части второй ISO 15926. С этим описанием можно ознакомиться **здесь**. Присутствуют иерархия типов и указание типов ролей, имена указываются в нижнем регистре с подчёркиваниями, пример: class_of_class_of_individual. Однако, позже EXPRESS сочли менее подходящим для онтологических задач, что связано как с ограниченными возможностями языка, так и с недостатком инструментальных средств. Стандарт ISO 15926 стал разворачиваться в сторону OWL. Даже в "вечно доделывающейся" части 3 сейчас приводятся примеры на EXPRESS и примеры на OWL, параллельно. По факту, поддержка EXPRESS уже не требуется для работы с описаниями стандарта ISO 15926.

Настоящее.

Для возможности работы с распространённым онтологическим инструментарием (в частности, Protege) была выпущена OWL версия описания части 2, с использованием диалекта OWL-DL, за ней последовало описание части 4, а далее и реализация стандартной RDL на базе OWL формата. Список файлов частей 2 и 4 также отдельно указан на https://www.posccaesar.org/wiki/ISO15926inOWL

http://rds.posccaesar.org/2008/02/OWL/ISO-15926-2_2003
Описание иерархии типов и ролей части 2. Этот файл необходимо загружать в систему с поддержкой OWL-DL или распознавать в своё локальное представление во всех тех случаях, когда в программном продукте требуется поддержка ISO 15926. Содержание почти совпадает с описанием в EXPRESS, но содержит отличия, специфичные именно для использования OWL в качестве контейнера. В тои числе, используется иной способ задания имён (CamelCase) и префикс has для ролей, пример: ClassOfClassOfIndividual и hasIndividualDimension. Более подробно: https://www.posccaesar.org/wiki/ISO15926inOWLtranslateEXPRESStoOWL

http://rds.posccaesar.org/2008/07/OWL/ISO-15926-2_2003_annotations
Дополнительный файл, содержит человекочитаемые описания типов части 2 (в виде definition, note и example), взятые напрямую из текста стандарта. Полезен как подсказка пользователю.

http://rds.posccaesar.org/2008/07/OWL/ISO-15926-2_2003_entityMembership
http://rds.posccaesar.org/2008/07/OWL/ISO-15926-2_2003_entityMembershipCandidates
Дополнения с описанием ограничений на entity membership (отношение Classification), что именно связывает *Something* и ClassOf*Something*. Эта информация есть только в OWL и может быть использована как в редакторах, так и в отдельных верификаторах. Более подробно: https://www.posccaesar.org/wiki/ISO15926inOWLPart2EntityMembership

http://rds.posccaesar.org/2008/09/OWL/ISO-15926-2_2003_inverseRoles
http://rds.posccaesar.org/2008/09/OWL/ISO-15926-2_2003_chainedRoles
Некий дополнительный сахар для ручных экспериментов с OWL-DL инструментарием. Новой информации не содержат, в применении не замечены.

http://rds.posccaesar.org/2008/02/OWL/ISO-15926-6_2008_Draft
Заглушка с перечислением пяти аннотаций части 6 нестандартным образом. На практике бесполезна, но на неё ссылается OWL-версия части 4 для обеспечения целостности. Следует сразу отметить разницу кодирования имён свойств: part6:designation в заглушке (и, соответственно, OWL части 4) vs. rdl:hasDesignation в RDL.

http://rds.posccaesar.org/2009/08/OWL/ISO-15926-4_2007
Стандартное OWL представление части 4. Следует отметить:

1. Способ работы с аннотациями части 6 в этом файле отличается от принятого сейчас в RDL, как уже упоминалось выше.

2. Также, в описании части 4 продублированы фрагменты части 2. Одновременно присутствуют "типы части 2 из стандартного OWL части 2" и "типы части 2 из OWL части 4". Вероятно, это делалось под особенности/глюки конкретного инструментария, но на деле может приводить к проблемам софта или неясности для пользователся, поэтому требует отдельного учёта при загрузке части 4.

http://rds.posccaesar.org/2009/08/OWL/ISO-15926-4_2007_NonReifiedRelations
Альтернативное представление части 4. Использованию не подлежит, так как:

1. Может быть автоматически получено из предыдущего, но не наоборот.

2. Приводит к значительной потере информации. В том числе, вместо part6:definition, part6:notes, etc появляются машинно-неразличимые rdfs:comment.

3. Ещё более несовместимо с RDL.

http://rds.posccaesar.org/downloads/PCA-RDL.owl.zip (https://www.posccaesar.org/wiki/Rds)
Здесь представлена стандартная библиотека RDL. Постоянно обновляется. Представляет собой наиболее актуальный пример информации, закодированной по стандарту ISO 15926. При этом:

1. Использует стандартное описание (см. выше) и пространство имён part2 для типов части 2. Пример: part2:ClassOfInanimatedPhysicalObject.

2. Использует своё внутреннее пространство имён для аннотаций части 6. Пример: rdl:hasDefinition.

3. Таким образом, несовместима с пространствами имён и моделью именования как OWL части 4 (см. выше), так и более поздних описаний стандарта части 8 (об этом далее).

Будущее.

Часть 7 (ISO/TS 15926-7:2010) добавляет в стандарт шаблоны (templates) и язык логики первого порядка (FOL), с применением синтаксиса инструментов Prover9 и Mace4, для работы с этими шаблонами. Именование типов (DimensionOfShape) и ролей (hasShape) стилистически совпадает с принятым в OWL. Помимо текста стандарта рекомендуется прочитать статью https://www.posccaesar.org/wiki/IdsAdiTemplateAxiomatizationTools Но следует учесть, что часть 7 не вводит нового OWL-кодирования, и даже примеры на XML и OWL в статье носят характер иллюстративных набросков, на деле вопросом совмещения OWL и шаблонов занимается только часть 8 стандарта.

По адресу https://www.posccaesar.org/wiki/ISO15926inFOL приводятся описания ISO 15926 в FOL.

http://rds.posccaesar.org/2009/06/P9/ISO-15926-2_2003.txt
FOL версия описания типов части 2. Содержит часть информации из OWL версии и может быть получена из неё автоматически. Пригодна для экспериментов с Prover9, а также рекомендуется к прочтению для понимания связи между OWL и FOL. Но для работы с ISO 15926 не подходит, слишком многое потеряно.

http://rds.posccaesar.org/2009/06/P9/ISO-15926-7_2009_intitialTemplateSet.txt (можно не обращать внимания на опечатку "intitial", уж так выложили на сайте)
Аксиомы шаблонов в FOL. Фактически - макросы, так как для описания этих аксиом по стандарту используется очень ограниченное подмножество FOL. В любом инструментарии с поддержкой поднятия/опускания шаблонов придётся загружать этот файл, так как к части 8 прилагается машиночитаемое описание лишь сигнатур шаблонов, а все аксиомы благополучно забыты.

http://rds.posccaesar.org/2009/06/P9/ISO-15926-7_2009_intitialTemplateSet_ISO-15926-2_2003.txt
Копия содержимого двух вышеупомянутых файлов.

Далее появляется долгожданная часть 8 (ISO/TS 15926-8:2010) - описание методов кодирования информации в OWL. Её задача - навести порядок в области машинных представлений. Однако, бардака становится больше.

1. Пространство имён dm (приложение data-model.owl) ещё раз альтернативно задаёт типы части 2, и именно оно используется во всех остальных материалах части 8 вместо уже устоявшегося метода кодирования типов части 2 из http://rds.posccaesar.org/2008/02/OWL/ISO-15926-2_2003 (который применяется как в OWL части 4, так и в RDL). Ключевая разница - в dm нет ролей, часть 8 не работает с понятиями ниже уровня протошаблонов (proto-templates части 7). У dm:Classification отсутствуют роли, только у протошаблона p7tpl:Classification появляются роли hasClassified и hasClassifier.

2. Однако, в исходниках iRingTools есть запросы и заполнения ролей dm:hasClassified и dm:hasClassifier именно для dm:Classification, что идёт в разрез с частью 8. Статус такого применения не обозначен, и в частях/приложениях стандарта оно не встречается.

3. В очередной раз (Annex F) приводится свой альтернативный вариант именования метаданных части 6. Однако, не указывается даже пространство имён для него.

4. Поддерживается сохранение сигнатур шаблонов, но не поддерживается сохранение их аксиом - аксиомы предлагается хранить в неупорядоченных комментариях (rdfs:comment).

5. Пространство имён p7tpl (приложение templates.owl) содержит описания сигнатур всех стандартных шаблонов части 7, но аксиомы шаблонов потеряны (даже в комментариях их нет). Для поддержки поднятия/опускания template statements необходимо использовать внешнюю информацию из http://rds.posccaesar.org/2009/06/P9/ISO-15926-7_2009_intitialTemplateSet.txt

Обобщение.

1. У нас есть пара стандартных вариантов задания типов части 2 в OWL. Первый (part2:*) для работы через экземпляры отношений (часть 4, RDL и всё остальное, созданное до частей 7 и 8). Второй (dm:*) для работы через шаблоны. Однако, второй вариант только перечисляет типы, для нормальных проверок (включая entity membership) в любом случае понадобится информация из первого.

2. Есть минимум четыре способа задания метаданных (annotations:*, part6:*, rdl:*, а также "часть 6 в интерпретации части 8, с неопределённым пространством имён"). Автоматическая конверсия между ними невозможна (нет однозначного соответствия). Только пользовательскими скриптами, когда сам пользователь чётко знает, что может/должна значить в этом конкретном файле эта конкретная аннотация.

3. Есть три основных способа задания информации (исключая метаданные) об экземплярах типов части 2: использующийся при описании части 4, использующийся в сегодняшнем RDL и третий, предлагаемый в части 8. В программном обеспечении требуется раздельная поддержка всех трёх. Автоматическая конверсия между ними возможна, хотя может быть сложна (особенно вычислительно, если требуется опускание template statements). Но это чревато потерей метаданных (см. выше).

4. Часть 8 пока только вводит дополнительные проблемы. Так как не может выразить ни системы типов части 2 (отсутствуют абстрактные типы, entity membership, etc), ни системы шаблонов части 7 (отсутствуют аксиомы шаблонов), ни аннотаций части 6 (Annex F задаёт "общее направление" без чётко определённого пространства имён и списка аннотаций). Как (и в какие сроки) эти проблемы будут решаться, и каким будет "RDL завтрашнего дня на базе части 8" предположить сложно.

Выводы.

1. Продукт, работающий одновременно с разными данными стандарта ISO 15926 должен обладать очень открытой архитектурой. Загрузчики систем типов и загрузчики данных, верификаторы, визуальные представления - только "одни из", нет ничего основного. Актуальный код завтра может стать "поддержкой legacy".

2. Так как слишком многие use cases по загрузке и сохранению информации (и метаданных) не могут быть заранее учтены автоматическими решениями, то для широкого применения продукта требуется доступ пользователя к низкоуровневому OWL - включая поддержку пользовательских скриптов и запросов, а также отдельное визуальное представление.

3. Порог входа для работы с полным ISO 15926, включая части стандарта и все возможные форматы данных, метаданных, etc, является неоправданно высоким. Поэтому следует сразу учесть возможность разных версий/режимов работы продукта для "моделеров с чёрным поясом" (включая авторов стандарта) и для обычных пользователей в разных предметных областях, которых не волнуют особенности доступа к RDL, но которым важны поставляемые с продуктом готовые библиотеки.