Question
Sans penser à beaucoup, il me semble qu'un grand nombre de fonctionnalités de Prolog pourrait être mise en œuvre en tant que calcul relationnel (SQL a.k.a.).
Quelqu'un at-il entendu parler de tous les outils pour convertir automatiquement Prolog à SQL?
La solution
Autres conseils
Oui, bien sûr.
Une prémisse pour les sceptiques: un livre semi-décent sur la théorie de base de données mentionne Datalog (qui est Prolog-like) et théorèmes qui démontrent qu'il est possible de traduire en / de l'algèbre relationnelle (RA) (sous certaines conditions spécifiques).
SQL n'est pas fidèle à la PR ou relationnelle lithiase, mais il est suffisant pour soutenir Prolog:
- Christoph Draxler a développé une Prolog à SQL compilateur (PL2SQL) pour sa thèse, disponible en téléchargement (.tgz) - également ici à CMU Artificial Intelligence Repository (il a été adapté et inclus dans au moins: Ciao Prolog et SWI-Prolog via Blipkit - programmation LOGIC biomédicale connaissances Kit d'intégration );
- Igor Wojnicki a développé pour son doctorat ( Un moteur Inference fondé sur des règles L'extension des capacités de traitement des connaissances des Systèmes de gestion de base de données relationnelle) un __gVirt_NP_NN_NNPS<__ système prototype mettant en oeuvre son appelé Redares , mais il ne semble pas disponible en téléchargement;
- Résumé Relational machine (RAM) traduit Prolog à l'algèbre relationnelle, mais il ne semble pas avoir un backend SQL;
- Walter D. Potter a quelques documents sur l'intégration Prolog / SGBDR;
- document de Kevin Boone Utilisation de SQL avec Prolog pour améliorer les performances avec grandes bases de données est aussi intéressant;
- et ainsi de suite ...
La mise en correspondance est pas très bon. SQL, par exemple, ne fait pas faire marche arrière, l'unification, des listes ou des structures imbriquées adhoc.
Prolog ne traite pas bien avec des objets composites, index, etc.
Je dirais que c'est un no-go.
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
Cela supprime toutes les restrictions et conserve les deux langues séparées en leur place.
I a écrit un traducteur qui convertit un sous-ensemble de Prolog dans SQL fonctions définies par l'utilisateur.
Ce prédicat Prolog peut être traduit en SQL:
is_between(A,B,C) :-
A<B,B<C.
Ceci est la sortie en fonction MySQL du traducteur:
CREATE FUNCTION is_between(A double,B double,C double) RETURNS BIT BEGIN
RETURN A>B and B>C;
END
De même, il y a un Prolog à SQL compilateur compilateur pour SWI-Prolog et un autre traducteur qui convertit un sous-ensemble non récursif de Datalog en SQL.