1 / 32

Język zapytań dla XML

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,

winola
Download Presentation

Język zapytań dla XML

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Plan prezentacji • Przedstawienie podstawowych założeń języka • Porównanie z innymi rozwiązaniami • Omówienie implementacji • Potencjalne kierunki rozwoju

  3. 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)

  4. 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

  5. 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)

  6. 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

  7. 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>

  8. 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

  9. 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)})

  10. Porównanie (1) – Zapytanie w XQL document("http://www.bn.com")/bib { book[publisher/name="Addison-Wesley" and @year>1991] { @year | title } }

  11. 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>

  12. 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

  13. 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>

  14. 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 ] ] ]

  15. 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)})

  16. Porównanie (2) – zapytanie w XQL • Zadanie tego zapytania nie jest możliwe

  17. 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>

  18. Porównanie (2) – zapytanie u nas bib.book.(author, title) as Result

  19. 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>

  20. 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 ]

  21. Porównanie (3) – zapytanie w Lorel select xml(results:{ select xml(result{b.title, b.author}) from bib.book b})

  22. Porównanie (3) – zapytanie w XQL document("http://www.bn.com")/bib->results { book->result { title | author } }

  23. 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>

  24. 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

  25. 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>

  26. 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)

  27. Implementacja - narzędzia • Java SE 1.4, • Xerces 1.4.3 (działa też z nowszymi), • JFlex, • CUP.

  28. 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),

  29. Implementacja - problemy • Użycie drzewa DOM jako składu spowodowało problemy implementacyjne, • Wartości tekstowe w DOM • Brak typów danych w XML

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

  31. 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)

  32. Dziękujemy Pytania???

More Related