Diplomová práce. Zpracování strukturovaných dokumentů



Podobné dokumenty
MBI - technologická realizace modelu

Ukládání a vyhledávání XML dat

Vývoj moderních technologií při vyhledávání. Patrik Plachý SEFIRA spol. s.r.o.

PRODUKTY. Tovek Tools

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Metody tvorby ontologií a sémantický web. Martin Malčík, Rostislav Miarka

Znalostní systém nad ontologií ve formátu Topic Maps

Obsah. Zpracoval:

Kolaborativní aplikace

TÉMATICKÝ OKRUH Softwarové inženýrství

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

PRODUKTY. Tovek Tools

TÉMATICKÝ OKRUH Softwarové inženýrství

Tovek Tools. Tovek Tools jsou standardně dodávány ve dvou variantách: Tovek Tools Search Pack Tovek Tools Analyst Pack. Připojené informační zdroje

Požadavky pro výběrová řízení TerraBus ESB/G2x

Obsah prezentace. Co je to XML? Vlastnosti. Validita

EXTRAKT z mezinárodní normy

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

8.2 Používání a tvorba databází

Pokročilé techniky tvorby sestav v Caché. ZENové Reporty

Tovek Server. Tovek Server nabízí následující základní a servisní funkce: Bezpečnost Statistiky Locale

Kartografická webová aplikace. Přednáška z předmětu Počítačová kartografie (KMA/POK) Otakar Čerba Západočeská univerzita

1 Webový server, instalace PHP a MySQL 13

Business Intelligence

PRODUKTY Tovek Server 6

POLOPROVOZ ZNALOSTNÍ DATABÁZE INTERPI DOKUMENTACE

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů

rychlý vývoj webových aplikací nezávislých na platformě Jiří Kosek

XML Š ABLONY A JEJICH INTEGRACE V LCMS XML TEMPLATES AND THEIN INTEGRATION IN LCMS

Oracle XML DB. Tomáš Nykodým

Systém elektronického rádce v životních situacích portálu

PRG036 Technologie XML

Alena Malovaná, MAL305

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky

Sémantický web 10 let poté

1. Webový server, instalace PHP a MySQL 13

Architektury Informačních systémů. Jaroslav Žáček

DATABÁZOVÉ SYSTÉMY. Metodický list č. 1

Komprese a dotazování nad XML dokumenty

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Sémantický web a extrakce

Vzdělávací obsah vyučovacího předmětu

Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu

IVT. Grafické formáty. 8. ročník

Tvorba informačních systémů

TÉMATICKÝ OKRUH Softwarové inženýrství

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

13. blok Práce s XML dokumenty v databázi Oracle

2 PŘÍKLAD IMPORTU ZATÍŽENÍ Z XML

ZNAČKOVACÍ JAZYKY A JEJICH VYUŽÍVÁNÍ MARKUP LANGUAGE AND THEIR USE. Zdeněk Havlíček

Geografické informační systémy p. 1

5.15 INFORMATIKA A VÝPOČETNÍ TECHNIKA

Microsoft Office 2003 Souhrnný technický dokument white paper

Úvod do aplikací internetu a přehled možností při tvorbě webu

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320 M A T U R I T N Í T É M A T A P Ř E D M Ě T U

Úvod do tvorby internetových aplikací

Zobrazte si svazy a uspořádané množiny! Jan Outrata

Zpráva o zhotoveném plnění

1. Dědičnost a polymorfismus

Myšlenkové mapy v Linuxu

Jádrem systému je modul GSFrameWork, který je poskytovatelem zejména těchto služeb:

XML terminologie a charakteristiky. Roman Malo

IntraDoc. Řešení pro státní správu a samosprávu.

GIS Geografické informační systémy

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

Použití databází na Webu

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Úvod 9

Jazyk XSL XPath XPath XML. Jazyk XSL - rychlá transformace dokumentů. PhDr. Milan Novák, Ph.D. KIN PF JU České Budějovice. 9.

UŽIVATELSKÁ PŘÍRUČKA K INTERNETOVÉ VERZI REGISTRU SČÍTACÍCH OBVODŮ A BUDOV (irso 4.x) VERZE 1.0

Michal Krátký, Miroslav Beneš

GIS Geografické informační systémy

Tvorba informačních systémů

Profilová část maturitní zkoušky 2017/2018

Roční periodická zpráva projektu

Dnešní téma. Oblasti standardizace v ICT. Oblasti standardizace v ICT. Oblasti standardizace v ICT

Unifikovaný modelovací jazyk UML

Informační systémy 2006/2007

Microsoft Office 2003 Souhrnný technický dokument white paper

Vytvoření portálu odboru strukturálních fondů Ministerstva vnitra a zajištění jeho hostingu na serveru dodavatele

A1 Marketingové minimum pro posílení výchovy k podnikavosti (8h)

Další XML technologie

Úvod do databázových systémů. Ing. Jan Šudřich

Syntaxe XML XML teorie a praxe značkovacích jazyků (4IZ238)

Systémy pro tvorbu digitálních knihoven

Architektury Informačních systémů. Jaroslav Žáček

Logický datový model VF XML DTM DMVS

HTML Hypertext Markup Language

Semináˇr Java X J2EE Semináˇr Java X p.1/23

C# - Databáze úvod, ADO.NET. Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí

TECHNICKÁ SPECIFIKACE PŘEDMĚTU PLNĚNÍ

Obsah. 1) Rozšířené zadání 2) Teorie zásuvných modulů a) Druhy aplikací používajících zásuvné moduly b) Knihovny c) Architektura aplikace d) Výhody

Vývoj informačních systémů. Přehled témat a úkolů

DELTA - STŘEDNÍ ŠKOLA INFORMATIKY A EKONOMIE, s.r.o. Obor informační technologie AJAX ESHOP. Maturitní projekt. Třída:

Databáze v MS ACCESS

InterSystems Caché Post-Relational Database

