XML-Anfragesprachen (Schwerpunkt XQuery). © Prof. T. Kudraß, HTWK Leipzig Übersicht Anforderungen an XML-Anfragesprachen Stand der Entwicklung XPath Anfragesprache.

Slides:



Advertisements
Ähnliche Präsentationen
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Advertisements

XSQL - Beispiel. © Prof. T. Kudraß, HTWK Leipzig Nested Cursor erzeugen in SQL-Anfragen die XML-typische Baumstruktur (anstelle von Tabellen) Beispiel:
Zeitliche Verwaltung XML-basierter Metadaten in digitalen Bibliotheken M. Kalb, G. SpechtUniversität Ulm, Abteilung DBIS.
T-XPath Ein zeitliches Modell für XML-DBS M. Kalb, G. SpechtK. Schneider Universität Ulm EML Heidelberg.
10. Grundlagen imperativer Programmiersprachen
Systemüberblick Beispiele: Microsoft Access Oracle Ingres Informix
FH-Hof Extensible Markup Language Richard Göbel. FH-Hof Extensible Markup Language XML XML ist universeller Ansatz für die Strukturierung von Zeichenketten.
Java: Dynamische Datentypen
DOM (Document Object Model)
XINDICE The Apache XML Project Name: Jacqueline Langhorst
XPATH XML Path Language. Xpath – XML Path Language IT Zertifikat - Daten und Metadatenstandards: XPath 2 Entwicklung des W3C Adressierungssprache für.
XML - Abfragesprache Xpath. Problemstellung Unsere XML-Datei steht und wir wollen alle 1. Titel aller vergangenen Sendungen automatisch aus den Playlists.
XML-Schema HKI Proseminar Wintersemester 2010/11 Dozentin: Frau Kurz von Jan Kohl und Christian Lütticke.
Das XQuery-Datenmodell. Gliederung Sequenzen Atomare Werte Knoten Knoteneigenschaften Sequenztypen und Knotenzugriffsfunktion Typabfrage Gleichheit von.
XHTML 1.1 C. Nimz Abstrakte Module XHTML 1.1 C. Nimz Was ist ein abstraktes Modul? Definition eines XHTML-Moduls in spezieller leichter.
Oracle PL/SQL Server Pages (PSP). © Prof. T. Kudraß, HTWK Leipzig Grundidee: PSP – Internet-Seiten mit dynamischer Präsentation von Inhalten durch Einsatz.
XML-Anfragesprachen (Schwerpunkt XQuery). © Prof. T. Kudraß, HTWK Leipzig 2 2 Übersicht Anforderungen an XML-Anfragesprachen Stand der Entwicklung XPath.
SQL/XML. © Prof. T. Kudraß, HTWK Leipzig 2 2 Motivation Speicherung von XML in allen großen kommerziellen DBMS vorhanden proprietäre Lösungen für die.
XML Standardisierungen und Abfragesprachen
Einführung XML XML Einführung Andreas Leicht.
Prof. Dr. T. Kudraß1 Relationenkalkül. Prof. Dr. T. Kudraß2 Relationenkalkül Zwei Ausprägungen: Tupelrelationenkalkül (TRK) und Domänenrelationenkalkül.
Otto-von-Guericke-Universität MagdeburgGamal Kassem Übung 7 Reports mit Datenbankzugriff.
Übung Datenbanksysteme SQL-Anfragen (2)
XML-Algebren Martin Winkler.
Katharina Bellon Technische Universität Kaiserslautern Fachbereich Informatik Lehrgebiet Datenverwaltungssysteme Verarbeitung von XML-Strömen.
XPointer Die Xpointer beschreiben einen Ort oder Bereich innerhalb einer XML-Instanz. Die XPointer bauen auf der XML Path Language auf. Die XPointer ist.
Xlink / Xpointer - Framework
XQuery-Anfragen Spezifikations- und Selektionsmethoden für Daten und Dienste Markus Mauch.
1 XML und Datenbanken Kapitel 7: Modellierung, Teil 1 Meike Klettke Universität Rostock Fakultät für Informatik und Elektrotechnik
XML und Datenbanken - Einführung in XML -
1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI
XML Path Language XPath
Quilt: Eine XML Anfragesprache für heterogene Datenquellen
- XML-Path Language (xPath) ist eine Empfehlung des W3C - es wurde entwickelt, um durch ein XML- Dokument zu navigieren - und ist ein großer Teil von.
XSLT.
SQL PHP und MySQL Referat von Katharina Stracke und Carina Berning
Xpath und XQuery.
XML - Konzepte XHTML XML Base XPath XInclude XLink XForms XPointer
Datenbanktechnologie Daniel Ebner SS Mai Ulrike Lohner.
Sesame Florian Mayrhuber
XPath Was ist XPath XPath ist eine Syntax für das Definieren der Teile eines XML-Dokumentes. XPath benutzt Pfade, um XML-Elemente zu definieren. XPath.
XML-Query. Übersicht Was ist XML-Query? Vergleich RDB XML-Dokument Syntaktisches und Use-Cases Kritik und Diskussion.
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #7 SQL (Teil 2)
WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #5 SQL (Teil 2)
Allgemeines zu Datenbanken
Verarbeiten von XML-Daten
Datenbanksysteme für hörer anderer Fachrichtungen
XSLT Voraussetzungen, trivial
Kurzpräsentation von Herbert Schlechta
Einführung in PHP.
Einführung in PHP 5.
MODULA-2.
Datentypen: integer, char, string, boolean
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
Programmieren in C Grundlagen C 2
PHP: Operatoren und Kontrollstrukturen
Hochschule Fulda – FB ET Sommersemester 2014
Programmieren in C Grundlagen C 2
Meta-Modell für Story-Diagramme und Expressions
Eike Schallehn, Martin Endig
© 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg.
XQuery 1.0 – Arbeitsweise Mögl. Eingaben Das wird berücksichtigt: Typen von XPath und XML Schema Namensräume, Module Ergebnis: XML-Instanz.
Tupelkalkül: Notation (1)
Hauptseminar Web-Services und verteilte Datenbanken Thema XML, DTDs und XML-Schema XML, DTDs und XML-Schema - Stefan Kurz, 25. April 2003.
RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen(1/29) OQL besteht aus einer Menge von Anfrageausdrücken, die.
WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
XPath Datenmodell und Sequenzen Universität zu Köln – Historisch-Kulturwissenschaftliche Informationsverarbeitung Datenbanktechnologie – Daniel Ebner –
Peter Brezany Institut für Softwarewissenschaften Universität Wien
XML-Werte in SQL/XML Von Viktor Folmer. Inhalt Datentyp XML Knotenfunktionen Unter- und Unter(unter)typen Validierung Prädikate Auswahl weiterer Funktionen.
XPath und XQuery Marko Harasic Freie Universität Berlin Institut für Informatik Netzbasierte Informationssysteme
 Präsentation transkript:

