Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Разработка языка запросов в бинарной модели знаний и транслятора этого языка в язык SQL (бакалаврская работа).doc
Скачиваний:
13
Добавлен:
28.06.2014
Размер:
1.31 Mб
Скачать

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

Соседние файлы в предмете Государственный экзамен