Подтвердить что ты не робот

Пролог к ​​конвертеру SQL

Не думая о многом, мне кажется, что большой набор функций Prolog может быть реализован как реляционное исчисление (a.k.a. SQL).

Кто-нибудь слышал о каких-либо инструментах для автоматического преобразования Prolog в SQL?

4b9b3361

Ответ 1

Рекомендуя:

https://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/prolog/code/io/pl2sql/0.html

мой совет - используйте пролог Eclipse (http://www.eclipseclp.org/) (не (здесь), чтобы его путать с прологом в Eclipse IDE).

Я потратил часы, пытаясь скомпилировать код в 4 других прологах (!) и 4 минуты для компиляции в eclipse.

Когда это работает, это вещь красоты.

Кредит господину Draxler конечно

Ответ 2

Да, конечно.

Предпосылка для скептиков: любая полуподобная книга по теории базы данных упоминает Datalog (что является прологовым) и теоремы, которые демонстрируют что можно перевести в/из реляционной алгебры (RA) (при определенных ограничениях).

SQL не соответствует RA или реляционным исчислениям, но достаточно для поддержки Prolog:

Ответ 3

Отображение не очень хорошо. SQL, например, не выполняет откат, объединение, списки или adhoc вложенные структуры.

Пролог не справляется с составными объектами, индексами и т.д.

Я бы сказал, что это не-go.

Ответ 4

Сложнее делать запрос sql из пролога, который затем можно перевести в пролог. например Пролог ODBC Library

Это устраняет все ограничения и удерживает два языка в соответствующих местах.

Ответ 5

Я написал переводчик, который преобразует подмножество Prolog в пользовательские функции SQL.

Этот предикат в Прологе может быть переведен в SQL:

is_between(A,B,C) :- 
    A<B,B<C.

Это вывод транслятора в виде функции MySQL:

CREATE FUNCTION is_between(A double,B double,C double) RETURNS BIT BEGIN 
    RETURN A>B and B>C;
END

Аналогично, есть компилятор Пролог-в-SQL для SWI-Prolog и другой транслятор, который преобразует нерекурсивное подмножество Datalog в SQL.