datagov-cz / lkod

Referenční implementace Lokálního katalogu otevřených dat. Tento repozitář je udržován v rámci projektu OPZ č. CZ.03.4.74/0.0/0.0/15_025/0013983.
MIT License
2 stars 2 forks source link

Referenční implementace Lokálního katalogu otevřených dat (LKOD)

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.

CKAN ani DKAN nestačí

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.

Co je potřeba pro kompatibilitu s NKOD

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ů:

  1. 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.
  2. Proprietární systém, který dané soubory (či SPARQL endpoint) zpřístupňuje.
  3. 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).
  4. Použití jedné z variant referenční implementace LKOD popsané v tomto repozitáři, nebo jejích částí.

Referenční implementace LKOD - DCAT-AP Dokumenty

Tato varianta používá pouze formulář NKOD a GitHub.

Požadavky referenční implementace DCAT-AP Dokumenty

Workflow referenční implementace DCAT-AP Dokumenty

S touto implementací se pak pracuje následovně:

  1. Pro tvorbu katalogizačního záznamu se využije formulář pro vkládání záznamu do NKOD.
  2. 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.
  3. 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.
  4. Výsledný JSON-LD soubor se nahraje na GitHub do repozitáře poskytovatele (Příklad MV ČR).
  5. 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.
  6. 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 LKOD - SPARQL Endpoint

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.

Požadavky referenční implementace SPARQL endpoint

Workflow referenční implementace SPARQL Endpoint

S touto implementací se pak pracuje následovně:

  1. Pro tvorbu katalogizačního záznamu se využije formulář pro vkládání záznamu do NKOD.
  2. 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.
  3. 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.
  4. 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.
  5. Proces v LinkedPipes ETL stáhne záznamy z GitHub a nahraje je do SPARQL endpointu (rozhraní pro NKOD).
  6. SPARQL endpoint je pak zaregistrován do NKOD

LKOD, NKOD a vizualizační aplikace

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

Architektura LKOD

Tento repozitář je udržován v rámci projektu OPZ č. CZ.03.4.74/0.0/0.0/15_025/0013983. Evropská unie - Evropský sociální fond - Operační program Zaměstnanost