Abstrakt

Tento dokument je otevřenou formální normou ve smyslu § 3 odst. 9 zákona č. 106/1999 Sb., o svobodném přístupu k informacím, pro zveřejňování číselníků. Norma popisuje přehled struktury a významu číselníků v podobě konceptuálního modelu a stanovuje, jakým způsobem mají být číselníky publikovány v podobě propojených dat v modelu RDF [[rdf11-concepts]] a v podobě CSV [[rfc4180]], JSON [[ECMA-404]] a XML [[xml]] souborů. Jednotlivé způsoby publikace demonstruje na příkladech. Dále také uvádí doporučenou dobrou praxi při publikaci číselníků.

Úvod

Číselníkem se ve smyslu § 2 písm. i) zákona č. 365/2000 Sb. o informačních systémech veřejné správy rozumí seznam přípustných hodnot datového prvku obvykle ve formě dvojic, to znamená kódovaného údaje a hodnoty jeho kódu. Takto chápe základní podobu číselníku i tato otevřená formální norma.

Datovým prvkem rozumíme pro účely této otevřené formální normy jakýkoliv atribut či vlastnost určitého typu entit (např. pohlaví osoby, barva vozidla nebo měna finanční částky). Číselník pak omezuje přípustné hodnoty datového prvku konečným výčtem (seznamem) kódovaných hodnot. Kódovanou hodnotou rozumíme právě dvojici (kód, hodnota) a nazýváme ji prvek číselníku. Kód je obvykle vyjádřen jako kladné celé číslo, které položku v rámci číselníku identifikuje. Hodnota je obvykle tvořena názvem položky číselníku.

Otevřená formální norma je strukturována následovně:

Konceptuální model číselníků

Tato kapitola popisuje konceptuální model číselníků, který zahrnuje číselníky a položky číselníků a jejich běžné vlastnosti uvažované v této otevřené formální normě. Diagram konceptuálního modelu číselníků je zobrazen na následujícím obrázku.

Diagram konceptuálního modelu číselníků
Diagram konceptuálního modelu číselníků.

Třída Číselník

Číselník je seznam přípustných hodnot datového prvku kódovaný v podobě kódu a kódované strukturované hodnoty.

Vlastnost Název číselníku

Název číselníku, který je též použit pro pojmenování datové sady s číselníkem v katalogizačním záznamu v Národním katalogu otevřených dat. Název je uveden v jednom nebo více jazycích.

Vlastnost Popis číselníku

Popis číselníku, který blíže vysvětluje obsah či způsob užití číselníku. Popis je uveden v jednom nebo více jazycích.

Vlastnost Platnost číselníku

Časový interval, ve kterém je číselník platný. Platnost číselníku určuje, v jakém časovém období byl, je nebo bude číselník platný. Pro snazší strojové zpracování se doporučuje nespoléhat na to, že uživatel aplikuje platnost číselníku i na jednotlivé položky. Je doporučeno platnost položek uvést přímo pro jednotlivé položky. Viz Platnost položky.

Vlastnost Obsahuje položku

Zařazuje do číselníku jeho položku.

Třída Položka

Položka číselníku reprezentuje jednu přípustnou hodnotu datového prvku z množiny všech přípustných hodnot, které jsou kódovány číselníkem, do kterého položka patří.

Vlastnost Kód položky

Unikátní kód položky číselníku v rámci číselníku, do kterého položka patří.

Vlastnost Název položky

Název (hodnota) položky číselníku v jednom nebo více jazycích.

Vlastnost Alternativní název položky

Alternativní název (hodnota) položky číselníku v jednom nebo více jazycích.

Vlastnost Definice položky

Textová definice položky číselníku v jednom nebo více jazycích.

Vlastnost Popis položky

Popis položky číselníku, který blíže vysvětluje položku číselníku. Popis je uveden v jednom nebo více jazycích. Oproti definici je méně formální a více vysvětlující.

Vlastnost Platnost položky

Časový interval, ve kterém je položka číselníku platná. Platnost položky číselníku určuje, v jakém časovém období byla, je nebo bude položka platná. Pro snazší strojové zpracování není platnost položky číselníku nijak odvozována z uvedené platnosti číselníku. Viz Platnost číselníku.

