
- •Национальный исследовательский
- •Университет
- •В ы п у с к н а я р а б о т а
- •Введение
- •Глава 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.5. Синтаксис языка структурной спецификации
Здесь мы опишем записанный в метаязыке БНФ синтаксис языка структурной спецификации. При этом мы рассмотрим только некоторое («ядерное») подмножество языка структурной спецификации.
<структурное предложение для класса>::==
<имя класса>[хвост] ||
<имя класса> ISA <имя кдасса>
<структурное предложение для бинарной связи> ::==
(<имя класса> <имя бинарной связи>
<имя класса>)[<хвост>] ||
<имя бинарной связи> ISA<имя бинарной связи>
<хвост> ::== <указатель> < ; <указатель>>*
<указатель> ::== <атрибут> : <спецификация типа данных> ||
<концептуальный атрибут> : <имя класса>
2.2.6. Атрибутные условия и интервальные ограничения
Пусть класс С имеет атрибуты A1, A2,…, An, принимающие значения в типах T1,T2,…,Tn (соответственно). Пусть p – какой-либо предикат, заданный на этих типах, p: (T1,T2,…,Tn) -> Boolean. Тогда выражение p(A1, A2,…, An) называется атрибутным условием для класса С. Аналогично определяются атрибутные условия для бинарной связи L.
Атрибутное условие p(A1, A2,…, An) (обозначим его α) интерпретируется как ограничение на возможные экстенсионалы класса. Точнее, α выделяет из множества суррогатов EsurrC (примеров понятия С) подмножество тех суррогатов, которые удовлетворяют условию α. Это подмножество считается множеством всех суррогатов – примеров понятия, обозначаемого С(α):
EsurrС(α)
= {XEsurrC
|
p(X.A1,
X.A2,…,
X.An)
= true}.
Простейшими атрибутными условиями являются выражения вида A = B, A=/=B, A = a и А=/=а , где A, B – атрибуты, а а – значение атрибута А. Такие атрибутные условия будем называть элементарными. Если C – понятие, имеющее атрибуты A и B, то для понятий C(А = В), C(A=/=B), С(А = а) и С(А=/=а) имеем
EsurrC(A=B)
= {XEsurrC
| X.A = X.B},
EsurrC(A=/=B)
= {XEsurrC
| X.A
X.B},
EsurrC(A=а)
= {XEsurrC
| X.A = а},
EsurrC(A=/=а)
= {XEsurrC
| X.A
а}.
Вообще,
к элементарным атрибутным условиям мы
относим все выражения вида A
θ
B
и
A
θ
b
, где
θ – какое-либо бинарное отношение
между доменами атрибутов A
и
B.
Точнее,
пусть А
и
В
– атрибуты
понятия С,
причем T1
и
T2
– спецификации типов данных – значений
атрибутов А
и
В
(соответственно).
Пусть b“T2”
и
θ
“Т1”
“Т2”
. Тогда
для понятий С(А
θ
В)
и
С(А
θ
b)
имеем
EsurrС(А
θ
В)
= {X
EsurrC
| X.A
θ
X.B
},
EsurrС(А
θ
b)
= {X
EsurrC
| X.A
θ
b
}.
Наконец, элементарными атрибутными условиями мы также будем считать все выражения вида S1 θ S2 и S1 θ s , где S1 и S2 – селекторы, а s – какое-либо значение атрибута S2 .
Базовым атрибутным условием назовем конъюнкцию элементарных атрибутных условий. Записывая такую конъюнкцию, мы будем использовать точку с запятой вместо обозначения AND.
Пример 2.7. Рассмотрим следующие структурные предложения:
C[A:D,K:Integer], D[B:E,L:String,M:Integer], E[R:C].
Для класса С селекторами являются, например, A.B.R.K , A.D.M , A.D.L .Тогда A.B.R.K > A.D.M ; A.D.L = aba является базовым атрибутным условием.
Бинарную
связь
L
между
классами C
и
D
можно
представлять (экстенсионально) в виде
двудольным графа GraphL,
левыми вершинами которого служат
суррогаты вида с#j
EsurrC,
а
правыми – вершины вида
d#j
EsurrD.
Ребра
графа GraphL
определяются суррогатами
l#j
EsurrL:
если l#j.С
= с#r
и
l#j.D
= с#s,
то
вершина
с#r
соединяется
ребром с вершиной
с#s.
Пример 2.8. Пусть для бинарной связи L между классами C и D имеем:
EsurrC = {c#1, c#2, c#3, c#4, c#5},
EsurrD = {d#1, d#2, d#3, d#4, d#5, d#6, d#7},
EsurrL = {l#1, l#2, l#3, l#4, l#5, l#6, l#7, l#8, l#9, l#10} и
l#1.С = c#1 , l#1.D = d#1 ; l#2.С = c#2 , l#2.D = d#1 ;
l#3.С = c#2 , l#3.D = d#2 ; l#4.С = c#2 , l#4.D = d#4 ;
l#5.С = c#2 , l#1.D = d#7 ; l#6.С = c#3 , l#3.D = d#4 ;
l#7.С = c#3 , l#7.D = d#7 ; l#8.С = c#4 , l#8.D = d#3 ;
l#9.С = c#4 , l#1.D = d#5 ; l#10.С = c#5 , l#5.D = d#7 .
Тогда имеем граф GraphL этой бинарной связи, изображенный на Рис.2.8.
d#1
c#1
d#2
c#2
• d#3
c#3
d#4
c#4
d#5
c#5
• d#6
d#7
Как видим, степени левых вершин этого графа находятся в интервале
I
= {1,2,3,4} = { xNat
| 1
x
4
}, а степени правых вершин находятся в
интервале J
= {0,1,2,3} = { x
Nat
| 0
x
3
}. (Степенью вершины в графе называют
число ребер, инцидентных этой вершине.)
Принадлежность степеней вершин к
заданному интервалу можно рассматривать
как ограничение, налагаемое на бинарную
связь.
Введем следующие обозначения:
=
p
для вырожденного («одноточечного»)
интервала {x
|
px
p};
=<p
для интервала {x
|
0x
p};
<p
для интервала {x
|
0x<p};
>p для интервала {x | x>p};
p:q
для интервала {x
|
px
q}.
Здесь предполагается p<q.
* для максимального интервала Nat.
Замечание. Можно использовать сокращения:
▪ L вместо L(*,*);
▪ L(=p) вместо L(=p,=p);
▪ L(=<p) вместо L(=<p,=<p);
▪ L(<p) вместо L(<p,<p) и т.д.
Если
в структурное предложение для бинарной
связи входит выражение L(I,J)
(где I,
J
– интервалы), то в графе GraphL
этой бинарной связи степень любой левой
вершины должна принадлежать интервалу
I,
а степень любой правой вершины –
интервалу J.
Ясно, что свойство функциональности
бинарной связи L
является интервальным ограничением
L(=1,*).
Таким образом, предложение(С
L(=1,*)D)
интерпретируется как утверждение, что
отношение L
на
самом деле является функцией, отображающей
множество EsurrC
в множество EsurrD.
Поэтому
вместо (С
L(=1,*)D)
можно писать L:C
-> D.
В этом случае L(x)
обозначает значение функции L
для
суррогата х
EsurrC.
Интервальное
ограничение
L(=1,=<1)
означает, что бинарная связь L
функциональна
и обладает свойством, что отнощение L
есть инъективная функция. Таким образом,
предложение (С
L(=1,=<)D)
утверждает, что L
есть инъекция EsurrC
в
EsurrD
. Предположим, что имеет место
кореферентность x
~ L(x)
для всех суррогатов x
EsurrC.
Тогда, отождествляя каждый суррогат x
с суррогатом
L(
x),
мы можем считать, что класс C
является подклассом класса D.
Особую
роль в представлении знаний играет
бинарная связь, обозначаемая ISA,
с помощью которой определяется иерархия
понятия. Эта связь имеет стандартную
интерпретацию. Предложение
C
ISA
D
означает, что для любого суррогата
c#jSurrC,
если c#j
EsurrC,
то
d#j
EsurrD
.