Vorlesung Deduktive Datenbanken Prof. Dr. Dietmar Seipel Universität Würzburg Sommersemester 2012 Deduktive Datenbanken Sommersemester 2012 Inhaltsverzeichnis 1 Datenbanken und DATALOG 1.1 1.2 Prof. Dr. Dietmar Seipel 41 Grundbegriffe des relationalen Datenmodells . . . . . . . . . . . 42 1.1.1 Relationen und Relationenschemata . . . . . . . . . . . . 42 1.1.2 Relationale Anfragesprachen . . . . . . . . . . . . . . . . 48 Die deduktive Datenbanksprache DATALOG . . . . . . . . . . . . 58 1.2.1 Regeln und Fakten . . . . . . . . . . . . . . . . . . . . . 64 1.2.2 Integritätsbedingungen und Default Negation . . . . . . . 88 1.2.3 B UILT–I N–Prädikate . . . . . . . . . . . . . . . . . . . . 97 1.2.4 Aggregationsfunktionen . . . . . . . . . . . . . . . . . . 103 1 Deduktive Datenbanken Sommersemester 2012 2 Die deklarative Programmiersprache P ROLOG 2.1 2.2 110 Grundlegende Strukturen . . . . . . . . . . . . . . . . . . . . . . 116 2.1.1 Klauseln . . . . . . . . . . . . . . . . . . . . . . . . . . 119 2.1.2 Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . 136 Programmierstrukturen . . . . . . . . . . . . . . . . . . . . . . . 164 2.2.1 Rekursion . . . . . . . . . . . . . . . . . . . . . . . . . . 166 2.2.2 Prädikatenorientiertes, relationales Programmieren . . . . 184 2.2.3 Backtracking und der Cut . . . . . . . . . . . . . . . . . 199 2.3 Die interne P ROLOG–Datenbank . . . . . . . . . . . . . . . . . . 215 2.4 Datenbanken und P ROLOG . . . . . . . . . . . . . . . . . . . . . 241 Prof. Dr. Dietmar Seipel 2.4.1 O DBC–Zugriff auf eine relationale Datenbank . . . . . . . 243 2.4.2 Das deduktive Mini–DBMS DD BASE . . . . . . . . . . . 249 2 Deduktive Datenbanken Sommersemester 2012 2.5 GUI–Programmierung in X PCE–P ROLOG . . . . . . . . . . . . . 278 2.6 Datenstrukturen, Kontrollstrukturen und Algorithmen . . . . . . . 289 2.7 Prof. Dr. Dietmar Seipel 2.6.1 Suche in Graphen . . . . . . . . . . . . . . . . . . . . . . 290 2.6.2 Sortierverfahren . . . . . . . . . . . . . . . . . . . . . . 297 2.6.3 Binäre Suchbäume . . . . . . . . . . . . . . . . . . . . . 304 2.6.4 Hierarchische Daten . . . . . . . . . . . . . . . . . . . . 314 2.6.5 Diagnoseregeln in DATALOG∗ . . . . . . . . . . . . . . . 347 Vergleich mit DATALOG . . . . . . . . . . . . . . . . . . . . . . 353 3 Deduktive Datenbanken Sommersemester 2012 3 Definite Logikprogramme 3.1 3.2 3.3 Prof. Dr. Dietmar Seipel 380 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383 3.1.1 Klauseln und Regeln . . . . . . . . . . . . . . . . . . . . 384 3.1.2 Definite Logikprogramme, DATALOG . . . . . . . . . . . 393 3.1.3 Substitutionen und Unifikation . . . . . . . . . . . . . . . 399 3.1.4 Herbranduniversum, Herbrandbasis, Grundinstanz . . . . 431 Die modelltheoretische Semantik . . . . . . . . . . . . . . . . . . 440 3.2.1 Herbrandinterpretationen und Herbrandmodelle . . . . . . 445 3.2.2 Logische Konsequenzen . . . . . . . . . . . . . . . . . . 460 Beweistheorie: Bottom–Up . . . . . . . . . . . . . . . . . . . . . 471 3.3.1 Der Konsequenzoperator TP . . . . . . . . . . . . . . . . 474 3.3.2 Iteration des TP –Operators . . . . . . . . . . . . . . . . . 492 4 Deduktive Datenbanken Sommersemester 2012 3.3.3 Forward Chaining: Beweisbäume . . . . . . . . . . . . . 515 3.3.4 Der verallgemeinerte Konsequenzoperator TPbu ,Ptd . . . . 519 3.4 Fixpunkttheorie auf Partialordnungen . . . . . . . . . . . . . . . 532 3.5 Beweistheorie: Top–Down . . . . . . . . . . . . . . . . . . . . . 533 Prof. Dr. Dietmar Seipel 3.5.1 Backward Chaining: Suchbäume und Beweisbäume . . . . 534 3.5.2 SLD–Resolution und SLD–Bäume . . . . . . . . . . . . . 545 3.5.3 SLDNF–Resolution . . . . . . . . . . . . . . . . . . . . 577 5 Deduktive Datenbanken Sommersemester 2012 4 Datenstrukturen und Programmstrukturen für Logikprogramme 4.1 4.2 591 Datenstrukturen in P ROLOG . . . . . . . . . . . . . . . . . . . . 592 4.1.1 Terme und Goals . . . . . . . . . . . . . . . . . . . . . . 593 4.1.2 Logikprogramme als Klauseln oder als Terme . . . . . . . 627 4.1.3 Die Field Notation für komplexe Objekte . . . . . . . . . 649 Kontrollstrukturen und Meta–Prädikate von P ROLOG . . . . . . . 670 4.2.1 Finden aller Lösungen . . . . . . . . . . . . . . . . . . . 671 4.2.2 Filter und Transformationen . . . . . . . . . . . . . . . . 682 4.2.3 Schleifen und Verzweigungen . . . . . . . . . . . . . . . 686 4.3 Struktureigenschaften von Logikprogrammen . . . . . . . . . . . 705 4.4 Äquivalenz und Transformation von Logikprogrammen . . . . . . 735 Prof. Dr. Dietmar Seipel 6 Deduktive Datenbanken 5 Auswertungsmethoden und Programmoptimierung für DATALOG Prof. Dr. Dietmar Seipel Sommersemester 2012 779 7 Deduktive Datenbanken Sommersemester 2012 6 Default Negation und normale Logikprogramme 6.1 6.2 6.3 Prof. Dr. Dietmar Seipel 780 DATALOGnot – DATALOG mit Default Negation . . . . . . . . . . 793 6.1.1 Syntax und Semantik (Modelltheorie) . . . . . . . . . . . 793 6.1.2 Die Closed–World–Annahme . . . . . . . . . . . . . . . 800 Stratifizierte Auswertung von DATALOGnot . . . . . . . . . . . . 804 6.2.1 Abhängigkeitsgraphen und Stratifizierung . . . . . . . . . 805 6.2.2 Die Konsequenzoperatoren TP und TP′ 6.2.3 Das perfekte Modell . . . . . . . . . . . . . . . . . . . . 841 6.2.4 Ontologie–Analyse in DATALOG∗ . . . . . . . . . . . . . 872 . . . . . . . . . . 826 Stabile und wohlfundierte Modelle . . . . . . . . . . . . . . . . . 894 6.3.1 Stabile Modelle . . . . . . . . . . . . . . . . . . . . . . . 896 6.3.2 Berechnungsfolgen für stabile Modelle . . . . . . . . . . 921 6.3.3 Das wohlfundierte Modell . . . . . . . . . . . . . . . . . 932 8 Deduktive Datenbanken Sommersemester 2012 7 Disjunktive Logikprogramme 978 Literatur Index 979 981 Prof. Dr. Dietmar Seipel 9 Deduktive Datenbanken Sommersemester 2012 Prof. Dr. Dietmar Seipel 10 Deduktive Datenbanken Sommersemester 2012 Vorwort Deduktive Datenbanken entstehen durch die Integration von 2 Logikprogrammierung und 2 Datenbanktechnologie. Die darauf aufbauenden DBLP–Systeme können z.B. 2 komplexe, wissensbasierte Systeme, 2 intelligente, entscheidungsunterstützende Systeme (Expertensysteme) und 2 Semantic Web–Anwendungen unterstützen. Prof. Dr. Dietmar Seipel 1 Deduktive Datenbanken Sommersemester 2012 Logikprogrammierung und Datenbanken Logikprogrammierung in P ROLOG: 2 Vereinfachung von Techniken des Theorembeweisens −→ effiziente und einfachere Programmierung 1970 relationales Datenmodell: 2 Vereinfachung des hierarchischen und des Netzwerkdatenmodells −→ mengenorientierte, deklarative Datenmanipulation kommerzielle Nutzung: 1980 Logikprogrammierung in DATALOG: 2 mächtige, deklarative Datenbankanfragesprache −→ Anfrageoptimierung möglich Prof. Dr. Dietmar Seipel seit 1980 2 Deduktive Datenbanken Sommersemester 2012 Auch das japanische Fifth–Generation–Projekt hat DBLP–Systeme für Anwendungen aus der künstlichen Intelligenz (KI) propagiert. 2 Diese erfordern extrem viele Deduktionen pro Zeiteinheit, und 2 sie greifen auf ein relationales Datenmodell zur Speicherung großer Datenmengen zurück. Kombination: 2 Datenbanktechnologie für effizienten Zugriff und zuverlässigen Update persistenter Daten, 2 Logikprogrammierung als homogener, ausdrucksmächtiger Formalismus zur Formulierung von Anfragen, Integritätsbedingungen und prozeduralen Komponenten, und für deklarative Programmier–Frontends für Datenbanken. Prof. Dr. Dietmar Seipel 3 Deduktive Datenbanken Sommersemester 2012 Architektur eines DBLP–Systems Prof. Dr. Dietmar Seipel 4 Deduktive Datenbanken Sommersemester 2012 Beispiel: Familienstammbaum - Charles Diana George - Elizabeth Philip - - William - Harry Anne - Andrew - Edward Der Familienstammbaum umfaßt 4 Generationen; Frauen sind in Rot, Männer in Blau angezeigt. Prof. Dr. Dietmar Seipel 5 Deduktive Datenbanken Sommersemester 2012 Der Familienstammbaum kann in einer Tabelle (Relation) PARENT einer relationalen Datenbank gespeichert werden: PARENT G RANDPARENT NAME PARENT Elizabeth George Charles Elizabeth William Charles ... ... NAME G RANDPARENT Charles George William Elizabeth ... ... Die Großeltern (Tabelle G RANDPARENT) können in S QL berechnet werden: S ELECT P1.NAME , P2.PARENT F ROM PARENT P1, PARENT P2 W HERE P1.PARENT = P2.NAME Prof. Dr. Dietmar Seipel 6 Deduktive Datenbanken Sommersemester 2012 Die Vorfahren einer Person können in S QL nicht berechnet werden: A NCESTOR NAME A NCESTOR William George ... ... In einem DBLP–System kann man diese aber mittels rekursiver DATALOG–Regeln berechnen: ancestor (X , Z ) ← parent(X , Z ), ancestor (X , Z ) ← parent(X , Y ) ∧ ancestor (Y , Z ). Eine Person Z ist ein Vorfahre einer Person X, 2 falls Z ein Elternteil von X ist (erste Regel), oder Z I ancestor 6 Y ancestor parent 6 X 2 falls Z ein Vorfahre eines Elternteils Y von X ist (zweite Regel). Prof. Dr. Dietmar Seipel 7 Deduktive Datenbanken Sommersemester 2012 Anwendungsbereiche von DBLP 2 Datenbanken mit komplexen Strukturen (Hierarchien, X ML) 2 komplexe, wissensbasierte Systeme, regelbasierte Systeme, Diagnosesysteme (Medizin, Technik) 2 Datenintegration 2 Semantic Web 2 Default Reasoning, Answer Set Programming (ASP) 2 symbolische Informationsverarbeitung, Parsing 2 Graphenprobleme und kombinatorische Probleme (Spiele wie Sudoku oder Minesweeper, etc.) Prof. Dr. Dietmar Seipel 8 Deduktive Datenbanken Sommersemester 2012 Wissensbasiertes System Wir verwenden DBLP–Systeme z.B. zur Realsierung der Wissensbasis sowie der Inferenz– und der Erklärungskomponente von wissensbasierten Systemen. Prof. Dr. Dietmar Seipel 9 Deduktive Datenbanken Sommersemester 2012 Semantic Web Knowledge Engineering im Semantic Web basiert auf Ontologien und Logik und kann von Techniken aus dem Bereich der Deduktiven Datenbanken und der Logikprogrammierung unterstützt werden. Die Semantic Web Rule Language (S WRL) baut Regeln aus der Logikprogrammierung in OWL–Ontologien ein. Deduktionsaufgaben: 2 Unterstützung der Anfrageauswertung; 2 in der Wissensmodellieung: Analyse der Struktur von Ontologien im Hinblick auf Anomalien. Prof. Dr. Dietmar Seipel 10 Deduktive Datenbanken Sommersemester 2012 DBLP–Anwendungen in Würzburg 2 Software Engineering: Analyse und Refaktorisierung von – Programm–Quellcode (P ROLOG, JAVA, P HP, C OBOL), – Datenbankanwendungen (Schema und Embedded S QL–Code) und – Ontologien (OWL, S WRL) im Semantic Web 2 Bio–Informatik: Management komplexer X ML–Daten, z.B. im Rahmen der Pathway–Analyse 2 Sprachwissenschaften: Parsing, Analyse und Aufbereitung von Textdaten, oft in X ML 2 Analyse–Tools: – Taktikanalyse im Sport (Tennis, Basketball) – Stocktool: Chartanalyse und Visualisierung Prof. Dr. Dietmar Seipel 11 Deduktive Datenbanken Sommersemester 2012 DBMS–Eigenschaften von DBLP–Systemen 2 Datenintegration, Datenunabhängigkeit/Datenabstraktion: Wissen aus Fakten (Tupeln von Relationen) und Regeln (Methoden) 2 Datenintegrität: wie bei relationalen DBMS + erweiterte Ausdrucksmächtigkeit 2 Datenpersistenz, Datensicherheit, Datenschutz: vom zugrunde liegenden relationalen DBMS übernommen 2 deklarative Anfragesprache: ausdrucksmächtig, Zugriffsoptimierung auch für rekursive Regeln Prof. Dr. Dietmar Seipel 12 Deduktive Datenbanken Sommersemester 2012 Datenintegration JAVA Programmiersprachen P ROLOG ? DATALOG∗ DB–Anfragesprachen ?) S QL ? RDB X ML, OWL ? Excel (.csv) ^ Text Datenquellen Abstraktion Teile der Datenbankprogrammierung erfolgen deklarativ in DATALOG anstelle prozedural in JAVA mit Embedded S QL. Prof. Dr. Dietmar Seipel 13 Deduktive Datenbanken Sommersemester 2012 P ROLOG Man kann mit P ROLOG (im Gegensatz zur “reinen” Logikprogrammierung) auch 2 prozedural 2 mit Seiteneffekten und 2 mit globalen Variablen (realisiert mit Hilfe von assert und retract) programmieren. P ROLOG–Implementierungen wie – z.B. S WI/X PCE–P ROLOG – besitzen umfangreiche Programmbibliotheken und Erweiterungen: 2 Datenstrukturen und Algorithmen, Kombinatorik, 2 Datenbank– und Web–Programmierung, 2 komfortable GUI–Programmierung, etc. Prof. Dr. Dietmar Seipel 14 Deduktive Datenbanken Sommersemester 2012 Die einfache Handhabung von Termen als Datenstruktur und die mächtige, eingebaute Kontrollstruktur des Backtrackings sind Features, die P ROLOG im Vergleich zu anderen Programmiersprachen auszeichnen. P ROLOG ist sehr gut zur eingebetten Datenbankprogrammierung geeignet. Im Datenbankkontext wird häufig eine eingeschränkte Version benutzt, die DATALOG genannt wird – die Basis der deduktiven Datenbanken. 2 P ROLOG und DATALOG sind deklarative Sprachen, mit denen man auf Datenbanken und X ML–Dokumenten operieren kann. 2 Relationen und komplexe Objekte (wie z.B. X ML–Dokumente) können in sehr natürlicher Weise als Terme repräsentiert werden. 2 Mithilfe deklarativer Regeln können wir auch Integritätsbedingungen und Inferenzregeln zur Ableitung von Schlußfolgerungen aus der gegebenen Information repräsentieren. Prof. Dr. Dietmar Seipel 15 Deduktive Datenbanken Sommersemester 2012 Datenbankprogrammierung 2 Man kann aus P ROLOG heraus über eine S QL–Schnittstelle mittels O DBC auf relationale Datenbanken zugreifen. 2 Die Verbindung von P ROLOG und DATALOG erlaubt eine sehr komfortable Programmierung von Datenbankanwendungen. 2 Der von Embedded S QL (J DBC , O DBC) bekannte Mismatch zwischen – der Datenbanksprache S QL und – der Host–Programmiersprache (z.B. JAVA oder C++) kann hier vermieden werden. Prof. Dr. Dietmar Seipel 16 Deduktive Datenbanken Sommersemester 2012 Bei der Datenbankprogrammierung mit Embedded S QL werden deklarative S QL–Statements in prozeduralen Code (z.B. JAVA) eingebunden. In DBLP–Systemen wird der prozedurale Code durch P ROLOG ersetzt, das dann deklarativ über DATALOG∗ –Regeln und S QL–Statements auf die Datenbank zugreift. Dadurch wird ein deutlich größerer Anteil der Datenbankprogrammierung deklarativ, und zwar ohne daß man die zugrundeliegende Datenbank ändern müßte. RDB Prof. Dr. Dietmar Seipel Y S QL S QL DATALOG∗ P ROLOG JAVA DBLP Embedded S QL 17 Deduktive Datenbanken Sommersemester 2012 APIs und Tools für P ROLOG 2 S WI–P ROLOG–Libraries (/usr/lib/pl-x.y.z/library): lists.pl, ordsets.pl, ugraphs.pl, odbc.pl, sgml.pl, . . . , andere P ROLOG–Libraries: loops.pl, . . . 2 X PCE–P ROLOG–Libraries für S WI–P ROLOG: (/usr/lib/pl-x.y.z/xpce/prolog/lib): WWW, H TML, Charts, . . . 2 D IS L OG Developers’ Kit (D DK) für S WI–P ROLOG:: Units (~DisLog/sources): – basic_algebra, nm_reasoning, xml, databases, – development, stock_tool, projects, linguistics, biology_and_medicine. S WI–P ROLOG ist in C geschrieben. Prof. Dr. Dietmar Seipel 18 Deduktive Datenbanken Sommersemester 2012 DDK (D IS L OG Developers’ Toolkit) eine große P ROLOG–Bibliothek mit Algorithmen und Datenstrukturen für verschiedenste Anwendungen, einschließlich Datenbanken, nicht–montones Schließen (NMR), WWW, X ML und Software Engineering 2 DD BASE: ein P ROLOG–basiertes deduktives Datenbanksystem mit Anbindung an relationale Datenbanken (MySQL) und verschiedene ASP–Systeme 2 F N Query/ PL4XML: eine deklarative, P ROLOG–basierte X ML–Anfrage–, Transformations– und Update–Sprache 2 DATALOG∗ : eine mit P ROLOG verwobene Erweiterung von DATALOG Prof. Dr. Dietmar Seipel 19 Deduktive Datenbanken Sommersemester 2012 Andere Systeme zur Logikprogrammierung 2 deduktive Datenbanksysteme: C ORAL, LDL, Lola, A DITI 2 Systeme für Answer Set Programming (ASP): dlv, Smodels, X SB, Lola, Cmodels, ASAT 2 P ROLOG–Systeme: S WI, S ICStus, Visual P ROLOG, IF P ROLOG, Mercury 2 Constraint–logische Programmierung (CLP): Eclipse, Chip, Minerva 2 Funktional–logische Programmierung (FLP): Curry Prof. Dr. Dietmar Seipel 20 Deduktive Datenbanken Sommersemester 2012 Themengebiete der Vorlesung 2 Grundlagen von DATALOG und P ROLOG 2 das deduktive Datenbanksystem DD BASE 2 F N Query, DATALOG∗ 2 effiziente Auswertung von Logikprogrammen 2 weitere Sprachkonstrukte: – Built–In–Prädikate, Aggregationsfunktionen – Negation und Disjunktion −→ Answer Set Programming (ASP), D IS L OG 2 Anwendungen Prof. Dr. Dietmar Seipel 21 Deduktive Datenbanken Sommersemester 2012 Kapitel 1 und 2: DATALOG und P ROLOG DATALOG und P ROLOG sind – auf einem Domänenkalkül basierende – logische Programmiersprachen, die sich syntaktisch sehr ähneln und sich semantisch (in der Auswertung) unterscheiden. 2 DATALOG ist eine deklarative Datenbanksprache. 2 Es erweitert die relationale Datenbanksprache S QL (Tupelkalkül) um Rekursion. Nicht–rekursive DATALOG–Anfragen kann man leicht nach S QL übersetzen – und umgekehrt. 2 DATALOG kann – ähnlich wie S QL – effizient mengen–orientiert ausgewertet werden. 2 Für praktische Anwendungen braucht man oft zusätzliche Features, wie Built–In–Prädikate, komplexe Typen, Aggregation und Default Negation, die nicht von allen Systemen unterstützt werden. Prof. Dr. Dietmar Seipel 22 Deduktive Datenbanken Sommersemester 2012 P ROLOG ist eine deklarative Programmiersprache: 2 Wegen ihrer Kompaktheit und weitgehenden Ungetyptheit kann sie sehr gut als Skripting–Sprache verwendet werden. 2 Konstrukte höherer Ordnung (Funktionale) erlauben sehr viel Abstraktion und selbst–definierte Kontrollstrukturen. 2 Die Programmierung ist relational mit eingebautem Backtracking, und es wird häufig Rekursion verwendet. Im Vergleich zu DATALOG 2 bietet P ROLOG deutlich mehr syntaktische Features, aber dafür weniger semantische Alternativen; 2 ist die tupel–orientierte Auswertung von P ROLOG weniger effizient und terminiert für rekursive Programme manchmal nicht. Prof. Dr. Dietmar Seipel 23 Deduktive Datenbanken Sommersemester 2012 P ROLOG–Programmierung 2 Wir zeigen auf, wie P ROLOG in Verbindung mit relationalen Datenbanken benutzt werden kann. 2 Zur Datenhaltung in P ROLOG selbst kann die interne P ROLOG–Datenbank verwenden. Auf deren Basis wurde auch das deduktive Mini–Datenbanksystem DD BASE entwickelt. 2 X PCE–P ROLOG bietet viele weitere Features (GUI–, Web–Programmierung), die noch nicht im Sprachstandard von P ROLOG enthalten sind. 2 Wir zeigen verschiedene Anwendungen von P ROLOG: Sortieren und Suchen (auch in Graphen), Analyse hierarchischer Daten, medizinische Diagnose. Für praktische Anwendungen ist oft die Verbindung von P ROLOG, DATALOG und Datenbanken (relational oder X ML) sehr sinnvoll (DBLP–Systeme). Prof. Dr. Dietmar Seipel 24 Deduktive Datenbanken Sommersemester 2012 Anwendungsbeispiel: Stücklistenauflösung Die Stücklistenauflösung dient in der Betriebswirtschaftslehre der Ermittlung der in einer Planperiode erforderlichen Bedarfsmengen an Werkstoffen und Teilen. components(C1, C2:Q2): Ein Werkteil vom Typ C1 enthält Q2 Komponenten vom Typ C2. a d 4 b 2 3 R 5 6 R e c 7 R f components(a, components(a, components(b, components(b, components(c, components(c, b:2). c:3). d:4). e:5). e:6). f:7). Dann hat ein komplexes Teil vom Typ a z.B. folgende Stückliste: [d:8, e:28, f:21]. Prof. Dr. Dietmar Seipel 25 Deduktive Datenbanken Sommersemester 2012 Die persistente Speicherung und Verwaltung der Teilehierarchie kann in einer relationalen Datenbank erfolgen, aus der dann die Fakten components(C1, C2:Q2) extrahiert werden: C OMPONENTS a d 4 b 2 3 R 5 6 R e c 7 R f C1 C2 Q2 a b 2 a c 3 b d 4 b e 5 c e 6 c f 7 Das in P ROLOG implementierte deduktive Datenbanksystem DD BASE kann über O DBC auf relationale Datenbanken zugreifen. Prof. Dr. Dietmar Seipel 26 Deduktive Datenbanken Sommersemester 2012 Die Stückliste [d:8, e:28, f:21] eines komplexen Teils vom Typ a wird wie folgt berechnet: a → [d:(8 = 2 · 4), e:(28 = 2 · 5 + 3 · 6), f:(21 = 3 · 7)] 2 b → [d:4, e:5] 4 d → [d:1] Prof. Dr. Dietmar Seipel 3 R c → [e:6, f:7] 5 6 R e → [e:1] 7 R f → [f:1] 27 Deduktive Datenbanken Sommersemester 2012 Die Berechnung der Stücklisten für beliebig komplexe (tiefe) Teile ist nur in Embedded S QL möglich, nicht aber in S QL. In P ROLOG reicht dagegen das folgende, kompakte Logikprogramm zur Stücklistenaggregation schon aus: parts_of(C1, C2:Q2) :( not(components(C1, _)) -> C2:Q2 = C1:1 ; ddbase_aggregation( [Cb, sum(Qa*Qb)], ( components(C1, Ca:Qa), parts_of(Ca, Cb:Qb) ), [C2, Q2] ) ). (If->Then;Else): 2 Falls C1 keine Komponenten hat, so wird C1:1 berechnet. 2 Andernfalls ermittelt ddbase_aggregation/3 für alle Komponenten Ca:Qa von C1 wieviele Teile Cb:Qb diese enthalten und berechnet die Summe Q2 über alle Qa*Qb. Prof. Dr. Dietmar Seipel 28 Deduktive Datenbanken Sommersemester 2012 Kapitel 3: Syntax und Semantik (Theorie) 2 Die syntaktischen Grundbausteine von DATALOG und P ROLOG stammen aus der Prädikatenlogik: Terme, Atome und Klauseln. Letztere werden für Fakten, Regeln und Anfragen verwendet. 2 Die Semantik von DATALOG kann mittels Inferenzmethoden (beweis–theoretisch: TP , SLD/SLDNF), modell–theoretisch oder mittels eines Fixpunktansatzes beschrieben werden. 2 In der Praxis wird bei DATALOG die Bottom–Up–Inferenzmethode des TP –Operators – basierend auf Hyperresolution – zur Bestimmung aller ableitbaren Fakten verwendet. 2 Für P ROLOG ist die Top–Down–Inferenzmethode der SLDNF–Resolution die grundlegenede Auswertungsmethode für Anfragen; allerdings muß sie dann um außer–logische Features mit Seiteneffekten erweitert werden. Prof. Dr. Dietmar Seipel 29 Deduktive Datenbanken Sommersemester 2012 Kapitel 4: Daten– und Programmstrukturen für P ROLOG 2 Es gibt nur eine Reihe von Basis–Datentypen. Aber man kann beliebige komplexe Strukturen als Terme (ein wichtiger Spezialfall sind Listen) in P ROLOG repräsentieren. 2 Sehr geeignet sind dabei Terme, die X ML–Elemente repräsentieren, da man dann entsprechende Anfrage–, Transformations– und Update–Sprachen wie F N Query verwenden kann. 2 Neben Schleifen und Verzweigungen kann man vielfältige, weitere Kontrollstrukturen auf der Basis von Meta–Prädikaten realisieren. Typisch sind Konstrukte zum Finden aller Antworten auf eine Anfrage sowie Filter und Transformationen für Listen. 2 Die (rekursive) Struktur von P ROLOG–Programmen kann gut analysiert werden, und es können Äquivalenz–Transformationen zur Programm–Optimierung – speziell für DATALOG – eingesetzt werden. Prof. Dr. Dietmar Seipel 30 Deduktive Datenbanken Sommersemester 2012 Kapitel 5: Auswertungsmethoden für DATALOG 2 Man kann DATALOG–Programme leicht in relationen–algebraische Ausdrücke übersetzen, die man dann sehr effizient auf der Basis relationaler Datenbanken auswerten kann. 2 Für spezielle, häufig auftretende DATALOG–Programme kann man Anfragen mit Wavefront–Methoden relationen–algebraisch auswerten. 2 Die Ketten–Normalisierungsmethode kann beliebige DATALOG–Programme mit genau einer linear–rekursiven Regeln mittels einer graph–basierten Analyse auf diese Form bringen. 2 Die Magic–Sets–Methode transformiert ein DATALOG–Programm bezüglich einer Anfrage durch Nachahmung der SLD–Resolution in ein DATALOG–Programm (Source–to–Source–Transformation), das zielgerichtet und effizienter bottom–up ausgewertet werden kann. 2 In der Literatur findet man viele weitere Auswertungsmethoden. Prof. Dr. Dietmar Seipel 31 Deduktive Datenbanken Sommersemester 2012 Kapitel 6: Default Negation in Logikprogrammen 2 Praktische Anwendungen erfordern Default Negation, Aggregation, Built–In– und oft auch Meta–Prädikate. 2 Häufig können solche Logikprogramme P stratifiziert ausgewertet werden: – Falls sich ein Fakt A auf die Negation eines anderen Fakts B bezieht, so muß zuerst B ausgewertet werden. Erst dann kann man per Closed–World–Annahme entscheiden, ob die Negation von B gilt. – Auch im Falle von Meta–Prädikaten versucht man so vorzugehen. Die so berechnete intuitive Semantik nennt man das perfekte Modell MP . Ohne Default Negation ist MP das eindeutige minimale Modell. 2 Manchmal bezieht sich ein Fakt auf die Negation eines anderen Fakts, mit dem es wechselseitig rekursiv ist, und man kann nicht stratifizieren. Dann arbeitet man mit stabilen Modellen, die durch einen Fixpunkt–Ansatz definiert werden, oder mit dem wohlfundierten Modell WP . Prof. Dr. Dietmar Seipel 32 Deduktive Datenbanken Sommersemester 2012 Anwendungsbeispiel: Studium Kurse (mit ECTS–Punkten) und Prüfungen: course(’ADS’, course(’SWT’, course(’DB1’, course(’DB2’, course(’DDB’, exam(’Mary’, exam(’Mary’, exam(’Mary’, exam(’Mary’, under_graduate, 10). under_graduate, 10). under_graduate, 5). graduate, 5). graduate, 9). ’ADS’, ’SWT’, ’DB1’, ’DB2’, 2007-02-05). 2007-07-05). 2008-02-05). 2009-02-05). Diese Fakten könnten in der Erweiterung DATALOG∗ von DATALOGnot auch durch eine Anfrage an eine relationale Datenbank gewonnen werden. Prof. Dr. Dietmar Seipel 33 Deduktive Datenbanken Sommersemester 2012 Ein Student kommt an dem Tag ins Hauptstudium (graduate), an dem er 180 ECTS–Punkte im Grundstudium (under_graduate) erreicht: exam(Student, Course, Level, Date, ECTS) :exam(Student, Course, Date), course(Course, Level, ECTS). graduate(Student, Date) :ddbase_aggregate( [Student, max_date(D), sum(E)], exam(Student, _, under_graduate, D, E), Tuples ), member([Student, Date, Total], Tuples), Total >= 180. Das Prädikat ddbase_aggregate/3 bestimmt für alle Studierenden das maximale Datum und die Summe der ECTS–Punkte ihrer Prüfungen. Prof. Dr. Dietmar Seipel 34 Deduktive Datenbanken Sommersemester 2012 Wenn man die Studierenden im Grund– bzw. Hauptstudium zählen will, dann muß man zuerst alle graduate–Studierenden bestimmen; alle anderen Studierenden sind dann under_graduate: under_graduate(Student) :student(Student), not(graduate(Student)). graduate(Student) :graduate(Student, Date). Aus technischen Gründen muß man in der Regel für under_graduate mit der Projektion von graduate auf die Studierenden arbeiten. Diese stratifizierte Auswertung bestimmt in DATALOG∗ das perfekte Modell. Prof. Dr. Dietmar Seipel 35 Deduktive Datenbanken Sommersemester 2012 Das generische Prädikat “count_students/2” wendet “graduate/1” bzw. “under_graduate/1” auf alle Studierenden an und zählt die Hits: count_students(Pred, N) :member(Pred, [graduate, under_graduate]) ddbase_aggregate( [length(Student)], call(Pred, Student), [[N]] ). Durch “call(Pred, Student)” wird das Argument Predicate zum Prädiaktensymbol des Aufrufs “Pred(Student)” gemacht, was man in P ROLOG direkt nicht schreiben darf. Nachdem die Liste “Students” aller entsprechenden Studierenden berechnet wurde, wird mittels “length(Students, N)” deren Länge “N” ermittelt. Prof. Dr. Dietmar Seipel 36 Deduktive Datenbanken Sommersemester 2012 Das rekursive Prädikat supports bestimmt Kurse, welche andere Kurse (transitiv) unterstützen: supports(C1, C2) :supports(C1, C3), supports(C3, C2). supports(’DB1’, ’DDB’). supports(’SWT’, ’DB1’). supports(’ADS’, ’SWT’). Die transitive Verketteng ist eine der häufigsten Formen von Rekursion in deduktiven Datenbanken. Um effizient zu sein müssen rekursive Logikprogramme geschickt ausgewertet werden, da sonst sehr viel Redundanz entstehen kann. Prof. Dr. Dietmar Seipel 37 Deduktive Datenbanken Sommersemester 2012 DATALOG–Erweiterungen 2 Aktuelle DATALOG–Systeme erlauben nur konjunktive Regelrümpfe mit Default Negation und elementaren Built–In–Prädikaten sowie einfache Aggregation. 2 In der hier verwendeten Erweiterung DATALOG∗ sind beliebige P ROLOG–Regeln mit beliebigen Meta–Prädikaten erlaubt, die aber – anders als in P ROLOG – bottom–up ausgewertet werden. 2 Dadurch kann man viele Sachverhalte in DATALOG∗ deutlich komfortabler ausdrücken als in DATALOG, und man kann externe Tools gut einbinden. 2 Momentan erlaubt DATALOG∗ wie die meisten DATALOG–Systeme nur stratifizierte Meta–Prädikate – mit Default Negation und Aggregation als Spezialfällen. Prof. Dr. Dietmar Seipel 38 Deduktive Datenbanken Sommersemester 2012 DATALOG∗ vs. P ROLOG 2 Viele DATALOG∗ –Programme – wie z.B. obiges Programm zum Studium – könnten auch direkt in P ROLOG ausgewertet werden. 2 Die tupel–orientierte P ROLOG–Auswertung wäre allerdings weniger effizient als die mengen–orientierte DATALOG∗ –Auswertung. 2 Außerdem würde die P ROLOG–Auswertung nicht mehr terminieren, sobald die supports–Relation zyklisch würde. 2 Manche Anwendungen – wie z.B. Diagnose–Systeme – erfordern die mengen–orientierte DATALOG∗ –Auswertung. Prof. Dr. Dietmar Seipel 39 Deduktive Datenbanken Sommersemester 2012 Kapitel 7: Disjunktive Logikprogramme (DLPs) 2 DLPs erlauben Disjunktion in Regelköpfen zur Formulierung unsicheren Wissens. Typische Beispiele sind unsichere Diagnoseregeln, Graphenprobleme und kombinatorische Probleme, wie etwa Spiele. 2 Die Semantik eines Negations–freien DLPs ist durch die minimalen Herbrandmodelle gegeben, die mittels der beiden Verallgemeinerungen TPs und TPi des TP –Operators bestimmt werden können. 2 Wenn zusätzlich Default Negation auftritt, so werden wieder die stabilen bzw. (als Erweiterung) die partiell–stabilen Modelle herangezogen: – Ohne Negation entsprechen beide den minimalen Modellen. – Ohne Disjunktion ist WP das kleinste partiell–stabile Modell. – Falls zuätzlich die Negation stratifiziert ist, so ist MP das eindeutige stabile bzw. partiell–stabile Modell. Prof. Dr. Dietmar Seipel 40