do druku
Transkrypt
do druku
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 1 13 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: [email protected] osoba: imie: Bartosz nazwisko: Bartoszewski email: [email protected] 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 self::node() parent::node() child::dziecko attribute::dziecko /descendant::* dziecko[position() = 3] dziecko[position() = last()] Skrót . .. dziecko @dziecko //* dziecko[3] dziecko[last()] Przykłady Wyrażenie ksiegarnia /ksiegarnia ksiegarnia/ksiazka //ksiazka ksiegarnia//ksiazka //@jezyk Objaśnienie Wybiera wszystkie dzieci węzła księgarnia Wybiera korzeń struktury księgarnia Wybiera dzieci ksiegarni, które sa typu ksiazka Wybiera elementy typu ksiazka bez względu na położenie Wybiera wszystkich potomków ksiegarni typu ksiazka 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 - Pokazuje tytuły książek droższych niż 35 • //ksiazka[@isbn="83-729-149-X"] - ksiazka o atrybucie isbn równym podanej wartości • //ksiazka[count(autorzy/autor)>2] - książka, posiadająca więcej niż dwóch autorów • //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