Методы и алгоритмы трансляции естественно-языковых запросов к базе данных в SQL-запросы. Найханова Л.В - 136 стр.

UptoLike

Приложение Д. Система продукций формирования SQL-запроса
Система продукций формирования SQL-запроса включает в себя множество продукций: P
Tr
=
{pr
i
Tr
| 15,1=i }, где pr
i
Tr
=<q
i
Tr
,r
i
Tr
>, которые объединены по двум категориям правил, приведенных
ниже.
Категория правил для формирования объектной части. Эта категория включает в себя правила
идентификации типа оператора Select, правила формирования множества атрибутов для заполнения
поля Select_list ключевого слова «SELECT» запроса к базе данных, а также правила формирования
списка table_source ключевого слова «FROM».
Правило первое. Вершина g
i
может быть заменена на SELECT тогда и только тогда, когда имеет
место закономерность, описываемая конъюнкцией следующих фактов:
- вершина g
i
имеет вектор
τ
I
- P
par
(τ
i
, t(x
i1
, y
1
), t(x
i2
, y
2
), t(x
i3
, y
3
), t(x
i4
, y
4
), t(x
i5
, y
5
));
- элемент x
i1
имеет значение «3» - P
E
(x
i1
, 3).
Предикат (g
i
:X) Р
s
(g
i
, SELECT,
r
t
2
) соответствует утверждению, что существует вершина g
i
,
которая находится в отношении квалификации с оператором SELECT.
В этом случае элементы продукции pr
1
Tr
записываются в виде:
q
1
Tr
= P
par
(τ
i
, t(x
i1
, y
1
), t(x
i2
, y
2
), t(x
i3
, y
3
), t(x
i4
, y
4
), t(x
i5
, y
5
)) P
E
(x
i1
, 3) (g
i
:X) Р
s
(g
i
, SELECT,
r
t
2
);
r
1
Tr
= add [Р
s
(g
i
, SELECT,
r
t
2
)].
Правило второе. Вершины g
i
и g
i+1
могут быть заменены на SELECT COUNT тогда и только
тогда, когда имеет место закономерность, описываемая конъюнкцией следующих фактов:
- вершина g
i
имеет вектор
τ
i
- P
par
(τ
i
, t(x
i1
, y
1
), t(x
i2
, y
2
), t(x
i3
, y
3
), t(x
i4
, y
4
), t(x
i5
, y
5
));
- элемент x
i1
имеет значение «3» - P
E
(x
i1
, 3);
- вершина g
i+1
имеет вектор
τ
i+1
- P
par
(τ
i+1
, t(x
(i+1)1
, y
1
), t(x
(i+1)2
, y
2
), t(x
(i+1)3
, y
3
), t(x
(i+1)4
, y
4
), t(x
(i+1)5
,
y
5
));
- элемент x
(i+1)1
имеет значение «3» - P
E
(x
(i+1)1
, 3).
Предикат (g
i
:X) (g
i+1
:X) Р
s
(t(g
i
, g
i+1
), SELECT COUNT,
r
t
2
) соответствует утверждению, что
существуют вершины g
i
и g
i+1
, которые находятся в отношении квалификации с оператором SELECT
COUNT.
В этом случае элементы продукции pr
2
Tr
записываются в виде:
q
2
Tr
= P
par
(τ
i
, t(x
i1
, y
1
), t(x
i2
, y
2
), t(x
i3
, y
3
), t(x
i4
, y
4
), t(x
i5
, y
5
)) P
E
(x
i1
, 3) P
par
(τ
i+1
, t(x
(i+1)1
, y
1
), t(x
(i+1)2
,
y
2
), t(x
(i+1)3
, y
3
), t(x
(i+1)4
, y
4
), t(x
(i+1)5
, y
5
)) P
E
(x
(i+1)1
, 3) (g
i
:X) (g
i+1
:X) Р
s
(t(g
i
, g
i+1
), SELECT COUNT,
r
t
2
);
r
2
Tr
= add [Р
s
(g
i
, SELECT COUNT,
r
t
2
)]; elim[g
i+1
].
Правило третье. Вершины g
i
и g
i+1
могут быть заменены на SELECT <Агрегатная функция>
тогда и только тогда, когда имеет место закономерность, описываемая конъюнкцией следующих
фактов:
- вершина g
i
имеет вектор
τ
i
- P
par
(τ
i
, t(x
i1
, y
1
), t(x
i2
, y
2
), t(x
i3
, y
3
), t(x
i4
, y
4
), t(x
i5
, y
5
));
- элемент x
i1
имеет значение «3» - P
E
(x
i1
, 3);
- вершина g
i+1
имеет вектор
τ
i+1
- P
par
(τ
i+1
, t(x
(i+1)1
, y
6
), t(x
(i+1)2
, y
2
), t(x
(i+1)3
, y
3
), t(x
(i+1)4
, y
4
), t(x
(i+1)5
,
y
5
));
- элемент x
(i+1)1
имеет значение «5» - P
E
(x
(i+1)1
, 5).
Предикат (g
i
:X) (g
i+1
:X) Р
s
(t(g
i
, g
i+1
), SELECT (g
i+1
),
r
t
2
) соответствует утверждению, что
существуют вершины g
i
и g
i+1
, которые находятся в отношении квалификации с оператором SELECT
(g
i+1
).
В этом случае элементы продукции pr
3
Tr
записываются в виде:
q
3
Tr
= P
par
(τ
i
, t(x
i1
, y
1
), t(x
i2
, y
2
), t(x
i3
, y
3
), t(x
i4
, y
4
), t(x
i5
, y
5
)) P
E
(x
i1
, 3) P
par
(τ
i+1
, t(x
(i+1)1
, y
6
), t(x
(i+1)2
,
y
2
), t(x
(i+1)3
, y
3
), t(x
(i+1)4
, y
4
), t(x
(i+1)5
, y
5
)) P
E
(x
(i+1)1
, 5) (g
i
:X) (g
i+1
:X) Р
s
(t(g
i
, g
i+1
), SELECT (g
i+1
),
r
t
2
);
r
3
Tr
= add [Р
s
(g
i
, SELECT (g
i+1
),
r
t
2
)]; elim[g
i+1
].
Правило четвертое. Вершина g
i
может быть внесена в список table_source ключевого слова
«FROM» тогда и только тогда, когда имеет место закономерность, описываемая конъюнкцией
следующих фактов:
- вершина g
i
имеет вектор
τ
i
- P
par
(τ
i
, t(x
i1
, y
1
), t(x
i2
, y
2
), t(x
i3
, y
3
), t(x
i4
, y
4
), t(x
i5
, y
5
));
- элемент x
i1
имеет значение «1» - P
E
(x
i1
, 1).
  Приложение Д. Система продукций формирования SQL-запроса
       Система продукций формирования SQL-запроса включает в себя множество продукций: PTr =
{priTr| i = 1,15 }, где priTr=, которые объединены по двум категориям правил, приведенных
ниже.
       Категория правил для формирования объектной части. Эта категория включает в себя правила
