Bases de données déductives en pratique Par : Robert Denicourt Michael Glenn Le 16 décembre 2002
Plan de la présentation Survol théorique Exemple du domaine médical Exemple du domaine de la gestion de réseau 16 décembre 2002 INF 7115 - Bases de données
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
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
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
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
Domaine médical Le processus de résolution de problème 16 décembre 2002 INF 7115 - Bases de données
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
Domaine médical La base de connaissance 16 décembre 2002 INF 7115 - Bases de données
Domaine médical Syntaxe des règles dans ILOG Rules 16 décembre 2002 INF 7115 - Bases de données
Domaine médical Schéma de l’organisation du système DISI 16 décembre 2002 INF 7115 - Bases de données
Domaine médical La base de faits 16 décembre 2002 INF 7115 - Bases de données
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
Domaine de la gestion de réseau Types de données du MIB : Composantes Fonctions / Relations entre les composantes Base de données déducive Grand volume de données + Règles définissant les relations entre les données 16 décembre 2002 INF 7115 - Bases de données
Domaine de la gestion de réseau 16 décembre 2002 INF 7115 - Bases de données
Domaine de la gestion de réseau Protocoles de gestion de réseau Basé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
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
Domaine de la gestion de réseau Développé avec Aditi Syntaxe 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
Domaine de la gestion de réseau Les faits… 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). Relation Attributs 16 décembre 2002 INF 7115 - Bases de données
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
Domaine de la gestion de réseau Exemple 1 : <- device_list(Device). 16 décembre 2002 INF 7115 - Bases de données
Domaine de la gestion de réseau Unification : association de faits à une variable… 3 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). 2 1 <- device_list(Device). Answer Set for device : cpu1 cpu2 cpu3 1 Règle correspondante trouvée Évaluation des composantes de la règle 2 Unification des faits avec la variable 3 16 décembre 2002 INF 7115 - Bases de données
Domaine de la gestion de réseau Exemple 2 : <- path(cpu1,cpu3). 16 décembre 2002 INF 7115 - Bases de données
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). 5 1 2 3 4 6 ET logique 1 Règle correspondante trouvée 2 Évaluation de la condition : cable_connection(cpu1, _, cpu3, _, _, _) -> Faux 3 Deuxième règle correspondante évaluée Évaluation de la première condition : cable_connection(cpu1, _, Z, _, _, _) -> Z=cpu2 (True) 4 5 6 Vérification de la deuxième condition (appel récursif) : path(cpu2, cpu3) -> True <- path(cpu1,cpu3). True 16 décembre 2002 INF 7115 - Bases de données