Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

1 Teil I Datenmodelle Kapitel 7: Semistrukturierte Modelle.

Ähnliche Präsentationen


Präsentation zum Thema: "1 Teil I Datenmodelle Kapitel 7: Semistrukturierte Modelle."—  Präsentation transkript:

1 1 Teil I Datenmodelle Kapitel 7: Semistrukturierte Modelle

2 2 Ursprung: Web-Daten unterscheiden sich drastisch von den bisher gewohnten Daten in Datenbanken: selbst-beschreibend heterogen, tief verschachtelt, unregelmäßig gemischt Dokument- und faktische Daten Heutige Bedeutung: Diese Eigenschaften definieren ein universelles Datenaustauschformat Dafür sollte sich wieder ein Datenmodell angeben lassen Wunsch nach Datenbankunterstützung: Vermeiden von Datentransformationen durch den Benutzer. Problem: Datenmodelle von Dokumentexperten, nicht Datenbankexperten entworfen. Motivation

3 3 Literatur Abiteboul, Buneman, Suciu: Data on the Web: From Relational to Semistructured to XML. Morgan Kaufmann Kazakos, W.; Schmidt, A.; Tomczyk, P.: Datenbanken und XML – Konzepte, Anwendungen, Systeme. Springer Klettke, M.; Mayer, H.: XML & Datenbanken. dpunkt.verlag Rahm, E.; Vossen, G. (Hrsg.): Web & Datenbanken – Konzepte, Architekturen, Anwendungen. dpunkt.verlag. 2003

4 4 Kapitel 7.1: Der Beginn - OEM

5 5 Polymorphe Typen Atomare Typen string Polymorphe Typen Obj ::= sel:Typ Set ::= {Obj} Typ Atomarer Typ oder Obj. Objekt: Geordnete Sammlung als zusammengehörig betrachteter atomarer oder zusammengesetzter Datenelemente. Die Zahl der Komponenten ist offen, jede wird nicht-eindeutig durch einen Selektor (Attribut) identifiziert. Set: Menge von Objekten. Lässt sich auch über Objekt nachbilden, indem alle Mengenelemente das selbe Attribut erhalten.

6 6 Bewertung Strukturelle Mächtigkeit gering Beschränkte aber mächtige strukturelle Orthogonalität SetObjAtomarer Typ

7 7 &o1 &o12&o24&o29 &o43 &o96 &o243 &o206 &o25 Serge Abiteboul 1997 Victor Vianu paper book paper references author title year http author title publisher author title pages firstname lastname firstnamelastnamefirst last bib Veranschaulichung von Objekten als gerichtete Graphen complex object atomic object Object Exchange Model (OEM) object identifier