GeoHosting. Martin Vlk. (vypusťte svoje data do světa) Help forest s.r.o. člen skupiny WirelessInfo 2008

Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita

Transkript:

České vysoké učení technické v Praze Fakulta elektrotechnická Katedra kybernetiky Diplomová práce Zpracování strukturovaných dokumentů květen 2006 Vít Tauchman

Prohlášení Prohlašuji, že jsem svou diplomovou práci vypracoval samostatně a použil jsem pouze podklady ( literaturu, projekty, SW atd.) uvedené v přiloženém seznamu. V Praze dne 17. května

Poděkování Chtěl bych poděkovat všem lidem, bez nichž by nemohla tato práce vzniknout, především svému vedoucímu diplomové práce ing. Petrovi Aubrechtovi, Ph.D. za vedení, připomínky a poznámky k práci. Dále bych rád poděkoval osobám blízkým, zejména za jejich morální podporu.

Abstrakt Cílem této práce bylo zmapovat metody efektivní práce se strukturovanými daty. Práce se zabývá problematikou XML, jazyka, který je určen pro práci s tímto typem dat. Hledá používaná a dobře použitelná persistentní úložiště pro XML dokumenty. Mezi možná řešení mimo jiné patří nativní XML databáze, které jsou pro většinu SW vývojářů stále cizí. Práce představuje jednu z databází tohoto typu a předkládá výsledky zátěžových testů ukládání a vyhledávání. Jelikož velké množství dat v elektronické podobě obsahuje textová data (byla analyzována především data elektronické pošty), je v druhé části práce věnována pozornost analýze textů, implementována jedna z metod Topic Identification a uvedeny výsledky a praktické ukázky analýzy. Některé algoritmy pro zpracování a vizualizaci dat použité v práci byly připraveny jako moduly pro začlenění do systému SumatraTT. Abstract The topic of this thesis was to map over methods for efficient work with structured data. The work deals with XML problems. XML is a language intended for managing data of this type. There are discussed well and frequently used persistent heap for XML documents in the thesis. One of the possible solution are native XML databases, which are still not well known for most of SW developers. One of native XML database is introduced and the results of data storing and searching are brought. A big amount of electronic data consists text data (it was especially analyzed data of electronic mail), so the second part of the thesis pays attention to text analysis. It is implemented one of the method of Topic Identification and the results and practical experiment of analysis are mentioned. Some algorithms of data processing and visualization were prepared as modules to integration to system SumatraTT. 4

Obsah 1 Úvod 1 2 XML jako strukturovaný dokument 2 2.1 Úvod do XML................................ 2 2.2 Výhody využití XML dokumentů...................... 2 2.3 Aplikace XML................................ 3 2.4 Dva typy XML dokumentů......................... 4 2.4.1 Datově orientované XML dokumenty................ 4 2.4.2 Dokumentově orientované XML dokumenty............ 5 2.4.3 Kde je hranice mezi oběma typy dokumentů?........... 6 3 XML databázové systémy 8 3.1 Vztah XML a databáze........................... 8 3.1.1 Práce s XML............................. 9 3.2 Typy XML databázových systémů..................... 9 3.2.1 Relační versus XML databázový systém.............. 9 3.2.2 Nativní XML databáze....................... 10 3.2.3 Další typy XML databázových systémů.............. 11 3.3 Nativní XML databáze exist........................ 12 3.3.1 Principy indexování......................... 12 3.3.2 Ukládání dokumentů......................... 14 3.3.3 Ukázka dotazování nad databází.................. 16 3.3.4 Zhodnocení databáze exist..................... 19 4 Wordnet 20 4.1 Princip a užití................................. 20 4.1.1 Dostupnost Wordnet databáze................... 22 4.2 Možnost mapování Wordnet do SUMO................... 23 4.2.1 Ontologie SUMO........................... 23 4.2.2 Princip mapování........................... 23 5 Vizualizace strukturovaných dat 25 5.1 Potřeba vizualizovat strukturovaná data.................. 25 5.2 Příklady existujících vizualizačních nástrojů................ 25 5.2.1 Wilmascope.............................. 25 i

Obsah 5.2.2 TouchGraph............................. 26 5.2.3 GraphViz............................... 26 5.2.4 Prefuse................................ 27 5.2.5 HyperGraph............................. 28 6 Metody Topic Identification 30 6.1 Typy dat................................... 30 6.2 Principy a cíle Topic Identification..................... 31 6.2.1 Knowledge-based Automatic Topic Identification......... 32 6.3 Vlastní metoda TID Expert-knowledged Tree Histogram........ 33 7 Vlastní algoritmus a dosažené výsledky 35 7.1 Popis hlavních částí algoritmu........................ 35 7.1.1 Množství vygenerovaných stromů.................. 37 7.1.2 Možnost mapování tree histogramu do SUMO........... 37 7.2 Ukázka výsledků............................... 37 7.2.1 Pozorování interaktivního stromu.................. 37 7.2.2 2D histogram............................. 38 7.2.3 Diference stromů........................... 40 7.2.4 Knihovna JBowl versus funkce Split................ 49 8 Implementace modulů SumatraTT 52 8.1 Seznámení s programem SumatraTT.................... 52 8.2 Jednotlivé moduly a jejich využití..................... 52 8.2.1 Modul Word Separator....................... 53 8.2.2 Modul mapování slov do Wordnetu................. 54 8.2.3 Modul vizualizace stromové struktury............... 54 9 Závěr 55 10 Přílohy 56 10.1 Příloha seznam použitého SW....................... 56 10.2 Příloha obsah přiloženého CD....................... 56 ii

