220 likes | 335 Views
XQuery-Anfragen. Markus Mauch. Spezifikations- und Selektionsmethoden für Daten und Dienste. Motivation. Extensible Markup Language (XML) Meta-Auszeichnungssprache Darstellung, Austausch und Weiterverarbeitung von semi-strukturierten Daten Selbstbeschreibend
E N D
XQuery-Anfragen Markus Mauch Spezifikations- und Selektionsmethoden für Daten und Dienste
Motivation • Extensible Markup Language (XML) • Meta-Auszeichnungssprache • Darstellung, Austausch und Weiterverarbeitung von semi-strukturierten Daten • Selbstbeschreibend • Validierung gegen ein Schema möglich XML als Datenmodell für semi-strukturierte Daten • Problematik • Wie kann man Daten aus XML-Dokumenten extrahieren? • Gesucht: Mechanismus zur Beschreibung von Anfragen auf XML-Datenbanken Spezifikations- uns Selektionsmethoden für Daten und Dienste - XQuery-Anfragen - Markus Mauch
XML Query Language (XQuery) • XML Query Working Group (W3C) • Ziel: Anfragesprache für semi-strukturierte Daten • Erweiterung einer existierenden Anfragesprache? • Unterschiede zwischen semi-strukturiert und relational • Heterogenität vs. Homogenität • Hierarchische Daten • Metadaten • Implizite Ordnung Entwurf der Anfragesprache XQuery Spezifikations- uns Selektionsmethoden für Daten und Dienste - XQuery-Anfragen - Markus Mauch
XML Query Language (XQuery) • Anforderungen an XQuery • Zusammensetzbarkeit • Abgeschlossenheit • Vollständigkeit • Korrektheit • Eigenschaften • Funktionale, stark typisierte Anfragesprache • Datentypen aus XML Schema • Ausdrücke • Operatoren • Kontrollstrukturen • Funktionen Spezifikations- uns Selektionsmethoden für Daten und Dienste - XQuery-Anfragen - Markus Mauch
Gliederung • Datenmodell und Typsystem • Grundlagen • Atomare Werte und Knoten • XQuery-Ausdrücke • Einfache Ausdrücke • Pfadausdrücke • FLWR-Ausdrücke • Funktionen • Erweiterte Konzepte • XQuery-Core • Typechecking-Problem • Schluss • Zusammenfassung • Bewertung und Ausblick Spezifikations- uns Selektionsmethoden für Daten und Dienste - XQuery-Anfragen - Markus Mauch
1. Datenmodell und Typsystem Spezifikations- uns Selektionsmethoden für Daten und Dienste - XQuery-Anfragen - Markus Mauch
Struktur des XQuery-Datenmodells • Datenmodell • Beschreibung der inneren Struktur und der Beziehungen von Datenobjekten untereinander • Welche Informationen sind relevant? • Anfrage bildet eine Instanz des Datenmodells auf eine andere ab • Beispiel: Document Object Model (DOM) • XQuery-Datenmodell • Instanz repräsentiert ein XML-Dokument oder -Fragment • Grundlegendes Konstrukt: Folge von Items • Item • Atomare Werte oder Knoten • Einelementige Folge Spezifikations- uns Selektionsmethoden für Daten und Dienste - XQuery-Anfragen - Markus Mauch
Datentypen • Atomare Werte • Instanzen eines einfachen Typs • XQuery besitzt eigene und von XML Schema vererbte Datentypen • Beispiele • xs:integer • xs:string • xs:date • xs:boolean • xdt:untypedAtomic Spezifikations- uns Selektionsmethoden für Daten und Dienste - XQuery-Anfragen - Markus Mauch
Datentypen • Knoten • XML-Dokument:Baum bestehend aus Knoten • Knotentypen • element • attribute • text • document-node • comment • processing-instruction • namespace • Elementknoten • Einfacher und komplexer Inhalt • Textueller Wert und Typ <?xml version="1.0"?> <greetings> <!-- Welcome Message --> <welcome> Hello XQuery World </welcome> </greetings> Spezifikations- uns Selektionsmethoden für Daten und Dienste - XQuery-Anfragen - Markus Mauch
2. XQuery-Ausdrücke Spezifikations- uns Selektionsmethoden für Daten und Dienste - XQuery-Anfragen - Markus Mauch
Grundlagen • Einfache XQuery-Ausdrücke • Literale • Operatoren • Variablen • Funktionsaufrufe • Beispiel • (1, 2, 3) • 1 to 3 • ((1, 2), (), 3) • Elementkonstruktoren • XML-Fragment • Elementkonstruktoren mit konstanten Elementnamen • Berechenbare Elementkonstruktoren Spezifikations- uns Selektionsmethoden für Daten und Dienste - XQuery-Anfragen - Markus Mauch
Pfadausdrücke • LokalisierungsschritteAchse::Knotentest[Prädikat] • XPath-Achsen • ancestor • preceeding • following • descendant • child • parent • … • Beispieldocument(`items.xml')/child::*/child::item[child::seller=`Smith']/child::description Spezifikations- uns Selektionsmethoden für Daten und Dienste - XQuery-Anfragen - Markus Mauch
FLWR-Ausdrücke • For, Let, Where, Return (“Flower“) • For-Klausel for $x in (<a/>, <b/>, <c/>) return <result>{ $x }</result><result><a/></result> <result><b/></result> <result><c/></result> • Let-Klausellet $x := (<a/>, <b/>, <c/>) return <result>{ $x }</result><result><a/><b/><c/></result> Spezifikations- uns Selektionsmethoden für Daten und Dienste - XQuery-Anfragen - Markus Mauch
Verbunde • Realisierung als geschachtelte For-Schleife • Beispielfor $d in $departments/department, $e in $employees/employee where $d/manager = $e/IDreturn <department> {$d/name} <management> {$e/forename} {$e/lastname} </management> </department> Spezifikations- uns Selektionsmethoden für Daten und Dienste - XQuery-Anfragen - Markus Mauch
Funktionen • Vordefinierte Funktionen • Numerische Funktionen, Zeichenkettenfunktionen, Datumsfunktionen, Funktionen auf Knoten und Folgen, Aggregatfunktionen, ... • Benutzerdefinierte Funktionen • Funktionskopf, Funktionsrumpf • Aufwertungshierarchiexs:integer xs:decimal xs:float xs:double • Beispieldefine function highbid(element $item) returns xs:decimal{ max(document("bids.xml")//item[itemno = "123"]/bid-amount)} Spezifikations- uns Selektionsmethoden für Daten und Dienste - XQuery-Anfragen - Markus Mauch
3. Erweiterte Konzepte Spezifikations- uns Selektionsmethoden für Daten und Dienste - XQuery-Anfragen - Markus Mauch
XQuery-Core • XQuery Formal Semantics • Eindeutige Beschreibung der Semantik • Fragment von XQuery • Besitzt eine zu XQuery identische Ausdrucksmächtigkeit • Abbildung von XQuery-Anfragen auf XQuery-Core • Beispiel[[$bib/child::book]]for $v1 in $bib return for $v2 in nodes($v1) return typeswitch ($v2) as $v3 case ELEMENT book {ANYTYPE} return $v3 dafault return () Spezifikations- uns Selektionsmethoden für Daten und Dienste - XQuery-Anfragen - Markus Mauch
Typechecking-Problem • Validierung vs. Typüberprüfung • Ist ein Dokument schemakonform? • Ist das Ergebnis einer Anfrage für alle Eingabedaten schemakonform? • Typechecking durch Typableitung<result> { for $x in $db/tuple return <a/>, for $x in $db/tuple return <b/>} </result> ELEMENT result((ELEMENT a)*, (ELEMENT b)*) ELEMENT result((ELEMENT a)n, (ELEMENT b)n), n >= 0 • Alternative • Typechecking durch Aufzählung Spezifikations- uns Selektionsmethoden für Daten und Dienste - XQuery-Anfragen - Markus Mauch
4. Schluss Spezifikations- uns Selektionsmethoden für Daten und Dienste - XQuery-Anfragen - Markus Mauch
Zusammenfassung • XQuery als Anfragesprache für semi-strukturierte Daten • Datenmodell und Typsystem • Kombinierbarkeit der Ausdrücke • XQuery ist ausdrucksmächtig • Transformation von Dokumenten • Formale Definition • Eindeutige Semantik • Nachweisbar relational vollständig Spezifikations- uns Selektionsmethoden für Daten und Dienste - XQuery-Anfragen - Markus Mauch
Bewertung und Ausblick • Pro • Mächtiges und durchdachtes Sprachkonzept • Frei zugängliche Spezifikation • Kompatibilität zu anderen W3C-Empfehlungen • Kontra • Typechecking-Problem • Keine Aktualisierung von XML-Dokumenten möglich • Fehlende Volltext-Primitiven • XQuery Status: Candidate Recommendation • Aufnahme von XQuery in kommerzielle Datenbanksysteme XQuery wird an Bedeutung gewinnen Spezifikations- uns Selektionsmethoden für Daten und Dienste - XQuery-Anfragen - Markus Mauch
Vielen Dank für die Aufmerksamkeit. Spezifikations- uns Selektionsmethoden für Daten und Dienste - XQuery-Anfragen - Markus Mauch