8 8 &o1 &o12&o24&o29 &o43 &o96 &o243 &o206 &o25 Serge Abiteboul 1997 Victor Vianu paper book paper references author title year http author title publisher author title pages firstname lastname firstnamelastnamefirst last Bib Object Exchange Model (OEM) bib: &o1 { paper: &o12 { … }, book: &o24 { … }, paper: &o29 { author: &o52 Abiteboul, author: &o96 { firstname: &o243 Victor, lastname: &o206 Vianu}, title: &o93 Regular path queries with constraints, references: &o12, references: &o24, pages: &o25 { first: &o64 122, last: &o92 133} } bib: &o1 { paper: &o12 { … }, book: &o24 { … }, paper: &o29 { author: &o52 Abiteboul, author: &o96 { firstname: &o243 Victor, lastname: &o206 Vianu}, title: &o93 Regular path queries with constraints, references: &o12, references: &o24, pages: &o25 { first: &o64 122, last: &o92 133} }

9 9 bib: &o1 { paper: &o12 { … }, book: &o24 { … }, paper: &o29 { author: &o52 Abiteboul, author: &o96 { firstname: &o243 Victor, lastname: &o206 Vianu}, title: &o93 Regular path queries with constraints, references: &o12, references: &o24, pages: &o25 { first: &o64 122, last: &o92 133} } Object Exchange Model (OEM) Textuelle Darstellung { paper: { author: Abiteboul, author: { firstname: Victor, lastname: Vianu}, title: Regular path queries …, pages: { first: 122, last: 133 } } { paper: { author: Abiteboul, author: { firstname: Victor, lastname: Vianu}, title: Regular path queries …, pages: { first: 122, last: 133 } } OEM ohne Ordnung!

10 10 { row: { name: John, phone: 3634 }, row: { name: Sue, phone: 6343 }, row: { name: Dick, phone: 6363 } } row name phone John3634SueDick Object Exchange Model (OEM) Vergleich mit relationalen Daten

11 11 Datenbasisschema Wegen der Freizügigkeit des Modells: Keine a-priori Vereinbarung eines Schemas Hingegen: a-posteriori Extraktion eines Schemas: Gibt es gewisse Regelmäßigkeiten in den Daten?

12 12 Kapitel 7.2: XML

13 13 XML eXtended Markup Language XML SGML Web-Standard (W3C) zum Datenaustausch: Ein- und Ausgabedaten von Anwendungen können mittels XML beschrieben werden Industrie muss sich dann noch pro Anwendungsbereich auf standardisierte Beschreibung einigen Datenbank-Sichtweise: Als Meta-Grammatik eignet sich XML als Datenmodell für semistrukturierte Daten

14 14 XML-Syntax (1) – XML-Element XML-Element (engl. element): Obj ::= tagged-struct( attribute|Obj, string) Beschreibung eines Objekts, die durch passende Markierungen (tags) wie und geklammert ist Inhalt eines Elements: Freitext, attributierte Eigenschaften und/oder weitere Elemente (Unterelemente) Elemente können beliebig geschachtelt sein Leere Elemente: kurz: Serge Abiteboul address may be wrong! Serge Abiteboul address may be wrong! Element author Startmarkierung Endmarkierung Unterelemente Freitext

15 15 XML-Syntax (2) – XML-Attribut XML-Attribut (engl. attribute): Name-Zeichenkettenwert-Paar Assoziiert mit einem Element Alternative Möglichkeit, Daten zu beschreiben Attribut Weitere denkbare Beschreibung derselben Daten: Serge Abiteboul Serge Abiteboul

16 16 &o1 &o12&o24&o29 SergeAbiteboul Victor Vianu paper book paper author year author pages firstnamelastname firstnamelastnamefirstlast bib Veranschaulichung von Objekten als gerichtete Graphen XML-Graph Objektidentifikator als Attribut im Knoten vermerkt Knoten sind markiert Text im Knoten vermerkt

17 17 XML-Graph &o1 &o12&o24&o29 SergeAbiteboul Victor Vianu paper book paper author year author pages firstnamelastname firstnamelastnamefirstlast bib Foundations of Databases Serge Abiteboul 1997 Addison Wesley... Foundations of Databases Serge Abiteboul 1997 Addison Wesley...

18 18 XML vs HTML XML: freie Bezeichner zur Beschreibung von anwendungsspezifischer Semantik (Meta-Grammatik) HTML: feste Bezeichner (tag), hauptsächlich für die Darstellung von Text (Grammatik) HTML XML SGML bib Foundations of Databases Serge Abiteboul Addison Wesley, bib Foundations of Databases Serge Abiteboul Addison Wesley, HTML Foundations of Databases Serge Abiteboul 1997 Addison Wesley... Foundations of Databases Serge Abiteboul 1997 Addison Wesley... XML Präsentationsangabe Inhaltsangabe

19 19 XML-Dokument XML-Dokument: Ein Text-Dokument, das XML-Beschreibungen enthält Wohlgeformtes XML-Dokument: Alle Elemente sind korrekt mit Start- und End-Tags geklammert Dokument enthält genau ein Wurzelelement Wohlgeformte Dokumente dürfen aber immer noch unstrukturierten Freitext enthalten Gültiges (engl. valid) XML-Dokument: Wohlgeformtes XML-Dokument, das zu einem assoziierten Schema uneingeschränkt konform ist Mittels eines Schemas kann man also die Gültigkeit eines XML-Dokumentes überprüfen Schemas sind somit eine optionale Ergänzung

20 20 Schemata in XML DTD – Document Type Definition (Dokumentsicht): Einfache Grammatik für ein XML-Dokument Deklaration von Elementen, Attributen, u.a. Beschränkt die beliebige Verschachtelung von Elementen und Attributen Ist Teil des XML-Standards Erbe von SGML XML-Schema (Datenbasiseinfluss): Komplexere Datendefinitionssprache: Viele standardisierte Basistypen, z.B. float, double, decimal, boolean Typen und typisierte Objektreferenzen Klassenhierarchien / Vererbung Konsistenzbedingungen Ist inzwischen Teil des XML-Standards Abwärtskompatibel zu DTDs

21 21 XML-Schemata I: DTD Eine DTD definiert eine kontextfreie Grammatik für ein XML- Dokument Zuvor beliebige Elemente und Attribute werden auf eine definierte Auswahl und Struktur eingeschränkt Foundations of Databases Serge Abiteboul 1997 Addison Wesley... Foundations of Databases Serge Abiteboul 1997 Addison Wesley... XML... ]>... ]> DTD

22 22 DTD – Deklaration von Elementen Beschreibt die Einschränkungen des Inhalts eines Elements Syntax: Einziger atomarer Typ: #PCDATA (Parsed Character DATA) (a,b,c): Liste von Unterelementen (a|b|c): Alternativen Kardinalitäten: *keinmal oder beliebig oft +einmal oder beliebig oft ?kein- oder einmal (optional) (ohne Angabe): genau einmal EMPTY: Erzwingen von leerem Element... ]>... ]> DTD

23 23 DTD – Deklaration von Elementen (2) Beschreibt die Einschränkungen des Inhalts eines Elements Syntax: Einziger atomarer Typ: #PCDATA (Parsed Character DATA) (a,b,c): Liste von Unterelementen (a|b|c): Alternativen Kardinalitäten: *keinmal oder beliebig oft +einmal oder beliebig oft ?kein- oder einmal (optional) (ohne Angabe): genau einmal EMPTY : Erzwingen von leerem Element Einleitung und Festlegung des Wurzelelements bib... ]> DTD

24 24 DTD – Deklaration von Elementen (3) Beschreibt die Einschränkungen des Inhalts eines Elements Syntax: Einziger atomarer Typ: #PCDATA (Parsed Character DATA) (a,b,c): Liste von Unterelementen (a|b|c): Alternativen Kardinalitäten: *keinmal oder beliebig oft +einmal oder beliebig oft ?kein- oder einmal (optional) (ohne Angabe): genau einmal EMPTY : Erzwingen von leerem Element bib kann beliebig viele Elemente vom Typ paper enthalten... ]> DTD

25 25 DTD – Deklaration von Elementen (4) Beschreibt die Einschränkungen des Inhalts eines Elements Syntax: Einziger atomarer Typ: #PCDATA (Parsed Character DATA) (a,b,c): Liste von Unterelementen (a|b|c): Alternativen Kardinalitäten: *keinmal oder beliebig oft +einmal oder beliebig oft ?kein- oder einmal (optional) (ohne Angabe): genau einmal EMPTY : Erzwingen von leerem Element paper besteht aus mindestens einem author genau einem year und einem optionalen publisher in genau dieser Reihenfolge!... ]> DTD

26 26 DTD – Deklaration von Elementen (5) Beschreibt die Einschränkungen des Inhalts eines Elements Syntax: Einziger atomarer Typ: #PCDATA (Parsed Character DATA) (a,b,c): Liste von Unterelementen (a|b|c): Alternativen Kardinalitäten: *keinmal oder beliebig oft +einmal oder beliebig oft ?kein- oder einmal (optional) (ohne Angabe): genau einmal EMPTY : Erzwingen von leerem Element firstname ist vom Typ Zeichenkette... ]> DTD

27 27 DTD – Deklaration von Attributen Name-Zeichenkettenwert-Paar Assoziiert mit einem Element Syntax: Typ: CDATA Zeichenkette ID OID IDREF Referenz IDREFSMenge von Referenzen Zusatz: REQUIREDzwingend IMPLIED optional (Initialwert)... ]> DTD

28 28 DTD – Deklaration von Attributen (2) Name-Zeichenkettenwert-Paar Assoziiert mit einem Element Syntax: Typ: CDATA Zeichenkette ID OID IDREF Referenz IDREFSMenge von Referenzen Zusatz: REQUIREDzwingend IMPLIED optional (Initialwert)... ]> DTD paper besitzt ein Attribut id, eine OID, die zwingend mit einem eindeutigen Wert belegt werden muss

29 29 DTD – Deklaration von Attributen (3) Name-Zeichenkettenwert-Paar Assoziiert mit einem Element Syntax: Typ: CDATA Zeichenkette IDOID IDREF Referenzen IDREFSMenge von Referenzen Zusatz: REQUIREDzwingend IMPLIED optional (Initialwert)... ]> DTD Ein author hat ein Attribut age, mit dem ihm eine Zeichenkette mit dem Wert für sein Alter zugewiesen werden kann (aber nicht muss!)