XML-Anfragesprachen (Schwerpunkt XQuery)

© Prof. T. Kudraß, HTWK Leipzig Übersicht Anforderungen an XML-Anfragesprachen Stand der Entwicklung XPath Anfragesprache XQuery Weitere Anfragesprachen (XML-QL, XQL) XML und Änderungsoperationen XML und SQL Ausblick

© Prof. T. Kudraß, HTWK Leipzig Allgemeine Anforderungen Ad-hoc-Formulierung – Anfragen direkt, ohne Erstellung kompletter Programme Deskriptivität – Umschreiben des gewünschten Ergebnisses, nicht Konstruktionsweg Kompaktheit – kompakte Notation, verwendbar in URLs Mengenorientiertheit – Anfragen auf Mengen von Objekten und Dokumenten – Nicht nur auf einzelnen Objekten und XML- Dokumenten oder –fragmenten operieren

© Prof. T. Kudraß, HTWK Leipzig Allgemeine Anforderungen (2) Adäquatheit – alle Konstruktoren des zugrundeliegenden Modells unterstützt Orthogonalität – Sprachkonstrukte uneingeschränkt miteinander kombinieren Abgeschlossenheit – Resultat (XML) kann wieder als Eingabe (XML) einer nächsten Anfrage dienen Vollständigkeit – gemäß Datenmodell gespeicherte Informationen lassen sich verlustfrei durch Query wiedergewinnen

© Prof. T. Kudraß, HTWK Leipzig Allgemeine Anforderungen (3) Optimierbarkeit – kleine Menge an Grundoperationen mit Optimierungsregeln Effizienz – jede Operation wird durch Algorithmus effizient umgesetzt Sicherheit – syntaktisch korrekte Query liefert endliche Menge, – Anfrage terminiert Eingeschränktheit – keine vollständige Programmiersprache Garantiert Optimierbarkeit, Effizienz und Sicherheit

© Prof. T. Kudraß, HTWK Leipzig XML-Anforderungen (1) Einbettung – Anfragen in XML einbetten oder als XML formulieren – XML-Fragmente in Anfrage fester Teil in Ergebnis Server-Verarbeitung – Geeignet für Server-side Processing erfordert Abgeschlossenheit, Kontextfreiheit Ordnungserhaltung (Order Preserving) – Abfolge von Elementen, Schachtelungsreihenfolge – Vor allem bei mixed Content – Nicht für alle Anwendungen benötigt (mögliches Abschalten aus Effizienzgründen) – Probleme bei relationaler Speicherung

