Процесс онтологического моделирования

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

Выделение объектов

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

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

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

Каждый выделенный нами в процессе декомпозиции объект мы будем называть индивидуальным объектом.

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

  • Индивидуальные (конкретные) объекты;
  • Определения классов (групп) объектов;
  • Определения статических атрибутов объектов;
  • Определения связей между объектами.
Также в модели будут содержаться значения конкретных свойств для конкретных индивидуальных объектов, конкретные связи между ними, но эти виды информации не являются самостоятельными концептами.

Идентификация объектов

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

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

Уникальные идентификаторы должны иметь все элементы информационной модели: индивидуальные объекты, определения классов и определения свойств.

Классификация

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

Термин "класс" в применении к рассматриваемым в нашей книге информационным моделям означает некий символ (информационный сигнал), который используется для общего обозначения какой-либо совокупности объектов:

Класс – совокупность индивидуальных объектов, и ничего более
Рис. 3. Класс как совокупность индивидуальных объектов, и ничего более

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

В самом деле, будет ли относиться к классу «собаки» фарфоровая собачка? Это целиком и полностью зависит от субъективной точки зрения, от прагматики, то есть от того, как именно мы будем использовать нашу модель. В модели, предназначенной для отработки действий при задержании подозреваемых – не будет. В модели, которую мы строим для выбора подарка на день рождения ребенку – собака может быть как живой, так и фарфоровой, и плюшевой. Таким образом, экстенсионал (именуемое, объем понятия) одного и того же интенсионала (знака, понятия) варьируется в зависимости от контекста и субъекта.

Концептуализация в мысленных моделях, и классификация – в информационных нужна для того, чтобы получить возможность формулировать знания и строить логические выводы. Для этого нужно включить в модель утверждения о классах, соответствующие арсеналу логики первого порядка. Одним из видов таких утверждений являются выражения формата «Все члены класса X являются членами класса Y» (например, «все собаки – животные»).

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

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

Неправильно построенная иерархия
Рис. 4. Неправильно построенная иерархия

Из чего исходил аналитик при построении такой иерархии? Скорее всего, он следовал структуре отделов магазина. Верхний уровень иерархии соответствует функциональному делению товаров, поскольку люди чаще всего заходят в магазин с какой-то определенной целью (например, по дороге на дачу). Второй уровень отчасти отражает технологию производства товаров, отчасти – продолжает их функциональное деление. Наконец, третий уровень соответствует тому, как легче сгруппировать товар на полках.

Такая иерархия может показаться удобной для навигации по реальному магазину, но в информационной системе, предназначенной для помощи в выборе нужного товара (предположим, в Интернет-магазине) – она окажется крайне неудачной. Легко заметить, что, например, кухонное полотенце окажется в разделе "Товары для кухни" -> "Полотенца", хотя по технологическому признаку могло бы оказаться в разделе "Текстиль".

Чтобы избежать подобных трудностей, необходимо разобраться с основаниями классификации, а затем построить одну или несколько иерархий классов. Каждый индивидуальный объект мы сможем отнести одновременно к нескольким классам. Такой принцип классификации называется фасетным.

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

  • Область применения товара;
  • Способ использования;
  • Функциональное назначение.

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

Классификация по области применения
Рис. 5. Классификация по области применения

По способу использования:

Классификация по способу использования
Рис. 6. Классификация по способу использования

Отметим, что классификация инструмента может основываться на множестве разных факторов; для нашей цели – построения навигационной системы магазина – можно разделить его по предполагаемым пользователям, что и сделано на рис. 6, а можно – по каким-то иным основаниям, например на режущий, сверлильный и т.д.

Наконец, по функциональному назначению классифицируем товары так:

Классификация по функциональному назначению
Рис. 7. Классификация по функциональному назначению

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

В завершение этого примера, посмотрим на то, к каким классам будет отнесен товар "электродрель XYZ":

Пример: классификация электродрели
Рис. 8. Классификация электродрели

Электродрель XYZ – любительский инструмент, который может быть использован как дома, так и в саду, при работах по внутренней или наружной отделке помещений.

Как мы видим, один и тот же индивидуальный объект может быть отнесен сразу к нескольким классам, причем даже в пределах одной иерархии ("товары для дома" и "товары для сада").

У внимательного читателя, наверное, уже возник вопрос – почему мы называем электродрель XYZ индивидуальным объектом? Ведь если XYZ – это обозначение модели, то "Электродрель XYZ" должна быть классом, в который входят конкретные электродрели, каждая со своим серийным номером.

На самом деле, разделение на классы и индивидуальные объекты также зависит от контекста использования модели. Когда мы строим продуктовый каталог, ничто не мешает нам считать "Электродрель XYZ" индивидуальным объектом – в процессах продажи и складского движения товара нас не интересуют его конкретные единицы. Разумеется, это справедливо только в том случае, если мы совершенно уверены, что нам не придется использовать ту же модель для описания других бизнес-процессов, где отслеживание индивидуальных единиц товара станет актуальным. В контексте бизнес-процесса сервисной службы, которая имеет дело с ремонтом дрелей, "Электродрель XYZ", безусловно, будет классом, к которому относятся конкретные устройства.

