Un langage logique de requêtes (ProLog restreint) DataLog. Règles logiques. Structure d une règle / clause. Sous-requêtes.

Documents pareils
Bases de données Cours 5 : Base de données déductives

1ère partie Nadine Cullot. Bases de données déductives. Bases de données déductives Introduction et Motivation

Bases de données et sites WEB Licence d informatique LI345

MIS 102 Initiation à l Informatique

STAGE IREM 0- Premiers pas en Python

Bases de données déductives

Chapitre 2. Eléments pour comprendre un énoncé

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

A QUOI SERVENT LES BASES DE DONNÉES?

Bases de données avancées Introduction

Initiation à la Programmation en Logique avec SISCtus Prolog

Créer et modifier un fichier d'import des coordonnées approximatives avec Excel

Fondements de l informatique Logique, modèles, et calculs

La structure de la base de données et l utilisation de PAST. Musée Royal de l Afrique Centrale (MRAC Tervuren)

Exercices - Fonctions de plusieurs variables : corrigé. Pour commencer


Programmation Par Contraintes

Resolution limit in community detection

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Théorie des Graphes Cours 3: Forêts et Arbres II / Modélisation

Bases de données - Modèle relationnel

Raisonnement probabiliste

Initiation à LabView : Les exemples d applications :

Simulation de variables aléatoires

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE

Java Licence Professionnelle CISII,

1 Introduction et installation

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours

Calculabilité Cours 3 : Problèmes non-calculables.

A QUOI SERVENT LES BASES DE DONNÉES?

Introduction à la théorie des graphes. Solutions des exercices

Grammaires d unification

Université Paris-Dauphine DUMI2E 1ère année, Applications

TP 1. Prise en main du langage Python

Intelligence Artificielle Planification

Bases de données cours 1

Systèmes décisionnels et programmation avancée

Bases de données. Chapitre 1. Introduction

Plus courts chemins, programmation dynamique

Le théorème de Perron-Frobenius, les chaines de Markov et un célèbre moteur de recherche

Le langage SQL Rappels

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Chapitre 3. Mesures stationnaires. et théorèmes de convergence

Calcul intégral élémentaire en plusieurs variables

Recherche dans un tableau

Rappels sur les suites - Algorithme

Excel avancé. Frédéric Gava (MCF)

M é ca n ism e Pr o lo g. Ex e m p le

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

Sujet 4: Programmation stochastique propriétés de fonction de recours

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Programmes des classes préparatoires aux Grandes Ecoles

Théorie des sondages : cours 5

Chapitre 02. La lumière des étoiles. Exercices :

Cours de bases de données. Philippe Rigaux

Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. anne.doucet@lip6.fr

Qualité du logiciel: Méthodes de test

Logique. Plan du chapitre

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Le Langage SQL version Oracle

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

1 Introduction. 2 Le modèle relationnel. 3 Algèbre relationnelle 4 SQL. 5 Organisation physique des données 1/228

LE PROBLEME DU PLUS COURT CHEMIN

RÉALISATION DE GRAPHIQUES AVEC OPENOFFICE.ORG 2.3

TD 1 - Structures de Traits et Unification

8.1 Généralités sur les fonctions de plusieurs variables réelles. f : R 2 R (x, y) 1 x 2 y 2

Powershell. Sommaire. 1) Étude du cahier des charges 2) Veille technologique 3) Administration sur site 4) Automatisation des tâches d administration

Database Manager Guide de l utilisateur DMAN-FR-01/01/12

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

Model checking temporisé

Bases de données élémentaires Maude Manouvrier

Fichier sql.ini, Serveurs

Probabilités. Une urne contient 3 billes vertes et 5 billes rouges toutes indiscernables au toucher.

3. Conditionnement P (B)

Formes quadratiques. 1 Formes quadratiques et formes polaires associées. Imen BHOURI. 1.1 Définitions

Présentation du langage et premières fonctions

Master I Génie Logiciel

Structures algébriques

Information utiles. webpage : Google+ : digiusto/

1 Recherche en table par balayage

Algorithmique et Programmation Fonctionnelle

Intelligence artificielle appliquée à l automatique

