Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектирование онтологий в среде Protégé.doc
Скачиваний:
162
Добавлен:
19.11.2018
Размер:
4.7 Mб
Скачать

2. 3. Создание онтологии предметной области в Protégé

Перейдем к созданию онтологии предметной области «Мир животных».

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

Нажимаем New Project и в открывшемся диалоговом окне выбираем формат проекта Protégé Files.

При выборе Protégé Files информация об интерфейсе Protégé сохраняется в файле с расширением pprj (Protégé project). Кроме pprj-файла Protégé сохраняет внутри еще два файла. В этих файлах содержится дополнительная информация об онтологии и экземплярах проекта. При открытии pprj-файла, Protégé автоматически загружает эти файлы. По умолчанию дополнительные файлы сохраняются в текстовом формате:

  • Текстовый файл с расширением pont (Protégé ontology), в котором содержится информация о классах и слотах.

  • Текстовый файл с расширением pins (Protégé instances), в котором содержится информация об экземплярах.

Нажимаем на Finish

Откроется окно Protégé и появятся стандартные вкладки. Будет создана пустая база знаний, содержащая системные классы с корнем в классе :THING.

Окно Protégé содержит пять стандартных вкладок: Classes, Slots, Forms, Instances, Queries. Подробнее о каждой из них расскажем по ходу создания онтологии.

Итак теперь все готово для создания классов. Для этого на вкладке Classes в CLASS BROWSER кликнем на SYSTEM-CLASS правой кнопкой мыши и в контекстном меню выберем Create Class. В результате будет создан класс Project_Class_0

Для редактирования класса служит панель CLASS EDITOR.

Ее можно использовать для определения и редактирования атрибутов класса, выбранного на панели отношений классов. В CLASS EDITOR имеется 6 отдельных областей:

1. Иконки примечаний позволяют добавлять и удалять примечания.

2. Поле Name позволяют ввести имя класса. К именам классов применяются следующие правила:

  • Имя должно быть уникальным именем в базе знаний.

  • В именах классов различается регистр букв.

3. Меню Role позволяет выбрать, каким будет класс – конкретным или абстрактным. Конкретные классы могут иметь непосредственные экземпляры, абстрактные классы - не могут.

4. Панель Constraints позволяет создавать, редактировать, добавлять и удалять ограничения класса.

5. Панель Documentation позволяет добавлять простые текстовые примечания для пояснения класса.

6. Панель Template Slots позволяет просматривать информацию о слотах класса.

Введем в поле Name «Животные». На панели редактирования класса менять ничего не будем. Приступим к созданию, согласно классификации определенной ранее, подклассов класса «Животные». Для этого нажимаем правой кнопкой мыши на класс «Животные» и в контекстном меню выбираем Create Class. В результате будет создан подкласс класса «Животные». Присвоим подклассу имя «Простейшие», создадим таким же образом подкласс «Многоклеточные». В результате получим:

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

Полученная нами иерархия представляет отношения между классами в предметной области. Иерархия классов представляет отношение “is-a” (более подробно см. 1. 2.): класс А – это подкласс В, если каждый экземпляр В также является экземпляром А. Например, «Млекопитающие» – подкласс класса «Черепные». Другой способ подхода к таксономическому отношению – это отношение “kind-of”: «Млекопитающие» – вид «Черепных». Подкласс класса представляет понятие, которое является «разновидностью» понятия, представляемого надклассом. Заметим также что отношение подкласса транзитивно: Если В – это подкласс А, а С – подкласс В, то С – подкласс А

Например, мы определили класс «Животные», а потом определить класс «Многоклеточные» как подкласс класса «Животные». Затем определяем класс «Позвоночные» как подкласс класса «Многоклеточные». Транзитивность отношения подкласса означает, что класс «Позвоночные» также является подклассом класса «Животные».

Перейдем теперь к созданию свойств классов - слотов. Создавать и редактировать их в Protégé можно на вкладке Slots. Окно состоит из 3 панелей:

1. Панель Slots в левом верхнем углу показывает все слоты в проекте и позволяет редактировать существующие слоты, создавать новые слоты, просматривать обратные ссылки для слотов и удалять слоты.

2. Панель SUPERSLOT на вкладке Slots в левом нижнем углу показывает слот, к которому прикреплен выделенный слот. Это окно только для просмотра.

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

Форма Слота для выбранного слота отображается на Панели SLOT EDITOR в правой части вкладки Slots.

Форма Слота отображает следующую информацию о слоте:

