La base déductive : faits et règles
Une base faite de faits stockés et de règles qui en déduisent d'autres, en Datalog : lire une règle, poser une requête, déduire à la main ce que produit une règle non récursive et la rapprocher de l'algèbre relationnelle.
- 26 cartes
- 5 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
- Mises en situation
- Comprendre
Quelques cartes du deck
Base déductive : de quoi s'agit-il ?
Voir la réponse
Base qui contient des faits stockés et des règles, et qui en déduit à la demande d'autres faits qu'on ne lui a jamais écrits.
Une relation comme grand-parent n'a pas besoin d'être stockée : la règle la reconstruit à partir des parents, et elle suit les faits quand ils changent.
Avec ces faits et cette règle, quels faits
frere_ou_soeursont déduits ?
```prolog
parent(ana, bob).
parent(ana, cleo).
parent(bob, dan).
frere_ou_soeur(X, Y) :- parent(P, X), parent(P, Y), X != Y.`frere_ou_soeur(bob, cleo)etfrere_ou_soeur(cleo, bob)- Seulement
frere_ou_soeur(bob, cleo) frere_ou_soeur(bob, cleo),frere_ou_soeur(cleo, bob)etfrere_ou_soeur(dan, dan)- Aucun, car aucun parent n'est partagé par deux faits
parentdistincts
Voir la réponse
frere_ou_soeur(bob, cleo)etfrere_ou_soeur(cleo, bob)Avec P = ana, X et Y prennent chacun bob et cleo : quatre couples, dont deux éliminés par
X != Y. Les deux restants sont symétriques, car la règle n'impose aucun ordre entre X et Y. Avec P = bob, le seul couple est (dan, dan), éliminé lui aussi : dan n'a ni frère ni sœur.Dans une règle, ce qui précède
:-s'appelle la … et ce qui le suit le ….Voir la réponse
Dans une règle, ce qui précède
:-s'appelle la tête et ce qui le suit le corps.La tête est la conclusion, un seul atome ; le corps est la liste des conditions, séparées par des virgules qui se lisent « et ».
Datalog : de quoi s'agit-il ?
Voir la réponse
Langage de règles pour bases déductives, où l'on écrit des faits et des règles sans symboles de fonction, et où l'on interroge par un but.
Sans symbole de fonction, une règle ne fabrique aucune valeur nouvelle : elle combine les constantes déjà présentes, donc chaque question a un ensemble fini de réponses et la déduction s'arrête toujours.
Une table chef_du_chef(employe, grand_chef) est remplie à la main chaque semaine à partir de chef(employe, chef). Elle est souvent en retard sur les changements d'organigramme. Quelle correction la garde toujours exacte ?
- Lancer le remplissage chaque jour au lieu de chaque semaine
- La déduire d'une règle :
chef_du_chef(E, G) :- chef(E, C), chef(G, C). - Stocker aussi le grand-chef dans chaque fait chef
- La déduire d'une règle :
chef_du_chef(E, G) :- chef(E, C), chef(C, G).
Voir la réponse
La déduire d'une règle :
chef_du_chef(E, G) :- chef(E, C), chef(C, G).Une table recopiée à la main est une donnée dérivée stockée : elle peut s'écarter des faits. Une règle recalcule à chaque question et suit donc toujours
chef, à condition d'enchaîner les deux faits par le chef intermédiaire C :chef(E, C), chef(G, C)relie deux employés de même chef. Un remplissage plus fréquent réduit le retard sans le supprimer.