Счетчики








Глава 4. Модель предметной области

4.1 Основные принципы построения МПО

4.1.1 Требования к МПО

  • МПО должна адекватно отражать феномены предметной области, представленной в базе данных.

  • МПО должна быть интуитивно понятна и/или иметь возможность быть представима как интуитивно понятная для неподготовленного пользователя.

  • МПО используется на этапе анализа ЕЯ и Q-генерации, и, следовательно, должна быть представима в виде семантической сети, используемой при анализе.

  • МПО используется на этапе построения запроса к базе данных , а также на этапе обработки результата от БД и поэтому должна хорошо отображаться на схему базы данных.

  • МПО должна иметь возможность к расширению, т.е. появлению новых элементов без существенной переделки всей модели.

  • МПО должна обладать способностью отражать ПО для целого класса СИД.

4.1.2 Основные феномены предметной области, которые могут отражаться в МПО:

  • Классы и объекты

  • Отношения между классами и объектами

  • Атрибуты (свойства) классов и объектов

  • Ситуации

  • Зависимости между значениями атрибутов

  • Область допустимых значений атрибутов

  • Наборы единиц (масса, пространственные характеристики, время и пр.) и перевод из одной единицы в другую внутри одного набора

  • Множества, объединяющие объекты

  • Списки значений

4.1.3 Ядро и расширения

МПО имеет универсальную часть, которая имеет отношение скорее к идеологии применения семантически-ориентированного анализа к структурированным источникам данных (в частности, реляционные и объектные СУБД, XML-документы, RDF-коллекции), нежели к какому-либо приложению или реализации этого подхода. Эта общая универсальная часть называется ядром МПО.

4.2 Структура МПО

Описываемая модель предметной области состоит из четырех основных частей:

  • Расширенная схема классов

  • Хранилище семантических компонентов

  • Концептуальные структуры

  • Словарь

Рис. 4.2-1 Структура и источники МПО

Эти части выделены с точки зрения различия в структуре и характере хранящихся данных в каждой составляющей. Однако элементы отдельных частей МПО тесно связаны. Так, в хранилище семантических компонентов задаются множества, каждое множество имеет ссылку на некоторый класс в схеме классов; словарь представляет собой множество словарных статей, многие классы которых имеют семантические ориентации, реализованные как ссылки на схему классов и хранилище сем. компонентов.

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

4.2.1 Расширенная схема классов (РСК)

Эта составляющая модели ПО является центральной и обязательной частью. По своей структуре РСК представляет собой ER-диаграмму с некоторыми расширениями. В числе расширений - задаваемая иерархия типов, параметры атрибутов, в частности, области значений для атрибутов.

4.2.1.1 Классы и отношения

Схема классов представляет собой множество классов, связанных отношениями. В схему не входят все объекты, хранящиеся в источниках данных, и это позволяет охарактеризовать схему как статическую структуру, инвариантную к изменению содержимого СИД и отражающую его структуру.

Классы и объекты соответствуют классическому ОО-подходу, для них характерно наследование, в т.ч. множественное. Классу соответствует набор атрибутов, атрибуты имеют тип.

Отношения между классами аналогичны связям в диаграммах сущность-связь (ERD). Отношения двунаправлены. Они могут быть типов 1:1, 1:n, n:m, с признаками обязательности. Отношения между классами не являются сами по себе атрибутами, в классе они описываются т.н. объектными атрибутами. Например, на рис 4.2.1-1 класс "Order" в схеме МПО имеет отношение к классу "Order Items" через объектный атрибут items. Однако атрибут "items" у этого класса имеет тип Последовательность (одному заказу может соответствовать несколько строк). Отношения, таким образом, не принадлежат классам, а относятся к схеме в целом.

Рис. 4.2.1-1 Схема классов предметной области "North Wind"

Неотъемлемой частью схемы являются параметры атрибутов классов. Среди параметров атрибутов - битовые признаки, например, идентифицирующий, выдаваемый. Идентифицирующим помечаются атрибут класса, если их значения однозначно определяют конкретный объект класса. Выдаваемые атрибуты по умолчанию выдаются пользователю в ответе на ЕЯ-запрос, если их класс участвует в Q-запросе. Атрибуту также может быть присвоена единица измерения и область возможных значений.

