Deduktive Datenbanken

Werbung
Deduktive Datenbanken
Grundkonzepte einer deduktiven Datenbank
IDB
intensionale Datenbasis
(hergeleitete Relationen)
Regeln als Datalog Programm
EDB
extensionale Datenbasis
(Basis-Relationen)
Freitag, 18. September 2009
1
Die relationale Uni-DB
PersNr
2125
2126
2127
2133
2134
2136
2137
Professoren
Name
Rang
Sokrates
C4
Russel
C4
Kopernikus
C3
Popper
C3
Augustinus
C3
Curie
C4
Kant
C4
hören
MatrNr
26120
27550
27550
28106
28106
28106
28106
29120
29120
29120
29555
25403
VorlNr
5001
5001
4052
5041
5052
5216
5259
5001
5041
5049
5022
5022
Freitag, 18. September 2009
Raum
226
232
310
52
309
36
7
MatrNr
24002
25403
26120
26830
27550
28106
29120
29555
voraussetzen
Vorgänger Nachfolger
5001
5041
5001
5043
5001
5049
5041
5216
5043
5052
5041
5052
5052
5259
MatrNr
28106
25403
27550
prüfen
VorlNr PersNr Note
5001
2126
1
5041
2125
2
4630
2137
2
Studenten
Name
Xenokrates
Jonas
Fichte
Aristoxenos
Schopenhauer
Carnap
Theophrastos
Feuerbach
Semester
18
12
10
8
6
3
2
2
Vorlesungen
VorlNr
Titel
5001
Grundzüge
5041
Ethik
5043
Erkenntnistheorie
5049
Mäeutik
4052
Logik
5052 Wissenschaftstheorie
5216
Bioethik
5259
Der Wiener Kreis
5022 Glaube und Wissen
4630
Die 3 Kritiken
SWS
4
4
3
2
4
3
2
2
2
4
gelesen
von
2137
2125
2126
2125
2125
2126
2126
2133
2134
2137
2
Rekursion
•
•
Find alle Voraussetzungen von “Der Wiener Kreis”
Auch indirekte Voraussetzungen beliebiger Tiefe
select Vorgänger
???
from voraussetzen,Vorlesungen
???
where Nachfolger= VorlNr and
Freitag, 18. September 2009
Titel= `Der Wiener Kreis´
3
Voraussetzungsgraph
Der Wiener Kreis
5259
Wissenschaftstheorie
5052
Bioethik
5216
Erkenntnistheorie
5043
Ethik
5041
Mäeutik
5049
Grundzüge
5001
Freitag, 18. September 2009
4
Tiefe 2
select v1.Vorgänger
from voraussetzen v1, voraussetzen v2,Vorlesungen v
where v1.Nachfolger= v2.Vorgänger and
v2.Nachfolger= v.VorlNr and
v.Titel=`Der Wiener Kreis´
Freitag, 18. September 2009
5
Voraussetzungsgraph
Der Wiener Kreis
5259
Wissenschaftstheorie
5052
Bioethik
5216
Erkenntnistheorie
5043
Ethik
5041
Mäeutik
5049
Grundzüge
5001
Freitag, 18. September 2009
6
Tiefe n
select v1.Vorgänger
from voraussetzen v1
...
voraussetzen vn_minus_1
voraussetzen vn,
Vorlesungen v
where v1.Nachfolger= v2.Vorgänger and
...
vn_minus_1.Nachfolger= vn.Vorgänger and
vn.Nachfolger = v.VorlNr and
v.Titel= `Der Wiener Kreis´
Freitag, 18. September 2009
7
Voraussetzungsgraph
Der Wiener Kreis
5259
Wissenschaftstheorie
5052
Bioethik
5216
Erkenntnistheorie
5043
Ethik
5041
Mäeutik
5049
Grundzüge
5001
Freitag, 18. September 2009
8
Transitive Hülle
Der Wiener Kreis
5259
Wissenschaftstheorie
5052
Bioethik
5216
Erkenntnistheorie
5043
Ethik
5041
Mäeutik
5049
Grundzüge
5001
Freitag, 18. September 2009
9
Rekursive Anfragen
with recursive TransVorl (Vorg, Nachf)
as (select Vorgänger, Nachfolger from voraussetzen
union all
select t.Vorg, v.Nachfolger
from TransVorl t, voraussetzen v
where t.Nachf= v.Vorgänger)
select Titel from Vorlesungen where VorlNr in
(select Vorg from TransVorl where Nachf in
(select VorlNr from Vorlesungen
where Titel= `Der Wiener Kreis´) )
Freitag, 18. September 2009
10
Rekursion in SQL
•
•
Man kann with rekursiv verwenden
•
Die Definition der Sicht wird so lange iterativ neu
berechnet, bis keine neuen Tupel hinzukommen
(Fixpunkt)
•
Vorsicht: Anfrage terminiert evtl. nicht! (Wann?)
Mehrere Teilklauseln können mit union (all)
verbunden werden
Freitag, 18. September 2009
11
Datalog
•
•
Anfragesprache, basierend auf Prädikatenlogik
Ursprung in der Logikprogrammierung
•
•
•
•
•
“Prolog ohne Funktionen”
Relationales Datenmodell, erweitert um Regeln
Einfachere Syntax als SQL
Rekursive Anfragen leicht zu formulieren
Nützlich für formale Untersuchungen von
Anfrageeigenschaften
Freitag, 18. September 2009
12
Datalog
Regel:
sokLV(T,S) :-vorlesungen(V,T,S,P ), professoren(P, „Sokrates“,R,Z ), >(S,2).
Grundbausteine der Regeln sind atomare Formeln oder Literale:
q(A1, ..., Am).
q ist dabei der Name einer Basisrelation, einer abgeleiteten Relation oder eines
eingebauten Prädikats: <,=,>,…
Beispiel: professoren(S, „Sokrates“,R,Z ).
Äquivalenter Domänenkalkül-Ausdruck:
{[t,s] | ∃v,p ([v,t,s,p] ∈ Vorlesungen ∧
∃n,r,z ([p,n,r,z] ∈ Professoren ∧
n = „Sokrates“ ∧ s > 2))}
Freitag, 18. September 2009
13
Datalog-Regel
•
Linke Seite ist der Kopf (Head, Goal) der Regel,
rechte Seite Rumpf (Body)
•
Jedes qj (...) ist eine atomare Formel. Die Prädikate qj
werden auch als Subgoals bezeichnet.
•
X1, ...,Xm sind Variablen, die mindestens einmal auch im
Rumpf vorkommen müssen
•
Aij sind Konstanten oder Variablen
Freitag, 18. September 2009
14
Datalog-Regel
•
•
:- entspricht Implikation, Rumpf
Kopf
Logisch äquivalente Form obiger Regel:
p(...) ∨ ¬q1 (...) ∨... ∨ ¬qn (...)
Freitag, 18. September 2009
15
Beispiel Datalog-Programm
•
•
Voraussetzen: {[Vorgänger, Nachfolger]}
Vorlesungen: {VorlNr, Titel, SWS, gelesenVon]}
geschwisterVorl(N 1, N 2) :- voraussetzen(V, N1),voraussetzen(V, N2)), N1 < N2.
geschwisterThemen(T 1, T 2) :- geschwisterVorl(N1, N2),
vorlesungen(N1, T1, S1, R1),
vorlesungen(N2, T2, S2, R2).
aufbauen(V,N ) :- voraussetzen(V,N )
aufbauen(V,N ) :- aufbauen(V,M ), voraussetzen(M,N ).
verwandt(N,M ) :- aufbauen(N,M ).
verwandt(N,M ) :- aufbauen(M,N ).
verwandt(N,M ) :- aufbauen(V,N ), aufbauen(V,M ).
Freitag, 18. September 2009
16
Analogie zur EDB/IDB in rel. DBMS
• Basis-Relationen entsprechen den EDB.
• Sichten entsprechen den IDB:
•
„Aufbauen“ als Regeln in einem deduktiven DBMS:
aufbauen(V,N ) :- voraussetzen(V,N )
aufbauen(V,N ) :- aufbauen(V,M ), voraussetzen(M,N ).
•
„Aufbauen“ als Sichtdefinition in DB2:
create view aufbauen(V,N) as
(select Vorgaenger, Nachfolger
from voraussetzen
union all
select a.V, v.Nachfolger
from aufbauen a, voraussetzen v
where a.N = v.Vorgaenger)
select * from aufbauen
Freitag, 18. September 2009
17
Abhängigkeitsgraph
geschwisterThema
verwandt
geschwisterVorl
vorlesungen
aufbauen
voraussetzen
Freitag, 18. September 2009
18
Rekursion
•
Abhängigkeitsgraph enthält Zykel
•
•
Programm ist rekursiv
Im Beispiel: aufbauen
Freitag, 18. September 2009
19
Sicherheit von Datalog-Regeln
•
Es gibt unsichere Regeln, wie z.B.
ungleich(X,Y) :- X ≠ Y.
Diese definieren unendliche Relationen.
•
Datalog-Regel ist sicher, wenn alle Variablen im Kopf
beschränkt (range restricted) sind
•
Variable X ist range-restricted, wenn im Rumpf
•
•
•
X in einem normalen (nicht eingebauten) Prädikat vorkommt
Prädikat der Form X = c mit einer Konstante c vorkommt
Prädikat X = Y vorkommt, und Y ist range-restricted
Freitag, 18. September 2009
20
Auswertung nicht-rekursiver
Datalog-Programme
•
Materialisierung der IDB-Prädikate
•
•
•
Umwandlung der Regeln in relationale Algebra
Materialisierung erfolgt in topologischer Reihenfolge
Materialisierte IDB-Prädikate können wie EDBPrädikate behandelt werden
Freitag, 18. September 2009
21
Ein nicht rekursives Programm
geschwisterVorl(N 1, N 2) :- voraussetzen(V, N1),voraussetzen(V, N2)), N1 < N2.
geschwisterThemen(T 1, T 2) :- geschwisterVorl(N1, N2),
vorlesungen(N1, T1, S1, R1),
vorlesungen(N2, T2, S2, R2).
voraussetzen
geschwisterThema
geschwisterVorl
vorlesungen
Mögl. Topologische Ordnung:
voraussetzen, geschwisterVorl, vorlesungen, geschwisterThema
Freitag, 18. September 2009
22
Auswertung nicht-rekursiver
Datalog-Programme: Übersicht
Schritt 1:
Für jede Regel mit dem Kopf p(...), also
p(...) :- q1(...), ..., qn(...).
bilde eine Relation mit allen im Körper der Regel vorkommenden
Variablen als Attribute (Join der materialisierten Relationen für qi sowie
Selektion mit restlichen Prädikaten)
Wichtig: Korrekte Umbenennung von Variablen
Schritt 2:
Projiziere alle Relationen aus Schritt I auf die Variablen, die im Kopf
vorkommen, und bilde für jedes Prädikat die Vereinigung dieser
Relationen.
Freitag, 18. September 2009
23
Auswertung von Geschwister Vorlesungen
und Geschwister Themen
•
Die Relation zu Prädikat gV ergibt sich nach Schritt 1zu
σN1<N2 (Vs1(V, N1) A Vs2(V, N2))
Vs1(V, N1) := ρV←$1(ρN1 ←$2 (Voraussetzen))
Vs2(V, N1) := ρV←$1(ρN2 ←$2 (Voraussetzen))
•
Gemäß Schritt 2. ergibt sich:
GV(N1, N2) := ΠN1, N2 (σN1<N2(Vs1(V, N1) A Vs2(V, N2)))
•
Analog ergibt sich für die Herleitung von GT:
GT(T1,T2) := ΠT1,T2(GV(N1,N2) A VL1(N1,T1,S1,R1) A VL2(N2,T2,S2,R2))
Freitag, 18. September 2009
24
Ausprägung der Relationen GeschwisterVorl
und GeschwisterThemen
GeschwisterVorl
GeschwisterThemen
N1
N2
5041
5043
T1
T2
5043
5049
Ethik
Erkenntnistheorie
5041
5049
Erkenntnistheorie
Mäeutik
5052
5216
Ethik
Mäeutik
Wissenschaftstheorie
Bioethik
Freitag, 18. September 2009
25
Auswertungs-Algorithmus:
Details
Dabei sind die Vi die in qi(…) vorkommenden Variablen.
Das Selektionsprädikat Fi setzt sich aus einer Menge konjunktiv
verknüpfter Bedingungen zusammen.
Freitag, 18. September 2009
26
Selektionsprädikat Fi
•
Konstante c an j-ter Stelle qi(...,c,...)
$j = c
•
Mehrfach verwendete Variable X in qi(...,X,...,X,...)
(Positionen k und l)
$k = $l
Freitag, 18. September 2009
27
Umbenennung
•
Die Attribute der Relation werden entsprechend
der Variablennamen im Subgoal benannt
qi(...,V1,...,Vn,...)
k1
Freitag, 18. September 2009
kn
ΠV1,...,Vn(ρV1←$k1,...,Vn←$kn(Ei))
28
Auswertungs-Algorithmus
Für Variable Y, die nicht in den normalen Prädikaten
vorkommt, gibt es zwei Möglichkeiten:

