Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Sb96724

.pdf
Скачиваний:
14
Добавлен:
13.02.2021
Размер:
1.11 Mб
Скачать

отображения онтологий может использовать плагин 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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]