30 30 DTD – OIDs und Referenzen DTDs erlauben die Deklaration von OIDs, Referenzen und Referenzmengen als Attribute Beispiel: Jane Doe John Doe Mary Smith Jack Smith Jane Doe John Doe Mary Smith Jack Smith XML ]> ]> DTD

31 31 Bewertung von DTDs DTDs definieren kontextfreie Grammatiken Rekursive Definitionen sind möglich ]> ]> DTD DTDs weisen bei der Definition eines Schemas jedoch einige Schwächen auf: Ungewollte Festlegung der Reihenfolge: Workaround: Kann teilweise zu vage werden: Referenzen können nicht eingeschränkt (typisiert) werden Alle Elementnamen sind global in einem Namensraum

32 32 DTD XML-Schema XML-Schemata II: XML-Schema Echter Schemamechanismus mit vielen Erweiterungen über DTDs hinaus Benutzt selbst wieder XML-Syntax zur Schemadefinition... ]>

33 33 XML-Schema: Elemente Syntax: Optionale Zusatzattribute: Typ type = Typatomarer/einfacher/komplexer Typname Kardinalitäten (Voreinstellung: [1,1]): minOccurs = xx { 0, 1, n } maxOccurs = yy { 1, n, unbounded } Wertvoreinstellungen (schließen sich gegenseitig aus!): default = vveränderliche Vorgabe fixed = uunveränderliche Vorgabe

