Resumen
Datalog es un lenguaje de programación lógica declarativa. Aunque es sintácticamente un subconjunto de Prolog, Datalog generalmente utiliza un modelo de evaluación ascendente en lugar de descendente. Esta diferencia produce un comportamiento y propiedades significativamente diferentes de Prolog. A menudo se utiliza como un lenguaje de consulta para bases de datos deductivas. Datalog se ha aplicado a problemas en integración de datos, redes, análisis de programas y más.
Ejemplo
Un programa de Datalog consta de hechos, que son afirmaciones que se consideran verdaderas, y reglas, que indican cómo deducir nuevos hechos a partir de hechos conocidos. Por ejemplo, aquí hay dos hechos que significan que xerces es padre de brooke y brooke es padre de damocles:
parent(xerces, brooke).
parent(brooke, damocles).
Los nombres se escriben en minúsculas porque las cadenas que comienzan con una letra mayúscula representan variables. Aquí hay dos reglas:
ancestor(X, Y) :- parent(X, Y).
ancestor(X, Y) :- parent(X, Z), ancestor(Z, Y).
El símbolo :- se lee como "si", y la coma se lee como "y", por lo que estas reglas significan:
X es un ancestro de Y si X es un padre de Y.
X es un ancestro de Y si X es un padre de algún Z, y Z es un ancestro de Y.
El significado de un programa se define como el conjunto de todos los hechos que se pueden deducir utilizando los hechos iniciales y las reglas. El significado de este programa se da mediante los siguientes hechos:
parent(xerces, brooke).
parent(brooke, damocles).
ancestor(xerces, brooke).
ancestor(brooke, damocles).
ancestor(xerces, damocles).
De Wikipedia (CC BY-SA 4.0).