Академический Документы
Профессиональный Документы
Культура Документы
Онтологии в Информационных Системах
Онтологии в Информационных Системах
Лапшин
Онтологии системах
в информационных
Современный подход
Москва ∙ 2009
Оглавление
Оглавление 2
Предисловие 4
1 Что такое онтология 7
1.1 О чем эта книга . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2 Определение онтологии . . . . . . . . . . . . . . . . . . . . 14
1.3 Типы онтологий . . . . . . . . . . . . . . . . . . . . . . . . 19
1.4 Что изложено в книге . . . . . . . . . . . . . . . . . . . . . 30
1.5 Список литературы . . . . . . . . . . . . . . . . . . . . . . 34
2
3.7 Список литературы . . . . . . . . . . . . . . . . . . . . . . 139
Послесловие 245
3
Предисловие
4
много методов, которые требуют довольно объемного предварительного
изучения. Например, наиболее известные текущие реализации систем
построения онтологий основаны на языках исчислений предикатов пер-
вого и второго порядков. Ясно, чтобы понять, как устроена та или иная
система построения онтологий, необходимо сначала иметь понимание
того, что лежит в основе данной системы.
Другое препятствие для быстрого понимания более фундаменталь-
но. Состоит оно в том, что построение онтологии знаний представляет
собой ни что иное, как процесс моделирования этих знаний, т.е. постро-
ения модели мира решаемой задачи. Построение модели— непростой и
требующий определенных навыков процесс. Хорошая модель должна,
с одной стороны, быть достаточно общей, чтобы должным образом от-
ражать представление о мире задачи, а с другой стороны, содержать
все необходимые для решения задачи детали. У неподготовленного чи-
тателя неизбежно будут возникать вопросы относительно того, почему
модель была построена именно таким образом, зачем одни понятия бы-
ли описаны в модели, а другие, кажущиеся важными, наоборот, были
исключены из рассмотрения и т.д. Чтобы должным образом понимать
мотивы, стоящие за тем или иным решением, необходимо некоторое
погружение в предмет.
Процесс построения модели называется концептуализацией . Сам
этот термин говорит о том, что в процессе построения модели выделя-
ются концепты— понятия, лежащие в основе модели, и взаимоотноше-
ния между этими понятиями. Читатель также должен иметь некоторое
понимание того, что такое понятие и как оно выражается формаль-
ным образом. Для прояснения этих вопросов приходится обращаться
к философии. Таким образом, в книге также необходимо дать некото-
рое представление о философских идеях, лежащих в основе процесса
концептуализации.
Наконец, не следует забывать, что книга должна дать представле-
ние о наиболее известных реализациях систем построения онтологий,
т.е. некоторым образом, представлять собой обзор этих систем. Можно
описать каждую такую систему в нескольких абзацах, но к сожалению,
такой небольшой объем информации не даст читателю ничего, кроме
понимания того, что такая система существует. Чтобы дать читателю
более полное представление о системе, нужна целая глава. Таким об-
разом, необходимо погружение в систему.
Книга представляет собой введение в идеи, связанные с понятием
онтологии, а также одновременно является обзором наиболее известных
реализаций систем построения онтологий. Текст книги можно читать
без всякой подготовки. Первая глава представляет собой элементарное
5
изложение основных идей, показывающих необходимость онтологий в
современной инженерной науке. Также, в первой главе приведены при-
меры различных типов онтологий. Начинать чтение книги надо обя-
зательно с этой главы. Чтение остальных глав можно производить в
любом порядке. Книгу также можно использовать как справочник по
системам построения онтологий.
Работа над данной книгой велась при частичной поддержке фонда
РФФИ, грант 09-07-00079-а.
Автор выражает благодарность Евгению Михайловичу Бениамино-
ву за помощь и ценные замечания, высказанные в ходе работы над
книгой. Без этой помощи книга вряд ли была написана.
6
1 Что такое онтология
7
танном специально для этих целей языке, конструкции которого всегда
интерпретируются точно и однозначно. Это позволяет сохранять опи-
сание в компьютерной памяти с тем, чтобы в дальнейшем использовать
его в другой задаче или проверить с помощью компьютера, не содержит
ли описание логических противоречий.
На самом деле, задача автоматизированного обмена формальными
описаниями моделей явилась главным побуждающим фактором начала
исследований в области применения онтологий. Рассмотрим области
инженерии, где такие задачи возникают.
Впервые, задача построения формального описания модели возник-
ла в программных системах управления базами знаний. Базы знаний—
это систематизированное собрание фактов, которое управляется раз-
работанной специально для этих целей программой. База реализуется
как экспертная система , т.е. программа, которая выступает в качестве
специалиста-эксперта в некоторой тематике. Например, сейчас очень
популярны экспертные системы в медицине. Такая база знаний содер-
жит такое большое количество медицинских фактов, что один человек
не в состоянии запомнить. Экспертной системе могут быть поданы на
вход результаты анализов крови и программа, сопоставив факты сво-
ей базы знаний, может выдать по результатам этих анализов диагноз
больного. Экспертную систему можно дообучать, добавляя в нее новые
факты. Теперь, предположим, что существуют две такие экспертные
системы, сделанные различными производителями и расположенные в
разных медицинских учреждениях, и министерство здравоохранения
решило создать новую экспертную систему на основе двух существую-
щих. Если бы эксперты были людьми, а не машинами, то все было бы
просто: они бы встретились и рассказали друг другу все, что знают. С
машинами ситуация иная— они друг другу просто так рассказать ниче-
го не могут. Поэтому, необходимо формально описать содержимое базы
знаний каждой экспертной системы с тем, чтобы это описание было по-
нятно программе, которая реализует их объединение. Здесь возникают
следующие затруднения:
1. Надо разработать язык, который был бы понятен каждой из трех
участвующих программ. Этот язык должен быть достаточно фор-
мальным для того, чтобы описания баз знаний (онтологии) одно-
значно интерпретировались машинами.
2. Построить описание содержимого базы знаний на этом языке. По-
нятно, что человек такое описание сделать не в состоянии, так как
он не в состоянии держать в уме содержимое всей базы знаний экс-
пертной системы. Значит, описание должна делать программа.
8
3. По описанию базы знаний, сделанному на разработанном языке,
добавить новые факты в базу знаний третьей экспертной системы.
Это также должна сделать программа.
9
«Владимир Путин» или «Владимир Ленин», в этом случае, необходи-
мо показать страницы об этих людях. Также, это может быть название
города Владимир, тогда надо показать страницы об этом городе. Доста-
точно умная поисковая программа могла бы иметь достаточно большую
базу фактов, чтобы «знать» о различных значениях слова «владимир».
Но, это бы ничего такой программе не дало до тех пор, пока создатели
сайтов не предоставили описания содержания своих страниц поисковым
программам. Предположим, что сайт о городе Владимир имеет такое
описание. Тогда, поисковая программа может уточнить у пользователя,
не имеет ли он ввиду в запросе «город Владимир» и, в случае согласия,
вывести на первом месте в списке найденных страниц страницу это-
го сайта вместе с ее описанием. Описания содержимого Web-страниц
представляют собой онтологии этих страниц. Web, в котором страницы
имеют описания их содержимого, называет Умный Web (Semantic Web).
Для построения онтологий необходим специальный язык, который был
бы понятен поисковым программам. Такой язык создан и называется
OWL (Web Ontology Language [10]). Мы подробно обсудим этот язык и
проблематику построения описаний Web-страниц в третьей главе.
10
Построение описания знаний необходимо производить в любой объ-
емной системе управления знаниями. Если разработчики базы знаний
планируют ее пополнение новыми фактами, то для этого важно снача-
ла систематизировать содержание этой базы знаний. Надо выделить в
базе знаний разделы, описать их содержание, а также способы связей
различные разделов между собой. В этом случае, пользователи будут
добавлять в систему новые знания в нужном месте. Например, если
система содержит знания по медицине и по биохимическим процессам,
то во время введения информации о новом лекарстве, необходимо бу-
дет как-то связать знания о том, при каких симптомах применять это
лекарство, со знаниями о том, какие химические вещества содержаться
в этом лекарстве и какое физиологическое действие производит прием
данного лекарства. Для этого, необходимо построить онтологию базы
знаний (т.е. ее описание) и в этой онтологии связать различные разделы
между собой. Тогда, пользователь просто заполнит нужные поля при
вводе информации, и добавленные знания будут связаны в стройную и
логичную схему. Здесь, мы видим, что описание знания играет важную
роль в его систематизации . В главе 5, на примере базы знаний под
названием Cyc [13], мы рассмотрим, как систематизируются объемные
базы знаний.
11
Систематизация знаний— задача совсем не простая. Кроме тех зна-
ний, которые непосредственно содержаться в базе, необходимы еще так
называемые общие знания . Человек о таких знаниях даже не задумыва-
ется, они подразумеваются, как само собой разумеющееся. Например,
человек знает, что люди ходят вверх головой и ногами по земле и, вооб-
ще, то что они ходят есть следствие существования силы притяжения.
Человеку не придет в голову, что можно пройти сквозь стену, пото-
му что он имеет знание о том, что стена— это непроницаемый объект.
Для базы, содержащей только конкретные знания, все эти очевидные
для человека понятия недоступны. Поэтому, родилась мысль о том,
чтобы формально описать основные свойства мира,— так называемые
общие знания, и применять эти знания в различных базах конкретных
знаний. Эти описания обычно называют онтологиями верхнего уровня
(top-level ontologies). Типичная база знаний чаще всего содержит три
уровня знаний:
12
много усилий. Ежегодно, в мире выпускается большое число специали-
стов по переводу, государства тратят на обучение таких специалистов
достаточно объемные средства. Если бы был создан машинный пере-
водчик, то эти средства можно было бы направить на подготовку спе-
циалистов в других отраслях. Для решения задачи автоматического пе-
ревода, стала очевидной необходимость формального описания знаний
о языках. Разработчики предыдущих поколений программ машинного
перевода пытались создать эти программы как обычные приложения.
Создавалась программная модель, логика перевода описывалась про-
граммным кодом, а словарь обычно сохранялся в базе данных. Но, ока-
залось, что знания о языке настолько объемны, что закодировать их
непосредственно в программной модели весьма затруднительно. Кро-
ме того, затруднения имеются в самой формализации знаний о языке—
многие трудноуловимые аспекты этих знаний до сих пор не описаны
формально. В связи с указанными затруднениями, возникла мысль со-
здать описание знаний о языке в машинном формате с тем, чтобы затем
использовать это описание в различных программах, в том числе, и в
программах машинного перевода. Такие проекты существуют, напри-
мер есть проект описания знаний об английском языке под называнием
WordNet [17].
Вообще, как представляется автору, происходящий сейчас процесс
внедрения формального описания знаний в различные области инже-
нерии подобен тому, который происходил в 70-80 годах прошлого века
с базами данных. В 60-х годах прошлого века была осознана необхо-
димость отделения описания данных от самих данных. Описание дан-
ных— это так называемая схема базы данных (концептуальная схема).
Была создана формальная теория таких описаний [см., например, 28]
и, затем, были созданы приложения, которые могли работать с таки-
ми описаниями— так называемые серверы баз данных. Подобные про-
цессы, только относительно описания знаний, наблюдаются и в наше
время. Подобно тому, как введение баз данных позволило заменить ма-
шинами человека (и, тем самым, существенно увеличить объемы обра-
батываемой информации) в различных областях, связанных с обработ-
кой данных, введение онтологий позволит машинам выполнять работу
человека в некоторых областях, связанных с более интеллектуальной
деятельностью.
13
1.2 Определение онтологии
14
димости строить формальные описания знаний программных систем.
Рассмотрим подробнее, как это происходило.
Осознание необходимости отделения описания знаний от самих зна-
ний начало происходить в конце 80-х годов прошлого века. Вместе с осо-
знанием этой необходимости начался пересмотр самого понятия «зна-
ние», применительно к компьютерным интеллектуальным системам.
До этого [36], знание рассматривалось с функциональной точки зре-
ния:
Эта точка зрения выглядит вполне логичной. Если для человека зна-
ние— это прежде всего вера в истинность или, если угодно, в полноту
представлений этого человека о мире (или о какой-то его части), то для
машины понятие веры совершенно не применимо. Поэтому, знание рас-
сматривается как информация, заставляющая программную систему
действовать рационально и предсказуемо. Подразумевается, что эта ин-
формация приходит от некоего эксперта,— человека, обладающего зна-
нием. Позже [27], было предложено рассматривать знание, как модель
представлений о мире, а не модель состояния ума некоего эксперта.
Согласно этому подходу, знание компьютерной системы— это модель
объективной реальности, точнее, некоторой ее части, называемой пред-
метной областью . Но, тогда можно отделить модель описания мира от
поведения программного агента.
Термин «онтология» впервые появился в работе Томаса Грубера
[30]. Грубер решал инженерную задачу создания механизма взаимо-
действия программных систем баз знаний друг с другом. Для решения
этой проблемы были преложены следующие методы:
15
описание должно быть понятно, как человеку, так и машине, и
потому, выдается в двух видах:
1. Канонической форме, представляющей собой описание зна-
ния на обычном языке логики предикатов.
2. В форме онтологии , как ее представлял в тот момент Гру-
термов
бер, т.е. в виде набора описаний (классов, отношений,
определений
констант и т.д.) и , связывающих эти термы друг
с другом.
∙ Построить, на основе выделенных описаний, библиотеки онтоло-
гий
, которые можно было бы использоваться в различных базах
знаний.
Таким образом, Т. Грубер является автором термина «онтология» в ин-
женерии.
Задача построения описания знания является довольно специфиче-
ской. Грубер даже выделил для этой задачи отдельный термин— «спе-
цификация концептуализации». Здесь под «концептуализацией» пони-
мается «абстрактный, упрощенный взгляд на мир, который использу-
ется людьми для осуществления некоторой цели» [31]. Особенность за-
дачи концептуализации заключается в том, что для обмена знаниями
между программными системами необходимо явно специфицировать их
концептуализацию, т.е. построить описание этих знаний, причем в до-
статочной степени формальное, чтобы его понимали другие системы.
Результат такой спецификации был назван Грубером термином «онто-
логия».
Таким образом, понятие инженерная онтология можно опреде-
лить как спецификацию (формальное описание) некой концептуализа-
ции (представления предметной области исследуемой задачи так, как
это необходимо для данной задачи). Если со спецификацией здесь все
более-менее ясно, то что такое концептуализация
3
не совсем понятно.
Грубер считал, что концептуализация проводится в терминах классов и
атрибутов. Мир исследуемой задачи представляется в виде понятий, ко-
торые описываются классами, вместе с их свойствами (атрибутами), и
конкретными объектами,— экземплярами классов. Например, проекти-
руя программную систему, содержащую информацию об автомобилях,
естественно ввести классы, представляющие марки автомобилей (Тойо-
та, Лада, Ниссан и т.д.), а конкретные автомобили рассматривать, как
3Следует отметить, что английский термин concept означает ни что иное, как
понятие . Отсюда можно вывести значение термина концептуализация, как постро-
ение системы понятий, отражающей данную предметную область
16
экземпляры соответствующих классов. Такой подход популярен и на
нем основаны принципы объектно-ориентированного программирова-
ния.
Автор полагает, что сведение определения концептуализации к пред-
ставлению только в виде классов и их атрибутов, несколько узко. В раз-
деле 2.1 приводится пример определения понятий посредством так на-
зываемых прототипов — типичных представителей понятия. Так, для
понятия «инструмент» имеется прототип «молоток», а для понятия
«плод» прототипом является «яблоко». Разумеется, у некоторых лю-
дей могут иметься другие прототипы. Например, для понятия «плод»
часто в качестве прототипа называют «апельсин». Это не устанавливает
принципиальных ограничений на использование прототипа, как пред-
ставителя понятия. Таким образом, понятия можно описывать с помо-
щью их типичных представителей— прототипов, и определять, принад-
лежит или нет конкретный объект данному понятию с помощью меры
семантического расстояния данного объекта от прототипа понятия.
Существуют понятия, которые только так и можно ввести. Вопросы,
связанные с различными методами определения понятий подробно об-
суждаются в разделе 2.1.
Концептуализация— это всегда упрощенный взгляд на мир. Из пред-
метной области выделяются только те элементы, которые необходимы
для данной задачи4 , другие свойства предметной области не рассматри-
ваются. Приведем хрестоматийный пример. Пусть, в качестве предмет-
ной области выступает конкретный дом. Для постройки дома задей-
ствуют несколько групп специалистов, среди которые имеются архи-
текторы, поставщики материалов и строители. Архитекторы рассмат-
ривают дом, как единое целое, акцентируя внимание, главным образом,
на том, как различные части (комнаты, этажи) составляют это целое.
Строители также рассматривают дом, как единое целое, но внимание
акцентируется, в основном, на производственных процессах: сколько
человек и какое оборудование отрядить на постройку этажа, сколько
времени необходимо для постройки и т.д. Поставщики материалов во-
обще не рассматривают дом, как единое целое. В представлении постав-
4 Мы будем в таких случаях говорить: цели, а не задачи. Ведь, понятно, что за
каждой задачей стоит некая цель, ради достижения которой эта задача поставле-
на. Человеческий ум устроен таким образом, что он постигает мир только через
упрощенное представление, которое обусловлено некоторой целью. Это представ-
ление называется абстракцией. Например, когда рассматривается конкретный ав-
томобиль, то совсем неважно, скажем, каков этот автомобиль на вкус. Хотя, это
свойство (вкус) определенно присутствует у всех автомобилей, оно в данном случае
(т.е. применительно к понятию «автомобиль») не важно.
17
щика, дом— это вместилище нескольких тон цемента, бетона, стали и
других строительных материалов. Таким образом, цель определяет то,
как будет проводиться концептуализация.
18
∙ Онтология в инженерии создается для решения инженерной за-
дачи.
Классификации
Классификация представляет собой простую форму спецификации кон-
цептуальной схемы, в которой все элементы предметной области раз-
19
Природный мир
Царство
Класс
Отряд
Род
Вид
Разновидность
Таблица 1.1: Элементы Линнеевской Иерархии
21
токолом обмена данными между ними. Теория ООП была заложена в
конце 70-х годов и первопроходцем в этом была Барбара Лисков [35].
Ее подход основывался на аналогии с линнеевской классификацией и
из нее же была унаследована терминология.6
Другой известный пример классификации представляет собой Пери-
одическая система химических элементов Д.И. Менделеева [8]. Корне-
вым типом в этой классификации является «химический элемент». Хи-
мический элемент имеет несколько атрибутов, главным из которых яв-
ляется атомный вес . Остальные свойства химического элемента опре-
деляются его атомным весом. Периодическая система не является так-
сономией, так как ее классификация не иерархическая, но основана на
важнейшем понятии «периода». Сущность открытия Менделеева за-
ключалась в том, что с ростом атомного веса химических элементов их
свойства меняются не монотонно, а периодически. После определенного
количества разных по свойствам элементов, расположенных по возрас-
танию атомного веса, свойства начинают повторяться. Например, на-
трий похож на калий, неон похож на аргон, а золото похоже на серебро
и медь. Разумеется, свойства не повторяются в точности, основные или,
как говорят, существенные для данного периода, характеристики оста-
ются неизменными. Таким образом, химические элементы можно клас-
сифицировать по принадлежности к периоду. Кроме того, порядковый
номер химического элемента в периоде также важен: все элементы с
одним и тем же порядковым номером в периоде обладают похожими
свойствами. Так, неон и аргон представляют последние элементы сво-
их периодов и принадлежат семейству инертных газов. Один и тот же
химический элемент, например неон, принадлежит первому периоду,
т.е. типу «первый период», но также и принадлежит и типу «инертные
газы». Следовательно, классификация периодической системы не яв-
ляется таксономией. Это пример более сложного вида классификации,
показывающий, что не все классификации представляют собой таксо-
номии.
Сейчас в системах Web-поиска интенсивно используются классифи-
кации Web-сайтов, в которых описываются иерархически связанные
между собой категории поиска. Обычно, такая классификация пред-
ставляет собой расширенную таксономию, где присутствует дерево по-
исковых категорий, каждый элемент которого может иметь дополни-
тельные свойства. Такая классификация, фактически, представляет со-
6 Этим, вероятно, можно объяснить, что методология проектирования программ-
ных систем в 80-х и 90-х годах страдала, если можно так выразиться, излишним
биологизмом.
22
бой таксономию Интернета, построенную с целью оптимизации поиско-
вых задач. Например, классификация компании «Яндекс» называется
«Яндекс Каталог» [12] и представляет собой дерево не более четырех
уровней иерархии. Типы в этой классификации называются «рубрика-
ми». Существуют следующие рубрики верхнего уровня:
∙ Hi-Tech
∙ Работа
∙ Учеба
∙ Дом
∙ Общество
∙ Развлечения
∙ Отдых
∙ Культура
∙ Спорт
∙ СМИ
∙ Производство
∙ Бизнес
∙ Справки
∙ Авто
∙ Порталы
Онтологии с соотношениями
Хотя классификации представляют собой наиболее часто встречаю-
щийся вид онтологий, все же существуют задачи, концептуальные схе-
мы которых не укладывается в рамки простой классификации.
Рассмотрим простой пример. Пусть проектируется онтология гео-
метрических фигур и в этой онтологии необходимо описать тип «квад-
рат». Этот тип можно описать двумя способами:
23
В обоих случаях не обойтись простой классификацией, необходимо
как-то задать соотношения между сторонами прямоугольника или уг-
лами ромба.
Вообще, часто типы очень трудно описать простым перечислением
атрибутов. Например, легковой автомобиль можно описать, как авто-
мобиль, масса которого не превышает трех с половиной тонн. Иначе
говоря, легковой автомобиль задается посредством ограничения на зна-
чение своего атрибута. Это наиболее часто используемый тип соотно-
шений.
Существуют и более сложные случаи. Например, понятия «путь»,
«время» и «скорость» в онтологии механического движения связаны
между собой соотношениями, которые выражаются только с помощью
некоторой функции. Для такого рода задач необходимо уметь строить
онтологии, которые выражают более сложные зависимости. И конечно,
для этого необходим специальный язык, который включает эти воз-
можности выражения. Обычно, в качестве такого языка используется
та или иная разновидность языка исчисления предикатов, т.е. опреде-
ляемая онтология представляет собой логическую теорию. В качестве
примера рассмотрим язык Knowledge Interchange Format (KIF) [19], ко-
торый используется в системе Ontolingua [14] в качестве языка опреде-
ления онтологий. Впоследствии (глава 4), мы изучим этот язык более
подробно, здесь только рассмотрим некоторые его идеи, понимание ко-
торых необходимо для усвоения примеров.
Язык KIF фактически представляет собой исчисление предикатов,
содержащее функциональные символы и равенство. KIF базируется на
языке LISP [18], поэтому имеет префиксную нотацию. KIF концептуа-
лизирует предметную область на основе трех основных понятий: «мно-
жество», «отношение» и «функция».
Множество представляет собой абстракцию предметной области, а
именно: считается, что предметная область представляет собой множе-
ство всехобъектов в мире, реально существующих или гипотетических.
Ввиду того, что предметная область в языке KIF представляет собой
абстракцию, разрешается чтобы различные пользователи имели свои
предметные области, однако при этом все такие предметные области
должны включать следующие базовые объекты:
24
∙ Все конечные списки объектов предметной области.
25
Ontolingua, здесь же удовлетворим любопытство читателя и приступим
к обсуждению конкретных примеров.
Пример 1.1. (Частичный порядок )
Частичный порядок часто встречается на практике. Типичной явля-
ется ситуация, что некоторые объекты сравнимы друг другом, а другие
нет. При этом, каждый объект сравним с самим собой. Это свойство
называется рефлексивностью . Другие два свойства отношения частич-
ного порядка— антисимметричность транзитивность
и , формально
описаны чуть ниже. Обозначим отношение частичного порядка через
«6». Математически, три его свойства можно выразить следующим об-
разом:
(defrelation partial-order
(<=> (partial-order ?r ?s)
(and (transitive ?r ?s)
(asymmetric ?r ?s)
(reflexive ?r ?s))))
В соответствии с синтаксисом языка Lisp, функциональные выражения
выражения вида 𝑓 (𝑥, 𝑦) представляются в виде списка (f x y), в кото-
ром первый элемент— это имя функции, а остальные элементы списка
представляют его аргументы. Элементы списка отделяются пробелами.
Для определения отношения используется ключевое слово «defrelation».
Определяется отношение частичного порядка partial-order, задавае-
мое переменной «?r» на множестве «?s». Отношение «?r» является на
множестве «?s» частичным порядком тогда и только тогда, когда оно
26
является на множестве «?s» одновременно транзитивным, антисиммет-
ричным и рефлексивным. Конечно, еще необходимо определить три по-
следних отношения. Приведем, например, определение для рефлексив-
ного отношения:
(defrelation reflexive
(<=> (reflexive ?r, ?s)
(and (binrel ?r, ?s)
(forall ?x)
(=> (member ?x, ?s)
(holds ?r, ?x, ?x)))))
Как и выше, отношение «?r», определенное не множестве «?s», является
рефлексивным тогда и только тогда, когда выполняются одновременно
два условия:
*Изменяющиеся онтологии
До сих пор мы игнорировали тот факт, что онтологии могут изменяться с течением
времени. Примеры онтологий, которые были приведены выше, представляют собой
как-бы снимки концептуальной схемы, которые не отражают ее изменений, проис-
ходящих во времени. Между тем, концептуальные схемы, как правило, изменяются,
появляются новые понятия и исчезают некоторые старые, меняется терминология,
то, что считалось когда-то важным и значительным, со временем перестает быть
таковым, зато то, на что ранее никто не обращал внимания, вдруг обретает особый
смысл и привлекает внимание людей. Хорошо было бы заложить эти возможности
изменения концептуальной схемы в инструмент моделирования, с помощью которо-
го производится построение ее онтологии, чтобы естественным образом эти измене-
ния отображать. Конечно, существуют задачи, когда в самой онтологии задавать
такие возможности нет нужды, проще просто выпустить новую версию онтологии,
отражающую произошедшие изменения. Так, наверное, для рассмотренных выше
классификаций, привнесение в онтологию возможностей ее изменения выглядит из-
лишеством, только затрудняющим понимание основных сущностей. Но для многих
27
других задач, теснее соприкасающихся с реальностью, инструментарий поддержки
изменений несомненно необходим.
Другой факт, который мы игнорировали до сих, состоит в том, что онтологии—
это социальный продукт, т.е. результат коллективного труда. Онтология может со-
здаваться одним человеком, но полезна она только тогда, когда используется дру-
гими людьми. Это означает, что существует договоренность между членами соци-
ума относительно содержания концептуальной схемы, которая строится в данный
момент. Мы говорили о понятиях как о базовых элементах, на которых основа-
но понимание. Но понятия становятся таковыми только тогда, когда оформляется
договоренность между членами сообщества относительно их истолкования. До тех
пор, понятия представляют собой только индивидуальные переживания (смыслы).
Оформление смысла в понятие происходит посредством обсуждения, в процессе
которого понятие уточняется и приобретает четкую форму. Результат такого об-
суждения— это договоренность между членами сообщества о том, каким образом
они соотносят свои индивидуальные переживания друг с другом. Было бы хорошо,
чтобы программная система построения онтологий предоставляла возможности их
коллективного редактирования. Реализация таких возможностей имеет свои труд-
ности и подводные камни.
В процессе изменения типов может меняться и их объем, т.е. могут появлять-
ся новые экземпляры, другие экземпляры могут исчезать. С этой точки зрения,
моделировать тип с помощью множества довольно неудобно, ведь множества опре-
деляются своими элементами, а последние могут быть еще не все известны7 . Чтобы
адекватно выразить свойство неполноты описания типа, необходим соответствую-
щий формальный аппарат. Таким формальным аппаратом представляется теория
категорий [7]. Теория категорий— это раздел математики, оперирующий матема-
тическими конструкциями под названием «категория». Категория содержит два
вида элементов: объекты и морфизмы. Морфизмы выражают связи между объ-
ектами. Так, категория множеств содержит в качестве объектов множества, а в
качестве морфизмов— отображения множеств друг в друга. Каждому морфизму
соответствует два объекта данной категории: объект, ассоциированный с началом
морфизма, и объект, ассоциированный с концом морфизма. Для категории мно-
жеств, где объектами выступают множества, а морфизмами— отображения мно-
жеств, объект, ассоциированный с началом морфизма— это область определения
данного отображения-морфизма, а объект ассоциированный с концом морфизма,
соответственно,— область значений. Традиционно, морфизмы обозначаются строч-
ными буквами латинского алфавита, а объекты— прописными буквами латинского
алфавита (нотация, унаследования от традиционных обозначений множеств и функ-
ций между ними). Будем писать 𝑓 : 𝐴 → 𝐵 для обозначения морфизма 𝑓 с началом
в объекте 𝐴 и концом в объекте 𝐵 . Между морфизмами должна быть задана опера-
ция композиции или умножения морфизмов, а именно: если 𝑓 : 𝐴 → 𝐵 и 𝑔 : 𝐵 → 𝐶 ,
то существует морфизм ℎ = 𝑓 𝑔 : 𝐴 → 𝐶 — композиция морфизмов 𝑓 и 𝑔, где конец
первого морфизма совпадает с началом второго (композицию морфизмов 𝑓 и 𝑔 бу-
дем обозначать как 𝑓 𝑔 или как 𝑓 ∘ 𝑔). Очевидно, что в нашем примере категории
множеств композиция морфизмов совпадает с композицией функций. Морфизмы
7 Поэтому в программах на объектно-ориентированных языках класс— это не
множество: класс определяется именем, а не его элементами. У двух разных классов
может быть в некоторый момент времени, случайно, одинаковое множество извест-
ных элементов (например, пустое).
28
между объектами должны удовлетворять определенным требованиям, а именно:
∙ Для каждого объекта 𝐴 должен быть задан тождественный морфизм
𝑖𝑑𝐴 : 𝐴 → 𝐴 такой, что для любых 𝑓 : 𝐵 ′ → 𝐴 и 𝑔 : 𝐴 → 𝐵 ′′ выполняется
𝑓 ∘ 𝑖𝑑𝐴 = 𝑓 и 𝑖𝑑𝐴 ∘ 𝑔 = 𝑔 . Иначе говоря, композиция тождественного морфиз-
ма с любым другим дает в результате все тот-же искомый морфизм. В точ-
ности так действует тождественное отображение на любом множестве (т.е.
отображение, переводящее каждый элемент множества в него самого).
∙ Композиция морфизмов обладает свойством ассоциативности: если зада-
ны морфизмы 𝑓 : 𝐴 → 𝐵 , 𝑔 : 𝐵 → 𝐶 и ℎ : 𝐶 → 𝐷, то должно выполняться
𝑓 (𝑔ℎ) = (𝑓 𝑔)ℎ. Иначе говоря, композицию трех (а значит, и любого числа)
морфизмов можно брать в любом порядке, в результате получим одну и ту
же стрелку.
Оказывается, любую теоретико-множественную конструкцию можно опреде-
лить с использованием инструментария теории категорий, т.е. через набор объек-
тов, которыми оперирует данная конструкция, и набор морфизмов между этими
объектами. Такие представления бывают весьма неожиданными и зачастую полез-
ны для прояснения данной математической конструкции. Понятие категории лежит
в основе любой теоретико-множественной конструкции, что и определило название
данного математического формализма,— категория служит основанием математи-
ческих построений точно также, как философские категории Канта и Аристотеля
для онтологических теорий этих философов.
В теории категорий можно определить аналоги различных операций над мно-
жествами, такими как декартово произведение множеств или их пересечение. Де-
картово произведение 𝑋 × 𝑌 — это также множество, в данном случае, множество
пар, а значит, объект категории множеств. Для любых двух множеств существует их
декартово произведение, поэтому декартово произведение можно представить как
специальную операцию, сопоставляющую любым двум объектам категории третий
объект. Такие операции носят название универсальные конструкции или пределы.
Для множеств можно определить их декартово произведение, сумму, возведение в
степень и другие операции. Категория, в которой для объектов определены все те
операции, которые определены для обычных множеств, называются топосом. Та-
ким образом, топос представляет собой категорное представление понятия «множе-
ство всех множеств» или, как говорят математики,— «универсума». Объекты топоса
определяются не своим содержанием (как в случае множеств), а взаимоотношением
с другими объектами. Топос хорошо подходит для моделирования онтологий, в ко-
торых понятия задаются с помощью неполных типов. Понятия можно представлять
как объекты некоторого топоса, а различные соотношения между понятиями— в ви-
де морфизмов. Новые понятия могут быть образованы с помощью универсальных
конструкций. Например, пусть в топосе есть два специальных объекта 𝐴 и 𝐵 , первый
моделирует понятие «мужчина», а второй— понятие «женщина». Тогда можно скон-
струировать объект, обозначающий понятие «возможные семейные пары», который
находится с объектом 𝐴 × 𝐵 в специальном отношении, называемом «отношением
подобъекта». Отношение подобъекта— это категорный аналог того факта, что од-
но множество является подмножеством другого. Чтобы ввести понятие «реальные
семейные пары» необходимо построить для этого специальный объект, который из
возможных пар выбирает только те, которые присутствуют в действительности. Для
этого надо использовать элементы объекта — морфизмы из специального конечного
объекта, аналога одноэлементного множества.
29
Иногда бывает, что даже структура топоса не вполне отражает процессы кон-
струирования новых понятий. Рассмотрим, например, конструкцию образования но-
вых понятий методом понятийного смешивания [26]. Понятийное смешивание часто
бывает несимметрично. Например, если имеется два понятия: «лодка» и «дом», то
понятие «дом-лодка» это совсем не тоже самое, что понятие «лодка-дом». С по-
мощью конструкции предела такое несимметричное смешивание выразить трудно,
т.к. пределы симметричны относительно объектов и морфизмов, на основе кото-
рых они конструируются. Поэтому необходимо ввести в определениях понятий воз-
можность выделить главные (обязательные) свойства и модифицировать операции
смешивания понятий с учетом этого выделения. Соответственно, необходимо моди-
фицировать определения математических конструкций, моделирующих операцию
смешивания понятий. Такие попытки уже были проведены Джозефом Гогеном, в
результате появились так называемые 2/3-категории [25; 26].
Онтологическое моделирование на основе формализма теории категорий пред-
ставляет собой отдельную большую тему. В данной книге эти вопросы подробно
затрагиваться не будут.
30
Первая глава представляет собой расширенное введение в предмет
изложения. В разделе 1.1 излагается мотивация изучения понятия «он-
тология» и приводятся конкретные примеры задач, когда без исполь-
зования онтологий решение этих задач затруднительно. Во разделе 1.2
дается определение онтологии, а также излагаются различные поня-
тия, связанные с этим определением. Раздел 1.3 посвящен изложению
различных типов онтологий. В данном разделе приводятся примеры
классификаций и таксономий, а также более сложных типов онтоло-
гий, таких как онтологии с соотношениями и изменяющиеся онтологии.
И наконец, раздел 1.4 посвящен описанию того, что будет изложено в
последующих главах книги.
Вторая глава представляет собой сборник из трех несвязанных меж-
ду собой разделов. В разделе 2.1 излагаются философские основы по-
нятий, связанных с понятием концептуализации. Здесь излагается в
кратком виде теория прототипа, а также даются основы философского
направления под названием концептуальный релятивизм . На основа-
нии изложенного, дается определение концептуальной схемы, как ре-
зультата концептуализации инженерной задачи. Раздел 2.2 представля-
ет собой обзор известных реализаций программных систем управления
онтологиями. Каждая из таких систем содержит в качестве описания
общих понятий свою онтологию верхнего уровня. Эти онтологию дей-
ствительно представляют собой онтологии, а не концептуальные модели
в терминологии Гуарино [34]. В разделе также дается описание «брил-
лианта Совы»— онтологии верхнего уровня, разработанной известным
американским исследователем Джоном Совой. Онтология дана в ви-
де диаграммы понятий, внешне напоминающим ограненный бриллиант,
отсюда и название. И, наконец, раздел 2.3 представляет собой собрание
различных методологий построения онтологий. Рассматриваются три
методологии:
31
методология [15] была предложена для решения задачи реорга-
низации существующих информационных систем в информаци-
онные модели. В разделе дается описание этой методики и ее ос-
новных принципов.
32
фейс в виде Web-страниц с формами. Описание функциональности это-
го редактора составляет содержание данного раздела.
Глава 5 посвящена изложению идей, реализованных в системе
управления знаниями Cyc [21]. Система Cyc представляет собой базу
знаний, основанную на языке исчисления предикатов первого порядка.
Описанию основных свойств системы и истории ее развития посвящен
раздел 5.1. Для предоставления интерфейса к базе знаний, добавле-
ния новых знаний и их систематизации, в Cyc реализован специальный
язык, названный CycL [22]. Этот язык описан в разделе 5.2. В разделе
5.3 описана система логического вывода, которая используется в базе
знаний Cyc. В системе используется метод резолюций в качестве ба-
зового метода построения логического вывода, но также реализовано
множество эвристических методов, позволяющих уменьшить перебор
вариантов во время выполнения алгоритма логического вывода. Раздел
5.4 содержит описание онтологии верхнего уровня базы знаний системы
Cyc. Как и всякая развитая система управления знаниями, система Cyc
должна каким-то образом их систематизировать. Для этого в онтологии
Cyc описана сложная система общих понятий, а также системы понятий
различных предметных областей, и конкретные знания добавляются в
рамках определенной предметной области. В разделе 5.5 описан про-
ект OpenCyc [16], представляющий собой открытую часть базы знаний
Cyc. База знаний Cyc вообще предоставляется за деньги, но некоторая
ее часть, включающая в себя онтологию верхнего уровня, доступна для
публичного доступа под именем OpenCyc.
33
1.5 Список литературы
34
18. Сайт языка LISP. http://www.lispworks.com/documentation/common-
lisp.html.
24. Буч Г., Рамбо Д., Джекобсон А. Язык UML. Руководство пользо-
вателя: Пер. с англ.— М.: ДМК, 2000.
28. Codd E. A Relational Model of Data for Large Shared Data Banks.
Commun. ACM 13(6): pp. 377-387 (1970)
35
31. Gruber T. R. Ontolingua: A mechanism to support portable ontologies.
// Stanford University, Knowledge Systems Laboratory, Technical
Report KSL-91-66, Март 1992.
32. Gruber T. R. Toward Principles for the Design of Ontologies Used for
Knowledge Sharing. International Journal Human-Computer Studies,
43(5-6): pp. 907-928. (1995)
36
2 Различные аспекты
применения онтологий
37
автор надеется все же преодолеть этот непростой путь.
В классической философии, при обсуждении проблематики онто-
логии бытия, обычно рассматривались, если так можно выразиться,
объективные его стороны. В новой философии рассматриваются также
и субъективные аспекты этой проблематики. Иначе говоря, важно не
только то, что представляет собой бытие, но также и как
оно рассмат-
ривается. Обычно, эти вопросы возникают в процессе изучения опреде-
ленных социальных групп. Из наиболее крупных таких общественных
формирований можно назвать народ (этнос). Предполагается, что каж-
дый народ в той или иной степени имеет свое представление о бытие,
в чем-то совпадающее с представлениями других народов, хотя вуль-
гарный взгляд состоит в отрицании такого субъективизма вообще. Со-
временная ситуация такова, что многие народы восприняли культуру
европейской цивилизации, поэтому различия в представлениях о бытие
у разных народов сейчас незначительны. Однако, и в наше время су-
ществуют народы, которые, по тем или иным причинам, не знакомы с
европейской культурой, и тогда различия становятся видны в полной
мере. В этой связи, замечательный пример приводит Д. Дэвидсон [3]:
38
этих способов, необходимо выяснить что, собственно, представляет из
себя каждое такое особое специфическое представление о бытие, из че-
го оно состоит и каким образом структурируется. Для ответы на эти
вопросы обратимся к философии, в частности, к тому, каким образом
философы представляют структуру онтологии бытия, рассматривае-
мой в ее объективных аспектах.
Наверное, первым источником для формирования понимания о
структуре бытия можно назвать язык. На языке люди общаются между
собой и, в частности, формируют описания интересующих их областей
бытия. Язык состоит из слов, т.е. дискретен. Поэтому, слова можно на-
звать первичными элементами, посредством которых люди описывают
свое представление о бытие. Заметим, что одно и то же слово может
обозначать разные предметы. Например, слово «стул» может обозна-
чать множество разных вещей, рассматриваемых единообразно с точ-
ки зрения их функционального предназначения. Таким образом, слово
«стул» на самом деле обозначает не одну вещь, а целый класс (мно-
жество) вещей. Термин «класс» будем в дальнейшем использоваться
нами именно в этом качестве. Если задаться вопросом, на каком осно-
вании данная вещь соотносится с данным классом, то мы придем к тер-
мину «тип». Типом будем называть отличительные особенности вещи,
на основании которых мы соотносим данную вещь с данным классом.
Предполагается, что эти отличительные особенности одинаковы у всех
вещей данного класса, если их рассматривать с определенной точки
зрения. Здесь следует учитывать, что вещи имеют типы, на основа-
нии которых они формируются в классы, только в предположении, что
существует какая-то точка зрения, обусловленная некоторой целью, в
свете которой вещи приобретают определенную специфику. Так, если
бы мы рассматривали бытие не с целью выбрать вещи, чтобы на них
сидеть, а например, с целью того, чтобы их сжигать, то железные и
деревянные стулья принадлежали бы разным классам. Бывает одна-
ко, что разные цели связаны между собой— одна цель является частью
другой. Например, я хочу подобрать себе в квартиру набор необходи-
мых для проживания предметов. Для того, чтобы сидеть мне нужен
стул, чтобы есть, необходимо куда-то ставить еду, значит нужен стол,
чтобы спать необходима кровать. Все вещи здесь рассматриваются с
функциональной точки зрения, но функции каждой вещи различны,
хотя и в чем-то схожи. Чтобы назвать все такие вещи одним термином,
я использую слово «мебель». Таким образом, возникает новый класс ве-
щей, который содержит класс, который обозначается термином «стул».
Таким образом, классы, а значит и типы, соответствующие этим клас-
сам, могут образовывать иерархию, где каждая вещь более конкретного
39
класса является также и вещью более общего класса. Можно сказать
и так: цель рассмотрения формирует иерархию классов и соответству-
ющих им типов. В самом приближенном виде, такую иерархию можно
считать формой представления бытия, и это представление формиру-
ется на основе цели задачи, с точки зрения которой это рассмотрение
производится. Но, конечно, только иерархией типов вещей дело не огра-
ничивается, кроме отношения иерархии между типами могут существо-
вать другие виды соотношений и часто эти соотношения весьма сложны
и запутаны. Определяемую целью задачи точку зрения на бытие будем
также называть контекстом рассмотрения .
Рассмотрим терминологию, связанную с описанным в предыдущем
абзаце подходом к структурированию онтологии задачи. На основе вве-
денных ниже терминов мы будем строить дальнейшее повествование.
Класс
Как уже говорилось выше, класс представляет собой совокупность ве-
щей, рассматриваемых одинаково с точки зрения цели задачи, для ко-
торой производится рассмотрение. При этом задача принадлежности
данного объекта данному классу может быть в некоторых случаях оче-
видной, может оказаться очень сложной и требующих глубоких иссле-
дований, а иногда размытой и не позволяющей однозначного решения,
но являющейся предметом договоренностей.
Тип
Тип представляет отличительные особенности вещей. Вещи объединя-
ются в данный класс на основе цели задачи, для которой производит-
ся рассмотрение. Эти отличительные особенности одни и те же у всех
вещей данного класса, иначе вещи не были бы соотнесены с одним и
тем же классом. Вещи сами по себе не имеют типов, но типы вещей
появляются только при рассмотрении их под определенным углом зре-
ния, определяемым целью данной задачи. Типы обычно организуются
в иерархию, в которой вещи более конкретных типов являются также
и вещами более общих типов. Используется также терминология тип-
подтип.
Понятие
Понятие— это тип, если его рассматривать безотносительно к точке зре-
ния рассмотрения и особенностей вещей, определяемых данной точкой
зрения, которые представляет данный тип. Такой подход имеет смысл,
40
например, в математических моделях, в которых исследователь обычно
абстрагируется от целей задач и рассматривает различные возможные
соотношения между понятиями безотносительно к тому, зачем они бы-
ли введены.
Категория
Отличительной особенностью типов является то, что в зависимости от
целей задачи, они сами могут организовываться в классы. Тогда типам
приписываются новые типы, на основе которых производится объеди-
нение в классы, т.е. типы в контексте данного рассмотрения начинают
выступать как вещи. На этом свойстве типов основано введение новых
41
математических конструкций. Понятие «геометрия» в новом контек-
сте рассмотрения становится вещью— евклидовой геометрией, одной из
многих возможных геометрий. Тип группа, который представляет от-
личительные особенности таких вещей, как целые числа, невырожден-
ные матрицы и перестановки элементов, становится вещью в теории
алгебр. В философии с онтологией бытия также связывается иерархия
типов. На самом верху этой иерархии находятся наиболее общие типы.
Если тип является подтипом другого, то его можно так и определить:
такой-то тип
представляет собой некоторый тип
с дополнительны-
ми особенностями. Это обычный способ определения одного понятия
посредством более общего. Для наиболее общих типов такой вид опре-
деления не представляется возможным. Такие понятия обычно назы-
ваются категориями
. Какие конкретно понятия считать категориями,
зависит от конкретной философской концепции. Впервые термин «ка-
тегория» появился у Аристотеля, который выделил десять категорий.3
Позже этот термин использовался Кантом в его «трансцедентной ло-
гике» для обозначение так называемого априорного знания. По Канту
[8], мир ощущений и восприятий представляет собой хаос, беспорядоч-
ное нагромождение чувств и событий, и упорядочивают его априорные
формы чувственности, такие как пространство и время. Пространство
и время не существуют в реальном мире, но представляют собой только
формы восприятия внешнего мира. Так как пространства и времени не
существует в реальности, знание о них не может быть получено из опы-
та, который предшествует любому опыту и, следовательно, является
априорным. Наложение связей на воспринимаемые сквозь призму про-
странства и времени явления происходит посредством так называемых
категорий рассудка. К таковым можно отнести категории количества,
такие как единство, множество и цельность, категории качества: реаль-
ность, отрицание и ограничение и т.д. Недостаток категорий рассудка
у Канта состоит в том, что они не выводятся из деятельности рассудка,
а довольно произвольно задаются самим Кантом. Этот недостаток раз-
решается в философии Гегеля с помощью диалектики, через которую
Гегель «выводит» категории рассудка из самого бытия.
Смысл
Под смыслом будем понимать психологический феномен, специфиче-
ское состояния ума, которое можно также выразить термином «пони-
мание». Но понимание характеризует это состояние вообще, а смысл
3 Категории Аристотеля мы рассмотрим подробно позже, в разделе 2.2.
42
связан с конкретной вещью. Иначе говоря, смыслом вещи называется
определенное состояние ума конкретного индивида, выражаемое в спе-
цифическом психологическом состоянии этого индивида, которое мож-
но выразить фразой «я понимаю».
Значение
Значения— это смыслы, которые различные индивиды примерно одина-
ково соотносят с данной вещью (как правило, это достигается в резуль-
тате договоренности). Значения представляют собой абстракции смыс-
лов,— понятия, которые выделены из контекстов индивидуальных пе-
реживаний.
Объект
В зависимости от контекста рассмотрения, объект может представлять
собой как тип, так и некоторую вещь. Обычно, термин «объект» ис-
пользуют для выделения некоторого индивида области рассмотрения,
не специфицируя при этом является ли он вещью или типом.
Экземпляр
Экземпляры— это элементы некоторого класса. Обычно экземпляры—
это вещи, но как уже говорилось выше, в другом контексте рассмотре-
ния типы вещей могут рассматриваться как вещи.
44
3. Экземпляры. Если попросить интервьюируемого назвать несколь-
ко экземпляров некоторого понятия, то прототипы будут назы-
ваться чаще.
Наверняка читатель играл в такую игру. Загадывающий предвари-
тельно записывает на бумаге три слова, а затем просит партнера начать
обратный отсчет от ста. Дождавшись момента, когда партнер отвлечет-
ся на счет, загадывающий просит:
1. Назвать любого поэта.
2. Назвать любой плод.
3. Назвать любой инструмент.
После того, как партнер делает это, загадывающий торжествующе по-
казывает записанные им предварительно на бумаге ответы: «Пушкин»,
«яблоко» и «молоток». Очевидно, что на самом деле таким образом
выделяются прототипы соответствующих понятий.
В отличии от аристотелевского подхода, в котором все экземпляры
класса представляются равноценными, в теории прототипа имеется ме-
ра соответствия экземпляра классу. Очевидно, что наиболее близкими
к классу экземплярами являются прототипы. Эти экземпляры распола-
гаются «в центре» понятия. Другие экземпляры располагаются «чуть
дальше». Понятие может иметь несколько почти равноценных прототи-
пов. Например, в качестве прототипа понятия «поэт» может выступать
также и экземпляр «Лермонтов», а для представления понятия «плод»
можно использовать и «абрикос». Меру принадлежности экземпляра
данному классу можно оценить сходством с данного экземпляра с про-
тотипом класса понятия. Оказывается, как мы увидим чуть позже, мера
соответствия экземпляра классу этого экземпляра является метрикой ,
т.е. удовлетворяет всем формальным свойствам, предъявляемым к ма-
тематическому определению функции метрики.
Другим новым подходом, связанным с теорией прототипа и также
предложенным Рош [67], является метод, основанный на так называ-
емых понятиях базового уровня . Такие понятия задаются в иерархии
типов и обычно связаны с какими-нибудь моторными или сенсорными
действиями. Например, на вопрос «На чем Вы сидите?» обычно от-
вечают: «на стуле», а не «на офисном кресле», «кухонном стуле» или
просто «на мебели». Стул, как понятие, связан с его основной моторной
функцией— сгибанием ног в коленях. Кроме того, стул— это наиболее
высокое по уровню понятие, которое можно нарисовать. Для следую-
щего по уровню понятия «мебель» этого сделать уже невозможно. Для
45
традиции, которая основана на аристотелевском понимании типа как
совокупности пар атрибут-значение, выделить на этом основании поня-
тия базового уровня затруднительно. Функционально, можно сказать,
что понятия базового уровня представляют собой декомпозицию реаль-
ности на максимально информативные категории. Следовательно, они:
46
определить исходя из таких примеров. По этой причине, такое определе-
ние типов особенно популярно в различных, основанных на статистике
приложениях, таких как кластерный анализ и нейронные сети.
В 2000 году была издана книга «Понятийные пространства» [48]
профессора университета Лунд (Швеция) Питера Гарденфорса. В этой
книге, Гарденфорс предложил использовать геометрический подход к
представлению понятий. В этом подходе, свойства понятий представ-
ляются в виде размерностей понятийного пространства, получаемого
декартовым произведением свойств и снабженным определенной метри-
кой. Каждое понятие представляет собой выпуклую область простран-
ства. Конкретные экземпляры понятия представляются в виде точек
данной области. Между экземплярами определено расстояние, кото-
рое в предыдущем параграфе мы назвали «семантическим». Некоторые
свойства взаимосвязаны друг с другом, т.е. в человеческом сознании
неотделимы друг от друга. Например, такие свойства цвета, как цвет-
ность, яркость и насыщенность, являются неотделимыми. Гарденфорс
объединяет такие свойства в собственные пространства, называемые до-
менами (domains). Объединение свойств в домены чрезвычайно важно
для правильного моделирования человеческого мышления, т.к. разделе-
ние свойств, которые являются в человеческом сознании неотделимыми
друг от друга приводит к некорректным моделям. Гарденфорс выделя-
ет три уровня представления процесса человеческого мышления:
47
ся в джунглях, при этом ему неизвестен дальнейший путь. Он расспра-
шивает аборигена и тот ему объясняет дальнейший путь следующим
образом: «пройдешь триста шагов прямо, потом свернешь направо и
пройдешь еще двести шагов, после чего поворачивай налево и иди до
тех пор, пока не попадешь на шоссе». В данной ситуации это объяснение
является наилучшим способом донести информацию о пути к шоссе и
это представление пути соответствует базовому уровню. Но предполо-
жим, что путь до шоссе слишком длинный и требует многих поворотов,
запоминания количеств шагов и т.п. вещей. В этом случае, подобное
объяснение не годится, т.к. просто запутает путника еще больше. Необ-
ходимо дать путнику значимые ориентиры. Иначе говоря, хорошее опи-
сание пути до шоссе в этом случае выглядело бы примерно так: «иди
прямо, пока не встретишь баобаб с дуплом чуть ниже моего роста, за-
тем поверни направо и иди до берега реки, а по нему иди влево до тех
пор, пока не встретишь грунтовую дорогу, вот по ней свернешь направо
и дойдешь до шоссе». Это представление пути соответствует геометри-
ческому уровню, здесь уже встречаются понятия (баобаб, река, дорога),
но они взаимосвязаны между собой, привязаны к джунглям естествен-
ным образом (нахождением в них). Если бы у путника была карта, то
единственное, что было бы ему необходимо от аборигена, это указание
на карте места, где в данный момент путник находится, и направление
сторон света. Этого было бы достаточно, чтобы путник сам отыскал
дорогу к шоссе. Карта соответствует символьную уровню представле-
ния. На карте местность четко размечена в соответствии с масштабом
карты, выделены примечательные для данной местности области, этим
областям даны имена и т.д.
Конечно, можно задать законный вопрос: зачем использовать но-
вые теории представления понятий, если уже имеется аристотелев-
ская? Определение типов с помощью атрибутов согласно аристотелев-
ской традиции вполне нормально работает, поэтому не ясно, есть ли
еще какой-нибудь интерес, кроме академического, в новой теории зада-
ния понятий? Во-первых, новые теории позволяют точнее определить
некоторые аспекты человеческого мышления, которые не покрываются
аристотелевской теорией. В этом смысле, аристотелевская теория пред-
ставления понятий относится к новым теориям понятий точно также,
как теория тяготения Ньютона относится к общей теории относитель-
ности. Кроме того, не каждое понятие можно определить посредством
задания его свойств. Приведем пример Витгенштейна из его знамени-
тых «Философских исследований» [2, раздел 66]:
48
«играми». Я имею в виду игры на доске, игры в карты, с
мячом, борьбу и т.д. Что общего у них всех? Не говори «В
них должно быть что-то общее, иначе их не называли бы иг-
рами», но присмотрись, нет ли чего-нибудь общего для них
всех. Ведь, глядя на них, ты не видишь чего-то общего, при-
сущего им всем, но замечаешь подобия, родство, и притом
целый ряд таких общих черт. Как уже говорилось: не ду-
май, а смотри! Присмотрись, например, к играм на доске с
многообразным их родством. Затем перейди к играм в кар-
ты: ты находишь здесь много соответствий с первой группой
игр. Но многие общие черты исчезают, а другие появляются.
Если теперь мы перейдем к играм в мяч, то много общего
сохранится, но многое и исчезнет. Все ли они «развлекатель-
ны»? Сравни шахматы с игрой в крестики и нолики. Во всех
ли играх есть выигрыш и проигрыш, всегда ли присутству-
ет элемент соревновательности между игроками? Подумай о
пасьянсах. В играх с мячом есть победа и поражение. Но в
игре ребенка, бросающего мяч в стену и ловящего его, этот
признак отсутствует. Посмотри, какую роль играет искус-
ство и везение. И как различны искусность в шахматах и в
теннисе. А подумай о хороводах! Здесь, конечно, есть эле-
мент развлекательности, но как много других характерных
черт исчезает. И так мы могли бы перебрать многие, мно-
гие виды игр, наблюдая, как появляется и исчезает сходство
между ними.
Таким образом, для понятия «игра» чрезвычайно трудно, если вооб-
ще возможно, выделить разделяемый всеми объектами, которым мы
даем наименование «игра», набор свойств. С другой стороны, простое
перечисление нескольких прототипов этого понятия позволяет вполне
определенно передать смысл понятия «игра» другому человеку. Вот
что по этому поводу говорит Витгенштейн [2, раздел 69]:
Как же тогда объяснить кому-нибудь, что такое игра? Я по-
лагаю, что следует описать ему игры, добавив к этому: «Вот
это и подобное ему называют играми». А знаем ли мы са-
ми больше этого? Разве мы только другим людям не можем
точно сказать, что такое игра? Но это не неведение. Мы не
знаем границ понятия игры, потому что они не установлены.
Как уже говорилось, мы могли бы для каких-то специальных
целей провести некую границу. Значило бы это, что только
теперь можно пользоваться данным понятием? Совсем нет!
49
Разве что для данной особой цели. В такой же степени, в ка-
кой дефиниция «1 шаг = 75 см», вводила бы в употребление
меру длины «1 шаг». Если же ты попытаешься мне возра-
зить: «Но ведь раньше это не было точной мерой длины», я
отвечу: ну и что, значит, она была неточной. Хотя ты еще
задолжал мне определение точности.
50
цию. Полезность формального описания онтологий как раз и основана
на том факте, что такие описания созданы в рамках одной парадигмы
и, таким образом, описываемые онтологии имеют за собой общие це-
ли, в свете которых возможно их совместное использование. Приведем
формальное определение концептуальной схемы задачи, заимствован-
ное нами из философии концептуального релятивизма [3].
51
от древнегреческих авторов, последователей аристотелевской онтоло-
гической традиции [см. 58]. Как увидит читатель, приведенные ниже
различные версии онтологий верхнего уровня в основном выдержаны
в рамках этого подхода. На основе лингвистического анализа древне-
греческого языка, Аристотель выделяет десять основных категорий ве-
щей. Ключевой категорией в онтологии Аристотеля является категория
субстанции , как первичной основы всех других вещей. Категории ко-
личества и качества существуют тогда и только тогда, когда их субстан-
ции имеют эти количества и качества, а категории отношения между ве-
щами существуют только тогда, когда субстанции этих вещей связаны
между собой этими отношениями. Все другие категории вещей в этом
смысле зависимы от субстанций. С этой точки зрения, Аристотель раз-
деляет Реальность на независимые сущности (субстанции) и зависимые
(все остальные вещи). Другим таким разделением в Аристотелевской
онтологии является разделение на возникающие (occurrent) инепре-
рывные (continuant) объекты. Непрерывные объекты существуют как
единое целое во все моменты времени своего существования, возникаю-
щим же объектам, напротив, необходимы промежутки времени, чтобы
собрать себя в единое целое. Например, категории субстанции, количе-
ства, качества и пространства могут рассматриваться как непрерывные
сущности, так как не нуждаются в своем определении временных про-
межутков. Категории действия, страсти (волнения) и самого времени
являются примерами возникающих объектов. Аристотель также вводит
понятие универсалии . Универсалия Аристотеля— это синоним того, что
мы называем понятием или типом. Читатель убедится, что онтологии
в приведенном далее списке представляют собой различные вариации
приведенного выше описания онтологии Аристотеля.
Список онтологий ниже не претендует на полноту, цель его приве-
дения состоит в том, чтобы, с одной стороны, дать читателю представ-
ление о принципах, на которых строятся онтологии верхнего уровня,
и с другой стороны, познакомить читателя с наиболее популярными
на сегодня базами онтологий. Читатель, несомненно, отметит сходство
онтологий верхнего уровня с философскими онтологиями, т.е. теми, ко-
торые строятся философами для объяснения метафизики Мира.
52
звание «бриллиант Совы». Бриллиант Совы имеет два представления:
в виде решетки и в виде таблицы, представленные, соответственно, на
рисунках 2.1 и 2.2.
⊤
Îáúåêò Ïðîöåññ Ñõåìà Ñêðèïò Ñðàùèâàíèå Ó÷àñòèå Îïèñàíèå Èñòîðèÿ Ñòðóêòóðà Ñèòóàöèÿ Ïðè÷èíà Öåëü
Физический Абстрактный
Продолж Возник Продолж Возник
Независимый Объект Процесс Схема Скрипт
Связанный Захват Участие Описание История
Промежуточный Структура Ситуация Причина Цель
Рис. 2.2: «Бриллиант» Джона Совы в табличном представлении
Джон Сова построил свою версию онтологии верхнего уровня осно-
вываясь, в основном, на философских работах Чарльза Пирса и Аль-
фреда Уайтхеда. Как уже отмечалось выше, понятия «бриллианта»
упорядочены и этот порядок имеет структуру полной решетки6 . Отно-
шение порядка в решетке Совы— это известное в классификации отно-
шение вида тип-подтип. Полнота решетки обусловливает наличие двух
6 Для любого подмножества элементов частично-упорядоченного множества
нижней (верхней) гранью этого подмножества называется любой элемент, кото-
рый меньше (больше) любого элемента подмножества. Таких элементов может быть
много. Точной нижней (верхней) гранью подмножества называют наибольший (наи-
меньший) элемент из всех нижних (верхних) граней данного подмножества. Решет-
кой называют частично-упорядоченное множество, в котором каждое подмножество
имеет точную верхнюю и нижнюю грани. Примером решетки может служить си-
стема подмножеств некоторого множества. Между подмножествами можно ввести
отношение частичного порядка: 𝐴 ≤ 𝐵 если 𝐴 ⊆ 𝐵 . Тогда, для любого семей-
53
специальных элементов, наверху и внизу порядковой структуры. Эле-
мент «⊤» можно представлять себе как синоним термина «сущность»,
любой элемент решетки Совы является сущностью и потому подтипом
этого элемента. ⊤ также можно рассматривать как наиболее абстракт-
ный объект, который трактуется как неделимое целое. Элемент внизу
решетки Совы обозначается через «⊥» и представляет собой «невоз-
можную сущность»— абсурдное понятие, которое не имеет смысла. На-
ходящиеся между этими элементами понятия имеют реальное содержа-
ние. Онтология Совы включает в себя двенадцать категорий, которые
характеризуются различными аспектами. На верхнем уровне находятся
три характеризующих явления аспекта.
54
скрипта (script). Связанные элементы можно охарактеризовать
посредством способа связывания: либо элемент непосредственно
выражает некий захват (prehension) одним элементом другого
(тогда захватывать можно либо сращиванием (juncture), либоуча-
стием (participation)), либо элемент каким-то образом выража-
ется через другой в виде некоторого предложения (proposition).
В последнем случае это предложение может иметь вид некото-
рого описания (description) или некоторой истории (описания во
времени— history). И, наконец, если элемент характеризуется как
промежуточный, то он может быть либо связью (nexus) между
физическими элементами, либо выводом(intention) какого-то аб-
страктного элемента из другого.
∙ Третий аспект описывает, каким образом данный элемент суще-
ствует во времени. Если элемент существует какой-то, достаточ-
но продолжительный и устойчивый промежуток времени, то этот
элемент можно назвать продолжительным
(continuant). В про-
тивном случае назовем его возникающим
(occurrent).
Каждый элемент предметной области может принадлежать в точности
одной из следующих двенадцати категорий (описания категорий взяты
из [70]):
∙ Объект (Object). Сущность, которая может существовать
некий стабильный периоде времени. Объектом может быть
обычный физический предмет, а также экземпляр класса в
объектно-ориентированном языке программирования.
∙ Процесс (Process). В зависимости от масштаба времени рассмот-
рения, одни и те же сущности могут рассматриваться как объекты
и как процессы. Например, алмаз обычно понимается как объект,
но если взять достаточно продолжительный промежуток времени,
например, несколько миллионов лет, то алмаз можно рассматри-
вать как процесс изменения его атомарной структуры. Процес-
сы всегда имеют начальную и конечную точки, между которыми
происходят изменения. Процессы делятся на дискретные непре-
и
рывные .
∙ Схема (Schema). Схема представляет собой абстрактную форму,
чья структура не содержит связей, связанных со временем. В ка-
честве примеров структур можно привести геометрические фор-
мы, синтаксические структуры предложений некоторого языка
или содержимое цифровой фотографии.
55
∙ Скрипт (Script). Скрипт— это абстрактная форма, которая
представляет собой временную последовательность. Примерами
скрипта являются компьютерная программа, рецепт выпечки тор-
та или партитура музыкального произведения.
56
∙ Цель (Purpose). Цель объясняет причину существования процес-
са. Например, текст и ноты песни «С днем рождения тебя» состав-
ляют скрипт, описание того, как люди пели эту песню на празд-
новании дня рождения, составляет историю, а объяснение данной
ситуации— это цель.
Cyc
Cyc [12] (образовано от «encyclopedia» и читается как «Цик») пред-
ставляет собой проект по созданию базы знаний большого объема, ко-
торая призвана моделировать повседневное человеческое мышление и,
тем самым, чтобы помочь авторам решать сложные задачи из обла-
сти искусственного интеллекта в различных областях знаний. Автором
проекта Cyc является Дуглас Ленат— американский исследователь в
области ИИ. База знаний Cyc начала наполняться в 1984 году и попол-
няется до сих пор. В настоящий момент база Cyc содержит порядка 2,2
миллиона утверждений. Изначально, База знаний проекта Cyc не пред-
назначалась для открытого использования, поэтому прямого доступа к
накопленному запасу знаний у непривилегированных пользователей не
имеется. Однако, существует открытый фрагмент базы знаний Cyc—
так называемый OpenCyc [39]. Хороший обзор проекта Cyc приведен в
статье М. Алексеевой [1]. Знания в базе Cyc записываются на специаль-
ном языке— CycL в форме утверждений вида «Всякое дерево является
растением» или «Растения смертны». Синтаксис языка CycL схож с
LISP, утверждения также формируются в виде списков. В системе Cyc
также имеется машина логического вывода, которая может отвечать на
вопросы, опираясь на утверждения, имеющиеся в базе знаний. В базе
знаний Cyc можно выделить факты, которые задают общие высоко-
уровневые понятия. Эти факты представляют собой онтологию верх-
него уровня. Мы рассмотрим систему проекта Cyc подробно в главе
5. Поэтому, здесь подробно описывать содержание онтологии верхнего
уровня проекта Cyc не будем.
57
логии BFO разделены на два типа, соответствующих различным спо-
собам существования бытия во времени или двум основным способам
пространственно-временного взаимодействия [51].
58
∙ Isabelle [62]— языке логики первого порядка, созданном американ-
ским онтологом Томасом Битнером [7].
DOLCE
DOLCE [24] (Descriptive Ontology for Linguistic and Cognitive
Engineering— Описательная Онтология для Лингвистической и Когни-
тивной Инженерии) представляет собой первый из разработанных мо-
дулей так называемой WonderWeb Foundational Ontologies Library—
библиотеки онтологий верхнего уровня под названием «WonderWeb».
Основным предназначением онтологий этой библиотеки является под-
держка взаимодействия различных агентов, которые чаще всего пред-
ставляют собой компьютерные программы, разработанные для целей
ИИ. Более конкретно, онтологии библиотеки проекта WonderWeb раз-
рабатываются для следующих целей [61]:
59
bias» для обозначения того факта, что содержимое онтологии DOLCE
имеет когнитивный и лингвистический контексты. Если в «бриллиан-
те» Совы описываются исключительно общие абстрактные категории,
то в противоположность этому, онтология DOLCE представляет собой
коллекцию частностей . Под частностями здесь подразумевается по-
нятия, которые, в отличии от общих понятий (универсалий), не имеют
экземпляров. Онтология DOLCE основана на так называемом мульти-
пликативном подходе ,— это, в данном случае означает, что некоторые
сущности онтологии могут быть расположены в одной и той же про-
странственно-временной точке. Например, в чем состоит разница меж-
ду понятиями «ваза» и «кусок глины»? Предполагается, что главное
различие состоит в том, что для понятия «ваза» ее форма и топологи-
ческие свойства неизменяемы, что неверно для понятия «кусок глины».
Следовательно, мы можем называть данный предмет и вазой и куском
глины, не отождествляя эти понятия, но полагая, что ваза состоит
из
куска глины.
Все сущности онтологии DOLCE разделяются согласно следующим
четырем характеристикам (тетрахотомия, разделяющаяся на две дихо-
томии: устойчивый и неустойчивый, и качества и регионы):
60
∙ Регионы. Регионы— этот непрерывные подобласти понятийного
пространства Гарденфорса [48]. Все качестве как сущности онто-
логии DOLCE различны и индивидуальны, но могут ссылаться на
одни и те же точки понятийного пространства данной онтологии.
61
образом составляемые из своих частей). Как уже говорилось выше, ин-
дивиды— это атомы, внедренные в пространство и время. Такое внед-
рение характеризуется разбиением индивидов на объекты процессы
и .
Это различие мы уже обсуждали выше (SNAP и SPAN сущности в он-
тологии BFO, а также устойчивые и неустойчивые элементы онтологии
DOLCE). В GFO используется также понятие субстанции , под которой
понимается объект, имеющий свойства и обладающей протяженностью
в пространстве. Другой сорт объектов— это моменты , сущности, кото-
рые могут существовать только как части других объектов (например,
электрическое напряжение существует только в некотором проводни-
временные
ке). Все процессы характеризуются понятием и разделяют,
процессы перемещения изменения истории состоя-
собственно, на , , , ,
ния границы процессов
и . Субстанции вместе со своими моментами об-
разуютконфигурации . Составная конфигурация, рассматриваемая как
ситуацией
единое целое, называется . Понятие ситуации основано на
работах Джона Барвиза и Джона Перри [41; 42], посвященных опи-
санию математической теории ситуаций . Определение ситуации, ис-
пользуемое в онтологии GFO, отличается от используемого в теории
ситуаций, но в общих чертах сходно с последним. В GFO используется
двойственное определение понятия ситуации: статическое ( ситуация)и
динамическое ( ситуоид ). Ситуоид— это часть мира, рассматриваемая
как целое, но вместе с полной историей всех онтологических сущно-
стей, которые эту часть составляют. Таким образом, каждый ситуоид
имеет продолжительность во времени и заключен в некоторый топоид,
представляющий его пространственную конфигурацию. Ситуация— это
статический снимок ситуоида в какой-то момент времени, рассматрива-
емый как атомарный. Рассмотрим, например, фразу «Иван целует Ма-
шу». Здесь Иван и Маша связаны между собой отношением «целовать»,
но эта конфигурация еще не образует ситуоид. Для образования ситуо-
ида необходимо рассмотреть окружение, в котором происходит процесс,
описанный этой фразой. Может быть, Иван гуляет с Машей в лесу, а мо-
жет быть они сидят на скамейке на оживленной улице. Полное описание
истории возникновения ситуации, описываемой фразой «Иван целует
Машу», вместе с описанием того, где это происходит, образует ситуоид.
Хороший обзор структуры онтологии GFO дан в работах [59; 46].
IDEAS
IDEAS [13] (International Defence Enterprise Architecture Specification)—
это Международная Оборонная Промышленная Архитектурная Специ-
фикация для обмена данными. Для стандартизации обмена использу-
62
ется онтология, которая также называется IDEAS. Онтология IDEAS
разделяется на онтологию верхнего уровня— IDEAS Foundation, и бо-
лее конкретную IDEAS Model. Онтология IDEAS использует подход,
в котором все сущности онтологии предполагаются расположенными
в 4D континууме, состоящим из трех пространственных измерений и
одного временного. IDEAS Foundation была разработана с использова-
нием так называемого BORO метода [40] разработки онтологий для
промышленности, содержание которого будет рассмотрено ниже в этой
главе.
Онтология IDEAS Foundation имеет достаточно простую структуру
и содержит элементы четырех базовых категорий:
63
∙ Тип-экземпляр. Связывает тип с элементами множества, которое
он представляет.
WordNet
WordNet [25]— это описание английского языка, представленное в ви-
де так называемого семантического словаря , представляющего собой
обычный словарь, дополненный семантическими отношениями между
своими элементами, задаваемыми в виле семантической сети специфи-
ческого вида. Множество слова английского языка факторизовано по
отношению синонимии, класс этой факторизации называется синсет
(synset). Между синсетами и задаются семантические отношения. Цель
разработки WordNet двоякая: с одной стороны, предоставить интуитив-
но понятный словарь английского языка и, с другой стороны, предо-
ставить инструмент, который может быть использован для автомати-
ческой обработки текстов на английском языке и для другой деятельно-
сти в области ИИ. База данных WordNet содержит порядка 150 тысяч
определений слов, сгруппированных в примерно 115 тысяч синсетов, и
в сжатом виде составляет примерно 12 гигабайт. Разработка WordNet
началась в 1985 году в Лаборатории Когнитивных Наук Принстонско-
го университета под руководством профессора философии Джорджа
Миллера [33].
WordNet можно рассматривать как специального вида лексическую
онтологию . Однако, такое представление требует дополнительной ра-
боты. Каждый синсет базы WordNet можно рассматривать как смыс-
ловую единицу, т.е. онтологическую категорию. Между синсетами в
WordNet есть отношение гипонимии, на основе которого можно обра-
зовать таксономию, в которой каждый гипоним представлен как до-
черний элемент своего гиперонима. Однако, для некоторых пар в отно-
шении гипонимии необходимо образовывать не таксономическую пару
(пару отношения тип-подтип), а пару отношения тип-экземпляр. Таким
образом, преобразование базы данных WordNet в онтологию требует
дополнительной работы. Такая работа была проведена, результирую-
щая онтология называется WebKB-2 [20], ее описание можно прочи-
тать в [60]. Итак, WordNet можно рассматривать как онтологию верх-
него уровня, созданную с лингвистическими целями, если включить в
такую онтологию наиболее общие категории, содержащиеся в базе дан-
ных WordNet.
64
Suggested Upper Merged Ontology (SUMO)
SUMO [19]— это онтология верхнего уровня разработанная Рабочей
Группой IEEE по Стандартной Онтологии Верхнего Уровня (IEEE
Standard Upper Ontology Working Group [27]). Цель Рабочей Группой
IEEE состояла в разработке онтологии, пригодной для таких областей
компьютерной инженерии, как обмен данными, информационный по-
иск, автоматический вывод и автоматизированная обработка естествен-
ного языка. Поэтому, SUMO представляет собой объединение несколь-
ких известных онтологий, таких как онтологии, расположенные на сер-
вере Ontolingua, онтология верхнего уровня Джона Совы («бриллиант»
Совы) и многих других. Онтология SUMO разработана на адаптирован-
ной для целей Рабочей Группой IEEE версии языка KIF— SUO-KIF.
Онтология SUMO имеет следующую структуру [35]:
65
∙ Отношение— это класс специального вида, представляющий мно-
жество кортежей. Есть три сорта отношений: предикаты функ-
,
ции список
и . Список представляет собой частично упорядоченное
множество.
∙ Элемент графа— это неделимая часть графа, т.е. либо узел, либо
ребро.
66
Моделирование с помощью UML
В среде программистов большую популярность получил метод разра-
ботки, основанный на строгом разграничении ролей разработчиков. По-
строение программы можно разделить на две главные стадии:
1. Стадия осознания концептуальной схемы программной задачи—
проектирование . Сюда входит, как общение со специалистами
в предметной области, для которой предназначена данная про-
граммная система, так и построение адекватной инженерной мо-
дели, пригодной для решения данной задачи. Если программный
проект относительно простой, т.е. не требует разбиения программ-
ной системы на несколько изолированных модулей, каждый из
которых решает свою подзадачу, то обычно, концептуальная схе-
ма предметной области задачи не формализуется, сразу пишется
код программы или блок-схема алгоритма решения задачи. Но,
если программная система большая, то такая формализация обя-
зательно необходима. Для программной системы жизненно важно
строго определить, каким образом будут взаимодействовать меж-
ду собой ее различные модули, т.е. выработать протокол взаи-
модействия. Для этого, прежде всего, необходимо строго описать
программную модель данной задачи, которая есть ни что иное,
как ее концептуальная схема. Для построения таких формальных
описаний необходимы соответствующие специалисты, таким обра-
зом, появилась новая специальность в инженерии программиро-
вания— проектировщик программного обеспечения или архитек-
тор программных систем.
2. Кодирование. На основании осознанной концептуальной схемы
можно писать программный код. Этим также обычно занимают-
ся соответствующие специалисты,— кодеры. Можно сказать, что
кодер— это программист, обязанностью которого является напи-
сание программного кода на том или ином языке программирова-
ния в соответствии с предоставленной проектировщиком специфи-
кацией программной модели. Работа «чистого» кодера, конечно,
скучная и не творческая, поэтому часто кодеры также выполняют
какие-то частные задачи проектирования, из тех, что связаны с
конкретным языком программирования. В такие задачи входит,
например, разработка иерархии типов и спецификация интерфей-
са между ними.
Итак, стадия проектирования с нашей точки зрения представляет собой
ни что иное, как построение онтологии задачи, решению которой по-
67
священа данная программная система. Существуют развитые инстру-
менты для осуществления этой стадии разработки. Также, придуманы
языки спецификации программных моделей. Мы рассмотрим один та-
кой язык— UML.
Унифицированный Язык Моделирования UML (Unified Modeling
Language) [26] представляет собой графический язык, созданный специ-
ально для проектирования программных моделей. Язык UML графиче-
ский, это означает, что элементы языка представляют собой различно-
го рода изображения— комбинацию графических значков с текстом, а
описание программных моделей производится с помощью диаграмм ,—
комбинированных схем, составленных из элементов языка UML. Уни-
фицированный Язык Моделирования был создан в компании Rational
Software [15] в 1995 году двумя ее сотрудниками Гради Бутчем и
Джеймсом Рамбо. Язык UML был создан на основе двух языков: языка
проектирования программного обеспечения Booch (Гради Бутч) и язы-
ка анализа программ OMT (Object Modeling Technique) (Джеймс Рам-
бо). В январе 1997 года вышла спецификация языка UML 1.0, создан-
ная уже в результате сотрудничества многих компаний, среди которых
были такие известные корпорации, как Microsoft и Oracle Corporation.
UML быстро стал популярным и на протяжении почти 10 лет являлся
практически единственным широко применяемым языком такого рода.
Приведем краткое описание языка UML [на основе 44]. Для специ-
фикации программных моделей в языке UML используются три вида
диаграмм:
Структурные диаграммы (Structure Diagrams) используются для
спецификации структуры программной модели. Основным элементом,
на основе которого строятся структурные диаграммы, является класс.
Класс представляет собой совокупность атрибутов (свойств) и операций
(методов). Фактически, класс представляет собой набор свойств, т.е. по-
нятие в Аристотелевской традиции. Операции специфицируют, каким
образом будет производится взаимодействия с экземплярами класса,
которые в терминологии языка UML называются объектами . С каж-
дым классом можно также связать описание того, для чего он необ-
ходим— так называемые обязанности (responsibilities). Каждый класс
также имеет уникальное имя, которое используется для того, чтобы
отличать классы друг от друга. Изображается класс посредством пря-
моугольника, разделенного на четыре части. В верхней части пишется
имя класса, во второй сверху части перечисляются его атрибуты (на
каждый атрибут выделяется одна строка), в третьей части перечис-
ляются операции с классом и четвертая часть содержит описание его
обязанностей. Между классами можно вводить отношения . В языке
68
UML существует три типа отношений:
∙ Отношения ассоциации
(association). Это отношение выражает
структурные связи между объектами: комнаты состоят из стен,
в которые могут быть встроены двери и окна.
∙ Классов (Class).
69
∙ Компонентов (Component ).
∙ Композитной структуры (Composite structure).
∙ Объектов (Object).
∙ Пакетов (Package).
70
событий, которые не обработаны в данном состоянии и поставле-
ны в очередь для обработки в других состояниях. Под событием в
контексте диаграммы состояний понимается некий стимул, иници-
ирующий переход из одного состояний в другое. Событием может
быть, например, истечение промежутка времени, после которо-
го объект переходит из состояния ожидания в новое состояние.
Другой пример события— это прерывание от аппаратуры в ком-
пьютере, когда пользователь нажал какую-то кнопку, или пришел
пакет данных по сети.
∙ Прецедентов (Use case). Это диаграммы, на которых отражены
отношения, существующие между актерами и прецедентами7 . Ос-
новная задача диаграммы прецедентов— предоставить средство,
дающее возможность заказчику, конечному пользователю и раз-
работчику совместно обсуждать функциональность и поведение
программной системы. Диаграммы прецедентов обычно включа-
ют в себя:
– Прецеденты. Под прецедентом понимается способ исполь-
зования программной системы внешним пользователем. На-
пример, если программная система— это сотовый телефон, то
в ней могут быть следующие прецеденты: позвонить, принять
звонок, прочитать электронную почту, принять дополнитель-
ный звонок и использовать планировщик.
– Актеры. Это классы внешних пользователей программной
системы. Классы организуются по ролям, которых обычно
немного. Например, для сотового телефона есть всего два
актера: пользователь и сотовая сеть.
– Отношения зависимости, обобщения и ассоциации. Между
прецедентами и актерами могут вводиться различные от-
ношения. Например, прецедент «принять дополнительный
звонок» зависит от прецедента «принять звонок» так как
принять дополнительный звонок можно только, если какой-
то звонок уже принят пользователем. Для банковской про-
граммной системы можно ввести разновидности клиентов:
7 Актеры представляют собой элементы модели, играющие некоторую роль в
моделируемом процессе. Прецедент— это вариант использования системы. Напри-
мер, в качестве актера банковской системы может выступать клиент банка, снима-
ющий деньги со счета. Тогда, банковская система используется в варианте работы с
клиентом. Другой агент в банковской системе— это внешняя программа, например,
программа банкомата, которая выступает от имени пользователя и соединяется с
банковской системой извне.
71
индивидуальный клиент и корпоративный клиент. Это, оче-
видно, уже требует введения отношение обобщения между
актерами «индивидуальный клиент» и «корпоративный кли-
ент», с одной стороны, и актером «клиент»— с другой.
72
другими объектами. Также, на линии жизни объектов рисуется так на-
зываемый фокус управления. Он изображается в виде вытянутого пря-
моугольника, показывающего период времени, на протяжении которого
объект выполняет какое-либо действие. Верхняя грань прямоугольника
выравнивается по временной оси с моментом начала действия, а ниж-
няя— с моментом его окончания.
Диаграмма кооперации акцентирует внимание на организации объ-
ектов, принимающих участие во взаимодействии. Объекты на диаграм-
мах этого вида располагаются в виде вершин графа, а связи между объ-
ектами изображаются дугами этого графа. Связи также дополняются
сообщениями, которые объекты принимают и посылают. Диаграммы
кооперации имеют два свойства, которые отличают их от диаграмм по-
следовательности:
1. Путь. Для описания связи одного объекта с другим к дальней
концевой точке этой связи можно присоединить так называемый
стереотип пути (например, local, показывающий, что помеченный
объект является локальным по отношению к отправителю сооб-
щения).
2. Порядковый номер сообщения. Для обозначения временной после-
довательности перед сообщением можно поставить номер, кото-
рый должен обязательно возрастать для каждого нового сообще-
ния.
Диаграммы последовательностей и кооперации описывают одну и
ту же информацию, только под немного разными углами зрения. Сле-
довательно, можно сказать, что эти виды диаграмм семантически экви-
валентны. Значит, диаграмму одного вида можно преобразовать в диа-
грамму другого без потери информации. Хотя это, конечно, не означает,
что на диаграммах обоих видов представлена одна и та же информа-
ция. Диаграммы последовательностей и кооперации используют одну
и ту же модель, но визуализируют ее различные особенности.
В языке UML 2.0 также введены новые виды диаграмм взаимодей-
ствия:
∙ Диаграмма обзора взаимодействия (Interaction overview) пред-
ставляет собой разновидность диаграммы деятельности, включа-
ющая фрагменты диаграммы последовательности и конструкции
потока управления.
∙ Диаграмма синхронизации
(Timing)— это альтернативное пред-
ставление диаграммы последовательности, явным образом пока-
73
зывающее изменения состояния на линии жизни с заданной шка-
лой времени. Может быть полезна в приложениях реального вре-
мени.
Методология Грубера
В данном разделе мы рассмотрим методологию построения онтологий,
предложенную Томасом Грубером в его статье «Предполагаемые прин-
ципы проектирования онтологий, используемых для обмена знаниями»
[54]. Многие из читателей наверняка знакомы с принципами построе-
ния реляционных баз данных: база данных поэтапно приводится к нор-
мальному виду и на каждой стадии производится определенное пре-
образование— база данных преобразуется к так называемым нормаль-
ным формам. Подобная методология предложена Грубером для постро-
ения онтологий, который предложил проектировать онтологии исходя
из следующих принципов
:
74
сделанные из формальных определений, несовместимы с нефор-
мальными описаниями, то онтология считается несовместимой.
3. Расширяемость (Extendibility). Онтология должна быть спроек-
тирована так, чтобы ее без дополнительных усилий можно было
бы использовать в разделяемых библиотеках онтологий. Одним
из наиболее важных условий такого проектирования является воз-
можность определения новых понятий на основе существующих в
онтологии элементов так, чтобы это не требовало изменения по-
следних.
4. Минимальная зависимость от кодирования (Minimal encoding
bias). Проектируемая концептуальная схема не должна зависеть
от конкретного языка, который используется для записи форма-
лизованного описания. Зависимость от кодирования возникает в
том случае, когда выбор онтологического представления основы-
вается на совместимости с нотацией языка, на котором записыва-
ется онтология. Эта зависимость должна быть минимизирована,
чтобы различные базы онтологий, использующие другие языки,
могли без затруднений понимать проектируемую онтологию.
5. Минимальная онтологическая фиксация (Minimal ontological
commitment). Онтология должна, насколько это возможно мень-
ше, содержать фактов об онтологии мира, который моделируется,
предоставляя, таким образом, свободу использования данной он-
тологии в других онтологиях. Если концептуальная схема задачи
такова, что описание онтологии мира существенно необходимо, то
это описание должно быть по возможности минимальным. Стоит
ограничиться только перечислением терминов понятий, не опре-
деляя соотношения между ними, т.е. построить «слабую» теорию
в терминах Грубера. Тогда различные базы онтологий, определя-
ющие онтологии мира по своему, смогут придать этим понятиям
свой смысл.
Рассмотрим иллюстративный пример. Моделирование инженерных
систем— часто встречающаяся на практике задача. Инженеры исполь-
зуют различные математические модели, например, системы уравне-
ний, чтобы отразить поведение физических систем. Наиболее важными
понятиями в онтологиях, описывающих концептуальные схемы физи-
ческих систем и их математические модели, являются:
∙ Физическая величина (physical-quantity): 3 метра, 80 километ-
ров в час.
75
∙ Физическая размерность (physical-dimension): длина или дли-
на/время.
(defrelation physical-quantity
(<=> (physical-quantity ?q)
(and (defined (quantity.magnitude ?q))
(double-float (quantity.magnitude ?q))
(defined (quantity.unit ?q))
76
(member (quantity.unit ?q))
(setof метр секунда килограмм
ампер кельвин моль канделла))))
(deffunction the-quantity
(<=> (physical-quantity ?q)
(and (defined (the-quantity ?m ?u))
(= (the-quantity ?m ?u) ?q)
(defined (quantity.unit ?q))
(and (physical-quantity ?q)
(= (quantity.magnitude ?q) ?m)
(= (quantity.unit ?q) ?u))))
(= X (the-quantity 3 метр))
77
кодирования, но более тонкое, нежели в предыдущем случае. Име-
ется ввиду, что определение множества возможных значений по-
нятия единица измерения закодировано в определении понятия
физическая величина.
3. Также, фиксированное определение множества возможных значе-
ний единица измерения ограничивает расширяемость онтологии.
Необходимо определить понятие единица измерения так, чтобы
затем легко можно было бы добавлять новые единицы измерения.
Вариант 2. Рассмотрим, каким образом можно устранить ука-
занные выше недостатки. Сначала, изменим определения типа
physical-quantity таким образом, чтобы понятия значения и единицы
измерения были определены независимо. Для этого введем два незави-
симых класса: magnitude и unit-of-measure.
(defrelation physical-quantity
(<=> (physical-quantity ?q)
(and (defined (quantity.magnitude ?q))
(magnitude (quantity.magnitude ?q))
(defined (quantity.unit ?q))
(unit-of-measure (quantity.unit ?q)))))
(defrelation magnitude
(<= (magnitude ?x)
(real-number ?x)))
(defrelation unit-of-measure
(class unit-of-measure))
78
Теперь, на основе этого класса, можно построить механизм расши-
рения множества значений единиц измерения. Для этого введем класс
basic-unit, экземплярами которого будут значения единиц измерения.
Для таких значений определим заодно две операции: unit* (умноже-
ние) и unit^ (возведение в степень) построения новых единиц измере-
ния из существующих. Это удобно, например, когда необходимо изме-
рять площадь плоских фигур (квадратные метры) или скорость (метры
в секунду), для которой операция возведения в степень позволяет опре-
делить единицы измерения заданием отрицательных значений степени
(деление).
(defrelation basic-unit
(=> (basic-unit ?u) ; экземпляры basic-unit отличаются
(unit-of-measure ?u))) ; от экземпляров unit-of-measure
(deffunction unit*
; unit* каждой паре unit-of-measure
; сопоставляет unit-of-measure
(=> (and (unit-of-measure ?u1)
(unit-of-measure ?u2))
(and (defined (unit* ?u1 ?u2))
(unit-of-measure (unit* ?u1 ?u2))))
; операция коммутативна
(= (unit* ?u1 ?u2) (unit* ?u2 ?u1))
; операция ассоциативна
(= (unit* ?u1 (unit* ?u2 ?u3))
(unit* (unit* ?u1 ?u2) ?u3)))
(deffunction unit^
; unit^ каждой паре unit и real
; сопоставляет unit-of-measure
(=> (and (unit-of-measure ?u)
(real-number ?r))
(and (defined (unit^ ?u ?r))
(unit-of-measure (unit^ ?u ?r))))
; выполняются алгебраические свойства
; операции возведения в степень
(= (unit^ ?u 1) ?u)
(= (unit* (unit^ ?u ?r1) (unit^ ?u ?r2))
(unit^ ?u (+ ?r1 ?r2)))
(= (unit^ (unit* ?u1 ?u2) ?r)
(unit* (unit^ ?u1 ?r) (unit^ ?u2 ?r)))
79
Теперь можно определять значения единиц измерения как экзем-
пляры класса basic-unit:
(defobject метр
(basic-unit метр))
(defobject секунда
(basic-unit секунда))
(defobject метр-в-секунду
(= метр-в-секунду
(unit* метр (unit^ секунда -1))))
BORO метод
BORO (Business Object Reference Ontology) методология [см. 21] по-
строения онтологий разработана Крисом Партиджем (Chris Partridge)
[64] в середине 90-х годов прошлого века для решения задачи реор-
ганизации существующих информационных систем в информационные
модели. Крис Партидж работал над этой задачей в течении несколь-
ких лет и в результате выработал методологию построения легких он-
тологий (классификаций) для таких информационных систем с уста-
ревшей структурной организацией. Эта методика получила название
BORO методологии и завоевала популярность благодаря своей простоте
и непритязательности. На основе этой методики была разработана та-
кая известная библиотека онтологий, как обсуждавшаяся выше IDEAS.
Задача реорганизации существующих программных систем встречается
очень часто. Оборудование устаревает довольно быстро, система растет
80
и существующая архитектура перестает удовлетворять новым задачам.
Таким образом, возникает задача реорганизации программной системы.
Задачу реорганизации существующей информационной системы
можно условно разделить на две стадии:
81
ному понятию-классу. BORO методология адресована к проблеме пра-
вильного выделения классов. Для этого необходимо проделать следую-
щее:
82
Страна Протяженность (км) Границы (км)
Китай: 76, Иран: 936, Пакистан: 2430,
Афганистан 5529 Таджикистан: 1026, Туркменистан:
744, Узбекистан: 137
Аргентина 9861
Боливия: 832, Бразилия: 1261, Чили:
5308, Парагвай: 1880, Уругвай: 580
Беларусь 2900
Латвия: 141, Литва: 502, Польша:
407, Россия: 959, Украина: 891
Рис. 2.3: Таблица границ стран мира.
83
связывающих между собой границы двух стран. Таким образом, ин-
формационная система дает нам в распоряжение факты вида:
∙ Существуют страны.
∙ Каждая из них имеет границы.
∙ Некоторые части границ стран совпадают.
84
5. Домашняя страница Гейнриха Херре. http://www.informatik.uni-
leipzig.de/fk/pers/herre.html
85
23. Сайт проекта BFO. http://www.ifomis.org/bfo.
36. Философский словарь. Под ред. И.Т. Фролова. 4-е изд., М.: Поли-
тиздат, 445 с, 1981.
86
41. Barwise J. Scenes and other situations. The Journal of Philosphy,
78(7):369–397, July 1981.
44. Буч Г., Рамбо Д., Джекобсон А. Язык UML. Руководство пользо-
вателя: Пер. с англ.— М.: ДМК, 2000.
45. Codd E. A Relational Model of Data for Large Shared Data Banks.
Commun. ACM 13(6): pp. 377-387 (1970)
46. Degen W., Heller B., Herre H., Smith B. GOL: Towards
an Axiomatized Upper-Level Ontology. http://www.informatik.uni-
leipzig.de/ herre/papers/gol2001.ps
87
53. Gruber T. R. A Translation Approach to Portable Ontology
Specifications. Knowledge Acquisition, 5(2): pp. 199-220. (1993)
54. Gruber T. R. Toward Principles for the Design of Ontologies Used for
Knowledge Sharing. International Journal Human-Computer Studies,
43(5-6): pp. 907-928. (1995)
61. Masolo C., Borgo S., Gangemi A., Guarino N., Oltramari A.,
Schneider L. The WonderWeb Library of Foundational Ontologies
Preliminary Report. http://www.loa-cnr.it/Papers/DOLCE2.1-
FOL.pdf, 2003.
63. Newell A. The Knowledge Level. Artificial Intelligence 18, pp. 87-127.
(1982)
88
66. Rosch E. Cognitive representations of semantic categories. Journal of
Experimental Psychology: General, 104, pp. 192-233. (1975)
67. Rosch E., Mervis C. B., Gray W., Johnson D., Boyes-Braem P. Basic
objects in natural categories. Cognitive Psychology, 8, pp. 382-439.
(1976)
89
3 OWL— язык описания
онтологий для Web
90
зировать эту информацию, а также обмениваться такой информацией
с другими программами. Обычно, Semantic Web описывается как ком-
понент грядущей версии Web— так называемого Web 3.01 . Каким будет
Web 3.0 мы пока можем только предполагать, но очевидно, что одним
из главных его компонентов будет Semantic Web, предполагающий опи-
сание семантики Web документов.
Консорциум W3 [9] разработал целую идеологию семантического
Web, включающую в себя определение языков, которые используются
для описаний семантики Web документов, их стандартизацию, а также
предложения по использованию этих языков для описаний конкретных
документов. На сайте консорциума имеется специальный раздел [19],
посвященный Semantic Web. Для описания семантики Web информа-
ции используется язык RDF (Resource Description Framework) [2; 30],
мы его рассмотрим далее подробно. Этот язык имеет своим предназна-
чением описание ресурсов Web документов, но для выражения полно-
ценных онтологий его недостаточно. Поэтому, был предложен также и
специальный язык описания онтологии Web— язык OWL [3; 30]. Этот
язык совместим с языком RDF, т.е. каждый OWL документ является
также и RDF документом. Язык RDF построен на синтаксисе языка
XML [4], использующегося в Web в качестве стандарта для обмена дан-
ными. Поэтому, каждый OWL документ является также и корректным
XML документом. Далее мы рассмотрим также принципы языка XML.
Читатель наверняка уже догадался, почему описание языка OWL
присутствует в книге, посвященной прикладным онтологиям. Описа-
ние семантики Web в полной мере соответствует определению онтоло-
гии, данному в первой главе. Все онтологии Web имеют один и тот же
смысловой оттенок, который диктует цель написания этих докумен-
тов— публикация информации в Сети. С этой точки зрения все онтоло-
гии конкретных документов и сервисов Web могут быть объединены в
единую онтологию— онтологию Web. Язык OWL, как представляется
1 Термин Web 3.0 используется для обозначения следующего за Web 2.0 поколе-
ния World Wide Web. Термином Web 2.0 обозначают текущее состояние Web, которое
принципиально отличается от того, в котором Web находился при его зарождении. С
самого начала Web задумывался как распределенное по всему миру хранилище ги-
пертекстовых документов, таковым Web остается и сегодня. Но, с начала нынешнего
века, с ростом числа пользователей, Web превратился так и в социальный феномен.
Сегодня, популярными сервисами являются не только те, которые предоставляют
информацию, но и те, которые просто обеспечивают общение пользователей друг
с другом. Такие сервисы получили название социальные сети. Социальная сеть—
совершенно новый феномен, который отличается от сети обычных гипертекстовых
документов, как по принципам использования, так и по идеологии. Web социальных
сетей— это Web 2.0.
91
его авторам, предназначен, главным образом, для описания этой он-
тологии. Конечно, OWL можно использовать и для описания других
онтологий, как мы увидим далее, разработан даже специальный редак-
тор Protege, позволяющий удобно набирать информацию относительно
содержимого онтологий, описываемых на языке OWL.
<name>содержимое тэга</name>
Содержимое тэга— это обычно простой текст (который может быть пу-
стым), но также может иметь и более сложную структуру. Начальные
тэги могут иметь атрибуты, которые представляют собой пары вида
(имя, текст), и используются для задания дополнительной информа-
ции отмечаемому участку текста. Например,
92
ные структуры документов. Главным требованием является то, чтобы
тэги были вложены друг в друга целиком, приведем пример:
<tag1>
<tag2>
</tag1>
</tag2>
Такая структура не верна, тэги не вложены, а перекрывают друг друга.
Вот пример корректной структуры:
<tag1>
<tag2>
</tag2>
</tag1>
Более того, тэги документа должны образовывать древовидную струк-
туру, т.е. должен быть один главный тэг всего документа, в который
вкладывается размечаемый текст и все другие тэги. Таким образом,
XML документ представляется деревом, элементы которого— это тэги
и размечаемые ими участки текста, вершина дерева отмечена главным
тэгом документа. Приведем пример размеченного документа, в котором
содержится информацию о пользователях:
<user-list>
<user>
<id>1</id>
<fname>Иван</fname>
<sname>Брусенко</sname>
<age>39</age>
<sex>Мужской</sex>
</user>
<user>
<id>2</id>
<fname>Шамиль</fname>
<sname>Галимов</sname>
<age>37</age>
<sex>Мужской</sex>
</user>
<user>
<id>3</id>
<fname>Татьяна</fname>
<sname>Волкова</sname>
93
<age>23</age>
<sex>Женский</sex>
</user>
</user-list>
Информацию о конкретном пользователе можно было бы задать и с
помощью атрибутов:
<user-list>
<user id="1" fname="Иван" sname="Брусенко"
age="39" sex="Мужской"/>
<user id="2" fname="Шамиль" sname="Галимов"
age="37" sex="Мужской"/>
<user id="3" fname="Татьяна" sname="Волкова"
age="23" sex="Женский"/>
</user-list>
Здесь, ввиду того, что содержимое тэга пусто, не используются заклю-
чающие тэги, это отмечается косой чертой, которая ставится перед за-
крывающей угловой скобкой.
Документы XML, синтаксис которых удовлетворяет перечислен-
ным выше базовым требованиям, называются правильно построенным
(well-formed). Можно еще ограничить структуру документа, определив
вид дерева тэгов документа. XML унаследовал один из способов такого
определения от языка SGML. Способ заключается в том, что струк-
тура документа задается в его начале в виде так называемого DTD
(Document Type Definition— Определение Типа Документа). DTD имеет
свой специфический синтаксис, который мы здесь описывать не будет,
приведем только иллюстративный пример:
<!DOCTYPE user-list [
<!ELEMENT user-list (user*)>
<!ELEMENT user (id, fname, sname, age, sex)>
<!ELEMENT id (#PCDATA)>
<!ELEMENT fname (#PCDATA)>
<!ELEMENT sname (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
]>
<user-list>
<user>
94
<id>1</id>
<fname>Иван</fname>
<sname>Брусенко</sname>
<age>39</age>
<sex>Мужской</sex>
</user>
<user>
<id>2</id>
<fname>Шамиль</fname>
<sname>Галимов</sname>
<age>37</age>
<sex>Мужской</sex>
</user>
<user>
<id>3</id>
<fname>Татьяна</fname>
<sname>Волкова</sname>
<age>23</age>
<sex>Женский</sex>
</user>
</user-list>
В определении типа документа говорится, что главным его тэгом
должен быть тэг user-list, который содержит ноль или боль-
ше тэгов user. Каждый тэг user должен содержать четыре тэга
(fname, sname, age, sex), причем именно в заданной последователь-
ности. Документ XML, который согласуется с определением его струк-
туры, называется действительным (valid).
Хотя, изначально язык XML задумывался для разметки докумен-
тов, сейчас этот язык используется в принципиально ином качестве.
Документы XML сейчас чаще всего служат текстовым представлени-
ем данных, которые необходимо передать с одного компьютера на дру-
гой. Иначе говоря, если раньше язык XML использовался для разметки
документов, которая была бы понятна компьютерам, то сейчас XML
используется для преобразования уже структурированных данных в
последовательную (текстовую) форму и обратно. Это новое качество
использования языка диктует к нему новые требования. Так, напри-
мер, необходимо с максимальной тщательностью установить формат
написания чисел в XML документах. Ведь числовые данные будут пре-
образовываться в текстовый вид и обратно, и при этом не должно быть
никаких потерь. Версия языка XML, унаследованная от SGML, таких
95
возможностей не предоставляет. Поэтому, язык XML был существенно
переработан, в языке появились типы, различные форматы представ-
ления данных различных типов и другие необходимые для передачи
данных свойства. Также, определение структуры документа с помо-
щью DTD было заменено на более подходящий способ, носящий назва-
ние XML схема (XML schema). Схема представляет собой определе-
ние структуры данных, которые передаются в данном XML документе,
причем это определение задается на языке XML. В схеме документа
можно задать новые типы, можно использовать уже определенные в
схеме самого языка XML. Схемы можно хранить распределенно в раз-
ных местах Интернет и загружать их по мере необходимости. Приведем
полный рабочий пример XML документа, который используется для пе-
редачи данных о пользователях:
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="user-list" type="User-list"/>
<xs:complexType name="User-list">
<xs:sequence>
<xs:element name="user" type="User"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="User">
<xs:sequence>
<xs:element name="id" type="xs:decimal"/>
<xs:element name="fname" type="xs:string"/>
<xs:element name="sname" type="xs:string"/>
<xs:element name="age" type="xs:decimal"/>
<xs:element name="sex" type="xs:string"/>
</xs:sequence>
</xs:complexType></xs:schema>
</xs:schema>
<user-list>
<user>
<id>1</id>
<fname>Иван</fname>
<sname>Брусенко</sname>
<age>39</age>
96
<sex>Мужской</sex>
</user>
<user>
<id>2</id>
<fname>Шамиль</fname>
<sname>Галимов</sname>
<age>37</age>
<sex>Мужской</sex>
</user>
<user>
<id>3</id>
<fname>Татьяна</fname>
<sname>Волкова</sname>
<age>23</age>
<sex>Женский</sex>
</user>
</user-list>
1. Субъект.
2. Объект.
3. Предикат.
97
Предикаты еще часто называют свойствами
. Тройка имеет также гра-
фическое представление в виде связи узел-дуга-узел:
Субъект
Предикат- Объект
98
2»— экземпляром понятия «женщина». Это делается посредством так
называемых высказываний . Для высказываний существует свой язык,
включающий переменные, логические операции, такие как, логическое
«или» (дизъюнкция), логическое «и» (конъюнкция), логическое следо-
вание (импликация), а также кванторы существования и всеобщности,
позволяющие ограничивать область применения высказывания. Напри-
мер, ограничение выше можно было бы записать так (обозначим отно-
шение «семейные пары» как 𝐹 , а отношения «мужчина» и «женщина»
как 𝑀 и 𝑊 , соответственно.): ∀𝑥, 𝑦𝐹 (𝑥, 𝑦) ⇒ 𝑀 (𝑥) 𝑊 (𝑦)— «для лю-
⋀︀
бых сущностей 𝑥 и 𝑦 , если выполняется 𝐹 (𝑥, 𝑦), то выполняется одно-
временно 𝑀 (𝑥) и 𝑊 (𝑦)». Язык RDF основан на математическом аппа-
ратедескриптивной логики [34], рассмотрим эту логику подробнее.
Дескриптивная логика
Дескриптивная логика (Description Logic— DL) основана на формализ-
мах семантических сетей фреймов
[36] и [21], но использует аппарат
математической логики. В математической логике производится явное
разделение насинтаксис семантику
и . Синтаксис задает язык, с по-
мощью которого записываются различные высказывания об элементах
мира данной логической системы. Семантика задает ту часть описы-
ваемого мира, которая удовлетворяет заданным ограничениям. Таких
частей может быть более одной и даже бесконечно много. Каждая та-
кая часть мира называется моделью данной логической системы. Ча-
сто говорят о дескриптивных логиках, подразумевая под конкретной
дескриптивной логикой некоторую логическую систему, описывающую
какой-нибудь мир. Поэтому, читатель должен различать понятия де-
скриптивной логики как науки, изучающей логические системы опре-
деленного вида, и дескриптивной логики как конкретной логической
системы, чей синтаксис удовлетворяет определенным ограничениям.
Опишем ограничения, налагаемые на синтаксис и семантику дескрип-
тивных логик.
Синтаксис. Язык любой дескриптивной логики состоит из следующих
элементов:
99
∙ Рекурсивное определение термов понятий
, задаваемое с помо-
щью конструкторов на основе понятий и ролей.
100
∙ 𝐼(sex) = {(«1», «Мужской»), («2», «Мужской»), («3», «Женский»)}.
102
∙ 𝒮ℋℐ𝒬— это логика 𝒮ℋℐ , в которой можно задавать ограниче-
ния на размер множеств значений отношений и определять под-
классы из элементов, связанных некоторым отношением с опре-
деленным числом элементов (qualified number restrictions). На-
пример, можно было бы определить класс индивидов, имеющих
более одного автомобиля в собственности следующим образом:
>1 ИмеетАвто Человек.
∙ Логика 𝒮ℋ𝒪ℐ𝒬— это 𝒮ℋℐ𝒬, расширенная возможностью зада-
вать т.н.номиналы . Номиналы— это задание классов в виде пе-
речислений. В описании RDFS используется пример определения
класса Материк посредством перечисления индивидов этого клас-
са (конкретных материков).
Синтаксис RDF
Ввиду того, что RDF предполагается использовать для описания ре-
сурсов, распределенных по разным участкам Web, необходимо как-то
решить проблему идентификации имен узлов и ребер RDF графа, т.е.
элементов троек. Для этого используется стандартный подход: каждый
элемент описывается посредством так называемого Унифицированного
Идентификатора Ресурса (URI— Uniform Resource Identifier [37]). Обыч-
но, URI представляет собой, либо URL (Унифицированный Указатель
Ресурса— Uniform Resource Locator, [38]), содержащий информацию о
местонахождении данного ресурса в Web, либо URN (Унифицированное
Имя Ресурса— Uniform Resource Name, [39]), позволяющего идентифи-
цировать данный ресурс в некотором пространстве имен . Простран-
ство имен представляет собой просто поименованное множество имен и
используется, чтобы обеспечить уникальность этих имен в Web. Напри-
мер, если есть задача объединить два RDF графа (множества троек), и
при этом, в каждом из графов использует свой узел с локальным име-
нем «Иван», то можно разрешить проблему идентификации этих узлов
в объединении графов двумя способами:
103
1. Дать каждому из узлов уникальное имя, используя URL
его RDF графа в Web. Например, если URL первого гра-
фа— это http://www.example.com/graph1#
, а URL второго— это
http://www.example.com/graph2#
, то URI узла «Иван» в пер-
вом графе будет http://www.example.com/graph1#Иван
, URI узла
«Иван» во втором графе— http://www.example.com/graph2#Иван
.
104
id fname sname age sex
1 Иван Брусенко 39 Мужской
2 Шамиль Галимов 37 Мужской
3 Татьяна Волкова 23 Женский
Рис. 3.2: Таблица пользователей user-list.
(usr:id,rdf:type,rdf:Property)
(usr:fname,rdf:type,rdf:Property)
(usr:sname,rdf:type,rdf:Property)
(usr:age,rdf:type,rdf:Property)
(usr:sex,rdf:type,rdf:Property)
Теперь, для каждой строки зададим «экземпляр» класса «user».
(usr:user1,rdf:type,usr:user)
(usr:user2,rdf:type,usr:user)
(usr:user3,rdf:type,usr:user)
Здесь мы используем комбинированное имя экземпляра usr:usern, где
n— это идентификатор строки. Перечислим теперь свойства классов.
(usr:user1,usr:id,1)
(usr:user1,usr:fname,Иван)
(usr:user1,usr:sname,Брусенко)
(usr:user1,usr:age,39)
(usr:user1,usr:sex,Мужской)
(usr:user2,usr:id,2)
(usr:user2,usr:fname,Шамиль)
(usr:user2,usr:sname,Галимов)
(usr:user2,usr:age,37)
(usr:user2,usr:sex,Мужской)
(usr:user3,usr:id,3)
(usr:user3,usr:fname,Татьяна)
(usr:user3,usr:sname,Волкова)
(usr:user3,usr:age,23)
(usr:user3,usr:sex,Женский)
105
Заметим, что здесь был использован другой порядок описания трой-
ки, а именно: (субъект, предикат, объект). Этот порядок используется
в качестве стандартной нотации и мы будем его придерживаться далее.
Для описания троек вне документов XML4 используется две стандарт-
ные нотации. Опишем их.
Нотация N-Triple
5
[13]. В данной нотации каждый элемент трой-
ки представляется посредством заключенного в угловые скобки
URI. Элементы идут в порядке «субъект, предикат, объект» и
заканчиваются точкой. Например, если имена из примера выше
расположены по URL=http://www.example.org/user-list#
, то тройка
(usr:user1,rdf:type,usr:user) будет выглядеть так:
<http://www.example.org/user-list#fname>
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>
<http://www.example.org/user-list#user>.
Нотация 3 RDF (N3) [15]. Это более компактная нотация, позволяю-
щая определять локальные синонимы URI, которые называются пре-
фиксами и задаются ключевой комбинацией @prefix. Данный способ
записи RDF троек разработан специально для людей и представляет со-
бой гораздо более удобную для человека форму записи, чем XML RDF.
Имена элементов тройки записываются без угловых скобок в порядке
«субъект, предикат, объект» и также заканчиваются точкой. Если под-
ряд записывается несколько троек с одним и тем же субъектом, то в
конце тройки, если она не последняя, ставится точка с запятой, а в кон-
це последней тройки— точка. При этом, имя субъекта ставится только
для первой тройки, в остальные оно подставляется автоматически из
предыдущей. Тройки записываются следующим образом:
<rdf:RDF>
xmlns:usr="http://www.example.org/user-list#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
<usr:user rdf:about="http://www.example.org/user-list#user1">
<usr:id>1</usr:id>
6Как уже говорилось выше, язык XML используется для представления данных
в последовательной форме с тем, чтобы передавать эти данные через Интернет.
Язык RDF использует нотацию XML для передачи описаний Интернет ресурсов по
Сети.
107
<usr:fname>Иван</usr:fname>
<usr:sname>Брусенко</usr:sname>
<usr:age>39</usr:age>
<usr:sex>Мужской</usr:sex>
</usr:user>
<usr:user rdf:about="http://www.example.org/user-list#user2">
<usr:id>2</usr:id>
<usr:fname>Шамиль</usr:fname>
<usr:sname>Галимов</usr:sname>
<usr:age>37</usr:age>
<usr:sex>Мужской</usr:sex> </usr:user>
<usr:user rdf:about="http://www.example.org/user-list#user3">
<usr:id>3</usr:id>
<usr:fname>Татьяна</usr:fname>
<usr:sname>Волкова</usr:sname>
<usr:age>23</usr:age>
<usr:sex>Женский</usr:sex>
</usr:user>
</rdf:RDF>
Резюмируя, можно сказать, что RDF графы представляют собой
множества троек вида «субъект, предикат, объект», элементы которых
есть либо ресурсы, обозначаемые через URI, либо литеральные данные
(литералы могут выступать только в качестве объектов). Иногда, в ка-
честве элементов используется ресурс, который не имеет представителя
в Web, так называемый пустой узел (blank node) RDF графа. Пустые
узлы обозначаются в нотацииN3 знаком вопроса. Зачем нужны пустые
узлы? Рассмотрим пример. Пусть известно, что у Шекспира была лю-
бимая, которая жила в Англии и имя которой не сохранилось в веках,
но что любовь к ней вдохновила Шекспира на написание сонета номер
78. Этот факт можно выразить следующим образом:
108
lit:Sonnet78 lit:hasInspiration ? .
Тройка с пустым узлом выражает факт существования некото-
рого объекта, для которого тройка выполнима, т.е. в терми-
нах логики, «? rdf:type bio:Woman» эквивалентна высказыванию
∃𝑥 rdf:type(𝑥, bio:Woman). Если необходимо иметь несколько различ-
ных пустых узлов, то можно выделить контекст использования кон-
кретного пустого узла, заключив содержащие его тройки в квадратные
скобки. В этом случае, знак вопроса уже не нужен, он просто опуска-
ется:
[ rdf:type bio:Woman;
bio:livedIn geo:England . ]
109
Переменные обозначаются идентификаторами, которые начинаются со
знака вопроса «?». Например:
{
?user usr:fname "Иван" .
?user usr:sname ?sname .
}
выводит все фамилии пользователей, у которых имя— это «Иван», а
также имена объектов, у которых usr:fname— это «Иван».
110
Шаблоны графов можно логически комбинировать. Ключевое слово
UNION используется в качестве логического «или». Например, выведем
фамилии тех пользователей, имена которых— это «Иван» или «Татья-
на».
{
{
{?user usr:fname "Иван" .}
UNION
{?user usr:fname "Татьяна" .}
}
{?user usr:sname ?sname .}
}
Запросы на языке SPARQL имеют четыре формы: select, construct,
ask и describe. Рассмотрим каждую из форм подробнее.
user sname
"user1" "Брусенко"
Таблица 3.1: Результаты запроса select.
Обратите внимание, что шаблон графа специфицируется ключевым
словом «where».
111
{
{?user usr:fname "Иван" .}
UNION
{?user usr:fname "Татьяна" .}
}
даст в результате
Ask. Эту форму SPARQL запроса можно использовать для того, чтобы
проверить, есть ли в данном хранилище RDF тройки, удовлетворяющие
шаблону графа этого запроса. Если таковые имеются, то возвращается
«да», в противном случае, возвращается «нет». Никакой другой инфор-
мации не возвращается. Например, запрос
112
RDF Schema
Схема RDF (RDF Schema, RDFS [29]) представляет собой расширение
языка RDF, позволяющее описывать простые онтологии данных, нахо-
дящихся в хранилищах RDF. Также, как схема базы данных описывает
структуру базы данных в виде заголовков таблиц и связей между ними,
схема RDF позволяет описывать структуру RDF хранилища. Структу-
ра описывает в терминах типов и отношений между ними. На самом
деле, как в этом чуть позже убедится читатель, схема RDF позволяет
описывать только классификации с некоторыми дополнительными от-
ношениями. Для того, чтобы описать более сложные виды отношений,
необходимо привлекать более мощные средства, такие как OWL.
113
Как уже говорилось выше, сказать, что данный объект является
экземпляром данного класса, можно с помощью rdf:type. Например,
P rdfs:range C
означает, что P— это экземпляр класса rdf:Property, а C— экземпляр
класса rdfs:Class и, что все ресурсы, входящие в качестве объектов
в тройки, предикат которых— это свойство P, являются экземплярами
класса C. В ООП эта ситуация соответствует объявлению типа свойства.
Например, объявление языка C++ «int age;» задает тип int свойства
age, т.е. говорит о том, что все объекты свойства age являются экзем-
плярами класса int.
Если rdfs:range позволяет задать тип значений, которые будет при-
нимать некоторое свойство, то свойство rdfs:domain позволяет задать
класс, чьим атрибутом является данное свойство. Выражение
P rdfs:domain C
говорит о том, что P— это экземпляр класса rdf:Property, а C—
экземпляр класса rdfs:Class и, что все ресурсы, входящие в ка-
честве субъектов в тройки, предикат которых— это свойство P, яв-
ляются экземплярами класса C. Если свойство usr:age являет-
ся атрибутом класса usr:user, то об этом можно сказать так:
usr:age rdfs:domain usr:user. Итак, выражение языка C++
class usr:user{
int usr:age;
};
можно записать на RDFS следующим образом:
114
usr:age rdfs:range int .
usr:age rdfs:domain usr:user .
Свойство rdfs:subClassOf представляет собой аналог наследования
в ООП. Выражение
C1 rdfs:subClassOf C2
означает, что тип C1 является подтипом типа C2, т.е. что каждый эк-
земпляр класса C1 является также и экземпляром класса C2.
Если наследование классов привычно и часто применяет в ООП, то
наследование свойств, на первый взгляд, выглядит непонятно. Но, все
становится на свои места, если рассматривать свойство как множество
троек с одним и тем же предикатом. Все такие тройки можно предста-
вить парами (субъект,объект), здесь мы снова рассматриваем предикат
как бинарное отношение. Если множество пар одного свойства являет-
ся подмножеством пар другого свойства, то можно ввести соотношение
вида «свойство-подсвойство». В RDFS это делается с помощью свойства
rdfs:subPropertyOf. Выражение
P1 rdfs:subPropertyOf P2
говорит о том, что P1 и P2— это экземпляры класса rdf:Property, и что
если есть тройка R1 P1 R2, то обязательно есть и тройка R1 P2 R2. От-
ношение rdfs:subPropertyOf является транзитивным (мы рассмотрим
различные свойства отношений чуть позже).
115
3.4 Идеология OWL
116
вывода, классификации и проверки существования экземпляров
будет проведена за полиномиальное время.
117
Наследование классов в языке OWL задается с помощью конструк-
ции rdfs:subClassOf, т.е. точно также, как и в языке RDF Schema. Как
и в RDF Schema, тот факт, что один класс является дочерним классом
другого, означает, что все экземпляры дочернего класса являются эк-
земплярами родительского класса.
Свойства
В OWL существует разделение свойств на два класса:
118
структуру связей между своими экземплярами. Эти ограничения вы-
ражаются в виде предопределенных соотношений, называемых в OWL
аксиомами. Рассмотрим эти соотношения подробнее.
Аксиомы классов
Аксиомы классов определяют правила, на основе которых экземпля-
ры классов связываются друг с другом. Основная аксиома класса— это
объявление его имени как имени класса. Эта аксиома говорит о том,
что класс с таким именем существует. Но этого, конечно, часто быва-
ет мало, чтобы выразить даже простые соотношения иерархии между
классами. Поэтому, в языке языке OWL выделяются еще три аксиомы
классов:
119
1. Ограничения на значения (value constraints) устанавливаются на
объекты данного свойства, если в качестве субъекта выступает
некоторый конкретный класс. В этом случае, естественно рассмат-
ривать объекты этого свойства как значения атрибутов. Ограни-
чения на значения каким-то образом ограничивают набор инди-
видов, которые могут выступать в качестве таких значений. Мож-
но, например, сказать, что все значения данного свойства долж-
ны быть экземплярами некоторого конкретного класса. В отличии
от rdfs:range, которое устанавливает глобальное ограничение на
значения некоторого свойства, ограничения на значения локальны
в том смысле, что прилагаются к свойствам только, если в каче-
стве их субъекта выступает некоторый конкретный класс. Напри-
мер, для класса СемейнаяПара можно ввести ограничения на свой-
ства Муж и Жена, указав, чтобы первое свойство всегда имело в ка-
честве значений экземпляры класса Мужчина, а второе— Женщина,
если только в качестве субъекта выступает класс СемейнаяПара.
120
которая используется в языке OWL в качестве значений типов дан-
ных. Конструкция :Id эквивалентна конструкции namespace:Id, толь-
ко в качестве пространства имен в первом случае используется так
называемое неименованное пространство имен. Идентификаторы, ко-
торые объявлены в таком пространстве имен, также отличаются от
идентификаторов в других пространствах, но в качестве имени про-
странства используется пустая строка. Итак, в конструкции выше объ-
явлен класс :ФутбольнаяКоманда, который является подклассом ано-
нимного класса, являющегося экземпляром класса owl:Restriction. В
этом случае, анонимный класс может выступать субъектом предикатов
owl:onProperty и owl:cardinality.
Приведем описание встроенных в язык OWL ограничений. Эти огра-
ничения представляют собой свойства, который описывают характери-
стики других свойств, как это видно из примера выше.
Ограничения на значения:
∙ Ограничение owl:allValuesFrom используется для того, чтобы
указать, что все значения свойства представляют экземпляры од-
ного класса, если только в качестве субъекта этого свойства вы-
ступает данный класс. Например, для класса Персона мы вводим
свойство имеетРодителя и указываем, что его значения на этом
классе— это экземпляры класса Человек. В языках ООП можно
задать члены классов, указывая их тип, данное ограничение пред-
ставляет собой аналог такого задания. В классе Персона мы мог-
ли бы задать свойство имеетРодителя с типом Человек. В логике,
аналогом owl:allValuesFrom служит квантор всеобщности.
121
Например, можно задать ограничение owl:hasValue на свойство
имеетРодителя, указав, что в качестве значения должен быть ин-
дивид под именем Иванов. Это ограничение задает класс всех ин-
дивидов, у которых имеется родитель по фамилии Иванов.
Ограничения на мощность:
∙ Ограничение owl:maxCardinality задает максимальное количе-
ство значения данного свойства, если в качестве его субъекта вы-
ступает выделенный класс. Например, можно задать ограничение
на свойство имеетРодителя класса Персона, указав, что количе-
ство значений этого свойства не может быть более двух.
Аксиомы свойств
Характеристики свойств делятся в языке OWL на три группы:
122
Рассмотрим каждую характеристику более подробно.
123
стве второго элемента, то он уже не может появиться в этой роли
ни в какой другой паре отношения. Рассмотрим, например, свойство
являетсяБиологическойМатерью, в качестве субъектов которого высту-
пают экземпляры класса Женщина, а в качестве значений— экземпляры
класса Человек. Это свойство полезно сделать обратно-функциональ-
ным, так как любой человек не может иметь более одной биологической
матери.
124
элементы одного фиксированного множества ресурсов (owl:Thing эк-
вивалентно rdfs:Resource). Поэтому, нельзя провести различия меж-
ду объектными свойствами (owl:ObjectProperty) и свойствами типом
данных (owl:DatatypeProperty). Отсутствие каких-либо специальных
ограничений на соотношения между элементами в языке не позволяет
в общем случае гарантировать, что процедура логического вывода по
онтологиям, реализованным на этом языке, закончит свое выполнение
в разумные сроки (или вообще закончит).
125
∙ OWL Lite требует, чтобы субъект предиката
owl:equivalentClass был именем класса, а объект этого
предиката был, либо именем класса, либо анонимным классом,
образованным ограничениями. Это же требуется и для предиката
rdfs:subClassOf.
∙ Объекты предикатов owl:allValuesFrom и owl:someValuesFrom
должны быть именами классов или типов данных.
Создание проекта
Онтологии в Protege создаются в виде так называемых проектов
. Про-
ект— это конфигурационные данные, прежде всего, имя OWL файла, в
126
котором хранится редактируемая онтология. Конфигурационные дан-
ные также хранят различные установки редактирования, связанные с
данным проектом. При запуске редактора Protege предлагает пользова-
телю прейти к редакции существующих проектов, либо создать новый
проект. Мы создадим новый проект.
Создание проекта начинается с выбора типа хранилища, в котором
будет содержаться онтология. Мы выбираем тип «OWL/RDF Files» (см.
рисунок 3.3).
127
Рис. 3.4: Создание проекта Protege: выбор имени онтологии.
Редактирование онтологии
После того, как создание проекта завершено, открывается главное окно
программы. Окно программы содержит в своей верхней части пять за-
кладок, позволяющие разделить функционально различные действия
по редактированию друг от друга. Перечислим эти закладки:
128
Рис. 3.5: Создание проекта Protege: выбор диалекта OWL.
129
щую пару для обратного свойства.
Иллюстративный пример
Построим простейшую онтологию родственных отношений. В каче-
стве примера, рассмотрим созданную для учебных целей онтологию
«family.swrl», которую можно загрузить в виде OWL файла с сайта
библиотеки онтологий программы Protege [27]. Этот пример также со-
держит демонстрацию возможностей языка SWLR (Semantic Web Rule
130
Language— Языка Правил Semantic Web [31]). Язык SWLR использует-
ся для задания так называемых правил
онтологий OWL, позволяющих
добавить действия, которые будут выполняться при добавлении новых
фактов в онтологию. Например, можно добавить правило, которое го-
ворит системе, реализующей онтологию, автоматически добавлять пару
(x,y) в отношение иметьДочь, если только некоторая персона x имеет
ребенка женского пола. Выглядит такое правило так:
131
Правило гласит: если некая персона ?x находится в родственной свя-
зи с персоной ?y, которая является мужчиной, то персона ?x имеет в
качестве брата мужчину ?y.
Подобными правилами заполняются также и остальные отношения
онтологии. Мы не будем приводить их все, рекомендуем заинтересован-
ному читателю открыть онтологию «family.swrl» в редакторе Protege и
самостоятельно просмотреть содержимое закладки правил главного ок-
на редактора. Перейдем лучше к описанию типов и свойств онтологии.
132
Рис. 3.6: Иерархия классов онтологии Family.
133
Рис. 3.7: Определения классов Gender и Person.
134
Рис. 3.8: Иерархия свойств онтологии Family.
135
Рис. 3.10: Редактор экземпляра M02.
136
3.6 Реализации хранилищ онтологий на
OWLIM
Хранилище онтологий OWLIM [8], как декларируется его разработчи-
ками, представляет собой быстрейший на сегодняшний день RDF и
OWL сервер. Система разработана на языке Java. OWLIM поставляется
в нескольких версиях, возможности каждой из которых специальным
образом подогнаны для целевых манипуляций. Наиболее известные вер-
сии— это:
137
База знаний OWLIM используется в проекте Sesame [10], разраба-
тываемом компанией Aduna. Sesame представляет собой полноценный
Web-сервер, написанный на языке Java, и предоставляющий возмож-
ности по распределенному хранению знаний в формате RDF. Сервер
Sesame доступен для бесплатного скачивания.
Bigdata
Bigdata [6] представляет собой разработанное для многоцелевого ис-
пользования хранилище структурированных данных. Данные хранят-
ся в формате так называемых B-деревьев (B+Trees). При разработке,
в систему были заложены возможности хранить данные на кластерах.
Новые устройства для хранения могут быть динамически добавлены в
систему во время ее работы. Кроме того, система поддерживает идео-
логию map/reduce.
Для Bigdata написано также хранилище RDF троек, реализован-
ное поверх основной базы. Сервер хранилища поддерживает обработку
запросов на языке SPARQL, а также позволяет сохранять данные меж-
ду перезапусками системы. В программной системе также реализована
поддержка RDFS и ограниченного логического вывода OWL.
Сервер Bigdata поставляется с открытыми исходными кодами.
Jena TDB
TDB представляет собой хранилище RDF троек, разработанное в каче-
стве специально предназначенного для этих целей уровня в программ-
ной системе Jena [7]. Jena представляет собой сервер обработки запро-
сов на языке SPARQL, сохраняющий данные в виде RDF троек. В си-
стеме имеются несколько уровней, предназначенных для осуществле-
ния тех или иных целей. Уровень TDB предназначен для сохранения
троек в постоянной памяти.
Программная система Jena реализована на языке Java и поставля-
ется с открытыми исходными кодами. Имеется возможность сохранять
данные непосредственно на диске и в известных реализациях реляци-
онных баз данных.
Имеется также новая реализация хранилища для системы Jena, но-
сящая имя SDB. Хранилище SDB может сохранять данные большего
объема, чем предыдущая версия и поддерживает больше форматов баз
данных.
138
Mulgara
Mulgara [11] представляет собой расширяемую базу RDF троек. Систе-
ма написана на языке Java и предоставляет с открытыми исходными
кодами. Mulgara предоставляет возможность задания запросов на язы-
ке SPARQL. Также, в системе реализованы взаимодействие с обсуждав-
шейся выше программной системой Jena и много других возможностей.
Например, система предоставляет сервис обработки правил SWLR.
139
15. Спецификация нотации N3 на сайте консорциума W3.
http://www.w3.org/DesignIssues/Notation3.html.
140
30. D. Allemang, J. Handler. Semantic Web for the Working Ontologist:
Effective Modeling in RDF, RDFS and OWL. Morgan Kaufmann,
2008.
141
4 Ontolingua— Web-сервер
библиотек онтологий
142
1. Канонической форме, представляющей собой описание зна-
ния на обычном языке логики предикатов.
2. В форме онтологии , как ее представлял в тот момент Гру-
термов
бер, т.е. в виде набора описаний (классов, отношений,
определений
констант и т.д.) и , связывающих эти термы друг
с другом.
144
чи знаний на расстояние. В качестве другой аналогии можно привести
язык Postscript, разработанный компанией Adobe в середине 80-х го-
дов прошлого века с целью стандартизации передачи данных печати с
компьютера на принтер. Печатаемая картинка или текст переводятся в
текст, написанный на языке Postscript, после чего этот текст передается
на принтер. Разработчикам устройств печати достаточно реализовать
процедуру обработки текстов на языке Postscript, чтобы иметь возмож-
ность печатать любую информацию. Точно также, разработчикам си-
стемы управления знаниями достаточно реализовать разбор текстов на
языке KIF, чтобы иметь возможность взаимодействовать с любой дру-
гой системой управления знаниями, которая поддерживает этот язык.
Язык KIF в достаточной степени формализован, чтобы его кон-
струкции могли быть обработаны программными системами, т.е. пред-
назначен, прежде всего, для взаимодействия программных систем друг
с другом. Как следствие, тексты KIF читаются человеком непросто,
хотя, при наличии достаточных навыков, это затруднение легко пре-
одолимо. Также, KIF предназначен для обмена знаниями, а не для их
хранения, поэтому использовать этот язык в качестве основного сред-
ства реализации программной системы обработки знаний не разумно.
Здесь также можно привести аналогию: язык XML используется для
обмена данными между различными программными системами, но для
хранения данных обычно используются так называемые серверы баз
данных— программы, которые разработаны специально для оптималь-
ного хранения данных и быстрого доступа к ним. Точно также, серверы
баз знаний хранят информацию оптимальным образом, а язык KIF ис-
пользуют для взаимодействия друг с другом.
Приведем основные отличительные свойства языка KIF:
145
KIF представляет собой язык исчисления предикатов первого по-
рядка2 и основан на синтаксисе языка LISP (Страница спецификации
LISP [13]). Ввиду последнего, KIF унаследовал все достоинства и недо-
статки языка LISP, например, обилие скобок, которое придает тексту
трудночитаемый для непривычного глаза вид, но также позволяет язы-
ку быть в достаточной степени синтаксически простым без потери вы-
разительности. Свойства синтаксиса языка KIF будут нами подробно
рассмотрены в следующем разделе.
1. На базовом
уровне описание базы знаний на языке KIF рассмат-
ривается как последовательность символов.
146
Для описания синтаксиса будет использоваться несколько изменен-
ная форма нотации Бэкуса-Наура (БНФ) [см. 6]. В этой нотации, все
нетерминальные символы и элементы самой нотации записываются
жирным шрифтом, а символы языка KIF обычным шрифтом. Выра-
жение вида {𝑥1 , 𝑥2 , . . . , 𝑥𝑛 } означает множество терминальных симво-
лов 𝑥1 , 𝑥2 , . . . , 𝑥𝑛 . Выражение вида [нетерминал] означает повторение
символа нетерминал один или ни одного раза. Выражение нетерми-
нал*— повторение ноль или больше раз, выражение нетерминалn̂—
повторение ровно n раз. Выражение [нетерминал1] - [нетерминал2]
означает множество всех элементов [нетерминал1] за исключением
тех, что входят в [нетерминал2]. Выражение int(n) означает деся-
тичное представление целого числа n.
Базовый уровень
Некоторые классы символов удобно обозначить нетерминалами:
∙ Нетерминальный символ space обозначает символ с кодом 32.
∙ Нетерминал tab обозначает символ с кодом 9.
∙ Нетерминал return обозначает символ с кодом 12.
∙ Нетерминал linefeed обозначает символ с кодом 10.
∙ Нетерминал page обозначает символ с кодом 12.
∙ Нетерминал character обозначает множество всех 128 символов
в ASCII кодировке.
∙ Нетерминал empty используется для обозначения пустой строки.
Для обозначения символов алфавита языка KIF используются семи-
битные числа. Соответствие числовых кодов символам задается стан-
дартной кодировкой ASCII. Выделяются следующие классы символов:
∙ Символы верхнего регистра (upper) алфавита английского язы-
ка:
∙ Символы нижнего регистра (lower) алфавита английского языка.
∙ Десять цифр (digits).
∙ Так называемые буквенные символы (alpha), которые не явля-
ются символами алфавита английского языка, но могут исполь-
зоваться в том же контексте, что и символы алфавита.
147
∙ Специальные символы (special).
∙ Пробельные символы (white).
∙ Каждые символ, не входящий в перечисленные выше классы, об-
разует свой собственный класс.
Зададим эту классификацию формально:
upper: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
lower: a b c d e f g h i j k l m n o p q r s t u v w x y z
digit: 0 1 2 3 4 5 6 7 8 9
alpha: ! $ % & * + - . / < = > ? @ _ ~
special: " # ’ ( ) , \ ^ ‘
white ::= space | tab | return | linefeed | page
Класс normal представляет собой объединение классов upper,
lower, digit и alpha:
normal ::= upper | lower | digit | alpha
Лексический уровень
Как уже говорилось выше, на лексическом уровне из текста выделя-
ются лексемы— типизированные слова. Процесс выделения лексем на-
зывается лексическим анализом. Лексический анализ осуществляется
следующим образом:
1. Символы текста читаются до тех пор, пока их комбинация с
предыдущими прочитанными символами формирует лексему.
148
Каждый специальный символ формирует свою лексему. Специаль-
ные символы не комбинируются с другими для формирования сложных
лексем. Если специальный символ и присутствует в сложной лексеме,
то только в том случае, когда предваряется символом обратной косой
черты «\», отменяющим специальное значение этого символа.
Слова представляют собой неразрывные последовательность симво-
лов из класса normal, а также других символов, если перед каждым
из них находится символ обратной косой черты. Приведем формальное
определение:
word ::= normal | word normal | word\character
Лексический анализатор не чувствителен к регистру символов, если
только это не символы, предваряемые символом обратной косой чер-
ты. Лексический анализатор преобразовывает все символы лексемы в
верхний регистр, если только символ не предваряется обратной косой
чертой. Таким образом, слова ABC и abc рассматриваются как одни и
те же лексемы, а слово a\bc преобразуется в AbC, которое отличается
от лексемы ABC.
Символьная ссылка всегда предваряется последовательностью #\,
за которой следует символ. Символьные ссылки позволяют ссылаться
на символы непосредственно, чтобы отличать их от обычных символов,
которые могут обозначать другие объекты онтологии.
Строки символов представляют собой символьные последователь-
ности, заключенные в двойные кавычки. В строке может использовать-
ся символ обратной косой черты «\», чтобы отменить специальные зна-
чения символа двойной кавычки (окончания строки) и самого символа
обратной косой черты:
symbol ::= "quotable"
quotable ::= empty | quotable strchar | quotable\character
strchar ::= character - {",\}
Иногда бывает удобно перечислить последовательность произвольных
символов как битовую последовательность, например, если хочется за-
кодировать в тексте некоторое изображение. Для этого KIF предлагает
механизм символьных блоков. Символьный блок— это последователь-
ность символов, начинающаяся с символа #, за которым идет целое
число, задающее размер последовательности, после чего располагается
прописная или строчная «q». Далее, располагаются символы последо-
вательности:
block ::= # int(n) q character^n | # int(n) Q character^n
149
Для грамматического анализа также полезно разделить класс слов
на следующие подклассы: переменные, операторы и константы.
Переменные предваряются символом «?» или символом «@». Пе-
ременная, которая начинается с символа «?», называется индивидной
переменной , а начинающаяся с символа «@» переменная называется
переменной последовательностей .
variable ::= indvar | seqvar
indvar ::= ?word
seqvar ::= @word
Операторы используются для формирования сложных выражений.
Существует три типа операторов: операторы термов, операторы после-
довательностей и операторы определений. Операторы термов исполь-
зуются для формирования сложных термов, операторы последователь-
ностей вместе с пользовательскими операторами формируют сложные
последовательности, а операторы определений используются в опреде-
лениях.
operator ::= termop | sentop | defop
termop ::= value | listof | quote | if
sentop ::= holds | = | /= | not | and | or |
=> | <= | <=> | forall | exists
defop ::= defobject | deffunction | defrelation | deflogical |
:= | :-> | :<= | :=>
Все слова, не входящие в описанные выше подклассы, принадлежат
подклассу констант
.
constant ::= word - variable - operator
С точки зрения семантики, в языке KIF существует четыре типа
констант:
150
В языке KIF, в отличии от большинства логических языков, не про-
водится синтаксического различия между описанными выше типами
констант. Любая константа может быть использована точно таким же
образом, как и любая отличная от нее константа. Различие между ти-
пами констант проводится на семантическом уровне.
Синтаксический уровень
На синтаксическом уровне из лексем, выделенных из текста лексиче-
ским анализатором, строятся сложные выражения
. В языке KIF име-
ется три типа выражений:
151
funterm ::= (value term term* [seqvar])
Терм списка (list term) состоит из оператора «listof» и конечного
списка термов, заканчивающегося необязательной переменной последо-
вательности.
funterm ::= (listof term* [seqvar])
Цитаты (quotations) образуются посредством оператора «quote» и
произвольного списочного выражения (list expression). Списочное вы-
ражение представляет собой, либо атом (atom), либо заключенную в
круглые скобки последовательность списочных выражений. Атом— это
слово, символьная ссылка, символьная строка или символьный блок.
Смысл цитат состоит в том, что списочное выражение, являющееся опе-
рандом оператора «quote», не интерпретируется как выражение языка,
а рассматривается как цитата. Поэтому, списочное выражение не обяза-
тельно должно быть правильно построенным выражением языка KIF.
quoterm ::= (quote listexpr) | ’listexpr
listexpr ::= atom | (listexpr*)
atom ::= word | charref | string | block
Логические термы (logical terms) образуются с помощью операторов
«if> и «cond». Оператор if позволяет проводить проверку, как одно-
го, так и многих условий одновременно. Необязательный терм в конце
списка условий представляет собой значение по умолчанию, которое ис-
пользуется, когда ни одной из условий не выполнено. Оператор cond по-
хож на оператор if, только пары предложение-терм, представляющие
условия, необходимо оборачивать круглыми скобками, и нет значения
по умолчанию в конце списка условий.
logterm ::= (if logpair+ [term])
logpair ::= sentence term
logterm ::= (cond logitem*)
logitem ::= (sentence term)
Рассмотрим, как формируются предложения языка KIF. Ниже приве-
дена БНФ, формально задающая все типы предложений, которые могут
быть в языке KIF. Логические мы уже рассматривали выше.
152
Равенство (equation) состоит из оператора «=» и двух термов. Точно
также определяется неравенство (inequality), только с помощью опера-
тора «/=».
equation ::= (= term term)
inequality ::= (/= term term)
Неявное предложение отношения (implicit relational sentence) состо-
ит из константы и произвольного числа термов, выступающих в каче-
стве аргументов. Последовательность аргументов может заканчиваться
необязательной переменной последовательности. Как обычно, все за-
ключено в круглые скобки.
relsent ::= (constant term* [seqvar])
Явное предложение отношения (explicit relational sentence) состоит
из оператора «holds» и одного или более термов, выступающих в каче-
стве аргументов. Последовательность аргументов заканчивается необя-
зательной переменной последовательности и все это заключено в круг-
лые скобки.
relsent ::= (holds term term* [seqvar])
Заметим, что синтаксис неявного предложения отношения совпада-
ет с синтаксисов неявных функциональных термов. Эту синтаксиче-
скую неоднозначность можно разрешить на основе контекста, в кото-
ром применяется данная синтаксическая конструкция. Каждый неяв-
ный функциональный терм всегда внедрен в некоторое предложение,
а неявное предложение отношения само есть предложение и представ-
ляет собой законченное выражение. Поэтому, данная синтаксическая
неоднозначность не является большой проблемой.
Синтаксис логических предложений (logical sentences) определяет-
ся оператором, который используется в данной выражении. Предложе-
ние, образуемое оператором «not», называется отрицание (negation).
Предложение с оператором «and» называет конъюнкция (conjunction),
а его операнды— конъюнктами (conjuncts). Аналогично, предложение
с оператором «or» называется дизъюнкцией (disjunction), а его опе-
ранды— дизъюнктами (disjuncts). Предложение с оператором «=>» на-
зывается импликацией (implication), а все его аргументы, за исклю-
чением последнего, называются антецедентами (antecedents), послед-
ний операнд называется следствием (consequent). Предложение с опе-
ратором «<=» называется обратной импликацией (reverse implication),
первый аргумент называется следствием, а последующие— антецеден-
тами. Предложение с оператором <=> называется эквивалентностью
(equivalence).
153
logsent ::= (not sentence) |
(and sentence*) |
(or sentence*) |
(=> sentence* sentence) |
(<= sentence sentence*) |
(<=> sentence sentence)
В языке KIF также имеется два вида предложений квантифика-
ции (quantified sentences): предложение квантификации универсально-
сти (universally quantified sentence) образуется с помощью оператора
«forall» и предложение квантификации существования (existentially
quantified sentence) образуется с помощью оператора «exists». В каче-
стве первого аргумента этих операторов выступают списки так назы-
ваемых спецификаций переменных (variable specifications). Специфи-
кация переменной— это, либо переменная, либо список, состоящий из
переменной и терма, представляющего собой отношение, которое огра-
ничивает область определения специфицируемой переменной.
154
для определения отношений— оператор «defrelation», и для опреде-
ления логических констант используется оператор «deflogical». Ниже
приведена БНФ, формально описывающая синтаксис этих определе-
ний, подробно об определениях мы поговорим ниже.
definition ::= unrestricted | complete | partial
unrestricted ::=
(defobject constant [string] sentence*) |
(deffunction constant [string] sentence*) |
(defrelation constant [string] sentence*) |
(deflogical constant [string] sentence*)
complete ::=
(defobject constant [string] := term) |
(deffunction constant (indvar* [seqvar]) [string] := term) |
(defrelation constant (indvar* [seqvar]) [string] := sentence) |
(deflogical constant [string] := sentence)
partial ::=
(defobject constant [string] :-> indvar :<= sentence) |
(defobject constant [string] :-> indvar :=> sentence) |
(deffunction constant (indvar* [seqvar]) [string]
:-> indvar :<= sentence) |
(deffunction constant (indvar* [seqvar]) [string]
:-> indvar :=> sentence) |
(defrelation constant (indvar* [seqvar]) [string]
:<= sentence) |
(defrelation constant (indvar* [seqvar]) [string]
:=> sentence) |
(deflogical constant [string] :<= sentence)
(deflogical constant [string] :=> sentence)
Как уже говорилось выше, форма (form)— это, либо предложение,
либо определение.
form ::= sentence | definition
Заметим, что определения представляют собой синтаксические кон-
струкции верхнего уровня и, потому, не могут быть часть других пред-
ложений или определений (если, конечно, они не определены внутри
цитат).
Онтология состоит из конечного множества форм. Отметим особо,
что подразумевается именно множество форм, а не их список, т.е.
порядок форм в онтологии не важен. Конечно, порядок может учиты-
ваться программами, которые читают тексты онтологий, с тем, чтобы
155
оптимизировать процесс чтения, но для обмена знаниями между раз-
личными программными системами это не важно.
156
В языке KIF, связи между объектами имеют форму отношений.
Формально, отношение (relation) определяется как произвольное мно-
жество конечных списков объектов, причем списки могут иметь различ-
ную длину. Каждый такой список представляет собой выборку объек-
тов, которые удовлетворяют данному отношению. Например, отноше-
ние «<» содержит список <2,3>, что фиксирует тот факт, что 2 меньше,
чем 3.
Функция представляет собой специальный вид отношений. Каж-
дой конечной последовательности объектов, называемых аргументами
(arguments), функция сопоставляет уникальный объект, называемый
значением (value). Формально, функция определяется как множество
конечных списков объектов, по одному списку для каждой комбинации
возможных аргументов. В таких списках все элементы, за исключением
последнего, являются аргументами, последний элемент— это значение
функции. Например, функция 1+ содержит список <2,3>, показываю-
щий, что число 3 есть результат прибавления единицы к числу 2.
Заметим, что как функции, так и отношения определяются как мно-
жества списков. В этом смысле, каждая функция есть отношение, но
не каждое отношение представляет собой функцию. Функция не может
содержать двух списков, различающихся только последним элементом
(значением), ведь это означало бы, что функция имеет два различных
значения для одного и того же набора аргументов. Отношения не име-
ют такого ограничения. Например, как уже говорилось выше, функция
1+ содержит список <2,3> и уже не может содержать списки <2,2> или
<2,4>, а определенное выше отношение «<» содержит списки <2,3>,
<2,4> и <2,5>.
В отличии от математической традиции, в которой списки отноше-
ний и функций должны быть одной и той же длины для каждого фик-
сированного отношения или функции, в языке KIF этого ограничения
не вводится. Например, отношение «<» может содержать, как список
<2,3>, так и список <2,3,4>. Это послабление не ведет к каким-либо
значащим математическим особенностям, но часто бывает удобно.
Объект ничто
В языке KIF все функции полны(total) в том смысле, что для каж-
дой комбинации своих аргументов должны предоставлять определен-
ное значение. Но иногда бывает так, что для некоторых комбинаций
значение функции не имеет смысла. Поэтому, для таких комбинаций
в качестве значения функции выступает объект ничто. Рассмотрим,
например, функцию извлечения квадратного корня, определенную на
157
множестве вещественных чисел. Эта функция не имеет смысла на от-
рицательных значениях, т.е. функция частичная. В KIF определять ча-
стичные функции не позволено, поэтому для отрицательных аргумен-
тов значением функции является ничто.
Функциональные термы
Семантика функционального терма определяется его значением. Значе-
ние функционального терма без переменной последовательности полу-
чается приложением функции, которую обозначает константа в функ-
циональном терме, к аргументам, перечисленным а данном функцио-
нальном терме. Например, значение функционального терма (+ 2 3)
задается приложением функции + к аргументам 2 и 3. В результате при-
ложения функции получается значение 5. Это значение обычно пред-
ставляется в онтологии объектной константой 5.
В том случае, когда функциональный терм заканчивается перемен-
ной последовательности, значение функционального терма формирует-
ся из его аргументов, явно перечисленных в функциональном терме, и
тех аргументов, которые составляют значение переменной последова-
тельности. Пусть, например, значение переменной последовательности
@1 есть список из трех чисел <2,3,4>. Тогда, значение функциональ-
ного терма (+ 1 @1) будет определяться приложением функции + к
списку аргументов <1,2,3,4>, т.е. будет равно значению, обозначаемо-
му объектной константой 10.
Предложения с отношениями
Простое предложение отношения без переменной последовательность
есть истина в том, и только в том случае, когда отношение, обозначае-
мое константой в предложении последовательности, истинно на списке,
формируемом аргументами, перечисленными в предложении отноше-
ния. Если рассматривать отношение как множество списков, то пред-
ложение отношения истинно тогда и только тогда, когда список, форми-
руемый аргументами предложения, принадлежит отношению, которое
обозначает константа данного предложения отношения.
Если предложение отношения оканчивается переменной последова-
тельности, то список отношения формируется из явно перечисленных
аргументов предложения отношения и элементов данной переменной
последовательности.
158
Равенства и неравенства
Равенство истинно, если и только если, термы, входящие в равенство,
обозначают одни и те же объекты данной предметной области.
Неравенство истинно в том, и только в том случае, когда термы,
перечисленные в неравенстве, обозначают различные объекты данной
предметной области.
Истина и ложь
Значение константы true есть истина, а значение константы false есть
ложь.
Логические предложения
Отрицание истинно тогда и только тогда, когда предложение, входящий
в конструкцию отрицания, есть ложь.
Конъюнкция истинна тогда и только тогда, когда истинны ее конъ-
юнкты.
Дизъюнкция истинна в том и только в том случае, если хотя бы
один из дизъюнктов является истинным.
159
Если каждый входящий в импликацию антецедент является истин-
ным, то предложение импликации является истинным тогда и только
тогда, когда истинно его следствие. Если хотя бы один из антецедентов
является ложным, то значение всего предложения является истинным,
несмотря на то, истинно или нет следствие.
Значение предложения обратной импликации есть в точности то же,
что и при прямой импликации, если принимать во внимания обратное
расположение антецедентов и следствия.
Значение предложения эквивалентности выражается с помощью
конъюнкции прямой и обратной импликаций его операндов.
Предложения с квантификаторами
Простое предложение с квантификатором существования (т.е. предло-
жение, в котором первый аргумент это список переменных) является
истинным в том и только в том случае, если квантифицируемое пред-
ложение истинно для каких-то значений переменных в списке первого
аргумента.
Простое предложение с универсальным квантификатором (т.е. пред-
ложение, в котором первый аргумент это список переменных) является
истинным в том и только в том случае, если квантифицируемое пред-
ложение истинно для всех значений переменных в списке первого ар-
гумента.
Предложения с квантификацией и сложным определением перемен-
ных можно конвертировать в простые предложения с квантификацией,
переведя условия определения в тело предложения. При этом, может
потребоваться переименование переменных, чтобы избежать конфлик-
тов имен. В примерах ниже сложные определения переменных конвер-
тируются в простые предложения с квантификацией:
160
одну и ту же семантику для всех контекстов, необходимо использовать
явную квантификацию.
Определения
В языке KIF, операторы определений позволяют пользователям уста-
навливать предложения «истинными по определению». В этом смысле,
такие предложения отличаются от обычных логических предложений
языка KIF, которые выражают связи между объектами онтологии и
могут быть как истинными, так и ложными. Определения истинны по-
тому, что так захотел пользователь, т.е. семантика определений прин-
ципиально отличается от семантики обычных логических предложений.
Определения имеют содержание— предложения, которые можно ис-
пользовать для вывода других предложений. В языке KIF, каждое
определение имеет соответствующее множество предложений, называ-
емое содержанием (content) определения.
Для определения объектов используется оператор defobject. Ниже
приведены возможные формы этого оператора, вместе с перечислением
их содержания. Первое определение представляет собой равенство, в ко-
тором объектная константа приравнивается терму. Второе определение
состоит из нескольких компонентов, т.о. содержание этого определения
представляет собой конъюнкцию этих компонентов. Содержимое тре-
тьего и четвертого определений представляет собой прямую и обратную
импликации, соответственно. Первой строкой дано само определение, а
второй— аксиомы, которые задают данные определения.
(defobject s := t)
(= s t)
161
и переменных в списке аргументов с одной стороны, и определяемого
терма— с другой. Во втором определении, также как и в случае опре-
деления объектов, содержимое определяемой функции представляется
собой конъюнкцию своих компонентов3 . Третье и четвертой определе-
ния задают прямую и обратную импликации, соответственно.
(deffunction f p1 ...pn)
(and p1 ...pn)
(defrelation r p1 ...pn)
(and p1 ...pn)
162
Числа и списки
Числа
Как уже говорилось выше, любая онтология, описываемая на языке
KIF, должна включать в себя в качестве базовых объектов все веще-
ственные и комплексные числа. Рассмотрим подробно, как представля-
ются в KIF числа.
Числовые константы записываются в KIF в виде десятичных чисел,
т.е. чисел, имеющих основание 10. Среди прочего, это означает, что
для различных числовых констант всегда можно установить их нера-
венство, т.е. если t1 и t2 представляют различные числа, то выражение
(/= t1 t2) всегда есть истина.
На числах введены отношения, позволяющие выделять подклассы
чисел. Опишем их.
Класс всех чисел задается отношением number и представляет собой
объединение классов real и complex:
163
Списки
Список представляет собой конечную последовательность элементов.
Элементами списков могут быть любые объекты предметной области.
Для обозначения списка элементов t1, . . . , tn в языке KIF
используется терм вида (listof t1 ... tn). Например, выраже-
ние (listof mary (listof tom dick harry) sally) обозначает спи-
сок, состоящий из объекта mary, списка объектов tom, dick и harry,
и объекта sally.
Для выделения списков в тип используется отношение list (спи-
сок)4 , которое определено следующим образом:
164
(deffunction butlast (?l) :=
(cond ((null ?l) bottom)
((null (rest ?l)) nil)
(true (cons (first ?l) (butlast (rest ?l))))))
165
{:def | :iff-def} <предложение-с-аргументами>
[:constraints <предложение-с-аргументами>]
[:equivalent (<предложение-с-аргументами>*)]
[:sufficient <предложение-с-аргументами>]
[:default-constraints (<предложение-с-аргументами>*)]
[:axiom-def <предложение-без-аргументов>]
[:axiom-constraints <предложение-без-аргументов>]
[:axiom-defaults (<предложение-без-аргументов>*)]
[:ontology <имя-онтологии>]
[:class-slots (<спецификация-слота>*)]
[:instance-slots (<расширенная-спецификация-слота>*)]
[:default-slot-values (<спецификация-слота>*)]
[:issues <дерево-issue>])
Данная конструкция создает отношение с именем <имя-отношения>.
Список переменных, идущий за именем отношения и задаваемый в
определении синтаксиса конструкцией (<имя-переменной>+), содержит
в качестве элементов только индивидные переменные. Запрещено ис-
пользование переменных последовательности, и именно из этого следу-
ет, что списки отношений имеют одну и ту же длину. В KIF индивидные
переменные начинаются с символа ?, в списке (<имя-переменной>+) на-
чинать имя переменной с этого символа не обязательно, но желатель-
но. Остальные элементы синтаксической конструкции не обязательно
должны присутствовать в ней.
Необязательный компонент :documentation <комментарий> пред-
ставляет собой текст, содержащий комментарий к определению. Эле-
менты синтаксической конструкции create-relation могут следовать
в произвольном порядке. Мы не будем перечислять здесь их все, заинте-
ресованный читатель может обратиться к документации [10]. Обратим
внимание только на наиболее важные и чаще всего используемые из
них.
Конструкция :def <предложение-с-аргументами> представляет со-
бой предложение, выражающее необходимое условие выполнения дан-
ного отношения на его аргументах. Рассмотрим, например, отношение
has-parent:
(create-relation has-parent (?child ?parent)
:documentation "отношение ребенка к родителю."
:def (and (person ?child) (person ?parent)))
Это отношение имеет ограничение (and (person ?child)
(person ?parent)), которое логически можно проинтерпретиро-
166
вать следующим образом:
167
предваряется ключевым словом, поэтому для нее порядок задан жест-
ко. Хотя, если использовать ключевое слово :documentation, то ком-
ментарий можно располагать в любом месте. Приведем определения
отношений из примеров предыдущего подраздела, но с использованием
ключевого слова define-relation.
Определение функций
Как уже говорилось выше, функции представляют собой специальный
вид отношений. Синтаксис определения функций в Ontolingua KIF так-
же имеет две формы: create-function и более простую и чаще исполь-
зуемую форму define-function. Как уже говорилось выше, мы будем
рассматривать только форму define-function.
168
Форма define-function имеет следующий синтаксис:
(define-function <имя-функции> (<имя-переменной>+)
[<комментарий>]
[:-> <имя-переменной-результата>]
[<комментарий>]
[{:def | :iff-def} <предложение-с-аргументами>]
[:constraints <предложение-без-аргументов>]
[:axiom-def <предложение-без-аргументов>]
[:axiom-constraints <предложение-без-аргументов>]
[{:lambda-body | :=} <выражение-терм-без-аргументов>]
[:ontology <имя-онтологии>]
[:issues <дерево-issue>]
[:documentation <комментарий>]
[:result-variable <имя-переменной>])
Здесь <имя-функции> означает константу, представляющую собой имя
функции, а <имя-переменной>+— список аргументов функции. Синтак-
сическая конструкция «:-> <имя-переменной-результата>» использу-
ется для обозначения переменной, представляющей результат приложе-
ния данной функции к ее аргументам. Эта конструкция не обязатель-
на, но если определение переменной результата присутствует, то оно
должно идти сразу после списка аргументов. Рассмотрим некоторые
наиболее интересные из перечисленных выше элементов синтаксиче-
ской конструкции определения функции.
Ключевое слово :axiom-def используется для задания аксиом, вы-
ражающих свойства определяемой функции. Ввиду того, что аксио-
мы характеризуют свойства функции, а не ее аргументов, предложе-
ние определения аксиомы не должно содержать имен переменных ар-
гументов. Каждая аксиома представляет собой конструкцию второго
порядка, т.к. характеризует функцию. Рассмотрим, например, функ-
цию identity, которая возвращает в качестве значения переданный на
вход аргумент:
(define-function identity (?anything) :-> ?same-thing
"возвращает свои аргументы"
:lambda-body ?anything
:axiom-def (and (symmetric-function identity)
(transitive-function identity)))
Здесь аксиома, следующая за ключевым словом :axiom-def, задает
свойства функции identity. Данная функция определена как симмет-
ричная и транзитивная.
169
Конструкция :when используется в полиморфных определениях
функций. Полиморфизм функции выражается в том, что может иметь-
ся несколько определений функции с одним и тем же именем. Это полез-
но, когда функция ведет себя по разному с разными типами аргументов.
Например, можно определить функцию «+» для пары множеств как их
объединение, хотя для чисел эта функция означает арифметическое
сложение:
170
Определение онтологий
Онтологии в системе Ontolingua представляются в виде модулей,— тек-
стов, содержащихся в файлах с расширением «lisp». Онтология обычно
состоит из нескольких таких модулей: главного модуля, состоящего из
определений, содержащихся в главном файле, и включенных в данную
онтологию других онтологий. Онтология объявляется с помощью стан-
дартной конструкции define-ontology. Приведем ее синтаксис (наибо-
лее часто используемые элементы):
171
Имя пакета, задаваемое с помощью ключевого слова :io-package,
обычно является именем ontolingua-user, для всех онтологий, создан-
ных пользователями посредством редактора Ontolingua Editor.
Ключевое слово :issues задает различные комментарии к публика-
ции онтологии. Это может быть, либо строка, либо список строк, либо
список пар вида (<метка> <объект-lisp>), где <метка> представляет
собой строку или символ, представляющую тип комментария. Обычно,
:issues содержит строку с именами авторов онтологии. Для других
определений, например определений функций, :issues может содер-
жать примеры использования.
Рассмотрим пример, представляющий собой определение онтологии
simple-geometry из библиотеки онтологий системы Ontolingua [см. 5]:
(define-ontology simple-geometry
(quantity-spaces
3D-tensor-quantities
standard-dimensions)
:maturity :high
:generality :high
:issues ("(c) 1993, 1994 Gregory R. Olsen
and Thomas R. Gruber"))
В данном примере объявляется онтология simple-geometry, в которой
используются три онтологии quantity-spaces, 3D-tensor-quantities
и standard-dimensions, определена строка комментария и информация
о собственности.
Онтологии можно объединять в пакеты. Пакет— это не онтология,
но объединение онтологий по некоторому признаку, который удобен
пользователю. Например, практически все онтологии, которые вхо-
дят в библиотеку онтологий системы Ontolingua, определены в паке-
те «ontolingua-user», который унаследован от базового пакета «KIF».
Очевидно, что объединение онтологий в пакеты в библиотеке онтоло-
гий системы Ontolingua не связано с их содержанием непосредственно.
172
На самом деле, Ontolingua использует модульную систему языка LISP.
Программы, написанные на языке LISP, хранятся в файлах, а фай-
лы могут быть объединены в пакеты. В языке KIF Extensions каждая
онтология хранится в своем собственном файле и, таким образом, онто-
логии могут объединяться в пакеты. Пользователь может задать пакет,
в который будет помещена редактируемая теория, двумя способами:
(in-package "ontolingua-user")
Классы и фреймы
Должно быть, любознательный читатель уже задавался вопросом: по-
чему данный раздел называется «Онтология Фреймов», хотя мы гово-
рим о классах и их атрибутах? Наверное, настала пора дать на этот
вопрос подробный ответ.
Теория фреймов была создана Марвином Минским в 1974 году и
опубликована в работе [19]. Эта работа сыграла важную роль в науке
о знаниях, но также сформировала базу для того, что в информати-
ке мы сейчас называем Объектно Ориентированным Подходом (ООП).
Для объяснения того, что такое фрейм дадим слово самому Марвину
Минскому [см. 19]:
173
торые всегда выполняются для данной ситуации. Нижние
уровни содержат множество «терминалов»5 — «слотов», ко-
торые заполняются специфическими экземплярами или дан-
ными. 6 Каждый терминал может задавать условия, кото-
рым должны удовлетворять данные, чтобы они могли быть
присоединены. (Условия сами представляют собой неболь-
шие «подфреймы»). Простые условия могут быть заданы
посредством «маркеров», которые требуют, чтобы присоеди-
няемые к терминалу данные были персоной, объектом, име-
ющим определенное значение, или указателем на подфрейм
определенного типа. Более сложные условия могут задавать
отношения между данными, присоединенными к каждому
терминалу.
Классы
Классы можно задавать с помощью синтаксической конструкции
create-class или его упрощенной формы define-class:
(define-class <имя-класса> (<имя-переменной>)
[<комментарий>]
{:def | :iff-def} <предложение-с-аргументами>
[:constraints <предложение-с-аргументами>]
[:equivalent <предложение-с-аргументами>]
[:sufficient <предложение-с-аргументами>]
[:default-constraints <предложение-с-аргументами>]
[:axiom-def <предложение-без-аргументов>]
[:axiom-constraints <предложение-без-аргументов>]
[:axiom-defaults (<предложение-без-аргументов>*)]
[:ontology <имя-онтологии>]
[:class-slots (<спецификация-слота>*)]
[:instance-slots (<расширенная-спецификация-слота>*)]
[:default-slot-values (<спецификация-слота>*)]
[:issues <дерево-issue>])
Имя класса задается посредством константы <имя-класса>. После
имени класс должно идти имя переменной, которая используется внут-
ри определения класса для ссылки на определяемый класс. Это необхо-
димо, например когда задаются ограничения на использование класса
с помощью конструкций вида :def или :iff-def. Например:
(define-class human (?human)
"Человек как животное."
:def (animal ?human))
В данном определении задается класс human (человек), при этом опре-
деляется, что каждый человек является также и животным (animal).
Это ограничение можно было бы задать, объявив класс animal роди-
тельским классом класса human с помощью отношения subclass-of.
175
Ключевые слова :def и :iff-def используются, как и для других
конструкций, для задания различного вида ограничений на использо-
вание класса. Например, в определении
Экземпляры классов
Экземпляры класса задаются с помощью синтаксической конструкции
define-instance (create-instance):
(define-instance <имя-экземпляра> (<имя-класса>+)
[<комментарий>]
[:= <выражение-терм-без-аргументов>]
[:axiom-def <предложение-без-аргументов>]
[:slots (<спецификация-слота>*)]
[:ontology <имя-онтологии>]
[:issues <дерево-issue>])
Эта конструкция представляет собой функцию, которая конструиру-
ет объект с именем <имя-экземпляра>, который принадлежит классам
(одноместном отношениям), заданным в списке <имя-класса>+.
Как и всякая функция, конструкция define-instance должна
иметь тело, в котором, собственно, и задается экземпляр класса. Тело
функции специфицируется с помощью двух альтернативных конструк-
ций:
1. := <выражение-терм-без-аргументов>.
2. :axiom-def <предложение-без-аргументов>.
176
(define-instance PI (real-number)
"Число PI представляет собой отношение длины
окружности к его диаметру."
:= 3.145)
Здесь определяется константа PI, как экземпляр класса вещественных
чисел, равная 3.145.
Экземпляры класса можно не только задавать с помощью термов, но
и просто записывать какие-то интересные факты об этих экземплярах
с помощью конструкции :axiom-def <предложение-без-аргументов>.
Например, в определении7
Подклассы
Отношение subclass-of определено в Онтологии фреймов следующим
образом (детали опущены):
178
(define-ontology Bibliographic-Data
(simple-time agents frame-ontology
slot-constraint-sugar documents)
:io-package "ontolingua-user"
:maturity :High)
Как видно из определения, онтология библиографических дан-
ных использует онтологии: simple-time, agents, frame-ontology,
slot-constraint-sugar и documents. Онтология определена в пакете
ontolingua-user.
Основным элементом онтологии библиографических данных явля-
ется понятие ссылки (reference). Ссылка описывает информацию, необ-
ходимую, чтобы идентифицировать и получить публикацию. Публика-
ция ассоциируется с документом (document), который может быть раз-
личного сорта (например, книгой или журналом). Иногда, для одного
документа имеет сразу несколько публикаций (например, статьи в сбор-
нике конференции). Поэтому, в онтологии произведено разделение меж-
ду документом и ссылкой. Документы создаются авторами (authors),
которые чаще всего являются людьми (people), но иногда могут быть и
другими агентами, например, организациями (organizations). Докумен-
ты публикуются издателями (publishers).
Класс ссылки определен следующим образом:
(define-class Reference (?ref)
179
Non-Publication-Reference)))
В определении задается, что каждая ссылка является экземпляром
класса Individual-Thing. Этот класс определен в Онтологии фреймов
(Frame-Ontology) для того, чтобы отличать классы от индивидов. Та-
ким образом, здесь просто декларируется, что ссылка— это не класс.
Конструкция :axiom-def определяет, что класс Reference являет-
ся непересекающимся объединением классов Publication-Reference
и Non-Publication-Reference. Для этого используется отношение
partition, определенное в онтологии Frame-Ontology.
Таким образом, класс Reference имеет два дочерних клас-
са: Publication-Reference и Non-Publication-Reference. Класс
Publication-Reference представляет собой ссылку на опубликован-
ный документ. Конечно, понятие публикации и документа здесь ин-
терпретируются несколько шире, чем обычно. Приведем определение
этого класса:
180
определяются два подкласса: Personal-Communication-Reference и
Generic-Unpublished-Reference.
(define-class Non-Publication-Reference (?ref)
:def (and (Reference ?ref)
(Cannot-Have ?ref Ref.Document))
:axiom-def (Disjoint-Decomposition
Non-Publication-Reference
(setof Personal-Communication-Reference
Generic-Unpublished-Reference)))
Для классов ссылок определено множество атрибутов, здесь мы не
будем их перечислять.
Класс документа задается в онтологии Documents следующим обра-
зом:
181
Calendar-Year представляет точку во времени с точностью до года. Эле-
менты онтологии Simple-Time используются для обозначения дат пуб-
ликаций документов. Обозначения дат с различной точностью здесь
важно, т.к. для публикации может быть неизвестен ее месяц или день,
а только год. Точки во времени также используются для обозначений
дат конференций (экземпляров класса Conference).
Каждый документ в онтологии имеет название (Title). Название—
это строка символов, также как и имя агента (Agent-Name) или адрес
(City-Address). Подобные типы данных, которые используются для
идентификации, не нуждаются в дополнительном структурировании,
поэтому для них используются встроенные в KIF типы. Вот как, на-
пример, определена в онтологии Documents функция Title-Of:
182
"Двуместное отношение R имеет значение (Has-One) на
экземпляре i, если существует в точно одно значение v,
такое что выполняется R(i,v).
Когда отношение используется в определении класса,
где ?i представляет собой переменную экземпляра класса,
выражение (Has-One ?i R) означает, что атрибут R всегда
имеет в точности одно значение для данного экземпляра."
:iff-def (and
(Instance-Of ?binary-relation Binary-Relation)
(Cardinality ?binary-relation ?instance ?val)
(= ?val 1)))
183
Рис. 4.1: Страница Онтологического Фреймового Редактора
184
Рис. 4.2: Список загруженных онтологий системы Ontolingua.
185
нажать на кнопку «Создать» (Create), выбрав в выпадающем списке
пункт «Онтология» (Ontology). В поле имени онтологии ввести «Test-
for-Book», а в поле комментария— «For test». В качестве включаемых
онтологий выберем только одну: Frame-Ontology (см. рисунок 4.3).
Нажмем на кнопку «Добавить новую онтологию» (Assert new
ontology), Редактор создаст онтологию и осуществит переход на ее стра-
ницу. Страница онтологии содержит описание данной онтологии, при-
чем это описание состоит из разделов. Первый раздел посвящен опи-
санию свойств онтологии как объекта библиотеки онтологий. Фактиче-
ски, это представленная в удобном для человека виде описанная выше
конструкция define-ontology языка Ontolingua KIF. Точнее, описанию
этой конструкции посвящены три ее первых раздела: «Ontology Test-
For-Book», «Ontology documentation» и «Summary of Test-For-Book».
Оставшиеся разделы посвящены описанию элементов онтологии, за-
даваемых с помощью конструкций define-class, define-relation и
define-function. Онтологию необходимо сохранить, тогда ее содержа-
ние станет доступным для просмотра из файла с расширением «lisp» и
именем, совпадающим с именем данной онтологии (см. рисунок 4.4).
Создадим в онтологии Test-For-Book класс с именем Test-Class.
Для этого в выпадающем списке возле кнопки «Создать» (Create) вы-
берем «Класс» (Class) и нажмем на кнопку. Загрузится страница созда-
ния класса. Необходимо ввести имя класса, необязательный коммента-
рий и обязательно указать имя класса, подклассом которого данный
объект будет являться. Мы укажем класс Individual-Thing, опреде-
ленный в онтологии Frame-Ontology специально для определения объ-
ектов, которые не являются множествами элементов. Указание класса
обязательно, потому что в синтаксической конструкции define-class
необходимо указать хотя бы одно ограничение в обязательном элементе
:def или элементе :iff-def. Вид страницы создания класса показан на
рисунке 4.5.
После того, как класс будет создан, система осуществит переход на
страницу класса, на которой можно указать дополнительные свойства
класса, добавить ограничения, слоты и т.п. Мы этого делать не бу-
дем и вернемся на страницу онтологии, для чего можно просто клик-
нуть на имени онтологии левой кнопкой мыши. Также, необходимо не
забыть сохранить изменения, сделанные в онтологии, нажав на кноп-
ку «Файл» (File) и выбрав в выпадающем списке элемент «Сохранить
онтологию...» (Save ontology to...). Теперь текст онтологии можно про-
смотреть как содержимое файла «test-for-book.lisp», для чего достаточ-
но кликнуть на имени этого файла.
Создадим теперь экземпляр класса Test-Class. Для этого, в вы-
186
Рис. 4.3: Создание онтологии Test-For-Book.
187
Рис. 4.4: Страница онтологии Test-For-Book.
188
Рис. 4.5: Страница создания класса Test-Class.
189
Рис. 4.6: Страница создания экземпляра Instance-Of-Test-Class.
(In-Package "ONTOLINGUA-USER")
190
Рис. 4.7: Страница создания отношения Test-Relation.
(Define-Ontology Test-For-Book
(Frame-Ontology)
"For test."
:Io-Package "ONTOLINGUA-USER")
191
"Just to illustrate.")
192
4.6 Список литературы
193
16. Gruber T. R. Ontolingua: A mechanism to support portable ontologies.
// Stanford University, Knowledge Systems Laboratory, Technical
Report KSL-91-66, Март 1992.
18. Karp P. D., Myers K., Gruber T. R. The Generic Frame Protocol.
// In 14th International Joint Conference on Artificial Intelligence.
Montreal, Canada.
194
5 Cyc— библиотеки
онтологий для AI
195
позже— термин Cyc-10. Таким образом, Cyc-10 представляет собой на-
звание текущей реализации системы Cyc. Первая версия Cyc-10 появи-
лась в марте 1995 года и была разработана под руководством Кейта
Гулсби (Keith Goolsbey), архитектора системы и разработчика проце-
дур логического вывода.
Знания в библиотеке онтологий Cyc поделены на так называемые
микротеории . Микротеорий в проекте Cyc тысячи. Микротеория содер-
жит факты, касающиеся той или иной области знаний. В этом смысле,
микротеория представляет собой аналог онтологии. Для записи фактов
в микротеориях Cyc использует специальный язык под названием CycL
(Cyc Language). Язык CycL представляет собой язык исчисления логи-
ки предикатов первого порядка с аксиомами эквивалентности, возмож-
ностями расширения процедур логического вывода и сколемизацией.
Язык также поддерживает некоторые свойства языка второго порядка
(например, квантификацию по предикатам с некоторыми ограничения-
ми). База знаний Cyc состоит из термов (terms)— словаря языка CycL,
и суждений (assertions), связывающих эти термы. Язык CycL также
будет подробно рассмотрен ниже в разделе 5.2.
Система Cyc используется не только, как хранилище для сужде-
ний. Система предоставляет возможности по осуществлению логическо-
го вывода по этим суждениями. О том, каким образом осуществляются
процедуры логического вывода в системе Cyc, мы также поговорим по-
дробно в этой главе в разделе 5.3.
Библиотека онтологий проекта Cyc довольно обширна. Так, извест-
но, что еще в 1994 году, когда была создана компания Cycorp, библиоте-
ка содержала порядка 250 тысяч фактов. Очевидно, что за прошедшие
15 лет, объем знаний, содержащихся в библиотеке, увеличился. На дан-
ный момент, онтология Cyc содержит более миллиона суждений. Для
систематизации такого обширного комплекса знаний в Cyc использу-
ется своя онтология верхнего уровня. Детальному рассмотрению этой
онтологии будет посвящен раздел 5.4.
Библиотека онтологий Cyc закрыта для публичного доступа, но яд-
ро системы все же опубликовано под именем OpenCyc (см. [5]). Кро-
ме библиотеки онтологий, OpenCyc предоставляет набор инструментов,
позволяющих производить различные манипуляции с библиотекой он-
тологий на программном уровне. В этот набор включена программа
для осуществления логического вывода Cyc Inference Engine, програм-
ма для просмотра содержимого библиотеки онтологий Cyc Knowledge
Base Browser, а также набор различных программных интерфейсов для
работы с библиотекой. Мы рассмотрим инструментарий OpenCyc более
подробно в разделе 5.5.
196
В проекте Cyc также реализована система обработки естественных
языков под названием Cyc-NL. Эта система состоит из трех компонен-
тов: словаря, синтаксического анализатора и семантического интерпре-
татора. На данный момент, система Cyc-NL в состоянии обрабатывать
синтаксически сложные и неоднозначные конструкции, включающие в
себя отрицания, модальные и вложенные квантификаторы. Разработ-
чики системы Cyc-NL разрабатывают программный интерфейс, кото-
рый позволит получить доступ к системе Cyc-NL из других систем.
Для получения детальной информации о системе Cyc-NL необходимо
обратиться к [10].
К сожалению, литературы по проекту Cyc на русском языке совсем
немного. Можно упомянуть разве что вводную статью М. Алексеевой
([1]). В данной главе автор пытается заполнить этот пробел, предоста-
вив русскоязычному читателю подробный обзор проекта Cyc на родном
языке. В обзоре на уделено достаточного внимания системе обработ-
ки естественных языков Cyc-NL. Автор посчитал, что необходимо дать
больше информации о проектах, непосредственно касающихся предме-
та изложения данной книги. Проблемы, решаемые системой Cyc-NL,
хотя и достаточно интересные, напрямую с вопросами построения ин-
женерных онтологий не связаны.
Ниже будет приведен обзор онтологий верхнего уровня проекта Cyc,
языка CycL и проекта OpenCyc. Автор надеется, что этой информации
будет достаточно, чтобы породить у читателя интерес к системе.
197
5.2 Язык CycL
Константы
Константы представляют собой элементы словаря базы знаний про-
екта Cyc. Разработчики проекта пытаются моделировать человече-
ское восприятие мира, поэтому каждая константа обозначает неко-
торую вещь или понятие. Некоторые константы обозначают коллек-
ции других понятий, такие константы так и называются— Коллекции
(Collections). Например, константа #$AnimalWalkingProcess означа-
ет множество действий, производимых животным во время ходьбы,
а константа #$Typewriter означает множество всех пишущих маши-
нок. Другие константы обозначают конкретные объекты, которые мо-
гут более или менее постоянно находится в базе знаний (например,
#$InternalRevenueService— Налоговое Управление США), или возни-
кают там время от времени (например, #$Walking00036— конкретный
случай описания процесса ходьбы). Некоторые константы обозначают
предикаты, такие как #$isa или #$likesAsFriend, использующиеся для
обозначения связей между объектами, другие константы обозначают
функции (функция #$GovernmentFn, получающая в качестве аргумен-
тов константы или другие объекты языка и генерирующая в результате
198
новое понятие— #$GovernmentOf #$Canada). Каждая константа имеет
в базе знаний Cyc свою собственную структуру данных, содержащую,
кроме всего прочего, имя данной константы и множество суждений о
ней.
Большинство констант идентифицируются в языке CycL уникаль-
ными именами Однако, как мы увидим ниже, некоторые константы
могут не иметь постоянных имен. Имена таких констант формируются
как результат выполнения функции, т.е. имя представляет собой со-
ставное выражение. Этот способ именования мы подробно рассмотрим
в дальнейшем. Имена констант должны начинаться с префикса «#$»
(произносится как «хэш-доллар»— hash-dollar).
За префиксом должны следовать по крайней мере два символа име-
ни константы. Иначе говоря, длина имени константы не может быть
менее четырех символов (включая префикс). Для именования констант
позволено использовать буквы верхнего и нижнего регистров, цифры,
дефис «-», подчеркивание «_» и вопросительный знак «?». Имена, раз-
личающиеся только регистром символов, различаются, т.е. язык CycL
чувствителен к регистру (case sensitive).
Все имена предикатов должны начинаться со строчной буквы, а
имена других элементов языка,— либо с прописной буквы, либо с циф-
ры. Внимательный читатель уже, вероятно, заметил соглашение об
именовании констант, применяющееся в языке CycL. Для выделения
значимых элементов имени используются символы верхнего регистра.
Иначе говоря, имя константы состоит из значимых слов, начала кото-
рых выделяются прописными буквами. Например, если мы хотим ис-
пользовать константу для обозначения автора романа «Морской волк»
([3]), то она должна иметь вид #$JackLondon, но не #$Jacklondon или
#$Jack?London. Символы подчеркивания, дефиса и вопросительного
знака нужно использовать для разделения семантически разнородных
компнонентов имени. Например, в имени #$Fruit-TheWord разделены
компоненты «Fruit» (фрукт) и «TheWord» (слово), чтобы отделить обо-
значение имени объекта (фрукт) от его характеристики (слово).
Сами по себе, имена ничего не значат в языке CycL. Совершенно
неважно, каким именно именем будет обозначаться понятие «зеленый
цвет»: #$Green или #$GreenColor. Значение константы определяется
не его именем, а суждениями, которые имеются в системе относитель-
но данной константы. Конечно, будет проще и понятнее использовать
имена, по смыслу согласующиеся с их значениями в базе знаний Cyc,
в противном случае можно внести путаницу. Например, если исполь-
зовать имя #$Green для обозначения цвета, которые в суждениях ба-
зы знаний Cyc обозначает понятие «красный цвет». Но, всегда следует
199
помнить, что смысл константы определяется не его именем, а суждени-
ями относительно этой константы, содержащимися в базе знаний Cyc.
Например:
Переменные
В языке CycL, выражения с квантификаторами могут содержать пере-
менные, которые используются для обозначения констант, идентифика-
торы которых не определены. Имена переменных должны начинаться
со символа «?» и записываться только прописными буквами. Например,
правильно писать «?FOO», но не «FOO» или «?Foo».
Если в формуле используется одна переменная, то для ее имено-
вания обычно используют только один символ, например, «?X». Если
формула содержит несколько переменных, то принято давать им мне-
монические имена. Например,
(#$implies
(#$and
(#$isa ?TRANSFER #$TransferringPossession)
(#$fromPossessor ?TRANSFER ?FROM))
(#$isa ?FROM #$SocialBeing))
Формулы
Формулы в языке CycL объединяют термы в осмысленные выраже-
ния. Ввиду того, что синтаксис CycL унаследован от языка LISP, каж-
дая в формула в языке CycL имеет вид списка. Список представляет
собой последовательность элементов, заключенную в круглые скобки.
200
Например, формула (?A ?B ?C) представляет собой список из трех пе-
ременных. Элементами списка могут быть также и другие формулы,
т.е. другие списки. Например, список (?A (#$isa ?B #$Green ) ?C)—
это формула, содержащая три элемента, причем второй элемент сам яв-
ляется формулой (списком из трех элементов). Понятно, что элементы
вложенной формулы также могут быть формулами и такое вложенное
структурирование может продолжаться сколь угодно долго. В резуль-
тате, можно построить формулу любой сложности. Списочная струк-
тура проста и логична, но трудно читаема. Поэтому, при написании
сложных формул стараются использовать разметку, записывая элемен-
ты списков в отдельных строках и выделяя элементы одного уровня
вложенности одними и теми же отступами.
Элементы списка формулы называются аргументами (arguments).
По соглашению, нумерование элементов списка начинается с нуля, т.е.
на первый аргумент ссылаются, как на ARG0, на второй— как на ARG1
и т.д. В качестве ARG0 могут выступать предикат, логический опера-
тор или квантификатор. Остальными аргументами могут быть термы,
составные термы, переменные, числа, заключенные в двойные кавычки
строки символов английского алфавита или другие формулы.
Для формул в языке CycL определен специальный класс (Collection)
под именем #$CycFormula. Элементами этого класса являются все пра-
вильные формулы, т.е. правильно сформированные синтаксически и
удовлетворяющие всем семантическим ограничениям.
Формулы простейшего вида называются атомарными формулами
(atomic formulas). В атомарной формуле в качестве ARG0 выступает
предикат, а остальные аргументы представляют собой термы. Напри-
мер,
201
Предикаты
Абсолютное большинство предикатов в языке CycL имеют фиксиро-
ванное число аргументов. Число аргументов предиката называется
егоместностью (arity) (одноместный предикат, двуместный преди-
кат и т.д.). Необязательные аргументы задавать нельзя, хотя неко-
торые предикаты, такие как #$different, могут иметь переменное
число аргументов. Для предикатов с переменным числом аргментов
в языке CycL имеется специальный класс #$VariableArityRelation.
Предикаты с фиксированным числом аргументов также принадле-
жат своим классам, ограничивающим число аргументов. Например,
все предикаты с двумя аргументами должны быть элементами класса
#$BinaryPredicate. Местность предиката можно также указать непо-
средственно с помощью бинарного предиката #$arity, который берет
имя предиката в качестве первого аргумента и количество его аргумен-
тов в качестве второго. На данный момент, в языке CycL не существует
предикатов с числом аргументов, больше пяти.
Атомарная формула считается правильно построенной
(well-formed), если в качестве ARG0 выступает имя предиката, а
число остальных аргументов совпадает с местностью этого предиката.
Кроме того, типы аргументов формулы обязательно должны совпадать
с типами аргументов предиката, который выступает в качестве Arg0.
Например, предикат #$residesInDwelling определен следующим
образом:
(#$isa #$residesInDwelling #$BinaryPredicate)
(#$arg1Isa #$residesInDwelling #$Animal)
(#$arg2Isa #$residesInDwelling #$ShelterConstruction)
Первая формула объявляет константу #$residesInDwelling элемен-
том класс #$BinaryPredicate, т.е. предикат #$residesInDwelling
объявляется как двуместный. Вторая формула задает тип
первого аргумента (#$Animal). Третья формула задает тип
второго аргумента (#$ShelterConstruction). Формула вида
(#$residesInDwelling #$PottedPlant37) заведомо не является
правильно построенной, т.к. количество аргументов в ней не совпадает
с местностью предиката #$residesInDwelling. Формула
(#$residesInDwelling #$PottedPlant37 #$KarensHouse)
будет правильно построенной только тогда, когда тип константы
#$PottedPlant37 будет #$Animal, а тип константы #$KarensHouse—
#$ShelterConstruction.
202
Из формы определения предикатов в языке CycL становится понят-
но, почему невозможно объявить предикаты с местностью, большей
пяти. Дело в том, что обязательно необходимо определить тип каж-
дого аргумента предиката. Для этого используются предикаты вида
#$arg1Isa, #$arg2Isa и т.д. Таких предикатов в языке CycL всего пять:
от #$arg1Isa до #$arg5Isa. Поэтому, определение предикатов местно-
сти, большей пяти, требует изменения языка CycL.
Кроме того, необходимо задать тип предиката, т.е. его при-
надлежность одному из классов предикатов. В языке CycL, все
предикаты должны принадлежать классу #$Predicate. От этого
класса унаследованы классы #$UnaryPredicate, #$BinaryPredicate,
#$TernaryPredicate, #$QuaternaryPredicate и #$QuintaryPredicate,
определяющие одноместные, двуместные, трехместные, четырехмест-
ные и пятиместные предикаты, соответственно. Из этого также следует,
что определение предиката с местностью, большей пяти, синтаксически
невозможно.
Логические операторы
Сложные формулы строятся из атомарных или других сложных фор-
мул с помощью логических операторов (logical connectives). Логиче-
ские операторы представляют собой строго определенный набор кон-
стант, имена которых совпадают с названиями логических операторов,
которые используются в логических языках. Наиболее часто исполь-
зующиеся логические операторы— это #$not, #$and, #$or и #$implies.
Рассмотрим эти операторы подробнее.
Оператор #$not
Оператор #$not эквивалентен логическому отрицанию. В формуле
оператор #$not всегда выступает как Arg0 и имеет один аргу-
мент— формулу, возвращающую истину или ложь. Если аргумент
есть истина, то оператор возвращает ложь, и наоборот. Например,
формула (#$not (#$colorOfObject #$FredsBike #$RedColor))
является истинной, только, если формула
(#$colorOfObject #$FredsBike #$RedColor) ложна, а форму-
ла (#$not (#$not (#$colorOfObject #$FredsBike #$RedColor)))
возвращает то же значение, что формула
(#$colorOfObject #$FredsBike #$RedColor).
Оператор #$and
203
Этот логический оператор аналогичен оператору конъюнкции, исполь-
зующемуся в математической логике. Но, в отличии от логического «и»,
этот оператор может брать на вход любое число аргументов, один, два
и более. Оператор возвращает истину только, если все аргументы ис-
тинны. Например,
(#$and
(#$colorOfObject #$FredsBike #$RedColor)
(#$objectFoundInLocation #$FredsBike #$FredsGarage))
возвращает истину только в том случае, когда мотоцикл Фре-
да красного цвета ((#$colorOfObject #$FredsBike #$RedColor))
и Фред держит этот мотоцикл в гараже
((#$objectFoundInLocation #$FredsBike #$FredsGarage)).
Оператор #$or
Оператор #$or также берет на вход один и более аргументов. Также,
как и логический оператор «или», оператор #$or возвращает истину,
если хотя бы одни из его аргументов является истинным. Рассмотрим,
например, формулу
(#$or
(#$colorOfObject #$FredsBike #$RedColor)
(#$objectFoundInLocation #$FredsBike #$FredsGarage)
(#$owns #$Fred #$FredsBike))
Данная формула возвращает истину, если хотя бы одно из выска-
зываний «мотоцикл Фреда красного цвета», «Фред держит мотоцикл в
гараже» и «Фред— владелец своего мотоцикла» истинно. Могут быть
истины более одной формулы, в этом случае оператор #$or все равно
возвращает истину.
Оператор #$implies
Оператор #$implies аналогичен логической импликации (⇒). Также,
как оператор импликации, оператор #$implies имеет в точности два
аргумента. Аргумент Arg1 является логической посылкой, а аргумент
Arg2— логическим следствием. Логически формула (#$implies A B)
эквивалента (𝐴 ⇒ 𝐵 ) и читается так: «если 𝐴, то 𝐵 ». Оператор возвра-
щает ложь только в том случае, когда первый аргумент есть истина, а
второй аргумент есть ложь. Например, формула
(#$implies
204
(#$owns #$Fred #$Bike001)
(#$colorOfObject #$Bike001 #$RedColor))
возвращает ложь только тогда, когда Фред является собственником мо-
тоцикла не красного цвета.
Суждения с оператором #$implies часто используются в языке
CycL. Такие суждения еще называют условиями(conditionals) илипра-
вилами (rules). Следует также заметить, что формулы, подобные той,
что приведена в примере выше, не часто встречаются в базе знаний Cyc.
Более репрезентативные примеры применения оператора #$implies бу-
дут даны ниже.
(#$not A)
(#$and A)
(#$and A B)
(#$or A)
(#$or A B)
(#$implies A B)
правильные, а формулы
(#$not A B)
(#$and)
(#$and A C)
(#$implies A)
не правильные. Читателю предлагает оценить, почему формулы, при-
веденные в примере выше, являются не правильными, самостоятельно
в качестве упражнения.
Квантификаторы
До сих пор мы рассматривали только суждения о конкретных объек-
тах, таких как #$FredsBike. Но, язык CycL, как и всякое исчисление
предикатов первого порядка, позволяет говорить об объектах в общем,
205
не определяя в формуле их конкретные имена. Формулы такого типа
выглядят как высказывания, начинающиеся с «существует объект, для
которого истина формула...» или «для любого объекта выполняется...».
Такие формулы используют так называемые операторы квантифика-
ции уни-
(quantifications). В языке CycL есть два вида квантификации:
версальная квантификация квантификация
(universal quantification) и
существования (existential quantification). Универсальная квантифика-
ция соответствует русским суждениям «для любого» или «для всех», а
квантификация существования— суждениям вида «существует», «най-
дется», «какой-то», «где-то» и т.п.
Язык CycL содержит один оператор универсальной квантифи-
кации (универсальный квантификатор) #$forAll и четыре опера-
тора квантификации существования (квантификатора существова-
ния): #$thereExists, #$thereExistAtLeast, #$thereExistAtMost и
#$thereExistExactly. Рассмотрим эти операторы подробнее.
(#$forAll ?X
(#$implies
(#$owns #$Fred ?X)
(#$objectFoundInLocation ?X #$FredsHouse)))
говорит о том, что для любого объекта в онтологии, собственником ко-
торого является Фред, этот объект должен располагаться в доме Фреда.
(#$forAll ?X
(#$forAll ?Y
(#$implies
(#$and
(#$owns #$Fred ?X)
206
(#$owns #$Fred ?Y))
(#$near ?X ?Y))))
говорит о том, что любые два объекта, находящиеся в собственности
Фреда, должны находиться рядом друг с другом.
Необходимо также отметить, что имена переменных, использующих-
ся в множественной квантификации, не должны совпадать. Иначе го-
воря, не позволяются формулы вида:
(#$forAll ?X
(#$forAll ?X
(#$implies
(#$and
(#$owns #$Fred ?X)
(#$owns #$Fred ?X))
(#$near ?X ?X))))
Свободные переменные
Обычно, если переменная появляется в формуле, то она присутствует в
операторе квантификации, как это было продемонстрировано в приме-
рах выше. Такие переменные называются связанными (bound). Каждая
переменная связана со своим квантификатором и каждый квантифика-
тор связан в точности с одной переменной. Поэтому, применение связан-
ной переменной где-то вне данной формулы бессмысленно. Язык CycL
позволяет использование в формулах свободных(unbound) переменных
(т.е. переменных, которые не связаны ни с каким квантификатором),
но такие переменные все равно трактуются как связанные оператором
универсальной квантификации. Например, формула
(#$implies
(#$owns #$Fred ?X)
(#$objectFoundInLocation ?X #$FredsHouse))
имеет в точности ту же интерпретацию, что и формула
(#$forAll ?X
(#$implies
(#$owns #$Fred ?X)
(#$objectFoundInLocation ?X #$FredsHouse)))
Ввиду того, что формулы со свободными переменными выглядят яс-
нее и проще, оператор #$forAll используется редко. Но, следует иметь
207
в виду, что использование свободных переменных не в условных фор-
мулах, или в условиях, но не в посылке, может привести к непредстка-
зуемым последствиями. Например, формула
(#$implies
(#$owns #$Fred ?WHATEBER)
(#$objectFoundInLocation ?WHATEVER #$FredsHouse))
является истинной для любого объекта в онтологии. Формула, факти-
чески, говорит о том, что любая вещь, собственником которой является
Фред, находится в доме Фреда, а это, конечно, в общем случае неверно.
(#$implies
(#$isa ?A #$Animal)
(#$thereExists ?M
(#$mother ?A ?M)))
Данная формула говорит о том, что всякий экземпляр класса «Жи-
вотное» (#$Animal), должен иметь мать. Представляющий мать объект
может уже иметься в онтологии в качестве константы, а может быть
новым объектом, о котором Cyc еще не знает.
(#$implies
(#$isa ?P #$Person)
(#$thereExistExactly 2 ?LEG
(#$and
(#$isa ?LEG #$Leg)
(#$anatomicalParts ?P ?LEG))))
208
Здесь говориться, что каждая персона имеет в точности две ноги3 .
(#$implies
(#$isa ?T #$Table)
(#$thereExistAtLeast 3 ?LEG
(#$and
(#$isa ?LEG #$Leg)
(#$anatomicalParts ?T ?LEG))))
Данная формула содержит суждение о том, что каждый стол должен
имеет по крайней мере три ноги4 . И, наконец, формула
(#$implies
(#$isa ?P #$Person)
(#$thereExistAtMost 1 ?SPOUSE
(#$spouse ?P ?SPOUSE)))
говорит о том, что каждая персона имеет не более одного супруга5 .
Сколемизация
Хотя, суждения с кванторами существования широко используются в
онтологиях Cyc, при просмотре этих онтологий суждений такого ви-
да не показывается. Это происходит из-за того, что система Cyc авто-
матически преобразовывает каждую формулу, содержащую кванторы
существования в сколемовскую нормальную форму6 . Рассмотрим при-
мер. Формула
3 Это, конечно, не верно в общем случае. Есть люди, которые потеряли ноги
в результате несчастных случаев. Есть также люди, которые родились без ног в
результате генетической аномалии. В последнем случае, конечно, можно еще подис-
кутировать, можно ли называть такую персону человеком.
4 Автору приходилось видеть столы с одной, вкопанной в землю, ногой. Веро-
ятно, количество ног у стола (и вообще, наличие ног), не является существенным
признаком понятия «стол».
5 Это также, конечно, не верно. Особенно, в наш бурный век, стремительно ме-
няющий общественные отношения.
6 Приведение высказываний в сколемовскую нормальную форму необходимо
для работы алгоритма логического вывода методом резолюций (см. [11]). Ско-
лемовская нормальная форма представляет собой суждение, содержащее только
операторы конъюнкции и не содержащее кванторов существования. Существу-
ет алгоритм (см. [11] гл. 4 пар. 4.2) автоматического преобразования любого
суждения в сколемовскую форму. Для перехода формула сначала приводится к
конъюнктивному виду, для чего используются законы Де Моргана. После это-
го, первая переменная, связанная квантором существования, заменяется на неко-
торую константу и все вхождения этой переменной в формуле заменяются на
эту константу. Вхождения второй и последующих связанных квантором существо-
209
(#$implies
(#$isa ?A #$Animal)
(#$thereExists ?M
(#$and (#$mother ?A ?M)
(#$isa ?M #$FemaleAnimal))))
будет преобразована к виду
Составные термы
Составные термы (non-atomic term (NAT)) представляют собой спо-
соб определения терма как функции от других термов. Составной
терм представляет собой функцию, в которой другие термы выступа-
ют в качестве аргументов. Рассмотрим, например, функцию #$FruitFn
(фрукт), которая берет аргумент типа «растение» (plant) и возвраща-
ет класс Фрукт (коллекцию всех фруктов) для переданного объекта
растения. Эту фукнцию можно использовать для определения термов
следующего вида:
(#$FruitFn #$AppleTree)
(#$FruitFn #$PearTree)
(#$FruitFn #$WatermelonPlant)
вания переменных заменяются на функции от тех переменных, которые встре-
тились в исходной формуле до вхождения данной переменной в формулу. На-
пример, формула (∃𝑥)(∀𝑦)(∀𝑧)(∃𝑢)(∀𝑣)(∃𝑤)𝑃 (𝑥, 𝑦, 𝑧, 𝑢, 𝑣, 𝑤) преобразуется к виду
(∀𝑦)(∀𝑧)(∀𝑣)𝑃 (𝑎, 𝑦, 𝑧, 𝑓 (𝑦, 𝑧), 𝑣, 𝑔(𝑦, 𝑧, 𝑣)). Константы и функции, используемые для
замены переменных квантора существования, называются сколемовскими функци-
ями. В языке CycL первое вхождение переменной также заменяется на функцию,
замена на константу не используется.
210
В онтологии может иметься, а может и не иметься, именованная кон-
станта для коллекции фруктов (например, с именем #$Apple (яблоко)
для растения #$AppleTree (яблоневое дерево). Иначе говоря, состав-
ные термы позволяют говорить о типах, даже если таковые не имеют
именованных констант в онтологии.
Составные термы могут использоваться в формулах вместо кон-
стант. Например:
(#$implies
(#$isa ?APPLE (#$FruitFn #$AppleTree))
(#$colorOfObject ?APPLE #$RedColor))
Функции
Ввиду того, что построение составных термов производится с помощью
функций, представляется полезным подробнее ознакомиться с ними.
Также, как и предикаты, большинство функций имеют фиксированное
число аргументов. Можно определять функции с числом аргументов
от одного до пяти. Функции с числом аргументов больше пяти в языке
CycL определять нельзя. В CycL имеются функции с переменным чис-
лом аргументов. Например, функция сложения #$PlusFn имеет пере-
менное число аргументов. Например, составной терм (#$PlusFn 2 3 4)
означает число 9, а (#$PlusFn 12 1)— число 13.
Функции с фиксированным числом аргументов определяются так-
же, как предикаты. Типы аргументов задаются с помощью предика-
тов вида #$arg1Isa, #$arg2Isa и т.д. Если функция имеет нефикси-
рованное число аргументов, то все ее аргументы должны иметь один
и тот же тип, который задается с помощью предиката #$argsIsa.
В отличие от предикатов, функции возвращаются некоторый терм в
качестве результата, тип этого терма задается посредством предика-
та #$resultIsa. Рассмотрим, например, как определяется функция
#$GovernmentFn (правительство):
(#$arity #$GovernmentFn 1)
(#$arg1Isa #$GovernmentFn #$GeopoliticalEntity)
(#$resultIsa #$GovernmentFn #$RegionalGovernment)
Здесь сначала задается число аргументов функции, затем определяют-
ся тип единственного аргумента, как #$GeopoliticalEntity (геополи-
тический субъект) и тип результата как #$RegionalGovernment (реги-
ональное правительство).
211
Функцию #$GovernmentFn можно использовать в любой формуле,
где в качестве параметра выступает тип #$RegionalGovernment. На-
пример, формула
212
(#$isa #$LeftPairMemberFn #$CollectionDenotingFunction)
(#$arity #$LeftPairMemberFn 1)
(#$arg1Isa #$LeftPairMemberFn #$SymmetricalPartType)
(#$resultIsa #$LeftPairMemberFn #$ExistingObjectType)
(#$resultGenl #$LeftPairMemberFn #$LeftObject)
Здесь в качестве родительского класса каждой коллекции, возвраща-
емой функцией #$LeftPairMemberFn, выступает класс #$LeftObject.
Родительские классы следует отличать от типов результата функ-
ции. Любой класс, возвращаемый функцией-экземпляром класса
#$CollectionDenotingFunction, сам является экземпляром класса, за-
данного как тип результата данной функции. В примере выше каж-
дый результат функции #$LeftPairMemberFn есть экземпляр коллек-
ции #$ExistingObjectType.
Напрямую отношения класс-экземпляр и класс-суперкласс задают-
ся предикатами #$isa и #$genls, соответственно. Об отношениях, за-
даваемых на объектах онтологии Cyc, мы поговорим подробно ниже.
Функции материализации
В Cyc часто используются функции-экземпляры класса
#$ReifiableFunction. Каждый раз, когда такая функция вызывается
с новым набором аргументов, в онтологию Cyc добавляется составной
терм, построенный этой функцией с данным набором аргументов, т.е.
составной терм «материализуется» (reified). Материализация означает
резервирование места под данный терм в онтологии Cyc. Позже, если
пользователь пожелает, на это место можно будет сослаться с помощью
константы, но пока для ссылки на терм используется данная функция
с данным набором аргументов.
При материализации терма создается следующее отношение:
213
Первый аргумент— это константа (#$GovernmentFn #$Canada),
выглядящая как составной терм, а второй аргумент
(#$GovernmentFn #$Canada)— это уже составной терм, использу-
щийся для создания данной константы.
Вероятно, требуется некоторое время, чтобы усвоить это раз-
личие. Наверное, лучше сказать проще: для именования состав-
ных термов, материализуемых вызовами функций-экземпляров клас-
са #$ReifiableFunction, система Cyc использует строку, представля-
ющую собой запись составного терма, использованного для материали-
зации.
Материализованный таким образом терм можно потом как-нибудь
назвать. Для этого используется все тот-же предикат #$termOfUnit.
Например,
214
3. Добавить в посылку правила суждение с предикатом #$equals с
тем, чтобы сказать системе Cyc, что данная переменная является
составным термом.
(#$implies
(#$and
(#$equals ?U (#$PreviouslyOwnedFn ?ARG1))
(#$isa ?X ?U))
(#$hasAttributes ?X #$Used))
Суждения
До сих пор описывался исключительно синтаксис языка CycL. Этот
синтаксис может быть использован различными внешними приложени-
ями, чтобы добавлять новые суждения в базу знаний системы Cyc или
отправлять запросы к ее онтологии. Сейчас сосредоточим свое внима-
ние на структуре онтологии Cyc.
Онтология Cyc состоит из большого множества суждений. Когда
формула добавляется в онтологию (это происходит только тогда, ко-
гда формула правильно простроена), то она добавляется как одно или
несколько суждений. С суждениями связаны следующие элементы:
∙ Формулы.
∙ Микротеории.
∙ Истинностные значения.
∙ Направления (directions).
∙ Основания (supports).
Формулы
Формулы представляют собой выражения на формальном языке, ис-
пользующиеся для определения суждений о мире. В этом смысле, фор-
мулы представляют собой аналог повествовательных предложений рус-
ского языка. Правильно построенные формулы в языке CycL называ-
ются Cyc-формулами (CycFormulas). Основным объектом изучения в
разделе, посвященном синтаксису языка CycL, были формулы.
215
Микротеории
Каждое суждение содержится по крайней мере в одной микротеории.
Если это необходимо, суждение может содержаться сразу в несколь-
ких микротеориях. Имеются даже суждения, которые содержаться в
каждой микротеории. Наибольшее число суждения содержится в мик-
ротеории под названием #$BaseKB.
Микротеории являются экземплярами класса #$Microtheory и, как
и между любыми классами онтологии Cyc, между микротеориями мож-
но устанавливать отношения вида класс-подкласс (отношение обоще-
ния в терминологии Cyc). Если суждение принадлежит некоторой мик-
ротеории, то это суждение также должно принадлежать и всем микро-
теориям, представляющим собой подклассы данной микротеории. Мик-
ротеории также называются контекстами . Для детальной информа-
ции о контекстах см. [6].
Истинностные значения
К каждому суждения присоединено истинностное значение, показыва-
ющее «степень истинности» этого суждения. Для выражения степени
истинности суждений в CycL используется пять возможных истинност-
ных значений. Наиболее часто из них используются два:
216
Направления
Направление (direction) представляет собой привязываемое к каждому
суждению значение, которое задает, в каком сорте логического выво-
да данное суждение будет задействовано. Существует три значения для
направления: прямое (forward), обратное (back) и код (code). Процедура
логического вывода задействует суждения с прямыми направлениями,
когда добавляет суждения в базу знаний Cyc, а суждения с обратны-
ми направлениями— - когда строит запросы к базе знаний, причем эти
запросы строятся с помощью процедуры обратного вывода (backward
inference). По умолчанию, все базовые атомарные формулы имеют пря-
мое направление, а правила— обратное.
Суждения, направление для которых имеет значение «код», вообще
не используются в обычных процедурах логического вывода. В системе
Cyc имеется возможность добавлять в систему пользовательские моду-
ли логического вывода— так называемые модули эвристического уров-
ня (heuristic level (HL))10 . Если суждение имеет направление «код», то
оно задействуется только при работе соответствующего модуля.
Основания
Основания (supports) представляют собой один из видов обоснований
(justification) суждения. Обоснования говорят о том, почему
данное
суждение имеет то или иное истинностное значение. В этом смысле,
обоснования похожи на аргументы защиты или обвинения в судебном
процессе. Основания говорят о том, каким образом данное суждение
попало в онтологию. В абсолютном большинстве случаев, основание
суждения имеет значение «локальное» (local), которое показывает, что
данное суждение было добавлено в базу знаний из внешнего источника
(обычно, это KEer11 ). Иногда, основания имеют значения «источник»
(source), показывающее, что суждение было добавлено в онтологию в
результате работы процедуры логического вывода.
(implies
(and
(isa ?afp AdultFemalePerson)
(residesInRegion ?afp Guam))
(and
(acquaintedWith Zippy ?afp)
(likesAsFriend Zippy ?afp)))
В Cyc-10 формулы сохраняются в конъюнктивной нормальной фор-
13
ме . Когда формула добавляется в онтологию Cyc, она автоматически
12 Модус поненс или правило отделения позволяет осуществлять вывод следую-
щим образом: если в онтологии имеются формулы 𝐴 и 𝐴 ⇒ 𝐵 , то в онтологию
также можно добавить и формулу 𝐵 . Модус толленс представляет собой обращение
правила модус поненс: если в онтологии имеются формулы ¬𝐵 (отрицание 𝐵 ) и
𝐴 ⇒ 𝐵 , то можно также добавить и формулу ¬𝐴.
13 Говорят, что формула 𝐹 находится в конъюнктивной нормальной форме, если
она имеет вид 𝐹 = 𝐹1 ∧ 𝐹2 ∧ . . . ∧ 𝐹𝑛 , где каждая из формул 𝐹1 , . . . 𝐹𝑛 представляет
218
преобразуется в конъюнктивную нормальную форму. За это ответстве-
нен специальный модуль— канонизатор
(canonicalizer). Вот, как будет
канонизирована формула из примера выше:
(and
(or
(not (isa ?afp AdultFemalePerson))
(not (residesInRegion ?afp Guam))
(acquaintedWith Zippy ?afp))
(or
(not (isa ?afp AdultFemalePerson))
(not (residesInRegion ?afp Guam))
(likesAsFriend Zippy ?afp)))
Универсальная квантификация в Cyc-10 обрабатывается тривиаль-
ным образом: переменные, связанные с квантором всеобщности, счи-
таются свободными. Как уже говорилось выше, формулы, содержащие
кванторы существования, подвергаются сколемизации. Например, фор-
мула
(forAll ?A
(implies
(isa ?A Animal)
(thereExists ?M
(and
(mother ?A ?M)
(isa ?M FemaleAnimal)))))
сначала будет приведена к виду
(implies
(isa ?A Animal)
(and
(mother ?A (SkolemFunctionFn (?A) ?M))
(isa (SkolemFunctionFn (?A) ?M) FemaleAnimal)))
после чего подвергнется сколемизации. В результате, получим формулу
собой дизъюнкцию литералов (см. [11], стр. 23). Под литералом подразумевается
формула, состоящая из единственного предиката, аргументами которого являются
несоставные термы или их отрицания. Фактически, литералы— это базовые атомар-
ные формулы, только расширенные формулами, где в качестве аргументов могут
выступать отрицания термов. Известно, что любое высказывание можно автомати-
чески преобразовать в конъюнктивную нормальную форму.
219
(and
(or
(not (isa ?A Animal))
(mother ?A (SkolemFunctionFn (?A) ?M)))
(or
(not (isa ?A Animal))
(isa (SkolemFunctionFn (?A) ?M) FemaleAnimal)))
Модуль канонизации автоматически генерирует имя для каждой
сколемовской функции, которую ему необходимо создать во время кано-
низации. Это имя позже может быть заменено пользователем на более
осмысленное. Кроме того, канонизатор также описывает свойства ско-
лемовской функции: местность, типы аргументов— совершенно также,
как в случае обычной функции. Вот, например, как после применения
алгоритма сколемизации (канонизации) будет выглядеть в действитель-
ности формула из примера выше:
(and
(or
(isa SKF-8675309 SkolemFunction))
(or
(arity SKF-8675309 1))
(or
(arg1Isa SKF-8675309 Animal))
(or
(resultIsa SKF-8675309 FemaleAnimal))
(or
(not (isa ?U Animal))
(mother ?U (SKF-8675309 ?U)))
(or
(not (isa ?U Animal))
(isa (SKF-8675309 ?U) FemaleAnimal)))
Модуль канонизации также запоминает порядок литералов в добав-
ляемой формуле. Это необходимо для того, чтобы быстро сравнивать
формулы друг с другом во время логического поиска. Если порядок
литералов зафиксирован, то во время поиска можно сосредоточиться
только на структурном сравнении формул.
220
Логический вывод: введение
Обратный логический вывод (backward inferencing) в Cyc— это тип ло-
гического вывода, инициирующийся операцией ASK14 Обратный вывод
можно представлять как поиск по дереву, где каждый узел дерева— это
формула, для которой проверяется связывание которой с переданными
константами, а ребра между узлами представляют собой трансформа-
цию суждения— объекта проверки.
Поясним сказанное на примере. Предположим, проводится поиск
объектов, на которых истинна формула (likesObject ?x ?y). Эта
формула будет корнем дерева в описанной выше процедуре обратного
логического вывода. Для ответа на запрос необходимо найти суждения,
которые помогут связать переменные ?x и ?y с конкретными объектами.
В онтологии может быть формула вида (likesObject Keith BillM). В
этом случае, будет создан дочерний узел корня дерева— это будет про-
сто константа #$True, т.к. предикат likesObject выполняется на кон-
стантах Keith и BillM. Предположим также, что в онтологии имеется
формула вида
(implies
(possesses ?x ?y)
(likesObject ?x ?y))
Тогда, у корня дерева поиска появится второй узел— формула
(possesses ?x ?y). Процедур обратного вывода рекурсивно запустит-
ся на этом узле. Предположим, что в онтологии имеется формула
(implies
(objectFoundInLocation ?x KeithsHouse)
(possesses Keith ?x))
заключение которой совпадает с обрабатываемым узлом дерева. Тогда,
у узла формулы (possesses ?x ?y) появится дочерний узел с форму-
лой (objectFoundInLocation ?x KeithsHouse), у которой второй па-
раметр связан константой KeithsHouse, т.е. у узла имеется только одна
14 Операция ASK (запрос) в Cyc представляет собой одну из двух базовых опера-
ций с базой знаний. Целью операции ASK является опрос базы знаний на предмет
того, является или нет некоторая формула истинной. Вторая базовая операция,
осуществляемая с онтологией Cyc,— это ASSERT (добавление). Операция ASSERT
обычно используется для добавления в базу знаний новых суждений. При добав-
лении используется прямой логический вывод, в отличие от обратного вывода, ис-
пользуемого в операции ASK.
221
свободная переменная. Это можно интепретироваться следующим об-
разом: мы ищем вещи в доме Кейта, потому что, если каккая-то вещь
находится в доме Кейта, то Кейт будет владельцем это вещи, а значит,
эта вещь будет ему нравиться. Вопрос же о том, что нравится Кейту,
есть частный случай проблемы, поставленной вопросом о выполнимо-
сти формулы (likesObject ?x ?y).
Предположим, что в онтологии также имеется правило
(implies
(and
(isa ?x Agent)
(owns ?x ?y))
(possesses ?x ?y))
тогда в дерево будет добавлен новый узел
(and
(isa ?x Agent)
(owns ?x ?y))
Развертывание дерева, очевидно в любом случае, закончится, когда
в узлах не останется свободных переменных, независимо от того, най-
дутся ли в онтологии суждения, которые могут инициировать создание
дочерних узлов данного узла.
Из рассмотренных примеров видно, что алгоритм логического выво-
да, инициированный операцией ASK, фактически, представляет собой
поиск по дереву. Здесь остаются невыясненными следующие вопросы:
222
в какой-то момент он был прекращен из-за недостатка ресурсов
программной системы.
Весовые эвристики
Здесь рассматриваются правила, которые работают, оценивая каждый
узел-кандидат и выдавая численную меру этой оценки. Оценки всех
таких правил затем суммируются и для обработки выбирается узел с
наименьшей суммой16 .
(and
(isa ?x Agent)
(owns ?x ?y))
Если узел с этой формулой был выбран для обработки, то необходимо
решить, какой литерал надо обрабатывать первым: искать элементы
класса Agent или пары, удовлетворяющие предикату owns.
В Cyc-10 используется следующий подход. Литерал передается на
оценку каждому эвристическому модулю (HL module) системы. Мо-
дуль возвращает численную меры стоимости обработки литерала (чем
выше трудность обработки, тем выше цена). Эти меры суммируются
16В оригинальной документации совокупность всех таких весовых правил срав-
нивается с хором, участниками которого выступают сами правила. Каждому оце-
ниваемому узлу «поется песня» и, чем громче звучат «голоса» правил при оценке
данного узла, тем громче песня. Выбирается узел, песня которого была наименее
громкой.
224
и выбирается литерал с наименьшей ценой. Эта процедура похожа на
рассмотренную выше процедуру выбора узла на основе весовых эври-
стик, только в данном случае выбирается литерал для обработки, а не
дочерний узел.
225
Данную структуру используют все процедуры поиска: поиск в глу-
бину и эвристический поиск. Для каждой конкретной процедуры поис-
ка поля структуры заполняются конкретными функциями и процедура
поиска параметризуется.
Узлы поиска
В Cyc-10, каждый узел поиска представлен специальной структурой со
следующими полями:
ASK и направления
Как уже говорилось выше, процедуры ASK и ASSERT используют на-
правления (directions) для управления доступом к суждениям во время
логического вывода. Направления могут иметь два значения: прямое
(forward) и обратное (backward). Суждения с прямыми направлениями
226
используются в процедурах ASSERT, а суждения с обратными направ-
лениями— в процедурах ASK.
Обратные базовые атомарные формулы не задействуются во время
добавления суждений в онтологию Cyc, т.е. в процедурах ASSERT. Пря-
мой вывод использует только правила и базовые атомарные формулы с
прямым направлением. Большинство интерфейсов, используемых для
добавления суждений в базу знаний Cyc, по умолчанию полагают, что
каждое правило (формула импликации) имеет обратное направление, а
базовая атомарная формула— прямое.
Эквивалентность
Эквивалентность используется в процедуре унификации. В онтологии
Cyc сравнение элементов основано на положении об уникальности их
имен: элементы с разными именами считаются различными, а элемен-
ты с совпадающими именами— эквивалентными. Кроме того, эквива-
лентными считаются те элементы, о равенстве которых явно сказано в
онтологии. Равенство элементов задается с помощью предиката equals,
например: (equals Fred Joe) задает равенство констант Fred и Joe17 .
Во время унификации не производится никаких процедур вывода, от-
носящихся к проверке эквивалентности элементов.
228
друг от друга секторами. Если пользователь кликнет на такой сектор
левой кнопкой мыши, то в окне пирамиды будет выведена информа-
ция об элементе онтологии. Окно приложения разделено на три части.
В центральной части находится интерактивный рисунок пирамиды он-
тологии. В левой части выводится имя элемента онтологии. В нижней
части выводится описание этого элемента. Элементы онтологии разде-
лены на уровни, каждый из которых выделен своим цветом. По мере
обретения конкретики, т.е. спуска (подъема?) по дереву таксономии,
цвет уровней меняет от светло-серого к более темным тонам. Специфи-
ческие для описаний конкретных знаний понятия уже выделены тем-
но-синим цветом. Ниже мы рассмотрим большую часть пирамиды в
подробностях.
Более привычный взгляд на онтологию дается на рисунке 5.2. На
этом рисунке онтологию изображен в виде направленного (хотя направ-
ления ребер не указаны на рисунке, подразумевается, что у каждого
ребра имеется направление, от суперкласса к дочернему классу) ацик-
лического графа.
229
Светло-серый уровень
На этом уровне располагаются самые абстрактные понятия, которые
еще не имеют пространственной и временной протяженности. Рассмот-
рим их.
Понятие Объект (Thing) представляет собой корень дерева таксо-
номии системы Cyc. Каждый элемент онтологии имеет класс Объект
в качестве суперкласса. Поэтому, можно сказать, что каждый элемент
онтологии системы Cyc есть Объект. С точки зрения реализации, поня-
тие Объект представляет собой структуру, содержащую информацию,
позволяющую:
230
больше суждений, тем лучше». Создатель системы Дуглас Ленат из-
вестен своим высказыванием: «интеллект— это десять миллионов суж-
дений». Язык CycL представляет собой язык исчисления логики пре-
дикатов первого порядка, но содержит также и много возможностей,
относящихся к языку второго порядка. В частности, отношения так-
же можно связывать друг с другом другими отношениями, что, поми-
мо всего прочего, позволяет системе автоматически обучаться. Когда
в систему добавляется факт о том, что автомобиль X имеет подушку
безопасности, то система Cyc уже знает, что автомобиль X содержит
подушку безопасности, а также все ее составные элементы, внутри ав-
томобиля. Это происходит в результате уже имеющихся связей между
отношениями Содержать Быть Частью Внутри
, и .
Класс Множество(Set) представляет собой прямой аналог понятия
Коллекции
математического множества. В отличие от , элементы мно-
жества не обязательно связаны между собой какими-то общими свой-
ствами. Единственное общее свойство таких элементов— это то, что они
принадлежат данному множеству.
Класс Коллекция(Collection) представляет собой прямой аналог
рассматривавшегося нами в первой главе понятия типа. Все элемен-
ты коллекции имеют нечто общее и это общее выражается посредством
одних и тех же атрибутов. Как уже говорилось выше, главным отли-
чием Коллекций и Множеств от Индивидов является то, что послед-
ние не могут иметь элементов. Коллекции отличаются от Множеств
еще и тем, что могут иметь несколько «воплощений» одновременно,
т.е. могут иметься два экземпляра класса Коллекция, имеющих одни
и те же элементы, но они все равно будут рассматриваться, как раз-
личные. Множества считаются идентичными, если они содержат одни
и те же элементы. Вообще, хорошей коллекцией считается такая, кото-
рую трудно или вообще невозможно определить простым перечислени-
ем элементов. Например, коллекция всех белых автомобилей не очень
хороший пример для создания, так как это понятие легко определить
посредством других элементов системы Cyc и, следовательно, само по-
нятие не очень информативно. С другой стороны, коллекция всех «бе-
лых воротничков»18 очень трудно определима простым перечислением
элементов, поэтому об этом понятии можно многое сказать.
Класс Путь
(Path) представляет собой непересекающийся путь или
цикл. Пути могут представлять пространственно-временные абстрак-
ции (ребра между узлами в графах), нематериальные абстракции рас-
положений (линии географической широты) или вполне конкретные ли-
18 Так называют сословие офисных работников.
231
нии (разделительная полоса на автомобильной трассе). Иначе говоря,
путь может быть всем, что используется как путь в данной системе. На-
пример, апельсин, вообще говоря, это не путь. Но он может стать путем
для муравья в системе управления путями муравьев посредством апель-
синов. Заметим также, что Путь не обязательно является индивидом,
т.к. ничто не мешает использовать множества или коллекции в качестве
путей в специфических системах. Основное разделение путей— это так
называемый Простой Путь (Simple Path), представляющий незамкну-
тые кривые, и Циклический Путь (Cyclic Path), представляющий все
замкнутые контуры.
Хотя понятие Логика (Logic) и не является классом (collection) в он-
тологии Cyc, это понятие является в ней фундаментальным. На логи-
ческих заключениях строятся элемента базы знаний Cyc— так называе-
мые суждения. Вероятно, поэтому авторы поместили описание связан-
ных с логикой понятий на светло-серый уровень. Эти понятия мы уже
подробно рассматривали выше, поэтому нет необходимости повторять
описание здесь. Скажем кратко: в Cyc имеют две логические констан-
ты Истина и Ложь. Суждения строятся из констант и других суждений
с помощью логических связок— операторов конъюнкции, дизъюнкции,
отрицания и импликации. Если суждение выполняется на каком-то на-
боре своих констант, то на нем это суждение считается истинным, в
противном случае— ложным. Кроме того, в Cyc также реализована про-
цедура логического вывода, в деталях описанная выше.
Математические понятия (Mathematical (or computational)
things), не связанные с понятиями нижних уровней (пространственны-
ми, временным или материальными), также располагаются на этом
уровне. Среди таких понятий находятся числа, множества, алгоритмы,
абстрактные символьные строки и т.п.
Умеренно-серый уровень
На этом уровне располагаются понятия, связанные с пространствен-
ными и временными соотношениями, а также связанные с понятием
материи. Некоторые понятия заданы в онтологии Cyc в виде классов
(collections), другие представляют собой целые группы понятий, объ-
единенных сходными признаками. Рассмотрим их.
Класс Пространственный Объект (Spatial Thing) содержит в себе
все понятия, связанные с протяженностью и местоположением. Когда
вводятся понятия этого класса, необходимо обращать внимание на две
вещи. Во-первых, объект класс Пространственный Класс может быть
частично материальным (например, Ленинградская область) или во-
232
все нематериальными (окружность на плоскости). Во-вторых, совсем
необязательно определять местоположение этого объекта относительно
других пространственных объектов, хотя это и можно делать. Дело в
том, что не всякий пространственный объект имеет местоположение.
Например, отрезок на плоскости как геометрическое понятие не имеет
местоположения.
Класс Пространственный Путь (Spatial Path) представляет пути
в пространстве, связывающие пространственные объекты. В качестве
примером пространственных путей можно привести дорогу, коридор,
проволоку, кровяные сосуды и нервы. Следует иметь ввиду, что аб-
страктные пути, такие как генеалогическое древо, не являются Про-
странственными Путями.
Класс Рамка (Border) содержит такие понятия, как линии, отрезки,
плоскости или пространственные области, которые служат границами
(формируют рамки) между двумя Пространственными объектами.
Класс Перемещение (Movement) представляет собой событие, за-
ключающееся в пространственном перемещении. Перемещение может
происходить вдоль некоторого пути, т.е. объект, в этом случае, преодо-
левает некоторую дистанцию, или быть поворотом объекта вдоль неко-
торой оси. Перемещение может быть непрерывным или периодическим.
В качестве примеров перемещений можно привести полет на самолете (с
промежуточными посадками), поедание пищи или электрический ток.
Класс Артефакт (Artifact) представляет собой неодушевленные ве-
щи, произведенные агентами специально для каких-то целей. Для со-
здания артефакта не обязательно создавать для него новый материал,
агент может создать артефакт просто переделав другие вещи. В ка-
честве примеров артефактов можно привести флейту, сделанную из
ветвей дерева, или монету, сделанную из металла путем тиснения. Вдо-
бавок к человеческим артефактам (инструментам, зданиями, докумен-
тами, линиям электропередач) к таковым можно отнести и артефакты,
сделанные животными (гнезда, термитники, бобровые плотины).
В системе Cyc используется более 37 тысяч различных типов Собы-
тий (Events). События используются для описания того, что случилось
в мире. Общие события включаются в себе пение, делание покупок,
мышление (рассматриваемое как событие вида «мыслить что-то») и т.п.
Индивидуальным событием может быть, например, «полет Гагарина в
космос» или «начало Великой Отечественной Войны».
Сценарий (Script) представляет собой описание сложного события,
состоящего из подсобытий, связанных между собой временными отно-
шениями. Приложения могут использовать сценарии для распознава-
ние того, что данное событие является частью более сложного события,
233
описываемого данным сценарием. Сценарии также можно использовать
для планирования и для осуществления процесса чтения.
Класс Временный Объект (Temporal Thing) представляет объекты,
имеющие временную протяженность или расположение во времени. К
объектам этого типа применим вопрос «когда?». Таким образом, к вре-
менным объектам можно отнести множество вещей, например, события,
физические объекты, соглашения, временные интервалы и т.д. Объек-
ты, не имеющие свойства временности, такие как математические мно-
жества, атрибуты или числа, очевидно не являются Временными Объ-
ектами.
Темно-серый уровень
На этом уровне расположены объекты, либо имеющие материальное во-
площение, либо взаимодействующие с такими объектами. Рассмотрим
элементы этого уровня подробнее.
Класс Физический Объект (Physical Object) представляет все объ-
екты, которые состоят из материи и существуют во времени (т.е. к та-
ким объектам можно применять временные категории: когда появился,
как изменился и т.п.). Такие объекты могут содержать, а могут и не со-
держать, нематериальные элементы. Например, конкретный экземпляр
книги представляет собой физический объект, т.к. сделан из материи и
имеет пространственную и временную протяженность (размеры и год
издания). Но, этот объект также имеет содержание, т.е. смысл текста,
напечатанного на страницах этой книги. Содержание, очевидно, явля-
ется нематериальным объектом.
Материалы (Materials) используются для выделение из неодушев-
ленного объекта другого неодушевленного объекта, который был ис-
пользован для создания первого объекта. Материал можно рассматри-
вать, как связь между индивидуальным объектом, который частично
состоит из другого объекта, и этим объектом, который, в свою очередь,
более или менее равномерно распределен в первом объекте. Например,
ложка сахара, растворенная в стакане чая, становится материалом для
этого напитка.
Части (Parts) рассматриваются как связи индивидами и их состав-
ляющими. Составляющие здесь понимаются в широком контексте. Это
могут быть, например, пространственные составляющие, временные со-
ставляющие, понятийные составляющие, члены группы и т.п. Части
используются, чтобы сказать, что некоторый объект является, в неко-
тором смысле, частью целого. В онтологии Cyc наиболее часто исполь-
зуются такие части, как физические составляющие, подсобытия, вре-
234
менные отрезки и члены групп.
Класс Статическая Ситуация (Static Situation) является подклас-
сом класса Временная Ситуация (Temporal Situation). Каждая стати-
ческая ситуация представляет собой состояние некоторой связи между
двумя и более объектами, статично существующими на некотором вре-
менном промежутке. Статические ситуации всегда имеют временную
протяженность и часто имеют пространственную протяженность и ма-
териальное воплощение. Например, рассмотрим ситуацию: «Президент
Дмитрий Анатольевич Медведев сидит на стуле 22 августа 2009 года».
Здесь есть два объекта: «Дмитрий Анатольевич Медведев» и «стул», а
также множество связей между этими объектами: «спинка стула под-
держивает спину Президента», «сидение стула реагирует на вес Прези-
дента» и т.д.
Изменения Физических Состояний (Physical State Changes) и
Трансформирующие События (Metamorphosis Events) и другие события
подобного рода можно рассматривать, как изменения, выражающиеся
в том, что нечто перестает существовать и другое нечто начинает.
Класс Физический Агент (Physical Agent) представляет объекты,
которые существуют и, по меньшей мере, имеют материальное вопло-
щение. Каждый Физический Агент имеет желания и намерения, а так-
же возможности эти желания и намерения осуществить. Агенты могут
быть индивидуальными или состоять из нескольких агентов, действу-
ющих вместе.
План (plan)— это последовательность шагов, которая, будучи испол-
нена в должном временном порядке, приведет к достижению некоторой
цели или к осуществлению некоторой задачи.
Цели (goals). В системе Cyc цели представляют собой характеристи-
ки отношений между агентами и формулами, описывающими состояния
вещей, для достижения которых эти агенты намереваются предпринять
определенные шаги. Также, цель можно рассматривать как атрибут от-
ношения между агентом и статической ситуацией, описываемой неко-
торой Cyc формулой.
Актеры (Actors) представляют собой вид отношения между собы-
тием и любым существующим объектом, который каким-либо образом
вовлечен в это событие. Иначе говоря, когда говорят, что кто-то или
что-то является действующим лицом (актером) данного события, под-
разумевается, что этот кто-то или что-то как-то вовлекается в данное
событие в течении его протекания. При этом, следует заметить, что
актер не всегда играет активную роль в событии. Примером может
служить «чеховское ружье», которое, если уж висит на стене на протя-
жении действия, то обязательно должно выстрелить в конце спектакля.
235
Действия (actions) представляют собой события, которые осуществ-
ляются некоторым действующим лицом. Действия— это события, в ко-
торых один или более актеров производят некоторые изменения в со-
стоянии мира, обычно выражающиеся в некоторой трате усилий. При
этом, необязательно, чтобы в результате произошли какие-то матери-
альные изменения (перемещение объектов или их разрушение). Напри-
мер, действие может заключаться в изменении счета клиента в банке.
Также, актер не обязательно должен быть одушевленным объектом.
Например, авария газопровода на Озерной улице в Москве в 2009 году,
когда огнем горящего газа было повреждено множество автомобилей
(здесь актером является газовый факел).
Класс Агент (Agent) представляет объекты, которые имеют же-
лания и намерения, а также возможности эти желания и намерения
осуществить. Агенты могут быть индивидуальными или состоять из
нескольких агентов, действующих вместе.
Фиолетовый уровень
На этом уровне находятся знания, которые у человека обычно рассмат-
риваются как его знания об окружающем мире, т.е. о различных его ас-
пектах. Среди таких знаний есть знания о солнечной системе, ее устрой-
стве, количестве планет и т.д. Есть знания о дальнем космосе, т.е. о
звездах галактиках и других подобных объектах, эти знания объедине-
ны в раздел «астрономия». Человек имеет понятие об окружающих его
предметах, поэтому и в Cyc есть специальный класс Физический Ар-
тефакт (Physical Artifact), которому принадлежит великое множество
объектов нашего мира. Знания о структуре веществ объединены в раз-
дел «Химия». В этом разделе есть подразделы вида «Аналитическая
Химимя», «Вычислительная Химия», «Электрохимия» и т.д. Знания
о континентах, морях и океанах объединены в раздел под названием
«Естественная География», а знания о геополитическом устройстве ми-
ра— в раздел «Политичесая География». Элементы политической кар-
ты мира— это нации, правительства и геополитические объекты (груп-
пы лиц, контролирующих тот или иной регион). Имеются также знания
о различного рода организациях, их типах, а также о коммерческих и
военных организациях. Система Cyc также знает о живых организмах
в общем (так называемые Living Things), а также о конкретных расте-
ниях и животных. Имеются знания об экологии, социальном поведении
и законе.
236
Синий, умеренно-синий и темно-синий уровни
На синем уровне также как и на фиолетовом уровне, находятся знания
о различных сторонах окружающего мира, но уже более конкретные.
Например, один из разделов посвящен описанию автомобилей, зданий
и оружия, т.е. содержит описание знаний о конкретной стороне челове-
ческой жизни. Другой подобный раздел— это знания о промышленных
продуктах и о различных механизмах. На этом уровне также находят-
ся знания о языках, литературе и других областях искусства. На синем
уровне также находятся знания, связанные с различными областями
общественной деятельности. Это знания о структуре общества, а так-
же конкретные знания об элементах этой структуры. Например, име-
ются знания о спорте, продаже и торговле, путешествиях, профессиях,
политике и войнах и т.п.
На умеренно-синем уровне находятся знания о специфических об-
ластях человеческой деятельности. К таким знаниям можно отнести
здравоохранение, компьютерную безопасность, знания о некоторых ти-
пах химических реакций и т.п.
На темно-синем уровне находятся конкретные факты и знания. Это,
обычно, те знания, которые записываются в таблицах баз данных. Но,
в отличие от баз данных, конкретные знания в Cyc соединены с по-
нятиями верхнего уровня. Например, в системе Cyc имеются знания
о нескольких сотнях известных музыкантов. Система Cyc знает при-
мерно 85 вещей из тех, которые знают музыканты. Поэтому, например,
«Владимир Спиваков» это не просто запись в таблице, Cyc знает, что
Спиваков играет на скрипке, руководить ансамблем «Виртуозы Моск-
вы» и т.д. Вообще, в системе Cyc имеется возможность присоединять
существующие базы данных к системе. Идентифицируя столбцы таб-
лицы с понятиями онтологии Cyc, можно встроить базу данных в базу
знаний системы Cyc. Тогда, записи таблиц будут интерпретироваться
системой Cyc как суждения и будет иметься возможность задавать к
базе данных вопросы, делать выводы на основе фактов, расположенных
в этих базах данных и т.п.
237
5.5 Проект OpenCyc
238
предоставляемые этим сервером. Подробные инструкции по установ-
ке сервера даны на сайте проекта, поэтому здесь мы подобным вещам
уделять внимания не будем.
После установки, пользователь может перейти на начальную стра-
ницу Web-сервера, которая выглядит, как изображено на рисунке 5.3
239
имена, имеющие в качестве начала введенную строку. Кноп-
ка «Show» (Показ) используется для показа констант, имена
которых полностью совпадают с введенным в поле именем
(обычно, такие имена вводятся на английском языке и по-
иск ведется в комментариях к константам. Например, поль-
зователь может ввести строку «William Jefferson Clinton»,
а в результате в панели индекса будет показана константа
$#BillClinton). И, наконец, кнопка «Grep» позволяет ис-
пользовать в поиске регулярные выражения, как это дела-
ется в известной поисковой утилите grep операционной си-
стемы UNIX. Кроме того, кнопку «Clear» (Очистить) можно
использовать для очистки поля ввода.
b) Перейти на страницы браузера, предоставляющие дополни-
тельную функциональность, используя для этого гиперссыл-
ки «Tools» (Инструменты) и «Navigation» (Переход).
c) Войти в систему под другим именем пользователя. Это мож-
но сделать через гиперссылку «Login» (Вход).
240
4. Панель Системной Информации (Systems Information Frame)
предоставляет пользователю информацию о текущем состоянии
системы Cyc. Эту информацию можно обновить нажав на гиперс-
сылке «Update» (Обновить). Системная информацию включает,
гдавным образом, информацию о тех операциях, которые в дан-
ный момент осуществляются в системе.
Операция ASK
Браузер базы знаний позволяет задавать системе Cyc вопросы, т.е. за-
пускать операции логического вывода. Для этого, необходимо кликнуть
на гиперссылке «Ask» в панели инструментов. В результате будет вы-
ведена страница запроса к онтологии OpenCyc, вид которой показан на
рисунке 5.4.
241
кнопку «Cyclify» (сделать совместимыми с языком CycL) и имена будут
дополнены префиксом «$#». Сам запрос может быть выполнен нажа-
тием на кнопку «Ask query» (Выполнить запрос).
242
5.6 Список литературы
12. Хювёнен Э., Септянен И. Мир Лиспа. Том 1. Введение в язык Лисп
и функциональное программирование. М.: Мир, 1990.
13. Davidson C. Common Sense and the Computer. New Scientist. April
2, 1994.
14. Guha R., Lenat D., Pittman K., Pratt D., Shepherd M. Cyc: a midterm
report. Communications of the ACM, August 1990/ Vol 33. No 8.
15. Lenat D., Guha R. Building Large Knowledge Based Systems. Addison
Wesley, Reading Mass, 1990.
243
17. Lenat D. Steps to Sharing Knowledge. In Toward Very Large
Knowledge Bases. Edited by N.J.I. Mars. IOS Press, 1995.
244
Послесловие
245
ний, но и как необходимый компонент построения любой информаци-
онной системы, функциональное предназначение которой не связано
непосредственным образом с задачей обработки знаний .
Почти во всех рассмотренных в книге информационных системах
построение онтологий базировалось на одной теоретической базе, а
именно: исчислении предикатов . В основном, онтологии представля-
ли собой множества высказываний, задаваемых предикатными выра-
жениями, на которые налагались те или иные ограничения в виде спе-
цифических аксиом. Предикатные выражения задавали факты об опи-
сываемом мире, т.е. язык исчисления предикатов, используемый для
описания знаний, являлся языком первого порядка. Резюмируя, можно
сказать, что традиционный и наиболее часто используемый в настоя-
щее время подход базируется на представлении онтологии посредством
языка исчисления предикатов первого порядка, в который часто до-
бавляются некоторые элементы второго порядка. Так, в языке OWL
можно указать некоторые характеристики свойств (предикатов), такие
как транзитивность или функциональность. Использование возможно-
стей языков второго и высшего порядков строго ограничено, что вы-
звано необходимостью обеспечить достаточно четкое описание знаний
и достаточно быстрые процедуры логического вывода на основе этих
знаний.
Исчисление предикатов представляет собой хорошо изученную об-
ласть, поэтому вполне естественно, что большинство реализаций проек-
тов построения библиотек онтологий использует этот формализм. Но,
кроме исчисления предикатов, имеются и другие подходы к описанию
знаний. Так, в последнее время приобрел популярность алгебраический
подход к описанию знаний. На основе этого подхода создаются систе-
мы построения библиотек онтологий, которые не были здесь описаны
ввиду недостатка места, а также, главным образом, ввиду их недоста-
точной апробированности. В алгебраическом подходе знания представ-
ляются в виде множеств выражений специального вида— термов . На
вид термов налагаются ограничения посредством аксиом эквивалент-
ности. На множествах термов можно производить вычисления , отвечая
тем самым на различные вопросы к онтологии и порождая в процессе
вычислений новые знания. Описание алгебраического подхода к пред-
ставлению знаний требует, наверное, отдельной главы.
Знания представляют собой социальный феномен. Знания возни-
кают как результат договоренностей между людьми, т.е. формируют-
ся коллективно. Эта особенность коллективного формирования знаний
должна быть отражена в инструментах, предоставляемых пользовате-
лям системой построения библиотек онтологий. Конечно, существую-
246
щие системы, в особенности те, для создания которых привлекались
достаточно большие коллективы разработчиков, должны были реали-
зовать подобные инструменты. Но, специальным образом процесс кол-
лективного формирования онтологий не изучался. Для описания ме-
тодов и подходов, которые необходимо использовать для построения
систем, предоставляющих инструменты для коллективного формиро-
вания онтологий, необходима отдельная глава.
Системы построения библиотек онтологий обычно представляют
для описания знаний формальные языки, которые достаточно слож-
ны для изучения и реализации. Для того, чтобы иметь возможность
полноценно описывать знания в библиотеке онтологий, пользователь
должен изучить язык, на котором эти знания задаются в системе, а
также принципы, на основе которых эти знания формируются в дан-
ной системе. Это довольно трудоемкий процесс. Большое количество
затруднений вызвано тем, что язык, на котором описываются знания,
в недостаточной мере синтаксически гибок для удобного выражения
онтологических фактов. В повседневной жизни для выражения новых
фактов люди изменяют синтаксис и лексику языка, с тем чтобы удобно
описывать новые знания. В этом смысле, язык повседневного общения
открыт . Реализация открытого языка описания знаний является до-
статочно трудоемкой задачей, решение которой требует специального
изучения и применения специфических методов, как синтаксического
анализа, так и специальных подходов к моделированию таких попол-
няющихся знаний. Очевидно, что для полноценного описания возника-
ющих проблем требуется специальная глава.
Таким образом, еще остается множество вопросов, на которые в дан-
ной книге не было дано ответа. Можно сказать, что данная книга по-
крывает проблематику, отражающую современное состояние дел в об-
ласти построения библиотек онтологий. Вопросы, касающиеся развития
существующих идей в данной области здесь не обсуждались. Автор на-
деется, что труд, посвященный описанию этих проблем, вскоре будет
написан.
247