Vlastnost Referencovaná položka

Identifikace referencovan0 položky z jiného (externího) číselníku v podobě jejího jednoznačného IRI.

Číselník v podobě propojených dat

V této kapitole otevřená formální norma stanovuje způsob publikace číselníku v podobě propojených dat. Při reprezentaci číselníků v podobě propojených dat je nutno dodržet otevřenou formální normu Propojená data a veškerá pravidla stanovená v této kapitole.

Využití IRI jako globálních identifikátorů

Každý číselník a každá položka číselníku je identifikována svým unikátním IRI v HTTPS schématu. Stejně tak je i zdroj se změnami v číselníku identifikován svým unikátním IRI v HTTPS schématu. Konkrétní IRI jsou tvořena dle pravidel pro tvorbu IRI. Tato otevřená formální norma pravidla pro tvorbu IRI více nespecifikuje.

Specifikace využití slovníku SKOS pro reprezentaci číselníku

Při reprezentaci číselníků v podobě propojených dat musí být dodrženo doporučení konsorcia WWW SKOS [[skos-primer]]. Následující přehled ukazuje pokrytí konceptuálního modelu prvky slovníku SKOS. Lze ale využít i další prvky slovníku SKOS pokud tím nejsou porušena pravidla stanovená touto otevřenou formální normou.

Vystavení číselníku

Jsou 2 povinné způsoby zpřístupnění číselníku a jeho obsahu v propojené podobě : RDF dumpy a dereferencovatelná IRI číselníku a jeho položek. Vystavení RDF dumpů znamená, že číselník a jeho obsah je exportován do alespoň jedné platné serializace RDF modelu. Každá tato serializace je potom vystavena jako jedna z distribucí číselníku. Při vystavování serializací postupujeme dle otevřené formální normy Propojená data, sekce Datová sada ke stažení a Dostupnost souborů ke stažení. Dereferencovatelná IRI znamenají vystavit obsah číselníku dle otevřené formální normy Propojená data, Dereferencovatelnost IRI RDF zdrojů.

V případě serializace JSON-LD [[json-ld]] doporučujeme tělo JSON-LD souboru strukturovat podle doporučeného JSON schématu pro číselníky a referencovat doporučený JSON-LD kontext pro číselníky (viz také Příklady v serializaci JSON-LD).

Doplňkovým způsobem zpřístupnění je zpřístupnění číselníku a jeho položek prostřednictvím SPARQL endpointu. To znamená, že číselník a jeho položky nahrajeme do zvoleného RDF úložiště a vystavíme jím nabízený SPARQL endpoint veřejnosti k volnému SPARQL dotazování. Při vystavování SPARQL endpointu postupujeme dle otevřené formální normy Propojená data, sekce IRI SPARQL endpointu a Dostupnost SPARQL endpointu.

Příklady číselníků v podobě propojených dat

V této sekci jsou uvedeny příklady reprezentace číselníků v podobě propojených dat v doporučovaných serializacích modelu RDF.

Příklady v serializaci Turtle

Tato kapitola obsahuje příklady různých variant číselníku měn v serializaci Turtle [[turtle]].

Číselník měn - základní podoba

Příklad ukazuje reprezentaci číselníku z příkladu číselníku měn - základní podoba v serializaci Turtle.

Číselník měn - různé jazyky

Příklad ukazuje reprezentaci číselníku z příkladu číselníku měn - různé jazyky v serializaci Turtle.

Číselník měn - kompletní popis

Příklad ukazuje reprezentaci číselníku z příkladů příkladu číselníku měn - alternativní pojmenování a příkladu číselníku měn - další atributy v serializaci Turtle.

Číselník měn - platnosti

Příklad ukazuje reprezentaci číselníku z příkladu číselníku měn - platnosti položek číselníku a v serializaci Turtle a doplňuje jej i o platnost číselníku jako takového.

Číselník měn - reference

Příklad ukazuje reprezentaci číselníku z příkladu číselníku měn - reference a v serializaci Turtle.

Příklady v serializaci JSON-LD

Tato kapitola obsahuje příklady různých variant číselníku měn v serializaci JSON-LD [[json-ld]]. Těla JSON-LD souborů v uvedených příkladech jsou strukturována podle doporučeného JSON schématu pro číselníky a referencují doporučený JSON-LD kontext pro číselníky.

