
Sb96724
.pdf
отображения онтологий может использовать плагин OntoGraf. Для его активации (если он еще не активирован) в главном меню Protégé необходимо выбрать пункт Window/Tabs и в появившемся подменю поставить галочку напротив пункта OntoGraf (рис. 2.1).
Рис 2.1. Активизация вкладки OntoGraf
После этого в основном окне Protégé должна появиться вкладка с названием OntoGraf. При выборе этой вкладки в левой части окна отображается панель с иерархией классов, в правой – область диаграмм графического отображения онтологии, в верхней части расположена панель инструментов.
Для добавления класса на диаграмму необходимо щелкнуть на нем в панели классов. OntoGraf позволяет выбирать различные способы отображения онтологии с помощью соответствующих кнопок на панели инструментов. Кроме того, поддерживается фильтрация по отображаемым типам элементов – классам, свойствам и экземплярам.
21

Рис. 2.2. Диаграмма классов
На рис. 2.2 показан пример отображения диаграммы классов для учебной онтологии, рассмотренной в Лабораторной работе № 1.
2.2.Методика выполнения работы
1.Спроектировать онтологию, описывающую предметную область, в соответствии с вариантом задания, согласованным с преподавателем. Варианты предметных областей могут быть выбраны из приведенного ниже списка или предложены студентом самостоятельно. Реализовать спроектированную онтологию с использованием редактора Protégé.
Онтология |
должна |
содержать |
не менее 50 классов, |
30 |
свойств и |
30 индивидов. |
Свойства |
должны |
включать примитивные |
и |
объектные, |
функциональные и обратно функциональные, а также должны быть заданы ограничения кардинальности.
2. Активировать (если он еще не активирован) в главном меню Protégé плагин OntoGraf. С помощью вкладки OntoGraf отобразить графически онтологию или ее часть, выбранную для иллюстрации возможностей
OntoGraf.
22
Варианты предметных областей:
1.Продукты питания (виды продуктов, блюда, меню и др.).
2.Транспорт (воздушный, наземный, личный, общественный, грузовой, пассажирский, типы и марки автомобилей и др.).
3.Компьютеры и комплектующие (настольные, мобильные, персональные, сервера, комплектующие: материнские платы, память, процессор и др.).
4.Средства связи (стационарная, мобильная, спутниковая, типы оборудования и др.).
2.3.Содержание отчета
1.Цель выполнения работы.
2.Графическое изображение разработанной онтологии из выбранной предметной области.
3.Скриншоты экранных форм с вкладками созданных классов, свойств и индивидуумов.
4.Скриншот онтологии во вкладке OntoGraf.
5. Представление созданной онтологии в машинном формате.
6. Выводы о результатах работы.
2.4. Вопросы для самоконтроля
1. Перечислите и охарактеризуйте основные шаги при проектировании онтологий.
2. В чем отличие примитивных и объектных свойств?
3.Приведите примеры обратных, функциональных и обратно функциональных свойств.
4.Приведите примеры транзитивных, симметричных и асимметричных свойств.
5.Приведите примеры рефлексивных и иррефлексивных свойств.
6. Как активизировать вкладку для визуализации онтологий OntoGraf?
7. Какие варианты отображения онтологии позволяет выбирать
OntoGraf?
8. Как выбрать требуемый вариант отображения онтологии в OntoGraf?
23
ЛАБОРАТОРНАЯ РАБОТА № 3 Разработка приложений семантического Web с использованием библиотеки Jena
Цель работы: сформировать базовые навыки программного доступа к информационным ресурсам семантического Web и их обработки с использованием фреймворка Jena.
3.1. Общие сведения
Jena – свободно распространяемый Java-фреймворк с открытым исходным кодом для построения приложений семантического Web и связанных данных (Linked Data). Разработка Jena как библиотеки Javaклассов была начата фирмой Hewlett Packard. В настоящее время развитие фреймворка Jena поддерживается фондом Apache Software Foundation [9].
На момент сдачи в печать настоящего пособия (июнь 2018 г.) актуальной версией является apache-jena-3.5.0, доступная для скачивания по адресу: https://jena.apache.org/download/index.cgi. Начиная с версии 3.0.0 Jena
требует для работы Java 8.
Создание моделей. Внутреннее представление семантического ресурса (в частности, онтологии) в Jena называется моделью. Модели соответствует базовый интерфейс Model, предоставляющий доступ к RDF-тройкам. Интерфейс OntModel расширяет Model, добавляя поддержку классов, свойств и экземпляров. Именно этот интерфейс используется для работы с онтологиями.
Простейший способ создания модели:
OntModel model = ModelFactory.createOntologyModel();
При этом создается модель с параметрами по умолчанию. В число параметров входят: язык (RDFS, OWL Lite, OWL DL, OWL Full), способ хранения модели (в оперативной памяти или в базе данных), способ логического вывода. Но на параметры по умолчанию лучше не полагаться, так как они могут отличаться в разных версиях Jena. Рекомендуется пользоваться следующим способом создания модели:
OntModel model = ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM);
Класс OntModelSpec служит для задания параметров модели. В нем существует ряд предопределенных констант, например:
24
•OntModelSpec.OWL_DL_MEM – язык OWL DL, хранение модели в памяти, отсутствие логического вывода (именно этот вариант рекомендуется
врамках данной работы);
•OntModelSpec.OWL_LITE_MEM – язык OWL Lite, хранение модели
впамяти, отсутствие логического вывода;
•OntModelSpec.OWL_DL_MEM_TRANS_INF – язык OWL DL,
хранение модели в памяти, логический вывод для транзитивных отношений.
Чтение и сохранение моделей. Jena поддерживает загрузку моделей как из файлов на локальной машине, так и из ресурсов на удаленных серверах. Для загрузки используется универсальный метод интерфейса Model:
read(String url).
При загрузке онтологий Jena обрабатывает данные об импортируемых онтологиях и позволяет автоматически загружать эти онтологии. Для задания параметров импорта используется вспомогательный класс
OntDocumentManager:
OntDocumentManager manager =
model.getDocumentManager();
Основные методы этого класса, относящиеся к процессу импорта онтологий:
•setProcessImports(boolean processImports) – включает или выключает автоматический импорт онтологий;
•addIgnoreImport(String uri) – позволяет выборочно задавать адреса (URI) тех онтологий, которые не нужно импортировать;
•addAltEntry(String docURI, String locationURL) –
позволяет задать локальный адрес, по которому хранится копия онтологии, расположенной на удаленном сервере. Это делается для повышения скорости
инадежности загрузки онтологий (так как скорость скачивания удаленной онтологии может быть небольшой, а в худшем случае такая онтология может быть временно недоступной).
Для сохранения модели используется следующий метод интерфейса
OntModel:
write(java.io.OutputStream out).
25
Работа с ресурсами онтологии (классами, свойствами,
экземплярами). В Jena все интерфейсы, соответствующие ресурсам онтологии (классам, свойствам, экземплярам), являются расширением базового интерфейса OntResource, который в свою очередь является расширением интерфейсов Resource и RDFNode. Ниже приведен список атрибутов онтологических ресурсов, к которым возможен доступ через интерфейс OntResource:
•versionInfo – версия ресурса;
•comment – комментарий;
•label – название ресурса, ориентированное на человека;
•seeAlso – адрес, по которому можно получить подробную информацию о ресурсе;
•isDefinedBy – специальная форма seeAlso, указывающая адрес, по которому находится определение ресурса;
•sameAs – адрес другого ресурса, аналогичного рассматриваемому;
•differentFrom – адрес другого ресурса, который по определению отличен от рассматриваемого.
Для каждого из этих атрибутов в интерфейсе OntResource существует стандартный набор методов:
•add<property> – добавляет атрибуту еще одно значение;
•set<property> – удаляет все текущие значения атрибута и устанавливает указанное новое значение;
•list<property> – возвращает итератор по всем значениям атрибута;
•get<property> – возвращает значение атрибута, если оно есть. Если нет, возвращает null. Если у атрибута несколько значений, возвращает одно произвольно выбранное;
•has<property> – возвращает true, если задано хотя бы одно значение атрибута. Для некоторых атрибутов этот метод называется is<property>;
•remove<property> – удаляет указанное значение из списка значений атрибута.
Примеры конкретных методов: addSameAs(Resource r), isSameAs(Resource r).
Еще один важный метод интерфейса OntResource: remove() – удаляет из онтологии указанный ресурс и все отношения, в которых он находится, т. е. является их объектом или субъектом.
26
Работа с классами. Классы – это основные элементы онтологии. Классу в онтологии соответствует интерфейс OntClass. Получить класс с определенным URI можно следующим образом:
OntClass teacherClass = model.getOntClass(“http://www.eltech.ru/semweb/tutorial.
owl#Преподаватель”);
Здесь model – экземпляр OntModel, в который была загружена учебная онтология.
Для создания нового класса используется метод createClass(String uri):
OntClass studentClass = model.createClass(“http://www.eltech.ru/semweb/tutorial.owl#
Студент”);
Если класс с заданным URI уже существует в модели, то новый класс не создается, используется существующий.
Для получения списка всех классов в модели используется метод listClasses():
for (ExtendedIterator iter = model().listClasses();iter.hasNext();)
{OntClass tempClass = (OntClass) iter.next(); System.out.println(tempClass.getLocalName());
}
Через интерфейс OntClass возможен доступ к следующим атрибутам:
•subClass – подклассы данного класса;
•superClass – надклассы данного класса;
•equivalentClass – классы, представляющие то же самое понятие, что и данный класс;
•disjointWith – классы, которые не могут иметь с данным классом общих экземпляров (например, таково отношение между классами «Мужчина» и «Женщина»).
По аналогии с методами работы с атрибутами OntResource в OntClass существуют методы установки, добавления, получения, удаления значений перечисленных выше атрибутов. Например, получить список всех подклассов класса «Преподаватель» можно следующим образом:
OntClass teacherClass = model.getOntClass(“http://www.eltech.ru/semweb/tutorial.owl#
Преподаватель”);
for (Iterator i = teacherClass.listSubClasses(); i.hasNext(); ) {
27
OntClass c = (OntClass) i.next(); System.out.println(c.getLocalName());
}
Работа с экземплярами классов. Экземплярам в онтологии соответствует интерфейс Individual.
Для получения экземпляра с заданным URI используется следующий способ:
Individual inst = model.getIndividual(“http://www.eltech.ru/semweb/
tutorial.owl#Студент_3”);
Для получения списка всех экземпляров класса используется метод listInstances() интерфейса OntClass:
OntClass studentClass = model.getOntClass(“http://www.eltech.ru/semweb/tutorial.owl#Студ ент”);
for (ExtendedIterator iter = studentClass.listInstances();iter.hasNext();) {
Individual inst = (Individual) iter.next(); System.out.println(inst.getLocalName());
}
Для создания нового экземпляра класса используется следующий способ:
OntClass studentClass = model.getOntClass (“http://www.eltech.ru/semweb/tutorial.owl#Студент”); Individual inst =
model.createIndividual("http://www.eltech.ru/semweb/ tutorial.owl#Студент_5", studentClass);
Работа со свойствами. Свойству в онтологии соответствует интерфейс
OntProperty (и его базовый интерфейс Property).
Получить доступ к определенному свойству можно следующим образом:
OntProperty nameProp = model.getOntProperty(“http://www.eltech.ru/semweb/
tutorial.owl#имя”);
Для работы со значениями свойств конкретного экземпляра класса используются следующие методы интерфейса Individual (на самом деле они определены в базовом интерфейсе OntResource):
28
•getPropertyValue(Property p) – возвращает значение свойства, если оно определено. Если нет, возвращает null. Если у экземпляра задано несколько значений свойства, возвращается одно произвольно выбранное значение. Значение свойства возвращается в виде объекта типа RDFNode, который является или литералом (интерфейс Literal), или ссылкой на другой ресурс онтологии (интерфейс OntResource);
•setPropertyValue(Property p, RDFNode value) - удаляет все текущие значения свойства экземпляра, после чего устанавливает указанное новое значение;
•addProperty(Property p, RDFNode value) - добавляет еще одно значение свойству экземпляра;
•listPropertyValues(Property property) - возвращает итератор по всем значениям свойства экземпляра;
•removeProperty(Property property, RDFNode value) -
удаляет указанное значение из списка значений свойства экземпляра.
3.2. Методика выполнения работы
Для онтологии, созданной в Лабораторной работе № 2, необходимо выполнить следующие шаги:
1.Создать модель.
2.Загрузить в модель онтологии из файла.
3.Напечатать названия всех классов в онтологии.
4.Напечатать свойства объектов (например, фамилии всех студентов).
5.Удалить объект.
6.Добавить объект.
7.Сохранить модель в файле.
3.3.Содержание отчета
1.Цель выполнения работы.
2.Краткие сведения о библиотеке классов Jena.
3.Фрагменты программного кода и описание особенностей программной реализации следующих действий:
- создание в Java-приложении онтологической модели;
-загрузка в модель онтологии из файла;
-вывод в консоль названий классов, содержащихся в онтологии;
-добавление и удаление класса из онтологии;
29
-вывод в консоль названий всех свойств выбранного класса;
-удаления и добавления индивидуума выбранного класса;
-сохранение модели в файле.
3.4.Вопросы для самоконтроля
1.Охарактеризуйте основные возможности фреймворка Jena.
2.Как создать в Java-приложении онтологическую модель?
3.Как загрузить в модель онтологию из файла?
4.Как выбрать из онтологии и вывести в консоль названия всех содержащихся в онтологии классов?
5.Как добавить и удалить из онтологии некоторый класс?
6.Как выбрать и вывести в консоль названия всех свойств класса?
7.Как добавить индивидуума в некоторый класс (удалить из него)?
8.Как сохранить онтологию (модель) в файле?
СПИСОК ЛИТЕРАТУРЫ
1.Интеллектуальные агенты, многоагентные системы и семантический Web: концепции, технологии, приложения / М. Г. Пантелеев, Д. В. Пузанков
идр. СПб.: Технолит, 2008. 292 с.
2.Пантелеев М. Г., Водяхо А. И., Жандаров В. В. Технологии семантического Веб: учеб. пособие. СПб.: Изд-во СПбГЭТУ «ЛЭТИ», 2008. 64 с.
3.Официальный сайт RDF. URL: https://www.w3.org/RDF/.
4.Официальный сайт RDFS. URL: https://www.w3.org/TR/rdf-schema/.
5.Официальный сайт OWL. URL: https://www.w3.org/TR/owl2-quick- reference/.
6.Официальный сайт редактора онтологий Protégé. URL: https://protege.stanford.edu/.
7.Официальный сайт проекта Open Ontology Repository. URL: http://ontolog.cim3.net/wiki/OpenOntologyRepository.html.
8.Официальный сайт проекта Linked Open Vocabularies (LOV). URL: http://lov.okfn.org/dataset/lov/.
9.Официальный сайт Jena. URL: https://jena.apache.org/index.html.
30