1 Quilt: Eine XML Anfragesprache für heterogene Datenquellen Matthias Färber 15.01.2002

Preview:

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 ?

Recommended