Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Deduktive Datenbanken Deduktive Datenbanken schlagen eine Br ü cke zwischen relationalen Datenbanken und den logik-basierten Programmiersprachen (hier:

Ähnliche Präsentationen


Präsentation zum Thema: "Deduktive Datenbanken Deduktive Datenbanken schlagen eine Br ü cke zwischen relationalen Datenbanken und den logik-basierten Programmiersprachen (hier:"—  Präsentation transkript:

1 Deduktive Datenbanken Deduktive Datenbanken schlagen eine Br ü cke zwischen relationalen Datenbanken und den logik-basierten Programmiersprachen (hier: Prolog). Die persistent gespeicherten Relationen einer Datenbanken werden hier als Prädikate der Logik erster Stufe angesehen: Genau falls sich ein Tupel (x,y,z) in Relation R befindet, wird das zugeh ö rige Pr ä dikat r(x,y,z) mit true bewertet. Damit entsprechen die persistenten Relationen der Datenbank der Faktenbasis in Prolog. Eine Regelsprache, Datalog (Data & Logic), wird verwendet, um aus diesen vorhandenen Fakten, neues "Wissen" abzuleiten (zu deduzieren).

2 Deduktive Datenbanken Grundkonzepte einer deduktiven Datenbank IDB intensionale Datenbasis (hergeleitete Relationen) EDB extensionale Datenbasis (Basis-Relationen) Regeln als Datalog Programm

3 Deduktive Datenbanken: Terminologie Die extensionale Datenbasis (EDB), die manchmal auch Faktenbasis genannt wird. Die EDB besteht aus einer Menge von Relationen(Ausprägungen) und entspricht einer ganz normalen relationalen Datenbasis. Die Deduktionskomponente, die aus einer Menge von (Herleitungs-)Regeln besteht. Die Regelsprache heißt Datalog. Die intensionale Datenbasis (IDB), die aus einer Menge von hergeleiteten Relationen(Ausprägungen) besteht. Die IDB wird durch Auswertung des Datalog-Programms aus der EDB generiert.

4 Beispiel: Rekursion in Prolog/Datalog Faktenbasis zu diesem gerichteten Graphen: kante(1,2). kante(2,3). kante(3,4). kante(4,5). kante(4,6). kante(6,7). kante(3,6).

5 Beispiel: Rekursion in Prolog/Datalog Leite aus der Faktenbasis die Pfade in diesem gerichteten Graphen ab: kante(1,2).pfad(V,N) :- kante(V,N). kante(2,3).pfad(V,N) :- kante(V,Z), pfad(Z,N). kante(3,4). kante(4,5). Alternative Notation : kante(4,6). kante(6,7).pfad(V,N) kante(V,N). kante(3,6). pfad(V,N) kante(V,Z) pfad(Z,N).

6 Rekursion in SQL(?) Bestimme die Voraussetzungen f ü r die Vorlesung "Der Wiener Kreis": SELECT Vorgänger FROM voraussetzen, Vorlesungen WHERE VorlNr = Nachfolger AND Titel = "Der Wiener Kreis" voraussetzen VorgängerNachfolger Vorlesungen VorlNrTitelSWSgelesen Von 5001Grundzüge Ethik Erkenntnistheorie Mäeutik Logik Wissenschaftstheorie Bioethik Der Wiener Kreis Glaube und Wissen Die 3 Kritiken42137

7 Der Wiener Kreis 5259 Wissenschaftstheorie 5052 Bioethik 5216 Erkenntnistheorie 5043 Ethik 5041 Mäeutik 5049 Grundzüge 5001

8 Rekursion in SQL(?): Pfade der L ä nge 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" Vorlesungen VorlNrTitelSWSgelesen Von 5001Grundzüge Ethik Erkenntnistheorie Mäeutik Logik Wissenschaftstheorie Bioethik Der Wiener Kreis Glaube und Wissen Die 3 Kritiken42137 voraussetzen VorgängerNachfolger voraussetzen VorgängerNachfolger

9 SELECT v 1.Vorgänger FROM voraussetzen v 1 voraussetzen v n-1 voraussetzen v n, Vorlesungen v WHERE v 1.Nachfolger= v 2.Vorgänger and v n-1.Nachfolger= v n.Vorgänger and v n.Nachfolger = v.VorlNr and v.Titel = "Der Wiener Kreis" Rekursion in SQL(?): Pfade der L ä nge n n-facher self join der Relation voraussetzen

10 Transitive Hülle der Relation R(A,B) trans A,B (R) = { (a,b) k IN ( t 1,..., t k R ( t 1.A = t 2.B t k-1.A = t k.B t 1.A = a t k.B = b)) }

11 Der Wiener Kreis WissenschaftstheorieBioethik ErkenntnistheorieEthikMäeutik Grundzüge Extensional Intensional

12 Rekursion(!) in DB2/SQL:1999: Alle Voraussetzungen f ü r "Der Wiener Kreis" WITH TransVorl (Vorg, Nachf) AS ( SELECT Vorgänger, Nachfolger FROM voraussetzen UNION ALL SELECT t.Vorg, v.Nachfolger Rekursion! FROM TransVorl t, voraussetzen v WHERE t.Nachf= v.Vorgänger) Abbruch? Sobald View stabil. SELECT Titel FROM Vorlesungen WHERE VorlNr IN (SELECT Vorg FROM TransVorl WHERE Nachf in (SELECT VorlNr FROM Vorlesungen WHERE Titel = "Der Wiener Kreis") )

13 Datalog: Regeln, Literale Regel: sokLV(T,S) :- vorlesungen(V,T,S,P ), professoren(P, "Sokrates",R,Z ), >(S,2). Ä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))} Grundbausteine der Regeln sind atomare Formeln (oder Literale): q(A 1,..., A m ). q ist dabei der Name einer Basisrelation, einer abgeleiteten Relation oder eines eingebauten Prädikats:,… Beispiel: professoren(S, "Sokrates",R,Z ).

