Digitální knihovna Kramerius umožňuje uživatelům prohlížet publikace po jednotlivých stranách, tj. zobrazit naskenovaný obrázek nebo jeho textovou vrstvu. Uživatelské rozhraní umožňuje vygenerovat k vybrané publikaci PDF, ale pouze s omezeným počtem stran, který určuje provozovatel systému. Takový způsob práce se hodí pro čtení publikací, ale není ideální pro vědeckou analýzu celých děl, zejména s využitím moderních počítačových technologií, kdy je potřeba mít k dispozici kompletní texty jedné či více publikací ve standardizované podobě.
Softwarová aplikace Libri augmentati
používá jednotný programový přístup k digitálním knihovnám a k službám, které analyzují a obohacují textová data. Obohacená data (aktuálně morfosyntaktická anotace s lemmatizací a rozpoznání pojmenovaných entit) se kombinují do jednoho formátu, kterým je TEI P5. Aplikace umožňuje stáhnout volně dostupná data a metadata z digitálních knihoven, která využívají systém Kramerius, na zařízení uživatele pro další použití.
Aplikace je navržená jako desktopová, spouštěná z příkazového řádku.
Libri augmentati
komunikuje s jednotlivými službami, tj. digitálními knihovnami a aplikacemi pro obohacení textu, prostřednictvím dostupných programových rozhraní REST API.
Uživatel zadá identifikátor digitální publikace, s níž chce pracovat, a v které digitální knihovně je dostupná. Aplikace na základě několika dotazů vůči digitální knihovně vytvoří tzv. virtuální dokument, který obsahuje údaje o dostupných datech a metadatech pro celou publikaci a jednotlivé stránky, zachycený ve formátu XML.
- Dostupná data a metadata v rámci digitálního knihoven
- Ukázka virtuálního dokumentu
<lad:document xmlns:lad="https://www.mzk.cz/ns/libri-augmentati/documents/1.0">
<!-- -->
<lad:resource available="true" type="mods" url="https://api.kramerius.mzk.cz/search/api/client/v7.0/items/uuid%3Abd9b4450-7ff1-11ef-a44c-5ef3fc9bb22f/metadata/mods" />
<lad:resource available="true" type="dc" url="https://api.kramerius.mzk.cz/search/api/client/v7.0/items/uuid%3Abd9b4450-7ff1-11ef-a44c-5ef3fc9bb22f/metadata/dc" />
<lad:resource available="true" type="foxml" url="https://api.kramerius.mzk.cz/search/api/client/v7.0/items/uuid%3Abd9b4450-7ff1-11ef-a44c-5ef3fc9bb22f/foxml" />
<lad:pages>
<lad:page order="1" id="uuid:56eda0d3-ca88-467f-8430-4c07d296aecc" title="[1a]" type="FrontCover">
<lad:resource order="1" url="https://api.kramerius.mzk.cz/search/api/client/v7.0/items/uuid:56eda0d3-ca88-467f-8430-4c07d296aecc/ocr/alto" available="true" type="alto" />
<lad:resource order="1" url="https://api.kramerius.mzk.cz/search/api/client/v7.0/items/uuid:56eda0d3-ca88-467f-8430-4c07d296aecc/ocr/text" available="true" type="text" />
<lad:resource order="1" url="https://api.kramerius.mzk.cz/search/api/client/v7.0/items/uuid:56eda0d3-ca88-467f-8430-4c07d296aecc/metadata/dc" available="true" type="dc" />
<lad:resource order="1" url="https://api.kramerius.mzk.cz/search/api/client/v7.0/items/uuid:56eda0d3-ca88-467f-8430-4c07d296aecc/metadata/mods" available="true" type="mods" />
<lad:resource order="1" url="https://api.kramerius.mzk.cz/search/api/client/v7.0/items/uuid:56eda0d3-ca88-467f-8430-4c07d296aecc/foxml" available="true" type="foxml" />
<lad:resource order="1" url="https://api.kramerius.mzk.cz/search/iiif/uuid:56eda0d3-ca88-467f-8430-4c07d296aecc/full/max/0/default.jpg" available="true" type="image" />
</lad:page>
</lad:pages>
<!-- -->
</lad:document>
Po sestavení virtuálního dokumentu dojde ke stažení dat a metadat pro celou publikaci a jednotlivé stránky.
V další fázi dochází k obohacování dat, v jehož průběhu se textová data odesílají na webové služby a vrácené výsledky se jednak uchovávají v originálním formátu (např. XML nebo v prostém textu) a zároveň se převádějí do formátu TEI, který má k dispozici prostředky pro konverzi z těchto formátů při zachování všech podstatných informací a metadat (např. o použité verzi externí aplikace a datového modelu).
- Ukázka obohacených dat ve formátu XML (služba NameTag)
<sentence>
<token>Během</token>
<token>posledních</token>
<ne type="nc">
<token>15</token>
</ne>
<token>—</token>
<ne type="nc">
<token>20</token>
</ne>
<token>let</token>
<token>věnuje</token>
<token>se</token>
<token>v</token>
<ne type="gt">
<token>Americe</token>
</ne>
<token>opravě</token>
<token>postoje</token>
<token>u</token>
<token>mládeže</token>
<token>zvláštní</token>
<token>pozornost</token>
<token>.</token>
</sentence>
<sentence>
# newpar
# sent_id = 3
# text = Během posledních 15 — 20 let věnuje se v Americe opravě postoje u mládeže zvláštní pozornost .
1 Během během ADP RR--2---------- AdpType=Prep|Case=Gen 6 case _ SpacesAfter=
2 posledních poslední ADJ AANP2----1A---- Case=Gen|Degree=Pos|Gender=Neut|Number=Plur|Polarity=Pos 6 amod _ SpacesAfter=
3 15 15 NUM C=------------- NumForm=Digit|NumType=Card 6 nummod _ SpacesAfter=
4 — — PUNCT Z:------------- _ 5 cc _ SpacesAfter=
5 20 20 NUM C=------------- NumForm=Digit|NumType=Card 3 conj _ SpacesAfter=
6 let léta NOUN NNNP2-----A---- Case=Gen|Gender=Neut|Number=Plur 7 obl _ SpacesAfter=
7 věnuje věnovat VERB VB-S---3P-AAI-- Aspect=Imp|Mood=Ind|Number=Sing|Person=3|Polarity=Pos|Tense=Pres|VerbForm=Fin|Voice=Act 0 root _ SpacesAfter=
8 se se PRON P7-X4---------- Case=Acc|PronType=Prs|Reflex=Yes|Variant=Short 7 expl:pass _ SpacesAfter=
9 v v ADP RR--6---------- AdpType=Prep|Case=Loc 10 case _ SpacesAfter=
10 Americe Amerika PROPN NNFS6-----A---- Case=Loc|Gender=Fem|NameType=Geo|Number=Sing 7 obl _ SpacesAfter=
11 opravě oprava NOUN NNFS3-----A---- Case=Dat|Gender=Fem|Number=Sing 7 obl:arg _ SpacesAfter=
12 postoje postoj NOUN NNIS2-----A---- Animacy=Inan|Case=Gen|Gender=Masc|Number=Sing 11 nmod _ SpacesAfter=
13 u u ADP RR--2---------- AdpType=Prep|Case=Gen 14 case _ SpacesAfter=
14 mládeže mládež NOUN NNFS2-----A---- Case=Gen|Gender=Fem|Number=Sing 12 nmod _ SpacesAfter=
15 zvláštní zvláštní ADJ AAFS1----1A---- Case=Nom|Degree=Pos|Gender=Fem|Number=Sing|Polarity=Pos 16 amod _ SpacesAfter=
16 pozornost pozornost NOUN NNFS1-----A---- Case=Nom|Gender=Fem|Number=Sing 7 nsubj:pass _ SpacesAfter=
17 . . PUNCT Z:------------- _ 7 punct _ SpacesAfter=
- Ukázka obohacených dat ve formátu TEI
<s xmlns="http://www.tei-c.org/ns/1.0">
<w n="1" lemma="během" pos="ADP" msd="AdpType=Prep|Case=Gen">Během</w>
<w n="2" lemma="poslední" pos="ADJ" msd="Case=Gen|Degree=Pos|Gender=Neut|Number=Plur|Polarity=Pos">posledních</w>
<num ana="#nametag-nc">
<w n="3" lemma="15" pos="NUM" msd="NumForm=Digit|NumType=Card">15</w>
</num>
<pc n="4" lemma="—" pos="PUNCT" msd="_">—</pc>
<num ana="#nametag-nc">
<w n="5" lemma="20" pos="NUM" msd="NumForm=Digit|NumType=Card">20</w>
</num>
<w n="6" lemma="léta" pos="NOUN" msd="Case=Gen|Gender=Neut|Number=Plur">let</w>
<w n="7" lemma="věnovat" pos="VERB" msd="Aspect=Imp|Mood=Ind|Number=Sing|Person=3|Polarity=Pos|Tense=Pres|VerbForm=Fin|Voice=Act">věnuje</w>
<w n="8" lemma="se" pos="PRON" msd="Case=Acc|PronType=Prs|Reflex=Yes|Variant=Short">se</w>
<w n="9" lemma="v" pos="ADP" msd="AdpType=Prep|Case=Loc">v</w>
<geogName ana="#nametag-gt" type="continent">
<w n="10" lemma="Amerika" pos="PROPN" msd="Case=Loc|Gender=Fem|NameType=Geo|Number=Sing">Americe</w>
</geogName>
<w n="11" lemma="oprava" pos="NOUN" msd="Case=Dat|Gender=Fem|Number=Sing">opravě</w>
<w n="12" lemma="postoj" pos="NOUN" msd="Animacy=Inan|Case=Gen|Gender=Masc|Number=Sing">postoje</w>
<w n="13" lemma="u" pos="ADP" msd="AdpType=Prep|Case=Gen">u</w>
<w n="14" lemma="mládež" pos="NOUN" msd="Case=Gen|Gender=Fem|Number=Sing">mládeže</w>
<w n="15" lemma="zvláštní" pos="ADJ" msd="Case=Nom|Degree=Pos|Gender=Fem|Number=Sing|Polarity=Pos">zvláštní</w>
<w n="16" lemma="pozornost" pos="NOUN" msd="Case=Nom|Gender=Fem|Number=Sing">pozornost</w>
<pc n="17" lemma="." pos="PUNCT" msd="_">.</pc>
</s>
V další fázi se z jednotlivých stran a metadat o publikaci vytvoří jeden dokument TEI, který obsahuje většinu shromážděných údajů.
Na závěr se vygeneruje webová stránka, na níž jsou v přehledné podobě k dispozici odkazy na jednotlivá data či metadata, ať už on-line, nebo lokálně uložená.
Architektura je navržena tak, aby bylo možné komunikovat i dalšími digitálními knihovnami, které v základu využívají jiná data a metadata, jako je např. Bayerische Staatsbibliothek a Biblioteka Narodowa.
Softwarová aplikace Libri augmentati
je tvořena několika knihovnami v programovacím jazyce XProc 3.0. Pro její běh se využívá knihovna MorganaXProc-IIIse.
Vstupní bod aplikace tvoří knihovna libri-augmentati.xpl
, která zapouzdřuje volání kroků z dalších knihoven, které jsou určeny jednak pro komunikaci s webovými službami prostřednictvím REST API, např. kramerius-5.xpl
a kramerius-7.xpl
pro digitální knihovny nebo obecně pro obohacení dat udpipe.xpl
. Posledně jmenovaná knihovna volá kroky v knihovnách nametag.xpl
a udpipe.xpl
, které komunikují s webovými službami pro obohacení textu.
Další knihovny mají pomocný charakter a slouží zejména pro konverzi do formátu TEI (tei.xpl
) nebo jiných (conversion.xpl
) a obecně pro práci s textovými dokumenty (text.xpl
).
Nastavení je uloženo ve složce settings, a to jednak informace o digitálních knihovnách a službách pro obohacení.
XSLT transformace, které se používají v rámci některých kroků v jazyce XProc 3.0, jsou uloženy v podsložkách adresáře xlst.
Aplikace využívá také externí komponenty, zejména pro generování dokumentace (viz xproc-analyzer-3.0.xpl).
Jednotlivé knihovny jsou zdokumentovány ve zdrojovém kódu a v samostatné dokumentaci.
- vývoj software obchodních aplikací a informačních systémů za použití známých metod a stávajících softwarových nástrojů
Libri augmentati
využívá stávající softwarové nástroje, jako ostatně téměř všechny aplikace, včetně operačních systémů; nejedná se však o obchodní aplikaci, ale volně dostupný software, který neplní roli informačního systému
- přidání uživatelských funkcí do stávajících aplikačních programů (včetně funkčnosti základních vstupních dat)
Libri augmentati
je zcela nová aplikace, dosud nikde nevykazovaná
- tvorba webových stránek či software s využitím stávajících nástrojů
Libri augmentati
neslouží k tvorbě webových stránek, jedná se o software, který využívá stávající nástroje, jako je např. běhové prostředí pro programovací jazyk XProc 3.0, běhové prostředí Java, nebo aplikaci pro XSLT transformace
- použití standardních metod kódování, ověřování zabezpečení a testování integrity dat
Libri augmentati
používá standardní metody, kdyby je nepoužíval, nemohl by fungovat; novum aplikace spočívá v jednotném přístupu k různým verzím digitálních knihoven a ve sloučení různorodých obohacujících informací do jednoho dokumentu
- přizpůsobení výrobku pro konkrétní použití, nejsou-li v průběhu tohoto procesu přidány poznatky, které výrazně vylepšují základní program
Libri augmentati
je zcela nová aplikace
- rutinní ladění stávajících systémů a programů, pokud se tak neděje před koncem procesu experimentálního vývoje
Libri augmentati
bylo samozřejmě potřeba před dokončením ostré verze ladit, aby jeho uživatelé nenaráželi na chyby, které by znemožnily používání aplikace ke stahování a obohacování dat
Libri augmentati
využívá deklarativní programovací jazyk XProc 3.0, který je zapisován pomocí standardu XML. Novější verze tohoto jazyka nativně podporuje všechny potřebné protokoly (HTTP(S)) a formáty (JSON, XML, TXT), které se v digitálních knihovnách a službách pro obohacení jazykových dat využívají.
Jako nosič dat (pro virtuální dokument, popř. nastavení aplikace) se používá nově vytvořená specifikace XML s vlastním jmenným prostorem. To zaručuje další rozšiřitelnost o nové typy dat nebo služeb.
Ke spuštění programu se používá běhové prostředí, pro nějž v současné době existuje pouze jedna implementace (MorganaXProc-IIIse), ale v dohledné době se objeví další (XML Calabash 3).
Pokud je mi známo, představuje Libri augmentati
jedinou aplikaci v programovacím jazyce XProc 3.0, která umí získávat data z digitálních knihoven se systémem Kramerius a služeb pro obohacování dat.
K běhu aplikace a práci s daty (volání webových služeb, ukládání, konverze či slučování) se používá deklarativní přístup, a to pomocí jazyka XProc 3.0 a XSLT 3.0.