Upload
helene-boehne
View
107
Download
0
Embed Size (px)
Citation preview
„XML - Datenrepräsentation und Abfragesprachen“WS 2001/02
XQueryEine XML Abfragesprache
Referent: Fabian Wleklinski ([email protected])
14. Dezember 2001 XQuery: Eine XML Abfragesprache 2
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 3
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 4
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 5
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 6
Warum 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???
14. Dezember 2001 XQuery: Eine XML Abfragesprache 7
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 8
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 9
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 10
Der XQuery Standard
(1) XML Query Requirements Definition von Anforderungen an eine XML
Abfragesprache Working Draft vom 15.2.2001, etwa 11 Seiten
(2) XML Query Use Cases Anwendungsszenarien für XQuery Working Draft vom 8.6.2001, etwa 83 Seiten
14. Dezember 2001 XQuery: Eine XML Abfragesprache 11
Der XQuery Standard
(3) 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
(4) XQuery 1.0 Formal Semantics Definition der statischen und dynamischen Semantik von XQuery Working Draft vom 7.6.2001, etwa 136 Seiten
(5) 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 12
Der XQuery Standard
(6) 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
(7) 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 13
Der XQuery Standard Schwerpunkt dieser Präsentation: XQuery 1.0 Formal
Semantics http://www.w3.org/TR/query-semantics/
Gliederung:1. Introduction (2 Seiten)
2. XQuery Semantics by Example (26 Seiten)
3. XQuery Core Syntax (10 Seiten)
4. Static Semantics: Type-Inference Rules (25 Seiten)
5. Dynamic Semantics: Value-Inference Rules (12 Seiten)
6. XQuery Mapping to Core (13 Seiten)
7. References (45 Seiten)
14. Dezember 2001 XQuery: Eine XML Abfragesprache 14
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 15
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 16
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 17
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 18
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 19
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 20
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 21
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 22
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 23
XQuery Core Syntax [[<{Et} a1=E1 ... an=En> E </>]]
<{ [[ Et ]] }> {[ ATTRIBUTE a1 [[E1]], ..., ATTRIBUTE an [[En]], [[E]]]} </>
14. Dezember 2001 XQuery: Eine XML Abfragesprache 24
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 25
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 26
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 27
XQuery Core Syntax Beide Oberflächensyntaxen von XQuery können
auf XQuery Core Syntax abgebildet werden! Es gibt nur wenige Ausnahmen
(1) Vereinfachungen/Aliase der Oberflächensyntaxen• Z.B. Existenz-Quantor
(2) 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 28
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 29
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 30
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 31
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 32
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 33
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 34
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 35
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 36
Was ist Semantik? Umgebung = „Kontext der Ausführung“
Variablenwerte und –typen, Funktionen
Umgebung besteht aus: Typumgebung of Wertumgebung VE of Funktionsumgebung FE of
: ,VE,FE
14. Dezember 2001 XQuery: Eine XML Abfragesprache 37
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 38
Was ist Semantik?
of Datentyp von
VE of Wert von
FE of Funktion
Variable t Variable
Variable v Variable
QName f f
Zugriff auf Elemente der Umgebung mittels „(...)“ siehe oben...
14. Dezember 2001 XQuery: Eine XML Abfragesprache 39
Was ist Semantik?
, " verändert durch "
of , of ;
, : VE of ,VE of ;
FE of ,FE of
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 40
Was ist Semantik? Wie definiert man eine Semantik?
Viele Möglichkeiten, wir beschränken uns auf:• Abstraktes Regelwerk,• Menge von „wenn-dann-Ausdrücken“
Hessen
Frankfurt
Es regnet true
(nass werden) true
14. Dezember 2001 XQuery: Eine XML Abfragesprache 41
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 42
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 43
Statische Semantik
:
/ : ELEMENT ( )
Data t
NCName Data NCName NCName t
Wenn die Eingabe z.B <name>Mustermann</name>
lautet...
...so ist das vom TypELEMENT
name(xs:string) !
14. Dezember 2001 XQuery: Eine XML Abfragesprache 44
Statische Semantik
1 1 2 2
1 2 1 2
: :
, : ,
Data t Data t
Data Data t t
Der Datentyp einer Folge von Werten...
...ist die Folge der Datentypen!
14. Dezember 2001 XQuery: Eine XML Abfragesprache 45
Statische Semantik
1 2
1 2
: : min max
, : min 1 max 1
Data t Data t m n
Data Data t m n
Ein bestimmter Datentyp, gefolgt von einer Folge
desselben...
...ergibt wieder eine Folge dieses Datentyps!
14. Dezember 2001 XQuery: Eine XML Abfragesprache 46
Statische Semantik
1 1 1 2 2
1 2 2
: , : :
let := return :
Expr t Variable t Expr t
Variable Expr Expr t
Der Datentyp einer Zuweisung...
...ist der Typ des „folgenden“ Ausdrucks!
14. Dezember 2001 XQuery: Eine XML Abfragesprache 47
Statische Semantik
1 2 2 3 3
1 2 3 2 3
:xs:boolean : :
if then else : |
Expr Expr t Expr t
Expr Expr Expr t t
Der Datentyp einer bedingten Anweisung...
...ist entweder das Eine oder das Andere!
14. Dezember 2001 XQuery: Eine XML Abfragesprache 48
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 49
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 50
Dynamische Semantik
1 2 2
1 2 2
, |
let := return
Expr v Variable v Expr v
Variable Expr Expr v
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 51
Dynamische Semantik
1 1 2 2
1 2 1 2= : value-equal( , )
Expr u Expr u
Expr Expr xfo u u
Bei Gleichheitstest mit „= “...
...wird der Knotenwert verglichen!
14. Dezember 2001 XQuery: Eine XML Abfragesprache 52
Dynamische Semantik
1 1 2 2
1 2 1 2== : node-equal( , )
Expr u Expr u
Expr Expr xfo u u
Bei Gleichheitstest mit „== “...
...wird die Knotenidentität geprüft!
14. Dezember 2001 XQuery: Eine XML Abfragesprache 53
Dynamische Semantik
1 3 3
1 2 3 3
false
if then else
Expr Expr v
Expr Expr Expr v
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 54
Dynamische Semantik
1
1
of / :
,empty-sequence(),empty-sequence(),/ Element-node
empty-sequence(),schema-component t
NameSpec v NameSpec t
vNameSpec
Hier wird ein leeres Element erzeugt!
Beachte den Typ „t“!
14. Dezember 2001 XQuery: Eine XML Abfragesprache 55
Dynamische Semantik
1
1 2
empty( )
for in return empty-sequence()
Expr v v
Variable Expr Expr
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 56
Dynamische Semantik
1 1
1 2 1
2
1 2 1
, ,
,
,
for in return append( , , )
n
n n
n
Expr u u
Variable u Expr v
Variable u Expr v
Variable Expr Expr v v
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!
14. Dezember 2001 XQuery: Eine XML Abfragesprache 57
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 58
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 59
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 60
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 61
Software 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
14. Dezember 2001 XQuery: Eine XML Abfragesprache 62
Kontakt & Downloads Fabian Wleklinski:
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 63
Ende
Das war‘s! Vielen Dank für Eure
Aufmerksamkeit!