close

Вход

Забыли?

вход по аккаунту

?

7398.Способы извлечения данных из базы знаний Protege на примере визуализации схем трактов телекоммуникационных сетей

код для вставкиСкачать
УДК 004.42:621.39
СПОСОБЫ ИЗВЛЕЧЕНИЯ ДАННЫХ ИЗ БАЗЫ ЗНАНИЙ PROTEGE НА ПРИМЕРЕ
ВИЗУАЛИЗАЦИИ СХЕМ ТРАКТОВ ТЕЛЕКОММУНИКАЦИОННЫХ СЕТЕЙ
И.Н. Даниленко, О.Н. Нагорянский, П.А. Ковалёв
В статье показаны программные способы извлечения данных из базы знаний о телекоммуникационных сетях,
реализованной средствами редактора Protege, описано предназначение некоторых функций API редактора. На основе
извлечённых данных рассмотрен пример построения графического изображения участка одного из трактов телекоммуникационной сети
Ключевые слова: онтология, Protege, API, база знаний, Java
Необходимость графического представления трактов телекоммуникационных сетей
(ТС) обусловлена рядом факторов – масштабностью сетей, их пространственной
протяженностью, разнообразной номенклатурой типов и моделей устройств, а также
большим количеством самих объектов и
устройств, входящих в состав сетей. В работе [1] предложен онтологический подход
к семантическому описанию и формализации данных о ТС.
Под онтологией будем понимать точную спецификацию концептуализации.
Концептуализация предполагает описание
множества объектов и понятий некоторой
предметной области, знаний об этих объектах и понятиях и связей между ними [2].
Инструментальные программные средства,
созданные специально для проектирования,
редактирования и анализа онтологий, называют редакторами онтологий. Protege – это
свободно распространяемый редактор онтологий, который базируется на программной
платформе Java [3].
Для одного из предприятий, занимающихся обслуживанием ТС авторами с помощью редактора Protege была спроектирована онтология ТС, и на её основе создана
база знаний [1].
В отечественной литературе отсутствуют публикации по работе с открытой архитектурой редактора Protege, поэтому в
данной статье ставится задача описания
Даниленко Иван Николаевич – СурГУ, канд. техн. наук,
доцент, тел. (3462) 76-31-21
Нагорянский Олег Николаевич – СурГУ, аспирант, e-mail
nagoryanskij@mail.ru
Ковалёв Павел Алексеевич – филиал ОАО «ФСК ЕЭС»
МЭС ЗС, инженер, тел. (3462) 77-46-43
механизмов работы с предоставляемыми
Protege классами и их методами на примере
визуализации схем трактов из разработанной в редакторе базы знаний ТС.
При анализе ТС используются, в частности, такие типы элементов, как канал и
тракт. В рассматриваемой онтологии этим
типам элементов соответствует класс
«Тракт». Понятие «тракт» может быть раскрыто через понятие «устройство», которое
в данном контексте не является однозначным. Устройство в данной онтологии рассматривается с нескольких точек зрения:
устройство – это технический объект, являющийся телекоммуникационным оборудованием некоторого вида; элемент устройства является устройством; часть ресурса устройства является устройством.
Схема тракта представляется как непрерывная цепочка следующих друг за другом устройств, принадлежащих к узлам,
соединённым между собой в цепочку. Каждое из устройств первой цепочки выступает
как точка маршрута тракта. Одни устройства могут включаться в состав других. В
данной онтологии вхождение одного элемента в другой описывается отношением
«входит в состав». Для родительского элемента существует отношение «имеет дочерние элементы» с мощностью «один ко многим». Соседние точки связаны отношениями: «следующая точка», «предыдущая
точка». Мощность данных отношений «один
к одному».
Для представления тракта ТС необходимо последовательное отображение на
схеме точек и связей межу ними, а также
некоторых характеристик (атрибутов) этих
точек. Устройства тракта представлены иерархией, на нижнем уровне которой распо-
лагаются точки тракта.
Задача визуализации трактов ТС разбивается на две подзадачи: первая подзадача состоит в организации извлечения
данных из базы знаний, основанной на онтологии ТС, вторая – в построении схемы
тракта ТС. Каждая подзадача предполагает
разработку
соответствующей системы
классов.
Один из классов – класс Extractor –
создан для доступа к данным редактора
Protege. Данный класс использует функции
Application Programming Interface (API) редактора. На официальном сайте разработчиков программы Protege [3] представлен
документированный интерфейс классов с
перечнем и описанием функций API [4].
Ключевой класс второй системы – класс
CPSchemeOfPath – создан для построения
структурной модели тракта и её визуализации.
Подразумевается, что в ответ на некоторое сообщение, передаваемое от объекта
класса CPSchemeOfPath к объекту класса
Extractor, последний согласно полученному
запросу в определённом формате возвращает информацию из базы знаний. В результате класс CPSchemeOfPath полностью
независим от способа хранения и механизма извлечения данных. После получения от класса Extractor всех точек маршрута и их атрибутов, которые хранят, в
том числе, типы связей и отношения порядка, объект класса CPSchemeOfPath выстраивает точки в правильную последовательность, определяет иерархию устройств
по аппаратной агрегации и только после
этого осуществляет построение графической схемы тракта.
Классы Extractor и CPSchemeOfPath
должны оперировать общими классами,
описывающими точки маршрута тракта или
соединения точек. Для некоторого конкретного тракта были выделены следующие типы элементов структурной модели:
тракт, узел, порт, сеть/система, плинт,
группа контактов. Кроме того, были выделены такие типы соединений, как физическая связь, радиосвязь и кабель, которые
тоже представлены классами.
При построении системы классов для
визуализации структурных моделей трактов был применен паттерн «компоновщик»,
который позволяет единообразно использовать простые и составные объекты, что упрощает как процесс моделирования сложных иерархических систем, так и делает
саму систему более гибкой [5].
Редактор Protege предоставляет уникальный класс KnowledgeBase, содержащий
всю информацию об открытой в данный
момент базе знаний. Ссылка на данный
класс объявлена в закрытом разделе класса
Extractor. Связь базы знаний и ссылки на
объект типа Extractor происходит через
конструктор преобразования, который в качестве формального параметра принимает
ссылку на объект класса KnowledgeBase.
Саму ссылку можно получить, вызвав метод getKnowledgeBase(), реализованный в
классе Model.
Согласно предоставленными Protege
функциями API для каждого из понятий в
онтологии существует собственный интерфейс. Так, понятие «класс» в онтологии
представлено интерфейсом Cls на языке
Java, «слот» (атрибут) некоторого класса
представлен интерфейсом Slot, а «экземпляр» – интерфейсом SimpleInstance. А
классы на языке Java DefaultCls, DefaultSlot
и DefaultSimpleInstance соответственно реализуют вышеуказанные интерфейсы [4].
Понятие «класс» в онтологии будем
называть онтологическим классом. Чтобы
найти объект типа Cls по имени онтологического класса необходимо для текущей
базы
знаний
вызвать
метод
getClsNameMatches. Отметим, что в онтологии может быть несколько онтологических классов с одинаковым именем, поэтому возвращаемое значение данного метода является коллекцией. В качестве формальных параметров метод принимает имя
онтологического класса и максимальное
количество совпадений имён онтологических классов с заданным ClassName. В онтологии ТС нет смысла добавлять более
одного класса с одинаковым именем, поэтому количество совпадений примем за 1.
Для вышеприведённых операций реализуем
функцию FindClassByClassName:
Cls FindClassByClassName (String
ClassName)
{
//определение коллекции классов с
//заданным именем:
Collection <Cls> colClass =
KB.getClsNameMatches(ClassName,1);
//определение итератора для коллекции:
Iterator i = colClass.iterator();
//возврат первого элемента коллекции:
return (Cls)i.next();
}
Определить
объект
типа
SimpleInstance по имени онтологического
экземпляра InsName возможно с использованием метода getSimpleInstance (String
InsName).
Для определения объекта типа Slot по
имени SlotName в базе знаний используется
метод getSlot (String SlotName):
Slot TempSlot = getSlot(SlotName).
А для получения значения слота
TempSlot в конкретном экземпляре Ins необходимо
вызвать
его
метод
getDirectOwnSlotValues(Slot TempSlot).
Рассмотрим
реализацию
метода
GetChildren (String ParentName), принимающего в качестве формального параметра имя некоторого устройства из схемы
тракта или имя самого тракта. Считаем, что
по имени тракта или устройства можно определить
ссылку
на
объект
типа
SimpleInstance, используя вышеупомянутые
методы. Метод GetChildren возвращает все
агрегированные объекты в переданный
объект. Так, например, для одного узла он
может вернуть все порты, входящие в этот
узел. А для тракта возвращает все точки
тракта, находящиеся на верхнем уровне,
следовательно, результат работы данного
метода должен быть представлен коллекцией.
Реализация данного метода учитывает
два случая. В первом случае в качестве переданного значения будет имя тракта, в
другом случае – имя устройства. Для установления названия онтологического класса,
к которому относится переданный параметр ParentName, определяется экземпляр
и класс, соответствующий ParentName:
SimpleInstance IDevice =
getSimpleInstance(ParentName);
Cls CurClass = IDevice.getDirectType();
Далее сравнивается имя класса, полученное методом getName с именем «Тракт»:
CurClass.getName().contentEquals("Тракт");
В случае совпадения возвращается
коллекция названий всех точек тракта, расположенных на верхнем уровне иерархии.
Но, из-за того, что тракт представлен точками, находящимися на нижнем уровне иерархии, для определения верхних элементов в иерархии необходимо для каждой
точки пройтись к её корневому элементу.
Так как несколько точек тракта могут входить в состав одного устройства родителя, а
возвращаемая коллекция должна быть
представлена различными устройствами, то
целесообразно выбрать множество в качестве интерфейса возвращаемой коллекции,
а в качестве реализации – бинарное дерево.
Так как количество элементов, добавляемое
в коллекцию, составляет от 100 до 1000 и
класс TreeSet бинарного дерева, реализованного в Java.util, является красно-чёрным
деревом, то реализация множества в виде
бинарного дерева является приемлемой.
Если входная переменная представлена именем устройства, т.е. не является
трактом, то задача существенно упрощается. Так как у каждого устройства есть атрибут (или отношение) «имеет дочерние
устройства», то коллекция имён дочерних
устройств и выступает в качестве возвращаемого значения. Интерфейс коллекции
также представлен множеством, а реализация – бинарным деревом.
Для определения связи между двумя
устройствами
предназначен
метод
getConnection(String
objName1,
String
objName2). Данный метод возвращает наименование связи между двумя устройствами с именами objName1 и objName2. Логично, что поиск связи между этими устройствами происходит для трёх реализованных классов: физическое соединение,
кабель и радио соединение. Во всех трёх
классах имеются одинаковые обозначения
отношений «имеет устройство 1» и «имеет
устройство 2». Поэтому можно реализовать
вспомогательный метод FindConnect, оты-
скивающий связь в заданном классе, с последующим вызовом данного метода для
каждого из классов соединений.
В методе FindConnect в начале отыскивается коллекция экземпляров заданного класса связи clsCon:
colCon = clsCon.getInstances();
Затем перебираются в цикле элементы
коллекции, т.е. реальные соединения. На
каждой итерации цикла определяются атрибуты (объекты типа Slot), которые содержат устройства (показано для одного
устройства, для второго – аналогично):
Slot sDevice_1 = KB.getSlot("имеет
устройство 1");
Далее в цикле определяются сами
устройства для текущей связи IConnect путём вызова метода getOwnSlotValue, возвращающего значения слотов:
IDev_1 = (SimpleInstance)
IConnect.getOwnSlotValue(sDevice_1);
И, наконец, сравнивается название
устройства IDev_1, полученное методом
getName(), с заданным objName1. В случае
совпадения связь считается найденной и
возвращается её имя IConnect.getName().
Для получения атрибутов некоторого
объекта (устройства или связи) реализован
метод getKnowledge. В качестве формального параметра в него передаётся имя некоторого объекта. По имени этого объекта
отыскивается соответствующий объект
IDev типа SimpleInstance. Далее создаётся и
возвращается соответствующий объект –
потомок
класса
CPSchemeOfPath,
в
который внесены требующиеся значения
атрибутов, извлеченные из IDev.
На рисунке приведено графическое
представление участка некоторого тракта,
полученного в результате работы программы, использующей системы классов по
извлечению данных и построению тракта.
Литература
1. Даниленко И.Н., Нагорянский О.Н., Ковалёв П.А.
Онтология телекоммуникационных сетей. СУИТ. Воронеж:
Научная книга, 2009, №2.2(36), 309-312 c.
2. Гаврилова Т.А., Хорошевский В.Ф. Базы знаний
интеллектуальных систем. Спб.: Питер, 2000. 384 с.
3. Редактор онтологий Protege: официальный сайт. http://protege.stanford.edu.
4. Редактор онтологий Protege: документация API. http://protege.stanford.edu/protege/3.4/docs/api/core/.
5. Гамма Э., Хелм Р., Джонсон Р. Приёмы объектноориентированного проектирования. Паттерны проектирования. М.: Питер, 2001. 367 с.
Схема участка тракта телекоммуникационной сети
Сургутский государственный университет
Филиала ОАО «Федеральная сетевая компания Единой электрической системы»
Магистральные электрические сети Западной Сибири
THE WAYS OF DATA EXTRACTION FROM THE TELECOMMUNICATION NETWORKS
KNOWLEDGE BASE FOR PATHS VISUALISATION
I.N. Danilenko, O.N. Nagoryanskiy, P.A. Kovalev
Program ways of data extraction from the telecommunication networks knowledge base realised in Protege are shown
in this article, the mission of some functions API of the editor is described. On the basis of the extracted data the example of
construction the graphics image of one of telecommunication network paths is considered
Key words: ontology, Protege, API, knowledge base, Java
Документ
Категория
Без категории
Просмотров
14
Размер файла
221 Кб
Теги
знание, protégé, данных, способы, извлечения, базы, 7398, сетей, трактов, телекоммуникационный, визуализация, схема, пример
1/--страниц
Пожаловаться на содержимое документа