Seznam obrázků 3.1 Přiřazení unikátních čísel uzlům level-order numbering scheme..... 13 3.2 Přiřazení unikátních čísel uzlům exist numbering scheme........ 14 3.3 Výsledky testu ukládání sekvence souborů do exist............ 16 3.4 Rychlost odezvy dotazu v závislosti na počtu nalezených slov....... 17 3.5 Srovnání stromového fulltext prohledávání................. 18 3.6 Kombinace stromového a fulltextového prohledávání............ 19 5.1 Ukázka 3D scény Wilmascope........................ 26 5.2 Struktura webových stránek Wordnetu podle TouchGraph........ 27 5.3 Příklad grafu GraphViz............................ 27 5.4 Příklad Prefuse grafu............................. 28 5.5 HyperGraph strom............................... 29 6.1 Podíl konceptu a stupeň generalizace.................... 33 6.2 Wordnet hierarchický strom.......................... 34 7.1 Schéma algoritmu............................... 36 7.2 Ukázka části interaktivního stromu jako výsledku analýzy úryvku textu z Bible (Janovo evangelium)......................... 38 7.3 Robinson 2D histogram............................ 39 7.4 Enron 2D histogram.............................. 40 7.5 Diference pojmů příbuzných slovu artifact v knize Robinson Crusoe... 42 7.6 Diference pojmů popisujících cestování v knize Robinson Crusoe..... 44 7.7 Diference pojmů popisujících organismy v emailech Enron......... 45 7.8 Dynamika pojmu artifact v emailech Enron................. 46 7.9 Zastoupení států v emailech Enron v diferenčním tree histogramu.... 48 7.10 Zastoupení jednotlivých států v emailech Enron v diferenčním tree histogramu..................................... 49 7.11 Chybná interpretace zkratek chemických prvků............... 51 8.1 Screenshot z prostředí SumatraTT...................... 52 8.2 Schéma Sumatra modulů........................... 53 iii

Seznam tabulek 4.1 Zastoupení slovních druhů v lexikální databázi Wordnet.......... 20 7.1 Pojmy s největšími hodnotami zastoupení v tree histogramu rozdílu (diference 4. a 7. kapitoly pojmu artifact).................. 41 7.2 Pojmy s největšími hodnotami zastoupení v tree histogramu rozdílu (diference 4. a 7. kapitoly pojmu travel)................... 43 7.3 Pojmy s největšími hodnotami zastoupení v tree histogramu rozdílu dvou množin Enron dat(pojem artifact)................... 47 7.4 Porovnání výstupů algoritmu pro různé metody separace slov z textu.. 50 iv

1 Úvod Efektivní zpracování informací hraje v dnešní době důležitou roli pro firmy i na akademické půdě. Veliký pokrok do této oblasti přinesl jazyk XML a technologie s ním spojené. Jazyk XML byl vytvořen pro flexibilní a jednoduchou práci se strukturovanými a semistrukturovanými daty. Z těchto důvodů se problematika XML objevuje v teoretické části, jsou v ní vysvětleny základní principy používání, typy dokumentů XML a příklady nasazení. S nástupem informačních technologií se logicky objevilo velké množství informací a tedy i strukturovaných dat v elektronické podobě. Pokud jsou tyto informace ukládány do XML dokumentů, je zcela logické disponovat nativním úložištěm pro tento typ dokumentů. Proto jeden z cílů této diplomové práce je zmapovat možnosti efektivního ukládání a vyhledávání v XML souborech. V praktické části je představena nativní XML databáze exist spolu s výsledky zátěžových testů. Jedním z původních záměrů diplomové práce byla snaha analyzovat velké množství dokumentů elektronické pošty firmy Enron. Struktura emailu obsahuje kromě údajů v hlavičce i tělo, které zpravidla obsahuje text. Analýza textu je další z oblastí vývoje a nachází uplatnění zejména v prostředí internetu (aplikace fulltextového vyhledávání, sémantického webu nebo automatických odpovědí elektronické pošty). V rámci práce byly představeny již existující metody a implementován algoritmus nové metody Topic Identification, pracovně nazvané Expert-knowledged Tree Histogram. Vlastní algoritmus se opírá o některé technologie, které v práci předcházejí popisu samotného algoritmu. Mezi tyto problematiky patří lexikální databáze Wordnet, vizualizační nástroje hierarchických struktur a již zmiňované metody Topic Identification. Úplné pochopení algoritmu si žádá alespoň minimální orientaci v těchto tématech. V závěru jsou uvedeny ukázky experimentů a praktických ukázek, stejně jako srovnání výsledků jednotlivých modifikací algoritmu. Samotný algoritmus je možno dále rozšiřovat i testovat na dalších typech dat. Je navržen tak, aby na jeho základě bylo možno lehce stavět další algoritmy. 1

2 XML jako strukturovaný dokument 2.1 Úvod do XML XML, tedy rozšiřitelný značkovací jazyk (Extensible Markup Language), je určen pro práci se strukturovanými daty. Strukturu dat je možno tímto jazykem přímo definovat a následně vyplnit daty připravenou šablonu. XML se stal standardem pro značkování dokumentů a byl schválen konsorciem W3C[1]. Data jsou v XML dokumentu reprezentována jako textové řetězce, které jsou uzavřené do tagů (textových značek), tyto značky sémanticky popisují data. Značka spolu s textovým řetězcem tvoří element, ten představuje základní stavební prvek dokumentu. Elementy se do sebe mohou vnořovat, ne se však překrývat. Všechna pravidla pro vytváření XML dokumentu jsou přesně popsána ve specifikaci W3C [1]. Dodržování pravidel syntaxe, daných touto specifikací, zajišťuje validitu dokumentu (validní dokument správně formulovaný). Seznam značek, jejich hierarchické umístění vůči ostatním značkám a typ dat, který značky mohou obsahovat, je definován v definici typu dokumentu DTD [1]. Splňuje-li dokument všechny podmínky DTD, nazýváme ho platným, v opačném případě neplatným. Pro používání XML není nutné definovat DTD, nicméně pro používání v aplikacích a zejména jsou-li dokumenty používány více lidmi, se definice stává nutností. 2.2 Výhody využití XML dokumentů Téma Výhody využití XML dokumentů již bylo tématem mnohokrát diskutovaným a bylo o něm napsáno mnoho textu. Pokusím se zde uvést a vysvětlit, jaké možnosti a výhody XML nabízí a důvody, proč ho použít: univerzální datový formát XML je jazyk schopný popsat velice složité hierarchické struktury dat, které nelze uložit do tabulek v relační databázi nebo je při návrhu databáze nutné vynaložit značné úsilí strukturu tabulek navrhnout. flexibilita je to jazyk, který umožňuje provádět snadnou modifikaci struktury dokumentů, a proto je rozšířen v mnoha oblastech. Zpočátku byl používán zejména v technických oblastech, především ve webových aplikacích. Postupem času se rozšířil do průmyslových i akademických odvětví a využíváme ho takřka denně. Často si ani neuvědomujeme, kde všude se XML objevuje. Výčet XML aplikací bude uveden v následující podkapitole. 2

