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

UptoLike

предикате
)),(),..,,(),...,,(,
~
(
2
1
11
m
km
i
jikipar
vptvptvptgP
и возвращает в переменных z
1
, …, z
n
их
имена.
Предикат (g
i
:X) Р
s
(g
i
, t(z
1
, …, z
n
),
r
h
t ) соответствует утверждению, что существует вершина g
i
,
которая находится в отношении характеризации с элементами z
1
, …, z
n
.
В этом случае элементы продукции pr
9
Tr
записываются в виде:
q
9
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
, 1) P
f
(t
in
(g
i
), t(z
1
, …, z
n
), f
29
)
(g
i
:X) Р
s
(g
i
, t(z
1
, …, z
n
),
r
h
t ); r
9
Tr
= add [Р
s
(SELECT, t(z
1
, …, z
n
),
r
h
t )].
Категория правил для формирования условной части. Правила формирования условной части
запроса search_condition разбиты на два типа. Правила первого типа связаны с отображением связи
добавленных вершин, т.е. формируется команда равенства атрибутов двух смежных таблиц,
смежность которых и отражена в графе
G
. Второй тип правил связан с отображением условий,
заданных в запросе, например, х>5, хатрибут базы данных, а «5» - его значение.
Правило десятое. Вершины g
i
и g
i+1
могут сформировать команду равенства для ключевого
слова «WHERE» тогда и только тогда, когда имеет место закономерность, описываемая конъюнкцией
следующих фактов:
- вершина 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
имеет значение «2» - P
E
(x
i1
, 2);
- вершина g
i+1
имеет вектор
τ
i+1
- P
par
(τ
i+1
, t(x
(i+1)1
, y
6
), t(x
(i+1)2
, y
7
), t(x
(i+1)3
, y
8
), t(x
(i+1)4
, y
9
), t(x
(i+1)5
,
y
10
));
- элемент x
(i+1)1
имеет значение «1» - P
E
(x
(i+1)1
, 1).
Предикат (g
i
:X) (g
i+1
:X) Р
s
(t(g
i
, g
i+1
), WHERE,
r
t
2
) соответствует утверждению, что существуют
вершины g
i
и g
i+1
, которые находятся в отношении квалификации с оператором WHERE.
В этом случае элементы продукции pr
10
Tr
записываются в виде:
q
10
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
, 2) 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
, 1) (g
i
:X) (g
i+1
:X) Р
s
(t(g
i
, g
i+1
), WHERE,
r
t
2
);
r
10
Tr
= add [Р
s
(g
i
, (g
i+1
), WHERE (x
i2
. x
i3
=g
i+1
.x
i3
),
r
t
2
)].
Правило одиннадцатое обратно предыдущему правилу:
q
11
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
, 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
)) P
E
(x
(i+1)1
, 2) (g
i
:X) (g
i+1
:X) Р
s
(t(g
i
, g
i+1
), WHERE,
r
t
2
);
r
11
Tr
= add [Р
s
(g
i
, (g
i+1
), WHERE (g
i
.x
(i+1)3
= x
(i+1)2
.x
(i+1)3
),
r
t
2
)].
Правило двенадцатое касается ситуации, когда имеет место смежность вершин «атрибут-
атрибут», то элементы продукции pr
12
Tr
записываются в виде:
q
12
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
, 2) 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
, 2) (g
i
:X) (g
i+1
:X) Р
s
(t(g
i
, g
i+1
), WHERE,
r
t
2
);
r
12
Tr
= add [Р
s
(g
i
, (g
i+1
), WHERE (x
i2
.
x
i3
= x
(i+1)2
.x
i3
),
r
t
2
)].
Правило тринадцатое касается ситуации, когда имеет место смежность вершин «атрибут-
значение», то элементы продукции pr
13
Tr
записываются в виде:
q
13
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
, 2) 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
, 4) (g
i
:X) (g
i+1
:X) Р
s
(t(g
i
, g
i+1
), WHERE,
r
t
2
);
r
13
Tr
= add [Р
s
(WHERE (x
i2
.
g
i
= ‘g
(i+1)
’),
r
t
2
)].
Правило четырнадцатое. Вершины g
i
, g
i+1
и g
i+2
могут сформировать команду сравнения для
ключевого слова «WHERE» тогда и только тогда, когда имеет место закономерность, описываемая
конъюнкцией следующих фактов:
- вершина 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
имеет значение «2» - P
E
(x
i1
, 2);
- вершина g
i+1
имеет вектор
η
i+1
- P
par
(
η
i+1
, t(z
(i+1)1
, y
6
), t(z
(i+1)2
, y
7
), t(z
(i+1)3
, y
8
));
- элемент z
(i+1)2
имеет значение «4» - P
E
(z
(i+1)2
, 4);
- вершина g
i+1
имеет вектор
τ
i+2
- P
par
(τ
i+2
, t(x
i1
, y
9
), t(x
i2
, y
10
), t(x
i3
, y
11
), t(x
i4
, y
12
), t(x
i5
, y
13
));
- элемент x
i1
имеет значение «4» - P
E
(x
i1
, 4).
136
предикате Ppar ( g~i , t ( p1 , v 1k 1 ),..., t ( pi , v ij ),.., t ( p m , v km2 )) и возвращает в переменных z1, …, zn их
имена.
      Предикат (∃gi:X) Рs(gi, t(z1, …, zn), t hr ) соответствует утверждению, что существует вершина gi,
