Upload
anniken-drendel
View
103
Download
0
Embed Size (px)
Citation preview
1
Quilt:
Eine XML Anfragesprache für heterogene Datenquellen
Matthias Färber
15.01.2002
2
Ablauf:
1. Einleitung
2. Sprachkonzepte
3.Vergleich: Quilt und SQL für rel. DB
4. Ausblick, Diskussion
3
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
4
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):
5
Quilt (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):
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
8
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
9
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
10
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 DokumentenErstellen des Ergebnis-DokumentsSelektion, Projektion, Joins Operatoren und FunktionenBedingungen, Quantoren Binden von Variablen
11
Ablauf:
1. Einleitung
2. Sprachkonzepte
3.Vergleich: Quilt und SQL für rel. DB
4. Ausblick, Diskussion
12
Sprachkonzepte
Ausdruck Konzepte:
1. Pfad Ausdrücke2. 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
13
Sprachkonzepte
Beispiel Familien: 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> <\Familie><\Familien>
Familien
Familie
Mutter Vater Kinder
Person Person PersonAlterAlter Alter
Name Name Name
Familienname
14
Sprachkonzepte
Beispiel Familien:
Familien
Familie
Mutter Vater Kinder
Person Person PersonAlterAlter Alter
Name Name 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> <\Familie><\Familien>
FamiliennameMüller
Paul
3
Bert
38
Anne
35
Person
Name
Alter
Ernie
6
15
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
16
Sprachkonzepte
Beispiel Familien:
Familien
Familie
Mutter Vater Kinder
Person Person Person
AlterAlter Alter
Name Name Name
FamiliennameMüller
Paul
3
Bert
38
Anne
35
Person
Name
Alter
Ernie
6
Symbole:
Wähle Dokument: . Aktueller Knoten
.. Vaterknoten
/ Sohn/Söhne
// Nachkommen
@ Attribute
* Beliebiger Knoten
[] Boolescher Ausdruck(für Prädikate)
[n] Integer Prädikat
-> Dereferenz Operator
document(“Bsp.xml“)
17
/
Sprachkonzepte
Beispiel Familien:
Familien
Familie
Mutter Vater Kinder
Person Person Person
AlterAlter Alter
Name Name Name
FamiliennameMüller
Paul
3
Bert
38
Anne
35
Person
Name
Alter
Ernie
6
Symbole:
Wähle Wurzelknoten: . Aktueller Knoten
.. Vaterknoten
/ Sohn/Söhne
// Nachkommen
@ Attribute
* Beliebiger Knoten
[] Boolescher Ausdruck(für Prädikate)
[n] Integer Prädikat
-> Dereferenz Operator
document(“Bsp.xml“)
18
//Mutter
Sprachkonzepte
Beispiel Familien:
Familien
Familie
Mutter Vater Kinder
Person Person Person
AlterAlter Alter
Name Name Name
FamiliennameMüller
Paul
3
Bert
38
Anne
35
Person
Name
Alter
Ernie
6
Symbole:
Wähle Mütter: . Aktueller Knoten
.. Vaterknoten
/ Sohn/Söhne
// Nachkommen
@ Attribute
* Beliebiger Knoten
[] Boolescher Ausdruck(für Prädikate)
[n] Integer Prädikat
-> Dereferenz Operator
document(“Bsp.xml“)
19
//Person[Name=Paul]
Sprachkonzepte
Beispiel Familien:
Familien
Familie
Mutter Vater Kinder
Person Person Person
AlterAlter Alter
Name Name Name
FamiliennameMüller
Paul
3
Bert
38
Anne
35
Person
Name
Alter
Ernie
6
Symbole:
Personenknoten von Paul: . Aktueller Knoten
.. Vaterknoten
/ Sohn/Söhne
// Nachkommen
@ Attribute
* Beliebiger Knoten
[] Boolescher Ausdruck(für Prädikate)
[n] Integer Prädikat
-> Dereferenz Operator
document(“Bsp.xml“)
20
//Kinder/Person[2]
Sprachkonzepte
Beispiel Familien:
Familien
Familie
Mutter Vater Kinder
Person Person Person
AlterAlter Alter
Name Name Name
FamiliennameMüller
Paul
3
Bert
38
Anne
35
Person
Name
Alter
Ernie
6
Symbole:
Zweites Kind: . Aktueller Knoten
.. Vaterknoten
/ Sohn/Söhne
// Nachkommen
@ Attribute
* Beliebiger Knoten
[] Boolescher Ausdruck(für Prädikate)
[n] Integer Prädikat
-> Dereferenz Operator
document(“Bsp.xml“)
21
//Person[Name=Ernie]/
@MumId->/Person
Sprachkonzepte
Beispiel Familien:
Familien
Familie
Mutter Vater Kinder
Person Person Person
AlterAlter Alter
Name Name Name
FamiliennameMüller
Paul
3
Bert
38
Anne
35
Person
Name
Alter
Ernie
6
Symbole:
Attribut und Dereferenz Operator: . Aktueller Knoten
.. Vaterknoten
/ Sohn/Söhne
// Nachkommen
@ Attribute
* Beliebiger Knoten
[] Boolescher Ausdruck(für Prädikate)
[n] Integer Prädikat
-> Dereferenz Operator
document(“Bsp.xml“)
MumId
22
Sprachkonzepte
Ausdruck Konzepte:
1. Pfad Ausdrücke
2. Element Konstruktoren3. FLWR (Flower) Ausdrücke
4. Ausdrücke zur Verwendung von Operatoren und Funktionen
5. Bedingunsausdrücke
6. Quantoren
7. Binden von Variablen
23
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>
24
Sprachkonzepte
Ausdruck Konzepte:
1. Pfad Ausdrücke
2. Element Konstruktoren
3. FLWR (Flower) Ausdrücke4. Ausdrücke zur Verwendung von Operatoren und Funktionen
5. Bedingunsausdrücke
6. Quantoren
7. Binden von Variablen
25
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
WHERE
RETURN
Geordnete Liste von Tupeln gebundenerVariablen ($x,$y,$z),($x,$y,$z),...
Reduzierte Liste von Tupeln gebundenerVariablen
Ergebnis: XML Dokument bzw. Fragment
26
Sprachkonzepte
Familien
Familie
Mutter Vater Kinder
Person Person Person
AlterAlter Alter
Name Name Name
FamiliennameMüller
Paul
3
Bert
38
Anne
35
Person
Name
Alter
Ernie
6
3. FLWR (Flower) Ausdrücke:Beispiel:Alle Namen die im Dokument Bsp.xml vorkommen:
<AlleNamen>
FOR $x IN document(Bsp.xml)//NameRETURN <Name> $x </Name>
</AlleNamen>
27
Sprachkonzepte
Familien
Familie
Mutter Vater Kinder
Person Person Person
AlterAlter Alter
Name Name Name
FamiliennameMüller
Paul
3
Bert
38
Anne
35
Person
Name
Alter
Ernie
6
3. FLWR (Flower) Ausdrücke:Beispiel:Alle Namen von Personen die jünger als 10 sind:
<Grundschulkinder>
FOR $x IN document(Bsp.xml)//PersonLET $y := $x/WHERE $x@Alter < 10RETURN <Name> $y </Name>
</Grundschulkinder>
28
Sprachkonzepte
Familien
Familie
Mutter Vater Kinder
Person Person Person
AlterAlter Alter
Name Name Name
FamiliennameMüller
Paul
3
Bert
38
Anne
35
Person
Name
Alter
Ernie
6
3. FLWR (Flower) Ausdrücke:Beispiel:Das Alter von den Müttern die mehr als 1 Kind haben:
<Mütter>
FOR $x IN document(Bsp.xml)//MutterLET $y := $x/Kinder/WHERE count($y) > 1 RETURN <Alter>
$x/@Alter </Alter></Mütter>
29
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
30
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)
31
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ücke6. Quantoren
7. Binden von Variablen
32
Sprachkonzepte
5. Bedingunsausdrücke
- IF ... THEN ... ELSE Konstrukte
- Können beliebig verschachtelt werden
- Beispiel
Familien
Familie
Mutter Vater Kinder
Person Person Person
AlterAlter Alter
Name Name Name
FamiliennameMüller
Paul
3
Bert
38
Anne
35
Person
Name
Alter
Ernie
6
<Mütter> (Altes Beispiel)
FOR $x IN document(Bsp.xml)//MutterLET $y := $x/Kinder/WHERE count($y) > 1 RETURN <Alter>
$x/@Alter </Alter></Mütter>
33
Sprachkonzepte
5. Bedingunsausdrücke
- IF ... THEN ... ELSE Konstrukte
- Können beliebig verschachtelt werden
- Beispiel
Familien
Familie
Mutter Vater Kinder
Person Person Person
AlterAlter Alter
Name Name Name
FamiliennameMüller
Paul
3
Bert
38
Anne
35
Person
Name
Alter
Ernie
6
<Mütter>FOR $x IN document(Bsp.xml)//MutterLET $y := $x./Kinder/RETURN IF count($y)>1 THEN <Alter>
$x/@Alter </Alter> ELSE</Mütter>
34
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. Quantoren7. Binden von Variablen
35
Sprachkonzepte
6. Quantoren:
- und Quantoren : : EVERY und : SOME
- Beispiel : Junge Familien
Familien
Familie
Mutter Vater Kinder
Person Person Person
AlterAlter Alter
Name Name Name
FamiliennameMüller
Paul
3
Bert
38
Anne
35
Person
Name
Alter
Ernie
6
<Junge Familien>
FOR $x IN document(Bsp.xml)//FamilieWHERE EVERY $p IN $x/Person SATISFIES ($p@Alter<35) RETURN <Familienname>
$x@Familienname </Familienname>
</Junge Familien>
36
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
37
Sprachkonzepte
7. Binden von Variablen:
- Binden den Wert eines Ausdrucks an eine Variable
- Ermöglichen die Wiederverwendung von Zwischenergebnissen
- Beispiel: Sortiere alle Personen des Dokuments in älter und jünger als das Durchschnittsalter
LET $a := avg(document(Bsp.xml)//Person@Alter)EVAL <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>
38
Ablauf:
1. Einleitung
2. Sprachkonzepte
3.Vergleich: Quilt und SQL für rel. DB
4. Ausblick, Diskussion
39
Vergleich: Quilt und SQL für rel. DB
1. Teile / Lieferanten Beispiel
2. Einfache Anfragen
3. Gruppieren
4. Joins
40
Vergleich: Quilt und SQL für rel. DB
1. Teile / Lieferanten Beispiel
Relationale Daten: XML Daten:
T T_Nr T_BeschrTabelle Teile:
LT L_Nr P_Nr PreisTabelle Preise:
L L_Nr L_NameTabelle Lieferanten:
L.xml:<L_tupel>
<L_Nr><L_Name>
T.xml<T_tupel>
<T_Nr><T_Beschr>
LT.xml<LT_tupel>
<L_Nr><T_Nr><Preis>
41
Vergleich: Quilt und SQL für rel. DB
2. Einfache Anfragen:
SQL: Quilt:
T T_Nr T_Beschr LT L_Nr P_Nr PreisL L_Nr L_Name
SELECT T_NrFROM TWHERE T_Beschr LIKE ´GEAR´ORDER BY T_Nr
FOR $t IN document(“T.xml“)//T_tupel
WHERE contains( $t/T_Beschr,“GEAR“)RETURN $t/T_Nr SORTBY(.)
42
Vergleich: Quilt und SQL für rel. DB
3. Gruppierung (Grouping):
SQL: Quilt:
T T_Nr T_Beschr LT L_Nr P_Nr PreisL L_Nr L_Name
SELECT T_Nr, avg(Preis)FROM LTGROUP BY T_NrHAVING count(*) >=3
FOR $tn IN distinct(document(“LT.xml“)//T_Nr)LET $lt := document(“LT.xml“)//T_tupel[T_Nr = $tn]WHERE count( $lt) >= 3RETURN
<oft_vorhanden>$tn<avgPr> avg($lt/Preis) </avgPr>
</oft_vorhanden>
Gebe Teilenummer und Durschnittspreis der Teile aus, die von mehr als 3 Lieferanten geliefert werden:
43
Vergleich: Quilt und SQL für rel. DB
4. Joins:
SQL: Quilt:
T T_Nr T_Beschr LT L_Nr P_Nr PreisL L_Nr L_Name
SELECT L_Name, T_BeschrFROM LT, L ,TWHERE T.T_Nr=LT.T_Nr AND L.L_Nr=LT.L_Nr
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>
Inner Join : Lieferantennamen mit den dazugehörigen Teilebeschreibungen:
44
Ablauf:
1. Einleitung
2. Sprachkonzepte
3.Vergleich: Quilt und SQL für rel. DB
4. Ausblick, Diskussion
45
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.
46
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 ?