© Prof. T. Kudraß, HTWK Leipzig XML-Anforderungen (2) Hyperlinks – Ausnutzen und Verfolgen von Links in ( ID/IDREF ) und zwischen ( XLink, XPointer ) Dokumenten Flexible Typen – Verarbeiten von unbekannten oder wechselnden Typen – Mechanismen zur expliziten Typkonvertierung – Unterstützung eines erweiterbaren und robusten (fehlertoleranten) Typkonzepts Unterstützung des Zugriffs auf Metadaten und Schemainformationen (gleiche Mittel) Berücksichtigung von Namensräumen Protokoll-Unabhängigkeit

© Prof. T. Kudraß, HTWK Leipzig Grundoperationen Selektion (anhand von Inhalt, Struktur, Attributwert) Extraktion und Reduktion (vergleichbar Projektion) Kombination (Join) Restrukturierung von Elementen Aggregation (z.B. arithmetische Funktionen) Gruppierung (Schachtelung bzw. Entschachtelung von Elementstrukturen) Volltextoperationen (literal bzw. Phrasen-, Stammformsuche, etc.) Datenmanipulation – über APIs wie DOM, SAX – Auch Änderungsoperationen über XML-Anfragesprache

© Prof. T. Kudraß, HTWK Leipzig Stand der Entwicklung

© Prof. T. Kudraß, HTWK Leipzig XPath Einführung W3C Recommendation vom Nov 1999 – siehe: Grundlage für XQuery, XSLT, weitere Standards geht von abstrakter Baumstruktur des XML- Dokuments aus dient zur Adressierung von Teilen eines Dokumentes kompakte Nicht-XML-Syntax, keine vollständige QL zur Selektion und Extraktion von Knotenmengen

© Prof. T. Kudraß, HTWK Leipzig XPath Einführung Knotenarten – 7 Knotenarten auf Basis des XML Information Set – ähnlich zu DOM – Wichtigste: Wurzel, Element, Attribut, Text Datentypen – atomare Werte: boolean, number, string – Knotenmengen (node-set) Grundlegendes Konstrukt sind XPath-Ausdrücke – Pfadausdrücke (location paths) – logische und mathematische Verknüpfungen – Funktionsaufrufe – Relativ zu einem Kontext ausgewertet – Keine Variablenbindung

© Prof. T. Kudraß, HTWK Leipzig XPath Pfadausdrücke XPath-Ausdrücke relativ zu einem Kontext ausgewertet Extraktion der interessierenden Bestandteile Selektion von Knotenmengen aufgrund ihrer Struktur und den in ihnen enthaltenen Werten Formulierung von Bedingungen an diese Knotenmenge mehrere Steps, Kopplung mit / Schritt (Location Step) axis::node-test[predicate] – axis: Beziehung Kontextknoten u. zu selektierende Knoten – node-test: Knotentyp und Namen des zu sel. Knoten – predicate: Einschränkung best. Elemente durch Prädikate

© Prof. T. Kudraß, HTWK Leipzig Navigationsachsen in XPath Klettke/Meyer XML & Datenbanken

© Prof. T. Kudraß, HTWK Leipzig Einschränken des Knotentyps - node(): alle Knoten - text(): alle Textknoten - *: alle Elementknoten - comment(): Kommentarknoten - Angabe eines Knotennamens Knotentest in XPath descendant::* alle untergeordneten Elemente des Kontextknotens child::href alle Elemente vom Typ href attribute::id Attribut id des Kontextknotens Beispiele Quelle ebd.

© Prof. T. Kudraß, HTWK Leipzig Prädikate in XPath Selektionsprädikate - logische Operatoren (and, or) - Vergleichsoperatoren (, >=, =, != ) - Operationen auf numerischen Werten ( +, -, *, div, mod ) - Vereinigung von Knotenmenge ( | ) - Ändern der Auswertreihenfolge durch Klammerung von Teilausdrücke mit ( und ) ) Beispiele /descendant-or-self::node()/album/song[2] //album/song[last()-1]/title //hotel[zimmertyp/attribute::typ = Doppelzimmer] /child::Patient/self::*/child::Name/parent::*/attribute::PatientNr äquivalent zu:

© Prof. T. Kudraß, HTWK Leipzig XQuery Überblick und Datenmodell Einfache Ausdrücke FLWR-Ausdrücke Erweiterte XQuery-Ausdrücke: – Verbund – Gruppierung Benutzerdefinierte Funktionen Erweiterte Konzepte – Modulkonzept – XQuery Prolog Verarbeitungskonzept Implementierungen