которая находится в отношении характеризации с элементами z1, …, zn.
      В этом случае элементы продукции pr9Tr записываются в виде:
      q9Tr = Ppar(τi, t(xi1, y1), t(xi2, y2), t(xi3, y3), t(xi4, y4),136
                                                                      t(xi5, y5)) ∧ PE(xi1, 1) ∧ Pf(tin(gi), t(z1, …, zn), f29) ↔
(∃gi:X) Рs(gi, t(z1, …, zn), t hr ); r9Tr = add [Рs(SELECT, t(z1, …, zn), t hr )].

        Категория правил для формирования условной части. Правила формирования условной части
запроса search_condition разбиты на два типа. Правила первого типа связаны с отображением связи
добавленных вершин, т.е. формируется команда равенства атрибутов двух смежных таблиц,
смежность которых и отражена в графе G . Второй тип правил связан с отображением условий,
заданных в запросе, например, х>5, х – атрибут базы данных, а «5» - его значение.
        Правило десятое. Вершины gi и gi+1 могут сформировать команду равенства для ключевого
слова «WHERE» тогда и только тогда, когда имеет место закономерность, описываемая конъюнкцией
следующих фактов:
        - вершина gi имеет вектор τi - Ppar(τi, t(xi1, y1), t(xi2, y2), t(xi3, y3), t(xi4, y4), t(xi5, y5));
        - элемент xi1 имеет значение «2» - PE(xi1, 2);
        - вершина gi+1 имеет вектор τi+1 - Ppar(τi+1, t(x(i+1)1, y6), t(x(i+1)2, y7), t(x(i+1)3, y8), t(x(i+1)4, y9), t(x(i+1)5,
y10));
        - элемент x(i+1)1 имеет значение «1» - PE(x(i+1)1, 1).
        Предикат (∃gi:X) (∃gi+1:X) Рs(t(gi, gi+1), WHERE, t 2r ) соответствует утверждению, что существуют
вершины gi и gi+1 , которые находятся в отношении квалификации с оператором WHERE.
        В этом случае элементы продукции pr10Tr записываются в виде:
        q10Tr = Ppar(τi, t(xi1, y1), t(xi2, y2), t(xi3, y3), t(xi4, y4), t(xi5, y5)) ∧ PE(xi1, 2) ∧ 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, 1) ↔ (∃gi:X) (∃gi+1:X) Рs(t(gi, gi+1), WHERE, t 2r );
        r10Tr = add [Рs(gi, (gi+1), WHERE (xi2. xi3 =gi+1.xi3), t 2r )].
        Правило одиннадцатое обратно предыдущему правилу:
        q11Tr = Ppar(τi, t(xi1, y1), t(xi2, y2), t(xi3, y3), t(xi4, y4), t(xi5, y5)) ∧ PE(xi1, 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))∧ PE(x(i+1)1, 2) ↔ (∃gi:X) (∃gi+1:X) Рs(t(gi, gi+1), WHERE, t 2r );
        r11Tr = add [Рs(gi, (gi+1), WHERE (gi.x(i+1)3 = x(i+1)2.x(i+1)3), t 2r )].
        Правило двенадцатое касается ситуации, когда имеет место смежность вершин «атрибут-
атрибут», то элементы продукции pr12Tr записываются в виде:
        q12Tr = Ppar(τi, t(xi1, y1), t(xi2, y2), t(xi3, y3), t(xi4, y4), t(xi5, y5)) ∧ PE(xi1, 2) ∧ 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, 2) ↔ (∃gi:X) (∃gi+1:X) Рs(t(gi, gi+1), WHERE, t 2r );
        r12Tr = add [Рs(gi, (gi+1), WHERE (xi2. xi3 = x(i+1)2.xi3), t 2r )].
        Правило тринадцатое касается ситуации, когда имеет место смежность вершин «атрибут-
значение», то элементы продукции pr13Tr записываются в виде:
        q13Tr = Ppar(τi, t(xi1, y1), t(xi2, y2), t(xi3, y3), t(xi4, y4), t(xi5, y5)) ∧ PE(xi1, 2) ∧ 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, 4) ↔ (∃gi:X) (∃gi+1:X) Рs(t(gi, gi+1), WHERE, t 2r );
     r13Tr = add [Рs(WHERE (xi2. gi = ‘g(i+1)’), t 2r )].
     Правило четырнадцатое. Вершины gi , gi+1 и gi+2 могут сформировать команду сравнения для
ключевого слова «WHERE» тогда и только тогда, когда имеет место закономерность, описываемая
конъюнкцией следующих фактов:
     - вершина gi имеет вектор τi - Ppar(τi, t(xi1, y1), t(xi2, y2), t(xi3, y3), t(xi4, y4), t(xi5, y5));
     - элемент xi1 имеет значение «2» - PE(xi1, 2);
     - вершина gi+1 имеет вектор ηi+1 - Ppar(ηi+1, t(z(i+1)1, y6), t(z(i+1)2, y7), t(z(i+1)3, y8));
     - элемент z(i+1)2 имеет значение «4» - PE(z(i+1)2, 4);
     - вершина gi+1 имеет вектор τi+2 - Ppar(τi+2, t(xi1, y9), t(xi2, y10), t(xi3, y11), t(xi4, y12), t(xi5, y13));
     - элемент xi1 имеет значение «4» - PE(xi1, 4).