1. Иконки Примечаний, которые позволяют Вам добавлять примечания.

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

3. Тип Значения (Value Type) слота. Тип слота определяет то, какие значения может иметь слот. Возможные типы приведены в следующей таблице:

Тип

Описание

Примеры

Any

Любой из типов, описанных ниже (логическое объединение)

Boolean

Логическое значение

True, False

Class

Класс в базе знаний

«Млекопитающие»

Float

Число с десятичной запятой

1.0, 3.4e10, -0.3e-3

Instance

Экземпляр класса в базе знаний

Белый медведь

Integer

Целое число

1, 2, -4

String

Строка символов алфавита, включая пробелы

"Белый медведь"

Symbol

Список значений, которые не содержат пробелы

Море, океан, река

4. Мощность (Cardinality) слота.

5. Минимальное и Максимальное значения слота. Эти поля значимы только для отдельных типов слотов.

6. Пояснения, которые были введены в слот.

7. Обратные Слоты (Inverse Slots) для слота.

8. Шаблонные Значения (Template Values), которые были определены для слота.

9. Значения по Умолчанию (Defaults), которые были определены для слота.

10. Domains в данной панели указывается к какому классу прикреплен данный слот.

Для отдельных типов значения под панелью Value Type появляется дополнительная панель:

1. Для типа Class появляется панель Allowed Parents (Разрешенные Родители).

2. Для типа Instance появляется панель Allowed Classes (Разрешенные Классы).

3. Для типа Symbol появляется панель Allowed Symbols (Разрешенные Символы).

Создадим слоты согласно выделенных нами ранее свойств. Для этого на панели SLOT BROWSER нажимаем на иконку

Будет создан слот jiv2_Slot_0. Далее перейдем на вкладку Slot Editor для редактирования слота. В поле Name введем название слота «Вид», тип значения определим как String, в поле пояснения введем «Слот содержит информацию о названии представителя животного мира», в поле шаблонного значения введем «Введите название», в поле мощности слота галочку поставим на «required» а в at least поставим 1. Под этим подразумеваем, что слот должен иметь одно и только одно значение. Вообще в поле required/at least устанавливается минимальное число значений слота. Обычно at least устанавливают в 1, что требует значения для слота. Например, установка at least равным 1 и at most равным 1 означает, что у слота может быть только одно значение. Если ввести значение для at least, то автоматически будет выбрано required (требуется). Если установить at least больше, чем 1, то автоматически будет выбрано multiple. Multiple/at most означает, что слот может иметь множественные значения, но существует предел числу значений. Если установить at most большим 1, то автоматически будет выбрано multiple. Multiple без значения at most означает, что значение слота может содержать любое число элементов. multiple хранятся в виде списка; возможны идентичные значения, хотя они редко используются.

Остальные поля оставим без изменения. Создадим далее слоты с именами:

Длина

Высота

Среда обитания

Численность

Период беременности

Угроза исчезновению

Продолжительность жизни

Привычки

Пища

Количество детенышей

Масса

Родственные виды

Наличие хвоста

Область обитания

При редактировании слотов после их создания необходимо помнить об ограничениях на значение, которые может принимать слот. Так, например масса не может быть числом отрицательным, поэтому в поле Minimum введем значение «0». Это подразумевает, что значение слота «Масса» будет больше 0. Для того чтобы слот «Угроза исчезновения» принимал значение True или False, необходимо тип значения установить Boolean. В значение по умолчанию поставим False. Для слота «Среда обитания» выберем тип Symbol. После этого на панели редактирования слота появится дополнительное поле Allowed Values, куда введем несколько возможных значений слота.

Интересен слот «Область обитания». Мы могли бы определить его тип как строковый, и каждый раз при заполнении вводить область обитания. Однако было бы удобно не вводить каждый раз значение заново, а выбирать из списка. Вариант с типом Symbol не подходит, поскольку областей обитания довольного много, и к тому же, значения типа Symbol не содержат пробелы. Поэтому воспользуемся типом Class. Это подразумевает, что значением слота будет класс из нашей онтологии. Но в ней нет классов областей обитания – создадим их. Для этого вернемся на вкладку Classes и на панели CLASS BROWSER кликнем на SYSTEM-CLASS правой кнопкой мыши и в контекстном меню выберем Create Class. Назовем созданный класс «Области обитания». Теперь перейдем к созданию подклассов, разумно создать также иерархическую структуру. Так, например, создав класс «Европа» (который, естественно, является подклассом класса «Области обитания») мы можем создать его подклассы: Северная Европа, Западная Европа, Восточная Европа и т. д. Процесс конкретизации может продолжаться далее: Восточная Европа, к примеру, также может содержать подклассы.

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