34 34 XML-Schema: Attribute Syntax: Optionale Zusatzattribute: Typ: type = Typ Existenz: use = optionalKardinalität [0,1] use = requiredKardinalität [1,1] Voreinstellwerte: use = default value = vveränderliche Vorgabe use = fixed value = uunveränderliche Vorgabe

35 35 XML-Schemata: Beispiele XML-Schema Foundations of Databases Serge Abiteboul 1997 Addison Wesley... Weitere Beispiele Beispiel für Elemente Beispiel für Attribute

36 36 XML-Schema: Typen In XML-Schema wird zwischen atomaren, einfachen und komplexen Typen unterschieden Atomare Typen: Eingebaute Elementartypen wie int oder string Einfache Typen: Haben weder eingebettete Elemente noch Attribute In der Regel von atomaren Typen abgeleitet Komplexe Typen: Dürfen Elemente und Attribute besitzen Zusätzlich kann man noch folgende Unterscheidung treffen: Benannte Typdefinitionen beschreiben wiederverwendbare Typstruktur Unbenannte Typdefinitionen legen nur für Dokumente des Schemas fest, welche Elemente wie im Dokument auftauchen dürfen

37 37 XML-Schema: Atomare Typen XML-Schema unterstützt eine große Menge eingebauter Basistypen (>40): Numerisch: byte, short, int, long, float, double, decimal, binary, … Zeitangaben: time, date, month, year, timeDuration, timePeriod, … Sonstige: string, boolean, uriReference, ID, … Beispiele:

38 38 XML-Schema: Einfache Typen Zusätzlich können von bestehenden Typen noch weitere, sog. einfache Typen, abgeleitet werden: Typdefinition: Verwendung in der Dokumentdefinition: In ähnlicher Weise können Listen definiert werden: Typdefinition: (Name eines Autors als mit Leerzeichen getrennte Liste von Zeichenketten) Verwendung in der Dokumentdefiniton:

39 39 XML-Schema: Komplexe Typen Komplexe Typen dürfen im Gegensatz zu einfachen Typen eingebettete Elemente besitzen Beispiel: Typdefinition: Gruppierungs-Bezeichner: … Feste Reihenfolge (a,b) … Beliebige Reihenfolge (a,b oder b,a) … Auswahl (entweder a oder b)

40 40 Typhierarchien (1) Hierarchische Abhängigkeit zwischen zwei Typen durch Erweiterung (engl. extension) oder Restriktion (engl. restriction) einer bestehenden Typdefinition Alle Typen bilden eine Typhierarchie Baum mit Wurzel: Typ Zeichenkette Keine Mehrfachvererbung Typen sind entlang der Typhierarchie abwärtskompatibel: Für Typinstanzen gilt das Substituierbarkeitsprinzip Elemente eines bestimmten Typs akzeptieren auch Daten einer Erweiterung oder Restriktion dieses Typs

