Inhaltsverzeichnis
Abbildungsverzeichnis............................................................................................................... 5
Beispielverzeichnis 5
Tabellenverzeichnis.................................................................................................................... 6
1. Einführung 8
1.1. XML als Sprache 8
1.2. Was ist eine Abfrage 10
1.3. Warum ist XQuery nötig 13
1.4. Das Beispiel 14
2. Datenmodell 16
2.1 Knoten 18
2.1.1 Knotenhierarchie 19
2.1.2 Knotenfamilie 19
2.1.3 Knotenidentität 21
2.2 Atomic Values 21
2.3 Sequenzen 22
2.4 Namespaces 23
2.5 Das Datenmodell als Baum 23
2.6 Das Datenmodell als Sequenz 25
3. XQuery als Abfragesprache 28
3.1 Input Funktionen 28
3.2 Navigieren durch den XML-Baum 29
3.2.1 Schritte 30
3.2.2 Achsen 31
3.2.3 Knotentests 32
3.2.4 Prädikate 33
3.2.4.1 Werteprädikat 33
3.2.4.2 Prädikate für Position 34
3.2.4.3 Das Kontext- Item 34
3.2.4.4 Der Baum in beiden Richtungen durchlaufen 35
3.2.4.5 Vergleich zwischen verschiedene Baumzweige 35
3.2.4.6 Finden eines Elements anhand seinen Namen 36
3.3 Erzeugen von XML Knoten und Attributen 36
3.3.1 Miteinbezogene Elemente und Attribute aus der Input- Dokument 37
3.3.2 Direkte Element- Konstruktoren 37
3.3.3 Computed Constructors 40
3.4. Verbinden und Restrukturieren von Knoten (FLWOR) 42
3.4.1 For und Let Klausel 44
3.4.2 Where Klausel 46
3.4.3 Order by Klausel 46
3.4.4 Return Klausel 47
3.4.5 Joins 48
3.5 Operatoren und Bedingte Ausdrücke 50
3.5.1 Arithmetische Operatoren 51
3.5.2 Vergleichsoperatoren 51
3.5.3 Sequenz Operatoren 53
3.5.4 Bedingte Ausdrücke 53
3.6 Funktionen 54
3.6.1 Built-In Funktionen 54
3.6.2 Benutzerdefinierte Funktionen 56
4. Vergleich von XQuery mit anderen Technologien 59
4.1 Vergleich mit SQL 59
4.1.1 Relationales Model vs XML Datenmodell 59
4.1.2 Syntax 61
4.1.3 Zusammenspiel von SQL und XQuery 65
4.2 Vergleich mit XSLT 67
4.2.1 Gemeinsame Komponenten 68
4.2.2 Unterschiede 69
5. Implementierungen 73
5.1 Saxon 73
5.2 eXist 74
6. Erweiterungen und Weiterentwicklungen von XQuery 81
6.1 Update Facility 81
6.2 Volltextsuche 83
6.3 XQuery 1 1 84
7. Zusammenfassung 86
Appendix A: Primitive Datentypen 87
Appendix B: Built-In Funktionen 88
Literaturverzeichnis 89
Abbildungsverzeichnis
Abbildung 1: Ergebnis nach Select-Operation 11
Abbildung 2: Ergebnis nach ausgeführtem Update 11
Abbildung 3: Verarbeitungsmodell 16
Abbildung 4: Datenmodellkomponenten 18
Abbildung 5: Knotenhierarchie 19
Abbildung 6: Datenmodellinstanz als Baum 24
Abbildung 7: Datenmodellinstanz als Sequenz 26
Abbildung 8: Das Mediathek Dokument 29
Abbildung 9: Computed Konstruktor Syntax 41
Abbildung 10: Syntax der FLWOR- Ausdruck 43
Abbildung 11: Syntax der for Klausel 44
Abbildung 12: Syntax der let Klausel 44
Abbildung 13: Syntax der order by Klausel 47
Abbildung 14: Syntax: bedingter Ausdruck 54
Abbildung 15: Syntax der Funktionsdeklaration 56
Abbildung 16: SQL (relationale) Repräsentation von Mediathek xml -Auszug 59
Abbildung 17: SQL (relationale) Repräsentation von PlaylistMediathek xml - Auszug 60
Abbildung 18: XQuery XSLT XPath 68
Abbildung 19: Syntax des insert Ausdrucks 82
Abbildung 20: Syntax des delete Ausdrucks 82
Abbildung 21: Syntax des replace Ausdrucks 82
Abbildung 22: Syntax des rename Ausdrucks 83
Abbildung 23: Syntax des Transform- Ausdrucks 83
Beispielverzeichnis NA
Beispiel 1: Kleines XML Dokument 9
Beispiel 2: Auszug aus generierte Mediathek xml 15
Beispiel 3: Auszug aus generierte PlaylistMediathek xml 15
Beispiel 4: Query mit Prolog und Body 16
Beispiel 5: Queryergebnis anhand Beispiel 4 17
Beispiel 6: Knotenarten und Knotenverwandtschaft 20
Beispiel 7: Der Name des ersten Kinderknoten innerhalb des ersten Musikstücks 21
Beispiel 8: Extrahieren von Atomic Values mittels data und string 21
Beispiel 9:Atomization 22
Beispiel 10:Eingabedokument mit Namensraum 23
Beispiel 11: Query mit Namensraum 23
Beispiel 12: Einfache Query 25
Beispiel 13: Ergebnis der Query 26
Beispiel 14: Einfache Navigation durch den XML- Baum 30
Beispiel 15: Anfrage mit Werteprädikat 33
Beispiel 16: Anfrage mit Prädikat für Position 34
Beispiel 17: Das Kontext-Item 35
Beispiel 18: XML Baum nach oben und nach unten durchlaufen 35
Beispiel 19: Vergleich zwischen verschiedene Baumzweige 36
Beispiel 20: Element anhand seines Namens finden 36
Beispiel 21: Elemente aus dem Input- Dokument 37
Beispiel 22: Konstruieren von XML- Elemente mit XML- Syntax 38
Beispiel 23: Hinzufügen eines Attributs zu einem Elementen 39
Beispiel 24: Entfernen von Kinder- Elemente 40
Beispiel 25: Einfacher computed Konstruktor 41
Beispiel 26: FLWOR 43
Beispiel 27: Query mit for Klausel 44
Beispiel 28: Query mit let Klausel 45
Beispiel 29: Query mit for und let Klausel 45
Beispiel 30: Query mit for und let Klausel 45
Beispiel 31: For Klausel: mehrere Variablen 46
Beispiel 32: Query mit where Klausel 46
Beispiel 33: Order by Klausel 47
Beispiel 34: Order by Klausel 2 47
Beispiel 35: Join 48
Beispiel 36: Join mit Prädikat 49
Beispiel 37: Outer Join 50
Beispiel 38: Implizite Typumwandlung 51
Beispiel 39: Der eq Operator 52
Beispiel 40: Expliziter cast bei untyped Values 52
Beispiel 41: Operator für Reihenfolgevergleich 53
Beispiel 42: Der union Operator 53
Beispiel 43: Der except Operator 53
Beispiel 44: Bedingter Ausdruck innerhalb eines FLWORs 54
Beispiel 45: Built-in Funktionen 55
Beispiel 46: Die Funktion string 56
Beispiel 47: Funktionsdeklaration 57
Beispiel 48: Rekursive Funktion 58
Beispiel 49: Kombination von Werte distinct-values 64
Beispiel 50: Join in SQL XQuery 64
Beispiel 51: Geschachtelte SQL XQuery Abfragen 65
Beispiel 52: Erzeugen einer relationalen Tabelle mit XML Inhalt 66
Beispiel 53: Auslesen von XML-Daten bei MySQL 66
Beispiel 54: XQuery Syntax vs XSLT Syntax 69
Beispiel 55: Push Stylesheet 70
Beispiel 56: Emulation von Templates durch benutzerdefinierte Funktionen 71
Beispiel 57: Anlegen einer neuen Collection 75
Beispiel 58: Speichern von XML- Dokumente in der Datenbank 77
Beispiel 59: Einfügen von neuen Knoten 79
Beispiel 60: Löschen eines Musikstücks 80
Tabellenverzeichnis
Tabelle 1: Achsen 31
Tabelle 2: Operatoren für Wertevergleich bzw generelles Vergleich 51
Tabelle 3: Knotenvergleich 52
Tabelle 4: Reservierte Funktionsnamen 58
Tabelle 5: SQL Query vs XQuery Query 62
Tabelle 6: SQL vs XQuery: Der IN Operator 62
Tabelle 7: SQL und XQuery not Operator Funktion 63
Tabelle 8: Äquivalente Funktionen bei XQuery und SQL 63
Tabelle 9: Mengenoperatoren................................................................................................... 65
Tabelle 10: Vergleich zwischen XSLT und XQuery Merkmale.............................................. 69
8
1. Einführung
Am Anfang dieser Master- Arbeit wird ein kurzer Überblick über XML als Sprache geschafft. Anschließend wird erklärt was unter den Begriff „Abfrage“ zu verstehen ist. Sind beide Begriffe erklärt, wird dann besprochen warum eine XML- Abfragesprache wie XQuery notwendig ist. In Kapitel 2 wird das XQuery Datenmodell beschrieben. In Kapitel 3 wird XQuery als Abfragesprache ausführlich beschrieben. Hier wird erklärt wie durch das XML- Baum navigiert werden kann, wie neue Knoten und Attribute er- zeugt werden können. Weiterhin wird beschrieben wie Knoten restrukturiert werden können. Die so genannten FLWOR- Ausdrücke werden Schritt für Schritt erläutert, um dann die Sprache XQuery mit weiteren Technologien wie SQL und XSLT kon- zeptionell vergleichen zu können. Im Nachhinein werden zwei Implementierungen vorgestellt und ihre Funktionalität erläutert. Im Anschluss wird klar gemacht wie die Zukunft von XQuery aussieht und welche Weiterentwicklungen und Anforderungen geplant sind. Das gesamte Tutorial wird durch ein, von Anfang an sich erweiterndes, Beispiel begleitet. Das Beispiel orientiert sich an klassische Musikstücke aus einer iTunes Mediathek.
1.1. XML als Sprache
Die Extensible Markup Language (engl. für erweiterbare Auszeichnungssprache) ab- gekürzt XML, ist eine Auszeichnungssprache für Dokumente, die strukturierte Infor- mationen enthalten [XMLcom01]. XML wird zur Darstellung hierarchisch struktu- rierter Daten in Form von Textdaten verwendet. Es wird vor allem zum Austausch von Daten zwischen verschiedenen IT-Systemen über das Internet eingesetzt. Im Vergleich zu HTML sind die Tags (engl. für Auszeichnungselement) nicht fest defi- niert. Der Benutzer kann selbst neue Elemente und Attribute definieren und sie, ent- sprechend seinem Nutzen, benennen. Ein XML- Element kann unterschiedliche Da- ten enthalten und beschreiben. Meistens sind es Daten in Form von Texte, aber auch Grafiken oder abstraktes Wissen. Der wichtigste Punkt dabei ist, dass die Struktur (DTD und Schemata) und das Layout (CSS, XSL) streng voneinander getrennt sind. Auf diese Weise können ein und dieselben Daten z.B. einmal als Grafik und einmal als Tabelle ausgegeben werden. Daraus lässt sich schließen, dass die XML- Ele- mente den Inhalt beschreiben, und nicht seine Darstellung.
XML- Dokumente müssen sich an einigen Regeln halten („Wohlgeformtheit“):
N Das Dokument hat genau ein Wurzelelement. Unterhalb dieses Wurzel- element können weitere Elemente mehrfach und verschachtelt vorkommen
N Die Elemente mit Inhalt sollen zunächst geöffnet und anschließend ge- schlossen werden. Elemente ohne Inhalt können auch in sich geschlossen sein.
9
Beispiel 1: Kleines XML Dokument
N Die Start- und Endtags sind ebenentreu-paarig verschachtelt usw.
Soll XML für den Datenaustausch zwischen verschiedene Systeme zum Einsatz kommen, ist es vorteilhaft, wenn das Format mit Hilfe einer Grammatik (z.B. DTD oder XML- Schema) definiert ist. Ein XML- Dokument wird als „gültig“ gekenn- zeichnet, wenn das Dokument:
N wohlgeformt ist
N auf eine Grammatik (z.B. DTD) verweist
N sich an die Regel der Grammatik hält
Weiterhin lassen sich XML- Dokumente, anhand ihres beabsichtigen Gebrauchs und ihres Strukturiertheitsgrades in strukturierte, unstrukturierte und semi- strukturierte Dokumente klassifizieren.
N Strukturierte (oder „datenzentrierte“) Dokumente: Dokumente, die hauptsäch- lich für die maschinelle Verarbeitung bestimmt sind. Die Dokumente folgen ein Schema, das Entitäten eines Datenmodells beschreibt und definiert, in welcher Beziehung die Entitäten zueinander stehen, sowie, welche Attribute die Entitäten haben. Das Dokument ist somit stark strukturiert und für den un- mittelbaren menschlichen Gebrauch weniger geeignet.
N Unstrukturierte (oder „dokumentzentrierte“) Dokumente: Dokumente, die von Menschen auch ohne zusätzliche Metainformationen verständlich sind. XML- Elemente werden hauptsächlich zur semantischen Markierung von Passagen des Dokuments genutzt (z.B. Kapitel oder Paragraphen eines Buches). Der Begriff „unstrukturiert“ ist ein wenig irreführend, da alle Dokumente eine ge- wisse Struktur haben, auch wenn diese Struktur nur implizit gegeben ist (z.B. Satzzeichen). Aufgrund der schwachen Strukturierung ist eine maschinelle Verarbeitung schwierig. XML könnte verwendet werden, um unstrukturierte Daten auszuzeichnen und zu repräsentieren. Diese Möglichkeit sollte aber vermieden werden. Im Allgemeinen ist XML für die semantische Auszeich- nung gedacht. Die Präsentation der Daten sollte z.B. an XSLT (Extensible Stylesheet Language Transformation) überlassen werden.
N Semi- strukturierte Dokumente: Eine Mischform für Dokumente, die stärker strukturiert als dokumentzentrierte Dokumente und wiederum schwächer strukturiert als datenzentrierte Dokumente sind.
10
1.2. Was ist eine Abfrage?
In Kapitel 1.1 wurde kurz über XML als Sprache diskutiert. In diesem Kapitel wird ein Überblick über dem Begriff „Abfrage“ geschafft. Es wird weiterhin erklärt wie tra- ditionelle bzw. nicht traditionelle Daten abgefragt werden können. Im Allgemeinen ist eine Abfrage (engl. query) „to ask questions of, especially with a desire for autho- ritative information“[MWqu] (engl. für „Fragen zu stellen, mit dem Wunsch, vor allem eine verbindliche Auskunft zu bekommen“). Wenn eine Datenbank abgefragt wird, ist das Ziel keine wohlbegründete Vermutung zu bekommen, sondern eine präzise und verbindliche Antwort. Die zweite Definition des Begriffs „Abfrage“ ist in Bezug auf Datenbanken. In diesem Kontext ist die Rede von einer Abfragesprache (engl. query
language). „[databases] provide a means of retrieving records or parts of records and performing various calculations before displaying the results. The interface by which such manipulations are specified is called the query language.“[BritQL] Eine Ab- fragesprache ist eine formale Sprache zum Suchen nach Informationen. Das Ergeb- nis einer Abfrage ist eine Teilmenge des zugrundeliegenden Informationsbestandes. Man spricht auch von Filterung der Daten. Das Ergebnis soll nicht unbedingt eine Teilmenge des Informationsbestandes sein, da Berechnungen ebenfalls möglich sind.
Das Ergebnis der Abfrage soll nicht nur ein Datensatz oder eine Menge von Datensätze zurückgeben, sondern eine Teilmenge der zugrundeliegenden Daten. Eine Manipulation der Daten soll auch möglich sein (Vergleich, Aggregation, Trans- formation etc.). Im Allgemeinen wird unterschieden zwischen eine Anfrage zur Se- lektion von Daten (SELECT), und eine Anfrage, die die Daten manipuliert (INSERT,
UPDATE, DELETE).
Wie schon weiter oben erwähnt wurde, wird hier ein kurzer Überblick geschafft, wie traditionelle bzw. nicht traditionelle Daten abgefragt werden können. Zunächst soll klar gemacht werden was traditionelle Daten sind. Weitestgehend sind traditionelle Daten, Daten vom Typ integer, date und string. D.h. Daten, die leicht in Tabellen und Spalten gespeichert werden können. In den letzten 20-30 Jahren hat sich als beste Lösung fürs Abfragen von traditionellen Daten, SQL (engl. Structured Query Lan- guage) erwiesen.
Die Mehrheit der kritischen Daten der Welt sind in relationale Datenbanken ge- speichert. Das führt dazu, dass viele Benutzer und Applikationen SQL verwenden, um Daten zu finden, aufzurufen oder zu manipulieren. Anders formuliert: SQL hat sich als Benchmark (gold standard) fürs Abfragen von Daten etabliert. Deshalb ist es für jeden neuen Ansatz wichtig, dass es alle Sachen bewältigen kann, oder zu- mindest einen guten Argument gibt, warum bestimmte Sachen nicht gemacht wer- den. In Abbildung 1 und Abbildung 2 ist ganz grob gezeigt wie eine Tabelle einer relationalen Datenbank aussieht und wie die Daten mittels SQL abgefragt werden. In dieser Arbeit wird nicht detailliert auf die Eigenschaften und die Funktionalität von re- lationale Datenbanken und SQL eingegangen.
11
select *
from mediathek where TrackID >= 1038 and TrackID <= 1041 order by TrackID desc;
Abbildung 1: Ergebnis nach Select-Operation
update mediathek
set DateAdded = "2008-11-26 18:00:00" where TrackID = 1040;
Abbildung 2: Ergebnis nach ausgeführtem Update
Allerdings sind mindestens 90% der Daten der Welt nicht traditionell. Viele wertvolle Informationen sind z.B. in Word-Dateien, Power Point Präsentationen, PDF- Doku- mente, Diagramme etc. versteckt. „Nicht traditionelle Daten“ sind solche Daten, die normalerweise nicht als Zahlen, Daten oder Zeichenketten repräsentiert werden kön- nen [QuXML01]. Solche Daten sind z.B. Bilder, Videofilme oder erzählerische, dis- kursive Texte.
In diesem Abschnitt werden drei Ansätze vorgestellt, wie nicht traditionelle Daten ab- gefragt werden können – durch Metadaten, Objekte und Textauszeichnungen. Es wird angenommen, dass für das Musikstück „III. Allegretto non troppo - Allegro molto vivace“ von Mendelssohn folgende Daten vorhanden sind:
N Musik: III._Allegretto_non_troppo_-_Allegro_molto_vivace.aac N Video: III._Allegretto_non_troppo_-_Allegro_molto_vivace.mpg N Bild: III._Allegretto_non_troppo_-_Allegro_molto_vivace.jpg N Partitur: III._Allegretto_non_troppo_-_Allegro_molto_vivace.pdf
1. Ansatz: Metadaten
Ein erster Ansatz für das Speichern von nicht traditionellen Daten liegt in der Tat- sache, dass die Daten wie ein black-box Datenblock gespeichert werden. Dazu wer- den noch die Metadaten hinzugefügt. Dieser Datenblock wird BLOB (engl. binary large object) genannt. Trotz seinem Namen, hat ein LOB (large object) keines der nützlichen Objektattribute. Die LOB Speicherung bedeutet nur, dass das Datenobjekt als ein Ganzes an einer Stelle gespeichert ist. Wenn die Daten schon „in einem LOB“ sind, kann der LOB in der Datenbank gespeichert werden. Dabei werden auch Meta- daten in anderen Spalten der Tabelle hinzugefügt. Auf diese Weise können die Meta- daten abgefragt werden, um eine bestimmte Instanz des LOBs zu finden oder, um
12
Informationen über dem LOB zu bekommen. Es gibt mehrere Möglichkeiten Meta- daten zu generieren:
N In einige Datenformate sind die Metadaten eingebettet. Z.B. PDF und Micro- soft Word Dateien haben automatisch generierte Metadaten: Name des Au- tors, Name des Dokumentes, wann die letzte Änderung vorgenommen war, etc. Diese Metadaten können extrahiert und dann in der Datenbank gespei- chert und anschließend abgefragt werden.
N Der Benutzer, der die Daten veröffentlicht (speichert in die Datenbank), kann z.B. durch ein CMS (kürz. Content Management System) neue Metadaten hin- zufügen.
2. Ansatz: Objekte
Dieser Ansatz ermöglicht die Speicherung von nicht traditionellen Daten in eine Weise, so dass die Objekte durchsichtig sind (to-open-the-box). So kann z.B. ein PDF- Dokument wie ein PDF- Dokument behandelt werden und nicht wie ein black- box LOB. Das einzige, was getan werden soll, ist ein Objekttyp zu definieren, der die PDF- formatierte Daten repräsentieren kann. Dazu müssen noch einige Methoden definiert werden, die für PDF sinnvoll sind. Anschließend kann das eigentliche Do- kument abgefragt werden und nicht seine Metadaten.
3. Ansatz: Markup
Es wurde diskutiert, wie man nicht traditionelle Daten mit Metadaten dekorieren kann. Es wurde auch die Möglichkeit vorgestellt nicht traditionelle Daten mit Hilfe des Objekt- Ansatzes direkt abzufragen. Beide Ansätze verlangen aber einen speziellen und nicht standardisierten Aufwand. Der Metadaten- Ansatz verlangt manueller Aufwand oder Aufwand für die Programmierung, um die Metadaten zu generieren. Dabei sollen auch einige Designentscheidungen getroffen werden, wie diese Meta- daten gespeichert werden. Der Objekt-Ansatz verlangt die Definition von Objekttypen und Methoden. Dabei müssen Objekttypen für jeden Datentyp definiert werden.
Der dritte Ansatz ist durch Markup. Auf diese Weise wird ein XML- Dokument erzeugt, das durch existierende Tools beschrieben und abgefragt werden kann. XML ist ziemlich anders im Vergleich zu relationale Daten. Man kann natürlich XML Daten in z.B. relationale Daten konvertieren, um dann z.B. SQL als Abfragesprache nutzen zu können. In einigen Fällen ist das auch die beste Strategie. Wenn z.B. die XML - Daten sehr regulär sind und wenn sie mehrmals auf die gleiche Art und Weise abgefragt werden, dann ist es vielleicht effizienter die Daten in einem relationalen Kontext parat zu haben. Manchmal ist aber erwünscht die Daten in XML Format speichern und repräsentieren zu können. Abfragen von XML- Daten ist unterschied- lich als das Abfragen von relationalen Daten. Hier soll durch die Baumstruktur navi- giert werden, um z.B. den Inhalt eines Elements zu finden.
13
1.3. Warum ist XQuery nötig?
XML wird in den letzten Jahren immer öfters verwendet. Mittlerweile werden viele Informationen in XML gespeichert. Das gilt sowohl für XML- Datenbanken als auch für XML- Dokumente, die auf dem Dateisystem gespeichert sind. Diese Informa- tionen können strukturiert, semi- strukturiert oder relativ nicht strukturiert (z.B. Bü- cher) sein. Noch mehr Informationen werden zwischen verschiedene Systeme vor- übergehend als XML ausgetauscht. Die Informationen, können für verschiede Zwe- cke gebraucht werden. In diesem Fall sind verschiedene Elemente von Interesse. Aus diesem Grund kann es wünschenswert sein, diese Daten entsprechend forma- tiert und transformiert zu bekommen.
XQuery (kürz. XML Query Language) ist eine vom W3C spezifizierte Ab- fragesprache. XQuery wurde implementiert um genau diese Anforderungen zu erfül- len. Mit XQuery ist es möglich XML- Elemente zu selektieren, die Datenstruktur zu reorganisieren oder zu transformieren. Es ist ebenfalls möglich die Ergebnisse, die von der Abfrage zurückgegeben werden, in einer gewünschten Struktur auszugeben. XQuery bietet viele Features, die viele verschiedene Operationen an XML- Daten und Dokumente ermöglichen, wie z.B.:
N Selektieren von Informationen auf Basis eines spezifischen Kriteriums
N Ausfiltern von Informationen
N Informationssuche in einem oder mehreren Dokumenten
N Zusammenstellen (join) von Daten aus verschiedenen Dokumenten
N Sortierung, Gruppierung, Aggregation von Daten
N Transformation und Restrukturierung von XML- Daten in einer anderen Struktur
N Manipulation von Zeichenketten (strings)
N Ausführen von arithmetische Operationen
Es wurde gezeigt, dass XQuery nicht nur für Selektion von XML Daten verwendet werden kann, sondern auch für die Manipulation und Transformation der Ergebnisse. Die aktuelle Version XQuery 1.0 unterstützt keine update Funktion, was für XML- Da- ten, die in einem XML Datenbank gespeichert sind, sehr nützlich wäre. Zum jetzigen Zeitpunkt wird die Erweiterung XQuery Update Facility 1.0 verwendet, um Aktuali- sierungsoperationen auszuführen. In die angekündigte Entwicklung von XQuery 1.1 soll die update Funktionalität (siehe Kapitel 6.1: Update Facility) ebenfalls kompatibel sein. In die Weiterentwicklungen von XQuery wird im Detail in Kapitel 6 eingegangen.
14
Es gibt viele Gründe warum XML- Daten abgefragt werden. Bestimmt so viel wie die Gründe warum XML- Daten verwendet werden. Einige Beispiele warum XQuery als Abfragesprache verwendet wird:
N Suchen von Textdokumente, die in einer nativen XML Datenbank gespei- chert sind und Ausgabe der Ergebnisse.
N Extrahieren von Informationen aus einer relationalen Datenbank, um die Informationen in einem Web-Service zu nutzen.
N Generieren von Ergebnisse aus einer Datenbank, um die Daten im Web als XHTML (erweiterbares HTML) zu präsentieren.
1.4. Das Beispiel
Das Beispiel was uns durch dieses Tutorial begleiten wird, ist eine aus iTunes ex- portierte Mediathek. Das Beispiel orientiert sich an klassische Musikstücke und Play- listen. Die wichtigsten Eigenschaften eines Musikstücks sind in der XML Dokument eingetragen (z.B. Titel, Komponist, Artist, Album Genre, etc.). Beispiel 2 enthält In- formationen über zwei Musikstücke. Die gesamte Mediathek enthält 714 Musik- stücke. Beispiel 3 enthält Informationen über eine Wiedergabeliste (engl. playlist). Die gesamte Playlist- Mediathek enthält 45 Wiedergabelisten.
15
16
2. Datenmodell
Zunächst wird das Verarbeitungsmodell von XQuery erklärt. Im Anschluss wird das XQuery Datenmodell (kürz. XDM) vorgestellt.
Abbildung 3: Verarbeitungsmodell
In Abbildung 3 sind die Komponenten des XQuery Verarbeitungsmodels dargestellt. Die XML Input Dokumente sind in diesem Tutorial, die Daten die abgefragt werden. Die Daten können in verschiedenen Formen bereitgestellt werden. Sie können XML- Dokumente, Fragmente aus XML- Dokumente, in nativen XML Datenbanken gespei- cherte Daten (z.B. eXist, siehe Kapitel 5.2), in relationale Datenbanken gespeicherte Daten, sein. Die XML- Daten müssen aber auf jeden Fall wohlgeformt sein.
Die XQuery Anfrage kann in einer Text- Datei oder im Programmkode enthalten sein. Es kann dynamisch vom Programmkode generiert werden oder manuell durch den Anwender eingegeben werden. Die Anfrage muss nicht unbedingt in einer Datei sein. Es kann von mehreren Dateien konstruiert werden, die so genannten Module. Eine Query beinhaltet ein Prolog und ein Hauptteil (engl. body), wobei das Prolog- Teil op- tional ist. Der Prolog steht am Queryanfang und da werden die verschiedenen Deklarationen eingetragen. Der Hauptteil besteht aus einem Ausdruck oder aus einer Sequenz von Ausdrücken, die mit Komma voneinander getrennt werden (Beispiel 4).
17
Das Ergebnis der oberen Abfrage ist im Beispiel 5 zu sehen. Wäre das Hauptteil oh- ne Komma gewesen, so würde es ein Syntaxfehler geben, da der Hauptteil aus zwei separate Ausdrücke bestünde.
Beispiel 5: Queryergebnis anhand Beispiel 4
Der Kontext (das blaue Quadrat in Abbildung 3) beinhaltet Informationen, die die Queryauswertung beeinflussen. Im Kontext stehen z.B. externe Bibliotheken, Varia- blen, die außerhalb der Query oder im Prolog definiert sind, usw.
Der Query Prozessor ist die Softwarekomponente, die die Query parst, analysiert und im Anschluss auswertet. Die Analyse und die Auswertung kann mit der Kompi-lierung und Ausführung von Programmkode verglichen werden. In der Analysephase wird die Syntax der Query überprüft. In der Auswertungsphase werden eigentlich die Ergebnisse der Query ausgewertet [XQ01]. Diese Ergebnisse basieren logischer- weise auf das Input Dokument. Beide Phasen können statische und dynamische Fehler erkennen und Fehlermeldungen auswerfen. In XQuery sind die Fehlernummer in der Form z.B. FOAR0001 (Division durch 0). Die vollständige Liste der Fehler- nummer kann bei Bedarf nachgeschlagen werden [XQT-ER]. Das Ergebnis ist eine Sequenz von Werten, die vom Query Prozessor zurückgegeben wird. Die Ergebnisse können an der graphischen Benutzeroberfläche angezeigt werden, in einer XML- Datei gespeichert werden (engl. serialization) oder an einer weiteren Applikation wei- tergeleitet werden, die sich dann für die anschließende Verarbeitung der Daten kümmert.
Beachte: Bis jetzt wurde das Verarbeitungsmodell erklärt und der ist nicht mit dem Datenmodell zu verwechseln!
Das XQuery Datenmodell ist als ein formales Datenmodell definiert und nicht als XML- Text. Das XQuery Datenmodell ist offiziell als XQuery 1.0 und XPath 2.0 Da- tenmodell (XDM) bekannt. Jede Eingabe einer Query ist eine Datenmodellinstanz. Beziehungsweise ist die Ausgabe einer Query ebenfalls eine Datenmodellinstanz. Das Datenmodell ist nicht mit dem Infoset (das W3C Modell für XML, [XML-IS]) iden- tisch, weil das XQuery Datenmodell auch solche Werte (Ergebnisse) unterstützen soll, die kein vollständiges, d.h. kein wohlgeformtes XML- Dokument sind. Ein Bei- spiel für ein solches Ergebnis ist eine Sequenz, die kein Wurzelelement hat. Das Datenmodell beschreibt sowohl die Struktur der Eingabedokumente, als auch die Struktur der Ausgabe. Die Komponenten des XQuery Datenmodells sind:
N Knoten (engl. node): Ein XML- Konstrukt wie z.B. ein Element oder ein Attribut
N Atomic value: Ein einfacher Wert, bei dem kein Markup assoziiert ist.
N Item: Ein generischer Ausdruck, dass auf einem Knoten oder auf einem Datenwert verweist
18
N Sequenz: Eine geordnete Liste bestehend aus keinem, einem oder mehreren Items
Abbildung 4: Datenmodellkomponenten
XQuery Datenmodellinstanzen können auf verschiedene Art und Weise konstruiert werden. Die XQuery Datenmodellspezifikation beschreibt, wie eine XDM Instanz aus dem Infoset und dem PSVI (kürz. Post-Schema-Validation-Infoset) erzeugt werden kann. Instanzen können auch direkt erzeugt werden, entweder als Ausgabe einer XQuery, oder durch direkte Konstruktion mittels einer Applikation. Die XDM Spe- zifikation definiert die XDM Instanz als eine Sequenz von Items, wobei jedes Item ein Knoten oder ein Wert ist.
2.1 Knoten
Die Knoten werden verwendet, um Konstrukte wie Elemente und Attribute zu repräsentieren. Knoten kommen als Ergebnis einer Anfrage oft vor. Z.B der Pfadausdruck doc("Mediathek.xml")/library/Tracks/track gibt 714 Ele- mentknoten zurück.
Im Allgemeinen werden 7 Knotenarten unterschieden:
N Document Node: Stellt das gesamte XML- Dokument (und nicht das äußerste Element) dar.
N Element Node: ein XML- Element
N Attribute Node: ein XML- Attribut
N Text Nodes: repräsentieren Zeichenketten, die in einem Element enthalten sind
N Processing Instruction Node: XML Befehlsverarbeitung
N Comment Node: ein XML- Kommentar
Quote paper:
Master of Science Dimitar Menkov, 2009, Entwicklung eines Tutorials für XQuery, Munich, GRIN Publishing GmbH
This text can be quoted and accessed from this url:
Embed
DOI
Formatvorlage (Microsoft Word) für eine Diplomarbeit, Masterarbeit, Ha...
Für MS Word 2003 - Update 2010
Presentations, Models, Tutorials, Instructions
Elaboration, 25 Pages
Formatvorlage (OpenOffice) für eine Diplomarbeit, Masterarbeit, Hausar...
Presentations, Models, Tutorials, Instructions
Elaboration, 35 Pages
Formatvorlage / Vorlage zur Erstellung einer Diplomarbeit, Bachelorarb...
Presentations, Models, Tutorials, Instructions
Elaboration, 15 Pages
Formatvorlage / Vorlage für eine Diplomarbeit / Hausarbeit
Für MS Word 2007 - dotx
Presentations, Models, Tutorials, Instructions
Elaboration, 25 Pages
Anleitung zum Erstellen schriftlicher Arbeiten: Der Aufbau einer wisse...
Presentations, Models, Tutorials, Instructions
Elaboration, 20 Pages
Erstellen einer schriftlichen Hausarbeit
Presentations, Models, Tutorials, Instructions
Termpaper, 14 Pages
Grundtechniken wissenschaftlichen Arbeitens
Bibliografieren - Reden - Schr...
Presentations, Models, Tutorials, Instructions
Script, 46 Pages
Ratgeber zur Erstellung wissenschaftlicher Arbeiten. Diplomarbeiten - ...
Presentations, Models, Tutorials, Instructions
Elaboration, 39 Pages
Dimitar Menkov's text Entwicklung eines Tutorials für XQuery is now available as a printed book
Dimitar Menkov has published the text Entwicklung eines Tutorials für XQuery
Dimitar Menkov has uploaded a new text
Essential Cosmic Perspective Media Update Value Package (Includes Lect...
Jeffrey O. Bennett, Megan Donahue, Nicholas Schneider
Essential Cosmic Perspective Media Update Value Pack (Includes Lecture...
Jeffrey O. Bennett, Megan Donahue, Nicholas Schneider
0 comments