22
XQuery-Anfragen Spezifikations- und Selektionsmethoden für Daten und Dienste Markus Mauch

XQuery-Anfragen Spezifikations- und Selektionsmethoden für Daten und Dienste Markus Mauch

Embed Size (px)

Citation preview

Page 1: XQuery-Anfragen Spezifikations- und Selektionsmethoden für Daten und Dienste Markus Mauch

XQuery-Anfragen

Spezifikations- und Selektionsmethodenfür Daten und Dienste

Markus Mauch

Page 2: XQuery-Anfragen Spezifikations- und Selektionsmethoden fü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

Page 3: XQuery-Anfragen Spezifikations- und Selektionsmethoden für Daten und Dienste Markus Mauch

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

Page 4: XQuery-Anfragen Spezifikations- und Selektionsmethoden für Daten und Dienste Markus Mauch

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

Page 5: XQuery-Anfragen Spezifikations- und Selektionsmethoden für Daten und Dienste Markus Mauch

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

Page 6: XQuery-Anfragen Spezifikations- und Selektionsmethoden für Daten und Dienste Markus Mauch

Spezifikations- uns Selektionsmethoden für Daten und Dienste - XQuery-Anfragen - Markus Mauch 6

1. Datenmodell und Typsystem

Page 7: XQuery-Anfragen Spezifikations- und Selektionsmethoden für Daten und Dienste Markus Mauch

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

Page 8: XQuery-Anfragen Spezifikations- und Selektionsmethoden für Daten und Dienste Markus Mauch

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

Page 9: XQuery-Anfragen Spezifikations- und Selektionsmethoden für Daten und Dienste Markus Mauch

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>

Page 10: XQuery-Anfragen Spezifikations- und Selektionsmethoden für Daten und Dienste Markus Mauch

Spezifikations- uns Selektionsmethoden für Daten und Dienste - XQuery-Anfragen - Markus Mauch 10

2. XQuery-Ausdrücke

Page 11: XQuery-Anfragen Spezifikations- und Selektionsmethoden für Daten und Dienste Markus Mauch

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

Page 12: XQuery-Anfragen Spezifikations- und Selektionsmethoden für Daten und Dienste Markus Mauch

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

Page 13: XQuery-Anfragen Spezifikations- und Selektionsmethoden für Daten und Dienste Markus Mauch

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>

Page 14: XQuery-Anfragen Spezifikations- und Selektionsmethoden für Daten und Dienste Markus Mauch

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>

Page 15: XQuery-Anfragen Spezifikations- und Selektionsmethoden für Daten und Dienste Markus Mauch

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)}

Page 16: XQuery-Anfragen Spezifikations- und Selektionsmethoden für Daten und Dienste Markus Mauch

Spezifikations- uns Selektionsmethoden für Daten und Dienste - XQuery-Anfragen - Markus Mauch 16

3. Erweiterte Konzepte

Page 17: XQuery-Anfragen Spezifikations- und Selektionsmethoden für Daten und Dienste Markus Mauch

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 ()

Page 18: XQuery-Anfragen Spezifikations- und Selektionsmethoden für Daten und Dienste Markus Mauch

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

Page 19: XQuery-Anfragen Spezifikations- und Selektionsmethoden für Daten und Dienste Markus Mauch

Spezifikations- uns Selektionsmethoden für Daten und Dienste - XQuery-Anfragen - Markus Mauch 19

4. Schluss

Page 20: XQuery-Anfragen Spezifikations- und Selektionsmethoden für Daten und Dienste Markus Mauch

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

Page 21: XQuery-Anfragen Spezifikations- und Selektionsmethoden für Daten und Dienste Markus Mauch

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

Page 22: XQuery-Anfragen Spezifikations- und Selektionsmethoden für Daten und Dienste Markus Mauch

Spezifikations- uns Selektionsmethoden für Daten und Dienste - XQuery-Anfragen - Markus Mauch 22

Vielen Dank für die Aufmerksamkeit.