MaIoLuM |
O diplomovej práci | ||
Biblická konkordancia / Projekt Maiolum | ||
Vitajte
| Diplomant: | Bc. Róbert Novotný |
| Vedúci: | RNDr. Stanislav Krajči, PhD |
| Seminár: | Seminár z logiky informačných systémov |
| Rok zadania: | 2003/2004 |
Odkazy
-
Prototyp projektu Maiolum
History of Changes | ||
Version 0.1 (unreleased)
-
Initial Import
(JB)
Todo List | ||
high
- [docs] Customize this template project with your project's details. This TODO list is generated from 'status.xml'. → JB
- [docs] Add lots of content. XML content goes in src/documentation/content/xdocs, or wherever the ${project.xdocs-dir} property (set in forrest.properties) points. → JB
- [feedback] Mail forrest-dev@xml.apache.org with feedback. → JB
Softvérová časť | ||
MaIoLuM | ||
Vitajte
Projekt MaIoLuM má za cieľ vytvoriť nástroj umožňujúci využívať biblickú konkordanciu, t. j. variant full-textového vyhľadávania v Svätom Písme s využitím morfológie a synonýmie vo vyhľadávacích termoch.
Technológie
Za použitú platformu bola zvolená J2EE, presnejšie súčasti Java + XML + Servlets/JSP. Aplikačná logika by mala byť nezávislá od ,,prezentačnej" vrstvy, t. j. užívateľského rozhrania. Základnou úlohou je vytvoriť užívateľské rozhranie zabezpečované internetovým prehliadačom a nasadiť aplikačnú logiku na serveri podporujúcom Servlets/JSP. V budúcnosti sa nevylučuje vytvorenie alternatívnych užívateľských rozhraní.
MaIoLuM je postavený na nasledovných technológiách:
-
XML -
Vstupné dátové súbory biblie sú vo formáte XML.
-
DOM -
Načítané biblické dokumenty sú v pamäti udržiavané v reprezentácii XML zvanej Document Object Model (DOM).
-
XPath -
Reprezentácia DOM tvorí dátový model pre adresáciu jednotlivých elementov dát XML pomocou jazyka XPath. Použitím XPath sa z dokumentov získavajú jednotlivé verše, knihy a ďalšie elementy.
-
XSLT -
Elementy získané ako výsledok transformácie možno chápať ako fragmenty XML dokumentov. Pre použitie v prezentačnej vrstve je potrebné ich vhodne transformovať na cieľové formáty (typicky HTML pre internetový prehliadač klienta).
-
Lucene -- Full-textové vyhľadávanie -
Jednou z primárnych úloh je vyhľadávanie textu v biblii. Full-textové vyhľadávanie je realizované pomocou vyhľadávacieho "motora"
Jakarta Lucene . -
Servlets & JSP -
Základné užívateľské rozhranie bude tvorené internetovým prehliadačom. Vytváranie HTML stránok bude realizované pomocou servletov a JSP vo vhodnom kontajneri, typicky
Apache Tomcat .
Očakávaný prínos
-
Konvertovať existujúce biblické texty z rôznych nekonzistentných a neštruktúrovaných formátov do XML, primárne texty v slovenčine.
-
Vhodne prepojiť existujúce technológie na vytvorenie užívateľského rozhrania podporujúceho užívateľské požiadavky.
Aktuálny stav | ||
Aktuálny stav softvérovej časti
| Analýza | 95 % |
| Spracovanie vstupných súborov | 80 % |
| Implementácia | 80 % |
| Dokumentácia | 50 % |
-
Analýza -
Analýza jadra je dokončená. Ostáva dokončiť analýzu podmodulov (konkordancia, tezaurus).
-
Spracovanie vstupných súborov -
Prebieha spracovanie vstupných súborov Svätého písma do formátu XML. Spracovaný je Nový Zákon a tri štvrtiny Starého Zákona v slovenčine.
-
Implementácia -
Implementácia jadra postaveného na základe natívnej XML databázy eXist je dokončená. V súčasnosti prebieha implementácia konkordancie a tezauru.
-
Dokumentácia -
Dokumentácia je vytváraná priebežne s implementáciou projektu. Dve najdôležitejšie časti sú dokumentácia tried JavaDoc (vytváraná priebežne po implementovaní a testovaní triedy) a projektová dokumentácia reprezentovaná týmito stránkami Forrestu.
Analýza | ||
Užívateľské požiadavky
Užívateľské požiadavky
-
vytvoriť systém na prehliadanie a vyhľadávanie v Svätom Písme
-
dodané dátové súbory sú vo formáte XML
-
zaviesť podporu pre viacjazyčnosť. Užívateľ chce vyhľadávať vo viacerých jazykových mutáciách.
-
vyhľadávanie obohatiť podporou morfológie (dodanej z externého prostredia)
-
prehliadanie realizovať cez webové rozhranie
Analýza a návrh
Use-case -- prípady použitia
Všeobecný prípad použitia
| Základný prípad použitia |
|
Roly užívateľov
-
užívateľ -
štandardný -- ,,bežný'' užívateľ systému. Jeho primárnym cieľom pri pohybe v systéme je vyhľadávať v dokumentoch podľa kľúčového slova a zobrazovať jednotlivé časti dokumentov (čo v sebe obsahuje aj navigáciu medzi nimi)
-
administrátor -
Bežný užívateľ systému s administrátorskými právami. Administrátor má jediný právo pridávať jednotlivé moduly s dokumentami do systému, odoberať ich a iniciovať ich reindexáciu.
Popis procesov v use-case diagrame
Proces vyhľadávania
Užívateľ zadá vyhľadávací výraz. Systém vráti zoznam dokumentov, ktoré spĺňajú požiadavky užívateľa.
Reindexácia
Užívateľ spustí znovuvytvorenie indexu fulltextového vyhľadávania.
Zahrnutie modulu
Užívateľ zadá názov súboru XML pre modul, ktorý má byť zahrnutý do systému. V prípade, že súbor neexistuje alebo nemôže byť korektne načítaný, systém vypíše príslušnú správu. Ak spracovanie súboru prebehlo úspešne, systém upozorní užívateľa a vykoná reindexáciu daného modulov.
Odstránenie modulu
Užívateľ identifikuje modul, ktorý má byť odstránený zo systému. Systém odoberie príslušný modul a vykoná reindexáciu daného modulov.
Návrh -- koncepty
Koncepty v návrhu
Prvotný návrh vychádza z niekoľkých základných konceptov:
-
biblický fragment. Biblické texty majú základnú pevnú štruktúru (danú ,,zhora"), ktorá pozostáva z niekoľkých pevných štruktúrnych komponentov. Sú nimi po poradí Zákony (Starý a Nový), knihy, kapitoly a verše. V tejto štruktúre platí, že každý z uvedených komponentov v sebe obsahuje ďalšie podkomponenty -- teda Zákon obsahuje knihy, ktoré obsahujú kapitoly atď. Navyše, každý z komponentov má svoj prirodzený jednoznačný identifikátor (napr. Mt1, 1 je identifikátorom prvého verša prvej kapitoly knihy Evanjelium podľa Matúša).
Navyše v tejto štruktúre je pevne dané usporiadanie fragmentov a to dvomi spôsobmi: usporiadanie ,,predchodca -- nasledovník" (je zrejmé, že Mt1, 2 je identifikátorom fragmentu, ktorý nasleduje po fragmente s identifikátorom Mt1, 1) a usporiadanie ,,rodič -- potomok" (je zrejmé, že Mt1 je identifikátorom fragmentu, ktorý je rodičom fragmentu Mt1, 1). Z toho vypláva prirodzená požiadavka, aby každý biblický fragment ,,vedel" o svojich nasledovníkoch, predchodcoch a prípadnom rodičovi.
Uvedenú pevne danú štruktúru, ktorá v sebe zahŕňa jednoznačné identifikátory s usporiadaním, môžeme s výhodou využiť pri návrhu.
Základné požiadavky
-
biblický fragment obsahuje textové biblické dáta
-
biblický fragment má jednoznačný identifikátor
-
biblický fragment musí mať vedomosť o svojich predchodcoch, nasledovníkoch a rodičoch
-
biblický fragment musí mať vedomosť o svojich jazykových metadátach (pozri koncept edícia)
-
-
identifikátor biblického fragmentu je koncept načrtnutý v predošlom prípade. Štandardný zápis identifikátorov nám s výhodou umožňuje extrahovať niektoré informácie týkajúce sa usporiadania fragmentov (z daného zápisu, napr. Mt1, vieme extrahovať rodiča daného identifikátora, ak existuje -- napr. rodičom fragmentu s daným identifikátorom je fragment s identifikátorom Mt).
Predovšetkým treba brať do úvahy varianty zápisu daného identifikátora -- identifikátor Gn1, 1 môže mať ekvivalentné zápisy Gn1:1, Gen1.1 a podobne.
Základné požiadavky
-
identifikátor musí vedieť spracovávať rôzne užívateľove zápisy identifikácie fragmentu
-
-
biblický modul. Často sa stáva, že jednotlivé biblické texty, prípadne ich jazykové mutácie, sú reprezentované samostatnými časťami nezávislými na ich prirodzenej štruktúre. V našom bežnom prípade sú jednotlivé texty reprezentované istým počtom XML súborov, pričom každý XML súbor obsahuje nejakú časť biblických textov. Aby sme zjednodušili administráciu týchto súborov, zavádzame koncept biblického modulu. V prípade XML súborov môže napríklad každému XML súboru prislúchať jeden modul.
Na biblické moduly sa dá istým spôsobom dívať ako na špeciálny prípad biblických fragmentov, v tomto prípade je však nutné ,,doplniť" pre každý modul jednoznačné identifikátory, aby sa zachovala pevná štruktúra fragmentov.
Moduly sú voliteľnou, ale často používanou súčasťou nášho návrhu. V prípade implementácie, ktorá by spracovávala biblické texty uložené v relačnej databáze nemusí byť tento koncept pri implementácii použitý.
Základné požiadavky
-
biblický modul musí mať vlastný jednoznačný identifikátor
-
biblický modul musí vedieť, ktoré fragmenty v sebe obsahuje
-
-
metadáta jazykovej mutácie fragmentu -- edícia. Spomenuli sme, že každý biblický fragment má svoj jednoznačný identifikátor. Problém nastáva v prípade viacerých jazykových verzií toho istého modulu. Určite nastane situácia, že dva biblické fragmenty majúce rôzne jazykové mutácie majú ten istý identifikátor (odhliadnuc od variantov identifikátora). Používame preto koncept edície predstavujúci metadáta o danom fragmente -- napr. jazyk danej mutácie, vydavateľa, rok vydania a podobne.
V systéme musí platiť, že dva biblické fragmenty s rovnakým identifikátorom musia mať rôzne jazykové metadáta (aby sme zabránili nejednoznačnostiam).
Základné požiadavky
-
edícia musí obsahovať okrem jazykových dát metadáta o danom fragmente (vydavateľa, rok vydania atď)
-
Návrh -- abstraktné triedy a interfaces
Ďalšie koncepty v návrhu.
Dátový zdroj (datasource)
Jedným z cieľov návrhu je možnosť pracovať nad biblickými textami, ktoré pochádzajú z rôznych dátových zdrojov. V našom prípade je dátovým zdrojom sada XML súborov, ale môže nastať situácia, keď sú texty načítavané z relačnej databázy, z webovej služby a podobne. Zavedieme preto koncept dátového zdroja (DataSource).
Dátový zdroj predstavuje rozhranie k ,,skladu dát" a prostriedok na získavanie a vytváranie jednotlivých biblických fragmentov. Funkcie sú nasledovné:
-
pristupuje a získava biblické textové dáta (napr. načítavaním XML súborov, dopytovaním sa databázy)
-
poskytuje metódy na získavanie biblické fragmenty.
-
vyhodnocuje informácie týkajúce sa usporiadania -- vie získavať predchodcu, nasledovníka, či rodiča daného fragmentu.
Továreň na edície
Pri práci s edíciami predpokladáme, že ich množina je vopred daná a pre danú množinu biblických fragmentov nemenná. Množinu edícií však možno takisto získať z rôznych zdrojov. Preto zavedieme koncept továrne na edície. Jej úlohy sú nasledovné:
-
vytvára objekty edícií
-
množinu dostupných edícií vie získať z rôznych zdrojov (XML súbor, databáza)
Abstraktné triedy a interfaces
Uvedené koncepty sa pokúsime previesť na jednotlivé triedy, s ktorými budeme pracovať v implementácii.
-
biblický fragment je reprezentovaný interfaceom BibleFragment
-
identifikátoru biblického fragmentu zodpovedá abstraktná trieda FID
-
biblický modul je interface BibleModule odvodený od interfaceu BibleFragment.
-
edícii zodpovedá abstraktná trieda Edition
-
dátovému zdroju zodpovedá interface Edition
| Diagram základných tried |
|
Implementácia | ||
Implementácia softvéru
Technológie
Za použitú platformu na implementáciu softvéru bola zvolená J2EE a ďalšie open-source projekty:
-
XML -
Vstupné dátové súbory biblie sú vo formáte XML.
-
eXist -
natívna XML databáza podporujúca XPath a XQuery slúži ako úložisko biblických textov.
-
Lucene -- full-textové vyhľadávanie -
XSLT -
XML dokumenty sú pomocou XSLT transformované do podoby vhodnej pre klienta (implicitne HTML).
-
Jakarta Tomcat -- servlety, Jakarta Velocity -- prezentačná vrstva -
Implicitné užívateľské rozhranie je realizované pomocou webového prehliadača. Samotná aplikácia je spustená na vzdialenom serveri -- konkrétne v servletovom kontajneri Jakarta Tomcat.
Vzhľad užívateľského rozhrania je realizovaný šablónovým motorom Jakarta Velocity.
Popis komponentov
Globálny náhľad na jednotlivé komponenty systému možno získať pomocou nasledovného obrázka:
Implementácia rozhraní a abstraktných tried
Implementácia maiolum.nxdb
Uvedený návrh je dostatočne flexibilný na to, aby bolo možné získavať biblické fragmenty z rôznych zdrojov rôznymi spôsobmi. Teraz popíšeme jeden z možných spôsobov implementácie abstraktných tried a rozhraní -- spôsob, pri ktorom sa biblické fragmenty získavajú z natívnej XML databázy.
Dátový zdroj
| Implementácia dátového zdroja maiolum.nxdb.ExistDataSource |
|
V prípade tejto implementácie sa využíva natívna XML databáza eXist, v ktorej sú uložené biblické texty vo formáte
XML. Dátový zdroj sa dopytuje XML databázy pomocou XQuery na XML dokumenty v nej uložené. Vrátené XML dáta
použije pri vytváraní inštancií biblických fragmentov (implementácia
Biblické fragmenty a moduly
| Implementácia biblických fragmentov a modulov |
|
Identifikátory fragmentov a poradie
Na určovanie usporiadania fragmentov sa využíva špeciálna trieda
Analýza a návrh
Štruktúra vstupných súborov
Úvod
Vstupné súbory sú, prirodzene, vo formáte XML. Ich štruktúra ,,prirodzene" vyplýva zo štruktúry Svätého písma. Jednotlivé súbory by mali prislúchajú jednotlivým biblickým modulom, ktoré sú spravované Správcom modulov. (Typicky je tvorí modul XML obsahujúce Nový Zákon).
Popis štruktúry vo forme Document Type Definition (DTD)
| DTD |
|
Štruktúra je prirodzená: <testament> je všeobecný koreňový element. Ten obsahuje jednu, či viac kníh. Každá kniha má identifikátor, nadpis a obsahuje nenulový počet kapitol. Kapitola má tiež jednoznačný identifikátor, nadpis a obsahuje verše, niektoré verše sú zoskupené do sekcií. Sekcia zoskupujúca verše má nadpis. Verš -- rovnako ako kapitoly, či knihy -- obsahuje identifikátor. Niektoré časti veršov môžu byť zvýraznené (element <i>) a môže byť naznačené ukončenie riadka (elementom <br>).
Teda, výsledný návrh štruktúry DTD je nasledovný:
<!ELEMENT testament (book+)> <!ELEMENT title (#PCDATA)> <!ELEMENT book (title, chapter+)> <!ELEMENT chapter (section+,verse+)> <!ELEMENT section (title, verse+)> <!ELEMENT verse (#PCDATA | br | i)*> <!ELEMENT br EMPTY> <!ELEMENT i (#PCDATA | br)*> <!ATTLIST book id ID #REQUIRED> <!ATTLIST verse id ID #REQUIRED> <!ATTLIST chapter id ID #REQUIRED>
Identifikácia veršov je rovnako prevzatá z ,,prirodzenej" štruktúry. Knihy sú identifikované slovenskými skratkami, napr. Evanjeliu podľa Matúša prislúcha identifikátor Mt. Kapitoly obsahujú identifikátor nadradenej knihy konkatenovaný z poradovým číslom kapitoly: prvá kapitola Zjavenia svätého Jána má identifikátor Zjv1. Napokon, verše sú jednoznačne označené identifikátorom kapitoly a poradovým číslom verša, čiže štrnásty verš druhej kapitoly Jakubovho listu má označenie Jk2_14.
Zdanlivá redundancia v označovaní fragmentov (verše by napr. mohli mať len poradové číslo) má výhodu v značnom zrýchlení dopytovania, pretože sa zníži zložitosť dopytov XPath. V prípade, že má element XML dokumentu atribút ID, možno ho priamo využiť v dopyte XPath pomocou funkcie id, pre ktorú sú často dopyty optimalizované.
Problémy pri dátových súboroch
Pri prebiehajúcej konverzii súborov je nutné vyriešiť niekoľko problémov
-
chýbajúce poznámky k Svätému Písmu (neexistencia elektronickej podoby)
-
nekonzistentnosť pomocných nadpisov
-
vyriešenie odkazov medzi fragmentami
Jediným spôsobom získania chýbajúcich poznámok k Svätému Písmu je ich vytvorenie, keďže neexistuje ich elektronická podoba.
Nekonzistentnosť pomocných nadpisov je asi najväčším problémom. Pomocné nadpisy plnia vysvetľujúcu a pomocnú úlohu, podobnú ako poznámky. Štruktúra nadpisov sa líší medzi jazykovými mutáciami, dokonca aj medzi rôznymi vydaniami tej istej jazykovej mutácie. Nadpisy sú nekonzistetné, pretože narušujú pravidelnú pološtruktúrovanosť dát, pretože nadpis (a teda koniec istej sekcie) sa môže vyskytovať na rôznych miestach, dokonca uprostred verša (pričom by bolo veľmi vhodné predpokladať, že verš je elementárna štruktúrna jednotka textu Sv. Písma).
Kvôli prehľadnosti a vylepšeniu konkordancie sa očakáva vytvorenie odkazov medzi fragmentami biblických textov. Je nutné zvoliť vhodný formát a reprezentáciu týchto odkazov (XLink?).
Teoretická časť | ||
Teoretická časť | ||
TAX: Stromová algebra pre XML
H. V. Jagadish et al. -- TAX: Tree Algebra in XML, In: Proceedings of the 8th Biennial Workshop on Data Bases and Programming Languages (DBPL'01), Frascati, Rome, September 8-10, 2001.
Podrobnosti sú v druhej časti prezentácie na Seminári z logiky informačných systémov, 23. marec 2004.
Formálny dátový model a algebra pre XML
D. Beech, A. Malhotra, M. Rys -- A Formal Data Model and Algebra for XML.
Autori definujú dátový model pre XML v podobe grafovej reprezentácie XML stromu. Algebra definuje operátory fí (slúžiaci na prechádzanie hrán spĺňajúcich dané podmienky), sigma (reprezentujúci analógiu selekcie v relačnej algebre), operátory Kleeneho hviezdičky a mapovania a operátory vytvorenia hrany a vrchola. Žiaľ, nedokazujú výrazovú silu tejto algebry (minimálne ekvivalenciu so štandardnou relačnou algebrou/SQL).