Číselník měn - základní podoba

Příklad ukazuje reprezentaci číselníku z příkladu číselníku měn - základní podoba v serializaci JSON-LD.

Číselník měn - různé jazyky

Příklad ukazuje reprezentaci číselníku z příkladu číselníku měn - různé jazyky v serializaci JSON-LD.

Číselník měn - kompletní popis

Příklad ukazuje reprezentaci číselníku z příkladů příkladu číselníku měn - alternativní pojmenování a příkladu číselníku měn - další atributy v serializaci JSON-LD.

Číselník měn - platnosti

Příklad ukazuje reprezentaci číselníku z příkladu číselníku měn - platnosti položek číselníku a v serializaci JSON-LD a doplňuje jej i o platnost číselníku jako takového.

Číselník měn - reference

Příklad ukazuje reprezentaci číselníku z příkladu číselníku měn - reference a v serializaci JSON-LD.

Číselník v podobě CSV souboru

V této kapitole otevřená formální norma stanovuje způsob publikace číselníku v podobě CSV souboru.

Číselník v podobě JSON souboru

V této kapitole otevřená formální norma stanovuje způsob publikace číselníku v podobě JSON souboru.

V případě zveřejňování číselníku v podobě JSON [[json]] souboru doporučujeme rovnou volit serializaci JSON-LD [[json-ld]]. Tělo JSON souboru strukturujeme podle doporučeného JSON schématu pro číselníky. Dále referencujeme doporučený JSON-LD kontext pro číselníky, který definuje mapování JSON souboru do struktury RDF aniž by byla narušena struktura JSON. Pro ukázku referencování JSON-LD kontextu viz Příklady v serializaci JSON-LD.

Číselník v podobě XML souboru

V této kapitole otevřená formální norma stanovuje způsob publikace číselníku v podobě XML souboru.

Obvyklá struktura číselníků

Lze ale uvažovat i složitější strukturované hodnoty. Jelikož je název určen pro lidského čtenáře, může být potřeba jej vyjádřit v různých jazycích.

Dále může být potřebné vyjádřit i různé zkrácené či jinak alternativní pojmenování hodnot.

Pro položku číselníku může být také nutné v hodnotě vyjádřit i další atributy, např. definici nebo popis.

Někdy jsou položky číselníku kódovány i jinými externími kódy, než jsou použity přímo v číselníku. Příkladem mohou být např. různá kódování ISO.

V případě sofistikovanější správy číselníků je přímo v číselníku a jeho položkách reflektována také časová dimenze platnosti ať už jednotlivých položek číselníku tak i číselníku jako takového. To znamená, že položka číselníku nebo celý číselník může mít specifikovánu platnost od a platnost do. V případě uvažování intervalu platnosti nemusí být platnost od nebo platnost do uvedena. To potom znamená, že datum platnosti od resp. do je prozatím neznámé a chápeme jej jako otevřené.

Výše uvedené příklady se týkají číselníků s jednoduchou plochou strukturou. Někdy ale existují mezi položkami číselníku hierarchické vazby, které určují vztah nadřazenosti a podřazenosti položek číselníků. Takové struktuře pak říkáme taxonomie. Pro reprezentaci taxonomií existuje samostatná otevřená formální norma.

Z uvedených příkladů vyplývá konceptuální model číselníků, který zahrnuje číselníky a položky číselníků a jejich běžné vlastnosti.

Dobrá praxe při publikaci číselníku

Při publikaci číselníku je doporučováno dodržet dobrou praxi popsanou v této kapitole. Publikace číselníku v podobě propojených dat zároveň zajišťuje, že je této dobré praxe dosaženo dle řady doporučení W3C.

Jak bylo uvedeno výše, číselník definuje přípustné hodnoty datového prvku. Číselník tedy definuje výčtový typ. Vlastnosti, které mají výčtový typ přiřazen jako svůj datový typ pak nabývají hodnot z příslušného číselníku. Uvažujme např. smlouvy. Každá smlouva má vlastnost hodnota smlouvy. Hodnota smlouvy má pak 2 vlastnosti strukturující hodnotu smlouvy: částka a měna. Typem vlastnosti částka je celé kladné číslo. Typem vlastnosti měna je výčtový datový typ definovaný číselníkem měn. Hodnotou vlastnosti měna je kód položky z tohoto číselníku. Kód položky tedy musí být v rámci číselníku unikátní, abychom se na ni mohli odkazovat.