Атрибуты классов могут быть вычисляемыми, т.е. их значение зависит от значений атрибутов объекта, или объектов, связанных с данным. Для атрибутов, являющихся атрибутами классов, связанных с данным, в качестве выражения задается аксессор (путь по классам - см. п. ...). Вычисляемые атрибуты, а также принадлежащие другим классам, но доступные непосредственно как атрибуты данного, называются виртуальными.

На рис. 4.2.1-2 показана схема, выражающая основные связи между элементами схемы классов.

4.2.1.2 Иерархия типов

Типология МПО близка к типологии ODMG (ODMG 1993) и языка ODL (Object Definition Language, см. п. 1.4.2.2) и изображена на рис. 4.2.1-3.

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

Простые предопределенные типы наследуются от одного абстрактного предка Простой и включают: числовой, строковый, логический, дата, время, дата-время.

Структура является предопределенным набором любых типов, например:

ФИО = (Фамилия: строка, Имя: строка, Отчество: строка);

Типы-коллекции включают множества, списки и последовательности. Множества определяются только для объектов одного класса, список задается явным перечислением элементов, последовательность - это явным образом упорядоченный список.

Класс также является типом. Для структуры и классов задается набор атрибутов.

4.2.2 Хранилище семантических компонентов

4.2.2.1 Множества

Множества неявно определяют набор объектов определенного класса. Принадлежность объекта множеству задается недоопределенным описанием характеристик объекта. Например, условия на значения атрибутов, принадлежность другим множествам и т.д.

Самый общий тип множеств - экстент (множество объектов данного класса). При определении класса неявно определяется и экстент.

Остальные множества задаются на языке, близком к Q, но без части, определяющей список выдаваемых атрибутов. Например, множество Женщины можно определить как "подмножество множества Сотрудники, у которых пол - женский":

create set Women as
from Employee x
where x in Employees
and x.sex in Female

В этом примере Female - это список, определенный следующим образом:

List Female = ('f', 'F', 'w', 'W')

Матери - это пересечение множеств Женщины и Родители:

create set Mothers as
select x
from Employee x
where x in Women
and x in Parents

Существенно, что в определении множества необходимо задавать класс элементов (даже если определяется подмножество экстента).

4.2.2.2 Списки

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

4.2.2.3 Последовательности

Последовательность - список из упорядоченных элементов. Порядок в последовательности задается произвольным образом. Элементом может быть не только значение, но также множество, список, и другая последовательность. В ЕЯ-интерфейсе последовательности являются средством для описания шкал, не заданных непосредственно в СИД. Последовательность может иметь значение для запросов типа "военнослужащие старше майора", "сотрудники с образованием выше BA". Для этого МПО содержит последовательности званий и иерархию уровней образования, составленную из последовательностей. Таким образом, иерархии в МПО могут сочетаться с последовательностями и быть построенными с их помощью.

4.2.2.4 Радикалы

Радикалами называются структуры, являющиеся фрагментами Q-запроса и доопределяющие некоторые параметры объектов, выдаваемых в запросе. В качестве характерного примера можно привести радикал, выражаемый в ЕЯ словами "вчера", "вчерашний". Заданное толкованием, семантику этого слова можно описать как "с датой на 1 меньше сегодняшней". Формально это выражается в семантической сети структурой Q-языка Предикат, с заменой конкретного атрибута типом Date (т.к. не определено, какая именно дата - в базе может быть несколько атрибутов данного типа). Сетевое представление для этого радикала приведено на рис. 4.2.2-1.

Рис. 4.2.2-1 Сетевое представление радикала "вчера"

Радикалы являются средством для описания семантики ЕЯ-выражений, которые нельзя выразить другими способами (отношениями, множествами, атрибутами). Альтернативой радикалам являются толкования, однако толкования являются одним из видов простой текстовой подстановки лексемы в запросе, и в силу своей простоты имеющие побочные эффекты. Радикалы можно определить как толкования, прошедшие анализ и представленные в формальном виде.

