W3C

Этот документ является переводом исходной английской версии. Может содержать ошибки. © Дмитрий Щербина, 2004
Нагло сворован на сайтах: http://www.thalion.kiev.ua/idx.php/7/008/article/

OWL, язык веб-онтологий.
Руководство

Рекомендация W3C 10 февраля 2004

Эта версия:
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
Последняя версия:
http://www.w3.org/TR/owl-guide/
Предыдущая версия:
http://www.w3.org/TR/2003/PR-owl-guide-20031215/
Редакторы:
Майкл К. Смит, Electronic Data Systems, Michael dot Smith at e d s dot com
Крис Велти, IBM Research, Chris dot Welty at u s dot ibm dot com
Дебора Л. МакГиннес, Стэнфордский Университет d l m at k s l dot stanford dot edu

Пожалуйста, обращайтесь к списку ошибок для этого документа, который может включать некоторые нормативные исправления.

Смотрите также переводы.


Резюме

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

Язык веб-онтологий OWL призван обеспечить язык, который может быть использован для описания классов и отношений между ними, которые присущи для веб-документов и приложений.

Этот документ демонстрирует, как использовать язык OWL, чтобы

  1. формализовать область определения классов и свойств этих классов,
  2. определить индивидов и назначить их свойства, и
  3. уточнить эти классы и индивиды до степени, определяемой формальной семантикой OWL.

Изложение организовано так, чтобы представить постепенное определение набора классов, свойств и индивидов, начиная с основных принципов и переходя к более сложным языковым компонентам.


Статус этого документа

Этот документ был рассмотрен членами W3C и другими заинтересованными сторонами, и был одобрен Директором как Рекомендация W3C. Роль Рекомендации W3C состоит в том, чтобы привлечь внимание к данной спецификации и способствовать ее широкому применению. Это увеличивает функциональность и возможности взаимодействия Сети.

Эта одна из шести частей Рекомендаций W3C по OWL, языку веб-онтологий. Она была разработана Рабочей группой Онтологии Сети как часть W3C Semantic Web Activity (Положение об Activity, Устав группы) для публикации 10 февраля 2004.

Проект OWL, отраженный в более ранних версиях этих документов был тщательно рассмотрен и удовлетворяет техническим требованиям Рабочей группы. Рабочая группа рассмотрела все полученные комментарии, сделав необходимые изменения. Изменения к этому документу, начиная с версии Предполагаемой Рекомендации, детально изложены в протоколе изменений.

Комментарии принимаются на public-webont-comments@w3.org (архив), а общая дискуссия о близких технологиях на www-rdf-logic@w3.org (архив).

Доступен список реализаций.

W3C поддерживает список обжалований любых патентов, относящихся к этой работе.

Этот раздел описывает статус этого документа на момент его публикации. Другие документы могут заменить этот документ. Список текущих публикаций W3C и последняя ревизия этого технического сообщения могут быть найдены в индексе технических сообщений W3C http://www.w3.org/TR/.


Содержание


1. Введение

"Скажите мне, какое вино мне нужно купить к каждому из блюд в этом меню. И, кстати, я не люблю Сотерн."

Сегодня трудно было бы создать веб-агента, который смог бы выполнить поиск вин в Сети, удовлетворяющих этому запросу. Сходным образом, рассмотрите назначение компьютерному агенту задачи согласования нескольких маршрутов путешествия. (Примеры использования смотрите в документе требований к OWL.)

Для поддержки такого рода вычислений необходимо пойти дальше ключевых слов и описать содержание ресурсов, доступных в Сети. Этот дополнительный уровень интерпретации имеет дело с семантикой данных.

Язык веб-онтологий OWL - это язык для определения и представления веб-онтологий. Онтология - термин, заимствованный из философии, который обозначает науку, описывающую формы бытия и то, как они относятся между собой. Веб-отнология может включать описания классов, свойств и их примеры. Формальная семантика OWL описывает, как получить логические следствия, имея такую онтологию, т.е. получить факты, которые не представлены в онтологии буквально, но следуют из ее семантики. Эти следствия могут быть основаны на одном документе или множестве распределенных документов, которые комбинируются с использованием определенных механизмов OWL.

Данный документ - это один из компонентов описания OWL, языка веб-онтологий, разрабатываемого рабочей группой W3C Web Ontology (WebOnt). Раздел Карта документа в Кратком обзоре ([Краткий обзор], 1.1) описывает каждый из этих компонентов и то, как они соотносятся друг с другом.

Вопрос, который возникает, когда описываешь еще один XML/Web стандарт, - это "Что это дает мне, что не могут дать XML и XML Schema?" Есть два ответа на этот вопрос.

1.1. Виды OWL

OWL обеспечивает три различных по выразительности диалекта, спроектированных для использования отдельными сообществами разработчиков и пользователей.

Каждый из этих диалектов - расширение его более простого предшественника, и в том, что касается выразительных возможностей, и в том, что касается возможностей производимых заключений. Поддерживаются следующие отношения, но не наоборот.

Разработчики онтологий, использующие OWL, должны решить, какой из диалектов лучше подходит к их задачам. Выбор между OWL Lite и OWL DL зависит от степени того, насколько пользователям требуются более выразительные конструкции, обеспечиваемые OWL DL. Приложения для OWL Lite будут иметь желаемые вычислительные характеристики. Приложения для OWL DL, при том, что имеют дело с разрешаемым диалектом, в самых тяжелых случаях будут связаны с более высокой сложностью. Выбор между OWL DL и OWL Full, главным образом, зависит от степени того, насколько пользователям требуются средства мета-моделирования RDF Схем (например, определяющие классы классов). При использовании OWL Full, по сравнению с OWL DL, рассудочная поддержка менее предсказуема. Для дальнейшей информации см. Семантика OWL.

Пользователи, мигрирующие из RDF в OWL DL или OWL Lite должны позаботиться о том, чтобы оригинальный RDF-документ выполнял ограничения, наложенные OWL DL и OWL Lite. Детали этих ограничений объясняются в Приложении E Справки по OWL.

Когда мы представляем конструкции, которые разрешаются только в OWL DL или OWL Full, они помечаются "[OWL DL]".

1.2. Структура документа

Чтобы обеспечить связный набор примеров по всему руководству, мы создали онтологии вина и пищи. Это OWL DL онтологии. Те из наших рассуждений, которые будут касаться возможностей OWL Full, будут соответственно помечены. Онтология вина и еды - это существенная модификация элемента библиотеки DAML онтологий с долгой историей. Она была первоначально разработана МакГиннесом как КЛАССИЧЕСКИЙ пример дескриптивной логики, расширенный в учебник по дескриптивной логике и в учебник по онтологиям.

В этом документе мы представляем примеры, использованные в RDF/XML синтаксис ([RDF], 5), предполагая, что XML знаком самой обширной аудитории. Нормативный синтаксис обмена OWL - RDF/XML. Заметьте, что OWL был спроектирован с максимальной совместимостью с RDF и RDF Schema. Форматы XML и RDF - часть стандарта OWL.

Все примеры, представленные в этом документе взяты из онтологий, содержащихся в wine.rdf и food.rdf, кроме отмеченных  ¬  в правом нижнем углу.


2. Структура онтологий

OWL - это компонент инициативы Semantic Web. Это попытка сделать веб-ресурсы более доступными для автоматизированных процессов путем добавления информации о ресурсах, которая описывают или обеспечивает веб-контент. Поскольку Семантическая Сеть по определению распределена, OWL должен позволять собирать информацию из распределенных источников. Это частично обеспечивается возможностью онтологий быть связанными, включая прямой импорт информации из других онтологий.

В дополнение, OWL предполагает открытость. То есть, описания ресурсов не ограничены единственным файлом или темой. В то время как класс C1 первоначально может быть определен в онтологии O1, он может быть расширен в других онтологиях. Следствия из этих дополнительных суждений о C1 являются монотонными. Новая информация не может опровергать предыдущую информацию. Новая информация может быть противоречащей, но факты и следствия могут только добавляться, и не могут удаляться.

Возможность таких противоречий - это то, что разработчик онтологии должен учитывать. Ожидается, что инструменты, поддерживающие OWL, помогут обнаруживать такие случаи.

Чтобы написать онтологию, которая может однозначно интерпретироваться и использоваться программными агентами, мы требуем синтаксис и формальную семантику OWL. OWL - это расширение словаря [RDF Semantics] RDF. Семантика OWL определена в документе Семантика и абстрактный синтаксис OWL.

2.1. Namespaces

Прежде, чем мы можем использовать набор конструкций, нам надо точно указать, какие словари используются. Стандартный начальный компонент онтологии включает набор объявлений XML namespace, заключенных в открывающий тэг rdf:RDF. Это обеспечивает возможность однозначно интерпретировать идентификаторы и делает остальную часть представления онтологии более читабельной. Типичная OWL онтология начинается с объявления пространства имен (namespace), подобного следующему. Конечно, URI конкретных онтологий обычно не будут ссылками на w3.org.

<rdf:RDF 
    xmlns     ="http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#" 
    xmlns:vin ="http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#"       
    xml:base  ="http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#"       
    xmlns:food="http://www.w3.org/TR/2004/REC-owl-guide-20040210/food#"    
    xmlns:owl ="http://www.w3.org/2002/07/owl#"
    xmlns:rdf ="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
    xmlns:xsd ="http://www.w3.org/2001/XMLSchema#"> 

Первые две декларации идентифицируют namespace, связанный с этой онтологией. Первая делает этот namespace значением по умолчанию, заявляя, что имена тэгов без префиксов относятся к текущей онтологии. Вторая идентифицирует namespace текущей онтологии с приставкой vin:. Третья идентифицирует базовый URI документа (см. ниже). Четвертая идентифицирует namespace вспомогательной пищевой онтологии с префиксом food:.

Пятая namespace декларация говорит, что элементы в этом документе, предваряющиеся owl:, должны пониматься как обращение к понятиям, взятым из namespace, называемого http://www.w3.org/2002/07/owl#. Это - обычная декларация OWL, использованная для ссылки на OWL.

OWL зависит от конструкций, определенных RDF, RDFS, и XML Schema datatypes. В этом документе приставка rdf: обращается к понятиям, взятым из namespace http://www.w3.org/1999/02/22-rdf-syntax-ns#. Следующие две декларации namespace делают похожие объявления RDF Schema (rdfs:) и XML Schema datatype (xsd:) namespaces.

Как помощь в написании длинных URL часто может быть полезным обеспечить ряд определений ENTITY в декларации типа документа (DOCTYPE), которая предшествует определениям онтологии. Названия, определенные в соответствии с namespace декларациями имеют значение только как части тэгов XML. Значения атрибутов - нечувствительны к namespace. Но в OWL мы часто ссылаемся на идентификаторы онтологии, используя значения атрибутов. Они могут быть записаны в полной форме, например "http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#Мерло". Как альтернатива, сокращения могут быть определены, используя определение ENTITY, например:

<!DOCTYPE rdf:RDF [
    <!ENTITY vin  "http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#" >
    <!ENTITY food "http://www.w3.org/TR/2004/REC-owl-guide-20040210/food#" > ]>

После этой пары ENTITY деклараций, мы могли бы писать значение "&vin;Мерло" и это расшифровывалось бы в "http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#Мерло".

Возможно, более важно то, что декларации rdf:RDF namespace могли бы тогда упроститься, так что изменения в ENTITY декларациях распространились бы на всю онтологию.

<rdf:RDF 
    xmlns     ="&vin;" 
    xmlns:vin ="&vin;" 
    xml:base  ="&vin;" 
    xmlns:food="&food;"
    xmlns:owl ="http://www.w3.org/2002/07/owl#"
    xmlns:rdf ="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
    xmlns:xsd ="http://www.w3.org/2001/XMLSchema#"> 

2.2. Заголовки онтологии

После того, как установлены namespaces, мы обычно включаем коллекцию утверждений о нашей онтологии, сгруппированных под тэгом owl:Ontology. Эти тэги поддерживают такие критические вспомогательные задачи как комментарии, управление версиями и включение других онтологий.

