Программное обеспечение формирования онтологии предметной области и ее кодогенерации
Автор: Нагорных Максим Эдуардович, Быков Алексей Николаевич, Чернышв Станислав Андреевич
Рубрика: Информатика и вычислительная техника
Статья в выпуске: 4, 2022 года.
Бесплатный доступ
Разработано программное обеспечение для построения онтологий и их кодогенерации. Представлены аналоги приложения, выявлены их сильные и слабые стороны. Подробно рассмотрены процессы описания онтологий и кодогенерации, а также стек технологий разработки, архитектура приложения. Продемонстрированы результаты работы программы на абстрактных примерах.
Онтология, кодогенерация
Короткий адрес: https://sciup.org/148325019
IDR: 148325019 | УДК: 004.5:004.4’2 | DOI: 10.18137/RNU.V9187.22.04.P.149
Software for domain ontology formation and code generation
Software for building ontologies and their code generation has been developed. During development, analogues of the application were considered, their strengths and weaknesses were identified. Also, the processes of ontology description and code generation were considered in detail. The article presents: a stack of development technologies, application architecture, and also demonstrates the results of the program on abstract examples.
Текст научной статьи Программное обеспечение формирования онтологии предметной области и ее кодогенерации
В современной ИT-сфере применяется большое количество решений с использованием онтологий, например, искусственный интеллект, моделирование бизнес-процессов и семантическая паутина, категоризация и анализ знаний о предметной области. Они также используются для решения проблем интеграции данных путем предоставления общего согласованного словаря и ограничений между ними, которые затем используются для того, чтобы программное обеспечение понимало, что сущность «автомобиль» реляционной базы данных на самом деле означает то же самое, что и «транспортное средство» в некотором прикладном программном обеспечении.
Стоит отметить, что с ростом сложности разрабатываемых систем усложняется и процесс создания онтологий. Постоянное взаимодействие с базой знаний, содержащей онтологию предметной области или агента в мультиагентной системе, при наличии большого количества таких объектов уменьшает общую производительность системы. Этого можно избежать при отсутствии требований к модификации онтологии поведения агента в процессе работы мультиагентных систем путем использования автоматической кодогене-рации и внедрения онтологии поведения непосредственно в код.
Поскольку приложений, позволяющих производить кодогенерацию по онтологиям, мало, более того, многие из них не производят ее на высоуровневых языках программирования, основная цель проделанной работы – создание и апробация программного обеспечения, которое позволило бы производить формирование онтологии и ее дальнейшую кодогенерацию.
Нагорных Максим Эдуардович магистрант. Санкт-Петербургский государственный университет аэрокосмического приборостроения, Санкт-Петербург. Сфера научных интересов: имитационное моделирование; мультиагентные системы; системы поддержки принятия решений; разработка распределенных систем. Автор 7 опубликованных научных работ.
Обзор существующих решений
Чтобы разобраться в принципах работы и особенностях существующих решений, позволяющих производить описание онтологий и их кодогерацию, было рассмотрено 3 существующих программы:
-
• Protege 5.0;
-
• NeOnToolkit;
-
• Software Ideas Modeler.
Protege. Protege является свободным программным средством с открытым исходным кодом для редактирования онтологий и систем управления знаниями. Программа имеет современный пользовательский интерфейс, в котором пользователь может создавать и описывать онтологии посредством классов и аннотаций к ним [16].
Платформа Protégé поддерживает два основных способа моделирования онтологий – средствами редакторов Protégé-Frames и Protégé-OWL. Онтологии, построенные в Protégé, могут быть экспортированы во множество форматов, включая RDF (RDF Schema), OWL и XML Schema.
NeOnToolkit. Это многоплатформенный редактор онтологий с открытым исходным кодом, который поддерживает разработку онтологий в F-Logic, OWL и RDF. Редактор основан на платформе Eclipse и предоставляет набор подключаемых модулей (в настоящее время доступно 45 подключаемых модулей для последней версии v2.4), охватывающих ряд инженерных работ по онтологии, включая аннотации и документацию, модуляризацию, настройку, повторное использование, эволюцию онтологий и др. [5]. Главное преимущество NeOnToolkit перед конкурентами – наличие множества плагинов, разработанных сообществом программистов.
Программное обеспечение формирования онтологии предметной области ...
Software Ideas Modeler. Мощное средство для создания диаграмм, которое оснащено профессиональными и экономящими время функциями. Создание проекта не требует специальных навыков, так как рабочее пространство и опции интуитивно понятны, однако может потребоваться некоторое время, чтобы разобраться во всех возможностях инструмента [1]. Этот программный продукт не задумывался разработчиками для описания онтологии и ее кодогенерации, но, благодаря его обширным возможностям и множеству языков описания систем, его можно использовать для достиения высокого результата описания предметной области. На данный момент поддерживаются все 14 типов диаграмм, указанных в UML 2.5, а также ER-диаграммы, блок-схемы, объектно-ролевое моделирование, диаграммы потоков данных и др.
Используя предоставляемый функционал, можно описать предполагаемые объекты системы, их атрибуты, связи между ними, а также взаимосвязи между собой, что, в свою очередь, является главной задачей в построении онтологий. Также приложение позволяет производить кодогенерацию на основе построенных диаграмм, при этом поддерживается большинство современных высокоуровневых языков программирования, стандарты XML и SQL. Это позволяет хранить базу знаний предметной области в виде программного кода или в отдельных структурах.
Пример кодогенерации представлен на Рисунке 1.
class Admin : public User private:
string telephone;
string nameOfAdmin;
public:
void createobj ();
void delobj ();
void addTeacherl ();
void delTeacher (); void addPrice ();
Рисунок 1. Пример кодогенерации средствами Software Ideas Modeler
В результате рассмотренных аналогов можно выделить несколько их главных преимуществ: открытый исходный код, интерес к данным проектам сообщества разработчиков и постоянное развитие проектов. Однако почти все они не позволяют производить процесс кодогенерации по составленным онтологиям, так как требуют использования для этого дополнительных программных средств.
В связи с этим целью стала разработка программного обеспечения, которое позволит составить онтологию предметной области и также произвести ее кодогенерацию, что, в свою очередь, позволит сократить трудозатраты на интеграцию классов и ограничений в существующую информационную систему.
Стек технологий
Для реализации программного обеспечения был выбран язык программирования Python. На данный момент это один из самых популярных и востребованных языков программирования в мире за счет большого набора полезных переносимых функций, начиная от функционала для работы с текстом и заканчивая средствами для написания сетевых приложений [8; 9].
Хранить разрабатываемую средствами программного обеспечения онтологию, ее объекты и параметры было решено в XML-формате, для работы с которым выбрана библиотека Python xmlschema. Она может выполнять кодирование, декодирование файлов XML и позволяет производить проверку данных XML на валидность [10].
Для создания пользовательского интерфейса использовалась библиотека PySide2, которая обладает множеством готовых элементов взаимодействия пользователя с программой: кнопки, поля для ввода данных, заголовки с текстом, вкладки [3]. Для визуализации онтологии и представления ее в виде графов используется библиотека PyQtGraph [2].
Архитектура приложения
Разработанное приложение состоит из 6 модулей:
-
• MainWindow описывает логику поведения главного окна приложения;
-
• Manager Data отвечает за хранение данных об онтологии, ее классах, связях и ограничениях;
-
• Widgets хранит окна интерфейса приложения;
-
• Flow Chart используется для визуализации спроектированной онтологии в виде графов;
-
• Utils содержит в себе вспомогательные функции, такие как проверка данных на валидацию и реализацию паттернов проектирования;
-
• Code Generation отвечает за формирования кода на языке Python на основе составленной онтологии.
На Рисунке 2 представлена структурная схема взаимодействия модулей.
Такая структура позволяет каждому модулю выполнять свои задачи независимо от других, что делает возможным их динамическую замену, а также добавление новой функциональности без изменения кода других модулей.
Процесс построения онтологий
В настоящее время существует множество стандартов для формирования онтологии предметной области, например: ER-модель, RDF, OWL, XML-схема и др.
В работе [4] подробно рассмотрены существующие способы формирования онтологии предметной области при моделировании. Отмечена целесообразность использования ХМL-схемы в задачах кодогенерации разрабатываемой онтологии, так как данный формат обладает рядом преимуществ, а именно: избежание лишних данных за счет древовидной структуры, ограничения на входные данные, отсутствие ограничений на типы данных.
Пользовательский интерфейс программного обеспечения позволяет производить описание сущностей онтологий, их характеристик, а также взаимодействий. Пользователю доступно создание множества объектов онтологии с подробным описанием характеристик каждого. Также он может создавать общие интерфейсы, включающие в себя группу абстрактных методов для назначения на общие объекты в онтологии. В качестве характеристик используются следующие параметры:
Программное обеспечение формирования онтологии предметной области ...
-
• название – позволяет задать название объекта онтологии;
-
• описание – позволяет пользователю задать описание объекта для его лучшего восприятия;
-
• состояния – возможные состояния объекта (например, при создании объекта «машина» она будет иметь состояния «едет» и «стоит»);
-
• характеристики – параметры объекта (например, цвет машины);
-
• ограничения – описание ограничений объекта (например, параметр скорости машины не может быть выше 110 км/ч);
-
• взаимодействия – позволяет описывать, с кем объект может взаимодействовать (например, человек взаимодействует с машиной);
-
• методы – позволяют задавать описание методов и их сигнатуры, которые должен реализовывать объект системы;
-
• реализуемые интерфейсы – позволяют задавать перечисление интерфейсов, которые объект должен реализовывать.
Интерфейс приложения и процесс описания актора системы представлен на Рисунках 3, 4.
Рисунок 2. Структурная схема взаимодействия модулей
Рисунок 4. Создание актора системы
Разработанное программное обеспечение позволяет в полном объеме произвести описание онтологии с последующим формированием на ее основе XML-схемы.
На Рисунке 5 приведена ХML-схема, в которой происходит описание транспортного средства.
eActor name="ladaGranta">
eCharacteristics> eCharacteristic name="Color" type="Text Sequence Type" default="Red" description="Color car" /> e/Characteristics> elnteractions /> eConstrains) eConstrain name="Color" description="cannot be yellow" /> e/Constrains>
Программное обеспечение формирования онтологии предметной области ...
Процесс кодогенерации
После получения XML-схемы пользователь может произвести процесс кодогенерации на язык программирования Python, который заключается в поочередном анализе метаданных каждого объекта. На каждой итерации кодогенерирования формируются части сгенерированного кода для каждого из его параметров. После того, как они будут сформированы, в зависимости от указанных взаимодействий объектов в системе и их реализуемых интерфейсов запускается сборка генерации итого кода.
На Рисунке 6 представлен результат кодогенерации XML-схемы, рассмотренный в предыдущем пункте.
from abc import ABC class ladaGranta:
"""The object of the ontology machine"""
def __init__(self):
def drive(self, speed, diraction, *args, **kwarg) """car drive......
class State(ABC):
@property def stand(self):
"""car stands""" return self._stand
@property def drive(self): """the car drive""" return self._drive
Рисунок 6. Результат кодогенерации XML-схемы
Полученный код сохраняет в себе все параметры и ограничения, указанные пользователем при графическом моделировании онтологии и может служить основой будущей программной системы.
Заключение
Разработанное программное обеспечение позволяет описывать онтологии предметной области и производить ее кодогенерацию в высокоуровневый код. Это дает возможность на этапе проектирования системы заложить будущую архитектуру приложения, которое содержит все необходимые знания о предметной области.
Благодаря такому подходу ускоряется процесс создания информационных систем, а графический интерфейс дает возможность в удобном для человека виде производить описание и формирование онтологии предметной области. Полученный код после генерации обладает одним архитектурным стандартом, что позволяет поддерживать читаемость и понятность кода с ростом переносимых в код объектов предметной области.
На разработанное программное обеспечение получено свидетельство о государственной регистрации программы для ЭВМ [7].
Список литературы Программное обеспечение формирования онтологии предметной области и ее кодогенерации
- Бедердинова О.И., Кремлева Л.В., Протасова С.В. Моделирование информационных систем на платформе SOFTWARE IDEAS MODELER. М.: Инфра-М, 2019. ·.
- Библиотека PyQtGraph. Официальный сайт [Электронный ресурс]. URL: https://www.pyqtgraph.org/ дата обращения: 25 марта 2022 г.). ·.
- Библиотека PySide2. Материалы с сайта [Электронный ресурс]. URL: https://pypi.org/project/PySide2/ (дата обращения: 25 марта 2022 г.).
- Быков А.Н., Антонов А.А., Чернышев С.А. Обзор существующих способ формирования онтологии предметной области при моделировании // Международный журнал информационных технологий и энергоэффективности. 2021. Т. 6, № 4 (22). С. 12-17.
- Программа NeOn Toolkit. Официальный сайт [Электронный ресурс]. URL: http://neon-toolkit. org/ (дата обращения: 21 марта 2022 г.).
- Программа Protege. Официальный сайт [Электронный ресурс]. URL: https://protege.stanford.edu/ (дата обращения: 17 марта 2022 г.).
- Свидетельство о государственной регистрации программы для ЭВМ № 2021660091 от 22.06.2021 г. Программное обеспечение формирования онтологии предметной области. Основное программное обеспечение / А.Н. Быков, М.Э. Нагорных, С.А. Чернышев.
- Lamy Jean-Baptiste. Ontologies with Python. Apress, 2021.
- Python Documentation. Материалы с сайта [Электронный ресурс]. URL: https://www.python.org/doc/ (дата обращения: 25 марта 2022 г.).
- XML Documentation. Материалы с сайта [Электронный ресурс]. URL: https://www.w3.org/ TR/xmlschema-0/(дата обращения: 25 марта 2022 г.).