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