<owl:Ontology rdf:about=""> 
  <rdfs:comment>An example OWL ontology</rdfs:comment>
  <owl:priorVersion rdf:resource="http://www.w3.org/TR/2003/PR-owl-guide-20031215/wine"/> 
  <owl:imports rdf:resource="http://www.w3.org/TR/2004/REC-owl-guide-20040210/food"/> 
  <rdfs:label>Wine Ontology</rdfs:label> 
  ...

Заметьте, что мы используем '...', чтобы указать, что есть дополнительный текст, который отброшен в данном примере.

Элемент owl:Ontology - это место, где собрана большая часть метаданных OWL-документа. Это не гарантирует, что документ описывает онтологию в традиционном смысле. В некоторых сообществах создаются онтологии не об индивидах, а только о классах и свойствах, которые определяют предметную область. Используя OWL, чтобы описать коллекцию частных данных тэг owl:Ontology может быть необходим, чтобы записать информацию о версии и импортировать определения, от которых зависит данный документ. Таким образом, в OWL термин онтология был расширен, чтобы включить частные данные (см. выше).

Атрибут rdf:about обеспечивает название или ссылку на онтологию. Если значение атрибута "", то названием онтологии служит базовый URI элемента owl:Ontology. Как правило, это URI документа, содержащего онтологию. Исключение из этого - тот случай, если используется xml:base, который может установить базовый URI элемента на что-нибудь другое, чем URI текущего документа.

rdfs:comment обеспечивает очевидно необходимую возможность аннотировать онтологию.

owl:priorVersion - является стандартным тэгом, предназначенным для поддержки систем управления версиями, работающих с онтологиями. Работа с версиями онтологий обсуждается далее.

owl:imports обеспечивает механизм включения. owl:imports принимает единственный аргумент, обозначенный атрибутом rdf:resource.

Импорт другой онтологии переносит весь набор утверждений, обеспеченных в той онтологии, в текущую онтологию. Чтобы наилучшим образом использовать импортированную онтологию, принято координировать ее с декларацией namespace. Заметьте различие между этими двумя механизмами. namespace декларации обеспечивают удобное средство, чтобы ссылаться на имена, определенные в других OWL онтологиях. Концептуально, owl:imports предназначен для того, чтобы показать Ваше намерение включить все утверждения другой онтологии. Импорт другой онтологии, O2, также импортирует все онтологии, что импортированы в O2.

Заметьте, что owl:imports не всегда может сработать. Как Вы могли бы ожидать, имея дело с Семантической Сетью, доступ к ресурсам, распределенным по Сети, не всегда может быть возможен. Инструментальные средства должны отвечать на эту ситуацию в соответствии с их манерой исполнения.

Заметьте, что для того, чтобы использовать словарь OWL Вам не обязательно нужно импортировать онтологию owl.rdf. В самом деле, такой импорт не рекомендуется.

Один общий набор дополнительных тэгов, которые могли бы быть разумно включены здесь - это некоторые из стандартных тэгов метаданных Dublin Core. Их значениями служат простые типы или строки. Примеры включают Title, Creator, Description, Publisher и Date (см. RDF declarations).

Свойства, которые используются как аннотации, должны быть объявлены, используя owl:AnnotationProperty. Например,

<owl:AnnotationProperty rdf:about="&dc;creator" />

OWL обеспечивает несколько других механизмов, чтобы связать текущую онтологию с импортированными вместе (см. картирование онтологий).

Также мы включили rdfs:label, чтобы указать для нашей онтологии метку на натуральном языке.

Определение заголовка онтологии заканчивается следующим тэгом.

</owl:Ontology>

За заголовком следуют фактические определения, которые составляют онтологию, и в конечном счете завершаются

</rdf:RDF>

2.3. Агрегация данных и секретность

Способность OWL выражать онтологическую информацию об индивидах, содержащихся во множестве документов, принципиальным образом поддерживает связывание данных из разных источников. Лежащая в основе семантика обеспечивает возможность делать выводы из этих данных, что может привести к неожиданным результатам. В частности способность выражать эквивалентность с помощью owl:sameAs может быть использована, чтобы заявить, что как будто бы различные индивиды на самом деле одно и то же. Owl:InverseFunctionalProperty также может быть использовано, чтобы связать индивидов вместе. Например, если такое свойство как "ИНН" является owl:InverseFunctionalProperty, то два отдельных человека могли бы быть расценены как один и тот же на основе того, что они имеют одно и то же значение этого свойства. Когда идентичность индивидов определяется такими средствами, информация о них из разных источников может быть слита. Эта агрегация может использоваться, чтобы определить факты, которые не представлены прямо ни в одном из источников.

Способность Семантической Сети связывать информацию из многих источников - желательное и мощное свойство, которое может использоваться во многих приложениях. Однако, способность объединять данные из многих источников в сочетании с мощью логического вывода OWL, действительно имеет потенциал для злоупотребления. Пользователи OWL должны быть заботиться о потенциальной угрозе секретности. Детальные решения по защите информации были расценены как выходящие за область рассмотрения данной рабочей группой. Множество организаций, занимающихся этими вопросами, предлагает широкий спектр решений по безопасности и секретности. Например, см. SAML и P3P.


3. Основные элементы

Большинство элементов онтологии OWL относятся к классам, свойствам, представителям классов и отношениям между этими представителями. Этот раздел представляет компоненты языка, необходимые для представления этих элементов.

3.1. Простые классы и индивиды

Применение онтологии будут зависеть от предоставляемой ею возможности рассудить об индивидах. Чтобы сделать это удобным, мы должны иметь механизм, чтобы описать классы этих индивидов и свойства, которые они наследуют на основании членства в классе. Мы всегда можем обозначить определенные свойства индивидов, но основная сила онтологий лежит в рассуждениях на основе классов.

Иногда мы хотим подчеркнуть различие между классом как объектом и классом как набором, содержащим элементы. Мы называем набор индивидов, которые являются членами какого-то класса расширением этого класса.

3.1.1. Простые именованные классы
Class, rdfs:subClassOf

Наиболее фундаментальные понятия в какой-то области должны соответствовать классам, которые находятся в корне различных таксономических деревьев. Каждый индивид в мире OWL является членом класса owl:Thing. Таким образом каждый определенный пользователем класс автоматически является подклассом owl:Thing. Специфичные для данной области корневые классы определяются простым объявлением именованного класса. OWL также определяет пустой класс, owl:Nothing.

Для области виноделия, которую мы используем в качестве примера, мы создаем три корневых класса: Винодельня, Регион и ПродуктПитания.

<owl:Class rdf:ID="Винодельня"/> 
<owl:Class rdf:ID="Регион"/> 
<owl:Class rdf:ID="ПродуктПитания"/> 

Заметьте, что этим мы только сказали, что существуют классы, которым дали эти имена, обозначенные с помощью 'rdf:ID ='. Формально, мы не знаем почти ничего об этих классах, кроме того, что они существуют, несмотря на использование в качестве меток знакомых русскоязычных терминов. Хотя классы существуют, к ним нельзя отнести никаких индивидов. По тому, что мы знаем в данный момент об этих классах, их можно также назвать Вещь1, Вещь2 и Вещь3.

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

Синтаксис rdf:ID="Регион" используется, чтобы ввести название, как часть его определения. Атрибут rdf:ID ([RDF], 7.2.22) похож на атрибут ID из XML. Теперь внутри этого документа на класс Регион можно ссылаться с помощью #Регион, например, rdf:resource="#Регион". Другие онтологии могут ссылаться на это название, используя его полную форму "http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#Регион".

Другая форма ссылок использует синтаксис rdf:about="#Регион", чтобы расширить определение ресурса. Использование синтаксиса rdf:about="&ont;#x" - ключевой элемент в создании распределенной онтологии. Это позволяет расширить импортированное определение x, не изменяя оригинал документа и конструировать большие онтологии из блоков.

Теперь можно обратиться к классам, которые мы определили в других OWL конструкциях, используя их же идентификаторы. Для первого класса, заданного в этом документе, мы можем использовать относительный идентификатор, #Винодельня. Возможно, другим документам также потребуется ссылка на этот класс. Самый разумный способ сделать это - обеспечить namespace и определения ENTITY, которые включают определяемый документ в качестве источника:

...
<!ENTITY vin  "http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#" >
<!ENTITY food "http://www.w3.org/TR/2004/REC-owl-guide-20040210/food#" >
...
<rdf:RDF xmlns:vin ="http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#"
         xmlns:food="http://www.w3.org/TR/2004/REC-owl-guide-20040210/food#" ... >
...

Сделав эти определения мы можем обращаться к классу винодельня или используя XML-тег vin:Винодельня или значение атрибута &vin;Винодельня. Кроме этого, всегда можно сослаться на ресурс, используя его полный URI, в нашем случае http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#Винодельня.

Фундаментальным таксономическим конструктором для классов является rdfs:subClassOf. Он связывает более частный класс с более общим классом. Если X - подкласс Y, то каждый представитель X - также представитель Y. Отношение rdfs:subClassOf является транзитивным. Если X - подкласс Y, и Y - подкласс Z, то X - подкласс Z.

<owl:Class rdf:ID="Напиток"> 
  <rdfs:subClassOf rdf:resource="#ПродуктПитания" />
  ...
</owl:Class> 

Мы определяем Напиток (жидкость, пригодная для питья) как подкласс ПродуктПитания.

В мире веб-онтологий, оба этих класса могут быть определены в отдельной онтологии, которая обеспечила бы основные строительные блоки для широкого круга пищевых и питьевых онтологий, что мы и сделали - мы определили их в онтологии пища, которая импортирована в онтологию вина. Онтология пищи включает множество классов, например, Пища, СъедобнаяВещь, Блюдо и Моллюски, которые не относятся к знаниям о вине, но должны быть связаны со словарем винных терминов, если мы собираемся совершать полезные рассуждения. Пища и вино взаимозависимы, и нам это пригодится, чтобы идентифицировать подходящие комбинации вина/пищи.

Определение класса состоит из двух частей: указание названия или ссылка и список ограничений. Каждое из непосредственно содержащихся в определении класса выражений ограничивает (уточняет) свойства представителей определенного класса. Представители класса принадлежат к пересечению указанных ограничений. (Хотя см. описание owl:equivalentClass.) Пока мы видели только примеры, которые включают единственное ограничение, обязывающее новый класс быть подклассом некоторого другого именованного класса.

Здесь мы создаем простое (и неполное) определение для класса Вино. Вино - это Напиток. Также мы определяем Паста как СъедобнаяВещь.

<owl:Class rdf:ID="Вино"> 
  <rdfs:subClassOf rdf:resource="&food;Напиток"/> 
  <rdfs:label xml:lang="en">wine</rdfs:label> 
  <rdfs:label xml:lang="ru">вино</rdfs:label> 
  <rdfs:label xml:lang="fr">vin</rdfs:label> 
  ...  
</owl:Class> 

<owl:Class rdf:ID="Паста">
  <rdfs:subClassOf rdf:resource="#СъедобнаяВещь" />
  ...
</owl:Class>

Конструкция rdfs:label обеспечивает необязательное удобочитаемое название этого класса. Инструментальные средства представления информации пользователю могут его использовать. Атрибут "lang" обеспечивает поддержку разных языков. Конструкция rdfs:label (метка) подобна комментарию и ничего не вносит в логическую интерпретацию онтологии.

Наше определение вина все еще очень неполно. Мы не знаем ничего о винах за исключением того, что они - вещи и напитки, но мы имеем достаточно информации, чтобы создавать индивидов этого класса и производить суждения о них.

3.1.2. Индивиды

В дополнение к классам мы хотим иметь возможность описать их членов. Обычно мы думаем о них как об отдельных индивидах в нашем пространстве вещей. Для определения индивида достаточно объявить его членом какого-то класса.

<Регион rdf:ID="РегионЦентральногоПобережья" /> 

Заметьте, что следующее идентично по значению примеру выше.

<owl:Thing rdf:ID="РегионЦентральногоПобережья" /> 

<owl:Thing rdf:about="#РегионЦентральногоПобережья"> 
   <rdf:type rdf:resource="#Регион"/> 
</owl:Thing>