© Prof. T. Kudraß, HTWK Leipzig Sprachüberblick W3C Working Draft vom Okt (siehe: geht aus Quilt hervor (inoffizieller Vorschlag des W3C), basierend auf XPath, beeinflusst durch SQL, XML-QL Ausdrücke beliebig ineinander schachtelbar – Elementkonstruktoren – Pfadausdrücke zur Selektion (wie XPath) – FLWOR-Ausdrücke (ähnlich SQL - SFW) – datenspezifische Operatoren, Standard - und selbstdefinierte Funktionen – bedingte Anweisungen, Test von Datentypen, Typumwandlung – Verwendung von Quantoren: EVERY und SOME

© Prof. T. Kudraß, HTWK Leipzig Datenmodell Dokument als Baumstruktur (XPath 1.0) XQuery nutzt künftigen XPath 2.0-Standard Modell basiert auf XPath Erweiterungen – einzelne XML-Dokumente – wohlgeformte Fragmente eines Dokuments – Sequenzen von Dokumenten und Fragmenten als Wert eines XQuery-Ausdrucks Objekt dieses Datenmodells ist geordnete Menge von Knoten = Sequenz (Aneinanderreihung von atomaren Werten oder Knoten – ohne Schachtelung) – Flach, d.h. Sequenz nur auf der obersten Ebene – Duplikate in Sequenz möglich – Elemente einer Sequenz sind sortiert und hinsichtlich Position unterscheidbar Dualität von Elementen und Sequenz der Länge 1 ( ) äquivalent zu

© Prof. T. Kudraß, HTWK Leipzig Datenmodell (2) Funktionen zur Analyse und Modifikation – Kommaoperator (1, ),(3) liefert: (1,,3) – to-Operator 2 to 5 liefert: (2,3,4,5,) – Eliminierung von Duplikaten fn:distinct-values((2,5,3,7,3,5,5)) liefert: (2,5,3,7) Datentypen – allgemeinste Form eines Eintrags vom Typ item() – Einfache oder komplexe Datentypen – Sprachkonstrukte aus XML Schema (vgl. Typhierachie) Atomisierung – XML-Dokument synonym mit zugehöriger Instanz des XQuery- Datenmodells

© Prof. T. Kudraß, HTWK Leipzig Unterschiede zu XPath 1.0 Grunddatentypen auf der Basis von XML Schema Teil 2 XPath 1.0 kennt nur Knotenmengen, boolesche, numerische und Zeichenkettenwerte XPath 1.0 ist mengenorientiert (ohne Duplikate), XPath 2.0 basiert auf Sequenzen (Duplikate möglich) Unterstützung von Referenzen und Dokumentkollektionen Unterscheidung von Wertegleichheit (XPath 1.0) und Knotenidentität Wesentlich umfangreichere Funktionsbibliothek Weitere Ausdrucksarten, z.B. Bereichs Voranstellen von Variablen oder Funktionsaufrufen vor Pfadausdrücken

© Prof. T. Kudraß, HTWK Leipzig XQuery Typhierachie

© Prof. T. Kudraß, HTWK Leipzig Grundlagen Konstanten oder Literale – Werte für einfache numerische und Zeichenkettenwerte (in Hochkommas) – Beispiele: Hotel Neptun, 12.34{-- xs:string --} 123, -24, 0, +7{-- xs:integer --} -24.0, , +.23{-- xs:decimal --} e3, 200e6{-- xs:double --} Variablen: – Beispiele: $name := Wolfgang Lehner LET $hotel := //hotel[typ=Pension] RETURN $hotel Kommentare – An beliebiger Stelle, ohne Bedeutung – Syntax: geschachtelt durch ein Klammerpaar (: und :) – Beispiel: (: XQuery (: Kommentar :) !! :) – Orthogonal zu einem Kommentar im XML-Dokument

© Prof. T. Kudraß, HTWK Leipzig Ausdrücke in XQuery Arithmetische Ausdrücke – Funktionen und Operatoren Vergleichsausdrücke – Wertevergleich – Allgemeiner Vergleich – Knotenvergleich (Knotenidentität, Vergleich der relativen Positionierung) Logische Ausdrücke – fn:true(), fn:false(), fn:not() Pfadausdrücke – Basieren auf XPath 2.0 (Erweiterungen gegenüber 1.0) FLWOR-Ausdrücke Konditionale Ausdrücke Quantifizierende Ausdrücke – existenzielle Quantifizierung – universelle Quantifizierung

© Prof. T. Kudraß, HTWK Leipzig Ausdrücke in XQuery (1) Arithmetische Ausdrücke – Mit arithmetischen Operationen – Auswertereihefolge durch Klammerung beeinflussen – Beispiel: ($preis-10) DIV 100 Vergleichsausdrücke (4 Vergleichsoperatoren) – allgemein mit Sequenzen: =, !=,, >= – einfache Wertvergleiche zwischen elementaren Werten: EQ, NE, LT, LE, GT, GE – Vergleich der Knotenidentität: == (identisch), !== (nicht identisch) Beispiel: $hotel[name = Neptun] == = 4311] – Vergleich der Abfolge von Knoten bezüglich der Dokumentordnung mit > und in Bezug auf die Vorgänger- und Nachfolgerbeziehung mit FOLLOWS und PRECEDES logische Ausdrücke: – AND, OR, NOT – Beispiel: NOT($hotel/name EQ $restaurant/name) Pfadausdrücke – Basieren auf XPath 2.0 (Erweiterungen gegenüber 1.0)

