Язык OWL (базовые элементы языка)
OWL
OWL (Web Ontology Language) – язык представления онтологий в Web. Фактически это словарь, расширяющий набор терминов определенных RDFS. OWL-онтологии могут содержать описания классов, свойств и их экземпляров. Создание OWL это – ответ на необходимость представления знаний в Сети в едином формате. Исторически предшественником OWL был язык DAML+OIL, объединивший 2 инициативы: проект DAML (DARPA Agent Markup Language) и проект OIL (Ontology Inference Layer). Наиболее ранним проектом представления онтологий в Web был SHOE (Simlpe HTML Ontology Extensions). Ветви развития языков описания онтологий для Web показаны на рис. 3. Верхний уровень: OIL, DAML+OIL и OWL продолжает развиваться, но наибольшей популярностью пользуется OWL. OWL с 2004 года является рекомендацией W3C и объединяет лучшие черты свих предшественников.
Рис.20. Основные ветви развития языков описания онтологий для Web
Язык OWL имеет 3 диалекта (подмножества терминов):
• OWL Lite – имеет наименьшую выразительную мощность из всех, но для решения простых задач его может быть достаточно.
• OWL DL – обладает выразительной мощью эквивалентной дескриптивной логике (разрешимой части логики предикатов первого порядка). Для большинства задач встречающихся при проектировании онтологий выразительности этого диалекта достаточно. Диалект имеет два важных свойства: полнота (все заключения являются вычислимыми) и разрешимость (все вычисления завершаются в конечное время). В частности в OWL DL классу запрещено быть экземпляром.
• OWL Full – наиболее выразительный диалект. Эквивалентен RDF. При использовании OWL Full нет никаких гарантий по вычислимости заключений.
Каждый из этих диалектов (кроме Lite) является расширением предыдущего и как следствие: любая OWL Lite онтология является OWL DL онтологией, а любая OWL DL онтология является OWL Full онтологией.
Структура OWL-онтологии
Любая онтология имеет заголовок и тело. В заголовке содержится информация о самой онтологии (версия, примечания), импортируемых онтологиях. За заголовком следует тело онтологии, содержащее описания классов, свойств и экземпляров.
Базовые элементы OWL
Классы
В OWL введен новый термин класс (owl:Class). Необходимость этого объясняется тем, что не все классы диалектов DL и Lite являются rdfs классами (в этом случае owl:Class является подклассом rdfs:Class). В диалекте Full, подобных ограничений нет, и owl:Class фактически является синонимом rdfs:Class.
Для организации классов в иерархию используется свойство rdfs:subClassOf.
Особое место занимают два взаимодополняющих класса Thing и Nothing. Первый их них является надклассом любого класса OWL, второй – подклассом любого класса OWL. Экземпляр любого класса OWL входит в экстенсионал класса Thing. Экстенсионал класса Nothing является пустым множеством.
OWL класс может быть описан 6 способами:
1. идентификатором класса (URI)
2. перечислением всех экземпляров класса
3. ограничением на значение свойства
4. пересечением 2 и более определений классов
5. объединением 2 и более определений классов
6. дополнением (логическим отрицанием) определения класса
Только первый способ определяет именованный класс OWL. Все оставшиеся определяют анонимный класс через ограничение его экстенсионала. Способ 2 явно перечисляет экземпляры класса, способ 3 ограничивает экстенсионал только теми экземплярами, которые удовлетворяют данному свойству. Способы 4-6 используют логические операции (AND, OR и NOT) над экстенсионалами соответствующих классов, чтобы определить экстенсионал нового класса.
Описания класса формируют строительные блоки для определения классов через аксиомы.
Простейшая аксиома определяющая именованный класс:
<owl:Class rdf:ID="Human"/>
Все что постулирует эта аксиома – существование класса с именем “ Human”.
В OWL определены еще 3 конструкции, комбинируя которые можно определять более сложные аксиомы классов.
• rdfs:subClassOf говорит о том, что экстенсионал одного класса (подкласса) полностью входит в экстенсионал другого (надкласса).
• owl:equivalentClass говорит о том, что экстенсионалы двух классов совпадают.
• owl:disjointWith говорит о том, что экстенсионалы двух классов не пересекаются. Иногда говорят, что таким образом определяются дизъюнктивные классы.
Свойства
В OWL выделяют две категории свойств: свойства-объекты (или объектные свойства) и свойства-значения. Первые связывают между собой индивиды (экземпляры классов). Вторые связывают индивиды со значениями данных. Оба класса свойств являются подклассами класса rdf:Property.
Для определения новых свойств как экземпляров owl:ObjectProperty или owl:DatatypeProperty используются аксиомы свойств.
Пример аксиомы:
<owl:ObjectProperty rdf:ID="hasParent"/>
Все что постулирует данная аксиома – существование некоторого свойства "hasParent" связывающего экземпляры класса owl:Thing друг с другом.
Кроме того, OWL поддерживает следующие конструкции для построения аксиом свойств:
• Конструкции RDF Schema: rdfs:subPropertyOf (определяет подсвойство данного свойства), rdfs:domain (определяет домен свойства) и rdfs:range (определяет диапазон свойства)
• Отношения между свойствами: owl:equivalentProperty (определяет эквивалентное свойство) и owl:inverseOf (определяет обратное свойство)
• Ограничения глобальной кардинальности: owl:FunctionalProperty (определяет однозначное свойство – однозначное отображение домена свойства на диапазон) и owl:InverseFunctionalProperty (обратно функциональное свойство, т.е. определяет, что свойство обратное данному свойству является однозначным)
• Логические характеристики свойства: owl:SymmetricProperty (определяет свойство как симметричное) и owl:TransitiveProperty (определяет транзитивное свойство).
Индивиды (экземпляры классов или свойств)
Индивиды определяются при помощи аксиом индивидов (т.н. фактов).
Рассмотрим два вида фактов:
1. факты членства индивидов в классах и о значениях свойств индивидов;
2. факты идентичности/различности индивидов
Пример аксиом индивида первого вида:
<Балет rdf:ID="ЛебединоеОзеро">
<имеетКомпозитора rdf:resource="#Чайковский"/>
</Балет>
Данная аксиома постулирует сразу 2 факта: (1) существует некоторый индивид класса «Балет» имеющий имя «ЛебединоеОзеро»; (2) этот индивид связан свойством «имеетКомпозитора» с индивидом: «Чайковский» (определенным где-то в другом месте).
Первый факт говорит о членстве в классе, второй – о значении свойства индивида.
Аксиомы второго вида необходимы для суждения об идентичности индивидов. Дело в том, что в OWL не делается никаких предположений ни о различии, ни о совпадении двух индивидов, имеющих различные идентификаторы URI.
Подобные утверждения выражаются аксиомами идентичности с помощью следующих конструкций:
• owl:sameAs постулирует, что две ссылки URI ссылаются на один и тот же индивид.
• owl:differentFrom постулирует, что две ссылки URI ссылаются на разные индивиды.
• owl:AllDifferent предоставляет средство для определения списка попарно различных индивидов.
На рис. 21 проиллюстрированы основные элементы OWL-онтологии.