Программное обеспечение формирования онтологии предметной области и ее кодогенерации

Автор: Нагорных Максим Эдуардович, Быков Алексей Николаевич, Чернышв Станислав Андреевич

Журнал: Вестник Российского нового университета. Серия: Сложные системы: модели, анализ и управление @vestnik-rosnou-complex-systems-models-analysis-management

Рубрика: Информатика и вычислительная техника

Статья в выпуске: 4, 2022 года.

Бесплатный доступ

Разработано программное обеспечение для построения онтологий и их кодогенерации. Представлены аналоги приложения, выявлены их сильные и слабые стороны. Подробно рассмотрены процессы описания онтологий и кодогенерации, а также стек технологий разработки, архитектура приложения. Продемонстрированы результаты работы программы на абстрактных примерах.

Онтология, кодогенерация

Короткий адрес: https://sciup.org/148325019

IDR: 148325019   |   DOI: 10.18137/RNU.V9187.22.04.P.149

Текст научной статьи Программное обеспечение формирования онтологии предметной области и ее кодогенерации

В современной И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">

The object of the ontology machlne estate name="stand" extra_optlons="test" description="car stands' /> eState name="drive" extra_options="test" description="the car drive" />

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> eMethod name="drive" options^"speed, diraction" description="car drive" /> einterfaces /> e/Actor>

Программное обеспечение формирования онтологии предметной области ...

Процесс кодогенерации

После получения 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 г.).
Еще
Статья научная