
- •Введение
- •1. Понятие онтологии. Общая характеристика подхода
- •2. Основные виды программного инструментария онтологий
- •3. Язык rdf
- •3.1. Структура rdf-моделей
- •3.2. Нотация rdf/xml
- •3.3. Контейнеры и коллекции
- •3.4. Общая характеристика языка описания словарей rdfs
- •3.5. Синтаксис описания классов и типов-свойств в rdfs
- •3.6. Использование rdf
- •4. Язык owl
- •4.1. Диалекты owl
- •Структура онтологий
- •Основные элементы owl
- •. Картирование онтологий
- •Сложные классы [owl dl]
- •Версии онтологий
- •5. Разработка онтологий в среде Protege-2000
- •Состав онтологии
- •Обобщенная методика создания онтологий
- •Рекомендации по организации иерархий классов
Сложные классы [owl dl]
Для формирования классов OWL обеспечивает дополнительные конструкции, которые могут использоваться для создания так называемых выражений класса. OWL поддерживает основные операторы множеств, а именно объединение, пересечение и дополнение. Они называются, соответственно, owl:unionOf, owl:intersectionOf и owl:complementOf. Дополнительно классы могут быть перечисленными. Расширения класса могут быть заявлены явно посредством конструктора oneOf. Существует возможность утверждения, что расширения класса должны быть непересекающимися.
Отметим, что выражения класса могут быть вложены одно в другое, не требуя создания имен для каждого промежуточного класса. Это позволяет использовать операции со множествами для создания сложных классов из анонимных классов или классов с ограничениями по значению.
Декларации intersectionOf, unionOf, complementOf для множеств. Важно, что расширения классов OWL – это множества, состоящие из индивидов, которые являются членами этого класса. OWL обеспечивает средства для манипулирования расширениями класса, используя основные операторы множеств.
Пересечение [некоторое использование OWL DL]. Приведем пример использования конструкции intersectionOf:
<owl:Class rdf:ID="СтудентЛЭТИ">
<owl:intersectionOf rdf:parseType="Collection">
<owl:Class rdf:about="#Студент" />
<owl:Class rdf:about="#УниверситетЛЭТИ" />
</owl:intersectionOf>
</owl:Class>
Класс СтудентЛЭТИ – это в точности пересечение классов Студент и УниверситетЛЭТИ.
Объединение [OWL DL]. Конструкция unionOf используется аналогично intersectionOf:
<owl:Class rdf:ID="Студент">
<owl:unionOf rdf:parseType="Collection">
<owl:Class rdf:about="#СтудентЛЭТИ" />
<owl:Class rdf:about="#СтудентЛИТМО" />
</owl:unionOf>
</owl:Class>
Класс Студент включает расширение обоих классов – СтудентЛЭТИ и СтудентЛИТМО.
Важно отметить отличие последней конструкции типа объединение от приведенной ниже:
<owl:Class rdf:ID="Студент">
<rdfs:subClassOf rdf:resource="# СтудентЛЭТИ " />
<rdfs:subClassOf rdf:resource="# СтудентЛИТМО " />
</owl:Class>
В данном случае представители класса Студент представляют собой подмножество пересечения классов СтудентЛЭТИ и СтудентЛИТМО, которое, скорее всего, будет пустым множеством.
Дополнение [OWL DL]. Конструкция complementOf выделяет всех индивидов из домена обсуждения, которые не принадлежат данному классу. Обычно при этом обращаются к очень большому набору индивидов:
<owl:Class rdf:ID="Студент" />
<owl:Class rdf:ID="НеСтудент">
<owl:complementOf rdf:resource="#Студент" />
</owl:Class>
Класс НеСтудент включает в качестве своих членов всех индивидов, которые не относятся к классу Студент. Фактически, эта конструкция представляет собой разницу множеств owl:Thing (Вещь) и Студент.
Ниже приведен типичный образец применения конструкции complementOf в комбинации с другими операторами множеств:
<owl:Class rdf:ID="СтудентЗарубежногоВУЗа">
<owl:intersectionOf rdf:parseType="Collection">
<owl:Class rdf:about="#Студент"/>
<owl:Class>
<owl:complementOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#расположенВ" />
<owl:hasValue rdf:resource="#РегионРоссия" />
</owl:Restriction>
</owl:complementOf>
</owl:Class>
</owl:intersectionOf>
</owl:Class>
Здесь класс СтудентЗарубежногоВУЗа задается как пересечение класса Студент с множеством всех вещей, не расположенных в России.
Перечисленные классы oneOf [OWL DL]. OWL обеспечивает средства определения класса через прямое перечисление его членов. Это делается с помощью конструкции oneOf, которая полностью определяет диапазон класса, так что никакие другие индивиды не могут быть объявлены как принадлежащие к данному классу.
Непересекающиеся классы disjointWith [OWL DL]. Непересекаемость набора классов может быть выражена с помощью конструкции owl:disjointWith. Это гарантирует, что индивид, который является членом одного класса, не может одновременно быть представителем обозначенного другого класса. Следующий пример демонстрирует множественные непересекающиеся классы:
<owl:Class rdf:ID="Студент">
<rdfs:subClassOf rdf:resource="#Учащийся"/>
<owl:disjointWith rdf:resource="#Ученик"/>
<owl:disjointWith rdf:resource="#Инженер"/>
<owl:disjointWith rdf:resource="#Преподаватель"/>
</owl:Class>
Часто требуется определить класс как объединение нескольких взаимно непересекающихся подклассов:
<owl:Class rdf:ID="СтудентВУЗа">
<rdfs:subClassOf rdf:resource="#Учащийся" />
</owl:Class>
<owl:Class rdf:ID="СтудентНеВУЗа">
<rdfs:subClassOf rdf:resource="#Учащийся" />
<owl:disjointWith rdf:resource="#СтудентВУЗа" />
</owl:Class>
<owl:Class rdf:ID="Студент">
<owl:unionOf rdf:parseType="Collection">
<owl:Class rdf:about="# СтудентВУЗа " />
<owl:Class rdf:about="# СтудентНеВУЗа " />
</owl:unionOf>
</owl:Class>
Пример определяет, что Студент – это объединение СтудентВУЗа и СтудентНеВУЗа. Причем известно, что эти подклассы точно делят класс Студент на 2 различных подкласса, так как являются непересекающимися.