Вернемся теперь к слоту «Область обитания». После выбора типа значения Class отобразится дополнительное окно Allowed Classes, в котором выберем класс «Области обитания».

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

Итак, после создания слотов необходимо добавить их к классам. Вернемся на вкладку Classes выделим класс «Животные» и перейдем на панель Template Slots. В правом верхнем углу этой панели нажмем на кнопку Add Slot.

Отобразится окно Select Template Slots.

Выберем слот «Вид» и нажмем Ok. В результате слот отобразится на панели Template Slots – слот «Вид» прикреплен к классу «Животные»

Продолжим добавление слотов. К классу «Животные» добавим следующие: Исчезающий вид, Область обитания, Среда обитания, Численность. Теперь все подклассы класса «Животные» наследуют данные слоты. Перейдем к классу «Млекопитающие». На панели Template Slots отображены слоты, которые класс наследует от класса родителя «Животные». На это указывает иконка . Добавим тем же способом оставшиеся слоты к классу «Млекопитающие». Обратим внимание на то, что у них иконка которая указывает, что слот не унаследован, а прикреплен к текущему классу.

Итак, мы создали иерархию классов и определили их свойства. Теперь необходимо заполнить нашу онтологию знаниями о каждом конкретном представителе (экземпляре) какого-либо класса. Для этого необходимо заполнить формы. Protégé генерирует исходную форму для каждого класса. Protégé попытается создать начальный, полезный набор форм, основываясь на своих знаниях онтологии. Однако исходные интерфейсы пользователя, не всегда удобны. Решить эту проблему помогает вкладка Forms, на которой можно изменить внешний вид и удобство форм. Формы, которые созданы для классов на вкладке Forms, затем используются для ввода экземпляров на вкладке Instances. Каждая форма содержит ряд элементов управления пользовательского интерфейса, которые соответствуют слотам класса. Элемент управления, который выбран в данный момент, если таковой имеется, выделяется зеленым цветом. Каждый слот класса ассоциирован с элементом управления пользовательского интерфейса формы.

Вкладка Forms состоит из одного окна, в котором можно просматривать и редактировать прототип форм. Окончательный вид формы, которые мы проектируем и создаем на вкладке Forms, можно увидеть на вкладке Instances. Конечные пользователи будут использовать готовые формы для ввода экземпляров в базу знаний.

Окно вкладки Forms состоит из двух панелей:

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

2. На панели Forms Edit показана конфигурация формы, связанной с выделенным классом. Каждый слот класса связан с элементом управления пользовательского интерфейса на форме. Если мы не создали или не изменили форму, Protégé использует конфигурацию по умолчанию, основанную на типе и мощности слота.

Каждый раз при выделении элемента мы может изменить его тип элемента управления.

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

Если выбрать <none> из меню Widget Type, элемент будет удален из панели Form Edit и не будет отображаться в Форме Экземпляра для этого класса. Для восстановления отображения элемента управления, который был удален в результате выбора <none>, откроем диалог Form Configuration двойным нажатием на форму панели Form Edit и выберем другой тип отображения элемента управления.

Изменим расположение и размеры элементов на панели Form Editor.

Создав форму для заполнения, перейдем на вкладку Instance. Вкладка Instances предоставляет окно, в котором можно просматривать, создавать и редактировать экземпляры. (Классы моделируют понятия предметной области, слоты моделируют свойства классов и отношения между ними, а экземпляры моделируют действительные данные.)

Окно включает 3 панели:

1. Панель классов в левом верхнем углу показывает классы в отношении «надкласс/подкласс». Вкладка Instances позволяет просматривать классы, но их нельзя редактировать или переставлять.

2. Панель Instances Browser в центре показывает все имеющиеся прямые экземпляры выбранного класса и позволяет просматривать, создавать и удалять прямые экземпляры.

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

Для создания экземпляра необходимо на панели классов выбрать класс, для которого мы хотим создать экземпляр. Выбрав класс, на панели Instances Browser нажимаем кнопку . Будет создан экземпляр project_INSTANCE_00001. Перейдем теперь к вводу данных в форму.

Для идентификации разных экземпляров, при отображении их в списке, можно выбрать слот. В нашем случае ключ просмотра установлен на слот «Вид». Это значит, что на панели Instances Browser разные экземпляры перечисляются по значению поля «Вид».

