Язык модели данных (ЯМД)
В сообществе разработчиков баз данных проблема создания формального языка, который позволял бы формировать данные и запросы с использованием естественного языка, рассматривается уже давно [2,3]. Предлагаемый язык модели данных (ЯМД) для БД с УМД решает эту проблему.
ЯМД – это внутренний непроцедурный язык описания и манипулирования данными, хранящимися в БД с УМД. Он состоит из двух частей: языка описания (определения) данных и языка управления (манипулирования) данными, хранящимися в БД с УМД.
ЯМД, как любой другой формализованный язык, имеет свой синтаксис и семантику (см. таблица 1).
Основным элементом языка является строка метаописания.
Структура строки метаописания:
{…} {…} … {…},
где информация, заключенная в фигурные скобки {…}
называется элементом строки метаописания.
Строка метаописания включает произвольное число элементов, которые определяют конкретные значения понятий УМД.
Набор понятий, относящихся к разделу, объекту, событию формируется между разделителями косая черта (/).
Последовательность разделителей косая черта (/) между операторами языка <Раздел>,
<КлассО>, <КлассПО>, <ЭкзО> определяет иерархию разделов, классов объектов, классов параметров объектов, экземпляров объектов соответственно.
Элемент предметной области описывается внутри зоны, ограниченной парой косых черт (/…/). Чередование синтаксических выражений языка внутри этой зоны – произвольное.
Знак равно (=) является оператором присвоения, который для указанного понятия определяет его значение, в конце которого ставится обязательный символ точка с запятой (;).
Фактически строки метаописания ЯМД это формализованные предложения естественного языка, которые описывают деятельность предприятия, его основные классификаторы и справочники, а также другие структурированные и неструктурированные документы и прочее.
ЯМД позволяет формализовать описание ПрО и сформировать модель предприятия (его метаданные и данные).
Примеры строки метаописания:
{<Раздел> = Конференция;/
<КлассО> = Компания;
<ТипО> = ООО;
<ТипО> = ЗАО
;<ТипО> = ОАО
; <ТипХО>[](строковая,любая,фактическая) = Юридический адрес
; <ТипХО>[](строковая,любая,фактическая) = Телефон
;/
<КлассО> = Специалист;
<ТипО> = -;
<ТипХО>[](строковая,любая,фактическая) = Гражданство
; <ТипХО>[](строковая,любая,фактическая) = Телефон
; <ТипХО>[](строковая,любая,фактическая) = Эл.адрес
;/
<КлассО> = Материалы;
<ТипО> = -;
},
где
<ТипХО> [ ] ( , , ) - тип характеристики экземпляра объекта (
<ТипХО> [единица измерения - только для объекта с численной характеристикой
] (тип данных:
логическая;
строковая;
численная;
дата,
признак нахождения данных в справочнике:
справочная;
любая,
тип характеристики:
паспортная;
фактическая) ).
Данная строка метаописания определяет раздел «Конференция», классы объектов «Компания», «Специалист», «Материалы», их типы «ООО», «ЗАО», «ОАО», «-», иерархии подчиненности классов объектов (класс объектов «Материалы» подчинен классу объектов «Специалист», который в свою очередь подчинен классу объектов самого высшего уровня (без владельцев) - «Компания»), а также типы характеристик объектов «Юридический адрес», «Телефон», «Гражданство», «Эл.адрес» с соответствующими им атрибутами («строковая», «любая», «фактическая»). Исполнение данной строки с помощью приложения, имеющего доступ к БД с УМД, позволит записать все эти метаданные в базу.
{<Раздел> = Конференция
; /
<КлассО> = Компания
; <ТипО> = ООО
; <ЭкзО> = Dbcreator
; <ТипХО>[](строковая,любая,фактическая) = Юридический адрес
; <ЗначХО> = г.Харьков,пр.Правды,д.3к.7
; <ТипХО>[](строковая,любая,фактическая) = Телефон
;<ЗначХО> = (057)3331234
;}
Данная строка метаописания определяет экземпляр объекта «Dbcreator» типа «ООО» и класса объектов «Компания», который (экземпляр) входит в состав раздела «Конференция». А также значения типов характеристик объекта «Юридический адрес» и «Телефон».
Исполнение данной строки с помощью приложения, имеющего доступ к БД с УМД, позволит записать все эти данные в базу.
С помощью ЯМД можно манипулировать данными реляционной БД подобно языку SQL-запросов, но в собственной терминологии, не привязанной к структуре данных (ЯМД не требует знания модели данных) и, не прибегая к контекстному поиску. При этом ЯМД прост в освоении и понятен не только программистам, но и специалистам предметной области.
Для получения списков классов объектов, событий, их экземпляров, типов, характеристик, значений и т.д. в синтаксисе языка предусмотрены некоторые специальные выражения, так называемые маски: «*.*»,«*.**», «*.*?», в операторе присваивания.
Операторы ЯМД используются также:
при реализации механизма распределения прав доступа к данным (вплоть до любого конкретного элемента данных);
при создании отчетных документов, которые могут формироваться, как с помощью OLAP-технологии, так и с помощью иных средств, и в некоторых других случаях.
Документальная и программная поддержка ЯМД включает:
описание синтаксиса языка;
интерпретатор языка для СУБД Oracle (реализован на языке PL/SQL);
описание интерфейса доступа к стандартным процедурам интерпретатора языка;
средства формирования строк метаописания элементов данных;
методику составления строк метаописания для записи новых данных или проведения конвертации данных из БД других информационных систем, построенных на различных платформах (таких как Oracle, PostgreSQL, Access, Lotus Notes), в БД с УМД;
программу конвертации данных.