41 41 Typhierarchien (2) Erweiterung Strukturergänzung: Hinzufügen weiterer Elemente oder Attribute Restriktion Struktur bleibt gleich: es dürfen keine Elemente oder Attribute weggelassen werden Verschärfung von Angaben, z.B. bisher nicht angebene type-, default- oder fixed-Attribute Einschränkung der Kardinalitäten minOccurs, maxOccurs

42 42 Typhierarchien: Erweiterung von Typen (1) Beispiel: Erweitert den zuvor definierten Typ authorType um ein optionales Element ein optionales Attribut homepage

43 43 Typhierarchien: Erweiterung von Typen (2) Die Erweiterungen werden bei der Verarbeitung an die bestehenden Definitionen angehängt:

44 44 Typhierarchien: Restriktion von Typen Beispiel (Komplexer Typ): Vorher: maxOccurs=unbounded Vorher: use=optional

45 45 Polymorphe Konsistenzbedingungen (1) Elemente und Attribute können zusätzlich mit Konsistenzbedingungen belegt werden Eindeutigkeit (Schlüsselkandidat): Die Kombinationen von Vor- und Nachnamen bei den Autoren sind immer eindeutig Mittels field werden die entsprechenden Elemente oder Attribute identifiziert Mittels xpath (siehe später!) wird der genaue Pfadausdruck angegeben, unter dem das entsprechende field innerhalb der Dokumenthierarchie gefunden werden kann

46 46 Polymorphe Konsistenzbedingungen (2) Schlüsselbedingung: Das Attribut id in paper dient als Schlüssel. Schlüssel sind eindeutig und können referenziert werden. Fremdschlüsselbedingung: Ergänzend zum bisherigen Schema: references ist eine Liste von Papieren, die vom Papier aus referenziert werden, d.h. in dessen Literaturverzeichnis auftauchen. Beachte: Mit refer bezieht man sich auf das name-Attribut einer Schlüsselbedingung, nicht auf das Schlüsselfeld! Die Werte in references müssen also immer unter den Schlüsseln zu den Papieren zu finden sein.

47 47 Beispiel-Schema

48 48 Beispiel-Schema (2)

49 49 Beispiel-Schema (3)

50 50 Beispiel-Schema (4)

51 51 Bewertung von XML-Schema Syntax und Ausdruckskraft von XML-Schema sind sehr umfangreich: Mit XML-Schema können Datenbasis-Schemata natürlicher als mit DTDs spezifiziert werden. Es kann viel mehr Semantik in einem Schema eingefangen werden als mit DTDs. Einzige Schwäche: wenig Vielfalt bei Konsistenzbedingungen. XML-Schema wird jedoch noch nicht weitläufig unterstützt, während DTDs bereits zum Kernstandard von XML gehören. Mehr zu XML-Schema im Web: I: Strukturen II: Datentypen

52 52 Kapitel 7.3: Anfragesprachen

53 53 Polymorphe Operatoren in XML Xpath (2.0) Hierarchischer Adressierungs- und Navigationsformalismus für XML-Dokumente Deskriptive Pfadausdrücke im XML-Dokumentbaum Erlaubt einfache bis mittelkomplexe Anfragen In abgespeckter Form auch in anderen XML-Standards (vgl. key in XML-Schema) XQuery (1.0) Freie deskriptive Anfragen über XML-Dokumente Vorbild: SQL und OQL Baut auf XPath zur Adressierung/Navigation auf Beides sind offene W3C-Standards und erfreuen sich reger Nutzung Beide Standards sind aufeinander abgestimmt

54 54 XPath: Pfadausdrücke (1) Pfadausdruck ist eine Folge von Schritten. Ausgangspunkt ist ein Kontextknoten. Schritte definieren Pfad(e) durch XML-Dokumentbaum: In jedem Schritt werden Folgeknoten ausgewählt, die einen Teilbaum aufspannen. Endergebnis (= Pfadenden) ist eine Folge von Knoten oder einfachen Werten