KAPITOLA 2. XML JAKO STRUKTUROVANÝ DOKUMENT přenositelnost XML nabízí možnost vytvářet formáty dat, které mezi sebou mohou sdílet různé aplikace či jednotlivé verze programů a to i v rámci různých platforem. Jinými slovy, jazyk XML může být využíván programy, které umí číst textové soubory. Organizace, instituce či firmy si definují svá DTD a tím vytvářejí svůj datový formát, který uživatelé musí respektovat. variabilita při publikování informací v případě, že je potřeba data prezentovat ve více formátech (na webových stránkách, v tištěné podobě, na zálohovací média), je nasazení XML výhodné. Konverze pomocí XSLT šablon [1] nebo zpravidla volně dostupných parserů, probíhá zcela automaticky. Cenou za tuto možnost je znalost jazyka XSLT, který není úplně jednoduchý. Existují však volně dostupné knihovny XSLT parserů, které často vyhovují našim potřebám. význam dat je úzce spojen se samotnými daty vhodným pojmenováním značek je možné určit sémantický význam dat. Člověk, který se poprvé setká s dokumentem XML, se rychle orientuje ve struktuře dat a dokumenty může bez problémů modifikovat nebo tvořit. XML nepotřebuje žádné externí soubory pro popis logiky dokumentu, vše si nese s sebou. internacionalizace XML podporuje standard Unicode a zaručuje tak rozšiřitelnost po celém světě. už je rozšířen XML používají velké nadnárodní firmy, což je důležité z hlediska vývoje nových aplikací. 2.3 Aplikace XML Jak již bylo řečeno, s jazykem XML se nejčastěji setkáváme v aplikacích internetových sítí a webových stránek, elektronické výměny dokumentů, serializace objektů, vzdáleného volání procedur, definicích grafiky a zvukových záznamů. Pro lepší představu, jak lze tento jazyk používat, zde uvedu již existující aplikace XML a nejběžněji používaná DTD. HTML (Hypertext Markup Language) rozšířený jazyk pro publikování na webu. V současné době DTD ve verzi 4.0. Snahou W3C [1] je rozložit toto DTD do několika skupin podle zaměření HTML (např. formátování, tabulky, formuláře... ). jako možný nástupce EDI (Electronic Data Interchange) nabízí podporu pro elektronické obchodování, tedy zprostředkování obchodního styku mezi dvěma obchodními partnery. Problémem samotného EDI je nekompatibilita a odlišné rozhraní. Použitím XML tento problém odpadá. 3

KAPITOLA 2. XML JAKO STRUKTUROVANÝ DOKUMENT MathML (Mathematical Markup Language) matematicky korektní a přesný zápis matematických vzorců. Slouží pro výměnu dat mezi matematickými programy (např. Maple) a okolními aplikacemi. SVG (Scalable Vector Graphics) tento jazyk pro popis 2D vektorové grafiky se více rozšiřuje až v poslední době. Nachází uplatnění hlavně na webových stránkách. I tento jazyk patří do rodiny jazyků vyvíjených W3C [1]. DocBook jazyk pro psaní technické dokumentace. RDF (Resource Description Framework) specifikace umožňující popsat metadata, např. obsah. SMIL (Synchronized Multimedia Integration Language) pomocí tohoto jazyka je možné vytvářet multimediální prezentace, které mohou obsahovat audio i video záznam. UXF (UML exchange Format) výměna dat v jazyce UML (Unified modeling Language). 2.4 Dva typy XML dokumentů Dokumenty XML lze rozdělit do dvou skupin, datově a dokumentově orientované (zaměřené) dokumenty. Oba typy popíšu v následujících podkapitolách a na příkladech uvedu rozdíly. Nicméně, ve specifikaci XML nejsou žádná kritéria pro dělení dokumentů do skupin, toto rozdělení vyplynulo z několikaletého používání XML. 2.4.1 Datově orientované XML dokumenty Mezinárodně uznávaný termín data centric documents. Tyto dokumenty jsou určeny pro zpracování strojem, ne člověkem a slouží pro přenos dat mezi aplikacemi s rozhraními, která si neodpovídají. Struktura takových dokumentů se vyznačuje dělením dat na malé logické jednotky, které tvoří stromovou hierarchii. Často nezáleží na pořadí elementů, je však nutné dodržovat validitu dokumentu. V opačném případě parser, který zpracovává dokument, ohlásí chybu. Příklady dokumentů zaměřených na data lze hledat například z prostředí B2B, tedy faktury, objednávky, ceny akcií a ceníky internetových obchodů. Do těchto typů souborů jsou ukládána technická nebo naměřená data (chemické pokusy, statistická data). V neposlední řadě se používají i pro exporty z relačních databází. Uvádím zde příklad objednávky zboží. Tento dokument může být v pozadí webové aplikace internetového obchodu. 4

