V tomto repozitáři popisujeme, jak lze již nyní zprovoznit jednoduchý lokální katalog otevřených dat (LKOD), který plně vyhovuje požadavkům Národního katalogu otevřených dat (NKOD), které mají formu Otevřené formální normy (OFN) Rozhraní katalogů otevřených dat. Dále v tomto repozitáři sbíráme další požadavky na referenční implementaci Lokálního katalogu otevřených dat. Neslibujeme, že je všechny implementujeme, ale i tak se hodí je mít na jednom místě. Pokud tedy máte požadavek na to, co by LKOD měl umět, založte issue.
Aktuální rozšířené implementace datových katalogů CKAN a DKAN nestačí. Standardem pro metadata v Evropské unii je DCAT-AP 2.0.1, který vyžaduje například využívání EU slovníků a číselníků (EU Vocabularies), umožňuje mít vícejazyčná metadata a je založen na principu Propojených dat. CKAN ani DKAN i přes existenci různých DCAT rozšíření nedosahují potřebné úrovně kompatibility.
Nejprve je třeba si ujasnit, co je nezbytné pro dosažení kompatibility s NKOD. Je to pouze poskytnutí strojového rozhraní odpovídajícího OFN Rozhraní katalogů otevřených dat. Jedná se tedy buď o rozhraní DCAT-AP Dokumenty, nebo DCAT-AP SPARQL Endpoint. Uživatelské rozhraní není potřeba, datové sady budou uživateli nalezitelné přímo v Národním katalogu otevřených dat. OFN se v čase vyvíjí podle toho, jak se vyvíjejí standardy DCAT a DCAT-AP a jak je podle nich rozšiřován NKOD. Teď se to děje zhruba jednou za rok.
Způsob, jakým je rozhraní implementováno, OFN nespecifikuje. Lze ho tedy implementovat libovolně. Několik vybraných způsobů:
- Ručně tvořené soubory s obsahem dle OFN, umístěné na web - toto lze použít pro malé, a ne často aktualizované LKODy. Toto řešení je však velmi levné a snadné. Jako formulář pro zadávání dat totiž poslouží formulář NKOD, ve kterém se pouze na konci přepne do režimu "Stáhnout nový záznam pro LKOD", vyplní se IRI datové sady a IRI poskytovatele, a stáhne se hotový katalogizační záznam, který lze vystavit na web. Pokud je jako úložiště využit GitHub, je toto vystavení zcela zdarma a lze zajistit i automatizované generování souboru s katalogem. V opačném případě je třeba zajistit existenci souboru s katalogem, který odkazuje na jednotlivé záznamy datových sad. URL souboru s katalogem je pak zaregistrováno v NKOD.
- Proprietární systém, který dané soubory (či SPARQL endpoint) zpřístupňuje.
- Vlastní silou rozšířený katalog CKAN, DKAN či jiný, který poskytne rozhraní pro vkládání dat, a navíc se zajistí transformace těchto dat do formy dle OFN. Toho lze docílit například nástrojem LinkedPipes ETL (open-source).
- Použití jedné z variant referenční implementace LKOD popsané v tomto repozitáři, nebo jejích částí.
Tato varianta používá pouze formulář NKOD a GitHub.
- Repozitář na GitHubu. Nejjednodušší je udělat fork minimalistického LKOD. Sem bude poskytovatel ukládat katalogizační záznamy. GitHub zde řeší i přihlašování uživatelů a řízení přístupu uživatelů k repozitáři.
- Uživatel plnící LKOD musí umět pracovat s GitHubem.
S touto implementací se pak pracuje následovně:
- Pro tvorbu katalogizačního záznamu se využije formulář pro vkládání záznamu do NKOD.
- V posledním kroce se tlačítkem se symbolem ozubeného kolečka přepne do režimu "Stáhnout nový záznam pro LKOD", vyplní se IRI datové sady a IRI poskytovatele.
- Vyplněné IRI datové sady musí odpovídat URL souboru výsledného katalogizačního záznamu pro přístup k jeho nezměněné podobě po jeho uložení do GitHub repozitáře.
Např.
https://raw.githubusercontent.com/opendata-mvcr/lkod-mvcr/master/rpp/dokumenty-převodu-agend.jsonld
pro přístup k https://github.com/opendata-mvcr/lkod-mvcr/blob/master/rpp/dokumenty-převodu-agend.jsonld. Toto URL pak slouží i pro opětovné načtení katalogizačního záznamu do formuláře NKOD, například pro jeho editaci. - Výsledný JSON-LD soubor se nahraje na GitHub do repozitáře poskytovatele (Příklad MV ČR).
- GitHub po této akci automaticky spustí GitHub Actions skript generující soubor katalogu, který odkazuje na jednotlivé záznamy datových sad. Spuštění tohoto skriptu musí být nakonfigurováno v daném repozitáři.
- URL souboru katalogu, opět ve formě pro přístup k jeho nezměněné podobě po jeho uložení do GitHub repozitáře, je pak zaregistrováno do NKOD.
Referenční implementace je v tuto chvíli tvořena pomocí komponent v aktuální implementaci Národního katalogu otevřených dat. Tato varianta používá výhradně open-source software a GitHub, je pro ni potřeba mít k dispozici (virtuální) server. Aktuálně na ní běží například LKOD MV ČR. Jednotlivé kroky či komponenty lze libovolně vyměňovat za jiné, za předpokladu dodržení rozhraní pro NKOD.
- Server, kde LKOD poběží, nejlépe s OS Linux (Ubuntu, Debian, ...)
- LinkedPipes ETL - Open-source software pro transformace propojených dat
- Nějaká implementace SPARQL Endpointu. Například Openlink Virtuoso Open-Source 7, Apache Jena Fuseki, Eclipse RDF4J, Blazegraph apod.
- Repozitář na GitHubu. Sem bude poskytovatel ukládat katalogizační záznamy.
- Volitelně LinkedPipes DCAT-AP Viewer, pokud je vyžadováno i uživatelské rozhraní.
- Web server pro implementaci zabezpečení přístupu k jednotlivým komponentám a příjem Webhooks, např. nginx
- Uživatel plnící LKOD musí umět pracovat s GitHubem.
S touto implementací se pak pracuje následovně:
- Pro tvorbu katalogizačního záznamu se využije formulář pro vkládání záznamu do NKOD.
- V posledním kroce se tlačítkem se symbolem ozubeného kolečka přepne do režimu "Stáhnout nový záznam pro LKOD", vyplní se IRI datové sady a IRI poskytovatele.
- Výsledný JSON-LD soubor se nahraje na GitHub do repozitáře poskytovatele (Příklad MV ČR). GitHub zde řeší oprávnění uživatelů k editaci jednotlivých záznamů a automatizaci následného aktualizačního procesu.
- GitHub po této akci automaticky zavolá tzv. Webhook, který aktualizuje klon repozitáře na serveru a spustí transformační proces v nástroji LinkedPipes ETL. Podívejte se na vzorový skript pro obsluhu Webhooku v PHP. Stačí na tento skript nasměrovat GitHub Webhook, vyplnit secret, informace o adresáři s klonem GitHub repozitáře katalogu a IRI obslužné pipeline v LinkedPipes ETL - vzorová pipeline pracuje s Openlink Virtuoso.
- Proces v LinkedPipes ETL stáhne záznamy z GitHub a nahraje je do SPARQL endpointu (rozhraní pro NKOD).
- SPARQL endpoint je pak zaregistrován do NKOD
LKOD je vzhledem k NKOD tedy pouze rozhraní, které splňuje Otevřenou formální normu (OFN) Rozhraní katalogů otevřených dat. Měl by poskytovateli umožnit pohodlně zadávat katalogizační záznamy, tak jako to teď dělá formulář pro vkládání záznamu do NKOD. Další funkcionalita, jako uživatelské prohlížení záznamů či vizualizace dat jsou volitelnou, nikoliv nutnou součástí.
Tento repozitář je udržován v rámci projektu OPZ č. CZ.03.4.74/0.0/0.0/15_025/0013983.