200 likes | 450 Views
Bases de Datos Deductivas (II). Prof. Leonid Tineo Departamento de Computación Universidad Simón Bolívar leonid@usb.ve. Base de Datos Deductiva. BDD = BDE+BDI BDE: Base de Datos Extensional Compuesta por Hechos Al estilo de una Base de Datos Relacional BDI Base de Datos Intensional
E N D
Bases de Datos Deductivas (II) Prof. Leonid Tineo Departamento de Computación Universidad Simón Bolívar leonid@usb.ve
Base de Datos Deductiva • BDD = BDE+BDI • BDE: Base de Datos Extensional • Compuesta por Hechos • Al estilo de una Base de Datos Relacional • BDI Base de Datos Intensional • Compuesta por Reglas • Al estilo de un Programa Lógico
Datalog • Lenguaje de Bases de Datos Deductivas, sintácticamente similar a Prolog. • Los predicados representan relaciones • Los predicados definidas por hechos forman la base de datos extensional • Los predicados definidos por reglas forman la base de datos intensional • Las reglas sin cabeza son las restricciones explícitas
Cláusulas de Horn • Literal: • Literal Positivo: Predicado con sus argumentos • Literal Negativo: negación de un literal positivo • Cláusula de Horn: • Disyunción de Literales donde a lo más uno es positivo: • A B1 B2 ... Bn • B1 B2 ... Bn
Cláusulas en Datalog • Notación Datalog: • Regla BDI A :- B1 , B2 , ... , Bn. • Hecho BDE A :- B1 , B2 , ... , Bn. • Regla RE :- B1 , B2 , ... , Bn. • Extensión de Datalog: • Admite literales negativos en el cuerpo • Ejemplo: A :- B1 , not B2 , ... , Bn. • Admite disyunciones en el cuerpo • Ejemplo: A :- B1 , (B2 1; B2 1 ... , B2 m ), Bn.
persona(luc, 1111, 99, jubilado). persona(joe, 4441, 25, universitario). persona(kal, 3311, 50, consultor). persona(dik, 2222, 75, jubilado). persona(dan, 4442, 15, liceista). persona(tom, 3322, 40, profesor). padre(joe,kal). padre(kal,dik). padre(dik,luc). padre(dan,kal). padre(tom,dik). Ejemplo de BDE en Datalog
Ejemplo de BDI en Datalog hermano(X,Y) :- padre(X,Z), padre(Y,Z), X!=Y. abuelo(X,Y) :- padre(X,Z), padre(Z,Y). tio(X,Y) :- padre(X,Z), hermano(Z,Y). primo(X,Y) :- padre(X,Z), tio(Y,Z). familiar(X,Y) :- padre(X,Y). familiar(X,Y) :- padre(X,Z), familiar(Z,Y), X!=Y. familiar(X,Y) :- familiar(Y,X).
Ejemplo de RE en Datalog :- padre(X,Y), persona(X,_,EdadX,_), persona(Y,_,EdadY,_), EdadX>EdadY. :- padre(X,X). :- abuelo(X,X). :- tio(X,X).
Regla Segura • Definición: • Toda variable en la cabeza o en un literal negativo del cuerpo debe ocurrir en al menos un literal positivo del cuerpo • Ejemplo: • familiar(X,Y) :- padre(X,Y). • familiar(X,Y) :- padre(X,Z), familiar(Z,Y), X!=Y. • familiar(X,Y) :- familiar(Y,X). • pariente(X,Y):- familiar(X,Y), not padre(X,Y). • Contra-ejemplo: • extranio(X,Y):- not familiar(X,Y).
Expansión de Regla (I) • Definición: • Una expansión de una regla es un conjunto de reglas equivalentes que resulta de sustituir cualquier literal en el cuerpo por las reglas que lo definen. • También la expansión del conjunto de reglas resultantes es una expansión de la regla original • La regla sola es también considerada una expansión de sí misma
Reglas: familiar(X,Y) :- padre(X,Y). familiar(X,Y) :- padre(X,Z), familiar(Z,Y), X!=Y. familiar(X,Y) :- familiar(Y,X). pariente(X,Y):- familiar(X,Y), not padre(X,Y), not padre(Y,X). Expansión: pariente(X,Y):- padre(X,Y), not padre(X,Y), not padre(Y,X). pariente(X,Y):- padre(X,Z), familiar(Z,Y), X!=Y, not padre(X,Y), not padre(Y,X). pariente(X,Y):- familiar(Y,X), not padre(X,Y), not padre(Y,X). Expansión de Regla (II)
Predicado Recursivo • Definición: • Un predicado es recursivo si existe al menos una regla en que éste ocurre en la cabeza y esa regla tiene al menos una expansión donde hay una regla en que éste ocurren tambiénen el cuerpo. • Ejemplo: • familiar(X,Y) :- padre(X,Y). • familiar(X,Y) :- padre(X,Z), familiar(Z,Y), X!=Y. • familiar(X,Y) :- familiar(Y,X).
Recursión Lineal • Definición: • Una regla de un predicado recursivo es de recursión si toda expansión de la regla resulta en reglas donde el predicado de la cabeza ocurre a lo más una vez en el cuerpo. • Ejemplo: • familiar(X,Y) :- padre(X,Y). • familiar(X,Y) :- padre(X,Z), familiar(Z,Y), X!=Y. • familiar(X,Y) :- familiar(Y,X). • Contra-ejemplo: • familiar(X,Y) :- familiar(X,Z), familiar(Z,Y), X!=Y.
Reglas Estratificables (I) • Definición: • Se dice que P depende negativamente de Q si existe una existe una regla R que tiene a P en la cabeza y que al menos una regla en una expansión de R tiene un literal negado de Q. • Un conjunto de reglas es estratificable si para todo predicado P no depende negativamente de si mismo
Reglas Estratificables (III) • Ejemplo: • familiar(X,Y) :- padre(X,Y). • familiar(X,Y) :- padre(X,Z), familiar(Z,Y), X!=Y. • familiar(X,Y) :- familiar(Y,X). • ascendente(X,Y) :- padre(X,Y). • ascendente(X,Y) :- padre(X,Z), ascendente(Z,Y). • descendente(X,Y) :- familiar(X,Y), not ascendente(X,Y).
Reglas Estratificables (III) • Contra-ejemplo: • familiar(X,Y) :- padre(X,Y). • familiar(X,Y) :- padre(X,Z), familiar(Z,Y), X!=Y. • familiar(X,Y) :- familiar(Y,X). • ascendente(X,Y) :- padre(X,Y). • ascendente(X,Y) :- padre(Z,Y), descendente(Z,X). • descendente(X,Y) :- familiar(X,Y), not ascendente(X,Y).
Restricción de Datalog • Una BDI en Datalog debe cumplir que: • Todas las reglas son Seguras • Garantiza que el conjunto de respuestas es finito y calculable • La recursión es Lineal • Garantiza que es factible una ejecución de tiempo razonable • El conjunto de reglas es Estratificable: • Garantiza la existencia de una instancia (o modelo)
Estratificación de una BDI (I) • Los predicados de la BDI que no dependen negativamente de otros predicados de la BDI pertenece al estrato 1 • Si un predicado P es tal que el estrato máximo en que se encuentra algún predicado Q tal que P depende negativamente de Q es M, entonces el predicado P pertenece al estrato M+1
BDI familiar(X,Y) :- padre(X,Y). familiar(X,Y) :- padre(X,Z), familiar(Z,Y), X!=Y. familiar(X,Y) :- familiar(Y,X). ascendente(X,Y) :- padre(X,Y). ascendente(X,Y) :-padre(X,Z), ascendente(Z,Y). descendente(X,Y) :- familiar(X,Y), not ascendente(X,Y). Estratificación estrato(familiar,1). estrato(ascendente,1). estrato(descendente,2). Estratificación de Una BDI (II)