Основные задачи и принципы работы Web-сервера ЭЗОП
1. Общие требования
Разрабатываемый Web-сервер должен представлять собой среду в сети Интернет для коллективного создания пользователями библиотек формализованных знаний для различных предметных областей и создания (фиксации)формализованных языков этих областей. По организации этот сервер должен быть близок к Web_серверу "Википедиа". Главное отличие от сервера "Википедиа" состоит в том, что страницы разрабатываемого сервера содержат части, которые пишутся пользователями на формальном открытом языке. На основании этих частей система строит семантическое представление страницы и язык запросов к ней.
При формировании новой страницы пользователь должен использовать какую-либо из существующих страниц в системе в качестве среды новой страницы (при этом новой страницей наследуется язык и семантика страницы-среды) и может использовать другие страницы системы для формирования семантики текущей (формируемой) страницы без отображения текстов используемых страниц на формируемой странице. В процессе формирования страницы пользователю должен быть обеспечен доступ к словарям и текстам, хранящимся в системе, для использования в формируемой странице.
Сформированную страницу можно сохранить в системе с сохранением прежнего имени (но в новой версии) или под новым именем. Любую страницу, хранящуюся в системе, можно сделать текущей для редактирования или для обращения к странице с вопросами. Язык запросов и формирования страницы, определяется языком страницы-среды,содержанием текущей страницы и видимыми из текущей страницы языковыми средствами, введенными на других страницах.
В системе должен поддерживаться многопользовательский режим с поддержкой версионности текстов и обеспечения безопасности и целостности содержания взаимосвязанных текстов.
Система должна поддерживать процессы формирования и ведения библиотек,включая процессы пополнения библиотеки, организации разделов, сортировки, поиска текстов, публикации версий текстов, предоставление пользователям возможности создания собственных классификаций или своей системы вложенных папок, по которым пользователь может распределить страницы системы.
2. Терминология и некоторые определения
Онтология - это спецификация на формальном языке договоренностей группы специалистов о том, что как называется в их области и каким свойствам удовлетворяет.
Простые онтологии представляют собой системы классификаций, включающие:
объекты, классы объектов, подклассы, свойства, значения свойств.
Более сложные онтологии представляют собой теории, то есть, кроме системы классификации, в онтологии могут быть дополнительные (определяемые пользователями) операции и отношения, включая отношение равенства, которые связываются аксиомами (формулами). Типы сложности онтологий определяются типом сложностей аксиом. (Например, аксиомы только в виде равенств с кванторами всеобщности. Более сложные, в виде хорновских формул.) Стандартным образом определяются формулы, которые являются следствиями аксиом.
Сигнатурой (словарем) онтологии называется множество всех терминов, используемых в онтологии с указанием типов этих терминов.
Множество всех правильно построенных выражений (термов и формул), построенных из терминов онтологии, профакторизованное по отношению эквивалентности (равенства) на них, следующего из аксиом онтологии, называется идеальной семантикой онтологии.
Для аксиом общего вида, задача определения является ли формула следствием из аксиом, как известно, алгоритмически неразрешима, и идеальная семантика онтологии, в этом случае, является недоступным для приложений объектом. Поэтому, во многих приложениях стараются ограничиться типом аксиом, для которых эта задача разрешима. Но так получаются только достаточно простые (по теореме Гёделя) онтологии, которые не могут покрыть многие, интересные для приложений области.
С другой стороны, так как для систем представления знаний неполнота представленных знаний является естественным свойством, то мы не будем требовать от компьютерной системы, чтобы она умела находить все следствия. Но, если некоторое следствие уже найдено, и оно полезно, то в системе должны быть средства сделать это следствие доступным. В связи с этим вводится понятие конечной аппроксимации семантики онтологии, которое строится аналогично аппроксимациям в виде машинным чисел для бесконечных алгебр целых и вещественных чисел.
Конечной аппроксимацией идеальной семантики онтологии называется пара, состоящая из некоторого конечного множества термов данной онтологии и некоторого подмножества отношения эквивалентности идеальной семантики на них, которые вычисляются эффективными алгоритмами. Одна аппроксимация считается более точной, чем другая, если первая содержит вторую.
В проектируемой системе предполагается хранить не только текст онтологии, но и некоторую аппроксимацию ее семантики, на основании которой проводятся необходимые быстрые вычисления (например, в алгоритме грамматического анализа). Пользователь, может расширять аппроксимацию онтологии, вводя в онтологию формулы-следствия аксиом, либо с помощью вопросов и систем логического вывода.
Онтологии делятся на более общие и более конкретные. Онтология, которая получена из некоторой другой онтологии добавлением к ней аксиом, по определению считается более конкретной, чем исходная.
Онтологии связываются отношением использования и интерпретации (реализации).
Говорят, что первая онтология используется во второй, если все термины и аксиомы первой онтологии входят во вторую.
Интерпретацией первой онтологии во второй называется некоторая третья онтология, содержащая первую и вторую, в которой каждый термин первой онтологии выражается некоторой формулой во второй с сохранением типов терминов и так, что аксиомы первой онтологии с подставленными в них вместо терминов их выражений из второй являются следствиями аксиом второй онтологии.
Некоторые общие онтологии создаются в системе как заготовки (модули) для использования в других онтологиях.
Среди онтологий могут быть онтологии, описывающие типы данных, схемы баз данных, схемы запросов к базам данных и онтологии, описывающие конкретные задачи.
В системе должна поддерживаться функция построения ответов на некоторые вопросы к конкретной онтологии. Вопросы используются при опробовании и отладке формируемых онтологий и при построении онтологий для задач моделирования. В системе поддерживаются общие типы вопросов, относящиеся к ядру системы, и вопросы, язык которых определяется в конкретных онтологиях.
К общим вопросам, поддерживаемым ядром системы, относятся вопросы:
- Какие объекты данного класса введены или используются в онтологии?
- Какие подклассы имеются у данного класса в онтологии?
- Является ли выражение объектом (подклассом) данного класса, которое тоже может задаваться выражением?
- Равны ли два выражения в текущей аппроксимации онтологии?
- Нельзя ли вывести равенство двух выражений с использованием существующих средств расширения аппроксимаций онтологий?
- Чему равно выражение (в аппроксимации или с расширением аппроксимации)?
Языковые выражения (на формальном открытом языке системы) используются для задания вопросов к конкретной онтологии или используется для расширения онтологии или ее аппроксимации.
С каждой онтологией связывается ее идентификатор (который может быть скрыт от пользователя), название, онтология-среда, текст онтологии, конечная аппроксимация ее семантики, номер версии, время создания, автор.
Кроме того, с каждой онтологией связываются языковые конструкции (шаблоны языка), введенные в данной онтологии (включая термины), которые могут быть видны (или не видны) из других онтологий, а также языковые конструкции, введенные в других онтологиях, но видимые из текущей онтологии.
Используя видимые из данной (текущей) онтологии языковые конструкции, пользователь может строить из них сложные выражения вопросов к текущей онтологии или выражения меняющие онтологию или ее язык. Система должна определять синтаксическую и семантическую правильность построенного пользователем выражения, исходя из текущей конечной аппроксимации онтологии. С каждой конструкцией языка связывается действие, которое определяется либо ядром системы (если это конструкция из ядра), либо пользователем в онтологии при определении этой конструкции.
3. Компоненты системы
В системе выделяются две подсистемы:
- Подсистема для работы с библиотекой онтологий;
- Подсистема для работы с выбранной (текущей) онтологией.
3.1. Подсистема для работы с библиотекой онтологий
Подсистема для работы с библиотекой онтологий выполняет стандартные функции в технологии Web 2.0 для просмотра, поиска, классификации и сохранения онтологий и словарей формируемых пользователями. Подсистема должна функционировать в многопользовательском режиме и поддерживать версионность и коллективность разработки онтологий. Кроме того, подсистема обеспечивает передачу необходимых данных в подсистему для работы с текущей онтологией, когда пользователь обращается к некоторой онтологии, как к текущей или как к среде для новой онтологии.
В подсистеме для работы с библиотекой онтологий хранятся:
- онтологии, как отдельные статьи;
- отношение использования между онтологиями и отношение среда - экземпляр в среде;
- сведения об авторах и отношение автор онтологии;
- словарные статьи конструкций языка (шаблонов) внешнего доступа с указанием, в каких онтологиях они определены.
3.2. Подсистема для работы с выбранной (текущей) онтологией
Подсистема для работы с выбранной (текущей) онтологией предназначена:
- для формирования текста и аппроксимации семантики онтологии;
- для формирования и выдачи ответов на вопросы к онтологии;
- для представления аппроксимации семантики онтологии в распространенных языках спецификаций онтологий.
Интерфейс подсистемы должен работать в стандартных браузерах.
Кроме подпрограммы, обеспечивающей интерфейс подсистемы, в подсистеме выделяются три программные компоненты:
- программа грамматического анализа;
- программа вычисления выражения по текущей конечной аппроксимации семантики онтологии;
- программа вычисления выражения с расширением конечной аппроксимации.
В задачу программы грамматического анализа входит преобразование исходного текста, построенного из некоторой комбинации грамматических конструкций (шаблонов), видимых из текущей онтологии, в терм в префиксной форме (дерева грамматического разбора) из идентификатора внешнего шаблона выражения и списка аргументов этого шаблона в виде термов такого же вида. В процессе грамматического анализа программа обращается к программе вычисления выражения по конечной аппроксимации для проверки синтаксических и семантических условий применения шаблонов и правильности построений поддтермов.
На вход программы вычисления выражения по текущей конечной аппроксимации семантики онтологии подается терм, построенный программой грамматического анализа. На выходе программы выдается терм-дескриптор эквивалентный входному терму в данной аппроксимации.
На вход программы вычисления выражения с расширением конечной аппроксимации также подается терм, построенный программой грамматического анализа. Но теперь вычисление терма производится в соответствии с действиями, закрепленными за шаблонами в онтологиях, где эти шаблоны были введены. При этом может измениться аппроксимация текущей онтологии: в аппроксимацию могут быть введены новые термы и
новые эквивалентности между термами, а также новые правила переписывания, по которым будут производиться вычисления в аппроксимации. В результате вычисления могут строиться ответы на вопросы или производиться другие, определенные пользователем во входном выражении действия.
3.3. Взаимодействие подсистем
Пользователь, просматривая списки онтологий, может выбирать любую из онтологий для просмотра ее текста и формирования комментарий к тексту. В зависимости от приоритетов некоторые из пользователей могут вызвать онтологию для редактирования и формирования вопросов к выбранной онтологии (сделать ее текущей) или сделать выбранную онтологию средой для новой онтологии. При этом в подсистеме просмотра онтологий запускается отдельный процесс работы подсистемы с выбранной текущей онтологией.
Подсистеме для работы с текущей онтологией передается идентификатор текущей онтологии. Она по идентификатору загружает всю необходимую информацию, открывает у пользователя Web-браузер с текстом выбранной онтологии и интерфейсом пользователя для работы с текущей онтологией. Работа с текущей онтологией может выполняться на стороне клиента или на стороне сервера (в данном проекте выбран второй вариант). Если выбран режим редактирования текущей онтологии, то черновик текста должен периодически сохраняться на сервере.
При сохранении текущей онтологии в базе онтологий на сервере сохраняется текст онтологии с именем онтологии (и номером версии) и указанием имени среды, в которой текущая онтология разработана. Кроме того, серверу передаются данные, какие онтологии используются в текущей онтологии, и данные о шаблонах языка, определенных в текущей онтологии. На основании переданных данных на сервере в базе данных обновляются данные о текущей онтологии и сохраняются данные аппроксимации текущей онтологии.
Процесс работы с текущей онтологией завершается, когда закрывается страница с интерфейсом текущей онтологии. При этом на сервере в базе данных сохраняется информация о работе пользователя с этой онтологией.