© Prof. T. Kudraß, HTWK Leipzig FLWOR-Ausdrücke FLWOR-Ausdruck – gesprochen wie engl. Flower – Basis für Anfragen an XML-Datenbanken – analog zu SELECT-FROM-WHERE in SQL – steht als Abkürzung von for-let-where-order by-return Klauseln eines FLWOR-Ausdrucks

© Prof. T. Kudraß, HTWK Leipzig Struktur eines FLWOR-Ausdrucks FLWORExpr::= (ForClause | LetClause)+ WhereClause? OrderByClause? RETURN ExprSingle ForClause::= FOR $VarName TypeDeclaration? PositionalVar? IN ExprSingle (, $VarName TypeDeclaration? PositionalVar? IN ExprSingle)* LetClause::= LET $VarName TypeDeclaration? := ExprSingle (, $VarName TypeDeclaration? := ExprSingle)* TypeDeclaration::= AS SequenceType PositionalVar::= AT $VarName WhereClause::= WHERE Expr OrderByClause::= (ORDER BY | STABLE ORDER BY) OrderSpecList OrderSpecList::= OrderSpec (, OrderSpec)* OrderSpec::= ExprSingle OrderModifier OrderModifier::= (ASCENDING | DESCENDING)? ((EMPTY GREATEST) | EMPTY LEAST))? (COLLATION StringLiteral)?

© Prof. T. Kudraß, HTWK Leipzig Variablen Nach der erfolgten Bindung sind die Werte nicht mehr änderbar Variablenbindung nur innerhalb des aktuellen und aller eingeschlossenen Anfrageausdrücke sichtbar Wird Ausdruck verlassen, ist Variable ungebunden Zugriff auf ungebundenen Variablen Ausnahme Wird hingegen Variable mehrfach gebunden, ist immer unmittelbar zuvor erfolgte Bindung sichtbar Typ einer Variablen ergibt sich aus Bindung Variablenbindung erfolgt in FOR- und LET-Ausdrücken

© Prof. T. Kudraß, HTWK Leipzig LET-Klausel Bindet Menge von Werten, die bei Auswertung eines Ausdrucks expr entstehen geschlossen an eine Variable $var Im einfachsten Fall folgt nach der LET-Klausel ein RETURN-Ausdruck Liefert den Variableninhalt als Ergebnis Beispiel: LET $z := //zimmertyp RETURN $z Abarbeitung in 3 Schritten: 1. Werte den XPath-Ausdruck //zimmertyp aus 2. Weise die resultierende Knotenmenge an die Variable $z zu (Variablenbindung) 3. Gebe die gesamte Sequenz von Knoten zurück

© Prof. T. Kudraß, HTWK Leipzig FOR-Klausel Für jedes Element der Ergebnismenge erfolgt eine Bindung an $var Wie bei LET können mehrere Variablen gebunden werden Variablen für alle untergeordneten Ausdrücke sichtbar Beispiel: FOR $z IN //zimmertyp RETURN $z Abarbeitung anders als bei LET – $z wird jeweils an Elemente der Sequenz (Auswertung von //zimmertyp ) gebunden – Bindung erfolgt mehrfach, für jeden Zimmertyp genau einmal – Nachfolgende Klauseln werden für jede Iteration und Bindung einmal ausgewertet – RETURN wird für jeden Schritt ausgewertet, Resultat zu einem Zwischenergebnis hinzugefügt – Aufsummiertes Gesamtergebnis von RETURN wird am Schleifenende zurückgegeben

© Prof. T. Kudraß, HTWK Leipzig Beispiel <zimmertyp typ =DZ preis =90 währung =EUR

© Prof. T. Kudraß, HTWK Leipzig Beispiel (Forts.) XQuery-Anfrage FOR $hotel IN //hotel RETURN $hotel/foto Ergebnis:

© Prof. T. Kudraß, HTWK Leipzig Vergleich LET- und FOR-Klauseln FOR $x IN (, ) LET $y := (, ) RETURN ( { $x } { $y } ) liefert als Ergebnis