14 Datalog: Regeln Jedes q j (...) ist eine atomare Formel. Die q j werden oft als Subgoals bezeichnet. X 1,...,X m sind Variablen, die mindestens einmal auch auf der rechten Seite des Zeichens :- vorkommen müssen. Logisch äquivalente Form obiger Regel (Hornklausel): p(...) ¬q 1 (...) …... ¬q n (...) Wir halten uns an folgende Notation: Prädikate beginnen mit einem Kleinbuchstaben. Die zugehörigen Relationen – seien es EDB- oder IDB- Relationen – werden mit gleichem Namen, aber mit einem Großbuchstaben beginnend, bezeichnet.

15 Beispiel: Datalog-Programm Zur Bestimmung von (thematisch) verwandten Vorlesungspaaren EDB-Relationen: Voraussetzen: {[Vorgänger, Nachfolger]} Vorlesungen: {VorlNr, Titel, SWS, gelesenVon]} geschwisterVorl(N1, N2) :- voraussetzen(V, N1), voraussetzen(V, N2)), N1 < N2. geschwisterThemen(T1, T2) :- 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 ).

16 Analogie zur EDB/IDB in RDBMS 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;

17 Eigenschaften von Datalog-Programmen Regel-Abhängigkeitsgraph ( = "wird verwendet von") geschwisterThemen vorlesungenvoraussetzen geschwisterVorlaufbauen verwandt Ein Datalog-Programm ist rekursiv, wenn der Abhängigkeitsgraph einen (oder mehrere) Zyklen hat Unser Beispielprogramm ist rekursiv: aufbauen aufbauen

18 Sicherheit von Datalog-Regeln Es gibt unsichere Regeln, wie z.B. ungleich(X, Y) :- X Y. Diese definieren unendliche Relationen. Eine Datalog-Regel ist sicher, wenn alle Variablen im Kopf eingeschränkt (range restricted) sind. Dies ist für eine Variable X dann der Fall, wenn: die Variable im Rumpf der Regel in mindestens einem normalen Prädikat – also nicht nur in eingebauten Vergleichsprädikaten – vorkommt oder ein Prädikat der Form X = c mit einer Konstante c im Rumpf der Regel existiert oder ein Prädikat der Form X = Y im Rumpf vorkommt, und nachgewiesen ist, dass Y eingeschränkt ist.

19 Ein zyklenfreier Abhängigkeitsgraph gV(N1, N2) :- vs(V, N1), vs(V, N2), N1 < N2. gT(T1, T2) :- gV(N1, N2), vL(N1, T1, S1, R1), vL(N2, T2, S2, R2) Eine mögliche topologische Sortierung ist: vs, gV, vL, gT. Auswertungsreihenfolge für Prädikate! gT gV vs vL

