Title:
1XQueryEine XML Abfragesprache
Referent Fabian Wleklinski (fabian_at_wleklinski.de)
- XML - Datenrepräsentation und AbfragesprachenWS
2001/02
2Einleitung
- 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!
3Einleitung
- Warum XQuery?
- Der XQuery Standard
- XQuery Core Syntax
- Was ist Semantik?
- Statische Semantik
- Dynamische Semantik
- Software und Literatur
4Warum 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!
5Warum 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
6Warum XQuery?
- Anforderungen an XQuery
- 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???
7Warum 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...!
8- Warum XQuery?
- Der XQuery Standard
- XQuery Core Syntax
- Was ist Semantik?
- Statische Semantik
- Dynamische Semantik
- Software und Literatur
9Der XQuery Standard
- Wird vom w3c definiert
- http//www.w3.org/XML/Query (XQuery Heimatseite)
- Besteht aus 7 Einzeldokumenten!
- Und was steht da so drinnen?
10Der 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
11Der 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
12Der 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
13Der 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)
14Der 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...!
15- Warum XQuery?
- Der XQuery Standard
- XQuery Core Syntax
- Was ist Semantik?
- Statische Semantik
- Dynamische Semantik
- Software und Literatur
16XQuery 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!
17XQuery Core Syntax
- http//www.w3.org/TR/query-semantics, Kapitel6
- Konventionen
- gt Umwandlung XQuery -gt XQuery Core
- Expr Expr nach XQuery Core
transformiert - Kein . und /!
- . gt dot
- / gt roots
- Schauen wir uns ein paar Beispiele an...
18XQuery Core Syntax
- empty()
- empty SequenceltUnitValuegt -gt xsboolean
- gibt genau dann true zurück, wenn das Argument
die leere Folge ist - empty-sequence()
- empty-sequence SequenceltUnitValuegt
- erzeugt eine leere Folge (Konstruktor)
19XQuery Core Syntax
- xfovalue-equal()
- xfovalue-equal (SequenceltUnitValuegt,
SequenceltUnitValuegt) -gt xsboolean - gibt genau dann true zurück, wenn beide Argumente
vom Wert her gleich sind - xfonode-equal()
- xfo node-equal (Node,Node)-gtxsboolean
- gibt genau dann true zurück, wenn beide Argumente
die selbe Identität haben
20XQuery 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 ()
21XQuery Core Syntax
for v1 in E return typed-value ( E
)
descendent-or-self( root )/a
22XQuery Core Syntax
for v in index( E1 ) return if (
v/fst/data() gt i1 and v/fst/data() lt
i2 ) then v/snd/deref() else ()
23XQuery Core Syntax
- ltEt a1E1 ... anEngt E lt/gt
lt Et gt ATTRIBUTE a1 E1, ...,
ATTRIBUTE an En, E lt/gt
24XQuery Core Syntax
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)
25XQuery 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
26XQuery 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!
27XQuery 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!)
28- Warum XQuery?
- Der XQuery Standard
- XQuery Core Syntax
- Was ist Semantik?
- Statische Semantik
- Dynamische Semantik
- Software und Literatur
29Was 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!
30Was ist Semantik?
- Beispiel a b
- In Java syntaktisch gültig!
- Beispiel (natürliche Sprache) Peter fährt Auto.
- (Subjekt Prädikat Objekt) gt syntaktisch gültiger
Satz! - Aber auch Baum fährt Auto entspricht dieser
Regel! - gt syntaktische Regeln sind nur sehr schwach.
31Was 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!
32Was 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) gt syntaktisch gültiger
Satz! - Semantisch ungültig!
- Prädikat fahren akzeptiert (Auto, Baum)
nicht als (Subjekt,Objekt)!
33Was ist Semantik?
- Dynamische Semantik
- Betrachtet Werte statt Typen
- run-time bzw. evaluation-time
- Wirkung des Programms/Ausdrucks!
34Was ist Semantik?
- Beispiel a (Integer) new Object()
- syntaktisch gültig (Java)
- Nach statischer Semantik ebenfalls fültig! gt
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. - gt dynamische Semantik hat kontextabhängigen
Charakter!
35Was ist Semantik?
- Nun wissen wir, was Semantik bedeutet...
- ...aber wie definiert man sie?
- Dazu muss noch etwas ausgeholt werden...
36Was ist Semantik?
- Umgebung Kontext der Ausführung
- Variablenwerte und typen, Funktionen
- Umgebung ? besteht aus
- Typumgebung ? of ?
- Wertumgebung VE of ?
- Funktionsumgebung FE of ?
37Was 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)
38Was ist Semantik?
- Zugriff auf Elemente der Umgebung mittels (...)
- siehe oben...
39Was ist Semantik?
- Umgebungen verändern
- z.B. beim Definieren von Variablen oder
Funktionen - lookup eines Elementes
- durchsuche zuerst E,
- danach durchsuche E
40Was ist Semantik?
- Wie definiert man eine Semantik?
- Viele Möglichkeiten, wir beschränken uns auf
- Abstraktes Regelwerk,
- Menge von wenn-dann-Ausdrücken
41- Warum XQuery?
- Der XQuery Standard
- XQuery Core Syntax
- Was ist Semantik?
- Statische Semantik
- Dynamische Semantik
- Software und Literatur
42Statische 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...!
43Statische Semantik
Wenn die Eingabe z.B ltnamegtMustermannlt/namegt
lautet...
...so ist das vom TypELEMENT name(xsstring) !
44Statische Semantik
Der Datentyp einer Folge von Werten...
...ist die Folge der Datentypen!
45Statische Semantik
Ein bestimmter Datentyp, gefolgt von einer Folge
desselben...
...ergibt wieder eine Folge dieses Datentyps!
46Statische Semantik
Der Datentyp einer Zuweisung...
...ist der Typ des folgenden Ausdrucks!
47Statische Semantik
Der Datentyp einer bedingten Anweisung...
...ist entweder das Eine oder das Andere!
48- Warum XQuery?
- Der XQuery Standard
- XQuery Core Syntax
- Was ist Semantik?
- Statische Semantik
- Dynamische Semantik
- Software und Literatur
49Dynamische Semantik
- http//www.w3.org/TR/query-semantics, Kapitel 5
- Auswertung erst zur Abfragezeit!
- Performance!
- Fehlerquelle!
- Schauen wir uns ein paar exemplarische Regeln
an...!
50Dynamische Semantik
Wenn Expr1 falsch ist, und Expr3 den Wert v3 hat,
...
...hat der Wert der Bedingung den Wert v3!
(Umgekehrt auch...)
51Dynamische Semantik
Bei Gleichheitstest mit ...
...wird der Knotenwert verglichen!
52Dynamische Semantik
Bei Gleichheitstest mit ...
...wird die Knotenidentität geprüft!
53Dynamische Semantik
Wenn Expr1 falsch ist, und Expr3 den Wert v3 hat,
...
...hat der Wert der Bedingung den Wert v3!
(Umgekehrt auch...)
54Dynamische Semantik
Hier wird ein leeres Element erzeugt!
Beachte den Typ t!
55Dynamische Semantik
Wenn Expr1 zu v ausgewertet werden kann und v die
leere Folge ist...
...dann ist der Wert einer for-Schleife die leere
Folge!
56Dynamische Semantik
Wenn Expr1 zu u1 bis un mit Werten v1 bis vn
ausgewertet werden kann...
...dann ist der Wert einer for-Schleife die Folge
v1,...,vn!
57- Warum XQuery?
- Der XQuery Standard
- XQuery Core Syntax
- Was ist Semantik?
- Statische Semantik
- Dynamische Semantik
- Software und Literatur
58Software 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/
59Software und Literatur
- Software AG XML Tamino AddOns
- www.xmlstarterkit.com
- Software AG Quip
- http//www.xmlstarterkit.com/developer/quip/defaul
t.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
60Software 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
61Software und Literatur
- Ãœbersicht von Free XML Tools
- http//www.garshol.priv.no/download/xmltools/name_
ix.html - Ãœbersicht von Free XML Tools
- http//www.garshol.priv.no/download/xmltools/name_
ix.html
62Kontakt Downloads
- Fabian Wleklinski
- fabian_at_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
63Ende
- Das wars!
- Vielen Dank für Eure Aufmerksamkeit!