Главная » Просмотр файлов » Разработка языка запросов в бинарной модели знаний и транслятора этого языка в язык SQL (бакалаврская работа)

Разработка языка запросов в бинарной модели знаний и транслятора этого языка в язык SQL (бакалаврская работа) (544460), страница 9

Файл №544460 Разработка языка запросов в бинарной модели знаний и транслятора этого языка в язык SQL (бакалаврская работа) (Разработка языка запросов в бинарной модели знаний и транслятора этого языка в язык SQL (бакалаврская работа)) 9 страницаРазработка языка запросов в бинарной модели знаний и транслятора этого языка в язык SQL (бакалаврская работа) (544460) страница 92015-08-20СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 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

3.2. Описание запросов

Запрос состоит из двух частей: цели и условия. Запрос начинается с символа “?”, после него пишутся цели, затем символ “-”, после которого пишутся условия. Как в целях запроса, так и в условиях пишутся переменные. В целях перечисляются запрашиваемые переменные и атрибуты. В условиях запроса задается тип переменных, значение атрибутов, или указывается, как атрибуты одной переменной связываются с другими переменными.

Тип может определяться явно и неявно. Явное определение осуществляется через ключевое слова IN, либо через круглые скобки, если переменная описывает отношение. Неявное определение типа осуществляется через атрибуты другой переменной, либо через круглые скобки, если переменная учавствует в отношении.

Примеры определения типа:

  • X IN Студент

Переменная X относится к классу Студент.

  • X IN Студент;X.Группа = Y

Переменная Y относится к классу Группа.

  • (X СдалЭкзамен Y Z)

Переменная Y относится к отношению СдалЭкзамен. Так как отношение СдалЭкзамен должно быть согласовано с формой (Студент СдалЭкзамен Предмет) переменная X относится к классу Студент, а переменная Z – к классу Предмет.

Значение атрибутов задается с помощью оператора «точка» («.») и одного из операторов сравнения («=», «<=», «>=», «LIKE»). Допускается многократное использование оператора «точка».

Пример:

  • X IN Студент; X.ФИО = ‘Архипов А.А.’

Во втором условии указано,что атрибут Name должен равняться значению ‘Архипов’.

  • X IN Студент; X.Группа.Староста.ФИО =’Иванов’

Во втором условии указано многократное примение оператора «точка».

Допускается использовать атрибутное условие, когда сразу после объявления класса переменной задаются атрибуты в круглых скобках

Пример:

  • X IN Студент(ГодРожд=1990)

Это условие эквивалентно двум: X IN Студент;X.ГодРожд=1990

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

Пример:

  • Y IN Группа;X IN Студент(ГодРожд < Y.Староста.ГодРожд)

  • X IN Студент(ГодРожд < Группа.Староста.ГодРожд)

Второй пример эквивалентен первому, за исключением того что явно не используется переменная Y.

Отношения могут задаватся одним из следующих образов:

  1. (X relation Y Z),

  2. (X relation Z),

  3. relation(X).Y_Attribute,

где relation – имя отношения, X,Z – переменные для отношения relation, Y – переменная, описывающяя отнощение,Y_Attribute – атрибут переменной Y.

В целях может присутвовать агрегатная функция:

  • ?AVG(Z.Оценка) – Z IN СдалЭкзамен; …

Запрашивается среднее значение атрибутов Оценка переменной Z, относящейся к классу далЭкзамен.

Ниже описана грамматика языка:

<запрос>::= ? <цели запроса> - <условия запроса>

<цели запроса> ::= <цель>|<цели запроса>,<цель>

< цель> ::= <имя переменной>.<имя столбца>|<имя переменной>

<условия запроса>::= <условие>|<условия запроса>;<условие>

<условие> ::=<условие IN>|<определение атрибута>|

<отношение с внешними скобками>|<отношение без внешних скобок>

< условие IN>::= <имя переменной> IN <имя класса>|

<имя переменной> IN <имя класса>(<атрибутные условия>)

< атрибутные условия> ::= < атрибутное условие >|< атрибутные условия >;< атрибутное условие >

< атрибутное условие > ::= <атрибуты > <оператор> <значение атрибута>

<определение атрибута> ::= <имя переменной>. <атрибуты ><оператор> <значение атрибута>

<значение атрибута> := <слово>|<имя переменной>.<атрибуты>|<имя класса>.<атрибуты>

<атрибуты >::= <имя атрибута>|<атрибуты>.<имя атрибута>

< отношение с внешними скобками >::=

(<имя переменной> <имя отношения> <имя переменной> ) |

(<имя переменной> <имя отношения> <имя переменной> <имя переменной>)

<отношение без внешних скобок>::= <имя отношения>(<имя переменной>)< атрибуты через точку><оператор><значение атрибута>

< оператор сравнения> ::= =|<=|>=|<> |LIKE

<имя класса> ::= <имя определяемое пользователем>

<имя переменной> ::= <имя определяемое пользователем>

<имя отношения> ::= <имя определяемое пользователем>

<слово> ::= '<имя определяемое пользователем>'|<число>

<имя определяемое пользователем> ::= <буква или нижнее подчеркивание>|

<имя определяемое пользователем>< буква или нижнее подчеркивание >|

<имя определяемое пользователем><цифра>

<число> ::= <цифра>|<число><цифра>

<буква или нижнее подчеркивание > ::=

А|Б|В|Г|Д|Е|Ё|Ж|З|И|К|Л|М|Н|О|П|Р|С|Т|У|Ф|Х|Ч|Ш|Щ|Ъ|Ы|Ь|Э|Ю|Я|

а|б|в|г|д|е|ё|ж|з|и|к|л|м|н|о|п|р|с|т|у|ф|х|ц|ч|ш|щ|ъ|ы|ь|э|ю|я|

A|B|C|D|E|F|G||H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|

a|b|c|d|e|f|g||h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|_

<цифра> ::= 0|1|2|3|4|5|6|7|8|9

3.3. Описание алгоритма трансляции.

Трансляция состоит из следующих этапов:

  1. Подготовка к трансляции.

  2. Анализ используемых переменных, замена коротких записей.

  3. Проверка на корректность классов.

  4. Удаление ненужных переменных.

  5. Создание запроса SQL на основе используемых переменных.

Каждому этапу соответствует несколько функций в программном коде, который представлен в приложении.

Ниже дается описание каждого этапа и названия функций в программе.

  1. Подготовка к трансляции.

Определяется структурная схема. Запрос делится на две части: с целями (левую) и с конъюнктивными условиями (правую). Создаются списки всех переменных и целевых переменных, инициализируется счетчик искусственных переменных.

Функции: string translate(string query)

void divideQuery(string query)

  1. Анализ используемых переменных и замена коротких записей.

Анализ

Анализ состоит в определении целей, типов переменных, используемых атрибутов и значений для атрибутов.

В каждой цели проверяется наличие агрегатной функции (среднее арифметическое(AVG), сумма(SUM), максимум(MAX), минимум(MIN), количество(COUNT)).

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

Замена коротких записей

Характеристики

Список файлов ВКР

Разработка языка запросов в бинарной модели знаний и транслятора этого языка в язык SQL (бакалаврская работа).doc
Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7046
Авторов
на СтудИзбе
259
Средний доход
с одного платного файла
Обучение Подробнее