идентификации типа оператора Select, правила формирования множества атрибутов для заполнения
поля Select_list ключевого слова «SELECT» запроса к базе данных, а также правила формирования
списка table_source ключевого слова «FROM».
       Правило первое. Вершина gi может быть заменена на SELECT тогда и только тогда, когда имеет
место закономерность, описываемая конъюнкцией следующих фактов:
       - вершина gi имеет вектор τI - Ppar(τi, t(xi1, y1), t(xi2, y2), t(xi3, y3), t(xi4, y4), t(xi5, y5));
       - элемент xi1 имеет значение «3» - PE(xi1, 3).
       Предикат (∃gi:X) Рs(gi, SELECT, t 2r ) соответствует утверждению, что существует вершина gi,
которая находится в отношении квалификации с оператором SELECT.
       В этом случае элементы продукции pr1Tr записываются в виде:
       q1Tr = Ppar(τi, t(xi1, y1), t(xi2, y2), t(xi3, y3), t(xi4, y4), t(xi5, y5)) ∧ PE(xi1, 3) ↔ (∃gi:X) Рs(gi, SELECT, t 2r );
r1Tr = add [Рs(gi, SELECT, t 2r )].
        Правило второе. Вершины gi и gi+1 могут быть заменены на SELECT COUNT тогда и только