KAPITOLA 2. XML JAKO STRUKTUROVANÝ DOKUMENT <?xml version="1.0"encoding="windows-1250"?> <objednavka id="35498834"> <zakaznik id="654"> <jmeno>ivan Smolka</jmeno> <adresa>jilemnice 65</adresa> <ico>34676464</ico> </zakaznik> <datum_dodani>10-11-2006</datum_dodani> <zbozi> <polozka kod="20171945" pocet="2"> <cena mena="kc">999</cena> </polozka> <polozka kod="68768449" pocet="5"> <cena mena="kc">58</cena> </polozka> </zbozi> </objednavka> 2.4.2 Dokumentově orientované XML dokumenty Odborně nazývané document-centric document. Jsou zpravidla tvořeny, zpracovávány a čteny lidmi. Jejich struktura je nepravidelná a značky (tagy) často obsahují větší úseky textu. Na rozdíl od datově orientovaných dokumentů je u těchto zásadním pravidlem dodržovat pořadí elementů, neboť sama povaha dat si to žádá. Dokumenty vytvářené podle DTD DocBooku jsou typickými příklady a jedná se zejména o knihy a časopisy. Na následujícím příkladě je možné pozorovat strukturu knihy právě v DTD DocBooku. Je vidět, že pro vyplnění této šablony nejsou vyžadovány nijak velké technické schopnosti. 5

KAPITOLA 2. XML JAKO STRUKTUROVANÝ DOKUMENT <?xml version="1.0" encoding="windows-1250"?> <!DOCTYPE book PUBLIC"-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> <book lang="cs"> <bookinfo> <title>myslíme v jazyku Java</title> <author> <firstname>bruce</firstname> <surname>eckel</surname> </author> </bookinfo> <preface> <title>úvod</title> <para>odstavec textu.</para> </preface> <chapter> <title>první kapitola</title> <para>xml, tedy rozšiřitelný značkovací jazyk (<ulink url="http://www.w3.org/xml/">www.w3.org/xml/</ulink>), je určen pro práci se strukturovanými daty. Strukturu dat je možno tímto jazykem přímo definovat a následně vyplnit daty připravenou šablonu. </para> </chapter> </book> 2.4.3 Kde je hranice mezi oběma typy dokumentů? Jak už bylo zmíněno na začátku této kapitoly, neexistují přesná pravidla pro klasifikaci dokumentů na oba zmíněné typy. Nelze tedy stanovit hranici mezi oběma typy a velká část dokumentů vykazuje rysy obou typů. Takovýmto příkladem může být struktura emailu, která mimo dokumentově zaměřeného těla emailu obsahuje několik jednoduchých elementů. Uveden je jeden email firmy Enron. O typech dat bude více pojednáno v jedné z dalších kapitol. 6

KAPITOLA 2. XML JAKO STRUKTUROVANÝ DOKUMENT <mail> <user>williams-w3</user> <path>williams-w3/bill/12</path> <id><23505432.107583992.javamail.evans@thyme></id> <date>2001-04-25</date> <from>smith.day@enron.com</from> <subject>re: Booty</subject> <xfolder>\exmerge - Williams III, Bill\Bill</xfolder> <xorigin>williams-w3</xorigin> <xfilename></xfilename> <m_id>11</m_id> <content>hey dude, How about Booty? He could be developed, he has the raw talent but needs to get consistent. Sounds like good news for your dogs. I hope my Tigers keep up the improvements. Smith </content> <to> <rec>bill.iii@enron.com</rec> </to> </mail> Mohlo by se zdát, že nás vlastně nemusí zajímat k jakému typu dokumentu patří ten, se kterým pracuje námi vyvíjená aplikace. Toto zařazení však má své opodstatnění. Je několik hledisek, která by měla být zohledněna při návrhu systému nebo aplikace pracující s XML soubory. Hlavní důvod je výběr úložiště pro dokumenty, každému typu vyhovují odlišné systémy pro ukládání dat. Toto téma bude diskutováno v následující kapitole. 7

3 XML databázové systémy V úvodní části této kapitoly popíšu význam XML databázových systémů, důvody nasazení těchto typů datových úložišť a možnosti využití. Dále uvedu jednotlivé typy XML databázových systémů s konkrétními příklady existujících implementací. Ve druhé části této sekce čtenáře podrobněji seznámím s nativní XML databází exist. Vysvětlím princip indexování vstupních dat a základní metody používání databáze. V závěru ukážu výsledky provedených testů na rychlost a efektivitu manipulace s daty. 3.1 Vztah XML a databáze XML databáze jsou navrženy pro ukládání XML souborů. Zaměřme se tedy nyní na povahu XML souboru, který je například uložen na datovém médiu CD a ne v databázi. Ronald Bourret [2], jeden z nejuznávanějších průkopníků XML technologií, si pokládá otázku: Je XML databáze?. 1 Pokud definici databáze chápeme pouze jako úložiště dat, pak za databázi můžeme považovat i obyčejný textový soubor, který obsahuje data. XML dokument je primárně určen k ukládání, vyhovuje tedy také definici. Oproti textovému souboru navíc nabízí řadu výhod, které jsem uvedl v předchozí kapitole. Smysluplnější definice databáze je: Databáze je Systém Řízení Báze Dat SŘDB (Data Base Management System DBMS). Systém, který řídí bázi dat, musí podporovat ukládání dat a možnost definice struktury dat, musí disponovat dotazovacími jazyky nad daty a rozhraními pro programovací jazyky. Tato kritéria XML dokument splňuje též. Je možno ukládat data, strukturu dat lze definovat způsoby popsanými výše (DTD, XML Schema, RELAX NG). Nad XML se můžeme dotazovat standardizovanými jazyky jako je XQuery, XPath. Podporuje i programovací rozhraní (SAX, DOM). Lze ale najít i další kritéria požadovaná komunitou softwarových vývojářů, která samotný XML dokument nenabízí. K těmto patří efektivní ukládání a indexování dat, podpora transakcí a kontroly datové integrity, víceuživatelský přístup a systém práv přístupu k dokumentu, možnost definování trigerů, dotazování nad více dokumenty. Díky těmto požadavkům vznikají XML databázové systémy. Řadu těchto požadavků více či méně úspěšně implementují a snaží se uživateli poskytnout komfort při práci s daty na stejné úrovni, jako když pracují s relačními databázemi. 1 Jde pouze o XML dokument, ne XML dokument uložený v XML databázi. 8

