Простые онтологические модели: общая картина

Эта страница представляет собой главу из нашего методического пособия
"Введение в онтологическое моделирование" (нажмите для перехода к полной версии в формате PDF).

Мы рассмотрели способы создания основных элементов семантических моделей в простейшем редакторе – Protégé; одновременно мы познакомились с тем, как такие модели сериализуются в формат RDF/XML, и что происходит с ними при загрузке в хранилище триплетов. Целостность понимания этих механизмов очень важна для успешной работы с программным воплощением семантических моделей.

Чтобы привести эти знания в общую систему, а заодно получить немного новой информации, окинем взглядом взаимосвязь изученных нами элементов семантических моделей. Рассмотрим пример простой онтологии. Пусть мы хотим выразить в модели информацию о том, что объекты класса Customer (клиент) обладают свойством Name (название), и свойством Child, которое устанавливает отношения дочерняя-родительская организация между клиентами. Имеются две компании – ЗАО "Альфа" и ООО "Бета", причем "Бета" является дочерней структурой "Альфы". Всю эту модель можно представить так:

Пример целостной семантической модели
Пример целостной семантической модели

Префиксы на этой диаграмме не показаны в целях читаемости.

Обратим внимание на пунктирную линию: то, что находится выше нее, представляет собой определения классов и свойств, а то, что ниже – информацию об индивидуальных объектах и их свойствах.

В верхней части диаграммы мы видим определение класса Customer (клиент). Он является подклассом dc:Agent. Префикс dc соответствует стандартной онтологии Dublin Core. Эта онтология представляет собой интересную попытку дать общеупотребимые определения для сущностей, встречающихся практически в любой семантической модели – таких, как "действующее лицо", "персона" и др. Делая наш класс Customer подклассом определенного в стандартной онтологии класса Agent, мы сообщаем потенциальным внешним потребителям нашей модели информацию о том, как следует воспринимать этот класс.

Ниже показаны два свойства - #Name и #Child. Они представляют собой отдельные элементы модели. Как мы помним из предыдущей главы, свойства имеют две принципиальные характеристики – domain, указывающий, экземплярам каких классов присуще это свойство (в данном случае domain обоих свойств указывает на класс Customer), и range, определяющий тип принимаемого значения. Name – строковое свойство, а значением свойства Child являются также объекты класса Customer.

Ниже линии находятся определения двух индивидуальных объектов - #Alpha и #Beta. Предопределенное стандартом свойство type указывает на класс Customer. У каждого объекта имеется имя, представленной строковым литералом. Наконец, объект Beta имеет свойство Child, которое указывает на Alpha, поскольку Beta является дочерней организацией компании Alpha. Посмотрим на получившиеся триплеты:

http://example.com/#Customer
http://www.w3.org/1999/02/22-rdf-syntax-ns#type
http://www.w3.org/2002/07/owl#Class
http://example.com/#Customer
http://www.w3.org/2000/01/rdf-schema#subClassOf
http://purl.org/dc/terms/Agent
http://example.com/#Name
http://www.w3.org/1999/02/22-rdf-syntax-ns#type
http://www.w3.org/2002/07/owl#DatatypeProperty
http://example.com/#Name
http://www.w3.org/2000/01/rdf-schema#range
http://www.w3.org/2001/XMLSchema#string
http://example.com/#Name
http://www.w3.org/2000/01/rdf-schema#domain
http://example.com/#Customer
http://example.com/#Child
http://www.w3.org/1999/02/22-rdf-syntax-ns#type
http://www.w3.org/2002/07/owl#ObjectProperty
http://example.com/#Child
http://www.w3.org/2000/01/rdf-schema#range
http://example.com/#Customer
http://example.com/#Child
http://www.w3.org/2000/01/rdf-schema#domain
http://example.com/#Customer
http://example.com/#beta
http://www.w3.org/1999/02/22-rdf-syntax-ns#type
http://www.w3.org/2002/07/owl#NamedIndividual
http://example.com/#beta
http://www.w3.org/1999/02/22-rdf-syntax-ns#type
http://example.com/#Customer
http://example.com/#beta
http://example.com/#Child
http://example.com/#alpha
http://example.com/#beta
http://example.com/#Name
"Beta, LLC"
http://example.com/#alpha
http://www.w3.org/1999/02/22-rdf-syntax-ns#type
http://www.w3.org/2002/07/owl#NamedIndividual
http://example.com/#alpha
http://www.w3.org/1999/02/22-rdf-syntax-ns#type
http://example.com/#Customer
http://example.com/#alpha
http://example.com/#Name
"Alpha, JSC"

Верхняя часть таблицы соответствует верхней части диаграммы, показанной над пунктирной линией. Эту часть модели можно условно назвать "справочными данными" - она описывает структуру информации. Нижняя часть соответствует наполнению модели, "проектным данным". Такое деление очень условно, поскольку часто то, что является проектными данными в одной модели, является справочными в другой; технологически, никакой разницы между этими типами данных нет. Тем не менее, с точки зрения восприятия и понимания модели, такое разделение может оказаться полезным.

Следующая глава: Онтологическая модель как граф. Язык SPARQL