rdf:type - это свойство RDF, которое связывает индивида с классом, членом которого он является.

Есть пара моментов, на которых здесь следует остановиться. Во-первых, мы решили, что РегионЦентральногоПобережья (определенная область) является членом Регион, класса, содержащего все географические регионы. Во-вторых, нет никаких требований в примере из двух частей, что эти два элемента должны следовать друг за другом, или даже находиться в одном и том же файле (хотя, в противном случае их названия должны были бы быть расширены с помощью URI). При проектировании веб-онтологий нужно помнить, что они предназначены для распределенной среды. Они могут быть импортированы и расширены, создавая новые производные онтологии.

Чтобы иметь в своем распоряжении еще несколько классов для представления свойств в следующих разделах, мы определяем ветвь таксономии Виноград с индивидом, обозначающим сорт винограда Каберне-Совиньон. Виноград определен в онтологии пищи:

<owl:Class rdf:ID="Виноград">
  ...
</owl:Class>

И теперь в онтологии вина мы имеем:

<owl:Class rdf:ID="ВинныйВиноград">
  <rdfs:subClassOf rdf:resource="&food;Виноград" />
</owl:Class>

<ВинныйВиноград rdf:ID="ВиноградКабернеСовиньон" />

Как обсуждается в следующем разделе, ВиноградКабернеСовиньон - индивид, потому что обозначает один конкретный сорт винограда.

3.1.3. Дизайн для использования

Существуют большие проблемы относительно различия между классом и индивидом в OWL. Класс - это просто название и совокупность свойств, которые описывают набор индивидов. Индивиды - это члены этих наборов. Таким образом, классы должны соответствовать естественно образованным наборам вещей в рассматриваемой области, а индивиды должны соответствовать реальным объектам, которые могут быть сгруппированы в эти классы.

При создании онтологий, это различие часто размывается в двух направлениях:

Заметьте, что то же самое различие возникает в отношение класса Вино. Класс Вино фактически обозначает набор всех разновидностей вина, но не набор реальных бутылок, которые можно купить. В таком бы случае, каждый представитель класса Вино в нашей онтологии определял бы класс, состоящий из всех бутылок вина данного типа. Достаточно легко вообразить такую информационную систему, типа системы учета для винного торговца, которая должна рассматривать индивидуальные бутылки вина. Чтобы поддержать такую интерпретацию, наша онтология вина, в том виде как она сейчас, потребовала бы возможности рассматривать классы как индивиды. Отметьте, что OWL Full разрешает такую экспрессивность, позволяя нам рассматривать конкретного представителя сорта винограда одновременно как класс, представители которого - бутылки вина.

По той же логике, вина, произведенные винодельнями в определенные годы считаются винтажем. Чтобы представлять понятие винтажа, мы должны определить его место в нашей онтологии. Представитель класса Вино, как обсуждалось выше, представляет конкретный сорт вина, производимого конкретной винодельней, например, FormanШардоне.

Уточнение, что вино, произведенное в 2000 году, считается винтажем, бросает нам вызов, потому что мы не имеем возможности представить подмножество данного индивида вина. Этот винтаж - не новый сорт вина, это - особое подмножество вина - того, что было произведено в 2000 году. Одним из вариантов было бы использовать OWL Full и рассматривать представителей вина как классы с подклассами (подмножествами), обозначающими винтажи. Другой вариант обойти эту проблему - это рассматривать Винтаж как отдельный класс, чьи представители имеют отношение к тому Вину, винтажем которого они являются. Например, FormanШардоне2000 - это индивид класса Винтаж с со свойством являетсяВинтажем, значение которого - индивид класса Вино, FormanШардоне. Мы определим класс Винтаж ниже .

Цель этого обсуждения - показать, что развитие онтологии должно строго подчиняться ее предполагаемому применению. Также эти вопросы подчеркивают одно из главных различий между OWL Full и OWL DL. OWL Full позволяет использовать классы как индивидов, а OWL DL - нет. Онтология вина проектируется, чтобы работать в OWL DL, и поэтому такие индивиды как FormanШардоне не рассматриваются одновременно как классы.

3.2. Простые свойства

Мир классов и индивидов был бы совершенно неинтересным, если бы мы могли только определять таксономии. Свойства позволяют нам утверждать общие факты о членах классов и особые факты об индивидах.

3.2.1. Определение свойств
ObjectProperty, DatatypeProperty, rdfs:subPropertyOf,
rdfs:domain, rdfs:range

Свойство - это бинарное отношение. Различают два типа свойств:

При определении свойства существует множество способов ограничить это отношение. Можно определить домен и диапазон. Свойство может быть определено как специализация (подсвойство) существующего свойства. Возможны и более сложные ограничения, которые описаны позже.

<owl:ObjectProperty rdf:ID="сделаноИзВинограда"> 
  <rdfs:domain rdf:resource="#Вино"/>
  <rdfs:range rdf:resource="#Виноград"/> 
</owl:ObjectProperty> 

<owl:ObjectProperty rdf:ID="блюдо">
  <rdfs:domain rdf:resource="#ПриемПищи" />
  <rdfs:range rdf:resource="#ВидБлюда" />
</owl:ObjectProperty>

В OWL последовательность элементов без явного указания оператора представляет собой неявное соединение. Свойство сделаноИзВинограда имеет домен Вино и диапазон Виноград. Таким образом, это связывает представителей класса Вино с представителями класса Виноград. Множественные домены означают, что доменом свойства служит пересечение указанных классов (и подобным образом для диапазона).

Точно так же свойство блюдо связывает данный ПриемПищи с каким-то ВидомБлюда.

Заметьте, что использование информации о диапазоне и домене в OWL отличается от информации о типе данных в языках программирования. В частности, в языках программирования типы данных используются, чтобы отслеживать взаимоувязанность кода. В OWL диапазон значений может использоваться, чтобы наследовать тип. Например, из следующего определения:

<owl:Thing rdf:ID="LindemansBin65Шардоне">
  <сделаноИзВинограда rdf:resource="#ВиноградШардоне" />
</owl:Thing>                                              ¬ 

мы можем заключить, что LindemansBin65Шардоне - это вино, потому что доменом свойства сделаноИзВинограда является Вино.

Свойства, так же как классы, могут быть организованы в иерархию.

<owl:Class rdf:ID="ХарактеристикаВина" />

<owl:Class rdf:ID="ЦветВина">
  <rdfs:subClassOf rdf:resource="#ХарактеристикаВина" />
  ...
</owl:Class>

<owl:ObjectProperty rdf:ID="обладаетХарактеристикойВина">
  <rdfs:domain rdf:resource="#Вино" />
  <rdfs:range  rdf:resource="#ХарактеристикаВина" />
</owl:ObjectProperty>

<owl:ObjectProperty rdf:ID="имеетЦвет">
  <rdfs:subPropertyOf rdf:resource="#обладаетХарактеристикойВина" />
  <rdfs:range rdf:resource="#ЦветВина" />
  ...
</owl:ObjectProperty>

Свойство ХарактеристикаВина связывает вина с их цветом и компонентами вкуса, включая сладость, крепость и букет. имеетЦвет - подсвойство свойства обладаетХарактеристикойВина с более ограниченным диапазоном: ЦветВина. Отношение rdfs:subPropertyOf в этом случае означает, что что-либо со значением X свойства имеетЦвет также имеет свойство обладаетХарактеристикойВина со значением X.

Ниже мы вводим свойство расположенВ, которое связывает вещи с регионами, в которых они расположены.

<owl:ObjectProperty rdf:ID="расположенВ">
  ...
  <rdfs:domain rdf:resource="http://www.w3.org/2002/07/owl#Thing" />
  <rdfs:range rdf:resource="#Регион" />
</owl:ObjectProperty>

Заметьте, как определены домен и диапазон расположенВ. Домен разрешает быть расположенным в регионе чему угодно, включая сами регионы. И транзитивное использование этого отношения по существу создает сеть географически определенных субрегионов и вещей. Те вещи, в которых ничего не расположено, могут относиться к любому классу, в то время как те, в которых расположены другие вещи, должны являться регионами.

Теперь можно расширить определение Вина, чтобы включить понятие о том, что вино сделано по крайней мере из одного Винограда. Как и с определениями свойств, определения класса имеют многократные подразделы, которые неявно соединены.

<owl:Class rdf:ID="Вино"> 
  <rdfs:subClassOf rdf:resource="&food;Напиток"/> 
  <rdfs:subClassOf>
    <owl:Restriction> 
      <owl:onProperty rdf:resource="#сделаноИзВинограда"/>
      <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
    </owl:Restriction> 
  </rdfs:subClassOf>
  ...  
</owl:Class>

Выделенное выше ограничение подкласса

    <owl:Restriction> 
      <owl:onProperty rdf:resource="#сделаноИзВинограда"/>
      <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
    </owl:Restriction> 

определяет неименованный класс, который представляет набор вещей с по крайней мере одним свойством сделаноИзВинограда. Мы называем такие классы анонимными. Включение этого ограничения в определение класса Вино означает, что вещи, являющиеся винами, также являются членами этого анонимного класса. Таким образом, каждое индивидуальное вино должно быть задействованным по крайней мере в одном отношении сделаноИзВинограда.

Теперь мы можем описать класс Винтаж, обсуждаемый ранее.

<owl:Class rdf:ID="Винтаж"> 
  <rdfs:subClassOf>
    <owl:Restriction> 
      <owl:onProperty rdf:resource="#являетсяВинтажем"/>
      <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
    </owl:Restriction>
  </rdfs:subClassOf>
</owl:Class>                                              ¬ 

Свойство являетсяВинтажем связывает Винтаж с Вином.

<owl:ObjectProperty rdf:ID="являетсяВинтажем">
  <rdfs:domain rdf:resource="#Винтаж" />
  <rdfs:range  rdf:resource="#Вино" />
</owl:ObjectProperty>                                     ¬ 

В следующем разделе мы свяжем Винтажи с их годами.

3.2.2. Свойства и типы данных

Мы отличаем свойства по тому, связывают ли они индивидов с индивидами (свойства-объекты) или индивидов с типами данных (свойства-значения). Свойства-значения могут иметь диапазон литералов RDF или простых типов, определенных в XML Schema datatypes.

OWL использует большинство встроенных типов XML Schema. Ссылки на эти типы осуществляются посредством URI для типов http://www.w3.org/2001/XMLSchema. Следующие типы данных рекомендуются для использования с OWL:

xsd:stringxsd:normalizedStringxsd:boolean
xsd:decimalxsd:floatxsd:double
xsd:integerxsd:nonNegativeIntegerxsd:positiveInteger
xsd:nonPositiveIntegerxsd:negativeInteger
xsd:longxsd:intxsd:shortxsd:byte
xsd:unsignedLongxsd:unsignedIntxsd:unsignedShortxsd:unsignedByte
xsd:hexBinaryxsd:base64Binary
xsd:dateTimexsd:timexsd:datexsd:gYearMonth
xsd:gYearxsd:gMonthDayxsd:gDayxsd:gMonth
xsd:anyURIxsd:tokenxsd:language
xsd:NMTOKENxsd:Namexsd:NCName

Вышеупомянутые типы плюс rdfs:Literal формируют встроенные типы данных OWL. Все OWL-рассуждатели обязаны поддерживать типы xsd:integer и xsd:string.

Другие встроенные типы XML Schema могут использоваться в OWL Full, но с предостережениями, описанными в документе Семантика и абстрактный синтаксис OWL.

<owl:Class rdf:ID="ГодВинтажа" />

<owl:DatatypeProperty rdf:ID="год">
  <rdfs:domain rdf:resource="#ГодВинтажа" />    
  <rdfs:range  rdf:resource="&xsd;positiveInteger"/>
</owl:DatatypeProperty> 

Свойство год связывает ГодВинтажа со значениями положительного целого числа. Ниже мы вводим свойство имеетГодВинтажа, которое связывает Винтаж с ГодВинтажа.

В Справке по OWL ([Reference], 6.2) описывается использование owl:oneOf, rdf:List и rdf:rest для того, чтобы определить перечисленный тип данных. Пример показывает, как создать owl:DatatypeProperty счетИгрыВТеннис с диапазоном, включающим элементы списка целочисленных значений {0, 15, 30, 40}.