Může existovat více datových sad, jejichž některé vlastnosti mají výčtový typ se stejnou sémantikou. V našem případě existují různé datové sady se smlouvami, které obsahují hodnoty smluv dělené na částku a měnu. Navíc existují datové sady s veřejnými zakázkami, vědeckými projekty financovanými z veřejných zdrojů, apod. Všechny tyto datové sady v nějaké části obsahují částky a jejich měny. Pro zajištění interoperability mezi takovými datovými sadami (tj. minimalizace pracnosti jejich integrace) je nutné používat pro měny jeden a ten samý číselník. To v žádném případě neznamená kopírování číselníku a používání těchto kopií, což by vedlo k nekonzistencím. Je nutné, aby byl daný číselník spravován a následně publikován pouze na jednom místě jako jedna datová sada. Ostatní datové sady potom číselník a jeho jednotlivé položky referencují. Je tedy nutné umožnit takové referencování. To znamená, aby položky neměly jen kód pro jejich lokální identifikaci v rámci číselníku, ale aby měly přiřazeny i globální identifikátor v prostředí Webu. Globální identifikátor je vhodný též pro samotný číselník. Pro referencování položek číselníku v jakékoliv datové sadě (smlouvy, veřejné zakázky, projekty, atd.) jsou potom používány tyto globální identifikátory.

Globální identifikátory Číselník a každá jeho položka by měla mít globální identifikátory, které jsou standardizované v prostředí Webu.

Jak ukazují příklady výše, každá položka číselníku má vždy minimálně svůj kód a název. Hodnotou položky číselníku ale nemusí být pouze její název, ale i další vlastnosti, které je potřeba uvádět strukturovaně.

Struktorvaný popis položek číselníku Pro položky číselníku vždy uvádíme ve strukturované podobě minimálně jejich kód a název. Pokud je to možné a smysluplné, uvádíme též ve strukturované podobě jejich alternativní názvy, definice, popisy, případně další popisné atributy.

Stejně tak je potřeba strukturovaným způsobem popsat i samotný číselník.

Strukturovaný popis číselníku Pro číselník vždy uvádíme ve strukturované podobě jeho název a popis.

Je potřeba myslet na to, že číselník může být užíván i mimo české jazykové prostředí. Je proto vhodné uvádět také alespoň anglické překlady.

Vícejazyčné popisy číselníků a jejich položek Hodnoty atributů číselníku a jeho položek určené pro čtení člověkem (název, popis, definice, atd.) uvádíme v českém jazyku. Dále hodnoty uvádíme též v anglickém jazyku. Existují-li překlady hodnot i do jiných jazyků, uvádíme i tyto hodnoty. Je-li to technicky možné, jazyk hodnoty explicitně označujeme strojově čitelným způsobem.

Jak ukázal příklad výše, položky číselníku mohou mít i externí kódy. Obvykle to znamená, že položky číselníku se referencují na položky jiného číselníku. Reference může mít různý význam. Referencující položka např. může mít stejný význam jako referencovaná položka nebo může být jejich význam blízký nikoliv však stejný.

Reference mezi různými číselníky Významové souvislosti mezi různými číselníky jsou strukturovaně zaznamenávány v podobě referencí (odkazů). Jsou-li k dispozici globální identifikátory, jsou referencovány (odkazovány) tyto globální identifikátory.

Jeden z příkladů výše též ukázal, že může mít smysl udávat též platnost jednotlivých položek číselníků. Jindy může být vhodné uvést platnost celého číselníku, která se pak vztahuje na všechny položky. Nebo může být potřebné uvést kombinaci, tj. platnost celého číselníku a platnost některých položek ještě dále upravit. Platnost číselníku nebo položky číselníku uvádí, v jakém časovém období byl, je nebo bude číselník nebo položka číselníku používán.

Platnost číselníku a položek Je-li to možné a vhodné, uvádíme platnost číselníku, příp. jendotlivých položek, ve strukturované podobě.