Úvodná stránka
Teória
Softvér
[ PDF ]
   

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

History of Changes

RSS

Version 0.1 (unreleased)

  • add 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ýza95 %
Spracovanie vstupných súborov80 %
Implementácia80 %
Dokumentácia50 %
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

Jakarta Lucene zabezpečuje full-textové indexovanie a vyhľadávanie v dokumentoch. Jedným cieľom je rozšíriť Lucene pre podporu indexovania slovenských textov s použitím synoným..

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 maiolum.plainxml.PXBibleFragment)

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 FIDResolver. Pri ukladaní XML dokumentu do databázy eXist sa vytvorí zvláštny index, v ktorom je uložené poradie identifikátorov v danom dokumente. FIDResolver potom poskytuje na základe tohto indexu metódy na získanie predchodcu, či nasledovníka daného biblického fragmentu. V prípade získavania rodiča daného fragmentu tento index nie je potrebný -- keďže identifikátor rodiča možno ľahko získať zo samotného identifikátora fragmentu.

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).