2009-04-07 17 views
12

多くのことを考えずに、Prologの機能の大規模なセットをリレーショナルの計算(a.k.a SQL)として実装できるように思えます。プロローグからSQLへの変換

誰かが自動的にPrologをSQLに変換するツールについて聞いたことがありますか?

+0

いいえ、私はどんなのを知っているが、うわー – paxdiablo

+0

:-)それに打撃を与えること自由に感じていません。この世界ではまだ発見の可能性はあるのです! :) –

答えて

2

推薦:

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

を私advice-使用Eclipseのプロローグ(http://www.eclipseclp.org/)(日食IDEにプロローグと混同すべきではない(ここでは))。

他の4つのプロローグ(!)でコンパイルするために数時間を費やし、eclipseでコンパイルするのに4時間を費やしました。

うまくいくと美しいものです。もちろん君Draxlerに

クレジットは

2

マッピングがあまり良くありません。例えば、SQLは、バックトラッキング、統一、リスト、またはアドホックネストされた構造を行いません。

Prologはなど、複合オブジェクト、インデックス、

私はそれは、行くんだと言うだろうとうまく対処していません。

+0

バックトラックや統一が必要ではないと思います(ジョインで)他の端から生成されるためOTOHこれは任意の深さの再帰をすべて終了します – BCS

+2

バックトラック、統一、再帰およびリストなしではプロローグの全体が残っていた。あなたが自己修正SQL(クエリを構築するクエリ)を書くことを考えているのでなければ、あなたは結合で同じクラスのものを生成することはできません。 – MarkusQ

28

はい、もちろんです。

懐疑論者の前提:データベース理論についての半ばの本は、Datalog(Prologのようなものです)とそれをリレーショナル代数(RA)(特定の制限の下で)から翻訳することが可能であることを示す定理について述べています。

SQLは、PrologのRAまたはリレーショナル結石に忠実ではありませんが、サポートするのに十分である:

2

その後、プロローグの事実に翻訳することができプロローグからSQLクエリを実行するために、より理にかなっています。例えばProlog ODBC Library

これにより、すべての制限が削除され、2つの言語が適切な場所に分けられます。