А.И. Выборнов, А.В. Дубанов
10
Рис. 3.
Алгоритм поиска наиболее общего унификатора
Функция
)
(
predicate
select
является аналогом операции выборки
σ
из реляционной алгебры, которой в языке SQL соответствует опе-
рации
SELECT
[8]. Это обстоятельство позволило применить СУБД
sqLite для временного хранения фактов. Данная функция возвращает
множество фактов из БД, унифицируемых с предикатом
predicate
.
Функция
)
(
predicate
getRules
для головы каждого из правил и
predicate
ищет унификатор
θ
и возвращает все правила, для кото-
рых
θ
существует, предварительно применяя
θ
как к голове, так и к
телу правила.
Функция
)
(
body
next
возвращает предикат из списка предикатов
body
. Первый вызов функции возвращает первый предикат списка,
второй вызов — второй предикат списка и т. д.
Функция
) (
rule e
processRul
производит обработку правила
rule
.
Псевдокод данной функции приведен на рис. 4, а на рис. 5 ― псев-
докод алгоритма QSQ с использованием перечисленных функций.
Рассмотрим этапы выполнения алгоритма при вычислении сле-
дующей программы:
). , ( ), , ( :) , (
YZpZXp YXp
−
).
,( :?
Xap
−
θ
θ
θ
θ
θ
θ
θ
θ θ
θ
θ