Sprachkonzepte - IFIS Uni Lübeck

Werbung
Quilt:
Eine XML Anfragesprache für
heterogene Datenquellen
Matthias Färber
15.01.2002
1
Ablauf:
1. Einleitung
2. Sprachkonzepte
3.Vergleich: Quilt und SQL für rel. DB
4. Ausblick, Diskussion
2
Einleitung
Literatur:
- Don Chamberlin(IBM, USA), Jonathan Robie(Software AG -USA),
Daniela Florescu(INRIA - Frankreich) :
Quilt an XML Query Language for heterogeneous Data Sources
WebDB 2000
- Obige Autoren sind Mitglieder der XML-Query Working Group
- http://www.w3.org/TR/xquery
- http://www.almaden.ibm.com/cs/people/chamberlin/quilt.html
3
Einleitung
Ursprung von Quilt:
- WWW macht alle Arten von Informationen überall verfügbar
- Um diese Information verarbeiten zu können benötigt man:
Eine universelle Auszeichnungssprache (XML)
Eine universelle Anfragesprache (Quilt)
- Namensgebung von Quilt (Amerikanischer Flickenteppich):
4
Quilt (Flickenteppich)
5
Einleitung
Ursprung von Quilt:
- WWW macht alle Arten von Informationen überall verfügbar
- Um diese Information verarbeiten zu können benötigt man:
Eine universelle Auszeichnungssprache (XML)
Eine universelle Anfragesprache (Quilt)
- Namensgebung von Quilt (Amerikanischer Flickenteppich):
6
Einleitung
Ursprung von Quilt:
- WWW macht alle Arten von Informationen überall verfügbar
- Um diese Information verarbeiten zu können benötigt man:
Eine universelle Auszeichnungssprache (XML)
Eine universelle Anfragesprache (Quilt)
- Namensgebung von Quilt (Amerikanischer Flickenteppich):
1. Quilt „baut“ aus anderen XML Dokumenten ein neues
zusammen
7
Einleitung
Ursprung von Quilt:
- WWW macht alle Arten von Informationen überall verfügbar
- Um diese Information verarbeiten zu können benötigt man:
Eine universelle Auszeichnungssprache (XML)
Eine universelle Anfragesprache (Quilt)
- Namensgebung von Quilt (Amerikanischer Flickenteppich):
1. Quilt „baut“ aus anderen XML Dokumenten ein neues
zusammen
2. Quilts Sprachkonzepte haben ihren Ursprung in vielen
verschiedenen anderen Sprachen:
XPath, XQL, XML-QL, SQL, OQL, Lorel, YATL
somit ist Quilt selbst eine Art Flickenteppich
8
Einleitung
Anforderungen an Quilt:
- klassische DB Operationen wie Joins und Union
- Anfragen kurz aber lesbar
- Flexibilität (Unterschiedliche Informationsquellen)
- Transformierung der Informationsstrukturen
- Beibehaltung von Ordnung und Hierarchie in Dokumenten
9
Einleitung
Was ist Quilt ?
- Funktionale Anfragesprache
- Anfragen als Ausdrücke
- Ein und Ausgabe für Quilt:
XML Dokumente, Sammlungen und Fragmente
von XML Dokumenten
- Verschiedene Ausdruckkonzepte
Navigation in XML Dokumenten
Erstellen des Ergebnis-Dokuments
Selektion, Projektion, Joins
Operatoren und Funktionen
Bedingungen, Quantoren
Binden von Variablen
10
Ablauf:
1. Einleitung
2. Sprachkonzepte
3.Vergleich: Quilt und SQL für rel. DB
4. Ausblick, Diskussion
11
Sprachkonzepte
Ausdruck Konzepte:
1. Pfad Ausdrücke
2. Element Konstruktoren
3. FLWR (Flower) Ausdrücke
4. Ausdrücke zur Verwendung von Operatoren und Funktionen
5. Bedingunsausdrücke
6. Quantoren
7. Binden von Variablen
12
Sprachkonzepte
Beispiel Familien:
Familien
Familienname
Familie
Mutter
Person
Vater
Kinder
Person
Person
Alter
Name
Alter
Name
Alter
Name
Bsp.xml:
<Familien>
<Familie Familienname=Müller>
<Mutter>
<Person Alter=35>
<Name> Anne <\Name>
<\Person>
<\Mutter>
<Vater>
<Person Alter=38>
<Name> Bert <\Name>
<\Person>
<\Vater>
<Kinder>
<Person Alter=3>
<Name> Paul <\Name>
<\Person>
<Person Alter=6>
<Name> Ernie <\Name>
<\Person>
<\Kinder>
13
<\Familie>
<\Familien>
Sprachkonzepte
Beispiel Familien:
Familien
Familienname
Müller
Familie
Mutter
Person
Vater
Kinder
Person
Person
Alter
Alter
35
Name
Anne
Alter
38
Name
Bert
Person
3
Name
Paul
Alter
6
Name
Ernie
Bsp.xml:
<Familien>
<Familie Familienname=Müller>
<Mutter>
<Person Alter=35>
<Name> Anne <\Name>
<\Person>
<\Mutter>
<Vater>
<Person Alter=38>
<Name> Bert <\Name>
<\Person>
<\Vater>
<Kinder>
<Person Alter=3>
<Name> Paul <\Name>
<\Person>
<Person Alter=6>
<Name> Ernie <\Name>
<\Person>
<\Kinder>
14
<\Familie>
<\Familien>
Sprachkonzepte
1. Pfad Ausdrücke:
- Übernommen von XPath
- Zum Navigieren in Dokumenten (entlang der Knoten)
- Ein Pfad-Ausdruck besteht aus einer Reihe von Schritten
- In jedem Schritt bewegt man sich in einer bestimmten Richtung
durch das Dokument
- In jedem Schritt kann man mit Hilfe von Prädikaten
unerwünschte Knoten elimieren
- Das Ergebnis jeden Schrittes ist eine Menge von Knoten die als
Startpunkt für den nächsten Schritt dienen können
15
Sprachkonzepte
Symbole:
Beispiel Familien:
Wähle Dokument:
document(“Bsp.xml“)
Familien
Familienname
Müller
Familie
Mutter
Person
Vater
Name
Anne
Person
Alter
38
Name
Bert
Aktueller Knoten
..
Vaterknoten
/
Sohn/Söhne
//
Nachkommen
@
Attribute
*
Beliebiger Knoten
[]
Boolescher Ausdruck
(für Prädikate)
[n]
Integer Prädikat
->
16
Dereferenz Operator
Kinder
Person
Alter
35
.
Name
Paul
Person
Alter Alter
3
6
Name
Ernie
Sprachkonzepte
Symbole:
Beispiel Familien:
Wähle Wurzelknoten:
document(“Bsp.xml“) /
Familien
Familienname
Müller
Familie
Mutter
Person
Vater
Name
Anne
Person
Alter
38
Name
Bert
Aktueller Knoten
..
Vaterknoten
/
Sohn/Söhne
//
Nachkommen
@
Attribute
*
Beliebiger Knoten
[]
Boolescher Ausdruck
(für Prädikate)
[n]
Integer Prädikat
->
17
Dereferenz Operator
Kinder
Person
Alter
35
.
Name
Paul
Person
Alter Alter
3
6
Name
Ernie
Sprachkonzepte
Symbole:
Beispiel Familien:
Wähle Mütter:
document(“Bsp.xml“) //Mutter
Familien
Familienname
Müller
Familie
Mutter
Person
Vater
Name
Anne
Person
Alter
38
Name
Bert
Aktueller Knoten
..
Vaterknoten
/
Sohn/Söhne
//
Nachkommen
@
Attribute
*
Beliebiger Knoten
[]
Boolescher Ausdruck
(für Prädikate)
[n]
Integer Prädikat
->
18
Dereferenz Operator
Kinder
Person
Alter
35
.
Name
Paul
Person
Alter Alter
3
6
Name
Ernie
Sprachkonzepte
Symbole:
Beispiel Familien:
Personenknoten von Paul:
document(“Bsp.xml“)
//Person[Name=Paul]
Familien
Familienname
Müller
Familie
Mutter
Person
Vater
Name
Anne
Person
Alter
38
Name
Bert
Aktueller Knoten
..
Vaterknoten
/
Sohn/Söhne
//
Nachkommen
@
Attribute
*
Beliebiger Knoten
[]
Boolescher Ausdruck
(für Prädikate)
[n]
Integer Prädikat
->
19
Dereferenz Operator
Kinder
Person
Alter
35
.
Name
Paul
Person
Alter Alter
3
6
Name
Ernie
Sprachkonzepte
Symbole:
Beispiel Familien:
Zweites Kind:
document(“Bsp.xml“)
//Kinder/Person[2]
Familien
Familienname
Müller
Familie
Mutter
Person
Vater
Name
Anne
Person
Alter
38
Name
Bert
Aktueller Knoten
..
Vaterknoten
/
Sohn/Söhne
//
Nachkommen
@
Attribute
*
Beliebiger Knoten
[]
Boolescher Ausdruck
(für Prädikate)
[n]
Integer Prädikat
->
20
Dereferenz Operator
Kinder
Person
Alter
35
.
Name
Paul
Person
Alter Alter
3
6
Name
Ernie
Sprachkonzepte
Symbole:
Beispiel Familien:
Attribut und Dereferenz Operator:
document(“Bsp.xml“)
//Person[Name=Ernie]/
@MumId->/Person
Familien
Familienname
Müller
Familie
Mutter
Person
Vater
Person
Alter
35
Name
Anne
Kinder
Person
Alter
38
Name
Bert
Name
Paul
.
Aktueller Knoten
..
Vaterknoten
/
Sohn/Söhne
//
Nachkommen
@
Attribute
*
Beliebiger Knoten
[]
Boolescher Ausdruck
(für Prädikate)
[n]
Integer Prädikat
->
21
Dereferenz Operator
MumId
Person
Alter Alter
3
6
Name
Ernie
Sprachkonzepte
Ausdruck Konzepte:
1. Pfad Ausdrücke
2. Element Konstruktoren
3. FLWR (Flower) Ausdrücke
4. Ausdrücke zur Verwendung von Operatoren und Funktionen
5. Bedingunsausdrücke
6. Quantoren
7. Binden von Variablen
22
Sprachkonzepte
2. Element Konstruktoren:
- Zum Erstellen des Ergebnis-Dokuments
- Tags werden explizit ausgeschrieben und mit gebundenen
Variablen gefüllt
- Beispiel: <AlleNamen>
... Füllen der Variable $n
<Name>
$n
</Name>
</AlleNamen>
23
Sprachkonzepte
Ausdruck Konzepte:
1. Pfad Ausdrücke
2. Element Konstruktoren
3. FLWR (Flower) Ausdrücke
4. Ausdrücke zur Verwendung von Operatoren und Funktionen
5. Bedingunsausdrücke
6. Quantoren
7. Binden von Variablen
24
Sprachkonzepte
3. FLWR (Flower) Ausdrücke:
- steht für: FOR ... LET ... WHERE ... RETURN
- Ursprung: SELECT ... FROM ... WHERE SQL Notation
- Schachtelung ist möglich
FOR / LET
Geordnete Liste von Tupeln gebundener
Variablen
($x,$y,$z),($x,$y,$z),...
WHERE
Reduzierte Liste von Tupeln gebundener
Variablen
RETURN
Ergebnis: XML Dokument bzw. Fragment25
Sprachkonzepte
3. FLWR (Flower) Ausdrücke:
Beispiel:
Alle Namen die im Dokument Bsp.xml vorkommen:
<AlleNamen>
FOR $x IN
document(Bsp.xml)//Name
RETURN
<Name> $x </Name>
Familien
Familienname
Müller
Familie
Mutter
Person
Vater
Kinder
Person
Person
Alter
35
Name
Anne
Alter
38
Name
Bert
Name
Paul
Person
Alter Alter
3
6
Name
Ernie
</AlleNamen>
26
Sprachkonzepte
3. FLWR (Flower) Ausdrücke:
Beispiel:
Alle Namen von Personen die jünger als 10 sind:
<Grundschulkinder>
Familien
Familienname
Müller
Familie
Mutter
Person
Vater
Kinder
Person
Person
Alter
35
Name
Anne
Alter
38
Name
Bert
Name
Paul
Person
Alter Alter
3
6
Name
Ernie
FOR $x IN
document(Bsp.xml)//Person
LET $y := $x/
WHERE $x@Alter < 10
RETURN
<Name> $y </Name>
</Grundschulkinder>
27
Sprachkonzepte
3. FLWR (Flower) Ausdrücke:
Beispiel:
Das Alter von den Müttern die mehr als 1 Kind haben:
<Mütter>
Familien
Familienname
Müller
Familie
Mutter
Person
Vater
Kinder
Person
Person
Alter
35
Name
Anne
Alter
38
Name
Bert
Name
Paul
Person
Alter Alter
3
6
Name
Ernie
FOR $x IN
document(Bsp.xml)//Mutter
LET $y := $x/Kinder/
WHERE count($y) > 1
RETURN
<Alter>
$x/@Alter
</Alter>
</Mütter>
28
Sprachkonzepte
Ausdruck Konzepte:
1. Pfad Ausdrücke
2. Element Konstruktoren
3. FLWR (Flower) Ausdrücke
4. Ausdrücke zur Verwendung von
Operatoren und Funktionen
5. Bedingunsausdrücke
6. Quantoren
7. Binden von Variablen
29
Sprachkonzepte
4. Ausdrücke zur Verwendung von Operatoren und Funktionen
- Von Quilt werden die üblichen arithmetischen und
logischen Operatoren sowie Mengenoperatoren wie:
UNION, INTERSECT, EXCEPT, ... zur Verfügung gestellt
- Von XQL übernimmt Quilt die infix Operatoren BEFORE und
AFTER, die dazu dienen die Positionen von Elementen zu
vergleichen, die keinen gemeinsamen Vaterknoten haben
- Es werden zusätzlich einige Funktionen zur Verfügung gestellt
z.B.: document(“...“), count(), sum(), distinct()
- Viele dieser Operatoren und Funktionen haben ihren Ursprung
in SQL oder XPath
- Es ist ebenfalls möglich eigene Funktionen zu definieren
(auch rekursive)
30
Sprachkonzepte
Ausdruck Konzepte:
1. Pfad Ausdrücke
2. Element Konstruktoren
3. FLWR (Flower) Ausdrücke
4. Ausdrücke zur Verwendung von Operatoren und Funktionen
5. Bedingunsausdrücke
6. Quantoren
7. Binden von Variablen
31
Sprachkonzepte
5. Bedingunsausdrücke
- IF ... THEN ... ELSE Konstrukte
- Können beliebig verschachtelt werden
<Mütter> (Altes Beispiel)
- Beispiel
Familien
Familienname
Müller
Familie
Mutter
Person
Vater
Kinder
Person
Person
Alter
35
Name
Anne
Alter
38
Name
Bert
Name
Paul
Person
Alter Alter
3
6
Name
Ernie
FOR $x IN
document(Bsp.xml)//Mutter
LET $y := $x/Kinder/
WHERE count($y) > 1
RETURN
<Alter>
$x/@Alter
</Alter>
32
</Mütter>
Sprachkonzepte
5. Bedingunsausdrücke
- IF ... THEN ... ELSE Konstrukte
- Können beliebig verschachtelt werden
<Mütter>
- Beispiel
FOR $x IN
document(Bsp.xml)//Mutter
Familien
LET $y := $x./Kinder/
Familienname
Müller
Familie
RETURN
IF count($y)>1
Mutter
Vater
Kinder
THEN <Alter>
Person
Person
Person
Person
$x/@Alter
Alter
Alter
Alter Alter
35
38
3
</Alter>
6
Name
Name
Name
Name
ELSE
Anne
Bert
Paul
Ernie
33
</Mütter>
Sprachkonzepte
Ausdruck Konzepte:
1. Pfad Ausdrücke
2. Element Konstruktoren
3. FLWR (Flower) Ausdrücke
4. Ausdrücke zur Verwendung von Operatoren und Funktionen
5. Bedingunsausdrücke
6. Quantoren
7. Binden von Variablen
34
Sprachkonzepte
6. Quantoren:
-  und  Quantoren :  : EVERY und  : SOME
- Beispiel : Junge Familien
<Junge Familien>
Familien
Familienname
Müller
Familie
Mutter
Person
Vater
Kinder
Person
Person
Alter
35
Name
Anne
Alter
38
Name
Bert
Name
Paul
Person
Alter Alter
3
6
Name
Ernie
FOR $x IN
document(Bsp.xml)//Familie
WHERE EVERY $p IN $x/Person
SATISFIES ($p@Alter<35)
RETURN
<Familienname>
$x@Familienname
</Familienname>
</Junge Familien>
35
Sprachkonzepte
Ausdruck Konzepte:
1. Pfad Ausdrücke
2. Element Konstruktoren
3. FLWR (Flower) Ausdrücke
4. Ausdrücke zur Verwendung von Operatoren und Funktionen
5. Bedingunsausdrücke
6. Quantoren
7. Binden von Variablen
36
Sprachkonzepte
7. Binden von Variablen:
- Binden den Wert eines Ausdrucks an eine Variable
- Ermöglichen die Wiederverwendung von Zwischenergebnissen
LET $a := avg(document(Bsp.xml)//Person@Alter)
- Beispiel: Sortiere alle Personen des Dokuments in älter und
EVAL
jünger als das Durchschnittsalter
<Alte>
FOR $x IN document(Bsp.xml)//Person
WHERE $x@Alter > $a
RETURN
<Name> $x/Name </Name>
</Alte>
<Junge>
FOR $x IN document(Bsp.xml)//Person
WHERE $x@Alter <= $a
RETURN
<Name> $x/Name </Name>
</Junge>
37
Ablauf:
1. Einleitung
2. Sprachkonzepte
3.Vergleich: Quilt und SQL für rel. DB
4. Ausblick, Diskussion
38
Vergleich: Quilt und SQL für rel. DB
1. Teile / Lieferanten Beispiel
2. Einfache Anfragen
3. Gruppieren
4. Joins
39
Vergleich: Quilt und SQL für rel. DB
1. Teile / Lieferanten Beispiel
Relationale Daten:
Tabelle Lieferanten:
L L_Nr L_Name
Tabelle Teile:
T T_Nr T_Beschr
XML Daten:
L.xml:
<L_tupel>
<L_Nr>
<L_Name>
T.xml
<T_tupel>
<T_Nr>
<T_Beschr>
LT.xml
Tabelle Preise:
LT L_Nr P_Nr Preis
<LT_tupel>
<L_Nr>
<T_Nr>
<Preis>
40
Vergleich: Quilt und SQL für rel. DB
2. Einfache Anfragen:
SQL:
Quilt:
SELECT T_Nr
FROM T
WHERE T_Beschr LIKE ´GEAR´
ORDER BY T_Nr
L L_Nr L_Name
FOR $t IN
document(“T.xml“)//T_tupel
WHERE contains( $t/T_Beschr,“GEAR“)
RETURN $t/T_Nr SORTBY(.)
T T_Nr T_Beschr
LT L_Nr P_Nr Preis
41
Vergleich: Quilt und SQL für rel. DB
3. Gruppierung (Grouping):
Gebe Teilenummer und Durschnittspreis der Teile aus,
die von mehr als 3 Lieferanten geliefert werden:
SQL:
SELECT T_Nr, avg(Preis)
FROM LT
GROUP BY T_Nr
HAVING count(*) >=3
L L_Nr L_Name
Quilt:
FOR $tn IN distinct(document(“LT.xml“)//T_Nr)
LET $lt := document(“LT.xml“)//T_tupel[T_Nr = $tn]
WHERE count( $lt) >= 3
RETURN
<oft_vorhanden>
$tn
<avgPr> avg($lt/Preis) </avgPr>
</oft_vorhanden>
T T_Nr T_Beschr
LT L_Nr P_Nr Preis
42
Vergleich: Quilt und SQL für rel. DB
4. Joins:
Inner Join : Lieferantennamen mit den dazugehörigen
Teilebeschreibungen:
SQL:
Quilt:
SELECT L_Name, T_Beschr
FROM LT, L ,T
WHERE T.T_Nr=LT.T_Nr
AND L.L_Nr=LT.L_Nr
L L_Nr L_Name
FOR $lt IN document(“LT.xml“)//LT_tupel)
$l IN document(“L.xml“)//L_tupel[L_Nr=$lt/L_Nr])
$t IN document(“T.xml“)//T_tupel[T_Nr=$lt/T_Nr])
RETURN
<lt_paar>
$l/L_Name,
$t/T_Beschr
</lt_paar>
T T_Nr T_Beschr
LT L_Nr P_Nr Preis
43
Ablauf:
1. Einleitung
2. Sprachkonzepte
3.Vergleich: Quilt und SQL für rel. DB
4. Ausblick, Diskussion
44
Ausblick, Diskussion
Derzeitiger Stand von Quilt:
- Quilt hat zu der Entwicklung von XQuery maßgeblich
beigetragen (Die Autoren von Quilt sind Mitglieder der
Working Group)
- Von der Navigationssprache XPath, die als Quelle für Quilt diente,
ist am 20.12.2001 die Version 2.0 veröffentlicht worden.
Hier wird als Quilt als `Background Reference´ genannt.
- Quilt wurde an einigen Universitäten (UCLA, Washington,
Pennsylvania) und bei INRIA(Frankreich) implementiert.
Es wurden Parser, und Übersetzer (nach SQL) geschrieben
und getestet.
45
Ausblick, Diskussion
Zukunft von Quilt:
- lebt in leicht abgeänderter Syntax in XQuery weiter
- XQuery:
- Zur Zeit noch Working Draft (Letzte Version 20.12.2001)
- Wird von der W3C XML Query Working Group entwickelt
- Beteiligte Firmen: IBM, Software AG, AT&T Labs,
Bell Labs, Concentric Visions
- Anwendungsgebiete:
- Suche im Intranet (z.B. UNIVIS)
- WWW ? Sinnvoll ?
46
Herunterladen