55 55 XPath: Pfadausdrücke (2) Grobstruktur eines Xpath-Pfadausdrucks: / Schritt_1 / Schritt_2 /... / Schritt_n Jeder Schritt ist von der Bauart: Achse:: Knotentest [Auswahlbedingung] Ausgehend vom Kontextknoten wird also in jedem Schritt die Achse festgelegt, nach der wir von diesem Knoten aus weiter navigieren (z.B. zu einem Kind- oder Elternelement), ein Knotentest vereinbart, der den Knotentyp einschränkt (z.B. Elemente eines bestimmten Namens), und optional eine Auswahlbedingung angegeben, die die Auswahl an Knoten weiter einschränkt. Die Ergebnisknoten bilden dann den Kontext für nächsten Schritt.

56 56 Xpath: Achsen (1) Kontextknoten syntaktisch wie Kinder behandelt

57 57 Xpath: Achsen (2) Ausgangspunkt: der über Pfad erreichte Kontextknoten

58 58 Xpath: Achsen (3) Achse = Kontextknoten selbst: Pfad/self ::...

59 59 Xpath: Achsen (4) Alle Attribute des Kontextknotens: Pfad/attribute ::...

60 60 Xpath: Achsen (5) Alle Kindknoten: Pfad/child ::...

61 61 Xpath: Achsen (6) Alle Nachfahren: Pfad/descendant ::... Weitere Achse: descendant-or-self = descendant self

62 62 Xpath: Achsen (7) Der Elternknoten: Pfad/parent ::...

63 63 Xpath: Achsen (8) Alle Vorfahren: Pfad/ancestor ::...

64 64 Xpath: Achsen (9) Alle nachfolgenden Geschwisterknoten: Pfad/following-sibling ::...

65 65 Xpath: Achsen (10) Alle vorangehenden Geschwisterknoten: Pfad/preceding-sibling ::...

66 66 Xpath: Achsen (11) Alle nachfolgenden Knoten: Pfad/following ::...

67 67 Xpath: Achsen (12) Alle vorangehenden Knoten: Pfad/preceding ::...

68 68 XPath: Knotentests Ausgangspunkt: Durch die Achse bestimmte Knotenmenge außer Text!

69 69 Abkürzungen descendant-or-self::node() Alle Kinder, die Elemente sind child::node() Alle Nachfolgeelemente und der Knoten selbst Am Anfang eines Pfades: Alle Elemente samt Wurzelknoten / = parent::* Fehlt node() wird text() unterstellt

70 70 XPath: Auswahlbedingungen Erlaubt komplexere Einschränkungen Liefert nur Unterknoten, für die Auswahlbedingung wahr ist Mögliche Ausdrücke Pfadausdruck e (e = true, wenn e nicht-leere Ergebnismenge adressiert) e1 op e2 mit op z.B. =, !=,, = f(e1), z.B: position(): Aktuelle Position in der Liste von Unterelementen ( [n] ist Kurzform für [position() = n] ) last(): Anzahl aller Unterknoten des aktuellen Knotens count(Pfadausdruck): Anzahl der Unterknoten, für die der Pfadausdruck wahr ist id(Pfadausdruck): Liefert alle Elemente, deren id-Attribute einem der Ergebniswerte des Pfadausdrucks entsprechen. So ist eine Dereferenzierung von IDREF-ID-Paaren möglich.

71 71 XPath: Beispiele (1) bib id=&o29 paper id=&o24 book id=&o12 paper Founda- tions of Data- bases title age=51 author 1997 year Serge firstname Abiteboul lastname age=40 authorpages Victor firstname Vianu lastname 122 first 133 last Nachname des Autors des zweiten Papiers: / child:: bib / child:: paper [position()=2] / child:: author / child:: lastname oder kurz: / bib / paper [2] / author / lastname

72 72 XPath: Beispiele (2) Knotentest schränkt Auswahl unterhalb eines Knotens weiter ein Nachnamen aller Autoren von Papieren / bib / paper / author / lastname Nachnamen aller Autoren / bib / * / author / lastname Impliziert: / bib / paper / author / lastname / text() Alle Unterelemente von author ohne etwaig eingefügte Zusatztexte zum Autor / bib / paper / author / node() bib paper bookpaper title author 1997 year Serge firstname Abiteboul lastname authorpages Victor firstname Vianu lastname 122 first 133 last