KAPITOLA 3. XML DATABÁZOVÉ SYSTÉMY 3.1.1 Práce s XML V případě že jsme se rozhodli pro práci s XML dokumenty, nabízí se otázka, zda k souboru přistupovat pouze jako k textovému souboru nebo použít nějaký databázový systém určený pro práci s XML dokumenty. Pracujeme-li s dokumenty obsahující malé množství dat a není-li počet uživatelů přistupujících k dokumentu velký, není nutné využívat služby databázového systému. Vyhneme se další režii při práci s takovýmto systémem a samotné správě systému. Typickým příkladem jsou konfigurační soubory pro aplikace. Je zcela určitě výhodnější navrhnout jednoduchý XML dokument a ten následně parsovat třeba pomocí jednoduchého parseru, než procházet soubory obsahující data oddělená čárkami. Nasazení vhodného XML databázového systému se hodí pro dokumenty se složitější strukturou a větším objemem dat, která jsou využívána více uživateli a různými způsoby. Otázka, jaký typ systému na jaká data nasadit, bude diskutována v následující kapitole. Rovněž bude diskutován problém, kdy nasadit relační databázový systém a kdy XML databázový systém. 3.2 Typy XML databázových systémů Navrhujeme-li aplikaci, která bude využívat nějakou množinu dat, je nutné zvolit typ persistentního úložiště těchto dat, zejména, je-li objem dat velký. Nejprve zmíním důvody výběru mezi možnostmi relační a XML databáze. Poté uvedu typy systémů založených na technologii týkající se XML. 3.2.1 Relační versus XML databázový systém Toto téma bývá předmětem mnoha diskusí a většina aplikací může uspokojivě fungovat na obou typech úložišť. Výběr druhu databázového systému záleží na několika faktorech, některé jsem již zmínil v kapitole o výhodách XML. struktura dat je-li struktura dat pravidelná a jde lehce definovat tabulkami, je lepší použít relační model dat. V opačném případě je vhodné data uložit do XML. výkon v případech, kdy je nutno přistupovat k velkým objemům dat velice rychle popřípadě v nich rychle vyhledávat, je upřednostněno nasazení relačních databází. Problém výkonu, rychlosti a efektivity XML databází budu diskutovat v dalších odstavcích této práce. datový transport vyměňují-li si aplikace data, je nasazení XML technologie na místě. Pokud bychom využili relační databázi, ke které nemají přístup všechny aplikace, a s takovými situacemi se hojně setkáváme, bylo by nutné navíc psát konvertory těchto dat tak, aby si aplikace rozuměly. 9

KAPITOLA 3. XML DATABÁZOVÉ SYSTÉMY tradice XML databázové systémy neprošly tak dlouhým vývojem jako relační databáze a jejich nasazení není časté. Navíc jistou podporu zpracování XML dokumentů nacházíme i v relačních databázích. Velkou roli hraje i ekonomické hledisko nákupu potřebného softwaru a vývoje samotné aplikace. Dalším faktorem je zkušenost vývojářů. Mnoho z nich zvolí klasický relační model dat, nicméně v poslední době přibývá aplikací, hlavně v prostředí internetu, které XML struktury a XML databázové systémy používají. 3.2.2 Nativní XML databáze Jedná se o nejrozšířenější typ XML databázového systému. Podrobnější informace o problémech týkajících se těchto databází a technologie XML může čtenář najít opět na webových stránkách Ronalda Bourreta [3]. Když se poprvé objevily nativní XML databáze, mnoho lidí nevědělo, jak je využívat. Měly být náhradou za relační databáze? Na tuto otázku prodejci a vývojáři odpovídali negativně a dodávali, že tento typ databází je určen pro správu velkého množství XML dokumentů. Situace, kdy nasadit tento typ databází nelze přesně zařadit do jedné kategorie. Typické příklady jejich používání neboli use-cases je ukládání a dotazování nad dokumentově orientovanými dokumenty, integrace dat a práce s polo-strukturovanými daty. Je to z důvodu, že struktura XML dat těžko vyhovuje relačnímu modelu dat. Existují dva způsoby využívání nativních XML databází. Prvním způsobem je potřeba mapování schématu dokumentu do schématu databáze a následných transformací (např. XSLT) dat. Druhý způsob je použití stálé množiny struktur, do které může být uložen XML soubor s libovolnou strukturou. Pro názornost rozdílnosti obou přístupů bude uveden příklad, jak by data byla uložena v relační databázi pro příklad objednávek zboží. První způsob návrhu by odpovídal tabulkám: Zákazník, Objednávka, Zboží atd. Druhý způsob tabulkám: Elementy, Atributy, Text. Nativní XML databáze podporují druhou metodu, používají přímo (nativně) XML model. Prvnímu způsobu odpovídají databáze, v anglickém jazyce nazývané XMLenabled databases, které mají svůj vlastní hierarchický model. Nativní XML databázové systémy jsou plnohodnotné databázové systémy, podporující indexování dat, transakce, souběžný přístup, víceuživatelské rozhraní, bezpečnost. Označení nativní lze chápat tak, že systém si ukládá XML dokument v nezměněné podobě, pracuje s ním jako celkem a je schopen ho na dotaz velice rychle načíst. Jak již bylo řečeno, nativní databáze mohou ukládat všechny XML dokumenty, jsou však převážně zaměřeny na dokumentově orientované dokumenty. Dokument je zde ekvivalentní k řádce v tabulce u relačních databází. Sada obsahově blízkých dokumentů se ukládá do kolekcí. Kolekce odpovídá tabulce v relační databázi nebo adresáři (složce) v souborovém systému. Příkladem může být členění knihy (kolekce) do kapitol (dokumentů) nebo popis jednotlivých mutací genu. V následující podkapitole bude podrobněji rozebrána nativní databáze exist [4] a práce s ní. 10

