- •Национальный исследовательский
- •Университет
- •В ы п у с к н а я р а б о т а
- •Введение
- •Глава 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.9. Логические предложения.
В БМЗ имеются логические предложения многих типов. Приведем примеры логических предложений, являющихся простыми ограничениями.
Примеры 2.11. 1) Каждый профессор или доцент кафедры прикладной математики руководит хотя бы одним студентом.
EACH Препод(Должность = профессор OR доцент;
THAT Работает Кафедра(Назв='прикладная математика'));
Руководит SOME Студент.
(X Руководит Y) IF Y.Руководитель = Х.
2) Зарплата профессора больше 10000 рублей
IF Х IN Препод(Должность=профессор) THEN
X.Зарплата > 10000.
В БМЗ имеют предложения, относящиеся к интервальной логике Аллена, [Allen, 1983]. Декларация события С выполняется предложением EVENT C. Базовые отношения между событиями C и D выражаются следующими предложениями:
С BEFORE D (раньше),
C MEETS D (встречает),
C OVERLAPS D (перекрывает),
C FINISHES D (заканчивает),
С STARTS D (начинает),
С DURING D (в течение),
C EQUAL D (равно).
Обратные отношения обозначаются с помощью приставки i . Например,
предложение C i-BEFORE D эквивалентно предложению D BEFORE C.
Дизъюнкция предложений с одинаковыми парами событий обозначается как конечное множество связок Аллена. Например, дизъюнкция трех предложений
С BEFORE D C i-MEETS D C EQUAL D
обозначается как
С {BEFORE, i-MEETS, EQUAL} D.
Глава 3 язык запросов для бинарной модели данных
Здесь рассматривается язык запросов для структурных схем, записанных в языке ЯОД. Такие запросы обращаются к базам данных (фактов), структурированным по эти схемам. Будет построена система синтаксической корректности этих запросов и система трансляции конъюнктивных запросов в язык SQL.
3.1. Примеры запросов
Запрос 1. Найти студентов, родившихся в 1991 году.
?Х.ФИО – X IN Студент(ГодРожд = 1991) (3.1)
Заметим, что в этом запросе (неявно) предполагается, что нужно найти фамилии студентов. Если мы напишем
?Х – X IN Студент(ГодРожд = 1991),
то ответом на этот запрос будет множество суррогатов студентов, родившихся в 1991 году. Однако пользователю суррогату не нужны, они нужны только интерпретатору запросов. Вместо (3.1) можно записать короче
? - Студент(ГодРожд = 1991).ФИО
Этот запрос можно также записать без использования атрибутных условий:
?Х.ФИО – X IN Студент; Х.ГодРожд = 1991
Запрос 2.Какую фамилию имеет староста группы А13-09?
?Х.Группа.Староста.ФИО – Х IN Студент(Группа.Номер =
'А13-09')
Без атрибутного условия этот запрос записывается так:
?Х.Группа.Староста.ФИО – Х IN Студент; Х.Группа.Номер =
'А13-09'
Можно также исключить двукратное применение операции «точка»:
?Х.Группа.Староста.ФИО – Х IN Студент; Х.Группа = Y; Y.Номер ='А13-09'
Запрос 3.Найти всех студентов группы А13-01, родившихся ранее старосты этой группы.
?Х.ФИО – X IN Студент(Группа.Номер = А13-09;
ГодРожд < Группа.Староста.ГодРожд)
Запрос 4.Какие студенты группы А13-08 сдали экзамен по дискретной математике на отлично?
?Х.ФИО – X IN Студент;Х.Группа.Номер = А13-09;
(Х СдалЭкзамен Z Y);
Y.Назв='дискретная математика';Z.Оценка= 5
Здесь переменная X обозначает пример (экземпляр) классаСтудент, а переменная Y обозначает пример классаПредмет. Это следует из того, что выражение (Х СдалЭкзамен Z Y) должно быть согласовано с формой(Студент СдалЭкзамен Предмет). То, что переменная Z стоит заЭкзЭкз, означает, чтоZ есть пример бинарной связиСдалЭкзамен.
Запрос5. Каков средний бал на экзвмене по дискретной математике у студентов группы А13-08?
?AVG(Z.Оценка) – Z IN СдалЭкзамен(Предмет.Назв =
‘дискретная матем.’; Студент.Группа.Номер = А13-08)
Запрос6. Какие студенты сдали все экзамены на отлично в январе 2012 года?
?Х.ФИО – (Х СдалЭкзамен Z Y);Z.Оценка = 5; Z.Дата >= 01/01/2012; Z.Дата =< 31/01/2012
Запрос 7. Найти всех профессоров кафедры Прикладной математики.
Х.ФИО – Работает_на(Х).Назв = 'Прикладная математика'
Х.Должность = 'Профессор'
В этом запросе использована функциональная бинарная связь Работает_на. Если бы мы не использовали свойство функциональности этой связи, то этот запрос можно было бы представить так:
Х.ФИО –(Х Работает_на Y); Y.Назв = 'Прикладная математика';
Х.Должность = профессор
Запрос 8. Какие студенты и по каким предметам сдади экзамены на отлично? У каких препододавателей и по каким предметам студент Иванов сдал экзамены на отлично?
?X.Студент.ФИО,Х.Предмет.Назв – Х IN СдалЭкзамен( Х.Оценка=5)
Этот запрос можно также короче:
?X.ФИО,Y.Назв – (Х СдалЭкзамен Z Y); Z.Оценка=5.
Запрос 9. У каких препододавателей и по каким предметам студент Иванов сдал экзамены на отлично?
?Z.Кому.ФИО,Y.Назв – ('Иванов А.П.' СдалЭкзамен Z Y);
Z.Оценка=5