73 73 XPath: Beispiele (3) Autor des Papiers mit Titel Foundations of Databases paper [title = Foundations of Databases] / author Autoren-Nachname des Papiers mit id o12 paper = o12] / author / lastname Alle Papiere und Bücher, die später als 1995 erschienen sind / bib / * [year > 1995] Alle Papiere mit mehr als einem Autor paper [count(author) > 1] Das zweite Papier in unserer Bibliographie / bib / paper [position() = 2] oder / bib / paper [2] Alle Autoren / bib // author Alle Koautoren von Serge Abiteboul /bib//author[lastname=Abiteboul]/parent::node()/author[lastname<>Abiteboul] bib paper bookpaper title author 1997 year Serge firstname Abiteboul lastname authorpages Victor firstname Vianu lastname 122 first 133 last

74 74 XQuery Aktuell: Version 1.0 Baut auf XPath 2.0 auf Anfragen in Anlehnung an SQL/OQL: Folge von Klauseln: spezifiziert deskriptiv, wie Endergebnis der Anfrage aussehen soll XQuery-Implementierung kann Weg, wie man zum Endergebnis gelangt, selbst bestimmen (Optimierung) Benutzerdefinierte Funktionen Erweitern der Anfrageklauseln zur Turing-vollständigen Programmiersprache Ermöglichen von rekursiven Anfragen Zwei mögliche Repräsentationen Leicht lesbare: FLWR-Ausdrücke (im Folgenden vorgestellt) XML-konforme Syntax: XQueryX

75 75 XQuery: FLWR-Ausdrücke (1) Sukzessives Binden jeweils einer Variablen an das Ergebnis eines Pfadausdrucks Einmaliges Binden jeweils einer Variablen an das Ergebnis eines Pfadausdrucks (ggf. Menge). Bedingungen an die gebundenen Variablen (Selektion). An die Variablen gebundene Werte, die die Bedingung erfüllen, eingebettet in die gewünschte Form eines XML-Dokuments. Grundmuster FLWR (gesprochen flower) forBindungsliste letBindungsliste whereBedingung returnErgebnis

76 76 XQuery: FLWR-Audrücke (2) Syntax im Detail: for var 1 in ausdruck 1,..., var n in ausdruck n let var n+1 := ausdruck n+1,..., var n+m := ausdruck n+m where bedingungs-ausdruck order by ausdruck ascending/descending return xml-ausdruck Sonderfälle: for/let kann mehrfach auftreten Variablenbindungen können dann aufeinander aufbauen for kann entfallen let kann entfallen where kann entfallen order by kann entfallen Geschachtelte Anfragen: überall wo Ausdruck erwartet wird

77 77 bib book Data on the Web titleauthor Serge firstname Abiteboul lastname Peter firstname Bunemann lastname XQuery: Beispiel (1) authorpublisher Morgan Kaufmann name... Ergebnis Alle Bücher, die im Morgan-Kaufmann-Verlag veröffentlicht wurden. for $b in /bib/book where $b/publisher/name = Morgan Kaufmann return

78 78 bib book Data on the Web titleauthor Serge firstname Abiteboul lastname Peter firstname Bunemann lastname XQuery: Beispiel (2) authorpublisher Morgan- Kaufmann name... Abiteboul Buneman Suciu Gray Reuter... Ergebnis Alle Bücher, die im Morgan-Kaufmann-Verlag veröffentlicht wurden, inklusive ihrer Autoren. for $b in /bib/book let $a := $b/author where $b/publisher/name = Morgan Kaufmann return {$a/lastname}

79 79 bib book Data on the Web titleauthor Serge firstname Abiteboul lastname Peter firstname Bunemann lastname XQuery: Beispiel (3a) authorpublisher Morgan- Kaufmann name... Buneman Data on the Web Abiteboul Data on the Web... Ergebnis Alle Autoren-Bücher-Paare aus dem Morgan- Kaufmann-Verlag. (Join!) for $b in /bib/book, $a in /bib//author where $b/publisher/name = Morgan Kaufmann and $b/author = $a return {$a/lastname} {$b/title} Einfacher Join