Sie kommt nur als Prädikat
Y=c
für eine Konstante c vor. Dann bilde einstellige Relation
DY := ρY←$1 ({[c]})

Sie kommt als Prädikat X = Y vor, und X kommt in
Prädikat qi(…,X,…) an k—ter Stelle vor. Dann bilde Relation
DY := ρY←$k (Π$k (Qi)) .
Freitag, 18. September 2009
29
Auswertungs-Algorithmus:
Details
Bilde Join aus den Ei und DY
E := E1 A ... A En A DY A...
und wende Selektion
σF (E)
an. F ist konjunktiven Verknüpfung der Vergleichsprädikate
X ФY
Projiziere auf die im Kopf der Regel vorkommenden Variablen:
ΠX
1,…, Xm
Freitag, 18. September 2009
(σF (E ))
30
Beispiel: nahe verwandte Vorlesungen
(r1) nvV(N1,N2) :- gV(N1,N2).
(r2) nvV(N1,N2) :- gV(M1,M2),vs(M1,N1),vs(M2,N2).
Für die erste Regel erhält man
Für die zweite Regel
Daraus ergibt sich dann durch die Vereinigung
Freitag, 18. September 2009
31
Vereinigung
•
Die Ausdrücke für alle Regeln eines Prädikats werden
vereinigt, um die Ergebnisrelation zu erhalten
•
Vereinigung und evtl. andere Regeln erfordern
einheitliches Schema
•
•
Also noch Umbenennung erforderlich
Sonderfall:Variablen, die im Kopf mehrfach vorkommen
•
Durch neue Variablen und Gleichheitsprädikate ersetzen
Freitag, 18. September 2009
32
Auswertung rekursiver Regeln
Aufbauen
V
N
5001
5041
5001
5043
5001
5049
a(V,N) :- vs(V,N).
5041
5216
5041
5052
a(V,N) :- a(V,M),vs(M,N).
5043
5052
5052
5259
5001
5216
5001
5052
5001
5259
5041
5259
5043
5259
Freitag, 18. September 2009
33
Auswertung rekursiver Regeln
Betrachten wir das Tupel [5001, 5052] aus der Relation
Aufbauen. Dieses Tupel kann wie folgt hergeleitet
werden:
1. a (5001, 5043) folgt aus der ersten Regel, da
vs (5001, 5043) gilt.
2. a (5001, 5052) folgt aus der zweiten Regel, da
a)
a (5001, 5043) nach Schritt 1. gilt und
b)
vs (5043, 5052) gemäß der EDB-Relation Voraussetzen gilt.
Freitag, 18. September 2009
34
Naive Auswertung durch Iteration
A := {}: /*Initialisierung auf die leere Menge */
repeat
A’:=A;
/* Erste Regel */
A:=Vs(V,N)
/* Zweite Regel */
A:=A∪ΠV,N(ρ$1→V,$2→M(A’)A ρ$1→M,$2→N(Vs)
until A‘ = A
output A;
Freitag, 18. September 2009
35
Naive Auswertung durch Iteration
1. Erster Durchlauf kopiert Voraussetzen nach A
2. Im zweiten Schritt kommen die Tupel [5001,5216],
[5001,5052], [5041,5259] und [5043,5259] hinzu.
3. Neues Tupel [5001,5259]
4. Abbruchbedingung A‘ = A erfüllt
Freitag, 18. September 2009
36
(Naive) Auswertung der rekursiven Regel aufbauen
Schritt
A
1
[5001,5041], [5001,5043], [5001,5049],
[5041,5216], [5041,5052], [5043,5052],
[5052,5259]
2
[5001,5041], [5001,5043], [5001,5049],
[5041,5216], [5041,5052], [5043,5052],
[5052,5259]
[5001,5216], [5001,5052], [5041,5259],
[5043,5259],
3
[5001,5041], [5001,5043], [5001,5049],
[5041,5216], [5041,5052], [5043,5052],
[5052,5259]
[5001,5216], [5001,5052], [5041,5259],
[5043,5259], [5001,5259]
4
wie in Schritt 3 (keine Veränderung, also
Terminierung des Algorithmus
Freitag, 18. September 2009
37
Herunterladen