Характерной особенностью радикалов является недоопределенность составных частей Q-представлении. Например, тип Дата можно считать недоопределенным атрибутом данного типа, поле Адрес присутствует как у сотрудников, так и компаний, и в радикале возможно существование такого недоопределенного атрибута, который затем в анализе ЕЯ-запроса должен доопределиться. Концептуально введение недоопределенности в виде радикалов следует парадигме НЕ-факторов (Нариньяни 1982).

4.2.3 Концептуализации

4.3 Представление МПО в виде семантической сети

МПО при анализе используется в виде статической семантической сети. Принципы строения сети МПО следующие:

  • Классы, атрибуты, области значений, типы, множества, списки представляются в виде узлов в сети МПО SNOOP.

  • Признаки атрибутов, типы атрибутов, выражения для вычисляемых атрибутов задаются как поля узлов-атрибутов.

  • Структурные отношения, связывающие классы, отношения, атрибуты, множества, задаются через связи сети МПО SNOOP.

4.3.1 Корневой класс ADMNode

Предок для классов узлов, используемых в МПО. Для этого класса задается уникальный числовой идентификатор. По этому идентификатору осуществляется ссылка по ориентации (id - аналог поля ОР в старой системе компонентов). Также определяется строковое имя для отображения пользователю.

ADMNode: (object)
[
id: цел;

name: стр
];

4.3.2 Класс: AClass

Для представления классов в сети МПО используется класс узла AClass. В этом классе не вводится новых полей:

AClass: (ANode)

Наследование, привязка к атрибутам задаются через с-отношения SubClassOf, AttrOf.

4.3.3 Атрибут: AAttr, Attr, CAttr, GAttr, OAttr

Атрибут в диаграмме сущность-связь задается вместе с классом, но в сети МПО он является отдельным узлом. Определение класса этого узла:

AAttr: (ADMNode)
[
isDefault: цел; /* Признак того, что этот атрибут входит в число выдаваемых атрибутов для класса */

]

Attr: (AAttr)

CAttr: (Attr, Expr)

GAttr: (AAttr)

OAttr: (AAttr)

Области значений атрибутов связываются с-отношениями AreaOf с узлами AArea. Гиператрибут задается через с-отношения GAttrOf, которым гиператрибут связывает атрибуты. Тип для гиператрибута не задается (нет с-отношения TypeOf с узлом AType).

Вычисляемые атрибуты содержат определение выражения, задающего зависимость его значения от значений атрибутов данного объекта и атрибутов объектов, связанных с ним. Выражения могут включать:

  • + (для числовых и строковых операндов)

  • - (для числовых операндов)

  • * (для числовых операндов)

  • / (для числовых операндов)

  • ( )

  • логические (and, or, not) для логических операндов

Функции:

  • строковые (выделение подстроки, преобразование регистра, перевод строки и т.д.)

  • преобразование формата (например, из строки в число, из даты в строку и т.д.)

  • функции даты (день, месяц, год, день недели, интервал между датами и т.д.)

  • математические (корень, логарифм, тригонометрические и т.д.)

  • агрегатные (сумма, количество, среднее, минимум, максимум) для атрибутов, которые являются множествами объектов или значений. Пример: сумма заказа - CAttr относится к объекту Заказ, но вычисляется как сумма (агрегатная функция sum) атрибута Сумма объектов СтрокаЗаказа, связанных с данным заказом.

В последнем случае выражение задается, по сути, вложенным Q-запросом VQuery.

4.3.4 Область значений: NArea

NArea: (ANode)
[
area: корт
]

Этот узел - для задания области значений числовых атрибутов.

Тип области значений "гиперзначение" задается через узлы класса AList (список), причем связь с атрибутом обозначается, так же как и для NArea - с-отношением AreaOf.

Для числовых атрибутов кортеж может содержать числовые значения (единичные), а также шкалы из двух числовых значений, означающих интервалы:

[ "16, 22", 25, 28, "30, 50", 65 ]

 

4.3.5 Единица: Unit

