
- •Национальный исследовательский
- •Университет
- •В ы п у с к н а я р а б о т а
- •Введение
- •Глава 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
– спецификации типов данных (1j
n).
Эти предложения определяют соответственно
следующие универсумы понятий:
UC
= String0
Surr
SurrC
{[A1
:
x1,
A2:
x2,…,
An:
xn]
| xj
“Tn”
(1
j
n)
},
UL
= String0
Surr
(Surr,Surr)
SurrL
{
[C:
x,
D:
y]
| x
SurrC,
y
SurrD
},
UL
= String0
Surr
(Surr,Surr)
SurrL
[C:
x,
D:
y, A1:
x1,
A2:
x2,…,
An:
xn]
|
x
SurrC,
y
SurrD,
xj
“Tn”
(1
j
n)
}.
Замечание. Порядок компонент в кортежах не имеет значения. В частности, [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,
y
SurrD
} (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,
y
SurrD,
z
SurrE,
u
String0,v
Integer
}.
Таким образом, к каждому элементу e =[R: x, D: y, P: z, A: u, B: v] универсума для L применимы (через операцию «точка») роли (объектные атрибуты) R, D, P и атрибуты A, B, принимающие значения в примитивных типах данных String, Integer:
e.RSurrC,
e.D
SurrD,
e.P
SurrE,
e.A
String,
e.B
.
В общем случае атрибут, являющийся ролью, принимает значение во множестве суррогатов, которые могут обозначать примеры произвольного понятия. Но понятие может быть не только простым, но и составным. Для образования составных понятий мы будем использовать три конструктора, подобные конструкторам типов.
Конструктор (*).
Составное понятие С(*) имеет следующий универсум:
UC(*)
= Surr
String0
{{x1,
x2,…,
xp}
| xj
SurrC
(1
j
p)
}.
Экстенсионал
ExtC(*)
понятия
С(*)
имеет в качестве множества экземпляров
(примеров) некоторое подмножество ЕC(*)
UC(*)
,
но такое, что
{x1,
x2,…,
xp}ЕC(*)
ó
xj
EC
для всех 1
j
n.
Конструктор |.
Понятие (C1 | С2 | …| Сn) имеет следующий универсум:
U(C1
| C2
|…|Cn)
=
String0
Surr
SurrC1
SurrC2
…
SurrCn.
Экстенсионал
понятия (C1
|
С2
|
…|
Сn)
имеет в качестве множества экземпляров
некоторое подмножество Е(C1
| C2
|…|Cn)
U(C1
| C2
|…|Cn)
,
но такое, что для всякого
x
SurrC1
SurrC2
…
SurrCn.
x
Е(C1
| C2
|…|Cn)
ó
x
ECj
для некоторого 1
j
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
,1
j
n)
}.
Здесь
Aj
– имя
атрибута, а Cj
– имя понятия. Экстенсионал понятия
(K1,
K2,…,
Kn)
имеет в качестве множества экземпляров
некоторое подмножество Е(K1,
K2,
…, Kn)
U(K1,
K2,…,
Kn)
,
но такое, что
(z1,
z2,…,
zn)
Е(K1,
K2,|…,
Kn)
ó
zj
EKj
для всех 1
j
n.
Пример 2.6. Составное понятие (A : C, D, E) имеет универсум
Surr
String0
{(A
: x,
y, z)
| x
SurrC,
y
SurrD,
z
SurrE
}.