draft:číselníky

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
draft:číselníky [2019/09/17 09:40]
Jakub Klímek odstraněno
— (aktuální)
Řádek 1: Řádek 1:
-====== Jak na číselníky ====== 
-Číselníkem je seznam nějak souvisejících položek. 
-Číselníky se mohou používat například jako seznam možných hodnot pro různé vlastnosti datových entit, což lze využít pro formuláře pro zadávání dat, aplikace vizualizující data apod. 
-Ukázkou číselníku může být například [[https://data.cssz.cz/web/otevrena-data/-/ciselnik-duvodu-k-ukonceni-pracovni-neschopnosti|Číselník důvodů k ukončení pracovní neschopnosti]] [[http://www.cssz.cz|České správy sociálního zabezpečení]], který obsahuje například následující položky: 
  
-  * aptus (norm. ukončení nemoci) 
-  * důchod starobní 
-  * mateřská dovolená 
-  * nástup do lázní 
-  * exitus 
- 
-Použití tohoto seznamu si lze představit třeba v personálním systému nějaké organizace, kde se evidují pracovní neschopnosti zaměstnanců. 
- 
-Tato podoba, tedy textový seznam, není příliš vhodná pro strojově čitelnou reprezentaci. 
- 
-===== Identifikace položek ===== 
- 
-Největším problémem je totiž to, že jednotlivé položky jsou identifikovatelné pouze svým názvem. 
-Záznamy, které by tyto položky využívaly, by jejich název okopírovaly. 
-Pokud by pak došlo ke změně v názvu položky, rázem by přestaly být validní všechny záznamy tuto položku využívající. 
- 
-Je tedy třeba zavést identifikaci položky nezávisle na jejím názvu. 
-Pro každou položku se tedu zaznamená její kód: 
- 
-^ Kód         ^ Název                         ^ 
-| 0           | aptus (norm. ukončení nemoci) | 
-| 1           | důchod starobní               | 
-| 3           | mateřská dovolená             | 
-| 5           | nástup do lázní               | 
-| E           | exitus                        | 
- 
-Nyní se ostatní systémy mohou odkazovat na kód položky, a jejich záznamy zůstanou validní i když se název položky změní. 
-Identifikace položek tímto způsobem je ale pouze lokální. 
-Aby je ostatní systémy mohly vužítvat, potřebují k tomu vědět, o který číselník kterého poskytovatele dat se jedná, protože číselníků, ve kterých je použit kód ''E'' je na světě jistě mnoho. 
- 
-Je zde tedy jasné potřeba identifikovat položky číselníků lépe, ideálně tak, aby byly identifikovány naprosto jednoznačně. 
-Pro tento účel se používají identifikátory IRI - Internationalized Resource Identifier, které jsou založeny na doménových jménech jednotlivých poskytovatelů dat a zaručují jednoznačnou identifikaci. 
-Číselník s položkami identifikovanými IRI pak může vypadat například takto: 
- 
-^ IRI                                                                                        ^ Kód         ^ Název                         | 
-| https://data.cssz.cz/resource/ciselniky/ciselnik-duvodu-k-ukonceni-pracovni-neschopnosti/0 | 0           | aptus (norm. ukončení nemoci) | 
-| https://data.cssz.cz/resource/ciselniky/ciselnik-duvodu-k-ukonceni-pracovni-neschopnosti/1 | 1           | důchod starobní               | 
-| https://data.cssz.cz/resource/ciselniky/ciselnik-duvodu-k-ukonceni-pracovni-neschopnosti/3 | 3           | mateřská dovolená             | 
-| https://data.cssz.cz/resource/ciselniky/ciselnik-duvodu-k-ukonceni-pracovni-neschopnosti/5 | 5           | nástup do lázní               | 
-| https://data.cssz.cz/resource/ciselniky/ciselnik-duvodu-k-ukonceni-pracovni-neschopnosti/E | E           | exitus                        | 
- 
-Nyní je každá položka globálně jednoznačně identifikována svým IRI, a to napříč systémy, které tyto položky využívají. 
- 
-===== Další vlastnosti položek ===== 
- 
-Některé položky mohou mít kratší název, například pro zobrazení ve formuláři, a delší popis, který detailně vysvětluje význam dané položky, například: 
- 
-^   IRI   ^ Kód     ^ Název                     ^ Popis                        ^ 
-| https://data.cssz.cz/resource/ciselniky/ciselnik-duvodu-k-ukonceni-pracovni-neschopnosti/0 | 0           | aptus                         | Aptus - Normální ukončení nemoci | 
- 
-Dále je čím dál častější reprezentovat vícejazyčné položky číselníků, tedy název a popis položky jak česky, tak třeba anglicky: 
- 
-^ IRI     ^ Kód    ^ Název česky                 ^ Název anglicky                        ^ Popis česky                     ^ Popis anglicky                        ^ 
-| https://data.cssz.cz/resource/ciselniky/ciselnik-duvodu-k-ukonceni-pracovni-neschopnosti/1 | 1           | důchod starobní   | old-age pension      | starobní důchod dle § 29 odst. 1 a 3 písm. a), § 74, § 76 a § 94 z. č. 155/1995 Sb. nebo příslušných ustanovení předcházejících předpisů, zahrnut i důchod SIN dle § 29 odst. 4 téhož zákona | Old-age pension in accordance with Section 29(1) and (3)(a) and Sections 74, 76 and 94 of Act No. 155/1995 Coll. or relevant provisions of previous regulations, including pension SIN in accordance with Section 29(4)of the same Act | 
- 
-===== SKOS - standard pro číselníky ===== 
- 
-Zde začíná být patrný další problém, a to jak číselníky reprezentovat tak, aby každý uživatel poznal, co je kód, co je název a v jakém je jazyce. 
-I za předpokladu tabulkové reprezentace je variant totiž příliš mnoho, a každý poskytovatel dat si zajisté vybere jinou. 
-Zpravidla se jedná o ruční práci, jelikož se číselník od číselníku liší: 
-  * Názvy sloupců 
-      * Diakritika 
-      * Mezery a bílé znaky 
-      * Speciální znaky 
-  * Pořadí sloupců 
-  * Kódování souboru 
-  * Formáty čísel 
-  * Formáty datumů 
-  * apod. 
- 
-Je tedy opět potřeba standardizovat podobu samotných číselníků, nejen identifikaci jejich položek. 
-Pro publikaci číselníků na Webu se používá W3C doporučení [[https://www.w3.org/TR/skos-reference/|SKOS - Simple Knowledge Organization System]], jehož použití všechny výše uvedené problémy řeší. 
-Jako datový formát používá W3C doporučení RDF - Resource Description Framework, které má vestavěnou podpouru pro jednoznačnou identifikaci entit, jejich vlastností i přirozených jazyků, ve kterých jsou psány názvy a popisy. 
-Položka číselníku popsaná pomocí doporučení SKOS pak vypadá takto: 
- 
-<code turtle> 
-@prefix skos: <http://www.w3.org/2004/02/skos/core#> . 
- 
-<https://data.cssz.cz/resource/ciselniky/ciselnik-duvodu-k-ukonceni-pracovni-neschopnosti/1> a skos:Concept ; 
-    skos:prefLabel "důchod starobní"@cs, "old-age pension"@en ; 
-    skos:notation "1" ; 
-    skos:inScheme <https://data.cssz.cz/resource/ciselniky/ciselnik-duvodu-k-ukonceni-pracovni-neschopnosti/ConceptScheme> ; 
-    skos:note "starobní důchod dle § 29 odst. 1 a 3 písm. a), § 74, § 76 a § 94 z. č. 155/1995 Sb. nebo příslušných ustanovení předcházejících předpisů, zahrnut i důchod SIN dle § 29 odst. 4 téhož zákona"@cs, 
-              "Old-age pension in accordance with Section 29(1) and (3)(a) and Sections 74, 76 and 94 of Act No. 155/1995 Coll. or relevant provisions of previous regulations, including pension SIN in accordance with Section 29(4)of the same Act"@en . 
-</code> 
- 
-Vlastnost ''http://www.w3.org/2004/02/skos/core#inScheme'' přiřazuje danou položku do daného číselníku, který je zde identifikován jako ''https://data.cssz.cz/resource/ciselniky/ciselnik-duvodu-k-ukonceni-pracovni-neschopnosti/ConceptScheme''. 
- 
-Reprezentace číselníků v RDF dle SKOS má ještě další výhodu. 
-Při správné implementaci při přístupu k URI položky či číselníku, tj. jeho použití jako URL - Uniform Resource Locator, dostane zájemce, ať už člověk či aplikace, přímo reprezentaci této položky, což je v případě jiných reprezentací nemyslitelné. 
- 
-==== Položka číselníku dle SKOS ==== 
-V doporučení SKOS se položce číselníku říká Koncept - ''skos:Concept'' a číselníku samotnému Schéma konceptů - ''skos:ConceptScheme''. 
- 
- 
-==== Postup pro reprezentaci číselníku pomocí SKOS ==== 
-  - Zvolte vzorec, dle kterého budete přidělovat IRI číselníkům a jejich položkám (viz. Konvence propojených dat) 
-  - Ze zdrojového systému převeďte číselníky do RDF reprezentace dle doporučení SKOS 
-  - Volitelně poskytněte reprezentaci v některých nižších formátech - CSV, JSON, XML či Excel 
-  - Číselník opatřede metadaty a zaregistrujte v NKOD 
- 
- 
-===== Další příklady číselníků ve SKOS ===== 
- 
-[[https://publications.europa.eu/cs/web/eu-vocabularies/authority-tables|Standardizované číselníky dle doporučení SKOS]] publikuje také [[https://publications.europa.eu/cs/web/about-us/who-we-are|Úřad pro publikace Evropské Unie]]. 
- 
-===== Reprezentace v ostatních otevřených formátech ===== 
- 
-Je-li číselník reprezentován pomocí SKOS, lze z něj snadno vytvořit i odvozené, zjednodušené reprezentace, které ovšem budou postrádat výhody popsané výše, a pro které standardy nejsou. 
-Opačným směrem je transformace zpravidla výrazně těžší. 
-Doporučujeme tedy primárně reprezentovat číselníky v RDF dle SKOS. 
- 
-Příklad reprezentace v CSV tabulce: 
- 
-<code csv> 
-kod_polozky,nazev_polozky,popis_polozky 
-0,aptus (norm. ukončení nemoci),normální ukončení nemoci 
-1,důchod starobní,důchod starobní 
-3,mateřská dovolená,mateřská dovolená 
-5,nástup do lázní,nástup do lázní 
-E,exitus,exitus 
-</code> 
- 
-Reprezentace v JSON souboru: 
- 
-<code json> 
-[ 
- { 
-   "kod": "0", 
-   "nazev": "aptus (norm. ukončení nemoci)", 
-   "popis": "normální ukončení nemoci" 
- }, 
- { 
-   "kod": "1", 
-   "nazev": "důchod starobní", 
-   "popis": "důchod starobní" 
- }, 
- { 
-   "kod": "3", 
-   "nazev": "mateřská dovolená", 
-   "popis": "mateřská dovolená" 
- }, 
- { 
-   "kod": "5", 
-   "nazev": "nástup do lázní", 
-   "popis": "nástup do lázní" 
- }, 
- { 
-   "kod": "E", 
-   "nazev": "exitus", 
-   "popis": "exitus" 
- } 
-]</code> 
- 
-Jiná reprezentace v JSON souboru: 
- 
-<code json> 
-{ 
-   "0": { 
-      "nazev": "aptus (norm. ukončení nemoci)", 
-      "popis": "normální ukončení nemoci" 
-   }, 
-   "1": { 
-      "nazev": "důchod starobní", 
-      "popis": "důchod starobní" 
-   }, 
-   "3": { 
-      "nazev": "mateřská dovolená", 
-      "popis": "mateřská dovolená" 
-   }, 
-   "5": { 
-      "nazev": "nástup do lázní", 
-      "popis": "nástup do lázní" 
-   }, 
-   "E": { 
-      "nazev": "exitus", 
-      "popis": "exitus" 
-   } 
-}</code> 
- 
-Reprezentace v XML: 
- 
-<code xml> 
-<?xml version="1.0" encoding="UTF-8"?> 
-<polozky> 
-  <polozka> 
-    <kod>0</kod> 
-    <nazev>aptus (norm. ukončení nemoci)</nazev> 
-    <popis>normální ukončení nemoci</popis> 
-  </polozka> 
-  <polozka> 
-    <kod>1</kod> 
-    <nazev>důchod starobní</nazev> 
-    <popis>důchod starobní</popis> 
-  </polozka> 
-  <polozka> 
-    <kod>3</kod> 
-    <nazev>mateřská dovolená</nazev> 
-    <popis>mateřská dovolená</popis> 
-  </polozka> 
-  <polozka> 
-    <kod>5</kod> 
-    <nazev>nástup do lázní</nazev> 
-    <popis>nástup do lázní</popis> 
-  </polozka> 
-  <polozka> 
-    <kod>E</kod> 
-    <nazev>exitus</nazev> 
-    <popis>exitus</popis> 
-  </polozka> 
-</polozky> 
-</code>