20 Auswertung nicht-rekursiver Datalog-Programme 1.Für jede Regel mit dem Kopf p(...), also p(...) :- q 1 (...),..., q n (...). bilde eine Relation, in der alle im Körper der Regel vorkommenden Variablen als Attribute vorkommen. Diese Relation wird im wesentlichen durch einen natürlichen Verbund der Relationen Q 1,..., Q n, die den Relationen der Prädikate q 1,..., q n entsprechen, gebildet. Man beachte, dass diese Relationen Q 1,..., Q n wegen der Einhaltung der topologischen Sortierung bereits ausgewertet (materialisiert) sind. 2.Da das Prädikat p durch mehrere Regeln definiert sein kann, werden die Relationen aus Schritt 1 vereinigt. Hierzu muss man vorher auf die im Kopf der Regeln vorkommenden Attribute projizieren. Wir nehmen an, dass alle Köpfe der Regeln für p dieselben Attributnamen an derselben Stelle verwenden – durch Umformung der Regeln kann man dies immer erreichen.

21 Auswertung von Geschwister Vorlesungen und Geschwister Themen Die Relation zu Prädikat gV ergibt sich nach Schritt 1 aus folg. Relationenalgebraausdruck: N1

22 Veranschaulichung der EDB-Relation Voraussetzen 5259 (WienerKreis) 5052 (Wiss. Theorie) 5043 (Erk. Theorie) 5001 (Grundzüge) 5049 (Mäeutik)5041 (Ethik) 5216 (Bioethik)

23 Ausprägung der Relationen GeschwisterVorl und GeschwisterThemen GeschwisterVorl N1N GeschwisterThemen T1T2 EthikErkenntnistheorie Mäeutik EthikMäeutik WissenschaftstheorieBioethik

24 Auswertung nicht-rekursiver Datalog-Regeln Ziel: Auswertung der Datalog-Regel p(X 1,…,X m ) :- q 1 (A 11,…,A 1m1 ), …, q n (A n1,…,A nmn ). Topologische Sortierung: Pr ä dikate qi seien schon zu Relationen Qi ausgewertet. Schema: Q i : { [ $1,…,$m i ] }. F ü r jedes der Subgoals q i (A i1,…,A imi ) bilde den folgenden Ausdruck der Relationenalgebra: E i := … Vi $i … ( Pi ( Fi (Q i ))) Die P i sind die in q i (…) auftretenden Variablenpositionen, V i ist der im Subgoal an Position i benutzte Variablenname ( $i P i ) und F i ist eine konjunktive Selektionsbedingung, die wie folgt gebildet wird (s. n ä chste Folien).

25 Auswertung nicht-rekursiver Datalog-Regeln Falls in q i (...,c,...) eine Konstante c an der j -ten Stelle vorkommt, füge die Bedingung $j = c zu F i hinzu. Falls eine Variable X mehrfach an Positionen k und l in q i (...,X,...,X,...) vorkommt, füge für jedes solches Paar die Bedingung $k = $l zu F i hinzu.

26 Auswertung nicht-rekursiver Datalog-Regeln Für eine Variable Y, die nicht in den normalen Prädikaten der Regel vorkommt, gibt es zwei Möglichkeiten: Y kommt nur in einem Prädikat Y = c für eine Konstante c vor. Dann wird eine einstellige Relation mit einem Tupel Q Y := Y $1 {[c]} f ü r dieses Pr ä dikat gebildet. Y kommt in einem Prädikat X = Y vor, und X kommt in einem normalen Prädikat q i (…,X,…) an k ter Stelle vor. In diesem Fall setze Q Y := Y $k ( $k (Q i )).

27 Auswertung nicht-rekursiver Datalog-Regeln Bilde den nat ü rlichen Verbund aller so entstandenen Teilausdr ü cke: E := E 1 … E n Berechne dann F (E), wobei F die Konjunktion der Vergleiche X Y ist), die im Regelk ö rper vorkommen. Abschließend projiziere auf die Attribute, die als Variablennamen im Kopf der Regeln (hier: p(X 1,…X m ) ) auftauchen: X1,…,Xm ( F (E)) Sollte p ü ber mehrere Regeln definiert sein, vereinige die entstandenen Algebraausdr ü cke via.

