Общую информацию по методам моделирования онтологий можно получить из книги Ontological Engineering от Gomez-Perez et al. Она есть на гигапедии.
Описание конкретных техник найти трудно, поэтому предлагается метод моделирования онтологии извлекать из описания перевода модели данных ISO 15926 в OWL. Результат этой работы представлен в 7 и 8 частях стандарта.
OWL-файлы можно взять здесь:
https://www.posccaesar.org/wiki/ISO15926inOWLТам же приведены некоторые важные детали моделирования на OWL.
Дополнительно, полезным является тьюториал (v 1.2) по работе с Protege:
http://owl.cs.manchester.ac.uk/tutorials/protegeowltutorial/ Модель данных в логике первого порядка приведена в приложении B 15926-7. Она представлена в виде набора аксиом, сгруппированных по своему назначению.
1. Universe axiom - одна аксиома, описывающая, что все является Thing.
2. Subtypes axioms
3. Abstract axioms
4. Disjoint axioms
5. Role axioms
6. Additional range restriction axioms
В настоящий момент решено (можно обсуждать) моделировать онтологию ISO 24744 независимо от 15926-2,4 и проводить их "склейку" уже после. Предполагается отразить аналогичные наборы аксиом для интересующей нас предметной области с помощью инструемнтов Protege.
1. Universe Axiom
В Protege задается по умолчанию, так как все создаваемые классы будут подклассами класса Thing.
2. Subtypes axioms. Описывают отношения специализации (specialization): Подкласс - Класс. С помощью этих аксиомы создается таксономия (иерархия классов).
Пример: Activity(x) -> PossibleIndividual(x), т.е. экземпляр Activity будет подтипом экземпляра PossibleIndividual.
Назначение этих конструкций, их представление в дескрипционной логике (DL) см. здесь:
https://www.posccaesar.org/wiki/ISO15926inOWLtranslateEXPRESStoOWL#SUBTYPEOFПредставление в логике первого порядка (FOL) см. в ISO 15926-7, B.2
В Protégé таксономия создается на вкладке Classes, с помощью кнопок Add Subclass или Add Sibling Class.
Эта работа уже проведена на основе текста стандарта ISO 24744. На рисунке ниже графическое представление (GraphViz Plug-In) созданной таксономии.
(можно увеличить дважды)
Описания классов будут внесены в Annotations из стандарта.
Остался вопрос с представлением Reference и Source, так как их положение в онтологии не очевидно. Возможно, их можно будет описать с помощью DataProperties, поэтому можно вернуться к этому после разбирательств с ними.
3. Abstract axioms. С помощью них определяются абстрактные классы, т.е. классы, которые не могут иметь прямых экземпляров.
Пример из модели данных 15926: Сущность Thing является абстрактным супертипом сущностей abstract_object и possible_individual. Это значит, что множество экземпляров Thing эквивалентно объединению множества экземпляров abstract_object и множества экземпляров possible_individual.
Описание поподробнее с представлением в DL см. здесь:
https://www.posccaesar.org/wiki/ISO15926inOWLtranslateEXPRESStoOWL#ABSTRACTFOL-представление см. в ISO 15926-7, B.3
OWL и, соответственно, Protege не поддерживает эту конструкцию напрямую. Однако, есть возможность представить основную семантику таких аксиом. В Protégé такая аксиома должна быть отражена путем добавления необходимого и достаточного критерия в окне описания класса (Classes - Description View). Добавлять Equivalent classes. Например, для класса Element можно добавить критерий EndeavourElement or MethodologyElement.
Стоит учесть, что так как OWL работает с Open World Assumption (смысл примерно такой: все что не запрещено, то разрешено), то блок рассуждений может не выдать ошибки, если экземпляр Element не будет EndeavourElement или MethodologyElement.
ТРЕБУЕТСЯ ОБСУЖДЕНИЕ. Информации из текста ISO 24744 недостаточно для определения того, какой класс стоит определять как абстрактный. Надо решать самим. В OWL модели 15926 таких классов немного, хотя ее авторы могли по аналогии определить больше.
Исходная информация для обсуждения:
* ISO 15926-7, B3
* Таксономия ISO 24744.
Наверное, разумно подготовить списко кандидатов и обсуждать предметно. Могу это сделать.
Дальнейшие планы:
4. Параллельно с определением абстрактных классов, можно обсуждать определение непересекающихся (disjoint) классов.
5. После этого переходим к описанию ролей (отношений) с помощью ObjectProperties и DataProperties.
6. Затем ограничение range (список возможных значений роли).
Видится, что после этого будет две ветви:
1. Наполнение модели экземплярами элементов (вкладки Entities, Individuals).
2. Описание Templates и OIM.
Но до этого предстоит еще последовательно решить ряд вопросов, часть их которых пока даже не до конца осознана. Пример: представление power type с помощью OWL (Protege).