© Prof. T. Kudraß, HTWK Leipzig Geschachtelte FOR-Klauseln { FOR $h IN //hotel FOR $z IN $h/zimmertyp WHERE <= 100 RETURN { } { } } Ergebnis: … …

© Prof. T. Kudraß, HTWK Leipzig Geschachtelte FOR-Klauseln (2) { FOR $h IN //hotel RETURN { FOR $z IN $h/zimmertyp WHERE <= 100 RETURN { } } } Ergebnis: …

© Prof. T. Kudraß, HTWK Leipzig WHERE-Klausel FOR $p AT $i IN fn:doc(Klinik.xml)//Pfleger WHERE fn:not($p/Geburtsdatum > xs:date( )) AND $i MOD 5 = 0 AND fn:count($p//Zertifikat) > 2 RETURN {$p/Name, WHERE-Klausel zur Angabe eines Selektionsprädikats mit weitergehenden Filtermöglichkeiten in Bezug auf Gruppen (ähnlich zu HAVING) Beispiel: Suche Pflegepersonal das nicht nach 1974 geboren ist Betrachte nur jeden 5. Pfleger Suche Pfleger, die 3 oder mehr Zertifikate (zum Nachweis bestimmter Fähigkeiten besitzen)

© Prof. T. Kudraß, HTWK Leipzig ORDER BY-Klausel Explizite Angabe einer Sortierung für die Elemente einer Sequenz Spezifische Sortierordnungen – Global im Prolog einer XQuery – Lokal zusätzlich in der ORDER BY-Klausel 2 wichtige Eigenschaften der ORDER BY-Klausel – Wenn keine eindeutige Reihenfolge, so ist Anordnung der Duplikate implementierungsabhängig, Angabe von STABLE erzwingt die Einhaltung der Dokumentreihenfolge – Wenn Eigenschaften, nach denen sortiert wird, nicht existieren: Einordnung dieser Einträge explizit steuern mit Sortierungsmodifikator EMPTY GREATEST bzw. EMPTY LEAST Beispiele: $hotel/zimmer[preis<100] ORDER BY preis ASCENDING Zusätzlich zum Beispiel für WHERE-Klausel: ORDER BY $p//Wohnort EMPTY LEAST, fn:get-year-from-date($p/Geburtsdatum) DESCENDING

© Prof. T. Kudraß, HTWK Leipzig Elementkonstruktoren (RETURN) Literales XML wird in das Ergebnis übernommen, ohne modifiziert zu werden TV XML mit geschachtelten Ausdrücken erlaubt es, Element- und Attributinhalte durch XQuery-Ausdrücke berechnen zu lassen $zaus UNION $haus XML mit berechneten Element- und Attributnamen bietet die Möglichkeit, die Bezeichner von XML-Elementen und Attributen durch XQuery-Ausdrücke zu berechnen ELEMENT {$z} { ATTRIBUTE {$t} {EZ} ELEMENT {$a} {Minibar} }

© Prof. T. Kudraß, HTWK Leipzig Verbundoperationen Verknüpfung von Datenbeständen aus unterschiedlichen Dokumenten/Dokumentteilen – durch Wertegleichheit (relationale Seele) – durch Verfolgung von Referenzen (objektorientierte Seele) Verbundprädikat – in WHERE-Klausel eines FLWOR-Ausdrucks – in Pfadausdruck eines Verbundpartners Verfolgung von Referenzen (ID/IDREF) – Funktion fn:id() liefert Elemente, deren ID-Attributwert mindestens einem der übergebenen IDREF-Werte entsprechen (Dereferenzierung) – Funktion fn:idref() liefert Elemente, die auf die übergebenen Werte verweisen – Referenzen in Form von XPointer/XLink nicht über Dokumentgrenzen hinweg auflösbar Symmetrische und einseitige äußere Verbunde intuitiv formulierbar, vollständiger äußerer Verbund schwierig

© Prof. T. Kudraß, HTWK Leipzig Verbund – Beispiel 1 { FOR $h IN fn:doc(hotels.xml)//hotel, $z IN $h/zimmertyp, $f IN fn:doc(fotos.xml) //hotel[name = $h/name]//zimmerfoto, WHERE $f/zimmertyp = $z/typ RETURN <hotelzimmer { $h/name, $z/typ, $z/beschreibung, $f/foto } ORDER BY (name,typ) } Ergebnis: Liste von Hotelzimmern mit Angaben zu Hotel, Zimmertyp, Zimmerbeschreibung und zugehöriges Foto Hotels fehlen, wenn keine Informationen zu Zimmern oder das zugehörige Foto fehlt

© Prof. T. Kudraß, HTWK Leipzig Verbund – Beispiel 2 { FOR $h IN fn:doc(hotels.xml)//hotel RETURN { $h/name, $h/beschreibung, FOR $z IN $h/zimmertyp, $f IN fn:doc(fotos.xml) //hotel[name = $h/name]/zimmerfoto WHERE $f/zimmertyp = $z/typ RETURN $z/typ, $z/beschreibung, $f/foto ORDER BY typ } ORDER BY name } Ergebnis: Leere Sequenz für Hotels ohne Zimmerinformationen Hotelname und Beschreibung trotzdem im Resultat (entspricht Outer Join)

© Prof. T. Kudraß, HTWK Leipzig Verbund – Verfolgung von Referenzen FOR $s IN fn:doc(Klinik.xml)//Station, LET $p := RETURN {$s/Name} { $p/Name } Ergebnis: Zuordnung der leitenden Person (Name, Vorname) an jede Station im Krankenhaus Beispiel:

© Prof. T. Kudraß, HTWK Leipzig Gruppierung Beispiel: Berechnung des Durchschnittsalters pro Berufsgruppe (Arzt oder Pfleger) Variante 1: Gruppierung entlang der XML-Hierarchie { FOR $p IN fn:doc(…)//MedizinischesPersonal/* LET $x := $p//Alter RETURN ELEMENT { fn:node-name($p) } { { fn:avg($x) } } Variante 2: Gruppierung nach Wertegleichheit { FOR $b IN fn:distinct-values(fn:doc(…)//Beruf/text()) LET $x := fn:doc(…)//Alter[../Beruf/text() = $b] RETURN ELEMENT {$b} { { fn:avg($x) } ) }

© Prof. T. Kudraß, HTWK Leipzig Gruppierung (Forts.) Variante 3: Gruppierung über Elementbezeichner { FOR $b IN fn:distinct-values(for $i IN fn:doc(…)//Person/(Arzt|Pfleger) RETURN fn:node-name($i)) LET $x := fn:doc(…)//Alter[../fn:node-name(.) = $b] RETURN ELEMENT {$b} { { fn:avg($x) } } }

© Prof. T. Kudraß, HTWK Leipzig Aggregationsfunktionen fn:count() liefert die Anzahl der Elemente der übergebenen Sequenz zurück fn:avg() liefert den durchschnittlichen Wert aller Elemente der übergebenen Sequenz sum($arg) div count($arg) fn:max() liefert den wertemäßig größten Wert optional bezüglich einer Sortierordnung zurück fn:min() liefert den wertemäßig kleinsten Wert optional bezüglich einer Sortierordnung zurück fn:sum() liefert den summarischen Wert aller in der Sequenz enthaltenen Elementwerte zurück; wird der zweite Parameter nicht angegeben, so wird der Wert 0.0E0 bei einer leeren Sequenz zurückgeliefert; andernfalls der Wert des zweiten Parameters

© Prof. T. Kudraß, HTWK Leipzig Konditionale Ausdrücke Syntax IF (expr) THEN expr_1 ELSE expr_2 Beispiel Hotel-Datenbank: Gewähre Nachlass von 10%, wenn ein Hotelzimmer länger als 5 Tage belegt wird LET $tage := ($r/abreise - $r/anreise), $zimmer := fn:id(zimmertyp) RETURN IF ($tage > 5) THEN $tage*$zimmer/preis*0.9 ELSE $tage*$zimmer/preis

© Prof. T. Kudraß, HTWK Leipzig Quantifizierende Ausdrücke Syntax [SOME | EVERY ] var IN expr_1 SATISFIES expr_2 Beispiel 1 Namen der Hotels, die unter anderem auch Einzelzimmer anbieten FOR $hotel IN fn:doc(hotels.xml)//hotel WHERE SOME $z IN $hotel/zimmer/typ SATISFIES $z = EZ RETURN $hotel/name Beispiel 2 Suche Appartementhotels, d.h. Hotels, die ausschließlich Appartements anbieten FOR $hotel IN fn:doc(hotels.xml)//hotel WHERE EVERY $z IN $hotel/zimmer/typ SATISFIES $z = Appartement RETURN $hotel/name

© Prof. T. Kudraß, HTWK Leipzig Funktionen in XQuery Funktionen auf numerischen und Booleschen Werten Funktionen auf Zeichenketten – Vergleich – Manipulation – Auswertung regulärer Ausdrücke Funktionen auf Zeitangaben – Vergleichs- und Substraktions-/Additionsoperatoren – Funktionen zur Extraktion von Komponenten – Zeitangaben in unterschiedlichen Zeitzonen Benutzerdefinierte Funktionen

© Prof. T. Kudraß, HTWK Leipzig Benutzerdefinierte Funktionen (Beispiel) declare function factorial($n as xs:integer) as xs:integer { return( if ($n eq 0) then 1 else $n * factorial($n - 1) ) } Factorial of 5 { factorial( 5 ) } declare function factorial($n as xs:integer) as xs:integer { return( if ($n eq 0) then 1 else $n * factorial($n - 1) ) } Factorial of 5 { factorial( 5 ) } Factorial of 5 120

© Prof. T. Kudraß, HTWK Leipzig Verarbeitungs- konzept von XQuery

© Prof. T. Kudraß, HTWK Leipzig Statische Analyse und Typprüfung Statische Analyse (erste Phase der Auswertung) – Parsing und Analyse des XQuery-Hauptmoduls – Aktualisierung des statischen Kontextes – Überführung der Anfrage in einen Operatorbaum – Fehlerprüfung: Existenz von Typnamen, Namens- raumpräffixen, Funktionsnamen und Variablennamen Statische Typprüfung Prepare / Execute – Übersetzung der Anfrage in einen ausführbaren Anfragegraphen – Ausführung der Anfrage

© Prof. T. Kudraß, HTWK Leipzig Statischer Kontext Bekannte Namensräume – vordefiniert – Im XQuery Prolog enthalten Vorbelegung für Element- und Funktionsnamensräume Schemadefinitionen – Typen aus XML Schema und XQuery Variablendefinitionen Funktionen Vorbelegung für Sortierordnung Validierungsmodus

© Prof. T. Kudraß, HTWK Leipzig Dynamische Ausführung Dynamischer Kontext – Aufbau während der Anfrageausführung – Verwaltung aller aktuellen Variablenbindungen (Variablenname-Wert-Paare) – Fokus (focus) Aktuell betrachteter Eintrag (context item) (.-Operator) Eintragsposition (context position) ( fn:position() ) Anzahl der Einträge der aktuellen Sequemz (context size) fn:last() – Datum und Uhrzeit – Zeitzone

© Prof. T. Kudraß, HTWK Leipzig Aufbau des Ergebnisdokuments Serialisierung – XQuery-Anfrage resultiert in einer Sequenz und somit in einer Instanz des XML-Datenmodells – Serialisierung = Überführung der Instanz eines XML- Datenmodells in eine Zeichenkette (XML-Dokument) – Transformation / Normalisierung – Parameter zur Beeinflussung der Serialisierung Encoding des Ergebnisses Media Type des Ergebnisses – Anmerkung Ergebnis einer XQuery muss nicht als XML serialisiert werden, d.h. weitere Methoden neben xml

© Prof. T. Kudraß, HTWK Leipzig XQuery-Implementierungen Aktuelle Liste:

© Prof. T. Kudraß, HTWK Leipzig SQL/XML 2003 verabschiedet (ISO/IEC :2003 ) - ( siehe: [6] ) ANSI und ISO Standard, Support um XML in Umgebung einer SQL-Datenbank zu nutzen Titel: Information technology - Database languages - SQL - Part 14: XML-Related Specifications (SQL/XML) – ca. $200 (ca. 360 Seiten) entwickelt und implementiert von Oracle, MS, IBM, Sybase,... wird ab Oracle9i Release2 unterstützt macht es möglich XML-Files in SQL-db zu speichern, Anfragen mit XQuery und XPath zu stellen, und existierende SQL-Daten als XML zu extrahieren

© Prof. T. Kudraß, HTWK Leipzig XML-Update XML-Update Sprache vom Sep ( siehe: [7.1] ) basiert auf XPath beschreibt welche Änderungen in XML-File gemacht werden diese Änderungen werden als XML formuliert ist kein W3C- oder ISO-Standard, sondern XML:DB Initiative praktisch, nicht so gut spezifiziert, ex. DTD der Syntax Popularität in einigen Implementierungen gefunden - [7.2]

© Prof. T. Kudraß, HTWK Leipzig Literatur [1] XML&Datenbanken M.Klettke, H.Meyer, dpunkt.verlag, 2002 [2] XML-QL: [3] XQL: [4] XPath: [5] XQuery: [6] XML/SQL: may/o33xml.html [7] XUpdate: /xupdate [8] XML – Von Anfang an, rororo, 2003 [9] Essential XML, D.Box, A.Skonnard, Addison-Wesley, 2001 [10] XSL und XPath, M.Bach, Addison-Wesley, 2000 [11] XQuery – Einführung und fortgeschrittene Methoden W.Lehner, H. Schöning, dpunkt Verlag, [12] XQuery – ein Überblick W.Lehner, H.Schöning, in Datenbank-Spektrum 11/2004.