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