Пролог в SQL конвертер - PullRequest
       35

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

14 голосов
/ 07 апреля 2009

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

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

Ответы [ 5 ]

29 голосов
/ 05 ноября 2009

Да, конечно.

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

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

2 голосов
/ 18 июля 2012

Рекомендуя:

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

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

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

Когда это работает, это красота.

Благодарю, конечно, герра Дракслера

2 голосов
/ 06 июня 2011

Имеет смысл сделать запрос sql из пролога, который затем можно перевести в факты пролога. например Библиотека Prolog ODBC

Это снимает все ограничения и позволяет разделить два языка на свои места.

2 голосов
/ 07 апреля 2009

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

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

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

1 голос
/ 02 сентября 2018

I написал переводчик , который преобразует подмножество 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...