Язык Пролог в качестве языка запросов к параллельной распределённой СУБД
f(n) = 1 2 … n 1) k = 1, i = 1 2) если i
1973 программа = множество аксиом; программа = множество аксиом; вычисление = конструктивный вывод целевого утверждения из программы. вычисление = конструктивный вывод целевого утверждения из программы.
predicates predicates factorial(integer, integer) factorial(integer, integer) clauses clauses factorial(0,1):-!. factorial(0,1):-!. factorial(N,R):-P=N-1, factorial(P,Prev), R=Prev*N. factorial(N,R):-P=N-1, factorial(P,Prev), R=Prev*N. goal goal factorial(3,X). factorial(3,X).
predicates predicates программист(string) программист(string) знать_пролог(string) знать_пролог(string) clauses clauses программист("Сергей"). программист("Сергей"). программист("Оля"). программист("Оля"). знать_пролог(X) :- программист(X). знать_пролог(X) :- программист(X). goal goal знать_пролог(A). знать_пролог(A). A=Сергей A=Сергей A=Оля A=Оля 2 Solutions 2 Solutions $ - программист: $ - программист: $ знает пролог: $ знает пролог: $Сергей - программист. $Сергей - программист. $Оля - программист. $Оля - программист. X знает пролог, если X - программист. X знает пролог, если X - программист. Кто знает пролог ? Кто знает пролог ? Сергей Сергей Оля Оля 2 Solutions 2 Solutions Функциональная запись «Естественная» запись
Языки запросов ПрограммистЯзык СергейПролог СергейБейсик ОляПролог Программист_знает_язык программист $ знает язык $: программист $Сергей знает язык $Пролог. программист $Сергей знает язык $Бейсик. программист $Оля знает язык $Пролог. create table Программист_знает_язык (Программист string, Язык string). insert into Программист_знает_язык (Сергей, Пролог). insert into Программист_знает_язык (Сергей, Бейсик). insert into Программист_знает_язык (Оля, Пролог). Пролог: SQL:
Параллельное вычисление $Оля – женщина. $Оля – женщина. $Сергей – программист. $Сергей – программист. $Оля – программист. $Оля – программист. X знает пролог, если X – программист, Х - женщина. X знает пролог, если X – программист, Х - женщина. Кто знает пролог ? Кто знает пролог ? Кто знает пролог ? Кто – программист? Кто – женщина?
Схема Пролог-системы Интерпретатор машина Пролога база доменов индексный файл база предикатов
Схема распределённой Пролог-системы машина Пролога I база доменов Машина Пролога II интерпретатор база предикатов индексный файл Машина Пролога III интерпретатор индексный файл База предикатов индексный файл интерпретатор база предикатов