KAPITOLA 3. XML DATABÁZOVÉ SYSTÉMY Další příklady nativních XML databází: Berkeley DB XML http://www.sleepycat.com/ NeoCore XML Management System (XMS) http://www.xpriori.com/ Sedna http://www.modis.ispras.ru/index.htm Tamino http://www.softwareag.com/corporate/default.asp TEXTML Server http://www.ixiasoft.com/home.asp Xindice http://www.apache.org/ 3.2.3 Další typy XML databázových systémů Tato diplomová práce je zaměřena na technologie týkající se XML. Uvedu tedy další typy a konkrétní příklady XML databázových systémů [6], kterými jsem se podrobněji nezabýval. XML servery složité aplikační servery, které jsou mimo jiné, schopny klientům poskytnout data ve formě XML. Tyto systémy jsou opět zaměřeny na oba typy dokumentů. J2EE http://java.sun.com/javaee/index.jsp Cocoon http://cocoon.apache.org/ WebObjects http://www.apple.com/webobjects/ Wrappery s XML dokumentem nakládají jako s relačním modelem a tvoří nad ním vrstvu (přebal z anglického wrapper). Zaměřují se na datově orientované dokumenty, což vyplývá z povahy tabulek relačního modelu. Lze používat dotazovací jazyk SQL. MS SQL Server http://www.microsoft.com/sql/default.mspx middleware aplikační vrstva mezi XML a relačním databázovým systémem. Jsou zaměřeny na datově orientované XML dokumenty. Microsoft ADO http://msdn.microsoft.com/data/default.aspx Altova XML Spy http://www.altova.com/ Stylus Studio http://www.stylusstudio.com/ Většina z těchto produktů jsou komerční a v mnoha případech nákladné investice. Je to z důvodu, že velké firmy investují nemalé částky do vývoje softwaru podporující XML technologie. 11

KAPITOLA 3. XML DATABÁZOVÉ SYSTÉMY 3.3 Nativní XML databáze exist exist [4, 5] je Open Source projekt, jehož cílem je vyvíjet nativní XML databázový systém. Tento systém, vyvíjený v jazyce Java, může být lehce integrován do aplikací využívající XML dokumenty. Nabízí širokou podporu aplikacím buď jako stand-alone server, může být součástí servlet enginu nebo přímo využíván aplikací. Přístup k databázi může být realizován pomocí HTTP, XML-RPC, SOAP nebo WEB-DAV. Pro Java aplikace je možno využít API XML:DB [7], standardní rozhraní pro přístup k nativním nebo XML-enabled databázím. Toto API je obdobou JDBC (rozhraní Java aplikací a relačních databází) včetně používání driverů pro konkrétní databáze. exist funguje na principu kolekcí a dokumentů a pro uložení není třeba definovat schéma dokumentu. Systém implementuje dotazovací jazyk XPath [1], uživatel se může dotazovat nad jedním dokumentem nebo i v rámci celé kolekce. Ukázka XPath dotazů a jejich rychlost bude diskutována v jedné z následujících podkapitol. Nebude chybět ani ukázka ukládání dokumentů a úryvky kódů API XML:DB základních operací s databází. 3.3.1 Principy indexování Vzhledem k tomu, že exist ukládá XML data a implementuje dotazovací jazyk XPath, je potřeba ukládaná data vhodně indexovat tak, aby hledání bylo rychlé a indexové soubory nebyly velké. Toto jsou dva hlavní protichůdné požadavky na algoritmus indexování. Návrhu algoritmu, který by vyhovoval uvedeným požadavkům byla již věnována velká pozornost odborníků. Některé algoritmy byly bezplatně zveřejněny [8, 9, 10, 11, 12]. Většina Open Source implementací stromového prohledávání se spoléhají na algoritmy průchodu stromu bottom-up nebo top-down. Často implementují přímo B+ stromy nebo tento algoritmus vylepšují pro své účely přidáváním indexů pro různé vztahy uzlů ve stromě, např. vztah předchůdců a následníků určitých úrovní nebo vztah uzlů na stejné úrovni sourozenců (uzly se stejným rodičovským uzlem). Tyto algoritmy se často nazývají číslovací schémata (numbering schemas). Mají za úkol každému uzlu přiřadit unikátní číslo. Tímto číslem je pak referencován uzel v indexovacích souborech. Nyní bude představen algoritmus, ze kterého vychází algoritmus používaný v systému exist, poté i tento algoritmus. Číslovací schéma, představené v [9], modeluje strom dokumentu jako kompletní K- ární strom, kde k je rovno maximálnímu počtu potomků elementů ve stromě. Strom je pak reprezentován tak, že každý uzel má k potomků. K jednoduchému XML dokumentu bude nyní uveden odpovídající strom. 12

KAPITOLA 3. XML DATABÁZOVÉ SYSTÉMY <kontakt> <jméno>jan Hojka</jméno> <telefon> <mobil>777974321</mobil> <kancelář>321456</kancelář> </telefon> </kontakt> 1 kontakt 2 jméno 3 telefon 4 Jan Hojka 5 6 mobil 7 kancelář 8 9 10 11 12 13 14 15 777974321 321456 Obr. 3.1: Přiřazení unikátních čísel uzlům level-order numbering scheme. Tento číslovací algoritmus, nazývaný level-order numbering, má výhodu v tom, že od daného uzlu dostaneme jednoduchými výpočty identifikační číslo rodiče, potomků, sourozenců. Například pro rodiče platí vztah: rodic i = (i 2) k + 1 (3.1) Jak je vidět z obr. 3.1, počet očíslovaných uzlů je pro tak malý dokument dosti velký a mnoho uzlů neobsahuje žádná data. Je to z toho důvodu, že dokument je nevyvážený. Aby byla splněna podmínka kompletnosti stromu, muselo být vloženo několik prázdných uzlů. Bohužel s takovými typy stromů se v praxi setkáváme ve většině případů. Tento nedostatek do jisté míry řeší algoritmus implementovaný v systému exist, který bude nyní představen. Algoritmus je pouze vylepšením algoritmu předchozího. Zamítá myšlenku kompletního stromu a stejné počty potomků dodržuje vždy v dané úrovni stromu. Matematicky zapsáno: pro každé dva uzly x, y stromu platí, size(x) = size(y), když level(x) = level(y), kde size(n) je počet přímých potomků uzlu n a level(n) je délka cesty od kořene stromu k uzlu n. Informace o identifikátorech jednotlivých potomků daného uzlu, může být uložena v jednoduchém poli. Výsledek je možné pozorovat na stromě pro stejný XML dokument na obr. 3.2. Díky dodatečné informaci o pořadí sourozenců je algoritmus stále schopen dopočítat identifikátory rodiče, potomků a sourozenců daného uzlu. 13