28 Beispiel: Nahe verwandte Vorlesungen (r 1 ) nvV(N1,N2) :- gV(N1,N2). (r 2 ) nvV(N1,N2) :- gV(M1,M2),vs(M1,N1),vs(M2,N2). Dieses Beispielprogramm baut auf dem Prädikat gV auf und ermittelt nahe verwandte Vorlesungen, die einen gemeinsamen Vorgänger erster oder zweiter Stufe haben. E r1 := N1 $1,N2 $2 ( $1,$2 ( TRUE (GV($1,$2)))) Kürzer: E r1 := GV(N1,N2) E r2 := GV(M1,M2) Vs(M1,N1) Vs(M2,N2) Ergebnis: E r1 E r2

29 Auswertung rekursiver Regeln (hier: Pr ä dikat aufbauen ) a(V,N) :- vs(V,N). a(V,N) :- a(V,M),vs(M,N). Aufbauen VN

30 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) gem äß der EDB-Relation Voraussetzen gilt. 2. a(5001, 5052) folgt aus der zweiten (rekursiven) Regel, da a) a(5001, 5043) nach Schritt 1. gilt und b) vs(5043, 5052) gemäß der EDB-Relation Voraussetzen gilt. Zur Auswertung von a() ben ö tigen wir also Tupel aus a() selbst, die zuvor berechnet wurden.

31 "Naive" Auswertung durch Iteration Grundidee: IDB-Relationen schrittweise bestimmen. Starte mit leerer IDB-Relation, f ü ge auf Basis schon bekannter Tupel iterativ neue Tupel hinzu. Abbruch der Iteration sobald Fixpunkt erreicht. A(V,N) = Vs(V,N) V,N (A(V,M) Vs(M,N)) A := {}; repeat A' := A; A := Vs(V,N);/* Regel 1 */ A := A V,N (A'(V,M) Vs(M,N))/* Regel 2*/ until A' = A;/* Fixpunkt erreicht? */ output A;