Génie Logiciel avec Ada. 4 février 2013

Encryptions, compression et partitionnement des données

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Systèmes de Gestion de Bases de Données (SGBD) relationnels Maude Manouvrier

Bases de données relationnelles : Introduction

Cours d initiation à la programmation en C++ Johann Cuenin

Eléments de Théorie des Graphes et Programmation Linéaire

Représentation d un entier en base b

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

TD n 10 : Ma première Base de Données

Chapitre 3 : outil «Documents»

Coefficients binomiaux

Une introduction aux codes correcteurs quantiques

Introduction au Data-Mining

Cours d Analyse. Fonctions de plusieurs variables

LA MESURE DE PRESSION PRINCIPE DE BASE

Transcription:

Transparents de Jeffrey Ullman --- légèrement modifiés et mis en français par Christian Retoré Université Bordeaux 1 DataLog Règles logiques Récursion Un langage logique de requêtes (ProLog restreint)!si-alors(-sinon) sont utilisées couramment " Aujourd hui: mémoire d entreprise!règles non récursives = algèbre relationnelle!règles récursives: extension ajoutée à SQL 99 1 2 Règles logiques!premier exemple " Fréquente(client,bar), " Aime(client,bière), " Sert(bar,bière,prix).!Clients heureux ceux qui fréquentent un bar qui sert une bière qu ils aiment Structure d une règle / clause heureux(d) <- Fréquente(d,bar) AND tête = Conséquence But Lire SI Aime(d,bière) AND Sert(bar,bière,p) Corps = antécedent = AND de sous-buts AND de sous-requêtes 3 4 Sous-requêtes!Un atome est un prédicat, ou relation avec des variables ou des constantes comme arguments.!la tête est un atome; le corps est est la conjonction Le prédicat le nom de la relation Exemple d atome Sert(bar, bière, 3) Les arguments sont des Variables ou des constantes 5 6

Interprétation des Règles exemple: Interpretation Sens d une clause: La tête est vraie s il existe des valeurs des variables qui rendent vraies les atomes du corps de la clause. 7 heureux(d) <- Fréquente(d,bar) AND Aime(d,bière) AND Sert(bar,bière,p) d est heureux S il existe un bar et une bière et un prix Tels que - d fréquente bar - d aime bière - bar sert bière au prix p 8 Sous requêtes conditionnelles (atomes de comparaison utilisant des prédicats prédéfinis)!en plus des atomes relationnels. On peut avoir des conditions usuelles: par exemple: x < y ou x<>y ou x=y. 9 Exemple de conditions Une bière est bon marché si au moins deux bars la servent à moins de 2!50 Bon_marché(bière) <- Sert(bar1,bière,p1) AND Sert(bar2,bière,p2) AND p1 < 2,5 AND p2 < 2,5 AND bar1 <> bar2 10 Sous requêtes négatives Clauses correctes ou sûres!une sous requête peut être précédée de NOT!Exemple: (a,b) arc de a à b dans un graphe. " S(x,y) il y a un chemin de longueur 2 de x à y mais pas d arc direct (contredit la transitivité) S(x,y) <- (x,z) AND (z,y) AND NOT (x,y) 11! Une clause est correcte si: Toute variable apparait dans une sous requête non niée,! On n utilise que des clauses correctes! Pourquoi?. TSVP 12

