Смекни!
smekni.com

Разработка онтологий 101: руководство по созданию Вашей первой онтологии (стр. 4 из 8)

На рис. 4 показано определение слота производит класса Винный завод.

Рис. 4. Определение слота производит, который описывает вина, производимые на винном заводе. Слот имеет множественную мощность и значение типа Экземпляр.

Разрешенным классом для значений этого слота является класс Вино.

Домен слота и диапазон значений слота

Разрешенные классы для слотов типа Экземпляр часто называют диапазоном значений слота. В примере на рис. 4 класс Вино является диапазоном значений слота производит. Некоторые системы позволяют ограничить диапазон значений слота, если слот привязан к определенному классу.

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

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

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

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

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

Конкретнее:

Если список классов, определяющих диапазон значений слота или домен слота, включает класс и его подкласс, удалите подкласс.

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

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

Вместо указания того, что диапазон значений слота включает Красное Вино, Белое Вино и Розовое Вино (перечисление всех прямых подклассов класса Вино), мы можем ограничить диапазон значений самим классом Вино.

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

В системах, где привязка слота к классу равнозначна добавлению класса к домену слота, к привязке слота применяются те же правила: С одной стороны, нам нужно постараться сделать его как можно более общим. С другой стороны, мы должны гарантировать, что каждый класс, к которому мы привязываем слот, на самом деле имеет свойство, которое представляет слот. Мы можем привязать слот уровень танина к каждому классу, представляющему красные вина (например, Bordeaux, Merlot, Beaujolais и т.д.). Однако, т.к. все красные вина имеют свойство «уровень танина», то вместо этого нам нужно прикрепить этот слот к более общему классу Красные Вина. Будет неправильно дальше обобщать домен слота уровень танина (привязка его к классу Вино), т.к. мы не используем уровень танина для описания, к примеру, белых вин.

Шаг 7. Создание экземпляров

Последний шаг – это создание отдельных экземпляров классов в иерархии. Для определения отдельного экземпляра класса требуется (1) выбрать класс, (2) создать отдельный экземпляр этого класса и (3) ввести значения слотов. Например, мы можем создать отдельный экземпляр Chateau-Morgon-Beaujolais для представления определенного типа вина Beaujolais. Chateau-Morgon-Beaujolais – это экземпляр класса Beaujolais, представляющего все вина Beaujolais. У этого экземпляра определены следующие значения слотов (рис. 5):

Крепость: Легкое

Цвет: Красный

Вкус: Мягкий

Уровень танина: Низкий

Виноград: Gamay (экземпляр класса Виноград для изготовления вин)

Производитель: Chateau-Morgon (экземпляр класса Винный завод)

Область: Beaujolais (экземпляр класса Винная область)

Сахар: Сухое

Рис. 5. Определение экземпляра класса Beaujolais. Экземпляром является вино ChateuaMorgonBeaujolais из области Beaujolais, произведенное из винограда Gamay на заводе ChateauMorgon. Оно легкое, с мягким вкусом, красное, с низким уровень танина. Это сухое вино.

4. Определение классов и иерархии классов

В этой главе говорится о том, за чем нужно следить, и об ошибках, которые легко сделать при определении классов и иерархии классов (Шаг 4 из Главы 3). Как мы уже говорили ранее, для любой предметной области не существует единственной правильной иерархии классов. Иерархия зависит от возможных способов применения онтологии, уровня детализации, необходимого для приложения, личных предпочтений и иногда от требований по совместимости с другими моделями. Тем не менее, мы рассматриваем несколько руководящих принципов, которые нужно учитывать при разработке иерархии классов. После определения значительного количества новых классов полезно остановиться и проверить, соответствует ли возникающая иерархия этим руководящим принципам.

4.1. Обеспечение правильности иерархии классов

Отношение “is-a”[2]

Иерархия классов представляет отношение “is-a”: класс А – это подкласс В, если каждый экземпляр В также является экземпляром А. Например, Chardonnay – подкласс класса Белое Вино. Другой способ подхода к таксономическому отношению – это отношение “kind-of”[3]: Chardonnay –вид Белого вина. Реактивный лайнер –вид самолета. Мясо –вид еды.

Подкласс класса представляет понятие, которое является «разновидностью» понятия, представляемого надклассом.

Отдельно взятое вино не является подклассом всех вин

Распространенная ошибка при моделировании – это включение в иерархию варианта одного и того же понятия как в единственном, так и во множественном числе, сделав первое подклассом второго. Например, будет неправильно определить класс Вина и класс Вино как подкласс класса Вина. Как только вы начинаете считать, что иерархия представляет собой отношение “kind-of”, то ошибка при моделировании становится очевидной: отдельное Вино не является видом Вин. Лучший способ избежать таких ошибок – всегда использовать имена классов или в единственном, или во множественном числе (присваивание имен понятиям подробно рассмотрено в Главе 6).

Транзитивность иерархических отношений

Отношение подкласса транзитивно:

Если В – это подкласс А, а С – подкласс В, то С – подкласс А.

Например, мы можем определить класс Вино, а потом определить класс Белое вино как подкласс класса Вино. Затем мы определяем класс Chardonnay как подкласс класса Белое Вино. Транзитивность отношения подкласса означает, что класс Chardonnay также является подклассом класса Вино. Иногда мы различаем прямые и косвенные подклассы. Прямой подкласс – самый близкий подкласс класса: в иерархии между классом и его прямым подклассом нет других классов. То есть, между классом и его прямым надклассом в иерархии нет других классов. В нашем примере Chardonnay – это прямой подкласс класса Белое вино и не прямой подкласс класса Вино.

Развитие иерархии классов

Поддержание последовательной иерархии классов может вызывать сложности по мере того, как развиваются предметные области. Например, много лет все вина Zinfandel были красными. Поэтому мы определяем класс вин Zinfandel как подкласс класса Красное вино. Тем не менее, производители вин иногда начали выжимать виноград и сразу удалять цветообразующие вещества из винограда, изменяя таким образом цвет получаемого вина. Так мы получаем «белое Zinfandel» розового цвета. Теперь нам нужно разбить класс Zinfandel на 2 класса zinfandel – Белое zinfandel и Красное zinfandel – и классифицировать их как подклассы классов Розовое вино и Красное вино соответственно.

Классы и их имена

Важно различать класс и его имя:

Классы представляют понятия предметной области, а не слова, которые обозначают эти понятия.

Имя класса может измениться, если мы выберем другую терминологию, но сам термин представляет объективную реальность мира. Например, мы можем создать класс Shrimps, а потом переименовать его в Prawns – класс представляет все то же понятие. Вина, которые подходили к блюдам из shrimp, должны подходить к блюдам из prawn[4].

В действительности нужно все время соблюдать правило:

Синонимы одного и того же понятия не представляют различные классы.

Синонимы – всего лишь разные имена понятия или термина. Следовательно, у нас не должно быть класса с именем Shrimpи одновременно с этим класса с именем Prawn, а также класса с именем Crevette[5]. Предпочтительнее будет иметь один класс с именем Shrimp или Prawn. Многие системы позволяют ассоциировать с классом список синонимов, переводов или имен представления. Если система не позволяет осуществлять такие ассоциации, то синонимы всегда можно перечислить в документации к классу.

Избежание циклов классов