32
Język zapytań dla XML Rafał Hryniów Tomasz Pieciukiewicz

Język zapytań dla XML

  • Upload
    winola

  • View
    25

  • Download
    0

Embed Size (px)

DESCRIPTION

Język zapytań dla XML. Rafał Hryniów Tomasz Pieciukiewicz. Plan prezentacji. Przedstawienie podstawowych założeń języka Porównanie z innymi rozwiązaniami Omówienie implementacji Potencjalne kierunki rozwoju. Założenia języka. Naturalny dla użytkownika, Prosty w użyciu, - PowerPoint PPT Presentation

Citation preview

Page 1: Język zapytań dla XML

Język zapytań dla XML

Rafał Hryniów

Tomasz Pieciukiewicz

Page 2: Język zapytań dla XML

Plan prezentacji

Przedstawienie podstawowych założeń języka

Porównanie z innymi rozwiązaniami Omówienie implementacji Potencjalne kierunki rozwoju

Page 3: Język zapytań dla XML

Założenia języka

Naturalny dla użytkownika, Prosty w użyciu, Duże możliwości rozwoju, Oparty na solidnych podstawach

teoretycznych (podejście stosowe), Obsługa danych półstrukturalnych (XML)

Page 4: Język zapytań dla XML

Założenia języka

Jednoczesna obsługa wielu plików XML, Obsługa linków Operatory algebraiczne:

– Arytmetyczne– Logiczne– Porównania– Operacje na łańcuchach tekstowych– Operacje na kolekcjach– Złączenia– Operator zmiany nazwy

Page 5: Język zapytań dla XML

Założenia języka

Operatory nie-algebraiczne– Kwantyfikatory– Selekcja– Zależne złączenie

Rozróżnianie pomiędzy węzłem XML, a tekstem zawartym w tym węźle (atrybut o nazwie TextValue)

Page 6: Język zapytań dla XML

Porównanie z XML Query

Porównanie zostanie przeprowadzone przy pomocy przykładów. Zapytania w XML Query pochodzą z dokumentów W3C dotyczących tego języka

Page 7: Język zapytań dla XML

Porównanie (1) – zapytanie w XML Query

Tytuły i rok wydania książek opublikowanych przez „Addison-Wesley” wydanych po roku 1991

<bib>{

for $b in document("http://www.bn.com")/bib/book where $b/publisher = "Addison-Wesley" and $b/@year > 1991 return

<book year="{ $b/@year }">{ $b/title }

</book> }

</bib>

Page 8: Język zapytań dla XML

Porównanie (1) – zapytanie w YATL

make bib [ *book [ @year [ $y ],

title [ $t ] ] ]match "www.bn.com/bib.xml" with

bib [ *book [ @year [ $y ], title [ $t ] ], publisher [ name [ $n ] ] ]

where $n = "Addison-Wesley" and $y > 1991

Page 9: Język zapytań dla XML

Porównanie (1) – Zapytanie w Lorel

select xml(bib:{

(select xml(book:{@year:y, title:t})

from bib.book b, b.title t, b.year y

where b.publisher = "Addison-Wesley" and y > 1991)})

Page 10: Język zapytań dla XML

Porównanie (1) – Zapytanie w XQL

document("http://www.bn.com")/bib {

book[publisher/name="Addison-Wesley" and @year>1991] {

@year | title

}

}

Page 11: Język zapytań dla XML

Porównanie (1) – Zapytanie w XML-QL

CONSTRUCT <bib> { WHERE <bib> <book year=$y> <title>$t</title> <publisher><name>Addison-Wesley</name></publisher> </book> </bib> IN "www.bn.com/bib.xml", $y > 1991 CONSTRUCT <book year=$y><title>$t</title></book>

} </bib>

Page 12: Język zapytań dla XML

Porównanie (1) – zapytanie u nas

Wersja skrócona

(bib.book where (year>1991 AND publisher.TextValue='Addison-Wesley')).(year , title)

Wersja dająca prawie identyczny wynik jak XML Query(bib.book where (year>1991 AND publisher.TextValue='Addison-Wesley')).(year as Year, title) as Book

Page 13: Język zapytań dla XML

Porównanie (2) – zapytanie w XML Query

Lista par autor-tytuł, każda para zamknięta w elemencie „result”<results> {

for $b in document("http://www.bn.com")/bib/book, $t in $b/title, $a in $b/author return

<result> { $t } { $a }

</result> } </results>

Page 14: Język zapytań dla XML

Porównanie (2) – zapytanie w YATL

make

results [ *result [ title [ $t ]

author [ $a ] ] ]

match "www.bn.com/bib.xml" with

bib [ *book [ title [ $t ],

*author [ $a ] ] ]

Page 15: Język zapytań dla XML

