Bases de données déductives en pratique
Par : Robert DenicourtMichael Glenn
Le 16 décembre 2002
16 décembre 2002 INF 7115 - Bases de données 2
Plan de la présentation
Survol théoriqueExemple du domaine médicalExemple du domaine de la gestion de
réseau
16 décembre 2002 INF 7115 - Bases de données 3
Survol théorique
C’est quoi une BDD?
C’est un SGBD dont le modèle de
données est le modèle relationnel.
La principale particularité est qu’ils utilisent
un langage de règles.(Prolog, Datalog)
16 décembre 2002 INF 7115 - Bases de données 4
Survol théorique
Qui utilise un SGBD déductif ?
La médecine La robotique La modélisation scientifique L’analyse financière Les SE avec de gros volumes de données
16 décembre 2002 INF 7115 - Bases de données 5
Survol théorique
La force de la BDD
C’est le langage de programmation.
Prolog premier langage Made in Montréal
16 décembre 2002 INF 7115 - Bases de données 6
Domaine médical
Système expert DISI
Système expert pour l’aide à la décision et à
l’enseignement des diagnostics infirmiers
Cette démarche est un processus de
résolution de problèmes
16 décembre 2002 INF 7115 - Bases de données 7
Domaine médical
Le processus de résolution de problème
16 décembre 2002 INF 7115 - Bases de données 8
Domaine médical
La conception du système DISI
La base de connaissance
La base faits
Le moteur d’inférence
16 décembre 2002 INF 7115 - Bases de données 9
Domaine médical
La base de connaissance
16 décembre 2002 INF 7115 - Bases de données 10
Domaine médical
Syntaxe des règles dans ILOG Rules
16 décembre 2002 INF 7115 - Bases de données 11
Domaine médical
Schéma de l’organisation du système DISI
16 décembre 2002 INF 7115 - Bases de données 12
Domaine médical
La base de faits
16 décembre 2002 INF 7115 - Bases de données 13
Domaine de la gestion de réseau
Système de Gestion de Réseau (SGR) : consiste à surveiller et contrôler le comportement du réseau afin d’optimiser son opération
Management Information Base (MIB) : composante du SGR qui emmagasine les données
16 décembre 2002 INF 7115 - Bases de données 14
Domaine de la gestion de réseau
Types de données du MIB :ComposantesFonctions / Relations entre les
composantes
Grand volume de données+
Règles définissant les relations entre les données
Base de données déducive
16 décembre 2002 INF 7115 - Bases de données 15
Domaine de la gestion de réseau
SGR MIB
Requêtes / Réponses
SGR MIB
Requêtes / Réponses
SGR MIB
SGR MIB
Requêtes / Réponses
SGR MIB
SGR MIB
Centralisé Distribué
Hybride
16 décembre 2002 INF 7115 - Bases de données 16
Domaine de la gestion de réseau
Protocoles de gestion de réseauBasés sur modèle OSI (Open Systems
Interconnection) de l’ISO (International Standards Organization)
CMIS/CMIP (Common Management Information Services/Common Management Information Protocol) -> OSI
SNMP (Simple Network Management Protocol) -> TCP/IP
16 décembre 2002 INF 7115 - Bases de données 17
Domaine de la gestion de réseau
Modélisation avec ERC+ (Entity-Relationship for Complex objects
16 décembre 2002 INF 7115 - Bases de données 18
Domaine de la gestion de réseau
Développé avec AditiSyntaxe similaire à Prolog
Faits (Relations)Règles
device(deviceid, modelid, asset#, serial#, type, location, owner, user, suppier, manager).cable_connection(deviceid_a, port#_a, deviceid_b, port#_b, line_number, wire_classification).
16 décembre 2002 INF 7115 - Bases de données 19
Domaine de la gestion de réseau
cpu1 cpu2 cpu3
slotb slota slotb slota
device
cable_connection
a2a1
device(cpu1, dx486, a_9201, tp_9211, cpu, lab_1, cams, students, total_peripherals, raj).device(cpu2, dx486, a_9202, tp_9212, cpu, lab_1, cams, students, total_peripherals, raj).device(cpu3, sx486, a_9203, tp_9213, cpu, lab_1, cams, students, total_peripherals, raj).cable_connection(cpu1, slotb, cpu2, slota, a1, coax).cable_connection(cpu2, slotb, cpu3, slota, a2, coax).
Les faits…
Relation Attributs
16 décembre 2002 INF 7115 - Bases de données 20
Domaine de la gestion de réseau
Les règles…
device_list(Device) :-device(Device,_,_,_,_,_,_,_,_,_).device_list(Device, Loc) :-device(Device,_,_,_,_,_,_,_,_,_).device_list(Device, Model, Type, Loc) :-device(Device,Model,_,_,Type,Loc,_,_,_,_).path(X,Y) :-cable_connection(X,_,Y,_,_,_).path(X,Y) :-cable_connection(X,_,Z,_,_,_),path(Z,Y).
16 décembre 2002 INF 7115 - Bases de données 21
Domaine de la gestion de réseau
Exemple 1 : <- device_list(Device).
16 décembre 2002 INF 7115 - Bases de données 22
Domaine de la gestion de réseau
Unification : association de faits à une variable…
device(cpu1, dx486, a_9201, tp_9211, cpu, lab_1, cams, students, total_peripherals, raj).device(cpu2, dx486, a_9202, tp_9212, cpu, lab_1, cams, students, total_peripherals, raj).device(cpu3, sx486, a_9203, tp_9213, cpu, lab_1, cams, students, total_peripherals, raj).cable_connection(cpu1, slotb, cpu2, slota, a1, coax).cable_connection(cpu2, slotb, cpu3, slota, a2, coax).device_list(Device) :-device(Device,_,_,_,_,_,_,_,_,_).device_list(Device, Loc) :-device(Device,_,_,_,_,_,_,_,_,_).device_list(Device, Model, Type, Loc) :-device(Device,Model,_,_,Type,Loc,_,_,_,_).path(X,Y) :-cable_connection(X,_,Y,_,_,_).path(X,Y) :-cable_connection(X,_,Z,_,_,_),path(Z,Y).
12
3
<- device_list(Device).Answer Set for device :cpu1cpu2cpu3
1
2
3
Règle correspondante trouvée
Évaluation des composantes de la règle
Unification des faits avec la variable
16 décembre 2002 INF 7115 - Bases de données 23
Domaine de la gestion de réseau
<- path(cpu1,cpu3).Exemple 2 :
16 décembre 2002 INF 7115 - Bases de données 24
Domaine de la gestion de réseau
device(cpu1, dx486, a_9201, tp_9211, cpu, lab_1, cams, students, total_peripherals, raj).device(cpu2, dx486, a_9202, tp_9212, cpu, lab_1, cams, students, total_peripherals, raj).device(cpu3, sx486, a_9203, tp_9213, cpu, lab_1, cams, students, total_peripherals, raj).cable_connection(cpu1, slotb, cpu2, slota, a1, coax).cable_connection(cpu2, slotb, cpu3, slota, a2, coax).device_list(Device) :-device(Device,_,_,_,_,_,_,_,_,_).device_list(Device, Loc) :-device(Device,_,_,_,_,_,_,_,_,_).device_list(Device, Model, Type, Loc) :-device(Device,Model,_,_,Type,Loc,_,_,_,_).path(X,Y) :-cable_connection(X,_,Y,_,_,_).path(X,Y) :-cable_connection(X,_,Z,_,_,_),path(Z,Y).
1 2
3
<- path(cpu1,cpu3).True
1
2
3
Règle correspondante trouvée
Évaluation de la condition : cable_connection(cpu1, _, cpu3, _, _, _) -> Faux
Deuxième règle correspondante évaluée
4
5
4 5 Évaluation de la première condition : cable_connection(cpu1, _, Z, _, _, _) -> Z=cpu2 (True)
6
6 Vérification de la deuxième condition (appel récursif) : path(cpu2, cpu3) -> True
ET logique