Wyszukiwanie pełnotekstowe
Download
Report
Transcript Wyszukiwanie pełnotekstowe
XML
Extensible Markup Language
Adam Kowalski
Seminarium JPB
Źródła materiałów i przykładów:
http://www.w3.org/FR
http://www.w3.org/XML
Będzie o...
GenCode, GML, SGML, HTML,
czyli trochę historii
XML - składniki specyfikacji, polityka
działania...
XML - budowa
Przykładowe zastosowania
XML-QL
16.05.1999
Adam Kowalski seminarium JPB
2
Słowem wstępu...
(1)
Język oznaczania (ang. Markup Language) to
zbiór zasad oznaczania tekstu. Język ten
powinien specyfikować jakie oznaczenia są
dozwolone, jakie są wymagane, jak znaczniki są
rozróżniane od tekstu oraz zasady
zagnieżdżania oznaczeń. Daje odpowiedź na
pytanie, jak interpretować określone
oznaczenie. Język oznaczania jest
mechanizmem służącym do określania i
identyfikacji struktury dokumentu.
16.05.1999
Adam Kowalski seminarium JPB
3
Słowem wstępu...
Trochę historii
(2)
Początek lat 60-tych to:
GenCode stworzony przez komitet GCA (Graphic
Communications Assotiation) zintegrowane
archiwum różnych dokumentów
GML (Generalized Markup Language) te same
pliki źródłowe można stosować do wydruku książki,
wygenerowania raportów itd.
16.05.1999
Adam Kowalski seminarium JPB
4
Słowem wstępu...
Trochę historii
(3)
Już w GML pojawiły się znane obecnie “tagi”
(znaczników) < > i </ >. Dokumenty zapisane w
tym formacie cechowały się dużą czytelnością
dla człowieka. Jednakże niektóre znaczniki były
„opcjonalne” więc były pomijane. Powstawały
utrudnienia w komputerowym przetwarzaniu tak
zapisanego tekstu. W rzeczywistości stworzono
kilka specjalizowanych aplikacji stosowanych
dla konkretnych typów dokumentów.
16.05.1999
Adam Kowalski seminarium JPB
5
Słowem wstępu...
Trochę historii
(4)
Pojawiają się nowe typy dokumentów i jednocześnie
wzrasta potrzeba ujednolicenia metody publikacji i
manipulowania każdego typu dokumentu.
Na początku lat 80-tych ludzie z GenCode i GML
stworzyli komitet do spraw języków komputerowych do
przetwarzania tekstów (committee on Computer
Languages for the Processing of Text) w American
National Standard Institute (ANSI).
16.05.1999
Adam Kowalski seminarium JPB
6
Słowem wstępu...
Trochę historii
(5)
W roku 1986 powstaje SGML (Standarized Generalized
Markup Language), standard ISO 8879.
sformalizowany można udowodnić poprawność dokumentu
ustrukturalniony można tworzyć rozbudowane dokumenty
rozszerzalny wspiera zarządzanie ogromnymi repozytoriami
informacji.
wprowadzono pojęcie typu dokumentu oraz definicję typu
dokumentu (DTD - Document Type Definition) Typ dokumentu
jest definiowany formalnie przez części składowe oraz strukturę.
Czy SGML to tylko kolejny przerośnięty wytwór
komitetu?
16.05.1999
Adam Kowalski seminarium JPB
7
Słowem wstępu
Trochę historii
(6)
Na przełomie lat 89/90 niejaki Tim Berners-Lee wybrał
część znaczników ze standardu SGML DTD i już w
NeXUS-ie, pierwszej przeglądarce i edytorze użyto
znajomych znaczników, szablonów i linków.
W 1992 HTML ukształtowano tak, aby aplikacje zgodne
z SGML mogły czytać HTML. Zostawiono też furkę:
możliwość wprowadzania zmian w narzędziach HTML w
miarę rozwoju języka, co z tego wyszło można
podziwiać na rynku (Microsoft vs Netscape)
16.05.1999
Adam Kowalski seminarium JPB
8
...tam trzeci korzysta
czyli powstanie XML
(7)
Mamy więc:
w SGML
500 stron
brak pełnej implementacji
w HTML
wolna amerykanka
mało możliwości
16.05.1999
Adam Kowalski seminarium JPB
9
XML
(1)
Składniki
Całość XML zawiera kilka ściśle powiązanych ze sobą. Do tej pory
nie ma jeszcze kompletu wymaganych dokumentów
Extensible Markup Language (XML) 1.0 - definiuje składnię języka.
Istnieje już rekomendowana wersja z dnia 10.02.1998. Ostatnia wersja
dostępna jest pod adresem: http://www.w3.org/TR/REC-xml
XML Linking Language (XLink) - dokument ten specyfikuje
konstrukcje XML używane do opisania „linków” pomiędzy obiektami.
Oprócz znanych z HTML pojawiają się bardziej złożone linki,
wskazujące jednocześnie na wiele adresów, ponadto mogą być
typowane. Dokument w wersji 1.0 ma nadal status „Working Draft” ;-) i
pochodzi z dnia 03.03.1998. Ostatnia wersja jest dostępna pod
adresem: http://www.w3.org/TR/WD-xlink
16.05.1999
Adam Kowalski seminarium JPB
10
XML
(2)
Składniki
XML Pointer Language (XPointer) - Specyfikacja konstrukcji
pozwalających na adresowanie do wewnętrznych struktur dokumentu
XML, a w szczególności do elementów, stringów, etc. Dokument w
wersji 1.0 ma status „Working Draft” i pochodzi z dnia 03.03.1998.
Ostatnia wersja pod adresem: http://www.w3.org/TR/WD-xptr
Extensible Style Language (XSL) - Język do definiowania arkuszy
stylów dla dokumentów XML. Składa się z dwóch części:
język służący do transformowania dokumentów XML
słownik specyfikacji semantyki formatowaniadokumentów
Arkusz stylów specyfikuje prezentację klasy dokumentów XML poprzez
opisanie jak dana instancja klasy jest przekształcana w dokument XML
używający słownika formatowania. Dokument o statusie „Working Draft”
pochodzi z dnia 21.04.1999, dostępny: http://www.w3.org/TR/WD-xsl
I wiele innych...
16.05.1999
Adam Kowalski seminarium JPB
11
Polityka XML
Czyli co, gdzie i jak...
(3)
Cele XML:
XML będzie można w prosty sposób używać w Internecie
XML będzie wspomagał szeroką gamę zastosowań
XML będzie kompatybilny z SGML
Będzie łatwo pisać programy przetwarzające dokumenty XML (np.
agenci w internecie)
Sprowadzenie opcjonalności do minimum (ideał to brak opcjonalności)
Dokumenty powinny być łatwe w pisaniu jak i w czytaniu dla człowieka
Specyfikacja powinna przebiec szybko
Ponadto powinna być formalna i zwięzła
Dokumenty powinny być łatwe do stworzenia
Zwięzłość znaczników XML ma minimalną wartość
16.05.1999
Adam Kowalski seminarium JPB
12
Gramatyka...
Extended Backus-Naur Form (EBNF)
(4)
Formalna gramatyka języka XML jest
przedstawiona za pomocą prostej notacji
Extended Backus-Naur Form (EBNF) notation.
Każda reguła definiuje jeden symbol:
symbol ::= wyrażenie
W zależności od rodzaju wyrażenia symbole
zapisuje się za pomocą wielkiej lub małej litery
początkowej, ciągi liter w wyrażeniu są w
cudzysłowie
16.05.1999
Adam Kowalski seminarium JPB
13
Gramatyka...
Extended Backus-Naur Form (EBNF)
(5)
#xN - N jest liczą szesnastkową przedstawiającą znak według ISO/IEC 10646
[a-zA-Z], [#xN-#xN] - dowolny znak o wartości zawierającej się w domkniętym
przedziale
[^a-z], [^#xN-#xN] - dowolny znak spoza przedziału
[^abc], [^#xN#xN#xN] - dowolny znak niewystępujący w danym zbiorze
"string" i'string' - ciąg znaków zawarty w cudzysłowie
(expression) - wyrażenie traktowane jako blok, może być złożone z wyrażeń w taki
sposób:
A? - wyrażenie A jest opcjonalne
A B - po wyrażeniu A występuje wyr. B
A | B - wyrażenie A lub B, ale nie oba na raz
A - B - każdy ciąg zawarty w A, ale nieobecny w B
A+ - jedno lub więcej wystąpień wyrażenia A
A* - zero lub więcej wystąpień wyrażenia A
/* ... */ - komentarz
16.05.1999
Adam Kowalski seminarium JPB
14
Gramatyka...
XML zapisany w EBNF
(6)
Przykłady
document ::= prolog element Misc* /* dokument składa się z prologu
(dokładnie jednego), jednego elementu i ciągu innych różności */
Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] |
[#x10000-#x10FFFF]
S ::= (#x20 | #x9 | #xD | #xA)+ /* definicja „white space” - spacja,
ENTER, TAB... */
NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' | CombiningChar | Extender
Name ::= (Letter | '_' | ':') (NameChar)*
Names ::= Name (S Name)*
Nmtoken ::= (NameChar)+
Nmtokens ::= Nmtoken (S Nmtoken)*
16.05.1999
Adam Kowalski seminarium JPB
15
Budowa
Podstawowe określenia
(7)
Element to oznaczony fragment tekstu (bez znaczników) i
jednocześnie jednostka strukturalna. XML pozwala na określenie
związków z innymi elementami (np.. Polityka zawierania się
elementów, czy są jednostką atomową)
Element ‘quote’
<oldjoke>
<burns>Say <quote>goodnight</quote>,
Element ‘burns’
Gracie.</burns>
<allen><quote>Goodnight, Gracie.</quote></allen>
<applause/>
</oldjoke>
16.05.1999
Adam Kowalski seminarium JPB
16
Budowa
(8)
DTD
Document Type Declarations dla poprzedniego
1 lub więcej elementów
przykładu:
0 lub 1 element
<!ELEMENT oldjoke (burns+, allen, applause?)>
<!ELEMENT burns (#PCDATA | quote)*>
<!ELEMENT allen (#PCDATA | quote)*>
Element allen nie musi
wystąpić po burns
0 lub więcej elementów
<!ELEMENT quote (#PCDATA)*>
<!ELEMENT applause EMPTY>
Predefiniowany element (znaki)
16.05.1999
Adam Kowalski seminarium JPB
17
Budowa
(9)
DTD
Lista atrybutów
<!ATTLIST oldjoke name ID #REQUIRED
label CDATA #IMPLIED
status ( funny | notfunny ) 'funny'>
Tutaj element oldjoke ma trzy atrybuty:
name, typu ID, argument wymagany,
label, jest ciągiem znaków, nie wymagany,
status, może mieć wartość funny lub not funny, domyślnie jest funny
16.05.1999
Adam Kowalski seminarium JPB
18
Budowa
DTD - typy atrybutów
(10)
CDATA - atrybut jest ciągiem dowolnych znaków
ID - atrybut musi być
typu name
Name ::= (Letter | '_' | ':') (NameChar)*
ID jednoznacznie identyfikuje elementy w dokumencie. Każdy element
może mieć tylko jeden atrybut ID.
IDREF lub IDREFS - dla IDREF wartość atrybutu musi odnosić się
do pojedynczego ID innego elementu. IDREFS może zawierać kilka
IDREF oddzielonych pustym polem (według wcześniejszej definicji
„White Space” - s)
ENTITY lub ENTITIES wartością atrybutu musi być nazwa
pojedyńczego entity (encji), lub wielu oddzielonych pustymi polami
16.05.1999
Adam Kowalski seminarium JPB
19
Budowa
DTD - typy atrybutów
(11)
NMTOKEN lub NMTOKENS - ograniczona forma atrybutu CDATA
Nmtoken ::= (NameChar)+ [8] Nmtokens ::= Nmtoken (S Nmtoken)*
Lista nazw - można wyspecyfikować, że wartości atrybutów będą
pobierane z specyficznej listy nazw
Istnieją cztery typy wartości domyślnych:
#REQUIRED - atrybut musi mieć explicite wyspecyfikowaną wartość przy każdym
wystąpieniu elementu w dokumencie
#IMPLIED - atrybut nie jest wymagany i nie ma wartości domyślnej
"value" - wartość domyślna
#FIXED "value" - atrybut może mieć niezmienialną wartość w dokumencie. Nie musi
być powtarzany przy każdym wystąpieniu elementu w dokumencie
16.05.1999
Adam Kowalski seminarium JPB
20
Budowa
Przykład połączenia DTD z „ciałem dokumentu”
(12)
<?XML version="1.0" standalone="no"?>
<!DOCTYPE chapter SYSTEM "dbook.dtd" [
<!ENTITY %ulink.module "IGNORE">
<!ELEMENT ulink (#PCDATA)*>
<!ATTLIST ulink
xml:link CDATA #FIXED "SIMPLE”
xml-attributes CDATA #FIXED "HREF URL”
URL CDATA #REQUIRED>
]>
<chapter>...</chapter>
16.05.1999
Adam Kowalski seminarium JPB
21
Zastosowania
Przykłady
(1)
Wymiana baz danych
Rozproszone bazy danych
Perspektywy i wybór danych przez
użytkownika
Agenci internetowi
16.05.1999
Adam Kowalski seminarium JPB
22
Zastosowania
(2)
Przykłady
Istnieje już gotowa propozycja języka
zapytań korzystającego ze struktur XML,
nazwana XML-QL. Za jego pomocą
można wyciągnąć fragmenty
interesujących nas informacji, dokonywać
przekształceń, za pomocą których można
zintegrować dane z wielu źródeł.
?
16.05.1999
Adam Kowalski seminarium JPB
23
Zastosowania
Przykłady
(3)
<person ID="o123">
<firstname>John</firstname>
<lastname>Smith<lastname>
</person>
<person ID="o234">
...
</person>
<article author="o123 o234">
<title> ... </title>
<year> 1995 </year>
</article>
16.05.1999
Adam Kowalski seminarium JPB
24
Zastosowania
Przykłady
(4)
Przypuśćmy, że mamy następującą strukturę
opisaną w DTD:
<!ELEMENT book (author+, title, publisher)>
<!ATTLIST book year CDATA>
<!ELEMENT article (author+, title, year?,
(shortversion|longversion))>
<!ATTLIST article type CDATA>
<!ELEMENT publisher (name, address)>
<!ELEMENT author (firstname?, lastname)>
16.05.1999
Adam Kowalski seminarium JPB
25
Zastosowania
Przykłady
(5)
W tym przykładzie dostajemy wszystkich autorów książek, które
opublikował Addison-Wesley pod adresem: www.a.b.c/bib.xml
Może się pojawić dowolny adres URI (uniform resource identifier) reprezentujący
źródło dokumentów XML, które podajemy po słowie kluczowym IN.
WHERE <book>
<publisher><name>Addison-Wesley</name></publisher>
<title> $t</title>
<author> $a</author>
</book> IN "www.a.b.c/bib.xml"
CONSTRUCT $a
Zapytanie wyszukuje wszystkie elementy book z www.a.b.c/bib.xml, które mają przynajmniej
jeden element title, przynajmniej jeden element author i jeden element publisher którego name
odpowiada naszym kryteriom. Dla każdego wyniku zmiennym t i a przyporządkowuje parę tytuł,
autor. Rezultatem zapytania jest lista autorów „przywiązanych” do a. Znak $ poprzedza nazwy
zmiennych.
16.05.1999
Adam Kowalski seminarium JPB
26
Zastosowania
Przykłady
(6)
W tym przykładzie zastosowano skrót - zamiast zakończenia </element>
używa się </>, ponadto wynikiem jest struktura (element) o nazwie
<result>
WHERE <book>
<publisher><name>Addison-Wesley</></>
<title> $t</>
<author> $a</>
</> IN "www.a.b.c/bib.xml"
CONSTRUCT <result>
<author> $a</>
<title> $t</>
</>
16.05.1999
Adam Kowalski seminarium JPB
27
Zakończenie
Optymistyczne?
XML wydaje się być obiecujący, ale
spoglądając na ich cele jakie postawili
sobie przy tworzeniu standardów, to ich
obietnice bardzo łatwo można podważyć:
Cel: stworzyć standard XSL, XLink, XPointer...
w jak najszybszym czasie, a idzie im to tak,
że mamy tylko „Working Drafts”
Bądźmy jednak dobrej myśli.
16.05.1999
Adam Kowalski seminarium JPB
28