DataLog - TU Dresdenst.inf.tu-dresden.de/files/teaching/ss09/PS09/braunisch_folien.pdf · DataLog...
Transcript of DataLog - TU Dresdenst.inf.tu-dresden.de/files/teaching/ss09/PS09/braunisch_folien.pdf · DataLog...
![Page 1: DataLog - TU Dresdenst.inf.tu-dresden.de/files/teaching/ss09/PS09/braunisch_folien.pdf · DataLog Datenbank-Programmiersprache für deduktive Datenbanken Proseminar Programmierparadigmen](https://reader030.fdocument.pub/reader030/viewer/2022021622/5b6f71b07f8b9af12d8c4ceb/html5/thumbnails/1.jpg)
DataLog
Datenbank-Programmiersprache
für deduktive Datenbanken
Proseminar
Programmierparadigmen und Sprachen
Nico Braunisch
![Page 2: DataLog - TU Dresdenst.inf.tu-dresden.de/files/teaching/ss09/PS09/braunisch_folien.pdf · DataLog Datenbank-Programmiersprache für deduktive Datenbanken Proseminar Programmierparadigmen](https://reader030.fdocument.pub/reader030/viewer/2022021622/5b6f71b07f8b9af12d8c4ceb/html5/thumbnails/2.jpg)
2
Inhalt
● DataLog Motivation Definition Entstehung Syntyx & Semantik Bedeutung
● CodeQuest
![Page 3: DataLog - TU Dresdenst.inf.tu-dresden.de/files/teaching/ss09/PS09/braunisch_folien.pdf · DataLog Datenbank-Programmiersprache für deduktive Datenbanken Proseminar Programmierparadigmen](https://reader030.fdocument.pub/reader030/viewer/2022021622/5b6f71b07f8b9af12d8c4ceb/html5/thumbnails/3.jpg)
3
Motivation
● Datenbank- und Logiksprachen sind oft langsam und unzureichend für Datenbankabfrage
● Kombination einer logischen Sprache mit einer deduktiven Datenbank
● Ziel: Erreichen möglichst kurzer Abfragedauer bei möglichst wenig Einschränkung an Sprachkonstruckte und Funktionsumfang
![Page 4: DataLog - TU Dresdenst.inf.tu-dresden.de/files/teaching/ss09/PS09/braunisch_folien.pdf · DataLog Datenbank-Programmiersprache für deduktive Datenbanken Proseminar Programmierparadigmen](https://reader030.fdocument.pub/reader030/viewer/2022021622/5b6f71b07f8b9af12d8c4ceb/html5/thumbnails/4.jpg)
4
Definition
Answer Set Programming Art der deklarativen Programmierung zur
Lösung von Suchverfahren Reduzierung auf ein einfaches Model Erstellen einer Lösungsstrategie
Logische Programmierung Erstellen einer Menge von Axiomen Auswertung über Abfragen der Axiomen
![Page 5: DataLog - TU Dresdenst.inf.tu-dresden.de/files/teaching/ss09/PS09/braunisch_folien.pdf · DataLog Datenbank-Programmiersprache für deduktive Datenbanken Proseminar Programmierparadigmen](https://reader030.fdocument.pub/reader030/viewer/2022021622/5b6f71b07f8b9af12d8c4ceb/html5/thumbnails/5.jpg)
5
Definition
Deduktive Datenbank Erweiterte relationale Datenbanken Hinzufügen von Regeln und Fakten Erlaubt Schlussfolgerung
![Page 6: DataLog - TU Dresdenst.inf.tu-dresden.de/files/teaching/ss09/PS09/braunisch_folien.pdf · DataLog Datenbank-Programmiersprache für deduktive Datenbanken Proseminar Programmierparadigmen](https://reader030.fdocument.pub/reader030/viewer/2022021622/5b6f71b07f8b9af12d8c4ceb/html5/thumbnails/6.jpg)
6
Entstehung
● Ursprung in der Entstehung
des logischen Paradigma
● Wärend eines Seminars über
Logik und Datenbanken
● Im Jahr 1978
![Page 7: DataLog - TU Dresdenst.inf.tu-dresden.de/files/teaching/ss09/PS09/braunisch_folien.pdf · DataLog Datenbank-Programmiersprache für deduktive Datenbanken Proseminar Programmierparadigmen](https://reader030.fdocument.pub/reader030/viewer/2022021622/5b6f71b07f8b9af12d8c4ceb/html5/thumbnails/7.jpg)
7
Entwickler
● Entwickelt von Herve Gallaire und Jack Minker
● Name wurde geprägt von David Maier
![Page 8: DataLog - TU Dresdenst.inf.tu-dresden.de/files/teaching/ss09/PS09/braunisch_folien.pdf · DataLog Datenbank-Programmiersprache für deduktive Datenbanken Proseminar Programmierparadigmen](https://reader030.fdocument.pub/reader030/viewer/2022021622/5b6f71b07f8b9af12d8c4ceb/html5/thumbnails/8.jpg)
8
Syntax & Semantik
● Ähnlich zu Prolog● Beschränkt Konstrukte, die notwendig sind für
die Datenbank-Abfragen● Auswertung durch Fixpunktbrechnung ● Rekursionstiefe muss nicht explizit angeben
werden
![Page 9: DataLog - TU Dresdenst.inf.tu-dresden.de/files/teaching/ss09/PS09/braunisch_folien.pdf · DataLog Datenbank-Programmiersprache für deduktive Datenbanken Proseminar Programmierparadigmen](https://reader030.fdocument.pub/reader030/viewer/2022021622/5b6f71b07f8b9af12d8c4ceb/html5/thumbnails/9.jpg)
9
Syntax
● Variable● <Großbuchstabe>{<Buchstabe> |<Zahlen>}● ”_” Annonyme Variable
● Konstante ● <Kleinbuchstabe>{<Buchstabe> |<Zahlen>}● Oder eine Folge von Zahlen <Ziffer>{<Ziffer>}
● Term● <Variable>| <Konstante>
![Page 10: DataLog - TU Dresdenst.inf.tu-dresden.de/files/teaching/ss09/PS09/braunisch_folien.pdf · DataLog Datenbank-Programmiersprache für deduktive Datenbanken Proseminar Programmierparadigmen](https://reader030.fdocument.pub/reader030/viewer/2022021622/5b6f71b07f8b9af12d8c4ceb/html5/thumbnails/10.jpg)
10
Syntax
● Predikat Symbol ● Kleinbuchstaben
● Atom● <Predikat Symbol> ”(”{<Terme>}”)”● Folge von (”nicht-zusammengesetzten”)
Termen
● p(t1 , . . . , t
n )
● n ist die Stelligkeit
![Page 11: DataLog - TU Dresdenst.inf.tu-dresden.de/files/teaching/ss09/PS09/braunisch_folien.pdf · DataLog Datenbank-Programmiersprache für deduktive Datenbanken Proseminar Programmierparadigmen](https://reader030.fdocument.pub/reader030/viewer/2022021622/5b6f71b07f8b9af12d8c4ceb/html5/thumbnails/11.jpg)
11
Syntax
● Klausel / Regel● a ← b
1 · · · b∧ ∧
m
● <Atom> [”:-” {<Atom>}] ”.” ● m ist die Stelligkeit● ← = :- und = ,∧● Klauseln ohne Atome rechts nennt man Fakt● Jede Variable im Kopf der Klausel muss auch im
Rumpf vorkommen
![Page 12: DataLog - TU Dresdenst.inf.tu-dresden.de/files/teaching/ss09/PS09/braunisch_folien.pdf · DataLog Datenbank-Programmiersprache für deduktive Datenbanken Proseminar Programmierparadigmen](https://reader030.fdocument.pub/reader030/viewer/2022021622/5b6f71b07f8b9af12d8c4ceb/html5/thumbnails/12.jpg)
12
Syntax
● Wissensbasis / Programm● Menge von Klauseln● Ein Fakt für jedes Tupel der Datenbank
● Kommentare● % Ganze Zeile● /* Kommentar Anfang● */ Kommentar Ende
![Page 13: DataLog - TU Dresdenst.inf.tu-dresden.de/files/teaching/ss09/PS09/braunisch_folien.pdf · DataLog Datenbank-Programmiersprache für deduktive Datenbanken Proseminar Programmierparadigmen](https://reader030.fdocument.pub/reader030/viewer/2022021622/5b6f71b07f8b9af12d8c4ceb/html5/thumbnails/13.jpg)
13
Unterschied zu Prolog
● Argumente von Prädikaten durfen keine zusammengesetzte Term sein
● Negation und Rekursion müssen stratifiziert sein
● Auswertung erfolgt bottom-up● Reihenfolge der Regeln spielt keine Rolle
![Page 14: DataLog - TU Dresdenst.inf.tu-dresden.de/files/teaching/ss09/PS09/braunisch_folien.pdf · DataLog Datenbank-Programmiersprache für deduktive Datenbanken Proseminar Programmierparadigmen](https://reader030.fdocument.pub/reader030/viewer/2022021622/5b6f71b07f8b9af12d8c4ceb/html5/thumbnails/14.jpg)
14
Semantik
● Wie in der Predikatenlogik● Zustand der Datenbank wird als Interpretation
aufgefasst● Domane und Konstanten sind dabei durch das ̈
System vorgegeben● Herbrand-Interpretationen
![Page 15: DataLog - TU Dresdenst.inf.tu-dresden.de/files/teaching/ss09/PS09/braunisch_folien.pdf · DataLog Datenbank-Programmiersprache für deduktive Datenbanken Proseminar Programmierparadigmen](https://reader030.fdocument.pub/reader030/viewer/2022021622/5b6f71b07f8b9af12d8c4ceb/html5/thumbnails/15.jpg)
15
Bedeutung
● Zunächst nur theorethische Bedeutung● Konnte sich als reine
Datenbankabfragesprache nicht durchsetzen● Keine Kommerzielle Lösung● Dennoch praktisch Eingesetzt● Weit verbreitet in Universitären Projekten
![Page 16: DataLog - TU Dresdenst.inf.tu-dresden.de/files/teaching/ss09/PS09/braunisch_folien.pdf · DataLog Datenbank-Programmiersprache für deduktive Datenbanken Proseminar Programmierparadigmen](https://reader030.fdocument.pub/reader030/viewer/2022021622/5b6f71b07f8b9af12d8c4ceb/html5/thumbnails/16.jpg)
16
Beispielsysteme
● ConceptBase konzeptionellen / Metamodellierung
● IRIS Datalog Erweiterung in Java
● DES genutz zur Schulung von DataLog
● DLV unterstütz disjuntive Normalform
● SecPAL Sicherheitsrichtlinen Dialeckt (MS Research)
● .QL objectorientierter Dialeckt
● Datalog leichtgewichtige DB-Sytem in LUA
● XSB: Logik & deductiv DB-System für Unix und Windows
● Bddbddb Abfrage & Analyse von Java Bytecode
![Page 17: DataLog - TU Dresdenst.inf.tu-dresden.de/files/teaching/ss09/PS09/braunisch_folien.pdf · DataLog Datenbank-Programmiersprache für deduktive Datenbanken Proseminar Programmierparadigmen](https://reader030.fdocument.pub/reader030/viewer/2022021622/5b6f71b07f8b9af12d8c4ceb/html5/thumbnails/17.jpg)
17
CodeQuest
● Entwickelt von Elnar Hajiyev, Mathieu Verbaere und Oege de Moor.
● 2006 University of Oxford,
● Inspiriert von JQuery (Eclipseplugin)
![Page 18: DataLog - TU Dresdenst.inf.tu-dresden.de/files/teaching/ss09/PS09/braunisch_folien.pdf · DataLog Datenbank-Programmiersprache für deduktive Datenbanken Proseminar Programmierparadigmen](https://reader030.fdocument.pub/reader030/viewer/2022021622/5b6f71b07f8b9af12d8c4ceb/html5/thumbnails/18.jpg)
18
CodeQuest
● Analyse von Objecktorientiernten Quellcodes
● Untersucht Beziehungen und Abhänigkeiten
● Ziel: entwicklung von generischer, fehlerfreier optimierter Software
![Page 19: DataLog - TU Dresdenst.inf.tu-dresden.de/files/teaching/ss09/PS09/braunisch_folien.pdf · DataLog Datenbank-Programmiersprache für deduktive Datenbanken Proseminar Programmierparadigmen](https://reader030.fdocument.pub/reader030/viewer/2022021622/5b6f71b07f8b9af12d8c4ceb/html5/thumbnails/19.jpg)
19
CodeQuest
● Mischung aus relationaler Datenbank und Datalog
● Speichert SyntaxBaum und Flusskontrolle in Datenbasis
● Balance zwischen Ausdruckskraft, Effizienz und Skalierbarkeit
![Page 20: DataLog - TU Dresdenst.inf.tu-dresden.de/files/teaching/ss09/PS09/braunisch_folien.pdf · DataLog Datenbank-Programmiersprache für deduktive Datenbanken Proseminar Programmierparadigmen](https://reader030.fdocument.pub/reader030/viewer/2022021622/5b6f71b07f8b9af12d8c4ceb/html5/thumbnails/20.jpg)
20
Quellcodeanalyse
● Überprüfung der Code Conventions● Fehlersuche● Refactoring● Optimerung● Komplexitätsanalyse
![Page 21: DataLog - TU Dresdenst.inf.tu-dresden.de/files/teaching/ss09/PS09/braunisch_folien.pdf · DataLog Datenbank-Programmiersprache für deduktive Datenbanken Proseminar Programmierparadigmen](https://reader030.fdocument.pub/reader030/viewer/2022021622/5b6f71b07f8b9af12d8c4ceb/html5/thumbnails/21.jpg)
21
Block Abrufbarer
Methode Konstruktor
Modifikator Parameter
Typ-Hierarchie
Element Paket CU Feld Typ
Primitive RefType
Schnitstelle Klasse
![Page 22: DataLog - TU Dresdenst.inf.tu-dresden.de/files/teaching/ss09/PS09/braunisch_folien.pdf · DataLog Datenbank-Programmiersprache für deduktive Datenbanken Proseminar Programmierparadigmen](https://reader030.fdocument.pub/reader030/viewer/2022021622/5b6f71b07f8b9af12d8c4ceb/html5/thumbnails/22.jpg)
22
CodeQuest Queries
● type(T) T ist ein Type● child(T, F ) F ist ein Kind von F● field(F ) F ist ein Feld● modifier(M, name) M ist ein Modifier mit name● method(M ) M ist eine Methode● writes(M, F ) M schreibt auf F● subtypestar(T, T1 ) T indireckter Untetype T1
┊
![Page 23: DataLog - TU Dresdenst.inf.tu-dresden.de/files/teaching/ss09/PS09/braunisch_folien.pdf · DataLog Datenbank-Programmiersprache für deduktive Datenbanken Proseminar Programmierparadigmen](https://reader030.fdocument.pub/reader030/viewer/2022021622/5b6f71b07f8b9af12d8c4ceb/html5/thumbnails/23.jpg)
23
Query Beispiel
● Beispiel 1query1(T,F) :- type(T), hasChild(T,F),field(F), hasStrModifier(F,'public'), NOT(hasStrModifier(F,'final')).
● Beispiel 2query2(M,T) :- method(M),writes(M,F), hasType(F,FT),hasSubtypeStar(T,FT).
● Beispiel 3query3(M1,M2):-overrides(M2,M1) ,hasStrModifier(M1,'abstract'),NOT(hasStrModifier(M2,'abstract')).
![Page 24: DataLog - TU Dresdenst.inf.tu-dresden.de/files/teaching/ss09/PS09/braunisch_folien.pdf · DataLog Datenbank-Programmiersprache für deduktive Datenbanken Proseminar Programmierparadigmen](https://reader030.fdocument.pub/reader030/viewer/2022021622/5b6f71b07f8b9af12d8c4ceb/html5/thumbnails/24.jpg)
24
Query Beispiel
Quelle: FinalCodeQuestPoster6
![Page 25: DataLog - TU Dresdenst.inf.tu-dresden.de/files/teaching/ss09/PS09/braunisch_folien.pdf · DataLog Datenbank-Programmiersprache für deduktive Datenbanken Proseminar Programmierparadigmen](https://reader030.fdocument.pub/reader030/viewer/2022021622/5b6f71b07f8b9af12d8c4ceb/html5/thumbnails/25.jpg)
25
Query Beispiel
Quelle: FinalCodeQuestPoster6
![Page 26: DataLog - TU Dresdenst.inf.tu-dresden.de/files/teaching/ss09/PS09/braunisch_folien.pdf · DataLog Datenbank-Programmiersprache für deduktive Datenbanken Proseminar Programmierparadigmen](https://reader030.fdocument.pub/reader030/viewer/2022021622/5b6f71b07f8b9af12d8c4ceb/html5/thumbnails/26.jpg)
26
Quellen
● www.progtools.comlab.ox.ac.uk/
● Scalable Source Code Queries with Datalog● CodeQuest: Querying Source Code with DataLog● FinalCodeQuestPoster6
● www.wikipedia.org
● Datalog● .QL● Stratifikation● Prolog● Answer set programming● Deduktion
● Logic: Datalog Syntax and Semantics
● Deduktive Datenbanken: 2. Datalog Syntax and Semantics
![Page 27: DataLog - TU Dresdenst.inf.tu-dresden.de/files/teaching/ss09/PS09/braunisch_folien.pdf · DataLog Datenbank-Programmiersprache für deduktive Datenbanken Proseminar Programmierparadigmen](https://reader030.fdocument.pub/reader030/viewer/2022021622/5b6f71b07f8b9af12d8c4ceb/html5/thumbnails/27.jpg)
27
Vielen Dank
Quelle: http://www.dresden-wissenschaft.de