3.2.3. Свойства индивидов

Сначала мы опишем индивидов классов Регион и Винодельня, а затем мы определим наше первое вино, Каберне-Совиньон.

<Регион rdf:ID="РегионГорыСантаКруз">
  <locatedIn rdf:resource="#РегионКалифорния" />
</Регион>

<Винодельня rdf:ID="ВиноградникГораСантаКруз" />

<КабернеСовиньон
  rdf:ID="КабернеСовиньонВинодельняГораСантаКруз" >
  <расположенВ   rdf:resource="#РегионГорыСантаКруз"/>  
  <имеетПроизводителя    rdf:resource="#ВиноградникГораСантаКруз" />   
</КабернеСовиньон>  

Это определение все еще неполно. Есть другие аспекты винного букета, которые определены в полной онтологии. Но части срастаются воедино. Мы уже могли бы начать рассуждать о том, к каким пунктам меню в нашей онтологии пищи подошло бы это вино. Из последнего определения мы знаем, что его изготавливают на винограднике Гора Санта-Круз. Поскольку это Каберне-Совиньон (см. wine.rdf), мы знаем, что это - сухое красное вино.

Подобным образом к индивидам могут быть добавлены свойства-значения. Ниже мы описываем представителя класса ГодВинтажа и связываем его с определенным значением типа &xsd;positiveInteger.

<ГодВинтажа rdf:ID="Год1998">
  <год rdf:datatype="&xsd;positiveInteger">1998</год>
</ГодВинтажа> 

3.3. Характеристики свойств

Следующие несколько разделов описывают механизмы, используемые для более точного определения свойств. Существует возможность определить характеристики свойства, что обеспечивает мощный механизм для усовершенствованного рассуждения о свойстве.

3.3.1. TransitiveProperty

Если свойство P, определено как транзитивное, тогда для любого x, y, и z:

P(x,y) и P(y,z) предполагают P(x,z)

Свойство расположенВ является транзитивным.

<owl:ObjectProperty rdf:ID="расположенВ">
  <rdf:type rdf:resource="&owl;TransitiveProperty" />
  <rdfs:domain rdf:resource="&owl;Thing" />
  <rdfs:range rdf:resource="#Регион" />
</owl:ObjectProperty>

<Регион rdf:ID="РегионГорыСантаКруз">
  <расположенВ rdf:resource="#РегионКалифорния" />
</Регион>

<Регион rdf:ID="РегионКалифорния">
  <расположенВ rdf:resource="#РегионСША" />
</Регион>

Из-за того, что РегионГорыСантаКруз расположенВ РегионКалифорния, он также должен быть расположенВ РегионСША, поскольку свойство расположенВ - транзитивное.

3.3.2. SymmetricProperty

Если свойство P помечено как симметрическое, тогда для любого x и y:

P(x,y) если P(y,x)

Свойство прилегаетКРегиону - симметричное, тогда как расположенВ - нет. Если быть более точным, расположенВ не предназначено, чтобы быть симметричным. Но в настоящее время ничто в онтологии вина не препятствует ему быть симметричным.

<owl:ObjectProperty rdf:ID="прилегаетКРегиону">
  <rdf:type rdf:resource="&owl;SymmetricProperty" />
  <rdfs:domain rdf:resource="#Регион" />
  <rdfs:range rdf:resource="#Регион" />
</owl:ObjectProperty>

<Регион rdf:ID="РегионMendocino">
  <расположенВ rdf:resource="#РегионКалифорния" />
  <прилегаетКРегиону rdf:resource="#РегионSonoma" />
</Регион>

РегионMendocino прилегает к РегионSonoma и наоборот. РегионMendocino расположен в РегионКалифорния, но не наоборот.

3.3.3. FunctionalProperty

Если свойство P помечено как функциональное, тогда для любого x, y и z:

P(x,y) и P(x,z) предполагают y = z 

В нашей онтологии вина свойство имеетГодВинтажа функционально. Всякое вино имеет уникальный год винтажа. Таким образом, данный индивидуальный Винтаж может быть связан только с единственным годом, используя свойство имеетГодВинтажа. При этом owl:FunctionalProperty не требует, чтобы все элементы домена имели значения. Смотрите обсуждение кардинальности Винтажа.

<owl:Class rdf:ID="ГодВинтажа" />

<owl:ObjectProperty rdf:ID="имеетГодВинтажа">
  <rdf:type rdf:resource="&owl;FunctionalProperty" />
  <rdfs:domain rdf:resource="#Винтаж" />
  <rdfs:range  rdf:resource="#ГодВинтажа" />
</owl:ObjectProperty>

3.3.4. inverseOf

Если свойство P1, помечено как owl:inverseOf P2, то для всех x и y:

P1(x,y) если P2(y,x)

Заметьте, что синтаксис для owl:inverseOf берет в качестве аргумента название свойства. A если B означает (A предполагает B) и (B предполагает A).

<owl:ObjectProperty rdf:ID="имеетПроизводителя">
  <rdf:type rdf:resource="&owl;FunctionalProperty" />
</owl:ObjectProperty>
  
<owl:ObjectProperty rdf:ID="производитВино">
  <owl:inverseOf rdf:resource="#имеетПроизводителя" />
</owl:ObjectProperty>

У Вин есть производители, которые по определению класса Вино ограничены Винодельнями. Тогда каждая Винодельня производит набор вин, которые идентифицируют ее как производителя.

3.3.5. InverseFunctionalProperty

Если свойство P помечено как обратно функциональное, то для всех x, y и z:

P(y,x) и P(z,x) предполагает y = z 

Обратите внимание, что производитВино в предыдущем разделе обратно функциональное. Причина этого в том, что свойство, обратное функциональному свойству, должно быть обратно функциональным. Мы могли бы определить имеетПроизводителя и производитВино следующим образом, и получили бы тот же эффект, как и в предыдущем примере.

<owl:ObjectProperty rdf:ID="имеетПроизводителя" />
  
<owl:ObjectProperty rdf:ID="производитВино">
  <rdf:type rdf:resource="&owl;InverseFunctionalProperty" />
  <owl:inverseOf rdf:resource="#имеетПроизводителя" />
</owl:ObjectProperty>                                     ¬ 

Рассматривайте элементы диапазона обратно функционального свойства как определение ключевого поля при построении баз данных. owl:InverseFunctional предполагает, что элементы диапазона обеспечивают уникальный идентификатор для каждого элемент домена.

В OWL Full мы можем пометить DatatypeProperty как обратно функциональное. Это позволяет нам идентифицировать строку как уникальный ключ. В OWL DL литералы (строковые значения) отделены от owl:Thing, и поэтому OWL DL не разрешает применять InverseFunctional к DatatypeProperty.

3.4. Ограничения свойств

В дополнение к обозначению характеристик свойств, можно разными способами еще больше ограничить диапазон свойства в определенных контекстах. Мы делаем это с помощью ограничений свойств. Различные способы, описанные ниже, могут использоваться только в контексте owl:Restriction. Элемент owl:onProperty указывает на ограничиваемое свойство.

3.4.1. allValuesFrom, someValuesFrom

Мы уже рассмотрели один способ ограничивать типы элементов, которые образуют свойство. До сих пор эти механизмы были глобальными в том смысле, что они относились ко всем представителям данного свойства. Следующие два, allValuesFrom и someValuesFrom - локальные по отношению к содержащему их классу.

Ограничение owl:allValuesFrom требует, чтобы для каждого представителя данного класса, который имеет данное свойство, все значения этого свойства являлись представителями класса, заданного в пункте owl:allValuesFrom.

<owl:Class rdf:ID="Вино">
  <rdfs:subClassOf rdf:resource="&food;Напиток" />
  ...
  <rdfs:subClassOf>
    <owl:Restriction>
      <owl:onProperty rdf:resource="#имеетПроизводителя" />
      <owl:allValuesFrom rdf:resource="#Винодельня" />
    </owl:Restriction>
  </rdfs:subClassOf>
  ...
</owl:Class>

Производителем Вина должна быть Винодельня. Ограничение allValuesFrom на свойство имеетПроизводителя накладывается только для этого класса Вино. Производителей Сыра это локальное ограничение не касается.

owl:someValuesFrom действует похожим образом. Если бы мы в последнем примере заменили owl:allValuesFrom на owl:someValuesFrom, то это означало бы, что по крайней мере одно из свойств имеетПроизводителя для каждого Вино должно указывать на индивида класса Винодельня.

<owl:Class rdf:ID="Вино">
  <rdfs:subClassOf rdf:resource="&food;Напиток" />
  <rdfs:subClassOf>
    <owl:Restriction>
      <owl:onProperty rdf:resource="#имеетПроизводителя" />
      <owl:someValuesFrom rdf:resource="#Винодельня" />
    </owl:Restriction>
  </rdfs:subClassOf>
  ...
</owl:Class>                                             ¬ 

Различие между этими двумя формулировками - это различие между универсальным и экзистенциальным определением количества.

ОтношениеРезультат
allValuesFrom Для всех вин, если они имеют производителей, все производители - винодельни.
someValuesFrom   Все вина имеют хотя бы одного производителя, который является винодельней.

Первое отношение не требует, чтобы вино имело производителя. Если у него есть один или более производителей, то все они должны быть винодельнями. Второе отношение требует, чтобы был по крайней мере один производитель-винодельня, но также могут быть производители, которые не винодельни.

3.4.2. Кардинальность

Мы уже видели примеры указания кардинальности. До текущего момента это были указания минимальной кардинальности. Более точно это был параметр owl:cardinality, который позволяет указать точное количество элементов в связи. Например, мы указали, что у класса Винтаж есть строго один ГодВинтажа.

<owl:Class rdf:ID="Винтаж"> 
  <rdfs:subClassOf>
    <owl:Restriction>
      <owl:onProperty rdf:resource="#имеетГодВинтажа"/>  
      <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
    </owl:Restriction>
  </rdfs:subClassOf>
</owl:Class>

Мы задали свойство имеетГодВинтажа как функциональное, что то же самое, как если сказать, что каждый Винтаж имеет не более одного ГодВинтажа. Применение этого свойства к Винтаж с использованием ограничения кардинальности задает более строгое отношение, что каждый Винтаж имеет строго один ГодВинтажа.

Выражения кардинальности со значениями, ограниченными 0 или 1 являются частью OWL Lite. Это позволяет пользователю уточнить отношения 'по меньшей мере один', 'не более одного' и 'точно один'. Позитивные целочисленные значения кроме 0 и 1 разрешены в OWL DL. owl:maxCardinality может использоваться для указания верхнего предела. owl:minCardinality может использоваться для указания нижнего предела. В комбинации друг с другом они могут использоваться для ограничения кардинальности свойства в пределах числового интервала.

3.4.3. hasValue [OWL DL]

hasValue позволяет нам определять классы, основанные на существовании специфических значений свойства. Следовательно, индивид будет членом такого класса всякий раз, когда по крайней мере одно из его значений свойства будет равно ресурсу, указанному с помощью hasValue.

<owl:Class rdf:ID="Бургундское">
  ...
  <rdfs:subClassOf>
    <owl:Restriction>
      <owl:onProperty rdf:resource="#имеетСладость" />
      <owl:hasValue rdf:resource="#Сухое" />
    </owl:Restriction>
  </rdfs:subClassOf>
</owl:Class>

Здесь мы объявляем, что все Бургундские вина - сухие. То есть, их свойство имеетСладость должно иметь по крайней мере одно значение, равное Сухое.

Как и для allValuesFrom и someValuesFrom, это локальное ограничение. Оно относится к свойству имеетСладость только в отношении Бургундского.

4. Картирование онтологий

Для того, чтобы онтологии имели максимальный эффект, они должны быть широко распространены. А чтобы минимизировать интеллектуальные усилия, затрачиваемые на разработку онтологий, они должны быть пригодными для многократного использования. В лучшем из всех возможных варианте они должны быть составлены из компонентов. Например, Вы могли бы воспользоваться онтологией даты из одного источника и онтологией физического местоположения из другого, и затем расширить понятие местоположения, включив в него период времени, в течение которого данное местоположение сохраняется.