KAPITOLA 3. XML DATABÁZOVÉ SYSTÉMY 1 kontakt 2 jméno 3 telefon 4 Jan Hojka 5 6 mobil 7 kancelář 8 9 10 777974321 11 321456 Obr. 3.2: Přiřazení unikátních čísel uzlům exist numbering scheme. V současné verzi exist ukládá data do čtyř indexových souborů: 1. collections.dbx obsahuje popis hierarchie kolekcí a jejich obsah. 2. dom.dbx shromažďuje informace o uzlech a mapuje na ně výše popsaným algoritmem vygenerované číselné identifikátory. Všechny uzly jsou uloženy v jednom W3C DOM [1] (Document Object Model). 3. elements.dbx indexuje elementy a atributy. 4. words.dbx mapuje jednotlivá slova. Jak bude vidět při fulltextovém vyhledávání, je velice platným. 3.3.2 Ukládání dokumentů Základní funkcí, která je požadována po datovém úložišti, je uložení dat, v tomto případě XML dokumentu. Jelikož není třeba definovat schéma dokumentu, pouze cílovou kolekci (adresář), je uložení dokumentu vůbec první operace s daty. Již bylo zmíněno, jak lze k databázi přistupovat. Program exist je implementován v jazyce Java, proto ukážu přístup z tohoto jazyka a to pomocí XML:DB API. Pokud se člověk obeznámí s filozofií XML a XML databází, pak používání tohoto API není nijak složité a může být přirovnano k práci s JDBC. Následuje ukázka kódu, který zajistí připojení k databázi a uložení XML souboru. 14

KAPITOLA 3. XML DATABÁZOVÉ SYSTÉMY public class Storing { public final static String URI = "xmldb:exist://localhost:8080/exist/xmlrpc"; public final static String collection = "/db"; public final static String file = "mail.xml"; public static void main(string args[ ]) throws Exception { // inicializace driveru String driver = "org.exist.xmldb.databaseimpl"; Class cl = Class.forName(driver); // database session Database database = (Database)cl.newInstance(); DatabaseManager.registerDatabase(database); // cilova kolekce Collection col = DatabaseManager.getCollection(URI + collection); // vytvor XMLResource XMLResource document = (XMLResource)col.createResource(null, "XMLResource"); // nacti zdrojovy soubor File f = new File(file); if(!f.canread()) { System.out.println("cannot read file " + file); return; } // uloz dokument document.setcontent(f); col.storeresource(document); } } V rámci diplomové práce jsem provedl několik testů ukládání. Mým cílem bylo uložit a pracovat se sadou emailů firmy Enron. Tato data budou podrobněji popsána v kapitole o typech dat. Nyní stačí uvést, že objem dat je značný (1,5 GB textových souborů). Emaily byly převedeny do XML struktury, jež byla uvedena v kapitole o typech XML dokumentů. Jak se ukázalo, uložit tento objem dat do exist databáze není zcela jednoduché. První snaha byla uložit najednou všechny emaily do jednoho XML souboru. Dalo se očekávat, že výsledek nebude optimální. Tento balík dat, reprezentovaný jediným souborem byl ukládán bezmála 15 hodin. Bylo tedy třeba najít velikost ukládaného souboru tak, aby daný objem dat byl uložen v co nejkratším čase. Byl proveden test, který spočíval v uložení 200 MB dat (opět Enron emaily) po různě velkých dávkách (souborech). Velikosti souborů byly zvoleny od 200 KB až po 200 MB vždy v takovém počtu, aby byl uložen celý objem dat 200 MB. Pro zaručení identických počátečních podmínek byla vždy po uložení každé sekvence souborů databáze vymazána. Výsledek je uveden na obrázku 3.3. 15

KAPITOLA 3. XML DATABÁZOVÉ SYSTÉMY Obr. 3.3: Výsledky testu ukládání sekvence souborů do exist. Nejoptimálnější velikost ukládaného souboru, co se týče rychlosti ukládání, se tedy pohybuje okolo 10 MB. I tak je však uložení většího objemu dat slabinou databáze exist, což uznávají sami vývojáři a slibují, že rychlost indexování při ukládání dokumentů bude v dalších etapách vývoje vylepšena. Důvody právě této velikosti lze hledat v samotné architektuře aplikace a algoritmech ukládání. 3.3.3 Ukázka dotazování nad databází exist v současné době obsahuje procesor pro XPath dotazy a implementuje pouze hlavní části specifikace XPath 1.0 [1]. Velká práce čeká vývojáře při implementaci update mechanismu např. XUpdate [1], který je iniciativou XML:DB [7]. Ve stávající verzi je možné editovat pouze celé dokumenty, nikoliv však měnit přímo jednotlivé uzly. Opět bude uvedena část Java kódu pro provedení dotazu nad databází: public class QueryExample { public static void main(string args[ ]) throws Exception { // inicializace driveru String driver = "org.exist.xmldb.databaseimpl"; Class cl = Class.forName(driver); Database database = (Database)cl.newInstance(); // database session database.setproperty("create-database", "true"); DatabaseManager.registerDatabase(database); // prohledavana kolekce Collection col = 16