Plan wykładu Spis treści 1 Model semistrukturalny 1 2 XML 3 3 XPath 8 4 Bazy danych a XML 11 4.1 Bazy przechowywujące XML.......................... 11 4.2 Natywne bazy XML.............................. 12 5 Źródła 13 1 Model semistrukturalny Uporządkowanie Dane nieuporządkowane (dźwięk, obraz, filmy, tekst) dowolnego typu, formatu kolejność nie ma znaczenia brak reguł nieprzewidywalne Dane uporządkowane zorganizowane w encje, pogrupowane, ułożone w kolejności encje posiadają te same atrybuty atrybuty dla danego schematu mają ten sam format i rozmiar, są ułożone w jednakowym porządku Choroby i lekarstwo Choroby dane dotyczące tych samych obiektów z różnych źródeł złożona struktura zależności wielokrotne zagnieżdżenia encje z tej samej grupy mogą mieć różne atrybuty jakie znaczenie ma porządek atrybutów? rozbudowujące się metadane Lek - model semistrukturalny 1
Model semistrukturalny standaryzacja danych z różnych źródeł realizacja złożonej struktury zależności wielokrotne zagnieżdżenia zobrazowane przez grafy skierowane encje z tej samej grupy mogą mieć różne atrybuty jakie znaczenie ma porządek atrybutów - nie musi mieć model samoopisujący się wielkości i typy atrybutów encji z tej samej grupy mogą się różnić Przykład osoba: Adam Adamowski email: adam.adamowski@abc.def.pl osoba: imie: Bartosz nazwisko: Bartoszewski email: baba@def.abc.pl osoba: Cezary Cezar siedziba: Cesarzewo Graf Cechy grafu graf skierowany, etykietowany wierzchołki to obiekty etykiety krawędzi to atrybuty obiektów 2
wartości atomowe zawarte w liściach drzewa brak ograniczeń na etykiety i liczbę następników brak porządku wychodzących krawędzi Dalsze cechy modelu wykorzystywany do wymiany i integracji danych z źródeł heterogenicznych struktury danych nie muszą być regularne duże schematy, szybko rozrastające się łatwość wstawiania danych łatwość wyszukiwania, bez wiedzy o typach atrybutów gubienie informacji o typach trudniejsza optymalizacja Języki opisu i przechowywania danych SGML XML YAML JSON Zapytania Języki zapytań oparte na pojęciu ścieżki (np. Lorel, XQuery, XPath) Ścieżka = wyrażenie regularne opisujące drogę od korzenia Przykłady ścieżek: biblio.ksiazka artykul.autor biblio._*.autor Zapytanie Wszyscy autorzy książek : Query z1 select autor: x from biblio.ksiazka.autor x; SELECT extract(value(k), //autor ) FROM ksiazki_xml k; 3
2 XML XML XML (ang. Extensible Markup Language - Rozszerzalny Język Znaczników) - uniwersalny język formalny przeznaczony do reprezentowania danych w sposób strukturalny. nie jest językiem programowania dokumenty zawierają znaczniki definiowane przez programistę niezależny od platformy otwarty, elastyczny, bezpłatny, modularny standard rekomendowany oraz specyfikowany przez W3C uproszczenie SGML a nadmiarowy XML a model semistrukturalny Różnice: W modelu danych semistrukturalnych można wyrazić dowolny graf skierowany, w XML - wyłącznie drzewa. W dokumentach XML kolejność występowania elementów w ramach elementu nadrzędnego jest ważna. W modelu semistrukturalnym krawędzie nie są porządkowane. W dokumencie XML istnieje kilka typów składników struktury, spośród których podstawowe to elementy i atrybuty. W modelu danych semistrukturalnych nie istnieje takie rozróżnienie. Przykład <biblioteka> <ksiazka> <autor> <imiona> <imie>philip</imie> <imie>kindred</imie> <imiona> <nazwisko>dick</nazwisko> </autor> <tytul>ubik</tytul> <rok>1966</rok> </ksiazka> <ksiazka> <autor> <imie>george</imie> <nazwisko>orwell</nazwisko> </autor> 4
<tytul>rok 1984</tytul> <rok>1953</rok> </ksiazka> </biblioteka> DOM Obiektowy model dokumentu (ang. Document Object Mode) - sposób reprezentacji złożonych dokumentów XML i HTML w postaci modelu obiektowego. Model ten jest niezależny od platformy i języka programowania. Standard W3C DOM definiuje zespół klas i interfejsów, pozwalających na dostęp do struktury dokumentów oraz jej modyfikację poprzez tworzenie, usuwanie i modyfikację tzw. węzłów. struktura drzewa DOM Poziomy poprawności dokumentów XML Poprawność składniowa (ang. well-formed) - zgodność z regułami składni XML. Reguły te obejmują m.in. konieczność domykania wszystkich znaczników. Dokument niepoprawny składniowo nie może być przetworzony przez parser XML. Poprawność strukturalna (ang. valid) - zgodność z definicją dokumentu, tzn. dodatkowymi regułami określonymi przez użytkownika. Do precyzowania tych reguł służą specjalne języki. Najpopularniejszymi są DTD, XML Schema oraz RELAX NG. 5
Dokument XML well-formed zawiera deklarację XML z numerem wersji, umieszczoną na początku pliku <?xml version="1.0"?> zawiera dokładnie jeden element główny (ang. root element) każdy element zaczyna się znacznikiem początku elementu np. <data> - kończy identycznym znacznikiem końca elementu np. </data> elementy puste kończymy wewnątrz znacznika np.: <element-pusty /> elementy puste mogą zawierać atrybuty nazwy elementów mogą zawierać znaki alfanumeryczne (litery a-z, A-Z oraz cyfry 0-9), znaki diakrytyczne (nie zalecane) oraz 3 znaki interpunkcyjne (podkreślenie _, myślnik -, kropka.) dwukropek zarezerwowany dla przestrzeni nazw np. <przestrzen1:element> nazwy elementów nie mogą zaczynać się od znaków interpunkcyjnych, cyfr, słów: xml, XML, xml itp. elementy mogą posiadać dzieci i atrybuty (wartość atrybutu w cudzysłowie): <?xml version="1.0" standalone="yes"?> <przykład> <typ>niezwykle oryginalny</typ> Witaj świecie! </przykład> <?xml version="1.0" standalone="yes"?> <przykład typ="niezwykle oryginalny"> Witaj świecie! </przykład> komentarze zaczynają się znakami: <!--, a kończą: --> instrukcje przetwarzania (wykorzystywane do przeniesienia informacji do aplikacji) rozpoczynają się znakami: <?, a kończą:?> przeznaczony do wyświetlania Dokument XML - valid jest well-formed opisany schematem: <?xml version="1.0" standalone="no"?> <!DOCTYPE Student SYSTEM "student.dtd"> <Student> </Student> jest w pełni zgodny ze schematem przeznaczony do wyświetlania i przetwarzania 6
Znaczniki DTD <!DOCTYPE znacznik-główny [ element ]> <!ELEMENT znacznik (składnik,)> <!DOCTYPE Studenci [ <!ELEMENT Studenci (Student*)> <!ELEMENT Student (imie,nazwisko,adres,rok)> <!ELEMENT imie (#PCDATA)> <!ELEMENT nazwisko (#PCDATA)> ]> Znaczniki DTD - użycie <?xml version="1.0" standalone="no"?> <!DOCTYPE Studenci SYSTEM "student.dtd"> <Studenci> <Student> <imie>onufry</imie> <nazwisko>zagłoba</nazwisko> <adres>dzikie Pola</adres> <rok>1648</rok> </Student> <Student> </Student> ]> </Studenci> Atrybuty DTD umieszczane w znaczniku otwierającym postać: atrybut= wartość mogą służyć do łączenia elementów (links) deklaracja: <!ATTLIST element atrybut typ > 7
Atrybuty DTD - definicja <!DOCTYPE Studenci [ <!ELEMENT Studenci (Student*)> <!ELEMENT Student (imie,nazwisko,adres,rok)> <!ATTLIST Student studentid ID chodzina IDREFS> <!ELEMENT nazwisko (#PCDATA)> ]> Atrybuty DTD - użycie <?xml version="1.0" standalone="no"?> <!DOCTYPE Studenci SYSTEM "student.dtd"> <Studenci> <Student studentid="oz" chodzina="ms,gpp"> <imie>onufry</imie> <nazwisko>zagłoba</nazwisko> <adres>dzikie Pola</adres> <rok>1648</rok> </Student> <Student> </Student> ]> </Studenci> Atrybuty łączące ID to atrybut identyfikujący - do użycia w innych elementach IDREF to referencja do wartości atrybutu ID w innym elemencie brak kontroli typów powiązań!!! bogatsze mechanizmy: XLink i XPointer. 3 XPath XPath XPath (ang. XML Path Language, w wolnym tłumaczeniu Język ścieżek XML) - język służący do adresowania części dokumentu XML. 8
XPath: wykorzystuje ścieżki do nawigowania po dokumencie XML; zawiera bibliotekę standardowych funkcji; stanowi główny element XSLT; jest rekomendowany prze W3C. Ścieżka lokalizacji Wskazanie węzła lub zbioru węzłów - ścieżka lokalizacji. Ścieżka składa się z jednego lub więcej kroków lokalizacji oddzielanych od siebie znakami / lub //. Jeśli ścieżka zaczyna się od /, nazywamy ją ścieżką bezwzględną. W przeciwnym wypadku ścieżkę nazywamy względną, zaczyna się ona od bieżącego węzła nazywanego węzłem kontekstowym. Budowa wyrażeń Krok lokalizacji składa się z osi, badania węzła oraz zera lub więcej predykatów. Jeśli np. wyrażenie ma postać: child::n:kontakt[position()=2] nazwą osi jest child, badanie węzła to wyrażenie: n:kontakt natomiast zapis: [position()=2] to predykat. Ścieżki lokalizacji składać się mogą z jednego lub więcej kroków lokalizacji, np. /descendant::n:adresy/child::n:adres wybiera elementy n:adres mające rodzica n:adresy. Osie Xpath Oś to kolekcja węzłów lub atrybutów o określonym pokrewieństwie wobec węzła kontekstowego. 9
Oś ancestor ancestor-or-self attribute child descendant descendant-or-self following following-sibling namespace parent preceding precending-sibling self Znaczenie dotyczy przodków węzła kontekstowego. Przodkami są rodzice węzła kontekstowego, rodzice tych rodziców itd., aż po węzeł główny włącznie dotyczy węzła kontekstowego i jego przodków dotyczy atrybutów węzła kontekstowego dotyczy dzieci węzła kontekstowego dotyczy potomków węzła kontekstowego. Potomek to dziecko, dziecko dziecka itd. dotyczy węzła kontekstowego i jego potomków dotyczy wszystkich węzłów z dokumentu, do którego należy węzeł kontekstu, które znajdują się po nim dotyczy wszystkich węzłów znajdujących się na tym samym poziomie co węzeł kontekstu, za tym węzłem dotyczy węzłów przestrzeni nazw węzła kontekstu dotyczy węzła rodzica węzła kontekstowego dotyczy wszystkich węzłów z dokumentu, do którego należy węzeł kontekstu, które znajdują się przed nim dotyczy wszystkich węzłów znajdujących się na tym samym poziomie co węzeł kontekstu, przed tym węzłem zawiera węzeł kontekstowy Predykaty XPath Predykaty XPath zawarte są w nawiasach kwadratowych [], przykładowe testy: wartości atrybutu w danym łańcuchu, wartości elementu, czy element zawiera określone dziecko, atrybut lub inny element, pozycji węzła w drzewie. W predykatach można użyć dowolnego rodzaju typu wyrażeń: zbioru węzłów, logicznego, liczbowego, tekstowego, wynikowego fragmentu drzew. Funkcje Xpath 10
Funkcja last() position() count(zbiór-węzłów) namespace-uri(zbiórwęzłów) name(zbiór-węzłów) local-name(zbiór-węzłów) Znaczenie zwraca liczbę węzłów w zbiorze zwraca położenie węzła kontekstowego w zbiorze węzła kontekstowego zwraca liczbę węzłów w przekazanym zbiorze. Jeśli argument nie zostanie podany, zliczone zostaną węzły zbioru węzła kontekstowego zwraca adres URI przestrzeni nazw pierwszego węzła ze zbioru. Pominięcie parametru powoduje uruchomienie funkcji na węźle kontekstowym zwraca pełną kwalifikowaną nazwę pierwszego węzła ze zbioru. Pominięcie parametru powoduje uruchomienie funkcji na węźle kontekstowym zwraca nazwę lokalną pierwszego węzła ze zbioru węzłów. Pominięcie parametru powoduje uruchomienie funkcji na węźle kontekstowym Skróty Wyrażenie Skrót self::node(). parent::node().. child::dziecko dziecko attribute::dziecko @dziecko /descendant::* //* dziecko[position() = 3] dziecko[3] dziecko[position() = last()] dziecko[last()] Przykłady Wyrażenie Objaśnienie ksiegarnia Wybiera wszystkie dzieci węzła księgarnia /ksiegarnia Wybiera korzeń struktury księgarnia ksiegarnia/ksiazka Wybiera dzieci ksiegarni, które sa typu ksiazka //ksiazka Wybiera elementy typu ksiazka bez względu na położenie ksiegarnia//ksiazka Wybiera wszystkich potomków ksiegarni typu ksiazka //@jezyk Wybiera wszystkie atrybuty o nazwie jezyk Przykłady - predykaty /ksiegarnia/ksiazka[1] - Pierwsza ksiazka będąca dzieckiem ksiegarni /ksiegarnia/ksiazka[last()] - Ostatnia ksiazka będąca dzieckiem ksiegarni /ksiegarnia/ksiazka[last()-1] - Przedostatnia ksiazka będąca dzieckiem ksiegarni /ksiegarnia/ksiazka[position()<3] - Pierwsze dwie ksiazki będąca dziećmi ksiegarni //tytul[@jezyk] - Wybiera wszystkie tytuly posiadajace atrybut jezyk //tytul[@jezyk= pl ] - Wybiera wszystkie polskie tytuły /ksiegarnia/ksiazka[cena>35.00] - Wybiera ksiazki, których dziecko - cena ma wartość większą niż 35 11
/ksiegarnia/ksiazka[cena>35.00]/tytul niż 35 - Pokazuje tytuły książek droższych //ksiazka[@isbn="83-729-149-x"] - ksiazka o atrybucie isbn równym podanej wartości //ksiazka[count(autorzy/autor)>2] autorów - książka, posiadająca więcej niż dwóch //ksiazka[contains(tytul,"xml")] - książka zawierająca w tytule słowo XML 4 Bazy danych a XML Bazy danych a XML Bazy danych umożliwiające przechowanie danych w formacie XML (ang. XMLenabled database systems) - postrelacyjne, obiektowo-relacyjne systemy zarządzania bazą danych, które na wejściu i na wyjściu akceptują i generują dane w postaci XML. Bazy danych dokumentów XML - natywne bazy danych XML (ang. native XML database systems)- zorientowane na przetwarzanie dokumentów XML, używają dokumentów XML jako podstawowego typu przechowywania. 4.1 Bazy przechowywujące XML Przechowywanie danych XML w systemie plików w atrybutach typu, BLOB, CLOB, XMLType w bazach danych w postaci zdekomponowanej mapowanie schematów XML na schematy baz danych generowanie schematów XML ze schematów baz danych i odwrotnie Obsługa XMLType CREATE TABLE cv OF XMLType; CREATE TABLE produkty_xml ( kod Number(5) PRIMARY KEY, opis XMLType ); INSERT INTO produkty_xml VALUES ( 125, XMLType( <produkt> <nazwa>britax Evolva 123</nazwa> <cena>699</cena> </produkt> ) ); SELECT opis FROM produkty_xml; 12
SELECT * FROM cv; SELECT Extractvalue(Value(k), //ksiazka[cena=31]/tytul ) FROM ksiazki_xml k; SELECT k.existnode( //ksiazka[@isbn="83-729-149-x"] ) FROM ksiazki_xml k; 4.2 Natywne bazy XML Natywne bazy XML Baza danych dokumentów XML: definiuje model dla dokumentów XML-owych; dokumenty XML podstawową jednostką składowania; wykorzystuje dowolny sposób fizycznego składowania. Funkcjonalność bazy danych dokumentów XML Bazy dokumentów XML zapewniają: składowanie dokumentów XML, definiowanie i przechowywanie schematów (DTD, XMLSchema), obsługa zapytań (XPath, XQuery, XML-QL, Quilt), obsługa modyfikacji, wstawiania i usuwania dokumentów, obsługa interfejsów programistycznych (XML:DB API, XQuery API for Java - XQJ, SAX, DOM, JDOM), funkcjonalność tradycyjnych SZBD. 5 Źródła Źródła W wykładzie wykorzystano materiały: BUNEMAN P., Semistructured data, W: Proceedings of PODS, 1997, 117-121. ABITEBOUL S., Querying semi-structured data, W: Proceedings of ICDT, 1997, 1-18. http://www.dcs.bbk.ac.uk/~ptw/teaching/ssd/toc.html http://edu.pjwstk.edu.pl/wyklady/rbd/scb/wyklad4/obrelb.htm Zbigniew Jurkiewicz, Semistrukturalne bazy danych - wprowadzenie, materiały do wykładów, Instytut Informatyki UW Materiały do wykładów Pani mgr Wandy Kik http://www.pabloware.com/xml/ http://wazniak.mimuw.edu.pl/index.php?title=zaawansowane_systemy_baz_ danych 13
Wikipedia http://www.w3schools.com/xpath/ 14