SGBD Déductifs: Chapitre 18
SGBD Déductifs: Chapitre 18
SGBD déductifs
1. Introduction
Les SGBD déductifs, appelés aussi systèmes de gestion de bases de connaissances (en anglais
Knowledge Base Management Systems, KBMS), sont nés de la rencontre de deux domaines:
l'intelligence artificielle (plus précisément la programmation logique et les méthodes de preuve
automatique de théorèmes) et les bases de données. Les SGBD déductifs ont pour objectif de
décrire explicitement et de gérer non pas uniquement les connaissances factuelles (les données),
mais aussi les connaissances génériques qui sont de deux types:
- les règles de déduction qui permettent de déduire des informations nouvelles à partir des
informations stockées dans la base de données,
- les contraintes d'intégrité qui définissent des normes et permettent ainsi de contrôler la validité
des mises à jour.
Les SGBD classiques ne prennent pas en compte ces règles de déduction, ni les contraintes
d'intégrité (sauf certaines très simples) alors qu'il existe une demande réelle de la part des
utilisateurs de SGBD. Les applications des SGBD déductifs sont variées: la gestion classique ou
prévisionnelle, l'aide à la décision, la médecine, la robotique, la productique, ..., et plus
généralementtoute application des systèmes experts qui requiert un grand volume de données.
L'intérêt de faire gérer les règles de déduction et contraintes d'intégrité par le système est que les
programmes d'application n'ont plus à le faire: ils pourront être indépendants de ces règles,
notamment des règles de gestion propres à chaque entreprise (cas des progiciels). Ils seront plus
vite écrits et de maintenance plus simple. La modélisation de la base qui comprend les données et
les règles est plus complète, plus naturelle, plus générale et plus aisée (il y a moins de données à
entrer dans la base). La base sera moins volumineuse. Le gain de place peut être d'un facteur 10,
100, ... Par exemple, la description des différentes configurations possibles pour un avion militaire
© Christine Parent 1
particulier tenait en mémoire centrale quand elle était faite avec des règles, et ne tenait pas sur un
SGBD classique quand elle était faite uniquement avec des données.
Il y a plusieurs façons d'employer les techniques d'intelligence artificielle dans un SGBD, ou
vice versa:
- Créer un nouveau type de SGBD qui offre les fonctions d'un SGBD classique et dont tout
l'interface utilisateur, langage de manipulation des données et langage de programmation, est le
même: un langage déclaratif de type langage logique qui permet d'effectuer des déductions et
d'exprimer des contraintes d'intégrité.
Avantages de ce type de SGBD:
- ceux des SGBD
- déduction
- un seul langage d'interface: plus de problème d'incompatibilité entre deux langages
- langage déclaratif: optimisation possible (comme SQL, QUEL, ...).
- Une autre solution, plus facile à réaliser mais moins efficace, est de faire coopérer un système
expert et un SGBD relationnel. Le SGBD gère la base de faits et de règles. Le système expert
offre le langage logique d'interface, et ses mécanismes d'inférence.
On parle alors de "couplage" fort ou faible selon le degré de vision qu'a l'utilisateur des deux
systèmes, ou d'un seul.
Il existe des prototypes de ce type dans les laboratoires de recherche. IBM commercialise
PROSQL.
- On peut aussi utiliser les mécanismes de l'intelligence artificielle dans certains modules du
SGBD pour réaliser un SGBD d'interface classique mais plus performant.
Exemples:
- conception du schéma conceptuel à l'aide d'un système expert (SECSI d'INFOSIS)
- conception du schéma logique/interne à l'aide d'un système expert
- traitement des requêtes avec valeurs nulles ou floues
- réponses "intelligentes" dans le cas de réponse vide
- ...
Nous nous intéressons ici au premier cas, et plus particulièrement aux principes des langages
logiques spécifiques aux bases de données.
© Christine Parent 2
On veut le chef d'André.
SQL: Select NomChef From SERVICE, EMPLOYE Where NomS=Service And Nom="André"
Langage logique:
1) chef (C, E) :- employé (E, A, Sal, Serv) & service (Serv, C)
ce qui signifie: C est le chef de E s'il existe un Sal et un Serv tels que :
<E, A, Sal, Serv> est un employé et C est le chef de Serv.
2) chef (C, "André")
ce qui définit l'ensemble des C qui sont les chefs d'André.
La fermeture transitive est utile, car fréquente dans les applications des systèmes experts, par
exemple pour la composition des produits, la gestion des réseaux (transports, fluides), les graphes,
...
Exemple:
chef(C,E) qui signifie: C est le chef direct de E
On veut définir tous les supérieurs hiérarchiques par le prédicat déduit "supérieur" :
supérieur(C,E) :- chef(C,E)
supérieur(C,E) :- supérieur(C,X) & chef (X,E)
Ceci ne peut pas s'exprimer en SQL seul, il faut recourir à SQL et à un langage de programmation
(C, Pascal,...).
C'est pourquoi un nouveau langage logique, purement déclaratif, conçu pour les bases de données a
été proposé et est devenu un standard pour les chercheurs: Datalog que nous présentons dans ce
chapitre.
Datalog travaille sur un modèle de données plat du type modèle relationnel en première forme
normale. Mais les idées et principes de Datalog sont valables pour tout modèle de données, qu'il
soit plat comme le modèle relationnel ou structuré comme les modèles de données orientés objets.
© Christine Parent 3
2. Sémantique des règles logiques Datalog
Avec un LMD relationnel, tel que SQL, QUEL ou l'algèbre relationnelle, la sémantique des
requêtes est bien définie. On sait, à partir de l'expression de la requête, définir formellement les
tuples qui constituent le résultat. Par contre, définir exactement quel est le résultat d'un programme
composé d'un ensemble de règles n'est pas évident.
Il y a trois façons de définir la sémantique des règles. Dans les cas simples (comme dans ceux vus
ci-dessus) les trois donnent le même résultat. Mais si les règles sont plus complexes (avec
négation, fonctions ...), ce n'est plus vrai. En effet les règles ne définissent que les propriétés du
résultat, pas le résultat. Dans la plupart des cas (absence de fonction, absence de de négation ou
négations stratifiées), la sémantique peut être définie de façon unique en transformant les règles
déclaratives en une suite d'instructions qui calculent le résultat.
Plus formellement, étant donné un domaine D, infini, de constantes, l'interprétation d'un prédicat
d'arité n consiste à définir le sous-ensemble de D n (la relation n-aire) pour lequel le prédicat est
vrai.
Un modèle d'un ensemble de règles est constitué d'une interprétation pour chaque prédicat, telle
que toutes les règles sont toujours vraies quelles que soient les valeurs (prises dans D) affectées à
leurs variables.
Exemple:
p(X) :- q(X) (1)
q(X) :- r(X) (2)
D = entiers
Modèle 1: r(1), q(1), p(1), q(2), p(2), p(3) sont vrais
C'est un modèle, car les deux règles sont vraies pour tout X entier.
© Christine Parent 4
Pour un prédicat base de données, une occurrence de ce prédicat est vraie ssi cette occurrence est
un tuple de la relation décrivant l'extension de ce prédicat. Pour les prédicats de déduction, il faut
leur trouver une interprétation cohérente avec celle des prédicats base de données, qui conduise à
un modèle.
Exemple ci-dessus:
r est un prédicat base de données. Supposons que seul r(1) soit vrai.
Modèle 2: r(1), q(1), p(1)
C'est un deuxième modèle, qui est, comme le premier, cohérent avec la base de données (c'est-à-
dire qui contient les prédicats base de données: r(1)).
Il y a une infinité de modèles cohérents avec cette base de données.
Modèle 2 est un modèle minimum de cette base de données: on ne peut pas en ôter un seul fait
sans détruire le modèle cohérent avec la base de données. C'est le plus petit modèle minimum: il
n'existe pas de modèle plus petit.
S'il n'y a pas de négation dans les règles, il y a un seul modèle minimum qui est le plus petit
modèle, et il est identique à l'ensemble des faits déduits par l'approche de la théorie de la preuve.
Par contre, quand il y a négation, il peut coexister plusieurs modèles minimums sans qu'il n'y ait de
plus petit modèle, et ils ne correspondent pas nécessairement aux faits trouvés par la théorie de la
preuve.
- Autre approche: traduire les règles en une suite d'opérations d'algèbre relationnelle.
S'il n'y a pas de négation, on prouve que le résultat trouvé est le même que celui du plus petit
modèle et que celui de la théorie preuve. Dans le cas de négation stratifiée, on prouve que le
résultat trouvé est le même que celui d'un modèle minimum particulier.
Cette définition de la sémantique est très utile car elle permet d'implémenter efficacement les
ensembles de règles. Mais seule, elle n'est pas suffisante, car elle ne donne aucune définition
formelle de cette sémantique. La seule définition qu'elle donne est: "C'est l'ensemble de faits que
mon interpréteur déduit".
© Christine Parent 5
- Les prédicats sont des relations dont les attributs:
- n'ont pas de nom, mais uniquement un numéro d'ordre
- ont tous le même domaine D (on ne précise pas les domaines).
Formule atomique
Une formule atomique est constituée d'un symbole de prédicat et d'une liste d'arguments. Par
exemple: p(A1, A2, ..., An)
où p est le nom d'un prédicat d'arité n, et les Ai sont les arguments du prédicat (constantes ou
variables).
Conventions d'écriture:
prédicats et constantes: première lettre minuscule
variables: première lettre majuscule
les relations correspondant aux prédicats base de données ont le même nom que le prédicat,
mais écrit en majuscules.
Remarque: toute formule atomique représente une sélection d'une relation, c'est-à-dire une
relation.
Exemple:
Soit la relation ARTICLE (no, couleur, prix)
la formule atomique:
article (100,C,P)
représente: [no = 100] ARTICLE .
La formule atomique:
article (X,C,X)
représente: [no = prix] ARTICLE .
Prédicats évaluables
Afin de permettre dans les règles de comparer des variables ou constantes, il y a un dernier type de
prédicat: les prédicats évaluables ou prédicats de comparaison. Ce sont des prédicats qui utilisent
un opérateur de comparaison arithmétique: =, ≠, >, <, ≥, ≤.
Exemples: X<Y ou X=Y.
On peut classer ces prédicats évaluables dans les prédicats définis par extension bien que leur
interprétation (extension) ne soit pas stockée dans la base de données, mais plutôt calculée par le
SGBD. L'interprétation des prédicats évaluables est particulière: elle est non modifiable (pas de
mise à jour), et en général infinie.
Clauses de Horn:
Une clause de Horn est une disjonction de formules atomiques éventuellement niées, dont au
maximum une seule est positive:
P1 P2 ... Pr
Ce qui s'écrit aussi: P1 (P2 ... Pr)
Il y a trois types de clauses de Horn:
- les faits: P1
© Christine Parent 6
- les contraintes d'intégrité: (P2 ... Pr)
- lesrègles: P1 (P2 ... Pr)
qu'on écrit: P1 :- P2 & ... & Pr
On appelle: P1 : la tête de la règle
P2 & ... & Pr : le corps de la règle
P2, ...., Pr : les sous-buts de la règle
Les variables n'apparaissant que dans le corps sont quantifiées existentiellement sur le corps, les
autres variables universellement sur toute la règle.
Nous nous restreindrons aux clauses de Horn de type faits et règles (avec une et exactement une
formule atomique positive). On appelle programme logique un ensemble de ces clauses de Horn.
Exemple:
parent (X,Y) prédicat base de données qui signifie: X est parent direct de Y
gdparent (X,Y) :- parent (X,Z) & parent (Z,Y) (1)
cette règle (1) se lit. "X, Y, si Z tel que: X est parent de Z et Z est parent de Y, alors X
est un gdparent de Y"
ancêtre (X,Y) :- parent (X,Y) (2)
ancêtre (X,Y) :- ancêtre (X,Z) & parent (Z,Y) (3)
la règle (2) se lit: "X, Y, si X est parent de Y, alors X est un ancêtre de Y"
la règle (3) se lit; "X, Y, si Z tel que: X est ancêtre de Z et Z est parent de Y, alors X
est un ancêtre de Y".
Définition: Le graphe de dépendance d'un programme logique est un graphe orienté dont:
- les noeuds sont les prédicats (sauf les prédicats évaluables)
- les arcs vont de chaque sous-but vers la tête du prédicat.
Exemple:
Le graphe de dépendance du programme logique de l'exemple précédent est:
U ti li se z W ord 6.0 c ( ou u l tŽr ie ur )
Un programme logique est récursif s'il existe un (ou des) cycle(s). Un prédicat est récursif s'il est
sur un cycle ou s'il dépend d'un prédicat récursif. Les prédicats base de données (qui n'ont pas de
sous-but) sont nécessairement non récursifs (pas d'arc entrant).
Problèmes:
Les prédicats évaluables peuvent définir des relations infinies.
Exemple: sup (X,Y) :- X>Y
Les règles avec des variables qui n'apparaissent que dans la tête génèrent aussi des relations
infinies.
Exemple: aime (X,Y) :- film (Y,"excellent")
© Christine Parent 7
Une solution simple est que toutes les variables des règles soient bornées, c'est-à-dire aient un
domaine de définition limité. Par exemple, les variables des prédicats base de données le sont
nécessairement. A l'opposé celles des prédicats évaluables ne le sont pas.
Définition: une règle est sûre si toutes ses variables (de la tête et du corps) sont bornées.
Cette définition suppose que les prédicats déductifs qui sont dans le corps de la règle sont eux-
mêmes définis par des règles sûres.
Exemples:
sup(X,Y) :- X>Y X et Y non bornés règle non sûre
aime(X,Y) :- film(Y,"excellent") Y borné, X non borné règle non sûre
ancêtre(X,Y) :- parent(X,Y) X et Y bornés règle sûre
ancêtre(X,Y) :- ancêtre(X,Z) & parent (Z,Y) X, Y, Z bornés règle sûre
p(X,Y) :- q(X,Z) & W=a & Y=W X, Y, Z, W bornés règle sûre
4.1 Principe
1. Le programme logique est non récursif. On peut donc définir grâce au graphe de dépendance un
ordre sur les prédicats selon lequel les évaluer: on va évaluer les sous-buts avant d'évaluer le
prédicat de tête.
2. Calcul de la relation correspondante à un prédicat p:
2.1. Pour chaque règle de tête p :
p :- q1 & ... & qn (1),
calculer l'expression d'algèbre P correspondante de la façon suivante:
Les tuples de P doivent satisfaire q1 et ... et qn. Si une même variable apparaît dans qi
et qj, les tuples correspondant dans les relations Qi et Qj doivent avoir pour cet attribut
la même valeur. P est donc construit à partir de la jointure : Q1 * Q2 ... * Qn.
1
2.2. Le prédicat p peut avoir comme variables un sous ensemble des variables du corps, alors il
faut projeter sur ces variables:
P = [variables de tête de p] ( Q1 * ... * Qn )
2.3. Le prédicat p peut être défini par plusieurs règles. Dans ce cas, les tuples obtenus par
chaque règle sont bons. Il faut en faire l'union:
P = pour les règles de tête p [variables de tête de p] ( Q1 * ... * Qn )
Exemples:
gdparent (X,Y) :- parent (X,Z) & parent (Z,Y)
Relation GDPARENT:
schéma: X Y Z
population: PARENTXZ * PARENTZY
Algorithme 1: Eval-rule
Données: une règle: r :- p1 & ... & pn
où les prédicats pi correspondent à des relations Ri (soit pi est un prédicat base de données, soit
c'est un prédicat déductif qui a déja été évalué)
Résultat: une expression d'algèbre, R, d'arguments (R1, ... Rn), équivalente au corps de la règle.
Début
1) Pour tout sous-but, pi, du corps de la règle, qui n'est pas un prédicat évaluable, calculer la
relation Qi correspondante:
Qi = [variables qui apparaissent] [#j = constante ...... #j = #k]Ri
dans le sous-but pi si "constante" si la même variable
apparaît dans pi apparaît à deux places
à la place de la différentes dans pi
variable Xj (aux places j et k)
2) Pour toute variable X du corps, qui n'est dans aucun des prédicats traités ci-dessus (qui est
uniquement dans des prédicats évaluables) calculer la relation unaire Dx:
- si un des prédicats est: X=a ou (X=Y & ... & Y=a)
alors: Dx={<a>}
- sinon on a: (X=Z & ... & Z=Y) et Y est variable dans un prédicat non évaluable: p k(....Y...),
alors: Dx=[#j]Rk
Exemple: pour le programme de recherche des ancêtres, dans telle famille on peut savoir descendre
de tel personnage illustre mais ne pas savoir exactement comment.
ancêtre (louis14, toto)
Solution: Pour que toutes les règles définissant le même prédicat déductif aient les mêmes variables
de tête, il faut rajouter des variables chaque fois qu'il y a une constante (soit X la variable mise à la
place de la constante) ou deux fois la même variable (soient X et Y les deux variables renommées),
et rajouter dans le corps les prédicats évaluables correspondants: X=constante ou X=Y.
Exemple:
ancêtre (X,Y) :- ancêtre (X,Z) & parent (Z,Y) (1)
ancêtre (U,V) :- parent (U,V) (2)
ancêtre (louis14, toto) (3)
On réécrit (2): ancêtre (X,Y) :- parent (X,Y)
On réécrit (3): ancêtre (X,Y) :- ancêtre (louis14, toto) & X=louis14 & Y=toto
Début
1) Rectifier toutes les règles
2) Etablir le graphe de dépendance afin d'ordonner les prédicats: p1, p2, ..., pr
3) Calculer la relation Pi pour chaque prédicat pi (en suivant l'ordre défini au point 2) de la façon
suivante:
- si c'est un prédicat base de données: Pi = Ri
- si c'est un prédicat déductif:
pour chaque règle rij de tête pi:
employer l'algorithme 1 pour calculer la relation Rij équivalente au corps de la règle,
projeter sur les variables de tête de pi,
faire l'union des Rij. On obtient ainsi l'expression d'algèbre équivalente au prédicat pi. Le
calcul de cette expression définit la relation Pi.
Fin
Théorème: L'algorithme 2 crée en résultat l'ensemble des faits qui peut être trouvé par la théorie de
la preuve, et qui est aussi le plus petit modèle (voir la démonstation dans [1]).
5.1 Principe
© Christine Parent 10
Dans le cas d'un programme récursif Datalog, on calcule les prédicats non récursifs selon
l'algorithme vu précédemment. Pour chaque ensemble de prédicats récursifs p 1, p2, ..., pr,
mutuellement dépendants (situés sur le même cycle), à partir des relations R 1, R2, ... Rm
correspondant aux prédicats base de données et à ceux déjà évalués, on peut calculer les relations
P1, P2, ..., Pr qui leur correspondent: c'est la solution à l'ensemble d'équations d'algèbre
relationnelle (appelées équations Datalog):
Pi = Eval (pi, Ri, ..., Rm, P1, ..., Pr) pour i=1, 2, ...., r
où Eval est la procédure algébrique qui fait l'union des projections des Eval-rule pour toutes les
règles de tête le même prédicat déductif pi.
On appelle point fixe d'un ensemble d'équations Datalog toute solution <P1, P2 ..., Pr> à ces
équations.
On démontre que les points fixes sont des modèles du programme logique. Mais tout modèle n'est
pas un point fixe de l'ensemble d'équations correspondantes. On démontre que le plus petit modèle
est le plus petit point fixe qui est aussi l'ensemble des faits dérivables par la théorie de la peuve.
Exemple d'un modèle (non minimum) qui n'est pas solution de l'équation Datalog:
Soit la base de données suivante: ARC = Ø
Soit: CHEMIN = <1,2>
C'est un modèle parce que les deux règles sont vraies (partie droite fausse).
Ce n'est pas un point fixe car:
<1,2> ≠ Ø [X,Y] (<1,2> * <1,2>)
Algorithme 3
Données: un ensemble de prédicats base de données r1 ... rk, avec leurs relations R1 ..., Rk
un ensemble de prédicats déductifs p1 ... pm
Résultat: le plus petit point fixe (solution minimum des équations correspondant aux prédicats
p1, ... pm)
Début
1) Créer une équation pour chaque prédicat déductif pi:
Pi = Eval (pi, R1, ..., Rk, Pr, ..., Pm)
2) Initialiser les relations Pi à Ø.
3) Calculer Eval pour tous les Pi, et recommencer jusqu'à ce qu'aucun nouveau tuple ne soit ajouté
dans aucun Pi.
Fin
Exemple:
gdparent (X,Y) :- parent (X,Z) & parent (Z,Y) (1)
ancêtre (X,Y) :- parent (X,Y) (2)
ancêtre (X,Y) :- ancêtre (X,Z) & parent (Z,Y) (3)
Equations:
GDPARENTXY = [X,Y] (PARENTXZ * PARENTZY) (4)
ANCETREXY = PARENTXY [X,Y] (ANCETREXZ * PARENTZY) (5)
Soit la base de données PARENT suivante:
Utilisez Word 6.0c (ou ultŽrieur)
Théorème: L'algorithme 3 fournit le plus petit point fixe (solution des équations), qui est le plus
petit modèle, et qui est aussi l'ensemble des faits déductibles par la théorie de la preuve (voir la
démonstration dans [1]).
© Christine Parent 12
C'est un problème difficile, important, car la récursion est fréquente dans les applications.
Différents algorithmes ont été proposés, dont le suivant, appelé algorithme d'évaluation par
incrément ou "semi-naïve" (par opposition à l'algorithme 3: évaluation naïve).
Intuitivement, quand un sous-but est nié, cela signifie qu'il faut prendre le complément de la
relation correspondant à ce sous-but. Mais sur quel domaine définir le complément ? R est une
relation infinie.
Une solution pour que les règles soient sûres est que les variables de tout sous-but nié apparaissent
dans un autre sous-but non nié qui n'est pas de type évaluable.
© Christine Parent 13
homme(X) signifiant: X est un homme (de sexe masculin)
marié(X,Y) signifiant: X est le mari de Y
on définit le prédicat déductif suivant:
jeune_homme(X) :- homme(X) & marié(X,Y)
qui signifie: X est un jeune_homme si X est un homme et s'il n'existe pas de Y auquel X est marié.
En algèbre, on ne peut ici faire la différence car les deux relations n'ont pas le même schéma. Si on
essaye d'employer la négation de la relation MARIE, on obtient l'expression d'algèbre relationnelle:
[X]( HOMMEX * MARIEXY )
où MARIEXY est l'ensemble des couples <X,Y> tel que X n'est pas le mari de Y.
Le résultat est l'ensemble des <X> tel que X n'est pas marié à toutes les femmes! C'est-à-dire tel
qu'il existe une femme à laquelle X n'est pas marié!
Solution: n'autoriser dans les sous-buts niés que des variables qui apparaissent dans un autre sous-
but positif et non évaluable.
Il faut (c'est toujours possible) réécrire la règle autrement. Par exemple, la règle jeune_homme peut
s'écrire:
mari(X) :- marié(X,Y)
jeune_homme(X) :- homme(X) & mari(X)
Ce qui conduit à l'expression d'algèbre suivante:
HOMMEX -[X]MARIEXY
Les définitions de variable bornée et de programme sûr sont donc étendues de la façon suivante:
Problème: quand il y a négation dans un programme logique, il peut y avoir plusieurs points fixes
minimums (et non plus un unique plus petit point fixe). Que signifie alors un tel programme
logique?
© Christine Parent 14
Exemple:
homme(X) :- humain(X) & femme(X)
femme(X) :- humain(X) & homme(X)
où r est un prédicat base de données; p et q des prédicat déductifs.
Equations d'algèbre:
HOMME = HUMAIN - FEMME
FEMME = HUMAIN - HOMME
Soit la base de données: HUMAIN = {annie}
alors:
S1: HOMME = Ø , FEMME = {annie} est une solution minimale
S2: HOMME = {annie} , FEMME = Ø est une solution minimale
Il y a deux points fixes minimums! Il n'y a pas de plus petit point fixe.
Dans l'exemple humain, homme et femme, il y a un cycle avec négation: le programme n'est pas
stratifiable.
Dans le cas de programme stratifiable, on peut avoir encore plusieurs points fixes minimums, mais
on sait choisir parmi eux celui qui représente la sémantique du programme logique.
© Christine Parent 15
Ces strates nous définissent l'ordre selon lequel calculer les prédicats du programme logique.
Exemple: un programme sans négation: tous les prédicats sont dans la strate 1.
Exemple:
homme(X) :- humain(X) & femme(X) (R1)
femme(X) :- humain(X) & homme(X) (R2)
Initialisation:
strate 1 = humain, homme, femme
nb prédicats = 3
Première passe sur les règles:
R1 homme en strate 2
R2 femme en strate 3
Deuxième passe sur les règles:
R1 homme en strate 4 Impossible de stratifier ce programme.
Exemple:
p(X) :- r(X) (R1)
p(X) :- p(X) (R2)
q(X) :- s(X) & p(X) (R3)
Initialisation:
strate 1 = r, p, q, s
nb prédicats = 4
Première passe sur les règles:
R1 /
R2 /
R3 q en strate 2
Deuxième passe sur les règles:
R1 /
R2 /
R3 / OK: Le programme est stratifié.
La strate 1 contient donc p, r, et s; la strate 2 contient q.
© Christine Parent 16
Quand un programme est stratifié et sûr, il est possible de calculer un point fixe minimum qui est le
plus "naturel" comme choix pour définir la sémantique du programme.
Principe: Les règles de chaque strate ne dépendent que des règles des strates inférieures ou de la
strate elle-même. S'il y a un sous-but nié, il est forcément défini dans une strate inférieure.
On peut calculer, par l'algorithme 3, les prédicats de la strate i en fonction des relations (ou de leur
complément) représentant les prédicats des strates inférieures ou égales.
Début:
1) Calculer DOM = ij [un attributi] relationj base de données {constantes du programme}
2) Pour chaque strate i = 1, 2, ... faire:
- pour chaque sous-but non nié de type prédicat de base de données ou prédicat déductif déjà
calculé dans une strate précédente, prendre la relation correspondante
- pour chaque sous-but nié q d'arité n, prendre la relation:
(DOM x ... x DOMn fois) - Q (Q étant la relation déjà calculée pour q)
- utiliser l'algorithme 3 (évaluation d'un programme récursif) pour calculer les relations
correspondant aux prédicats de la strate i.
Fin
Exemple:
p(X) :- r(X) strate 1
p(X) :- p(X)
q(X) :- s(X) & p(X) strate 2
Soient les relations R = {1} et S = {1,2} pour les prédicats base de données.
DOM = R S
Strate 1:
Equation Datalog: P=RP
Cette équation est évaluée itérativement:
Eval(P) P
initialisation Ø
itération 1 1
itération 2 aucun nouveau tuple
Donc P ={1} c'est-à-dire P = R
Strate 2:
On calcule P :
P = DOM - P = (R S) - R = S - R
Equation Datalog: Q = S * P = S * (S-R) = S (S-R) = S - R
© Christine Parent 17
Donc: Q = S - R
Cette équation peut se calculer directement (pas de récursivité):
Q={2}
C'est le point fixe minimum S1, trouvé le plus"naturel" au § 6.3.
7. Conclusion
Les SGBD déductifs souffrent actuellement d'une mauvaise image de marque dans la communauté
des clients potentiels (entreprises ...) parce que jugés trop "théoriques". Il est important de
développer au dessus de Datalog des interfaces utilisateurs plus agréables à manipuler, d'un aspect
plus connu, comme un SQL augmenté de capacités de déduction, ou un interface graphique. Il
faudra aussi proposer des méthodes de conception de bases de données déductives: comment
structurer l'ensemble de règles pour qu'il soit facilement compréhensible, comment choisir s'il faut
mémoriser telles informations en extension (par relation) ou en intension (par règle) ? ...
D'autres travaux ont permis d'enrichir Datalog avec des fonctions, ou des opérateurs de mise à jour.
Actuellement, un fort courant de recherches propose des langages de règles adaptés, non plus au
modèle relationnel plat, mais aux modèles orientés objets, de façon à combiner les avantages du
pouvoir descriptif des modèles orientés objets et la puissance de manipulation des langages de
règles; ce sont les DOOD "Deductive and Object Oriented Databases".
Bibliographie
[1] J. D. Ullman
"Principles of Database and Knowledge-Base Systems" volume 1
Computer Science Press
[2] N. Bidoit
"Bases de données déductives - Présentation de Datalog"
Armand Colin
© Christine Parent 18