80 80 bib book Data on the Web titleauthor Serge firstname Abiteboul lastname Peter firstname Bunemann lastname XQuery: Beispiel (3b) authorpublisher Morgan- Kaufmann name... Buneman Data on the Web Abiteboul Data on the Web... Ergebnis Alle Autoren-Bücher-Paare aus dem Morgan- Kaufmann-Verlag. (Join!) for $b in /bib/book, $a in $b/author where $b/publisher/name = Morgan Kaufmann return {$a/lastname} {$b/title} Korrelierter Join

81 81 bib book Data on the Web titleauthor Serge firstname Abiteboul lastname Peter firstname Bunemann lastname XQuery: Beispiel (4) authorpublisher Morgan- Kaufmann name Alle Autoren inklusive aller ihrer Bücher und Sortierung nach Autorname. for $a in distinct-values(/bib//author) order by $a return {$a/lastname} {for $b in /bib/book[author=$a] return }... Abiteboul... Ergebnis Verschachtelte Anfrage

82 82 bib book Data on the Web titleauthor Serge firstname Abiteboul lastname Peter firstname Bunemann lastname XQuery: Beispiel (5) authorpublisher Morgan- Kaufmann name Alle Bücher mit der Anzahl ihrer Autoren, sortiert nach der Anzahl der Autoren. for $b in /bib/book/ let $a := $b/author order by count($a) descending return {count($a)} Aggregations- Funktion Ergebnis

83 83 bib book Data on the Web titleauthor Serge firstname Abiteboul lastname Peter firstname Bunemann lastname XQuery: Funktionen (Beispiel) [1] authorpublisher Morgan- Kaufmann name Die Funktion soll zu einem Autor alle Bücher oder sonstigen Schriftwerke finden, die dieser jemals verfasst hat. Sortiert werden soll zuerst nach dem Jahr (absteigend), danach nach dem Titel (alphabethisch = aufsteigend). define function werkliste($autor as element author) as node* { for $x in /bib/* where some $e in $x/author satisfies $e = $autor order by $x/year descending, $x/title return {$x} { for $a in /bib//author return {$a/lastname} {werkliste($a)} Funktionsdeklaration i.d.R. im Prolog eines XQuery- Blockes Funktionsaufruf beliebig innerhalb einer XQuery-Definition

84 84 bib book Data on the Web titleauthor Serge firstname Abiteboul lastname Peter firstname Bunemann lastname XQuery: Funktionen (Beispiel) [2] authorpublisher Morgan- Kaufmann name define function werkliste($autor as element author) as node* { for $x in /bib/* where some $e in $x/author satisfies $e = $autor order by $x/year descending, $x/title return {$x} { Funktionsname (werkliste) Parametername ($autor) Parametertyp (author-Element) Rückgabetyp (immer Liste!, hier: Liste beliebiger Knoten) Kardinalität (* = 0..) (1) Binde x an alle Kind- Knoten von bib (2) Schränke Auswahl ein auf: {x | e {x/author}: e=$autor} (3) Sortiere nach (2) gefilterte x absteigend 1. nach Jahr 2. nach Titel (4) Gib die Liste der gefilterten x aus. Die Klammern {…} kennzeichnen einen sog. berechneten Konstruktor. So werden nicht die Originalknoten sondern vollständige, rekursive Kopien (sog. Deep-Copies) mit neuen Knoten- Identitäten zurückgeliefert! In den meisten Fällen ist der Unterschied zu einem direkten Konstruktor (ohne Klammern) aber vernachlässigbar (so auch hier!)

85 85 bib book Data on the Web titleauthor Serge firstname Abiteboul lastname Peter firstname Bunemann lastname XQuery: Funktionen (Beispiel) [3] authorpublisher Morgan- Kaufmann name Die Funktion soll zu einem Autor alle Bücher oder sonstigen Schriftwerke finden, die dieser jemals verfasst hat. Sortiert werden soll zuerst nach dem Jahr (absteigend), danach nach dem Titel (alphabethisch = aufsteigend). define function werkliste($autor as element author) as node* { for $x in /bib/* where some $e in $x/author satisfies $e = $autor order by $x/year descending, $x/title return {$x} { for $a in /bib//author return {$a/lastname} {werkliste($a)}... Abiteboul Data on the Web A Logical View of Structured Files Ergebnis Annahme: es existieren neben book-Knoten auch z.B. paper- Knoten unterhalb von bib


Herunterladen ppt "1 Teil I Datenmodelle Kapitel 7: Semistrukturierte Modelle."

Ähnliche Präsentationen


Google-Anzeigen