тогда, когда имеет место закономерность, описываемая конъюнкцией следующих фактов:
        - вершина gi имеет вектор τi - Ppar(τi, t(xi1, y1), t(xi2, y2), t(xi3, y3), t(xi4, y4), t(xi5, y5));
        - элемент xi1 имеет значение «3» - PE(xi1, 3);
        - вершина gi+1 имеет вектор τi+1 - Ppar(τi+1, t(x(i+1)1, y1), t(x(i+1)2, y2), t(x(i+1)3, y3), t(x(i+1)4, y4), t(x(i+1)5,
y5));
        - элемент x(i+1)1 имеет значение «3» - PE(x(i+1)1, 3).
        Предикат (∃gi:X) (∃gi+1:X) Рs(t(gi, gi+1), SELECT COUNT, t 2r ) соответствует утверждению, что
существуют вершины gi и gi+1, которые находятся в отношении квалификации с оператором SELECT
COUNT.
        В этом случае элементы продукции pr2Tr записываются в виде:
        q2Tr = Ppar(τi, t(xi1, y1), t(xi2, y2), t(xi3, y3), t(xi4, y4), t(xi5, y5)) ∧ PE(xi1, 3) ∧ Ppar(τi+1, t(x(i+1)1, y1), t(x(i+1)2,
y2), t(x(i+1)3, y3), t(x(i+1)4, y4), t(x(i+1)5, y5))∧ PE(x(i+1)1, 3) ↔ (∃gi:X) (∃gi+1:X) Рs(t(gi, gi+1), SELECT COUNT,
t 2r );
        r2Tr = add [Рs(gi, SELECT COUNT, t 2r )]; elim[gi+1].
        Правило третье. Вершины gi и gi+1 могут быть заменены на SELECT <Агрегатная функция>
тогда и только тогда, когда имеет место закономерность, описываемая конъюнкцией следующих
фактов:
        - вершина gi имеет вектор τi - Ppar(τi, t(xi1, y1), t(xi2, y2), t(xi3, y3), t(xi4, y4), t(xi5, y5));
        - элемент xi1 имеет значение «3» - PE(xi1, 3);
        - вершина gi+1 имеет вектор τi+1 - Ppar(τi+1, t(x(i+1)1, y6), t(x(i+1)2, y2), t(x(i+1)3, y3), t(x(i+1)4, y4), t(x(i+1)5,
y5));
        - элемент x(i+1)1 имеет значение «5» - PE(x(i+1)1, 5).
        Предикат (∃gi:X) (∃gi+1:X) Рs(t(gi, gi+1), SELECT (gi+1), t 2r ) соответствует утверждению, что
существуют вершины gi и gi+1 , которые находятся в отношении квалификации с оператором SELECT
(gi+1).
        В этом случае элементы продукции pr3Tr записываются в виде:
        q3Tr = Ppar(τi, t(xi1, y1), t(xi2, y2), t(xi3, y3), t(xi4, y4), t(xi5, y5)) ∧ PE(xi1, 3) ∧ Ppar(τi+1, t(x(i+1)1, y6), t(x(i+1)2,
y2), t(x(i+1)3, y3), t(x(i+1)4, y4), t(x(i+1)5, y5))∧ PE(x(i+1)1, 5) ↔ (∃gi:X) (∃gi+1:X) Рs(t(gi, gi+1), SELECT (gi+1), t 2r );
     r3Tr = add [Рs(gi, SELECT (gi+1), t 2r )]; elim[gi+1].
     Правило четвертое. Вершина gi может быть внесена в список table_source ключевого слова
«FROM» тогда и только тогда, когда имеет место закономерность, описываемая конъюнкцией
следующих фактов:
     - вершина gi имеет вектор τi - Ppar(τi, t(xi1, y1), t(xi2, y2), t(xi3, y3), t(xi4, y4), t(xi5, y5));
     - элемент xi1 имеет значение «1» - PE(xi1, 1).