Prüfungsfragen aus Protkollen [Ausstehend] Flashcards
Erzählen sie was für Probleme bei der Speicherung von E-Commerce Daten auftauchen können! Welche Möglichkeiten gibt es das Problem zu lösen?
Wie funktioniert die Transformation von horizontal nach vertikal? Was passiert, wenn man eine Zeile hat, die nur NULL-Werte enthält?
da
Hier sehen sie eine SELECT Query, die bestimmte Attribute aus der horizontalen Tabelle auswählt. Formen sie diese Query für die vertikale Datenspeicherung um!
Select A2=c und A3=a
Siehe Bild
Übrigens Projektion ist das Gleiche wie v2h mit entsprechenden Attributen
Was für Probleme gibt es bei der Erzeugung von der horizontalen Sicht aus einer vertikalen Sicht?
**Man muss viele Leftjoins durchführen, wenn man die ganze horizontale Tabelle haben will
(1)Beschreiben Sie bitte was ein R Baum ist! (2)Wie führt man eine NN Abfrage in dem R Baum durch? (3)Was für ein Problem gibt es in den hochdimensionalen Räumen? (4)Wie kann man das Problem lösen? (5)Wie funktioniert dann die NN Abfrage?
Es ist sind besserer Karten im Set enthalten!!
(1) **Ein Baum aus Minimum Bounding Rectangles eines Raumes
(2) **Priority Queue erzeugen, die die Bounding Rectangles nach dem Abstand sortieren und diese nach und nach aufmachen und Punkte dort betrachten. Die Punkte werden auch nach dem Abstand sortiert
(3) **Bei vielen Dimensionen überlappen sich über 50% der Rectangles und man muss somit viele oder sogar alle Rectangles betrachten.
Frage vom Prüfer: Warum überlappen die sich?
⇒**Bei vielen Dimensionen können die Abstände in den jeweiligen Dimensionen nie unterschiedlich sein. anscheinend statistisch unmöglich
(4) **Man partitioniert den Raum uns fasst alle Dimensionen zu einem Durchscnittsabstand zusammen un ordnet jeder Partition einen Punkt zu. Zusätzlich erstellt man eine Tabelle, wo man jeden Punkt einem Durchschnittsabstan zuordnet
(5) **I-Distance: Man legt einen Query Punkt in den Raum und erweitert iterativ seinen Radius.
⇒ Wenn der enstehende Kreis eine Partition schneidet, dann betrachtet man alle Punkte die in der Schaale des Schnitts zwischen der Partition und dem Kreis liegen. Dafür benutzt man die Tabelle, in der alle Durchschnittsabstände gespeichert sind und man somit schnell naschschauen kann, ob der Punkt in der Schaale liegt. Für alle Punkte die in der Schaale liegen, macht man dann die tatsächliche Abstandsberechnung in allen Dimensionen zu dem Querypunkt // Kommt glaub ich in der Datenbanksysteme VL dran oder so
- Wir hatten in der Vorlesung verschiedene Möglichkeiten Daten abzufragen, Relationale Algebra, Datalog. Was ist Datalog? Abgrenzung du RA?
- Warum kann es keine Schnittmenge (Mengendifferenz) in Datalog geben?
- Was ist das Problem mit Negation?
- Ist Negation in Datalog grundsätzlich nicht erlaubt? (5) Kann man das Prüfen?
- **Datalog erklärt und gegen Relationale Algebra abgegrenzt (keine Schnittmenge, dafür Rekursion)
- –> 1.0 –> Logik-basierte Anfragesprache, Syntax basiert auf Prolog.
- –> 1.0 –> Datalog kann andere Informationsbedürfnisse befriedigen. Z.B. Rekursion ist möglich, was mit RA nicht geht (umständlich). Dafür unterstützt Datalog keine Mengedifferenz (Schnittmengenberechnung) .
- **Auf Grund der Monotonie-Eigenschaft bzw im Fall von
- Negation ist nicht-monoton: Eine Vergrößerung der Eingabemenge verkleinert die Ausgabemenge und das nicht in Datalog erlaubt ist, da Datalog monoton ist!
- Aus anderm Protokol mit 1.0 ⇒ Dafür würde Negation benötigt. Negation ist im allgemeinen nicht monoton, deshalb in Datalog nicht ohne weiteres erlaubt.
- ** Es kann zu Oszillation kommen –> Beispiel aus VL malen Prüfer: ist das immer so? siehe
- ** Nein, wenn negierte Prädikate vollständig berechnet sind, bevor sie negiert vorkommen geht das (5)**Ja, mit Stratifikation bzw. dem Abhängikeitsgraph.
Was ist Oszillation, Warum taucht sie auf? Was ist ein Abhänigkeitgraph Wie kann man Ozillation beseitigen?
da
Was ist Relationale Algebra? Was ist Relationale Vollständigkeit?
- RA= Menge von Operationen, die neue Relation berechnen, ausgehend von einer oder mehreren Relationen.
- Jede andere Menge von Operationen, die mindestens genauso mächtig ist wie Omega
Wie unterscheidet sich Datalog von relationalen Kalkülen, relationaler Algebra, Prolog, SQL?
- Unterschied zu Kalkülen:
- Striktere Vorgaben bezüglich des Aufbaus von Anfragen,
- zieht diverse vorteilhafte Eigenschaften nach sich, formal nachweisbar.
- Andererseits: Erweiterungen problembehaftet.
- Datalog vs. SQL
in Datalog:Aggregation kann zu Nicht-Monotonizität führen – Illustration (1) Aggregation – nicht Teil von Datalog, deswegen Darstellung mit SQL.
- Datalog vs. Prolog
Datalog: Anordnung von Prädikaten und Fakten spielt keine Rolle.
Datalog erlaubt im Gegensatz zu Prolog keine komplexen Terme als Argumente in Prädikaten. Beispiel: P(1, 2) ist erlaubt, nicht aber P(f(1), 2).
- Datalog vs. relatinaler Algebra
Datalog hat wichtige Beschränktheit in der Ausdruckskraft der relationalen Algebra nicht (Berechnung transitive Hülle), trotzdem effizient.
Datalog ist monoton. (Keine Negation in Rümpfen von Regeln erlaubt.)
monoton := Vergrößerung des Inputs (einer Anfrage/eines Operators) verkleinert nicht den Output.
Rekursive Anfragen nicht in relationaler Algebra. Relationale Algebra hat dafür diff-Operator, der nicht in Datalog ausdrückbar ist.
Warum beschäftigen wir uns mit Datalog, gegeben dass wir relationale Anfragesprachen schon kennen?
Rekursion ist möglich!
[mP] Was bedeutet modelltheoretische/ beweistheoretische Semantik von Datalog Programmen? Unter welchen Umständen können diese Betrachtungsweisen sich im Ergebnis unterscheiden?
Zwei alternative Herangehensweisen:
- Modelltheoretisch: Berechnung der Menge aller Grundfakten, die logische Konsequenzen des Programms sind.
- Beweistheoretisch: Berechnung der Menge aller Grundfakten, die aus dem Programm (in endlich vielen Schritten) ableitbar sind.
Ansätze liefern – für Horn-Klauseln – das gleiche Ergebnis.
Was ist Stratifikation? Warum ist dieses Konzept im Kontext von Datalog bedeutsam?
Stratifikation bedeutet das auszuführende Programm in eine ausfühbare Reihenfolge zu bringen über Einteilung sog. Strata! Intressant für Datalogprogramme, die Negation enthalten.
Denn ein Programm das Negation auf noch nicht vollständig berechnete Realtionen enthält ist nicht ausführbar!
Man kann es aber mit Hilfe von Stratifikation (Abhängigkeitsgraph + Algorithmus) in eine ausführbare Reihenfolge bringen, sofern die Negation nicht teil eineses Zykels ist!!
Ist Negation grundsätzlich erlaubt in Datalog? Wie kann es zugelassen werden?
[Negation in rekursiven Regeln]
Es ist grundsätzlich nicht erlaubt, auf Grund der nicht-Monotonizität!
Datalog ist monoton. Negation kann aber mit Stratifikation zugelassenwerden.
Verwendung von Negation in Rümpfen muss kontrolliert erfolgen. Wird negatives Literal der Form negationP in Regel benutzt, muss P bis dahin vollständig berechnet sein.
Wozu kann Negation führen? Zeigen sie ein Beispiel!
Es kann zur Oszillation führen!
Anwendung des Algorithmus auf folgendes Beispiel führt zu „Oszillieren.“
Bei beweißtheoretischem Vorgehen!
- P(X) :- R(X), -Q(X) .
- Q(X) :- R(X), -P(X) .
Anmerkung beim Ausführen des Algo –> Ich beziehe mich im Schritt 1 auf den Ausganszustand: Also nur die 0 in R und Rest leer oder was anderes
Führt modelltheoretische Betrachtung zu gleichem Ergebnis wie beweistheoretische Betrachtung?
Für Illustration, Formeln hierfür umformen. (nur für modelltheoretisches Vorgehen)
Es reicht mit beweistheoretischem Vorgehen stumpf die Regeln aus dem Beispiel anzuwenden um Oszillieren zu zeigen. Also oszilieren zwischen dem Anfangszustand und den 1. Zustrand –> es gibt kein terminierten Zustand –> Regeln würden unentlich fortgesetzt!
Wie können wir denn nach Mustern in Graphen suchen? Also zum Beispiel diese Dreieck?
Funktioniert über sogenannte Motifs
Motif = (flexible) Spezifikation von Mustern in Graphen
Es gibt simple (elementare) Motifs und zusammengesetzte Motifs
einfache Motifs sind im Prinzip Graphen ohne jegliche Flexibilität
Motifs können graphisch oder textuell dargestellt werden (Textuell hat den Charm, dass es quasi schon Teil unserer Anfrage ist)
Wir haben die Möglichkeit den Mustern Namen zu geben
Zusammensetzungen bringen Übersichtlichkeit!
Bild bsp !
Es gibt nun unterschiedliche Möglichkeiten wie wir die Zusammensetzung machen können
Stellen sie mal einen Join mit Datalog dar! Mit Student(MatrNr, Name) und Prüfung(MatrNr, Note) –> Name und Note ausgeben
Einfach mit Komma getrennt !
Ergebnis(Name, Note) :- Student(MatrNr, Name), Prüfung(MatrNr, Note)
Stellen sie mal Selektion mit Datalog dar! –> x>100 in R(x,y) (Mit 2 Bedingung AND/OR y=’some string’ )
- x>100 in R(x,y)
S(x,y) :- R(x,y), x > 100,
- Selection x>100 AND y=’some string’
S(x,y) :- R(x,y), x > 100, y=’some string’
- Selection x>100 OR y=’some string’ Need two rules (Also Union mit oder!)
S(x,y) :- R(x,y), x > 100
S(x,y) :- R(x,y), y=’some string’
Stellen sie mal Union mit Datalog dar!
Für Union brauchen wir 2 Regeln // gegeben R1(X,Y,Z) und R2(X,Y,Z)
U(X,Y,Z) :- R1(X,Y,Z)
U(X,Y,Z) :- R2(X,Y,Z)
Stellen sie mal Projektion mit Datalog dar! R(A,B.C) und ich möchte das B wegprojezieren!
S(A,C) :- R(A,B,C) .
Warum ist ein external Interface bei Motifs nötig?
Es ist im allgemeinen erforderlich, dass ein Motif ein externes Interface hat, weil wir ansonsten nichts haben von diesem Motif was wir dann in ein größeres Motif einbauen können
Schreiben Sie mal das Muster für einen Pfad beliebiger Länge auf und mal einen Cycle! Und was beinhaltet diese Muster?
Das Muster beinhaltet Rekursion
Warum muss die Export Klausel dazu?
siehe tonspur
Nennen und schreiben Sie mal die Muster für alle Arten von Komplexen Motifs auf?
Benutze das Motif aus dem Bild und führe Vereinigung durch!
- Komplexe Motifs
- Concatenation (keine Flexibilität)
- by edges
- by unification
- Disjunction. (Flexibilität - common part’ – here shown in blue.)
- Repetition
Beispiele im Bild
Motifs ist keine vollständige Anfragesprache was fehlt noch? Schreibe Beispiele zu den fehlenden Bestandteilen auf!
- Ich möchte zum einen noch bestimmte Bedingungen an einzelne Elemente des Graphen stellen (z.b Knoten1.name=”A” oder Knoten2.year > 2000)
- Möglich mit Graph Patterns
- Zum anderen möchte ich die Struktur des ausgegebenen Graphen bestimmen. Es für eine Anfragesprache von Nöten, dass da Ergebnis wiederverwendbar ausgegeben wird.
- Möglich mit Templates
- Graph Patterns (kurz = eigenes Motif mit Where Klausel)
= Im Prinzip ein Motif, das durch Where Klausel erweitert wird, wo dann auf Knoten bezug genommen wird, die Teil unseres externen Interfaces sind. Über die Where Klausel können wir dann Bedingungen formulieren!
- Template
Bestandteile
- Body = Vorgabe wie der auszugebende Graph strukturell beschaffen ist
- Pattern = Pattern wird in neuer Ausgabe verarbeitet
Aus dem Template entsteht einer neuer Graph!
Was ist denn der Abhänigkeitsgraph und was sind die Knoten und die Kanten?
Male den Abhänigkeitsgraph für dieses Beispiel!
Zwei rekursive Definitionen, die voneinander abhängen (d. h. Definition von A hat B im Rumpf u. u.)
Erkennen mit Hilfe des Abhängigkeitsgraphen:
- Knoten – Relationen,
- Kante – direkte Abhängigkeit, [A->B, Prädikat A hängt von B ab]
- Zykel.
Wie können wir das Beispiel abändern damit es kein Problem mit der Negation gibt?
-Q(X) aus P(X) entfernen!
Ausführung siehe Bild
Erkläre die Schritte und Führe Stratifikation an folgendem Beispiel aus!
Voraussetzung: Ein Abhänigkeitsgraph ohne Zykel, die Negation enthalten!
Bei Zykeln mit Negation kommt der Algorithmus nicht zur Ausführung! ⇒ D.h. Programm nicht stratifizierbar und so nicht ausführbar
ALSO:
- Abhängigkeitsgraph aufstellen und auf Zykel prüfen/ ggf. Abbruch siehe oben!
- Alle Knoten die eine ausgehende Kante mit Negation haben weglassen
- Alle Knoten, die von den eben gelöschten Knoten abhängen ebenfalls entfernen
- Der Rest, der übrig bleibt ist unser Stratum 0, welches zuerst berechnet werden muss
- Stratum 1 sind dann die gelöschen
Lösung im Bild
Es gibt ja außer den Attributwerten von Knoten im Graph noch komplett andere Informationsbedürfnisse! Was meine ich damit? Was sind diese Maße?
Sogenannte Zentralitätsmaße können folgendes Messen:
- Shortest Path: „What is my closest connection to Barack Obama on Facebook?“
- „Welcher DBE Student hat die meisten Facebook-Freunde?“
- „Wie viele Freunde haben DBE Studenten auf Facebook im Durchschnitt?“
- „Welche Teilnehmer sind wichtig oder einflussreich?“
- „Welche Teilnehmer sind (in irgendeiner Weise) auffällig?“
- „Gibt es Gruppen ähnlicher Teilnehmer?“
Welche Zentralitätsmaße kenne Sie? Klassifizieren sie diese!
Lösung –> Bild
Was ist Betweennes Centrality? Formel angeben und erklären wann ein großer/kleiner Wert angenommen wird!
Informell: Wie oft ich (als Knoten) zwischen anderen Knoten bin
A und B besprechen was, aber C (ich) liegt zwischen beiden. Also bekommt C mit was besprochen wird “haha”. Aus sich von C ist das gut
Angenommen aber es gibt viele Pfade von A nach B und nur ein Pfad geht dabei über C. Naja dann ist die Betweenes Centrality von C “nicht so toll”
Gibt es nur einen Pfad, des dann auch über C führt ist das “das beste”
ALSO: Beschreibt nicht Erreichbarkeit, sondern eher Informiertheit!
Wann ist Betweenness Centrality maximal/minimal?
(*mP) Sternförmiger Graph –> Hub bzw Triad?!
Bei Proximity Prestige war es der Stern (Hub) und hier auch?! Was ist der Unterschied?
Naja wenn nur ein Pfad von vielen zwischen j und k über mich (i) führt ist BC minimal
Was ist Proximity Prestige? Beschreibe auch wann es minimal/maximal wird (anhand der Formel)
Maß aus der Kategorie Distanz-basiert:
Idee: Wie gut ein Knoten von den anderen Knoten im Graph erreichbar ist
Erreichbarkeit (zweierlei)
(1) Es gibt von vielen anderen Knoten des Graphen einen Pfad zu mir, besser als von wenigen Knoten ein Pfad zu mir
ALSO: Von wie vielen Knoten kann ich über einen Pfad zu mir kommen
(2) Wie lang sind diese Pfade? Kurze Pfade sind besser
- *Zähler:** Anzahl der anderen Knoten die mich erreichen durch alle Knoten im Graph (Relative Größe der Influence Domain)
- *Nenner:** Durchschnittliche kürzeste-Pfadlänge zu mir!
(*mP) maximal wenn –> hub-artiger Graph = ich in der Mitte und von allen anderen Knoten gibt es eine Kante zu mir
minimal wenn –> Ii (Influence Domain) = leer also 0, durch 0 teilen gibt 0 BZW. Ii klein und Pfade lang
Wann sind die Ergebnisse von Betweenness und Proximity Prestige unterschiedlich?
Es gibt beim Hub mit außenverbindungen weitere kürzeste wege, die nicht durch i führen (mittlerer Knoten)
Jedoch hat dieser Graph kein negativen Einfluss auf Proximity Prestige
Welche Vorteile hat es Zentralitätsmaße direkt in die Anfragesprache zu integrieren?
Also: erst Zentralitätsberechnung und dann darauf aufbauen weitere Berechungen
Oder aber anders herum!
Bsp –> LinkedIn (FrauenGraph)
ALSO: Welche Frauen nutzen hauptsächlich Männer um sich zu vernetzen vs. welche Frauen sind hauptsächlich auf ihr Frauennetzwerk gestützt?
Unterschied zu vorhin –> erst Graph A´ konstruiert (onlyFrauenGraph) und dann Zentralität berechnet
Unten –> (1) Berechnung (2) Zentralität
Oben umgekert –> (1) Zentralität (2) weitere Berechnung
–> Worauf will Böhm hinaus: Zentalitätsmaß sollte elementares Konstrukt bei der Anfrage sein und lässt sich an beliebiger Stelle einsetzen
–> Also aus 2 schritten einen machen!
Beobachtung: Standard-Operatoren der RA nicht ausreichend zum formulieren der behavior-based trust policies. Zusätzliche Operatoren erforderlich.
Berechnung direkt mit Zentralitäts Operator möglich –> Beispeil entwickelter CENTRALITY Operator
Warum ist in Datalog Negation grunsätzlich nicht erlaubt?
Es ist grundsätzlich nicht erlaubt, auf Grund der nicht-Monotonizität!
s kann zu Oszillation kommen!
Kommt es bei Negation in Datalog immer zu Oszillation?
Meine Antwort:
Es kommt darauf an
(1) Negatrion an min. 1 Stelle im Zykel: Programm nicht stratifizierbar! –> nicht ausführbares Programm, sofern Negation, oder Zykel nicht entfent wird
(2) Negation nicht im Zykel: Das Programm kann durch Stratifikation in eine ausfühbare Reihenfolge gebracht werden. Negation erst zum Schluss berechnen, wenn alle dafür notwendigen Relationen berechnet sind (Stratum0 (erst vollständig berechnen)/ Stratum 1 (Negation berechnen))
Also: Ein Stratum muss vor dem nächsten Stratum vollständig berechnet sein!
Haben wir in relationaler Algebra Negation
Nicht direkt, aber wir haben den Mengendifferenz Operator, der der Negation entpricht:
Datalog: P(X) :- R(X), -Q(X)
rel Algebra: R(X) - Q(X) bzw. R(X)\Q(X)
Vergleichen sie mal Datalog mit relationaler Algebra!
Relationale Algebra und Datalog sind unvergleichbar, d. h. Datalog hat Rekursion und relationale Algebra die Mengendifferenz. Man kann hier keine Aussage treffen was nun besser ist!
Was man sagen kann ist, dass die Schnittmenge von RA und Datalog:
ALSO: Datalog ohne Rekursion == relationale Algebra ohne diff-Operator.
gleich wäre!
Siehe Tonspur!
[mP] Was ist Zusammenhang zwischen Aggregation und Nicht-Monotonizität?
Aggregation kann zu Nicht-Monotonizität führen!
Das Überschreiben durch die Aggregation (Summe) ist das Problem, es verletzt die monotonizität Eigeschaft (Es wird was rausgenommen und ersetzt).
Geht so etwas auch in Datalog -> S(X) :- -R(X) ?
am besten anhand eines Zahlenbeispiels erklären
⇒ Hier würde man durch Negation alle Zahlen/Werte, die nicht in R sind definieren würde (Hinweis: Darum Negation grundsätzlich nicht in Datalog erlaubt)
⇒ X wäre ein Tupel mit einer NUll (0)
⇒ Dann würden unendlich viele Zahlen in S(X) erzeugt, die eben nicht 0 sind!
- Was ist die Monotonie-Eigenschaft?
- [grüne Frage] Welcher Operator der relationalen Algebra ist nicht monoton?
- Ist Datalog monoton?
- monoton := Vergrößerung des Inputs (einer Anfrage/eines Operators) verkleinert nicht den Output.
- Mengendifferenz
- Ja, Datalog ist monoton. (Keine Negation in Rümpfen von Regeln erlaubt.)
Beispiele siehe Tonspur