Porównanie (2) – zapytanie w Lorel

select xml(results:{

(select xml(result:{title: t,author: a})

from bib.book b, b.title t, b.author a)})

Page 16: Język zapytań dla XML

Porównanie (2) – zapytanie w XQL

Zadanie tego zapytania nie jest możliwe

Page 17: Język zapytań dla XML

Porównanie (2) – zapytanie w XML-QL

CONSTRUCT <results> { WHERE <bib> <book> <title>$t</title> <author>$a</author>

</book> </bib> IN "www.bn.com/bib.xml"

CONSTRUCT <result>

<title>$t</title> <author>$a</author> </result> } </results>

Page 18: Język zapytań dla XML

Porównanie (2) – zapytanie u nas

bib.book.(author, title) as Result

Page 19: Język zapytań dla XML

Porównanie (3) – zapytanie w XML Query

Dla każdej książki wyświetla tytuł i listę autorów<results> { for

$b in document("http://www.bn.com")/bib/book return

<result> { $b/title } { $b/author }

</result> } </results>

Page 20: Język zapytań dla XML

Porównanie (3) – zapytanie w YATL

make

results [ *result [ title [ $t ],

$as ] ]

match "www.bn.com/bib.xml" with

bib [ *book [ title [ $t ],

*($as) author ]

Page 21: Język zapytań dla XML

Porównanie (3) – zapytanie w Lorel

select xml(results:{

select xml(result{b.title, b.author})

from bib.book b})

Page 22: Język zapytań dla XML

Porównanie (3) – zapytanie w XQL

document("http://www.bn.com")/bib->results {

book->result {

title | author

}

}

Page 23: Język zapytań dla XML

Porównanie (3) – zapytanie w XML-QL

CONSTRUCT <results> {WHERE

<bib><book>

<title>$t</title> </book> CONTENT_AS $b </bib> IN "www.bn.com/bib.xml"

CONSTRUCT <result>

<title>$t</title> { WHERE <author>$a</author> IN $b CONSTRUCT <author>$a</> }

</result> } </results>

Page 24: Język zapytań dla XML

Porównanie (3) – zapytanie u nas

(bib.book as x, bib.book as y where x=y).(x.title, y.author group as autorzy)

Ze względu na brak operatora pozwalającego stworzyć strukturę bez opakowanie jej w węzeł wynik różni się nieco od wyniku XML Query

Page 25: Język zapytań dla XML

Obsługa linków - przykład

<bib><person id="A1"><last>Stevens</last><first>W.</first></person><person id="A2"><last>Abiteboul</last><first>Serge</first></person><person id="A3"><last>Buneman</last><first>Peter</first></person><person id="A4"><last>Suciu</last><first>Dan</first></person>

<book year="1994"> <title>TCP/IP Illustrated</title>

<author pointer="true">A1</author> <publisher>Addison-Wesley</publisher> <price> 65.95</price> </book><book year="2000"> <title>Data on the Web</title> <author pointer="true">A2</author> <author pointer="true">A3</author> <author pointer="true">A4</author> <publisher>Morgan Kaufmann Publishers</publisher> <price>39.95</price> </book></bib>

Page 26: Język zapytań dla XML

Obsługa linków - przykład

bib.book.(author.person, title) as Result

(bib.book as x, bib.book as y where x=y).(x.title, y.author.person group as autorzy)

Page 27: Język zapytań dla XML

Implementacja - narzędzia

Java SE 1.4, Xerces 1.4.3 (działa też z nowszymi), JFlex, CUP.

Page 28: Język zapytań dla XML

Implementacja - decyzje

Wykorzystanie drzewa DOM jako składu obiektów,

Przechowywanie całości danych w pamięci, Wyniki udostępniane użytkownikowi w formie

referencji do węzła XML (ResultNode),

Page 29: Język zapytań dla XML

Implementacja - problemy

Użycie drzewa DOM jako składu spowodowało problemy implementacyjne,

Wartości tekstowe w DOM Brak typów danych w XML

Page 30: Język zapytań dla XML

Kierunki rozwoju

Uzupełnienie systemu o perspektywy, Wykorzystanie DTD lub XML Schema, Wprowadzenie cech obiektowych, Optymalizacja zapytań, Zmiana modelu składu, Indeksowanie itp., …

Page 31: Język zapytań dla XML

Bibliografia

Przykłady zapytań w XML Query pochodzą z „XML Query

Use Cases” (http://www.w3.org/TR/xmlquery-use-cases/)

Przykładowe zapytanie w YATL pochodzi z XML Query Languages:

Experiences and Exemplars (http://www.w3.org/1999/09/ql/

docs/xquery.html)

Page 32: Język zapytań dla XML

Dziękujemy

Pytania???