Exemples de clauses incorrectes! Exemples de clauses incorrectes: 1. S(x) <- NOT R(x) 2. S(x) <- R(y) AND NOT R(x) 3. S(x) <- R(y) AND x > y! A chaque fois on peut avoir une infinité de valeurs pour x même si R est une relation finie. 13 Evaluation des règles! Deux approches: 1. Instanciation des Variables : essayer toutes les valeurs possibles pour les variables des sous requêtes, et si les sous requêtes sont validées ajouter le n-uplet 2. Instanciation des n-uplets : Essayer toutes les n-uplets possibles des atomes sans négation, et si les sous requêtes sont validées ajouter le n-uplet. 14 Exemple: Variables --- 1 S(x,y) <- (x,z) AND (z,y) AND NOT (x,y)! : (1,2) et (2,3)! Only assignments to make the first subgoal (x,z) true are: 1. x = 1; z = 2 2. x = 2; z = 3 Exemple: Variables x=1, z=2 S(x,y) <- (x,z) AND (z,y) AND NOT (x,y) 1 1 2 2 1 3 3 3 S(1,3) est un n-uplet solution 3 est la seule valeur qui rende vraies toutes les sous-requêtes 15 16 Exemple: Variables x=2, z=3 S(x,y) <- (x,z) AND (z,y) AND NOT (x,y) 2 2 3 3 2 Pas de contribution à la solution S = {(1,3)} Pas de valeur de y qui rende (3,y) vrai Instanciation des n-uplets! Commencer par les atomes relationnels non niés.! Considérer toutes les instanciations de leur n- uplets par des n-uplets pris dans les relations correspondantes.! Si ces instanciations donnent des valeurs cohérentes aux variables et rendent toutes les sous-requêtes vraies alors ajouter à la solution le n-uplet correspondant. 17 18

Exemple: avec n-uplets S(x,y) <- (x,z) AND (z,y) AND NOT (x,y) (1,2), (2,3)! Quatre instanciations possibles pour les deux premiers atomes: (x,z) (z,y) (1,2) (1,2) (1,2) (2,3) (2,3) (1,2) (2,3) (2,3) Seule instanciation possible avec une valeur cohérente pour z. Elle valide aussi NOT (x,y) donc On ajoute S(1,3) au résultat. 19 Programmes Datalog (requêtes)! Un programme Datalog est une suite de clauses! Deux sortes de prédicats 1. EDB = Extensional Database = table stockée. 2. IDB = Intensional Database = relation definie par les clauses. " Une relation n est jamais EDB et IDB! " Jamais de EDB dans les têtes. 20 Algèbre relationnelle en DataLog (au tableau)!sélection!projection!opérations ensemblistes!produit cartésien!jointure DataLog en algèbre relationnelle (au tableau)!corps de la clause produit, jointure, sélection!tête de la clause projection!clauses multiples pour un IDB union 21 22 Evaluation des programmes Datalog!Pas de récursion= ordonner les clauses poru que le corps ne contienne que des prédicats déjà définis et évalués.!si un prédicat IDB est défini par plus d une clause, chaque clause ajoute des n-uplets au prédicat IDB. 23 Exemple: Programme DataLog!En utilisant la table EDB Sert(bar, bière, prix) Bières(name, manf)!trouver les Brasseries produisant des bières que le Lucifer ne sert pas:!lucifer(b) <- Sert( Lucifer, b, p)!answer(m) <- bières(b,m) AND NOT JoeSert(b) 24

Expressivité de Datalog!Sans récursion, Datalog équivaut à l algèbre relationnelle.!avec recursion, Datalog sort de ce cadre!néanmoins pas toutes les opérations calculables sur les relations Exemple récursif!edb: Par(c,p): est un deux des parents de c.!cousins (sens large) personnes avec un ancêtre commun : " FS(x,y) <- Par(x,p) AND Par(y,p) AND x<>y " Cousin(x,y) <- FS(x,y) " Cousin(x,y) <- Par(x,xp) AND Par(y,yp) AND Cousin(xp,yp) 25 26 Definition de la Récursion!Former un graphe de dépendance sommets= prédicat IDB! X ->Y ssi X est la tête d une clause avec Y dans le corps de cette clause!cycle = récursion!pas de cycle = pas de récursion. Exemple: graphe de Dépendance Cousin FS Answer Lucifer Recursive Nonrecursive 27 28 Evaluation des programmes récursifs! S il n y a pas de négation: 1. Supposer les IDB vides. 2. Evaluer les clauses en utilisant les EDB et les n-uplets déjà ajoutés aux IDB. 3. S arreter quant le contenu du prédicat IDB est stationnaire. Evaluation Naïve Début: IDB = 0 Appliquer les règles à IDB, EDB 29 oui Changer IDB? non fin 30

