2009-04-07 17 views
12

Senza pensare troppo, mi sembra che un grande insieme di funzionalità di Prolog potrebbe essere implementato come calcolo relazionale (a.k.a. SQL).prolog al convertitore SQL

Qualcuno ha mai sentito parlare di strumenti per convertire automaticamente Prolog in SQL?

+0

No, non so di qualsiasi, ma sentitevi liberi di dare un colpo :-) – paxdiablo

+0

Wow.C'è sicuramente un potenziale per la scoperta, ancora, in questo mondo! :) –

risposta

2

La mappatura non è molto buona. SQL, ad esempio, non esegue il backtracking, l'unificazione, gli elenchi o le strutture nidificate ad hoc.

Prolog non tratta bene con oggetti compositi, indici, ecc

direi che è un no-go.

+0

Non penso che avresti bisogno di backtracking o unificazione in quanto la cosa sarebbe generata dall'altra estremità (con join) OTOH questo ucciderebbe ogni ricorsione di profondità arbitraria – BCS

+2

Senza backtracking, unificazione, ricorsione e liste non c'è un tutto il resto del prologo. E non puoi generare la stessa classe di cose con join, a meno che tu non stia pensando di scrivere SQL auto modificativo (query che costruiscono query) che suppongo sia _possible_ ma ... – MarkusQ

28

Sì, certo.

Una premessa per gli scettici: qualsiasi libro semi-decente su teoria dei database menzioni Datalog (che è Prolog-like) e teoremi che dimostrano che è possibile tradurre da/Algebra Relazionale (RA) (sotto restrizioni specifiche).

SQL non è fedele alla RA o calcoli relazionale, ma è abbastanza per sostenere Prolog:

2

ha più senso fare una query SQL da Prolog, che possono poi essere tradotta in fatti Prolog. per esempio. Prolog ODBC Library

Ciò elimina tutte le restrizioni e mantiene le due lingue separate nelle loro posizioni corrette.