Datalog
Le Datalog est une question et la langue de règle pour les bases de données déductives qui est syntactiquement un sous-ensemble du Prolog . Ses origines remontent au commencement de la programmation de logique , mais il est devenu en avant comme secteur séparé autour du 1978 quand le Hervé Gallaire et le Jack Minker ont organisé un atelier sur la logique et les bases de données que la limite Datalog a été inventée au milieu des années 80 par un groupe de chercheurs a intéressé dans la théorie de base de données de .
Dispositifs, limitations et prolongements
L'évaluation de question avec Datalog est saine et complète et peut être faite efficacement même pour de grandes bases de données. L'évaluation de question est habituellement faite using le fond vers le haut des stratégies.Contrairement au Prolog, il rejette des limites complexes pendant que les arguments du affirme par exemple P (1, 2) est admissible mais pas P (f1 (1), 2),
Datalog était populaire dans la recherche scolaire de base de données mais n'a été jamais réussi à la partie devenante d'un système de base de données commercial , en dépit de ses avantages (comparés à d'autres langues de base de données telles que SQL ) comme des questions récursives et une sémantique propre. Néanmoins, quelques systèmes de base de données employés couramment incluent des idées et des algorithmes développés pour Datalog. Par exemple, la norme inclut des questions récursives, et l'algorithme magique d'ensembles de (au commencement développé pour l'évaluation plus rapide des questions de Datalog) est mis en application dans le DB2 d'IBM.
Deux prolongements qui ont été faits à Datalog incluent une prolongation pour permettre à la programmation orientée objectivement de et une prolongation pour permettre les disjonctions car les têtes prolongements des clauses des deux ont des impacts importants sur la définition de la sémantique de Datalog et sur l'exécution d'un interprète correspondant de Datalog.
Exemple
Programme de Datalog d'exemple :parent (facture, Mary).
Ces deux lignes définissent deux faits, c. les choses qui se tiennent toujours. Elles peuvent être intuitivement comprises comme : le le parent de la facture est Mary et le le parent de Mary est John .
ancêtre (X, Y) : - parent (X, Y). ancêtre (X, Y) : - ancêtre (X, Z), ancêtre (Z, Y).
Ces deux lignes décrivent les règles qui définissent le rapport d'ancêtre. Une règle se compose de deux parts principales séparées par le : - symbole de . La partie à la gauche de ce symbole est la tête , la pièce de vers la droite le corps la règle. Une règle est lue (et peut être intuitivement compris) comme
de si on le sait que le . Les lettres majuscules représentent des variables. Par conséquent dans l'exemple que la première règle peut être lue comme X est l'ancêtre de Y si on le sait que X est le parent de Y . Et la deuxième règle comme X est l'ancêtre de Y si on le sait que X est l'ancêtre d'un certain Z et Z est l'ancêtre de Y . La commande des clauses est non pertinente dans Datalog contrairement au Prolog qui dépend de la commande des clauses pour calculer le résultat de l'appel de question. Datalog distingue les symboles extensional et intensional d'attribut. Tandis que des symboles extensional d'attribut sont seulement définis par des faits, des symboles intensional d'attribut sont définis seulement par des règles. Dans l'exemple au-dessus de ancestor est un symbole intensional d'attribut, et parent est extensional. Des attributs ne peuvent également être définis par des faits et des règles et donc ni pour être purement extensional ni intensional, mais n'importe quel programme de datalog peut être récrit dans un programme équivalent sans de tels symboles d'attribut avec des rôles doubles.
? - ancêtre (facture, X).
La question ci-dessus demande tous les ancêtres de facture et renverrait le Mary et le John une fois posée contre un système de Datalog contenant les faits et les règles décrits ci-dessus.
Systèmes mettant en application Datalog
La plupart des réalisations de Datalog proviennent des projets d'université. Voici une liste courte de quelques systèmes de source ouverte qui sont basés sur Datalog ou fournissent un interprète de Datalog :bddbddb, une exécution de Datalog faite à l'Université de Stanford . Il est principalement employé pour questionner le bytecode de Java incluant point-à l'analyse sur de grands programmes de Java.
ConceptBase, un système de base de données déductive et orientée objectivement basé sur un expert de question de Datalog. Elle est principalement employée pour la modélisation et la méta-modélisation conceptuelles.
DES, une exécution d'ouvrir-source de Datalog à employer pour enseigner Datalog dans les cours.
XSB , une programmation de logique et système de base de données déductif pour Unix et Windows.QL , une variante orientée objectivement de Datalog créée par Semmle.
Datalog, un système de base de données déductif léger écrit dans le Lua .
SecPAL qu'une langue de politique de sécurité a développé par Microsoft Research
Voir également
Programmation de logique Réponse de programmation réglé de
SWRL
D (spécifications de langage de programmation)
D4 (langage de programmation)
Prolog
IBM DB2
.
| Random links: | Municipalité de Falun | Terry Gerin | Karate Kid (bandes dessinées) | Lac Overholser | Shelton H. Davis | Datalog |