Exemple: Evaluation de Cousin! On boucle pour construire des n-uplets de " FS (en rouge) " Cousin (en vert)! Rappelons les clauses: FS(x,y) <- Par(x,p) AND Par(y,p) AND x<>y Cousin(x,y) <- FS(x,y) Cousin(x,y) <- Par(x,xp) AND Par(y,yp) AND Cousin(xp,yp) Evaluation Semi-Naïve!Les EDB ne changent pas, à chaque tour on obtient un nouvel n- uplet dans un IDB que si on utilise un nouvel n-uplet d un IDB!Evitons de redécouvrir les mêmes n- uplets. " Malgré cela un même n-uplet peut être redécouvert. 31 32 EDB: est un parent de Récursion Plus Négation Tour 1 Tour 2 Tour 3 Tour 4 a d b c e f g h j k i!l évaluation Naïve ne fonctionne plus si des sous-requêtes sont niées.!en général, la négation au sein d un programme récursifn n a pas de sens.! Même quand réursions et négation sont indépendant, les prédicats IDB peuvent être mal définis. 33 34 Négation Stratifiée!La stratification est une contrainte habituellement requise sur Datalog avec négation et récursion.!la négation ne peut plus être imbriquée dans la récursion.!on obtient les relations souhaitées. 35 Probléme de la Negation Récursive P(x) <- Q(x) AND NOT P(x) EDB: Q(1), Q(2) initial: P = { } tour 1: P = {(1), (2)} tour 2: P = { } tour 3: P = {(1), (2)}, etc., etc. 36

Strates!Intuitivement, la strate d un prédicat IDB est le nombre maximal de négations que l on peut rencontrer durant son évaluation.!négation stratifiée = strate finie.!dans P(x) <- Q(x) AND NOT P(x), on peut nier P une infinité de fois pour calculer P. Graphe des Strates!Formalisation des strates par un graphe: " Sommets = prédicats IDB. " s A ->B ssi le prédicat A dépend du prédicat B. (Clause A <- B.) " Etiquette - sur l arc A->B ssi B est nié dans la clause A <- B. 37 38 Négation stratifiée!la strate d un sommet (prédicat IDB) est le maximum d arcs sur un chemin partant de ce sommet.!un porgramme Datalog est stratifié si tous ces prédicats IDB ont une strate finie: il n y a pas de cycle avec un -. exemple P(x) <- Q(x) AND NOT P(x) -- P 39 40 Autre exemple Graphe des Strates! EDB = Origine(x), Destination(x), (x,y).! Clauses pour Destinations jamais Atteintes de quelque Origine que ce soit : Atteint(x) <- Origine(x) Atteint(x) <- Atteint(y) AND (y,x) PasAtteint(x) <- Destination(x) AND NOT Atteint(x) Strate 1: <= 1 arc - sur tout chemin. Strate 0: Pas d arc - sur tout chemin sortant. PasAtteint Atteint -- 41 42

Modèles!Un modèle est un choix de relations IDB qui avec les relations EDB données rend vraies toutes les clauses, quellles que soient les vaeurs données aux variables. " Attention: si le corps de la clause est faux la clause est vraie. " Si le corps de la clause est vrai, la tête doit l être aussi. Modèles minimaux!pas de négation: un progamme Datalog a un unique modèle minimal.!avec la négation, il peut y en avoir plusieurs.!le modèle calculé avec la stratification est celui qui a un sens. 43 44 Le modèle stratifié!on évalue les prédicats IDB par ordre de strate croissante.!dès qu un prédicat IDB est évalué, on le considère comme un prédicat EDB. Exemple: Modèles Multiples - 1 Atteint(x) <- Origine(x) Atteint(x) <- Atteint(y) AND (y,x) PasAtteint(x) <- Destination(x) AND NOT Atteint(x) 1 2 3 4 Origine Destination Destination Strate 0: Atteint(1), Atteint(2) Strate 1: PasAtteint(3) 45 46 Exemple: Modèles Multiples - 2 Atteint(x) <- Origine(x) Atteint(x) <- Atteint(y) AND (y,x) PasAtteint(x) <- Destination(x) AND NOT Atteint(x) 1 2 3 4 Origine Destination Destination Un autre modèle! Atteint(1), Atteint(2), Atteint(3), Atteint(4); PasAtteint est vide. 47