2009-04-07 7 views
12

Sans trop y penser, il me semble qu'un grand nombre de fonctionnalités de Prolog pourraient être implémentées en tant que calcul relationnel (par exemple SQL).prolog au convertisseur SQL

Quelqu'un at-il entendu parler d'outils pour convertir automatiquement Prolog en SQL?

+0

Non, je ne connais aucun, mais ne hésitez pas à donner un coup de feu :-) – paxdiablo

+0

Wow.Il y a certainement un potentiel de découverte, encore, dans ce monde! :) –

Répondre

2

La correspondance n'est pas très bonne. SQL, par exemple, ne fait pas de backtracking, d'unification, de listes ou de structures imbriquées ad hoc.

Prolog ne traite pas bien avec des objets composites, des index, etc.

Je dirais que c'est un no-go.

+0

Je ne pense pas que vous auriez besoin de backtracking ou d'unification comme chose serait générée à l'autre extrémité (avec jointures) OTOH cela tuerait toute récursivité de la profondeur arbitraire – BCS

+2

Sans backtracking, unification, récursivité et listes il n'y a pas de beaucoup de gauche de prolog. Et vous ne pouvez pas générer la même classe de choses avec des jointures, sauf si vous envisagez d'écrire du SQL auto-modifiable (requêtes qui génèrent des requêtes), ce que je suppose être _possible_ mais ... – MarkusQ

28

Oui, bien sûr. Une prémisse pour les sceptiques: tout livre semi-décent sur la théorie des bases de données mentionne Datalog (qui ressemble à Prolog) et des théorèmes qui démontrent qu'il est possible de le traduire depuis/vers l'algèbre relationnelle (RA) (sous certaines restrictions).

SQL n'est pas fidèle à la PR ou lithiase relationnelle, mais est suffisant pour soutenir Prolog:

2

Il est plus logique de faire une requête SQL de Prolog, qui peut ensuite être traduit dans les faits Prolog. par exemple. Prolog ODBC Library

Ceci supprime toutes les restrictions et maintient les deux langues séparées à leur place.