Для выбора ключа просмотра на вкладке Forms необходимо в списке Display Slot выбрать необходимый слот. Если не выбрать слот для ключа просмотра, Protégé-2000 будет использовать ключ по умолчанию.

Введя информацию об экземплярах, мы получим базу знаний. При помощи вкладки Queries мы может создавать запросы по базе знаний. Например, мы хотим узнать какие млекопитающие имеют хвост. Для этого на панели Query в поле Class выберем класс «Млекопитающие» а в поле Slot слот «Хвост». Затем в поле критерия выбираем «is» а в поле значения «true». Нажимаем Find и на панели Search Results отобразятся экземпляры имеющие свойство «Хвост».

Мы можем сохранить этот запрос. Для этого в поле Query Name вводим название и нажимаем на кнопку Add Query Library. Запрос добавлен в библиотеку Query Library. Теперь в любое время мы можем его использовать. Необходимо лишь выбрать его в Query Library и нажать на кнопку . Мы можем также создать сложный запрос. Так, например, нам интересно какие степные млекопитающие являются исчезающими видами. Нажимаем More и создаем запрос:

Также добавим этот запрос в библиотеку Query Library.

Итак мы получили онтологию предметной области «Мир животных», добавили к ней информацию об экземплярах и получили базу знаний. Мы можем проводить запросы по базе, извлекая, таким образом, информацию о конкретных экземплярах. Более того, наша база знаний может быть использована в экспертной системе. Необходимо отметить, что мы можем усовершенствовать онтологию. Например, создавая слоты «Родственные виды» и «Пища» мы присвоили им тип String, однако разумнее было бы присвоить тип Instances. Это позволило бы нам в качестве значений слотов выбирать конкретные экземпляры из базы знаний.

Удобно после создания онтологии экспортировать ее в формат HTML, это позволит просматривать онтологию с помощью любого интернет браузера. На html странице будет представлена иерархия классов. Выбрав один из них, мы перейдем на страницу содержащую информации о надклассах и подклассах и типе класса, прикрепленных слотах и экземплярах. Экспортируем нашу онтологию в формат HTML. В меню File выбираем Export to Format -> HTML. В открывшемся окне HTML Export Configuration Options можно задать параметры экспортирования. На вкладке General оставим все без изменения, лишь в Root Classes вместо корневого класса Thing выберем класс «Мир животных».

На вкладке Slots оставим галочки только на созданных нами слотах:

Это позволить исключить из представленных на html страницах системные слоты.

На вкладке Facets поставим галочки на всех ограничениях – на Html страницах будет информация о всех ограничениях слотов.

На вкладке Custmization изменений проводить не будем. Нажимаем Ok и HTML страницы сгенерированы в выбранной директории.

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

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

Перейдя страницу класса «Хищные» получим, помимо перечисленной выше, информацию об экземплярах данного класса:

Перейдя теперь, например, по ссылке «Белый медведь», получим информацию об этом экземпляре.

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

Выбираем вкладку Jambalaya Tab и нажимаем Ok.

Отобразится панель Jambalaya, которая состоит из трех частей:

  1. CLASS BROWSER – представлена иерархия классов, здесь можно также создавать и удалять их.

  2. INSTANCES BROWSER – представлены экземпляры класса выбранного на панели CLASS BROWSER, можно также создавать или редактировать экземпляры.

  3. QUICK VIEWS – служит для выбора и визуального отображения иерархии.

Для того, чтобы отобразить онтологию, необходимо перетащить корневой класс на одну из четырех кнопок расположенных на панели QUICK VIEWS. Если перетащить класс «Мир животных» на кнопку получим иерархию классов, если на то иерархию классов и экземпляров:

Перетащив класс «Млекопитающие», получим иерархию для данного класса:

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

Таким же образом можно редактировать экземпляр. Выделим экземпляр «Белый медведь щелкаем правой кнопкой мыши и в меню выбираем Show->Form. Отобразится окно, в котором можно изменять информацию об экземпляре.

Можно добавить экземпляр к выбранному классу. Добавим экземпляр к классу «Хищные». Для этого выбираем этот класс или на вкладке CLASS BROWSER или выбираем его на схеме. После этого на панели INSTANCES BROWSER отобразятся существующие экземпляры, нажимаем на кнопку - создаем новый экземпляр, далее щелкаем на кнопке и переходим к вводу данных в форму экземпляра.