XQuery Eine XML Abfragesprache Referent: Fabian Wleklinski (fabian@wleklinski.de) „XML - Datenrepräsentation und Abfragesprachen“ WS 2001/02
XQuery: Eine XML Abfragesprache Einleitung „Formale Semantik von XQuery“... ...ein 130 Seiten-Wälzer! Ziele der Präsentation: Wie ist die XQuery Semantik definiert? Was sind die Konzepte dahinter? Einblick in die XQuery Semantik! 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache Einleitung Warum XQuery? Der XQuery Standard XQuery Core Syntax Was ist Semantik? Statische Semantik Dynamische Semantik Software und Literatur 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache Warum XQuery? XML weltweit wichtigste (?), technische Sprache z.B. 8,5 Mio. Dokumente bei Suche mit www.google.com vgl. Suche nach SGML: ~1 Mio. Dokumente Lösung für Ansprüche des Informationszeitalters? XML zur Speicherung, Übertragung und Bearbeitung! Bedarf für Transformation bzw. Datenabfrage! XML benötigt Komplementärstandards! z.B. XPath, XLink, XPointer, XSL, XQuery Nutzen des Basisstandards nur beschränkt! 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache Warum XQuery? Warum kein SQL/OQL/... ??? Oracle,MSSQL,DB/2,... bieten doch XML an!? proprietäre Zugriffsmethoden Hauptaugenmerk nach wie vor: relationale Daten „Featuretis“, XML ist trendy Lediglich transparente (?) Mechanismen für Ein-/Ausgabe Unterstützung durch zukünftige Suchmaschinen? Direkte Eingabe von XQuery-Abfragen z.B. gezielte Suche nach Texten in Überschriften z.B. gezielte Suche nach Bildbeschreibungen 14. Dezember 2001 XQuery: Eine XML Abfragesprache
Warum XQuery? Anforderungen an XQuery: Wie kann eine XML Syntax Deklarative Syntax Intuitive, menschenlesbare Syntax XML Sprache Protokollunabhängigkeit Fehlerbehandlung Erweiterbarkeit spezielle XML-Funktionalitäten Und und und ...! Wie kann eine XML Syntax menschenlesbar sein??? 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache Warum XQuery? Menschenlesbarkeit vs. XML?!? Lösung: 2 Syntaxen! XQuery Syntax (menschenlesbar) XQueryX Syntax (XML) Dazu später mehr... Problem: Definition der Semantik!? Auf welche Syntax soll bezogen werden? Lösung: XQuery Core Syntax Dazu später mehr...! 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache Warum XQuery? Der XQuery Standard XQuery Core Syntax Was ist Semantik? Statische Semantik Dynamische Semantik Software und Literatur 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache Der XQuery Standard Wird vom w3c definiert http://www.w3.org/XML/Query (XQuery Heimatseite) Besteht aus 7 Einzeldokumenten! Und was steht da so drinnen? 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache Der XQuery Standard XML Query Requirements Definition von Anforderungen an eine XML Abfragesprache Working Draft vom 15.2.2001, etwa 11 Seiten XML Query Use Cases Anwendungsszenarien für XQuery Working Draft vom 8.6.2001, etwa 83 Seiten 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache Der XQuery Standard XQuery 1.0 and XPath 2.0 Data Model Definition des Datenmodells von XQuery, Datenformate der Ein- und Ausgabe einer Abfrage Working Draft vom 7.6.2001, etwa 36 Seiten XQuery 1.0 Formal Semantics Definition der statischen und dynamischen Semantik von XQuery Working Draft vom 7.6.2001, etwa 136 Seiten XQuery 1.0: An XML Query Language Zentrales Dokument der Sprachspezifikation, beinhaltet XQuery Syntax Working Draft vom 7.6.2001, etwa 80 Seiten 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache Der XQuery Standard XML Syntax for XQuery 1.0 (XQueryX) (Re-)Definition der Syntax von XQuery mittels XML (XQueryX) Working Draft vom 7.6.2001, etwa 21 Seiten XQuery 1.0 and XPath 2.0 Functions and Operators Version 1.0 Definition von grundlegenden Operatoren und Funktionen von XML Schema Datentypen für den Einsatz in XQuery und XPath. Working Draft vom 27.8.2001, etwa 181 Seiten 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache Der XQuery Standard Schwerpunkt dieser Präsentation: XQuery 1.0 Formal Semantics http://www.w3.org/TR/query-semantics/ Gliederung: Introduction (2 Seiten) XQuery Semantics by Example (26 Seiten) XQuery Core Syntax (10 Seiten) Static Semantics: Type-Inference Rules (25 Seiten) Dynamic Semantics: Value-Inference Rules (12 Seiten) XQuery Mapping to Core (13 Seiten) References (45 Seiten) 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache Der XQuery Standard Eine XQuery Anfrage besteht aus: Preamble Schemadeklarationen Namensraumdeklarationen Funktionsdeklarationen Body Genau 1 XQuery Ausdruck XQuery benutzt XML Schema und XPath! Einige Erweiterungen und Einschränkungen Später mehr...! 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache Warum XQuery? Der XQuery Standard XQuery Core Syntax Was ist Semantik? Statische Semantik Dynamische Semantik Software und Literatur 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache XQuery Core Syntax http://www.w3.org/TR/query-semantics, Kapitel 3 operiert auf XQuery Datenmodell Beide Oberflächensyntaxen lassen sich auf die XQuery Core Syntax abbilden dient zur Definition der XQuery Semantik! kann nicht „benutzt“ werden! 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache XQuery Core Syntax http://www.w3.org/TR/query-semantics, Kapitel6 Konventionen: „==>“ = Umwandlung XQuery -> XQuery Core „[[ Expr ]]“ = „ Expr“ nach XQuery Core transformiert Kein „.“ und „/“! [[ . ]] ==> $dot [[ / ]] ==> $roots Schauen wir uns ein paar Beispiele an... 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache XQuery Core Syntax empty() empty : Sequence<UnitValue> -> xs:boolean gibt genau dann true zurück, wenn das Argument die leere Folge ist empty-sequence() empty-sequence : Sequence<UnitValue> erzeugt eine leere Folge (Konstruktor) 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache XQuery Core Syntax xfo:value-equal() xfo:value-equal : (Sequence<UnitValue>, Sequence<UnitValue>) -> xs:boolean gibt genau dann true zurück, wenn beide Argumente vom Wert her gleich sind xfo:node-equal() xfo: node-equal : (Node,Node)->xs:boolean gibt genau dann true zurück, wenn beide Argumente die selbe Identität haben 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache XQuery Core Syntax Keine Pfadausdrücke! Z.B. statt [[E/a]]: for $v1 in [[ E ]] return for $v2 in children($v1) return typeswitch ($v2) as $v3 case ELEMENT a (AnyComplexType) return $v3 default return () 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache XQuery Core Syntax [[ E/DATA() ]] [[ //a ]] for $v1 in [[ E ]] return typed-value ( [[ E ]] ) [[ descendent-or-self( $root )/a ]] 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache XQuery Core Syntax [[ E[i1 to i2] ]] for $v in index([[ E1 ]]) return if ([[ $v/fst/data() >= i1 ]] and [[ $v/fst/data() <= i2 ]]) then [[ $v/snd/deref() ]] else () 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache XQuery Core Syntax [[<{Et} a1=E1 ... an=En> E </>]] <{ [[ Et ]] }> {[ ATTRIBUTE a1 [[E1]], ..., ATTRIBUTE an [[En]], [[E]] ]} </> 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache XQuery Core Syntax [[ (TREAT AS Type) E ]] root() typeswitch ([[ E ]]) as $v case Type return $v default return ERROR function root(AnyElement $x) returns AnyElement { let $p := parent($x) return if $p = () then $x else root($p) } 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache XQuery Core Syntax Datenmodell wird ebenfalls von XSLT 2.0 + XPath 2.0 benutzt! sowie von weiteren XML Anwendungen Basierend auf XML Information Set http://www.w3.org/TR/xml-infoset Erweitert um Unterstützung der Datentypen aus XML Schema Datentypen für die Repräsentation von mehreren Dokumenten Referenzen für den Verweis eines XML-Elementes auf ein anderes XML-Element 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache XQuery Core Syntax 5 Arten von Datentypen: Knoten Folgen Schemakomponenten Einfache Werte 19 XML Schema Datentypen Fehler Ein einziger Fehlertyp! Alle Wertebereiche (bis auf Fehler) sind unendlich! 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache XQuery Core Syntax Beide Oberflächensyntaxen von XQuery können auf XQuery Core Syntax abgebildet werden! Es gibt nur wenige Ausnahmen Vereinfachungen/Aliase der Oberflächensyntaxen Z.B. Existenz-Quantor Noch offene Probleme XQuery Core Syntax ist „syntaxneutral“ Weitere Oberflächensyntaxen sind denkbar Semantik muss nicht einmal pro Syntax definiert werden! (Anders als z.B. bei C!) 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache Warum XQuery? Der XQuery Standard XQuery Core Syntax Was ist Semantik? Statische Semantik Dynamische Semantik Software und Literatur 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache Was ist Semantik? Syntax: Definition des „Aussehens“ einer Sprache Welches Wort gehört zur Sprache, welches nicht? Es kann mehr als eine Syntax für eine Semantik geben! Siehe XQuery! Lässt sich durch einen Parser validieren! 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache Was ist Semantik? Beispiel: a = b; In Java syntaktisch gültig! Beispiel (natürliche Sprache): Peter fährt Auto. (Subjekt Prädikat Objekt) => syntaktisch gültiger Satz! Aber auch „Baum fährt Auto“ entspricht dieser Regel! => syntaktische Regeln sind nur sehr „schwach“. 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache Was ist Semantik? Semantik Semantik = Lehre von inhaltlicher Bedeutung einer Sprache Z.B. Programmiersprachen Semantik = statische Semantik + dynamische Semantik Neben Syntax 2. Standbein formaler Sprachdefinition Statische Semantik Betrachtet Datentypen „compile-time“ bzw. „analyze-time“ frühe Analyse, Fehlererkennung und Optimierung! 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache Was ist Semantik? Beispiel: boolean a = (int) b; syntaktisch gültig (Java), semantisch ungültig! Wird beim Compilieren bemängelt! Beispiel (natürliche Sprache): Auto fährt Baum. (Subjekt Prädikat Objekt) => syntaktisch gültiger Satz! Semantisch ungültig! Prädikat „fahren“ akzeptiert („Auto“, „Baum“) nicht als (Subjekt,Objekt)! 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache Was ist Semantik? Dynamische Semantik Betrachtet Werte statt Typen „run-time“ bzw. „evaluation-time“ Wirkung des Programms/Ausdrucks! 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache Was ist Semantik? Beispiel: a = (Integer) new Object(); syntaktisch gültig (Java) Nach statischer Semantik ebenfalls fültig! => Wird beim Compilieren nicht bemängelt! Beispiel (natürliche Sprache): Peter fährt Auto. Syntaktisch gültiger Satz, statisch-semantisch gültiger Satz! Nach dynamischer Semantik aber eventuell ungültig, z.B. dann, wenn Peter ein Kind ist. => dynamische Semantik hat kontextabhängigen Charakter! 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache Was ist Semantik? Nun wissen wir, was „Semantik“ bedeutet... ...aber wie definiert man sie? Dazu muss noch etwas ausgeholt werden... 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache Was ist Semantik? Umgebung = „Kontext der Ausführung“ Variablenwerte und –typen, Funktionen Umgebung besteht aus: Typumgebung of Wertumgebung VE of Funktionsumgebung FE of 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache Was ist Semantik? Typumgebung (static environment) Festes Regelwerk über Datentypen Wertumgebung (value environment) Werte der sichtbaren Variablen 2-Tupel (Variablenname,Wert) Funktionsumgebung (function environment) Deklarationen der sichtbaren Funktionen 3-Tupel (Funktionsname,Ausdruck,Parameterliste) 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache Was ist Semantik? Zugriff auf Elemente der Umgebung mittels „(...)“ siehe oben... 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache Was ist Semantik? Umgebungen verändern z.B. beim Definieren von Variablen oder Funktionen „lookup“ eines Elementes: durchsuche zuerst E´, danach durchsuche E 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache Was ist Semantik? Wie definiert man eine Semantik? Viele Möglichkeiten, wir beschränken uns auf: Abstraktes Regelwerk, Menge von „wenn-dann-Ausdrücken“ 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache Warum XQuery? Der XQuery Standard XQuery Core Syntax Was ist Semantik? Statische Semantik Dynamische Semantik Software und Literatur 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache Statische Semantik http://www.w3.org/TR/query-semantics, Kapitel 4 Statische Semantik von XQuery nutzt XML Schema Typisierung von Ausdrücken bereits zur Analysezeit! Frühe Analyse, Fehlererkennung, Kompilierung, Optimierung! Schauen wir uns einige Regeln an...! 14. Dezember 2001 XQuery: Eine XML Abfragesprache
Statische Semantik Wenn die Eingabe z.B <name>Mustermann</name> lautet... ...so ist das vom Typ ELEMENT name(xs:string) ! 14. Dezember 2001 XQuery: Eine XML Abfragesprache
Statische Semantik Der Datentyp einer Folge von Werten... ...ist die Folge der Datentypen! 14. Dezember 2001 XQuery: Eine XML Abfragesprache
Statische Semantik Ein bestimmter Datentyp, gefolgt von einer Folge desselben... ...ergibt wieder eine Folge dieses Datentyps! 14. Dezember 2001 XQuery: Eine XML Abfragesprache
Statische Semantik Der Datentyp einer Zuweisung... ...ist der Typ des „folgenden“ Ausdrucks! 14. Dezember 2001 XQuery: Eine XML Abfragesprache
Statische Semantik Der Datentyp einer bedingten Anweisung... ...ist entweder das Eine oder das Andere! 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache Warum XQuery? Der XQuery Standard XQuery Core Syntax Was ist Semantik? Statische Semantik Dynamische Semantik Software und Literatur 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache Dynamische Semantik http://www.w3.org/TR/query-semantics, Kapitel 5 Auswertung erst zur Abfragezeit! Performance! Fehlerquelle! Schauen wir uns ein paar exemplarische Regeln an...! 14. Dezember 2001 XQuery: Eine XML Abfragesprache
Dynamische Semantik Wenn Expr1 falsch ist, und Expr3 den Wert v3 hat, ... ...hat der Wert der Bedingung den Wert v3! (Umgekehrt auch...) 14. Dezember 2001 XQuery: Eine XML Abfragesprache
Dynamische Semantik Bei Gleichheitstest mit „= “... ...wird der Knotenwert verglichen! 14. Dezember 2001 XQuery: Eine XML Abfragesprache
Dynamische Semantik Bei Gleichheitstest mit „== “... ...wird die Knotenidentität geprüft! 14. Dezember 2001 XQuery: Eine XML Abfragesprache
Dynamische Semantik Wenn Expr1 falsch ist, und Expr3 den Wert v3 hat, ... ...hat der Wert der Bedingung den Wert v3! (Umgekehrt auch...) 14. Dezember 2001 XQuery: Eine XML Abfragesprache
Dynamische Semantik Hier wird ein leeres Element erzeugt! Beachte den Typ „t“! 14. Dezember 2001 XQuery: Eine XML Abfragesprache
Dynamische Semantik Wenn Expr1 zu v ausgewertet werden kann und v die leere Folge ist... ...dann ist der Wert einer for-Schleife die leere Folge! 14. Dezember 2001 XQuery: Eine XML Abfragesprache
Wenn Expr1 zu u1 bis un mit Werten v1 bis vn ausgewertet werden kann... Dynamische Semantik ...dann ist der Wert einer for-Schleife die Folge v1,...,vn! 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache Warum XQuery? Der XQuery Standard XQuery Core Syntax Was ist Semantik? Statische Semantik Dynamische Semantik Software und Literatur 14. Dezember 2001 XQuery: Eine XML Abfragesprache
Software und Literatur XQuery 1.0: An XML Query Language http://www.w3.org/TR/xquery/ XQuery 1.0 Formal Semantics http://www.w3.org/TR/query-semantics/ XQuery 1.0 and XPath 2.0 Data Model http://www.w3.org/TR/query-datamodel/ 14. Dezember 2001 XQuery: Eine XML Abfragesprache
Software und Literatur Software AG XML Tamino + AddOns www.xmlstarterkit.com Software AG Quip http://www.xmlstarterkit.com/developer/quip/default.htm XML Software Guide: Specialized XML Software http://wdvl.com/Software/XML/special.html XML Software Guide: Additional XML Software Resource Lists http://wdvl.com/Software/XML/resources.html 14. Dezember 2001 XQuery: Eine XML Abfragesprache
Software und Literatur XMLSOFTWARE XML Editors http://xmlsoftware.com/editors/ XMLSOFTWARE XML Browsers http://www.xmlsoftware.com/browsers/ XML Software Guide: XML and XSL Editors http://wdvl.com/Software/XML/editors.html XML.com Editors http://www.xml.com/pub/pt/3 14. Dezember 2001 XQuery: Eine XML Abfragesprache
Software und Literatur Übersicht von Free XML Tools http://www.garshol.priv.no/download/xmltools/name_ix.html 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache Kontakt & Downloads Fabian Wleklinski: fabian@wleklinski.de Folien und Ausarbeitung im PPT-, PDF-, PS- und HTML-Format verfügbar unter: http://www.stormzone.de/uni/Hauptstudium/seminare/xml/FW/list.php3 14. Dezember 2001 XQuery: Eine XML Abfragesprache
XQuery: Eine XML Abfragesprache Ende Das war‘s! Vielen Dank für Eure Aufmerksamkeit! 14. Dezember 2001 XQuery: Eine XML Abfragesprache