Unit: (ANode)

Единицы связаны между собой с помощью узлов пересчета AUnitRecalc и с-отношений UnitRecalcOf1 и UnitRecalcOf2.

4.3.6 Набор единиц: UnitSet

Unit: (ANode)

Обозначает набор родственных единиц измерения (тонны, кг, граммы, фунты - вес; м, км, см - длина, ширина, высота, и т.д.). Пример запроса - "все цены".

UnitSet объединяет Unit'ы с помощью связей unitOfSet.

4.3.7 Пересчет единиц: UnitRecalc

AUnitRecalc: (ANode)
[
exp1to2: стр;
exp2to1: стр
]

Узлы пересчета содержат выражения для пересчета от единицы №1 к №2 и обратное выражение.

4.3.8 Множество значений: AValSet, VSet, VSetQuery

AValSet: (ANode);

VSet: (AVSet);

VSetQuery: (AValSet, AQuery);

GVal (гиперзначение) представляет собой набор значений одного типа, и/или объединение других гиперзначений. Порядок элементов не имеет значения.

VSetQuery - определение запроса, возвращающее список простых значений. Строение запроса см. "Структура Q-языка". VSetQuery также используется как вложенный запрос в Q.

Тип элементов задается связью typeOf с узлами AType. Списки могут быть объединены в более общий список. Это выражается связью superListOf, объединяющей гиперзначения со вложенными.

4.3.9 Последовательность: ASeq, OSetSeq, VSeq

ASeq: (ANode);

OSetSeq: (ASeq);

VSeq: (ASeq);

Последовательность задает порядок элементов (старше-младше, больше-меньше и т.д.). Элементами OSetSeq являются множества одного класса, элементами VSeq - значения одного типа, последовательности или списки. Порядок элементов задает с-отношение nextOf (от предыдущего к последующему узлу). Элементы задаются как принадлежащие конкретному множеству через с-отношение seqOf.

4.3.10 Множества: ASet, OSet, OSetQuery

ASet: (ANode);

OSetQuery: (ASet, AQuery);

Множество OSet в МПО определяется тем же способом, что и запрос Q в представлении семантической сетью, с тем отличием, что узел Get может отсутствовать. Множества могут объединяться в последовательности c помощью узла OSetSeq.

 

4.3.11 Матрица типов узлов и допустимых связей между ними

Классы узлов

AClass

AAttr

Area

AList

ASet

ASeq

Unit

UnitSet

UnitRecalc

AClass

subClassOf

     

classOf

       

AAttr

attrOf

gAttrOf

             

Area

 

areaOf

             

AList

 

areaOf

 

subListOf

         

ASet

       

nextOf

       

ASeq

       

seqOf

       

Unit

             

unitOfSet

 

UnitSet

 

unitSetOf

             

UnitRecalc

           

unitRecalcOf1,
unitRecalcOf2

   

Отношение направлено от узла1 к узлу2.

4.4 Отображение МПО на модель источника данных

4.5 Связь МПО со словарем

4.6 Процесс построения МПО

4.7 Реализация

4.7.2 Программная реализация МПО

МПО активно используется на этапе отладки продукционной программы, на этапе построения ЕЯ-интерфейса и его эксплуатации. Кроме того, универсальность МПО обусловлена еще и разными областями приложений ЕЯ-интерфейсов к структурированным источникам данных (модель клиент-сервер для СУБД, интернет/интранет модель для поиска по XML).

Исходя из этих соображений, МПО должна быть оформлена в виде универсального компонента, не зависимого от языка разработки. В качестве компонентной модели должна использоваться COM.

4.7.3 Сериализация МПО

МПО должен иметь текстовый формат хранения, понятный человеку и пригодный для ручной правки, и одновременно пригодный для машинной обработки (парсинг). В качестве такого формата используется XML.


Источник: http://www.aha.ru/~zhigalov/science/disser/disser.htm (Компьютерный диалог)
Дополнительно
Дисертация Владислава Жигалова
http://www.aha.ru/~zhigalov/science/disser.zip - Word'97 (zip - 336k)