Еще один важный момент связан с глубиной детализации классификаций. Например, мы можем классифицировать собаку как животное, а можем построить "матрешку" с участием всех элементов биологической классификации: Животные – Хордовые – Млекопитающие – Хищные – Псовые – Волки (род) – Волк (вид) – Собака (подвид). Но будет ли такая классификация иметь практический смысл? В подавляющем большинстве случаев – нет, хотя может и иметь, например, если мы строим модель для генетических или медицинских исследований. Таким образом, при построении классификаций важно придерживаться принципа экономности, иначе говоря – отсекать при помощи бритвы Оккама все сущности и смыслы, наличие которых не оправдано прагматикой.

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

  • Эквивалентность. Фактически означает, что два наименования классов являются синонимами, и относятся к одному и тому же набору индивидов – например, "собаки" и "псы".
  • Разделенность. Констатирует, что ни один объект, относящийся к одному классу, не может одновременно относиться к другому классу ("собаки" и "кошки").
  • Объединение. Утверждает, что совокупность объектов двух и более классов образует весь набор объектов третьего класса (совокупность "мужчин" и "женщин" дает все элементы класса "люди" - в каком-то приближении).

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

Описание свойств

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

В структуре наших представлений о свойстве легко выделить его основные характеристики:

  • название (например, "температура по Цельсию");
  • ограничения на тип и диапазон значений (возможные значения температуры по Цельсию – вещественные числа от -273,15 до +∞);
  • набор объектов, которые могут и/или должны являться носителем этого свойства (все физические тела обязательно имеют температуру, а период времени не может иметь температуры).

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

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

  • Эквивалентность ("длительность" и "продолжительность").
  • Инвертивность. Это отношение актуально для двух свойств, выражающих отношения объектов. Например, отношение "является сыном" инверсно отношению "является родителем".
  • Транзитивность. Если какое-либо свойство транзитивно, и известно, что объект А связан этим свойством с объектом Б, а Б – с В, то А связан тем же свойством с В. Например, свойство "является частью" - транзитивно. Значит, если двигатель является частью автомобиля, а поршень является частью двигателя, то верно и то, что поршень является частью автомобиля.
  • Симметричность. Если А связан с Б симметричным свойством, это автоматически означает, что Б связан с А тем же свойством. Так, свойство "является супругом" симметрично, то есть если Иван является супругом Марии, то и Мария является супругой Ивана (для сравнения, свойство "является родителем" - не симметрично).

Ограничения, налагаемые на возможные значения свойств, можно формализовать так:

  • Тип принимаемого значения (число, строка, объекты определенных типов, и т.д.).
  • Диапазон значений (границы диапазона, один из определенного множества объектов, и т.д.).
  • Количество возможных значений. Это не интуитивное, но очень важное ограничение. Свойство "является супругом" может принимать только одно значение для граждан европейских стран, но несколько – для арабских. Человек может иметь несколько имен, город – несколько названий. В то же время, свойство "температура" всегда будет иметь только одно значение, но обусловленное конкретной точкой измерения и моментом времени. Выражаясь точнее, в ряде случаев будет неправильно присвоить свойство "температура" физическим объектам; правильнее присвоить его объектам, относящимся к классу "акт измерения". Каждый такой объект будет иметь свойства, привязывающие измерение к моменту времени и точке, где оно выполнено.
  • Обязательность. Каждое свойство для каждого объекта может иметь 0, 1 или более обязательных значений.

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

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

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

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

Принадлежность индивидуального объекта к какому-либо классу выражается при помощи свойства этого объекта (то есть "является экземпляром класса" - это тоже свойство, присущее всем индивидуальным объектам).

Определение типа элемента модели – класс, индивидуальный объект, или свойство – также выражается при помощи свойства (то есть "имеет тип элемента модели" - это свойство, присущее всем элементам модели без исключения).

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

Пример информационной модели

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

Исходная информация для моделирования
Рис. 9. Исходная информация для моделирования

1. Идентифицируем на этом рисунке четыре индивидуальных объекта: человек, собака, поводок, человек.

2. Присвоим им уникальные идентификаторы – соответственно, А1, А2, А3 и А4.

3. Определим набор классов, которые понадобятся для классификации выделенных нами объектов, и объединим их в иерархии:

Иерархии

4. Зададим логические аксиомы для созданных классов:

Ни одно действующее лицо не является предметом, и наоборот.

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

Все люди (в пределах нашей модели) являются либо подозреваемыми, либо кинологами.

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

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

Все действующие лица являются предметами. Все статические предметы являются предметами.

5. Классифицируем наши индивидуальные объекты:

А1 относится к классам Действующее лицо и Подозреваемый.

А2 относится к классам Действующее лицо и Собака.

А3 относится к классам Предмет и Поводок.

А4 относится к классам Действующее лицо и Кинолог.

6. Определим набор свойств, которые понадобятся для описания взаимодействия объектов (названия свойств выделены курсивом):

А держит в руке Б.

А одет на Б.

А сторожит Б.

А находится под стражей Б.

7. Опишем характеристики и ограничения для свойств.

"Держит в руке" относится к объектам класса Человек, а его значениями являются объекты класса Статический предмет.

"Одет на" относится к объектам класса Действующее лицо, а его значениями являются объекты класса Предмет.

"Сторожит" и "Находится под стражей" относятся к объектам класса Действующее лицо, и их значениями являются также объекты класса Действующее лицо.

Все перечисленные свойства могут иметь от 0 до любого количества значений.

8. Опишем логические аксиомы для свойств:

Если А сторожит Б, то Б находится под стражей А.

9. Запишем значения свойств для наших объектов:

А4 держит в руке А3. А3 одет на А2. А2 сторожит А1.

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

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

В такой модели цели, действия, последствия будут представлены при помощи классов и объектов. Например, объект "побег" будет относиться к классу "цели". Свойство "имеет цель" будет присуще каждому объекту класса "действующее лицо", и конкретно для объекта А1 его значение – "побег". Логические аксиомы могут иметь такой, например, вид: "Если объект обездвижен, то он не может бежать"; "Если собака держит предмет, этот предмет обездвижен".

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

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

Следующий раздел: Использование онтологических моделей