- •Национальный исследовательский
- •Университет
- •В ы п у с к н а я р а б о т а
- •Введение
- •Глава 1 общие сведения об онтологиях и языках для спецификации онтологий
- •1.1. Содержание онтологии
- •1.2 Цели создания онтологий
- •1.3. Области применения онтологий
- •1.4. Формальная концептуализация и формальные онтологии
- •1.5. Формальная модель понятия и концептуальные языки
- •Глава 2 бинарная модель знаний
- •2.1. Синтаксис имен, используемых в бмз
- •2.2. Бинарная Модель Данных
- •2.2.1. Спецификация типов данных
- •2.2.2. Конструкторы типов данных
- •2.2.3. Спецификация функций
- •2.2.4. Спецификация структуры объектов
- •2.2.5. Синтаксис языка структурной спецификации
- •2.2.6. Атрибутные условия и интервальные ограничения
- •2.2.7. Структурные схемы
- •2.2.8. Представление данных в бмд
- •2.2.9. Логические предложения.
- •Глава 3 язык запросов для бинарной модели данных
- •3.1. Примеры запросов
- •3.2. Описание запросов
- •3.3. Описание алгоритма трансляции.
- •3.4. Примеры работы транслятора.
- •Глава 4 описание и использование программы, реализуюшей транслятор
- •4.1. Описание интерфейса программы.
- •4.2. Задание схемы
- •4.3. Использование транслятора в программном коде.
- •4.4. Программа с подключенной базой данных.
- •Приложение
- •Код программы Файл Onthology.Cs
- •Файл Translator.Cs
- •Заключение
- •Литература
- •Содержание
2.2.4. Спецификация структуры объектов
В БМЗ понятия делятся на классы и (бинарные) связи. Простейшими структурными предложениями в БМЗ являются:
C [A1: T1, A2: T2,…, An: Tn], (2.1)
(C L D), (2.2)
(C L D) [A1: T1, A2: T2,…, An: Tn] . (2.3)
Здесь С, D – имена классов, Aj – имена атрибутов и Tj – спецификации типов данных (1jn). Эти предложения определяют соответственно следующие универсумы понятий:
UC = String0 Surr SurrC {[A1 : x1, A2: x2,…, An: xn] | xj “Tn” (1jn) },
UL = String0 Surr(Surr,Surr)SurrL { [C: x, D: y] | x SurrC, ySurrD },
UL = String0 Surr(Surr,Surr)SurrL
[C: x, D: y, A1: x1, A2: x2,…, An: xn] | x SurrC, ySurrD, xj “Tn” (1jn) }.
Замечание. Порядок компонент в кортежах не имеет значения. В частности, [C: x, D: y] = [ D: y, C: x]. Но тогда, если L – бинарная связь, заданная на одном классе С и специфицируемая структурным предложением (C L C), то не ясен результат применения операции «точка» к кортежу [C: x, C: y] : либо [C: x, С: y].С = x, либо [C: x, D: y].С = у. Чтобы избежать эту неопределенность, будем использовать роли 1-С и 2-D, считая, что с предложением (C L C) неявно ассоциировано предложение: (1-C: С L 2-С: C).
В структурные предложения можно включать роли. В сущности, роль – это атрибут, значениями которого служат не элементы типа данных, а суррогаты, обозначающие объекты – возможные примеры класса. Например, включив роли R и S в предложение (3.2), получим следующее структурное предложение, специфицирующее бинарную связь L :
(R:C L S:D). (2.4)
Предложение (3.3) следующим образом определяет универсум связи L:
UL = String0Surr(Surr,Surr)SurrL {[R: x, S: y] | x SurrC, ySurrD } (2.5)
Мы видим, что элементами универсума, определяемого предложением (2.4), являются суррогаты и кортежи вида е = [R: x, S: y], тогда как определяемый предложением (2.5) универсум состоит из тех же суррогатов и кортежей вида e’ = [C: x, D: y]. В первом случае мы можем применять операцию «точка» с атрибутами R и S, во втором случае – с атрибутами C и D :
e.R = x, e.S = y, e’.R = x, e’.R = y.
Замечание. Очевидно, что предложения (C L D) и (С: C L D: D) эквивалентны в том смысле, что оба эти предложения определяют один и тот же универсум. Таким образом, во втором из этих предложений имя С используется двояко – как имя атрибута для класса и как имя этого класса.
Роли могут также входить в часть структурного предложения, заключенную в квадратных скобках. Рассмотрим, например, предложение
(R:C L D)[P:E, A: String0, B: Integer].
Оно определяет универсум
UL = String0 Surr(Surr,Surr) SurrL
{ [R: x, D: y, P: z, A: u, B: v] | xSurrC, ySurrD, z SurrE, uString0,vInteger }.
Таким образом, к каждому элементу e =[R: x, D: y, P: z, A: u, B: v] универсума для L применимы (через операцию «точка») роли (объектные атрибуты) R, D, P и атрибуты A, B, принимающие значения в примитивных типах данных String, Integer:
e.RSurrC, e.DSurrD, e.PSurrE, e.A String, e.B .
В общем случае атрибут, являющийся ролью, принимает значение во множестве суррогатов, которые могут обозначать примеры произвольного понятия. Но понятие может быть не только простым, но и составным. Для образования составных понятий мы будем использовать три конструктора, подобные конструкторам типов.
Конструктор (*).
Составное понятие С(*) имеет следующий универсум:
UC(*) = Surr String0 {{x1, x2,…, xp} | xj SurrC (1jp) }.
Экстенсионал ExtC(*) понятия С(*) имеет в качестве множества экземпляров (примеров) некоторое подмножество ЕC(*) UC(*) , но такое, что
{x1, x2,…, xp}ЕC(*) ó xj EC для всех 1j n.
Конструктор |.
Понятие (C1 | С2 | …| Сn) имеет следующий универсум:
U(C1 | C2 |…|Cn) = String0 SurrSurrC1 SurrC2 …SurrCn.
Экстенсионал понятия (C1 | С2 | …| Сn) имеет в качестве множества экземпляров некоторое подмножество Е(C1 | C2 |…|Cn) U(C1 | C2 |…|Cn) , но такое, что для всякого
x SurrC1 SurrC2 …SurrCn.
x Е(C1 | C2 |…|Cn) ó xECj для некоторого 1j n.
Конструктор ( , ,…, ).
Понятие (K1, K2,…,Kn) имеет следующий универсум:
U(K1, K2,…, Kn) = String0 Surr {(z1, z2,…, zn) | zj = Aj: xj , если Kj= Aj : Cj , и
zj = xj , если Kj= Cj (xj SurrCj ,1jn) }.
Здесь Aj – имя атрибута, а Cj – имя понятия. Экстенсионал понятия (K1, K2,…, Kn) имеет в качестве множества экземпляров некоторое подмножество Е(K1, K2, …, Kn) U(K1, K2,…, Kn) , но такое, что
(z1, z2,…, zn) Е(K1, K2,|…, Kn) ó zjEKj для всех 1j n.
Пример 2.6. Составное понятие (A : C, D, E) имеет универсум
Surr String0 {(A : x, y, z) | x SurrC, ySurrD, z SurrE }.