Download - XQuery-Anfragen Spezifikations- und Selektionsmethoden für Daten und Dienste Markus Mauch
XQuery-Anfragen
Spezifikations- und Selektionsmethodenfür Daten und Dienste
Markus Mauch
Spezifikations- uns Selektionsmethoden für Daten und Dienste - XQuery-Anfragen - Markus Mauch 2
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 3
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 4
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 5
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 6
1. Datenmodell und Typsystem
Spezifikations- uns Selektionsmethoden für Daten und Dienste - XQuery-Anfragen - Markus Mauch 7
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 8
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 9
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 10
2. XQuery-Ausdrücke
Spezifikations- uns Selektionsmethoden für Daten und Dienste - XQuery-Anfragen - Markus Mauch 11
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 12
Pfadausdrücke
Lokalisierungsschritte
Achse::Knotentest[Prädikat]
XPath-Achsen ancestor preceeding following descendant child parent …
Beispiel
document(`items.xml')/child::*/child::item[child::seller=`Smith']/child::description
Spezifikations- uns Selektionsmethoden für Daten und Dienste - XQuery-Anfragen - Markus Mauch 13
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-Klausel
let $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 14
Verbunde
Realisierung als geschachtelte For-Schleife Beispiel
for $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 15
Funktionen
Vordefinierte Funktionen Numerische Funktionen, Zeichenkettenfunktionen, Datumsfunktionen,
Funktionen auf Knoten und Folgen, Aggregatfunktionen, ...
Benutzerdefinierte Funktionen Funktionskopf, Funktionsrumpf Aufwertungshierarchie
xs:integer xs:decimal xs:float xs:double
Beispiel
define 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 16
3. Erweiterte Konzepte
Spezifikations- uns Selektionsmethoden für Daten und Dienste - XQuery-Anfragen - Markus Mauch 17
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 returnfor $v2 in nodes($v1) return
typeswitch ($v2) as $v3case ELEMENT book {ANYTYPE}
return $v3dafault
return ()
Spezifikations- uns Selektionsmethoden für Daten und Dienste - XQuery-Anfragen - Markus Mauch 18
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 19
4. Schluss
Spezifikations- uns Selektionsmethoden für Daten und Dienste - XQuery-Anfragen - Markus Mauch 20
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 21
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 22
Vielen Dank für die Aufmerksamkeit.