Важно понять, что большая часть усилий по разработке онтологии посвящена связыванию вместе классов и свойств так, чтобы максимально точно передать заложенный в понятия смысл. Мы хотим, чтобы простые утверждения о членстве в классе имели широкие и полезные последствия. Это - самая сложная часть разработки онтологии. Если Вы можете найти существующую онтологию, которая уже широко используется и хорошо проработана, то имеет смысл приспособить ее для своих нужд.

Также заманчиво будет слить воедино целую коллекцию онтологий. В этом случае помощь специального инструментария будет почти наверняка необходима для поддержания согласованности.

4.1. Эквивалентность между классами и свойствами
equivalentClass, equivalentProperty

Чтобы связать вместе ряд онтологий, входящих в качестве компонентов в какую-то третью онтологию, часто полезно иметь возможность указать, что данные класс или свойство в одной онтологии эквивалентны классу или свойство во второй онтологии. Эта способность должна использоваться с осторожностью. Если объединенные онтологии являются противоречащими (все А - это Б, в другой все А - это не Б), то не будет никакого расширения (ни индивидов, ни отношений), который удовлетворяли бы получающуюся комбинацию.

В онтологии пищи мы хотим связать особенности вина в описаниях обеденных блюд обратно с онтологией вина. Один из способов сделать это - определить класс в онтологии пищи (&food;Wine), а затем объявить его эквивалентным существующему классу вина в винной онтологии.

<owl:Class rdf:ID="Вино">
  <owl:equivalentClass rdf:resource="&vin;Вино"/>
</owl:Class>

Свойство owl:equivalentClass используется, чтобы показать, что два класса имеют абсолютно одинаковых представителей. Заметьте, что в OWL DL классы просто обозначают наборы индивидов, но не самих индивидов. Однако, в OWL Full мы можем использовать owl:sameAs между двумя классами, чтобы показать, что они идентичны во всех отношениях.

Конечно, пример выше несколько запутанный, так как мы всегда можем использовать &vin;Вино везде, где мы использовали бы #Вино, и получали бы при этом тот же самый эффект без переопределения. Более оправданное использование было бы в случае, если б мы зависели от двух независимо созданных онтологий, и заметили, что они используют URI O1:foo и O2:bar для ссылки на один и тот же класс. Чтобы свести их вместе, мог бы использоваться owl:equivalentClass, т.е., чтобы постулаты от этих двух онтологий были объединены.

Мы уже видели, что выражения класса могут быть адресатами конструкций rdfs:subClassOf. Также они могут быть адресатом owl:equivalentClass. Опять таки, это избавляет от необходимости изобретать названия для каждого выражения класса и обеспечивает мощную способность определения, основанную на удовлетворении характеристик свойств.

<owl:Class rdf:ID="ТехасскиеВещи"> 
  <owl:equivalentClass>
    <owl:Restriction>
      <owl:onProperty rdf:resource="#расположенВ" />
      <owl:someValuesFrom rdf:resource="#РегионТехас" />
    </owl:Restriction>
  </owl:equivalentClass>
</owl:Class>                                                ¬ 

ТехасскиеВещи - это именно те вещи, что расположены в Техасском Регионе. Различие между таким использованием owl:equivalentClass и использованием rdfs:subClassOf - это различие между условиями "необходимого" и "необходимого и достаточного". В случае использования subClassOf вещи, расположенные в Техасе не обязательно должны относится к классу ТехасскиеВещи. Но при использовании owl:equivalentClass все, что расположено в Техасе, должно быть в классе ТехасскиеВещи.

ОтношениеРезультат
subClassOfТехасскиеВещи(x) предполагает расположенВ(x,y) и РегионТехас(y)
equivalentClass  ТехасскиеВещи(x) предполагает расположенВ(x,y), и РегионТехас(y)
расположенВ(x,y) и РегионТехас(y) считается ТехасскиеВещи(x)

Чтобы связать подобным образом свойства, мы используем owl:equivalentProperty.

4.2. Идентичность между индивидами
sameAs

Этот механизм похож на тот, что для классов, но объявляет идентичными двух индивидов. Примером может быть:

<Вино rdf:ID="ЛюбимоеВиноМихаила"> 
  <owl:sameAs rdf:resource="#StGenevieveТехасскоеБелое" /> 
</Вино>                                                  ¬ 

Данный пример не несет большой пользы. Все, что мы узнаем из него - это то, что Михаил любит недорогое местное вино. Более типично использовать sameAs для того, чтобы приравнять друг с другом индивидов, определяемых в разных документах с целью унифицировать две онтологии.

Здесь мы сталкиваемся с важным моментом. В OWL нет допущения об уникальном имени. То, что два имени отличны друг от друга, не означает, что они обозначают различных индивидов.

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

<owl:Thing rdf:about="#BancroftШардоне">
  <имеетПроизводителя rdf:resource="#Bancroft" />
  <имеетПроизводителя rdf:resource="#Beringer" />
</owl:Thing>                                             ¬ 

В том случае, если это не находится в противоречии с другой информацией в нашей онтологии, это просто означает, что Bancroft = Beringer.

Заметьте, что использование sameAs для того, чтобы приравнять два класса - это не то же самое, что приравнивание их с помощью equivalentClass; это заставляет классы быть интерпретируемыми как индивиды, а этого достаточно, чтобы отнести онтологию к категории OWL Full. В OWL Full sameAs может использоваться, чтобы приравнять что-угодно: класс и индивида, свойство и класс, и т.д., и приводит к тому, что оба параметра интерпретируются как индивиды.

4.3. Различность индивидов
differentFrom, AllDifferent

Этот механизм обеспечивает эффект, противоположный sameAs.

<СладостьВина rdf:ID="Сухое" />

<СладостьВина rdf:ID="Сладкое">  
  <owl:differentFrom rdf:resource="#Сухое"/>  
</СладостьВина> 

<СладостьВина rdf:ID="Полусухое">
  <owl:differentFrom rdf:resource="#Сухое"/> 
  <owl:differentFrom rdf:resource="#Сладкое"/> 
</СладостьВина>

Это - один из способов утверждать, что эти три значения взаимно отличны. В ряде случаев важно гарантировать такие неперекрывающиеся характеристики. Без таких утверждений мы могли б описать такое вино, которое было бы и Сухое, и Сладкое одновременно. Теперь же мы заявили, что свойство hasSugar, характеризующее вино, не может иметь более одного значения. Если бы мы допустили ошибку и утверждали бы, что вино одновременно и Сухое, и Сладкое, без тех элементов differentFrom, что указаны выше, это подразумевало бы, что Сухое и Сладкое идентичны. С элементами - мы вместо этого получили бы противоречие.

Существует более удобный механизм для определения набора взаимно различных индивидов. Следующий фрагмент утверждает, что Красное, Белое и Розовое - все взаимно различны.

<owl:AllDifferent>
  <owl:distinctMembers rdf:parseType="Collection">
    <vin:ЦветВина rdf:about="#Красное" />
    <vin:ЦветВина rdf:about="#Белое" />
    <vin:ЦветВина rdf:about="#Розовое" />
  </owl:distinctMembers>
</owl:AllDifferent>

Заметьте, что owl:distinctMembers может использоваться только в комбинации с owl:AllDifferent

В онтологии вина мы обеспечиваем утверждение owl:AllDifferent для всех ХарактеристикВина. Мы также заявляем, что все Винодельни различны. Если бы мы хотели добавить новую винодельню в какую-нибудь другую онтологию и утверждали, что она обособлена от всех тех, что уже были определены, то мы должны были бы вырезать и вставить оригинал утверждения owl:AllDifferent и добавить в список нового производителя. Более простого способа расширить коллекцию owl:AllDifferent в OWL DL нет. В OWL Full возможны другие подходы с использованием триплетов RDF и конструкции rdf:List.


5. Сложные классы [OWL DL]

Для формирования классов OWL обеспечивает дополнительные конструкции. Эти конструкции могут использоваться для создания так называемых выражений класса. OWL поддерживает основные операторы множеств, а именно объединение, пересечение и дополнение. Они называются, соответственно, owl:unionOf, owl:intersectionOf и owl:complementOf. Дополнительно классы могут быть перечисленными. Расширения класса могут быть заявлены явно посредством конструктора oneOf. И можно утверждать, что расширения класса должны быть непересекающимися.

Заметьте, что выражения класса могут быть вложены одно в другое, не требуя создания имен для каждого промежуточного класса. Это позволяет использование операций со множествами для создания сложных классов из анонимных классов или классов с ограничениями по значению.

5.1. Операторы множеств
intersectionOf, unionOf, complementOf

Запомните, что расширения классов OWL - это множества, состоящие из индивидов, которые являются членами этого класса. OWL обеспечивает средства для манипулирования расширениями класса, используя основные операторы множеств.

5.1.1. Пересечение [некоторое использование OWL DL]

Следующие примеры демонстрируют использование конструкции intersectionOf.

<owl:Class rdf:ID="БелоеВино">
  <owl:intersectionOf rdf:parseType="Collection">
    <owl:Class rdf:about="#Вино" />
    <owl:Restriction>
      <owl:onProperty rdf:resource="#имеетЦвет" />
      <owl:hasValue rdf:resource="#Белое" />
    </owl:Restriction>
  </owl:intersectionOf>
</owl:Class>

Классы, созданные с использованием операций множеств, - более похожи на определения, чем что-либо, что мы видели до сих пор. Члены класса полностью определены операцией множеств. Конструкция выше заявляет, что БелоеВино - это именно пересечение класса Вино и набора вещей, у которых белый цвет. Это означает, что, если что-то - белого цвета и при этом вино, тогда это - представитель БелоеВино. Без такого определения мы можем знать, что белые вина - это вина и что они белые, но не наоборот. Это - важный инструмент для категоризации индивидов. (Заметьте, что 'rdf:parseType="Collection"' является необходимым синтаксическим элементом.)

<owl:Class rdf:about="#Бургундское">
  <owl:intersectionOf rdf:parseType="Collection">
    <owl:Class rdf:about="#Вино" />
    <owl:Restriction>
      <owl:onProperty rdf:resource="#расположенВ" />
      <owl:hasValue rdf:resource="#РегионБургонь" />
    </owl:Restriction>
  </owl:intersectionOf>
</owl:Class>

Здесь мы определяем Бургундское как включающие именно те вина, которые имеют по крайней мере одно отношение расположенВ со значением Бургонь. Мы могли бы объявить новый класс ВещиИзРегионаБургонь и использовать его как класс в конструкции owl:intersectionOf. Но поскольку мы не имеем никакого другого использования для ВещиИзРегионаБургонь, декларация выше короче, яснее и не требует изобретания имени.

<owl:Class rdf:ID="БелоеБургундское">
  <owl:intersectionOf rdf:parseType="Collection">
    <owl:Class rdf:about="#Бургундское" />
    <owl:Class rdf:about="#БелоеВино" />
  </owl:intersectionOf> 
</owl:Class>

Наконец, класс БелоеБургундское - это в точности пересечение белых вин и Бургундских. Бургундские в свою очередь выращены во французском регионе Бургонь и являются сухими винами. Соответственно все индивидуальные вина, которые соответствуют этим критериям - часть расширения класса БелоеБургундское.