32 "Naive" Auswertung durch Iteration Iterationen: 1.Im ersten Durchlauf werden nur die 7 Tupel aus Voraussetzen nach A "übertragen", da der Join leer ist (das linke Argument A' des Joins wurde zur leeren Relation {} initialisiert). 2.Im zweiten Schritt kommen zusätzlich die Tupel [5001,5216], [5001,5052], [5041,5259] und [5043,5259] hinzu. 3.Jetzt wird nur noch das Tupel [5001,5259] neu generiert. 4.In diesem Schritt kommt kein neues Tupel mehr hinzu, so dass die Abbruchbedingung A' = A erfüllt ist.

33 (Naive) Auswertung der rekursiven Regel f ü r Pr ä dikat 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] 4wie in Schritt 3 (keine Veränderung, also Terminierung des Algorithmus

34 Der Wiener Kreis 5259 Wissenschaftstheorie 5052 Bioethik 5216 Erkenntnistheorie 5043 Ethik 5041 Mäeutik 5049 Grundzüge 5001

35 Inkrementelle (semi-naive) Auswertung rekursiver Regeln W ä hrend der iterativen Auswertung des rekursiven Pr ä dikates p sei folgende Regel f ü r die Generierung eines neuen Tupels t "verantwortlich": p(…) :- q 1 (…), …, q n (…). In der iterativen Auswertung wurde dazu ein Relationenalgebra-Ausdruck der Form E(Q 1 … Q n ) ausgewertet. Das neue Tupel t entstehe in Iteration k auf Basis der Tupel t 1 Q 1, …, t n Q n. Dann muss eines dieser t i Q i in Iteration ( k-1 ) neu generiert worden sein. Seien Q i die in Iteration ( k-1 ) erstmals generierten Tupel. Dann wird t also auch von diesem Ausdruck erzeugt: E(Q 1 … Q i … Q n )

36 Inkrementelle (semi-naive) Auswertung rekursiver Regeln Aber aus welchem spezifischen Q i stammt dieses Tupel t i ? Betrachte die aller Subgoal-Relationen gesondert. Berechne: In jedem Teilausdruck der Vereinigung darf jeweils nur ein einer Subgoal-Relation eingesetzt werden. Falls die t 1,…, t i-1,t i+1,…,t n in Schritten < k erzeugt wurden, ist sichergestellt, daß t durch E(Q 1 … Q i … Q n ) erzeugt wird. E( Q 1 … Q i … Q n ) … E(Q 1 … Q i … Q n ) … E(Q 1 … Q i … Q n )

37 Inkrementelle (semi-naive) Auswertung rekursiver Regeln Beispiel: In der iterativen Auswertung von Pr ä dikat aufbauen (Relation A ), wurde folgendes Tupel t in der 3. Iteration generiert: t = [5001, 5259] Tupel t entstand aus dem folgenden Join zweier Tupel: [ 5001, 5052 ] [ 5052, 5259 ] Dabei wurde [ 5001, 5052 ] A in Iteration 2 generiert. Tupel [ 5052, 5259 ] ist der Teil der (invarianten) EDB-Relation Vs.

38 Algorithmus zur semi-naiven Auswertung von Pr ä dikat aufbauen 1. Vs(V,N) := {}; 2.A(V,N) := Vs(V,N); 3.A(V,N) := A(V,N) V,N (A(V,M) Vs(M,N)); 4. A(V,N) := A(V,N); 5.repeat 6. A' (V,N):= A(V,N);/* A': im letzten Schritt neu gen. Tupel */ 7. A(V,N) := Vs(V,N); 8. A(V,N) := A(V,N) 9. V,N ( A'(V,M) Vs(M,N)) 10. V,N (A(V,M) Vs(M,N)); 11. A(V,N) := A(V,N) \ A(V,N); /* nur tats ä chlich neue Tupel */ 12. A(V,N) := A(V,N) A(V,N); /* akkumuliere Endergebnis */ 13. until A(V,N) = {}; Bemerkung: Vs(V,N) bleibt während der Berechnung {} (EDB-Relationen sind invariant).

39 Illustration der semi-naiven Auswertung von aufbauen Schritt A Initialisierung (Zeile 2. und 3.) (7 Tupel aus Vs :) [5001,5042], [5001,5043] [5043,5052], [5041,5052] [5001,5049], [5001,5216] [5052,5259] 1. Iteration (Pfade der Länge 2) [5001,5216], [5001,5052] [5041,5259], [5043,5259] 2. Iteration (Pfade der Länge 3) [5001,5259] 3. Iteration {} (Terminierung)

40 Bottom-Up oder Top-Down Auswertung? Die bisher beschriebene bottom-up Auswertung leitet die IDB aus den EDB-Relationen ab. (Optimierbare) Ausdr ü cke der relationalen Algebra berechnen neue Tupel der IDB aus vorhergehenden Ableitungen. Achtung: Es wird aber jeweils die gesamte IDB abgeleitet obwohl f ü r Beantwortung einer Query oft ein Ausschnitt ausreichend ist: (r 1 ) a (V, N) :- vs (V, N). (r 2 ) a (V, N) :- a (V, M), vs (M, N). query (V ) :- a (V, 5052).

41 Relevanter Ausschnitt der EDB-Relation Voraussetzen f ü r query(V) :- a(V, 5052) 5259 (WienerKreis) 5052 (Wiss. Theorie) 5043 (Erk. Theorie) 5001 (Grundzüge) 5049 (Mäeutik)5041 (Ethik) 5216 (Bioethik)

42 Rule/Goal-Baum zur Top-Down Auswertung a(V,5052) (r 1 ) a(V,5052) :- vs(V,5052) (r 2 ) a(V,5052) :- a(V,M1),vs(M1,5052) vs(V,5052)vs(M1,5052)a(V,M1) (r 1 ) a(V,M1) :- vs(V,M1)(r 2 ) a(V,M1) :- a(V,M2),v2(M2,M1) vs(V,M1)vs(M2,M1)a(V,M2) : Bindungen f ü r V aus EDB

43 Rule/Goal-Baum mit Auswertung a(V,5052) (r 1 ) a(V,5052) :- vs(V,5052) (r 2 ) a(V,5052) :- a(V,M1),vs(M1,5052) vs(V,5052) vs(M1,5052)a(V,M1) (r 1 ) a(V,M1) :- vs(V,M1) (r 2 ) a(V,M1) :- a(V,M2),v2(M2,M1) vs(V,M1) vs(M2,M1)a(V,M2) : V Ø M2 {5001} M1 {5041,5043}V {5041,5043} V {5001}

44 Negation ( ) im Regelrumpf und Stratifikation indirektAufbauen(V,N) :- aufbauen(V,N), voraussetzen(V,N). Eine Regel r mit einem negierten Prädikat im Rumpf, wie z.B. r p (...) :- q1 (...),..., qi (...),..., qn (...). kann nur dann sinnvoll ausgewertet werden, wenn Relation Q i schon vollständig materialisiert ist ( t Q i ? ). Dazu müssen zuerst alle Regeln mit Kopf q i (...) :-... ausgewertet sein. Das ist nur m ö glich, falls q i nicht abhängig von p ist. Also darf der Abhängigkeitsgraph keine Pfade von q i nach p enthalten. Wenn das für alle Regeln und negierten Subgoals der Fall ist, ist das Datalog-Programm stratifiziert. Achtung, Sicherheit: In qi (…,V,…) ist Variable V nicht beschr ä nkt. (Warum?)

45 Beispiel: Auswertung einer Regel mit Negation Auszuwertende Regel (ist das Programm stratifiziert?): iA (V,N) :- a (V,N), vs (V,N). Ausdruck der relationalen Algebra hierzu: IA (V,N) = V,N ( A (V,N) Vs (V,N) ) = * A(V,N) - Vs (V,N) Berechnung von IA(V,N) jetzt einfach aus Basis von bereits materialsierter IDB-Relation A(V,N) und EDB-Relation Vs(V,N). Wieso gilt eigentlich = * ?

46 Komplexeres Beispiel: Regel mit Negation grundlagen(V) :- voraussetzen(V,N). spezialVorl(V) :- vorlesungen(V,T,S,R), grundlagen(V). Ä quivalente Ausdr ü cke der relationalen Algebra: Grundlagen(V) = V (Voraussetzen(V,N)) SpezialVorl(V) = V (Vorlesungen(V,T,S,R) Grundlagen(V)) Wie ist hier das Komplement von Grundlagen(V) zu bestimmen? (Projektion V unter den verschieben: projection pushdown) Falls pushdown unm ö glich ist: Konstruktion der aktiven Dom ä ne (DOM, s. Buch).

47 Ausdruckskraft von Datalog Die Sprache Datalog, eingeschränkt auf nicht-rekursive Programme aber erweitert um Negation, wird in der Literatur manchmal als Datalog non-rec bezeichnet Diese Sprache Datalog non-rec hat genau die gleiche Ausdruckskraft wie die relationale Algebra – und damit ist sie hinsichtlich Ausdruckskraft auch äquivalent zum relationalen Tupel- und Domänenkalkül. Datalog mit Negation und Rekursion geht natürlich über die Ausdruckskraft der relationalen Algebra hinaus – man konnte in Datalog ja z.B. die transitive Hülle der Relation Voraussetzen definieren ( repeat … until nicht in relationaler Algebra verf ü gbar).

48 Simulation der relationalen Algebra in Datalog Selektion SWS > 3 (Vorlesungen) Titel = "M ä eutik" (Vorlesungen) In Datalog: query1(V,T,S,R) :- vorlesungen(V,T,S,R), S > 3. query2(V,T,S,R) :- vorlesungen(V,"Mäeutik",S,R). Projektion Name, Rang (Professoren) In Datalog: query(Name,Rang) :- professoren(PersNr,Name, Rang, Raum).

49 Simulation der relationalen Algebra in Datalog Kreuzprodukt Professoren Vorlesungen In Datalog: query(V1,V2,V3,V4,P1,P2,P3,P4) :- professoren(P1,P2,P3,P4), vorlesungen(V1,V2,V3,V4). -Join (hier mit Projektion) Titel,Name (Vorlesungen gelesenVon=PersNr Professoren) In Datalog: query(T,N) :- vorlesungen(V,T,S,R), professoren(R,N,Rg,Ra).

50 Simulation der relationalen Algebra in Datalog Vereinigung (von Relationen identischer Schemata) PersNr, Name (Assistenten) PersNr,Name (Professoren) In Datalog: query(PersNr,Name) :- assistenten(PersNr,Name,F,B). query(PersNr,Name) :- professoren(PersNr,Name,Rg,Ra). Differenz VorlNr (Vorlesungen) VorlNr (Voraussetzen) In Datalog: query1(V) :- vorlesungen(V,T,S,R). query2(V) :- voraussetzen(V,N). query(V) :- query1(V), query2(V).


Herunterladen ppt "Deduktive Datenbanken Deduktive Datenbanken schlagen eine Br ü cke zwischen relationalen Datenbanken und den logik-basierten Programmiersprachen (hier:"

Ähnliche Präsentationen


Google-Anzeigen