5.1.2. Объединение [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>                                             ¬ 

Тут говорится, что представители класса Фрукты представляют собой подмножество пересечения сладких и несладких плодов, которое, как мы можем ожидать, будет пустым множеством.

5.1.3. Дополнение [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>                                             ¬ 

Здесь определен класс НеФранцузскоеВино как пересечение Вино с множеством всех вещей, нерасположенных во Франции.

5.2. Перечисленные классы
oneOf [OWL DL]

OWL обеспечивает средства определения класса через прямое перечисление его членов. Это делается с помощью конструкции oneOf. Замечательно, что это определение полностью определяет диапазон класса, так, что никакие другие индивиды не могут быть объявлены как принадлежащие к данному классу.

Следующий фрагмент определяет класс ЦветВина, членами которого являются индивиды Белое, Розовое и Красное.

<owl:Class rdf:ID="ЦветВина">
  <rdfs:subClassOf rdf:resource="#ХарактеристикаВина"/>
  <owl:oneOf rdf:parseType="Collection">
    <owl:Thing rdf:about="#Белое"/>
    <owl:Thing rdf:about="#Розовое"/>
    <owl:Thing rdf:about="#Красное"/>
  </owl:oneOf>
</owl:Class>

Первое, что тут следует понять - это то, что никакие другие индивиды не могут быть правомочными представителями класса ЦветВина, так как этот класс был определен перечислением.

Каждый элемент конструкции oneOf должен быть правильно объявленным индивидом. Индивид должен принадлежать какому-нибудь классу. В вышеупомянутом примере, на каждого индивида ссылались по имени. Мы использовали owl:Thing как простое клише, чтобы задать ссылку. Альтернативно, мы могли бы сослаться на элементы этого набора согласно их специально определенному типу ЦветВина:

<owl:Class rdf:ID="ЦветВина">
  <rdfs:subClassOf rdf:resource="#ХарактеристикаВина"/>
  <owl:oneOf rdf:parseType="Collection">
    <ЦветВина rdf:about="#Белое" />
    <ЦветВина rdf:about="#Розовое" />
    <ЦветВина rdf:about="#Красное" />
  </owl:oneOf>
</owl:Class>

Другие более сложные описания индивидов также являются правильными элементами конструкции oneOf, например:

<ЦветВина rdf:about="#Белое">
  <rdfs:label>Белое</rdfs:label>
</ЦветВина>                                             ¬ 

Дополнительные примеры использования oneOf см. в Справке по OWL.

5.3. Непересекающиеся классы
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:disjointWith rdf:resource="#Десерт"/>
  <owl:disjointWith rdf:resource="#Фрукты"/>
</owl:Class>

Пример с Паста демонстрирует множественные непересекающиеся классы. Заметьте, что в нем только утверждается, что Паста не пересекается со всеми этими другими классами. Тут не утверждается, например, что Мясо и Фрукты не пересекаются между собой. Чтобы утверждать, что набор классов взаимно не пересекается, должны существовать утверждения owl:disjointWith для каждой пары классов.

Часто требуется определить класс как объединение нескольких взаимно непересекающихся подклассов.

<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>

Здесь мы определяем, что Фрукты - это именно объединение СладкиеФрукты и НесладкиеФрукты. И мы знаем, что эти подклассы точно делят Фрукты на два различных подкласса, потому что они являются непересекающимися. С ростом числа взаимно непересекающихся классов число утверждений о непересекаемости растет пропорционально n2. Однако, в тех случаях использования, что были у нас, n достаточно маленькое.

Когда n большое, чтобы избежать роста числа утверждений в квадратичной прогрессии, могут использоваться альтернативные подходы. Один такой метод проиллюстрирован в Наборе тестов OWL

Проиллюстрированный метод работает следующим образом. Мы описываем родительский класс, чьи элементы имеют свойство с кардинальностью, равной одному. Т.е. каждый представитель должен иметь одно и только одно значение для этого свойства. Тогда, для каждого подкласса родительского класса мы требуем, чтобы его представители имели особенное уникальное значение для этого свойства. В этом случае ни один из отличных друг от друга подклассов не может иметь общих членов.


6. Версии онтологий

Онтологии, подобно программному обеспечению, требуют технической поддержки и, таким образом, изменяются со временем. В пределах элемента owl:Ontology (обсуждаемого выше), можно указать ссылку на предыдущую версию онтологии. Для обеспечения этой связи предназначено свойство owl:priorVersion, которое может использоваться, чтобы проследить историю версий онтологии.

<owl:Ontology rdf:about=""> 
  ...
  <owl:priorVersion rdf:resource="http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine"/> 
  ...
</owl:Ontology>

Указанная онтология - это предыдущая версия той, которая определена в текущем документе.

Версии онтологий могут быть несовместимыми друг с другом. Например, предыдущая версия онтологии может содержать утверждения, которые противоречат текущей версии. В пределах элемента owl:Ontology , мы используем тэги owl:backwardCompatibleWith и owl:incompatibleWith, чтобы указать на совместимость или ее отсутствие с предыдущими версиями данной онтологии. Если owl:backwardCompatibleWith не объявлен, то совместимость не должна предполагаться. Кроме того, owl:versionInfo обеспечивает средства, пригодные для использования системами отслеживания версий. В противоположность предыдущим трем тэгам, типом данных owl:versionInfo является литерал, и этот тэг может использоваться, чтобы аннотировать классы и свойства в дополнение к онтологиям.

Для многих целей, отслеживания версий при известной степени детализации всей онтологии недостаточно. Авторы могут захотеть хранить информацию о версиях для классов, свойств и индивидов - и даже этого, возможно, будет недостаточно. Имеющие свойство разрастаться, выражения классов в OWL предполагают, что одна онтология может добавить ограничения к (именованному) классу, определенному в другой онтологии, и сами эти дополнительные ограничения могут потребовать информации о версии.

OWL Full обеспечивает экспрессивную мощь для того, чтобы сделать утверждения любого вида о классе, то есть, что это он является представителем другого класса, или что он (а не его представители) имеет свойство и значение для этого свойства. Эта структура может использоваться, чтобы построить онтологию классов и свойств для отслеживания информации о версиях. OWL namespace включает два предопределенных класса, которые могут использоваться для этих целей: owl:DeprecatedClass и owl:DeprecatedProperty. Они предназначены для указания того, что класс или свойство вероятно будут изменены несовместимым образом в предстоящем выпуске:

...
  <owl:DeprecatedClass rdf:ID="&vin;БутылкаВина" />
  <owl:DeprecatedProperty rdf:ID="&vin;имеетКосточки" />
...                                                            ¬ 

Важно отметить, что owl:DeprecatedClass и owl:DeprecatedProperty не имеют никакой дополнительной семантики, и то, что они используются по предназначению - целиком на совести разработчиков и пользователей OWL.


7. Примеры использования

Как только становится доступной начальная онтология домена, может быть развито большое количество приложений, использующих эту онтологию. В этом разделе мы описываем некоторые примеры использования в домене вин.

7.1. Винный Портал

Сегодня существует множество сайтов, называющихся винными порталами. Например, Google обеспечивает 152 000 соответствий для запроса "wine portal". Одно из верхних соответствий - сайт "Wine-Portal.com", обеспечивает доступ к множеству сайтов. Многие сайты, утверждающие себя винными порталами, являются, по существу, информационными сайтами. Например, первый запущенный сайт этого портала, названный 'пробковая кухня' (www.corkcuisine.com/), обеспечивает информацией о соответствии вина и пищевых продуктов, вина как подарков, и т.д.

Просматривая любую из тем, посетитель находит совокупность страниц, содержащих информацию и иногда сервис, связанный с данной темой. Например, 'аксессуары и подарки' содержат информацию о том, как выбрать особенные образцы вин, а также содержит ссылки на существенное количество онлайн-магазинов. Другой раздел верхнего уровня, названный 'магазин' имеет подобласть, названную 'покупка вина', где пользователь может найти онлайновые (или 'уличные') магазины (категоризированные по странам). Сегодня, эти два сайта - только два примера из многих, но они дают общее представление о винном портале, обеспечивающем собрание информации и услуг, связанных с данной специфической темой.

Когда смотришь на эти сайты более детально, то сегодня не ясно, насколько они зависят от онтологий. Например, просмотр источника html не дает никаких свидетельств использования онтологий. Однако, ясно, что эти сайты могли бы использовать онтологии, если бы некоторые онтологии вина были доступны.

Одно простое использование онтологий в порталах - для организации и просмотра. Список категорий выше мог бы быть создан от нескольких верхних уровней связанных с вином классов. Запросы могли бы эксплуатировать онтологии вина, чтобы добыть связанную с вином информацию. Если провести поиск термина, содержавшегося в онтологии, то запрос мог бы быть расширен с информацией о подклассах, чтобы найти более уместные ответы. Порталы могли бы автоматически обновлять себя информацией по разным темам. С очень мощными способностями к рассуждению они могли бы даже идентифицировать более вероятные коммерческие винные сайты и вести переговоры, чтобы включить их в состав портала.

7.2. Винный агент

Мы запустили проект винный агент в описательных целях. В нашей первоначальной идее, целью винного агента было рекомендовать вина, сопровождающие разные блюда. Это приложение задействует онтологию, используемую как пример в этом руководстве. Эта онтология вина доступна в библиотеке онтологий DAML и названа wines.

Персонализированный винный агент может обеспечивать множество сервисов для человека.
Агент может использоваться, чтобы рекомендовать вина при ряде ограничений (например, по типу подаваемых блюд), агент может найти информацию об особом вине или особом классе вин, он может искать подходящие аксессуары для вина (такие как особого вида стаканы, подходящего для этого сорта вина и т.д.).

Ниже, мы описываем пример в простой опытной системе, которая была написана как студенческий проект.

Рассмотрите следующий сценарий:

Кто-то планирует званый обед, и, по крайней мере, один из гостей хорошо разбирается в винах. Хозяин хотел бы подобрать вино, которое хорошо соответствуют к блюдам в меню. Хозяин также хотел бы показаться хорошо осведомленным о винах, подаваемых в этот раз. Также хозяин хотел бы иметь к обеду соответствующие аксессуары. Предположим, хозяин решил подать особый томатный соус с горячей пастой в качестве основного блюда.

Чтобы сервировать соответствующие пище вина, хозяину нужна информация о сочетании вина и пищи. Чтобы казаться хорошо осведомленным о винах, хозяину был бы полезен доступ к информации о винах, уместных к такому случаю. Чтобы иметь соответствующие винные принадлежности, хозяину нужна информация о том, какие аксессуары приемлемы в данной ситуации (и в пределах ценового диапазона, на который расчитвает хозяин).

На основе онтологии вина, учитывая описание блюд, винный агент может предложить тип вина, подходящий к пище. Винный агент предлагает Цинфандель как лучший выбор для данной пищи. Дополнительно, основываясь на онтологии, винный агент может предложить особый цинфандель, возможно Мариетта Цинфандель. Учитывая информацию, что вино должно быть цинфандель, винный агент может поискать место, чтобы приобрести или цинфандель на выбор, или может найти то особое вино Мариетта Цинфандель. Учитывая онтологию, содержащую соответствующие источники для закупок вина (возможно фильтрованные по местоположению хозяина и местоположению продавца), винный агент может пойти на сайт типа wine.com и задать поиск 'цинфандель', возвращая оформленные в список вина цинфандель для продажи на этом сайте. Винный агент может попытаться найти Marietta Zinfandel или от самой винодельни, или от других торговых посредников. Он бы мог, например, найти (поиском на Google или структурированным поиском избранных веб-сайтов), что winelibrary.com имеет в продаже Мариетта Цинфандель 1999 Винтаж по цене 13.99 $. Винный агент мог бы использовать дополнительную фильтрацию по ценовому диапазону, заданному или потребителем, или по предположению, основанному на сорте вина.

Теперь винный агент может попытаться обеспечить информацию вообще о цинфанделе или о Мариетта Цинфандель, в частности. Он мог бы использовать онтологию о винных сайтах, чтобы найти информацию о специфических винах. Например, описание производителя об их новом цинфанделе. Дополнительно могут быть полезны обзоры из уважаемых источников типа Wine Spectator. Если обзора о Мариетта Цинфандель не доступно на любимом сайте обзоров вин, то может быть полезно поискать связанную информацию типа обзоров о цинфанделе из того же региона, в данном случае цинфандель из округа Sonoma, Калифорния.

Общая информация также может быть полезна. Хозяин может захотеть почитать немного и может заинтересоваться книгами по вину вообще или о цинфанделе в частности. Например, хозяин может заинтересоваться книгами о цинфанделе, имеющимися на Amazon.com для продажи. Хозяин также может интересоваться информацией о винах из того же региона, и таким образом может заинтересоваться цинфанделем из Sonoma. Винный агент может располагать типичной доступной информацией, которая связана с его главными областями знания. Например, данный винный агент заинтересован в сочетании пищи и вин, так что он может иметь бесплатную и платную информацию по этой теме типа статьи Винного Обозревателя о сочетании пищи и вина.

Хозяин обеда может также захотеть приобрести соответствующие случаю винные принадлежности. Вино подается в бокалах, и различные сорта вин лучше сервировать с помощью различных видов стаканов. Например, если хозяин выбрал блюда, для которых подходит цинфандель, хозяин может захотеть узнать, что Riedel - это известный изготовитель винной стеклянной посуды. Хозяин может также захотеть связаться с Винным Энтузиастом (уважаемый поставщик винных товаров) и узнать, что у Винного Энтузиаста имеются на продажу Riedel's Vinum Zinfandel glass в наборе из 4 штук за $63.95 (или со скидкой - за $59.95, если купить два набора по 4 стакана). Хозяину может также будет интересно узнать, что на Amazon.com есть Reidel's Sommelier Zinfandel single stem glass, доступные за $49.99 (с ценой по прейскуранту $65.00). Также на Amazon в продаже есть такие же стаканы для вина как у Винного Энтузиаста в наборах по 6 шт. (а не по 4) за $79.99 (с ценой по прейскуранту 119.40 $). Винный агент мог бы обеспечить сравнительный список для стеклянной посуды, подобранной к данному случаю (то есть подходящей, чтобы сервировать цинфандель), чтобы сравнить ее по цене или другим критериям, выбранным из списка свойств в онтологии.

Хозяин обеда может захотеть посмотреть другие винные аксессуары. Из онтологии мы знаем, что штопоры - это винные аксессуары. Подклассы штопоров могут быть определены в нашей онтологии или же такая информация могла бы быть найдена на соответствующих винных сайтах. На Винном Энтузиасте есть ряд штопоров, которые они рекомендуют (с описаниями типов и ценовых диапазонов). Они также различают штопоры по типу (рычажный, официантский, стационарный, выкручивающий и вакуумный), и хозяин обеда может захотеть получить информацию об этих разновидностях.

Винный агент может использоваться с разными уровнями изощренности в зависимости от полноты знания в данной области, заключенного в онтологии, и от информационных сайтов и сайтов услуг. В этом примере мы задействовали только информацию о винах, сортах, комбинациях пищи и вина, некоторых винных принадлежностях и связанных с ними свойствах. Мы, конечно, могли бы еще больше расширить эту онтологию, чтобы включить больше информации и больше опций для пользователя.

Эволюционирующий пример такого винного агента доступен в сети.


Благодарности

Этот документ - результат обширных дискуссий всей Рабочей группы веб-онтологий . Участники этой рабочей группы: Yasser alSafadi, Jean-François Baget, James Barnette, Sean Bechhofer, Jonathan Borden, Frederik Brysse, Stephen Buswell, Jeremy Carroll, Dan Connolly, Peter Crowther, Jonathan Dale, Jos De Roo, David De Roure, Mike Dean, Larry Eshelman, Jérôme Euzenat, Tim Finin, Nicholas Gibbins, Sandro Hawke, Patrick Hayes, Jeff Heflin, Ziv Hellman, James Hendler, Bernard Horan, Masahiro Hori, Ian Horrocks, Jane Hunter, Francesco Iannuzzelli, Rüdiger Klein, Natasha Kravtsova, Ora Lassila, Massimo Marchiori, Deborah McGuinness, Enrico Motta, Leo Obrst, Mehrdad Omidvari, Martin Pike, Marwan Sabbouh, Guus Schreiber, Noboru Shimizu, Michael Sintek, Michael K. Smith, John Stanton, Lynn Andrea Stein, Herman ter Horst, David Trastour, Frank van Harmelen, Bernard Vatant, Raphael Volz, Evan Wallace, Christopher Welty, Charles White и John Yanosy.

Один из ранних критических текстов по сложным ограничения написал Raphael Volz, Forschungszentrum Informatik (FZI). Существенный вклад был сделан DAML+OIL Walkthru. Jeremy Carroll, Jerome Euzenat, Jeff Heflin, Kevin Page и Peter F. Patel-Schneider обеспечили подробные обзоры. На встрече Рабочей группы 8 октября 2002, Stephen Buswell, Ruediger Klein, Enrico Motta и Evan Wallace сделали детальный пересмотр данной онтологии, приведший к существенным изменениям. На встрече Рабочей группы 10 января 2003, Jonathan Dale, Bernard Horan, Guus Schreiber и Jeff Heflin провели детальный анализ этого Руководства и внесли изменения. Публичные обсуждения обеспечили много полезных предположений и исправлений.


Словарь OWL

Атрибут
как в XML
Определение класса
неформальный термин для элемента owl:Class
Описание класса
описывает класс OWL, или задавая имя класса, или обозначая область определения безымянного (анонимного) класса.
Имя класса
неформальный термин для значения атрибута owl:Class rdf:ID.
Класс
как в RDF
Компонент
части определения, например, аргументы оператора intersection-of в определении класса
Концепт
неформальный термин для абстракций "в миру", которые описывает онтология
Принуждение
неформальный термин для обсуждения эффекта ограничения
Свойство данных
альтернативный термин для свойства-значения
Свойство-значение
свойство OWL, которое связывает индивидов со значениями
Тип данных
тип данных RDFS, почти всегда является одним из встроенных типов данных XML Schema
Элемент
(1) как в XML
(2) элемент множества
Entity
как в XML
Клауза импорта
информация в документе онтологии плюс информация во всех онтологиях, которые импортированы в данную и в импортированные онтологии
Свойство, означающее индивида
альтернативный термин для свойства-объекта
Индивид
представитель класса OWL, то есть ресурс, который принадлежит области определения данного OWL-класса
Представление
отношение между индивидом и классом
Представитель
член области определения OWL-класса
Имя
как в XML Namespaces
Поименованный класс
OWL-класс со связанным идентификатором
Нод (узел)
как в графах RDF
OWL-класс
RDFS-класс, который относится к области определения owl:Class
Свойство-объект
свойство OWL, которое связывает индивидов с другими индивидами
Объект
(1) объект RDF-триады
(2) альтернативный термин для индивида (используется по историческим причинам)
Документ онтологии
веб-документ, который содержит онтологию, как правило, обозначаемую наличием в документе элемента owl:Ontology
Онтология
(1) коллекция информации, как правило, включающая информацию о классах и свойствах
(2) информация, содержащаяся в документе онтологии
Определение свойства
неформальный термин для элемента owl:ObjectProperty и/или элемента owl:DatatypeProperty
Ресурс
элемент, обсуждаемый в домене RDF
Ограничение, глобальное
зарезервировано для обсуждения домена и диапазона свойств
Ограничение, локальное
[см. выше]
Ограничение
обычно часть определения класса, оператор, который выражает принуждение, локальное по-умолчанию
Множество
математическое множество
Оператор
как в графах RDF
Тип
как в RDF (rdf:type)
URI ссылка
как в RDF
Неименованный класс
OWL-класс без связанного идентификатора, обычно компонент ограничений.
Словарь (лексика)
набор URI ссылок



Перечень терминов и ссылок

Перечень терминов

ТерминРаздел
anonymous class 3.2.1.
class 3.1.3.
cardinality 3.4.2.
complement 5.1.3.
datatype 3.2.1.
datatype свойство 3.2.1.
domain 3.2.1.
entailed 1.
enumerated 5.
extension 3.1.
instance of 3.1.3.
intersectionOf 5.1.1.
imports 2.2.
individual 3.1.3.
instance 3.1.3.
monotonic 2.
object properties 3.2.1.
ontology 1.
open world 2.
OWL DL 1.1.
OWL Full 1.1.
OWL Lite 1.1.
property 3.2.1.
range 3.2.1.
restriction class 3.4.1.
union 5.1.2.
unique names 4.2.


Перекрестные ссылки в Руководстве, Справке и Семантике

Руководство по OWLСправка по OWLСемантика OWL
owl:AllDifferent / 4.3. owl:AllDifferent owl:AllDifferent
owl:allValuesFrom / 3.4.1. owl:allValuesFrom owl:allValuesFrom
owl:AnnotationProperty / 2.2. owl:AnnotationProperty owl:AnnotationProperty
owl:backwardCompatibleWith / 6. owl:backwardCompatibleWith owl:backwardCompatibleWith
owl:cardinality / 3.4.2. owl:cardinality owl:cardinality
owl:Class / 3.1.1. owl:Class owl:Class
owl:complementOf / 5.1.3. owl:complementOf owl:complementOf
  owl:DataRange owl:DataRange
owl:DatatypeProperty / 3.2.2. owl:DatatypeProperty owl:DatatypeProperty
owl:DeprecatedClass / 6. owl:DeprecatedClass  
owl:DeprecatedProperty / 6. owl:DeprecatedProperty  
owl:differentFrom / 4.3. owl:differentFrom owl:differentFrom
owl:disjointWith / 5.3. owl:disjointWith owl:disjointWith
owl:distinctMembers / 4.3. owl:distinctMembers owl:distinctMembers
owl:equivalentClass / 4.1. owl:equivalentClass owl:equivalentClass
owl:equivalentProperty / 4.1. owl:equivalentProperty owl:equivalentProperty
owl:FunctionalProperty / 3.3. owl:FunctionalProperty owl:FunctionalProperty
owl:hasValue / 3.4.3. owl:hasValue owl:hasValue
owl:imports / 2.2. owl:imports owl:imports
owl:incompatibleWith / 6. owl:incompatibleWith owl:incompatibleWith
owl:intersectionOf / 5.1.1. owl:intersectionOf owl:intersectionOf
owl:InverseFunctionalProperty / 3.3. owl:InverseFunctionalProperty owl:InverseFunctionalProperty
owl:inverseOf / 3.3. owl:inverseOf owl:inverseOf
owl:maxCardinality / 3.4.2. owl:maxCardinality owl:maxCardinality
owl:minCardinality / 3.4.2. owl:minCardinality owl:minCardinality
owl:Nothing / 3.1.1. owl:Nothing owl:Nothing
owl:ObjectProperty / 3.2.1. owl:ObjectProperty owl:ObjectProperty
owl:oneOf / 5.2. owl:oneOf owl:oneOf
owl:onProperty / 3.4. owl:onProperty owl:onProperty
owl:Ontology / 2.2. owl:Ontology owl:Ontology
  owl:OntologyProperty owl:OntologyProperty
owl:priorVersion / 6. owl:priorVersion owl:priorVersion
owl:Restriction / 3.4. owl:Restriction owl:Restriction
owl:sameAs / 4.2. owl:sameAs owl:sameAs
owl:someValuesFrom / 3.4.1. owl:someValuesFrom owl:someValuesFrom
owl:SymmetricProperty / 3.3. owl:SymmetricProperty owl:SymmetricProperty
owl:Thing / 3.1.1. owl:Thing owl:Thing
owl:TransitiveProperty / 3.3. owl:TransitiveProperty owl:TransitiveProperty
owl:unionOf / 5.1.2. owl:unionOf owl:unionOf
owl:versionInfo / 6. owl:versionInfo owl:versionInfo
    rdf:List
    rdf:nil
rdf:type   rdf:type
rdfs:comment / 2.2.   rdfs:comment
rdfs:Datatype / 3.2.2.   rdfs:Datatype
rdfs:domain / 3.2.1. rdfs:domain rdfs:domain
rdfs:label / 3.1.1.   rdfs:label
rdfs:Literal / 3.3.   rdfs:Literal
rdfs:range / 3.2.1. rdfs:range rdfs:range
rdfs:subClassOf / 3.1.1. rdfs:subClassOf rdfs:subClassOf
rdfs:subPropertyOf / 3.2.1. rdfs:subPropertyOf rdfs:subPropertyOf

Ссылки

OWL

[OWL Семантика и абстрактный синтаксис]
OWL Web Ontology Language Semantics and Abstract Syntax , Peter F. Patel-Schneider, Patrick Hayes, and Ian Horrocks, Editors. Рекомендация W3C, 10 февраля 2004,
http://www.w3.org/TR/2004/REC-owl-semantics-20040210/.
Последняя версия доступна по адресу http://www.w3.org/TR/owl-semantics/.
[OWL Краткий обзор]
OWL, язык веб-онтологий. Краткий обзор , Редакторы Deborah L. McGuinness и Frank van Harmelen. Рекомендация W3C, 10 февраля 2004,
http://www.w3.org/TR/2004/REC-owl-features-20040210/.
Последняя версия доступна по адресу http://www.w3.org/TR/owl-features/.
[OWL Справка]
OWL Web Ontology Language Reference , Mike Dean and Guus Schreiber, Editors. Рекомендация W3C, 10 февраля 2004,
http://www.w3.org/TR/2004/REC-owl-ref-20040210/.
Последняя версия доступна по адресу http://www.w3.org/TR/owl-ref/.
[OWL Требования]
OWL Web Ontology Language Use Cases and Requirements , Jeff Heflin, Editor. Рекомендация W3C, 10 февраля 2004,
http://www.w3.org/TR/2004/REC-webont-req-20040210/.
Последняя версия доступна по адресу http://www.w3.org/TR/webont-req/.
[OWL Тестовые образцы]
OWL Web Ontology Language Test Cases , Jeremy J. Carroll and Jos De Roo, Editors. Рекомендация W3C, 10 февраля 2004,
http://www.w3.org/TR/2004/REC-owl-test-20040210/.
Последняя версия доступна по адресу http://www.w3.org/TR/owl-test/.

Близкие стандарты W3C

[RDF]
Resource Description Framework (RDF) Model and Syntax Specification , Ora Lassila, Ralph R. Swick, Editors. Рекомендация W3C, 1999,
http://www.w3.org/TR/1999/REC-rdf-syntax-19990222/.
Последняя версия доступна по адресу http://www.w3.org/TR/REC-rdf-syntax/.
[RDFS]
RDF Vocabulary Description Language 1.0: RDF Schema , Dan Brickley and R.V. Guha, Editors. Рекомендация W3C, 10 февраля 2004,
http://www.w3.org/TR/2004/REC-rdf-schema-20040210/ .
Последняя версия доступна по адресу http://www.w3.org/TR/rdf-schema/.
[RDF Concepts]
Resource Description Framework (RDF): Concepts and Abstract Syntax, Graham Klyne and Jeremy J. Carroll, Editors. Рекомендация W3C, 10 февраля 2004,
http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/.
Последняя версия доступна по адресу http://www.w3.org/TR/rdf-concepts/.
[RDF Semantics]
RDF Semantics , Patrick Hayes, Editor. Рекомендация W3C, 10 февраля 2004,
http://www.w3.org/TR/2004/REC-rdf-mt-20040210/.
Последняя версия доступна по адресу http://www.w3.org/TR/rdf-mt/.
[RDF Syntax]
RDF/XML Syntax Specification (Revised) , Dave Beckett, Editor. Рекомендация W3C, 10 февраля 2004,
http://www.w3.org/TR/2004/REC-rdf-syntax-grammar-20040210/.
Последняя версия доступна по адресу http://www.w3.org/TR/rdf-syntax-grammar.
[URI]
Uniform Resource Identifiers (URI): Generic Syntax , T. Berners-Lee, R. Fielding, and L. Masinter, IETF Draft Standard August, 1998 (RFC 2396).
[XML Base]
XML Base, Jonathan Marsh, Editor. Рекомендация W3C, 27 June 2001,
http://www.w3.org/TR/2001/REC-xmlbase-20010627/.
Последняя версия доступна по адресу http://www.w3.org/TR/xmlbase/.
[XML Namespaces]
Namespaces in XML , Tim Bray, Dave Hollander, Andrew Layman, Editors. Рекомендация W3C, Jan 1999,
http://www.w3.org/TR/1999/REC-xml-names-19990114/.
Последняя версия доступна по адресу http://www.w3.org/TR/REC-xml-names.
[XML]
Extensible Markup Language (XML) 1.0 , Tim Bray, Jean Paoli, C. M. Sperberg-McQueen, Editors. Рекомендация W3C, 10 February 1998,
http://www.w3.org/TR/1998/REC-xml-19980210.
Последняя версия доступна по адресу http://www.w3.org/TR/REC-xml.
[XML Schema 1]
XML Schema Part 1: Structures, Henry S. Thompson, David Beech, Murray Maloney, and Noah Mendelsohn, Editors. Рекомендация W3C, 2 May 2001,
http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/.
Последняя версия доступна по адресу http://www.w3.org/TR/xmlschema-1/.
[XML Schema 2]
XML Schema Part 2: Datatypes, Paul V. Biron, Ashok Malhotra, Editors. Рекомендация W3C, 2 May 2001,
http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/.
Последняя версия доступна по адресу http://www.w3.org/TR/xmlschema-2/.

Образцы онтологий и приложений

[Integrating Applications]
Integrating Applications on the Semantic Web , James Hendler, Tim Berners-Lee, and Eric Miller. Journal of the Institute of Electrical Engineers of Japan, Vol 122(10), October, 2002, p. 676-680.
[VerticalNet]
Industrial Strength Ontology Management , Aseem Das, Wei Wu, and Deborah L. McGuinness. Stanford Knowledge Systems Laboratory Technical Report KSL-01-09 2001. In the Proceedings of the International Semantic Web Working Symposium, Stanford, CA, July 2001.
[Wine Ontology From Daml.org]
http://www.daml.org/ontologies/76
[Wine Ontology / CLASSIC Tutorial]
Classic Knowledge Representation System Tutorial , Deborah L. McGuinness, Peter F. Patel-Schneider, Richmond H. Thomason, Merryll K. Abrahams, Lori Alperin Resnick, Violetta Cavalli-Sforza, and Cristina Conati. AT&T Bell Laboratories and University of Pittsburgh, 1994.
[Wine Ontology Tutorial]
Ontology Development 101: A Guide to Creating Your First Ontology, Natalya Fridman Noy and Deborah L. McGuinness. Stanford Knowledge Systems Laboratory Technical Report KSL-01-05 and Stanford Medical Informatics Technical Report SMI-2001-0880, March 2001.
[Wine Ontology in CLASSIC]
Living with CLASSIC: When and How to Use a KL-ONE-Like Language , Ronald J. Brachman, Deborah L. McGuinness , Peter F. Patel-Schneider , Lori Alperin Resnick , and Alex Borgida. In Principles of Semantic Networks: Explorations in the representation of knowledge, John Sowa, Editor. Morgan-Kaufmann, San Mateo, California, 1991, pages 401--456.

Близкие исследования языка KR

[DAML+OIL]
DAML+OIL W3C Submission, Includes reference description, both model theoretic and axiomatic semantics, annotated walkthrough and examples.
Annotated DAML+OIL Ontology Markup , Dan Connolly, Frank van Harmelen, Ian Horrocks, Deborah McGuinness, Peter F. Patel-Schneider, Lynn Andrea Stein. December 2001.
[DAML-ONT]
DAML-ONT initial release at http://www.daml.org/2000/10/daml-ont.html.
[DAML-ONT KIF]
Partial DAML-ONT axiomatization at http://www.daml.org/2000/10/DAML-Ont-kif-axioms-001107.html.
Defined in KIF (http://logic.stanford.edu/kif/kif.html).
[Description Logics]
The Description Logic Handbook: Theory, Implementation and Application , Franz Baader, Diego Calvanese, Deborah L. McGuinness, Daniele Nardi, and Peter F. Patel-Schneider, Editors. Cambridge University Press, 2002.
[MCF]
Meta Content Framework Using XML , R.V. Guha and Tim Bray. Netscape Communications, 6 June 1997.
[Part Whole]
A Taxonomy of Part-Whole Relations. M. Winston, R. Chaffin & D. Herrmann. Cognitive Science, 11:417-444, 1987.
[XOL]
XOL: An XML-Based Ontology Exchange Language, Peter D. Karp, Vinay K. Chaudhri, and Jerome F. Thomere. Technical Report 559. AI Center, SRI International, 333 Ravenswood Ave., Menlo Park, CA 94025, Jul 1999.

Общая информация и специализированные порталы

[Dublin Core]
Dublin Core Metadata at home page, http://dublincore.org/.
[Dublin Core XML]
Expressing Dublin Core in RDF/XML, Dave Beckett, Eric Brickley, and Dan Brickley.
Dublin Core Metadata Initiative. July 31, 2002,
http://dublincore.org/documents/2001/11/28/dcmes-xml/.
[KAON]
The Karlsruhe Ontology and Semantic Web Tool Suite at http://kaon.semanticweb.org.
[OIL]
OIL Home Page at http://oil.semanticweb.org/.
[Ontobroker]
The Ontobroker home page at http://ontobroker.aifb.uni-karlsruhe.de/index_ob.html.
Institute AIFB, University of Karlsruhe.
[Ontoknowledge]
Ontoknowledge Home Page at http://www.ontoknowledge.org/.
[RDF Home]
RDF: Resource Description Framework. Background информация at http://www.w3.org/RDF/.
[SHOE]
Simple HTML Ontology Extensions (SHOE) home page at http://www.cs.umd.edu/projects/plus/SHOE/. University of Maryland.
[KR]
KR Home Page at http://kr.org/.


Приложение A: Основы XML + RDF

Это приложение обеспечивает ссылки на введения в стандарты, от которых зависит OWL.

Чтобы полностью понимать синтаксис OWL и семантику, Вы должны быть знакомы с основами близких W3C и IETF стандартов, перечисленными ниже. Минимальное знакомство с XML и RDF обеспечивают первые две ссылки из предложенных ниже.


Приложение B: История

Первым языком, определенным W3C для того, чтобы представлять семантическую информацию о произвольных ресурсах был Resource Description Framework (RDF). RDF Schema (RDFS) - это кандидат в рекомендации W3C для расширения RDF, чтобы описывать RDF-словари. RDFS может использоваться, чтобы создавать онтологии, но он предельно легковесный, с меньшей выразительной мощностью, чем OWL.

Как и OWL, RDFS включает классы и свойства, а также ограничения диапазона и домена для свойств. Он обеспечивает иерархии наследования как для классов, так и для свойств. После его выпуска пользователи начали просить дополнительные особенности, включая типы данных, перечисления и возможность более строго определять свойства.

Другие попытки исследований в данной области уже разрабатывали именно эти виды особенностей. Для тех, кто желает более глубоко разобраться в этих вопросах, предлагаем частичный список проектов и языков:

Чтобы не продолжать работать с отдельными языками онтологий для Семантической Сети, группа исследователей, включая многих из главных участников проектов OIL и DAML-ONT, объединилась в Joint US/EU ad hoc Agent Markup Language Committee, чтобы создать новый язык веб-онтологий. Этот язык DAML+OIL, построенный на базе OIL и DAML-ONT, был предложен в W3C как предполагаемая основа для OWL, и был впоследствии выбран как отправная точка для OWL.

В дополнение к языкам онтологий, различные таксономии и существующие онтологии уже находятся в коммерческом использовании. В сайтах электронной коммерции они облегчают коммуникацию посредством компьютера между покупателем и продавцом, делают возможной вертикальную интеграцию рынков и позволяют описаниям многократно использоваться на различных рынках. Примеры сайтов, которые фактически создают онтологии для коммерческого использования, включают:

Разработаны различные медицинские или фармацевтические онтологии, чтобы помочь управлять огромной массой данных современных медицинских и биохимических исследований, которые бывает трудно связать вместе в единое целое. Один из главных ресурсов Консорциум Генных Онтологий, который определяет онтологии для

Этот сайт также имеет указатели на онтологии для

Сегодня находятся в использовании большие таксономии, которое были бы готовы для внедрения в OWL-пространство. Например, Североамериканская Система Классификации Промышленности (NAICS) определяет иерархию из более чем 1900 элементов, которые идентифицируют типы промышленности. NAICS также связана с Международной Системой Классификации Индустриальных Стандартов (ISIC, Ревизия 3), разработанной и поддерживаемой Организацией Объединенных Наций.


Приложение C: Изменения по сравнению с Предложенной Рекомендацией от 15 декабря 2003 года

Это первая версия документа, которая была переведена на русский язык. Изменения в исходной английской версии см. в оригинальном документе