standardy:technicke-standardy-pro-vytvareni-datovych-schemat-na-stupni-3

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
Následující verze
Předchozí verze
standardy:technicke-standardy-pro-vytvareni-datovych-schemat-na-stupni-3 [2018/08/30 11:43]
Jakub Klímek [Table Schema]
standardy:technicke-standardy-pro-vytvareni-datovych-schemat-na-stupni-3 [2021/11/23 07:43] (aktuální)
Jakub Klímek [Technické standardy vytváření datových schémat pro datové sady na stupni otevřenosti 3]
Řádek 5: Řádek 5:
 Jazyk závisí na datovém formátu, který byl zvolen pro vyjádření distribuce. Jazyk závisí na datovém formátu, který byl zvolen pro vyjádření distribuce.
  
-  * V případě formátu CSV je nutno schéma vyjádřit v jazyku Metadata Vocabulary for Tabular Data (https://www.w3.org/TR/tabular-metadata/) či JSON Table Schema (https://specs.frictionlessdata.io/table-schema/). +  * V případě formátu CSV je nutno schéma vyjádřit dle webového standardu CSV on the Web (https://www.w3.org/TR/tabular-metadata/). 
-  * V případě formátu XML je nutno schéma vyjádřit v jazyku XML Schema (http://www.w3.org/XML/Schema). +  * V případě formátu XML je nutno schéma vyjádřit v jazyku XML Schema (https://www.w3.org/XML/Schema). 
-  * V případě formátu JSON je nutno schéma vyjádřit v jazyku JSON Schema (http://json-schema.org/).+  * V případě formátu JSON je nutno schéma vyjádřit v jazyku JSON Schema (https://json-schema.org/a validovat pomocí validátoru, napřhttps://tryjsonschematypes.appspot.com/#validate či https://www.jsonschemavalidator.net/
  
 Při návrhu datových schémat dodržujte následující pravidla: Při návrhu datových schémat dodržujte následující pravidla:
  
-  * Pro primitivní datové typy ([[datovy-typ:řetezec|řetězec]], [[datovy-typ:celé-císlo|celé číslo]], [[datovy-typ:datum|datum]], ...) používejte datové typy jazyka XML Schema (i v případě CSV a JSON souborů).+  * Pro primitivní datové typy používejte datové typy jazyka XML Schema (i v případě CSV a JSON souborů).
   * Schéma každé distribuce musí být volně dostupné ke stažení v síti WWW.   * Schéma každé distribuce musí být volně dostupné ke stažení v síti WWW.
   * Distribuce se stejnou strukturou mají společné schéma.   * Distribuce se stejnou strukturou mají společné schéma.
-  * Pokud je schéma částečně pokryto, tj. některé položky odpovídají významem, některým z již [[vzor:start|existujících standardů]] ve vzorových publikačních plánech, převezměte tyto položky. Nově definujte pouze ty položky, jejichž význam v žádném z existujících standardů pokryt není. 
  
 ===== Definice vlastního schématu pro data v CSV ===== ===== Definice vlastního schématu pro data v CSV =====
 Při práci s formátem CSV se nejprve seznamte s [[špatná-praxe:start#nejčastější_chyby_při_použití_formátu_csv|nejčastějšími chybami při použití formátu CSV]]. Při práci s formátem CSV se nejprve seznamte s [[špatná-praxe:start#nejčastější_chyby_při_použití_formátu_csv|nejčastějšími chybami při použití formátu CSV]].
 +
 +<WRAP center round tip 60%>
 +Pro řadu datových sad formát CSV není vhodný a je lepší je publikovat v některém ze strukturovanějších formátů, viz [[https://ofn.gov.cz|Otevřené formální normy]].
 +</WRAP>
  
 Prvním krokem k tvorbě schematu pro CSV data je určení toho, jak se budou jmenovat jednotlivé sloupce CSV souboru, jaké budou mít datové typy a jaký budou mít význam. Prvním krokem k tvorbě schematu pro CSV data je určení toho, jak se budou jmenovat jednotlivé sloupce CSV souboru, jaké budou mít datové typy a jaký budou mít význam.
 Pro dosažení maximální míry interoperability postupujte v následujících krocích: Pro dosažení maximální míry interoperability postupujte v následujících krocích:
-  - Podívejte se na [[vzor:start|již existující standardy]] pro datové sady. +  - Stanovte si jmenné konvence pro sloupcenapř.
-      - Pokud se některá datová sada shoduje s datykteré chcete publikovat, použijte její předpřipravené schéma. Existující schéma nemusíte daty pokrývat celé, všechny položky jsou volitelné. +
-      - Pokud se žádná existující datová sada neshoduje s daty, které chcete publikovat, vytvořte nové schéma. +
-  - Pokud některá datová sada pokrývá data která chcete publikovat pouze částečně, použijte v novém schématu pro pokryté položky názvy sloupců, datové typy a popisky z existující datové sady. +
-  - Dosud nepokryté sloupce, tj. ty, jejichž význam neodpovídá žádnému sloupci v žádné existující datové sadě ze vzorových publikačních plánů, pojmenujte dle stejných jmenných konvencí. Tj.+
       - název v češtině       - název v češtině
       - všechna písmena malá (lower case)       - všechna písmena malá (lower case)
-      - žádná diakritika 
       - víceslovné názvy spojené podtržítkem ''_''       - víceslovné názvy spojené podtržítkem ''_''
-      - hierarchickou vazbu reprezentujte také podtržítkem ''_'', např. ''pokutovany_ic'', ''pokutovany_nazev'' +      - hierarchickou vazbu reprezentujte také podtržítkem ''_'', např. ''pokutovaný_ič'', ''pokutovaný_název'' 
-  - Pro nově definované sloupce použijte vhodný datový typ jazyka XML Schema.+  - Pro sloupce použijte vhodný datový typ jazyka XML Schema
 +  - Význam sloupců popište slovně.
  
-Jako jazyk pro definici schématu pro data v CSV můžete použít buďto standard [[https://www.w3.org/TR/tabular-metadata/|Metadata Vocabulary for Tabular Data]] z rodiny standardů W3C [[https://www.w3.org/standards/techs/csv#w3c_all|CSV on the Web]] (CSVW), nebo definici [[https://specs.frictionlessdata.io/table-schema/|Table Schema]]+Jako jazyk pro definici schématu pro data v CSV použijte standard [[https://www.w3.org/TR/tabular-metadata/|Metadata Vocabulary for Tabular Data]] z rodiny standardů W3C [[https://www.w3.org/standards/techs/csv#w3c_all|CSV on the Web]] (CSVW). 
-Oba tyto jazyky říkají, jak má být CSV soubor publikovaný na webu popsán pomocí přídavného JSON souboru, který je publikován spolu s CSV souborem, a liší se pouze syntaxí a expresivitou tohoto JSON souboru. +Standard říká, jak má být CSV soubor publikovaný na webu popsán pomocí přídavného JSON-LD souboru, který je publikován spolu s CSV souborem.
-Doporučujeme však použít standard W3C.+
  
 ==== Metadata Vocabulary for Tabular Data (CSV on the Web, CSVW) ==== ==== Metadata Vocabulary for Tabular Data (CSV on the Web, CSVW) ====
Řádek 72: Řádek 70:
 Jednotlivé položky v JSON deskriptoru mají následující význam: Jednotlivé položky v JSON deskriptoru mají následující význam:
  
-  * Položka ''@context'' musí obsahovat minimálně URL ''http://www.w3.org/ns/csvm'', v tomto případě obsahuje ještě specifikaci češtiny jakožto výchozího jazyka textových položek schématu.+  * Položka ''@context'' musí obsahovat minimálně URL ''http://www.w3.org/ns/csvw'', v tomto případě obsahuje ještě specifikaci češtiny jakožto výchozího jazyka textových položek schématu.
   * Položka ''url'' musí obsahovat (relativní či absolutní) URL popisovaného CSV souboru. Každý CSV soubor má tedy vlastní JSON deskriptor.   * Položka ''url'' musí obsahovat (relativní či absolutní) URL popisovaného CSV souboru. Každý CSV soubor má tedy vlastní JSON deskriptor.
   * Položka ''tableSchema'' musí obsahovat buďto URL jiného JSONu se samotným schématem, což je použitelné pro sdílení jednoho schématu více CSV soubory a jejich JSON deskriptory, nebo přímo schéma samotné.   * Položka ''tableSchema'' musí obsahovat buďto URL jiného JSONu se samotným schématem, což je použitelné pro sdílení jednoho schématu více CSV soubory a jejich JSON deskriptory, nebo přímo schéma samotné.
       * Položka ''columns'' obsahuje pole s popisky jednotlivých sloupců       * Položka ''columns'' obsahuje pole s popisky jednotlivých sloupců
       * Položka ''primaryKey'' obsahuje identifikaci primárního klíče v CSV tabulce. To může být buďto jeden sloupec, nebo pole sloupců.       * Položka ''primaryKey'' obsahuje identifikaci primárního klíče v CSV tabulce. To může být buďto jeden sloupec, nebo pole sloupců.
-  * Položka ''name'' specifikuje *identifikátor* sloupce v CSV souboru jakožto objektu. Nejedná se o název sloupce v souboru, ten je popsán dále jako jedna z jeho vlastností.+  * Položka ''name'' specifikuje *identifikátor* sloupce v CSV souboru jakožto objektu. Nejedná se o název sloupce v souboru, ten je popsán dále jako jedna z jeho vlastností. Musí to být validní část URI, případná diakritika zde tak musí být zakódovaná pomocí procentového kódování.
   * Položka ''titles'' obsahuje jeden či více (jako pole) názvů sloupců v CSV. Lze tedy použít jedno schéma pro více CSV souborů, které mají dokonce různé názvy sloupců, případně v hlavičce používají různé jazyky.   * Položka ''titles'' obsahuje jeden či více (jako pole) názvů sloupců v CSV. Lze tedy použít jedno schéma pro více CSV souborů, které mají dokonce různé názvy sloupců, případně v hlavičce používají různé jazyky.
   * Položka ''dc:description'' obsahuje textový popis významu sloupce.   * Položka ''dc:description'' obsahuje textový popis významu sloupce.
Řádek 120: Řádek 118:
  
 === Validace CSVW === === Validace CSVW ===
 +CSV popsané pomocí CSVW lze nejjednodušeji validovat nástrojem [[https://csvw.opendata.cz|csvw-validator]].
 +Ten má jednak sdílené webové rozhraní, a také lze spustit z příkazové řádky nebo použít jako webovou službu.
 +
 CSV popsané pomocí CSVW lze validovat například pomocí nástroje [[https://github.com/ruby-rdf/rdf-tabular|rdf-tabular]], který stačí nasměrovat na CSV soubor, a v případě nedodržení doporučeného pojmenování JSON deskriptoru i na tento deskriptor. CSV popsané pomocí CSVW lze validovat například pomocí nástroje [[https://github.com/ruby-rdf/rdf-tabular|rdf-tabular]], který stačí nasměrovat na CSV soubor, a v případě nedodržení doporučeného pojmenování JSON deskriptoru i na tento deskriptor.
 Tedy ''rdf validate xxx.csv'' Tedy ''rdf validate xxx.csv''
  
-CSV popsané pomocí CSVW lze validovat například pomocí knihovny [[https://github.com/theodi/csvlint.rb|csvlint.rb]], kterou stačí spustit a nasměrovat na JSON deskriptor, který pak ukazuje na CSV data, případně schéma. Tedy ''csvlint -s schema.json'' pro lokální schéma v souboru v souborovém systému, nebo s plným URL deskriptoru, např. ''csvlint -s https://mvcr1.opendata.cz/czechpoint/2007.json''.+CSV popsané pomocí CSVW lze validovat například pomocí knihovny [[https://github.com/theodi/csvlint.rb|csvlint.rb]], kterou stačí spustit a nasměrovat na JSON deskriptor, který pak ukazuje na CSV data, případně schéma. Tedy ''csvlint -s schema.json'' pro lokální schéma v souboru v souborovém systému, nebo s plným URL deskriptoru, např. ''csvlint -s https://data.mvcr.gov.cz/soubory/czechpoint/2007.json''.
  
-==== Table Schema ==== +<WRAP center round important 60%> 
-Table Schema je starší jazyk pro strukturovaný popis CSV souborů. +Webové rozhraní [[https://csvlint.io/|csvlint]] doporučení CSV on the Web neumí! 
-Doporučujeme spíše použít CSV on the Web popsaný výše. +</WRAP>
- +
-Použití Table Schema si opět ilustrujeme na zjednodušeném příkladu pro následující dvousloupcové CSV: +
-<code csv> +
-"idhod","hodnota" +
-"747627675","14.91" +
-"747628556","14.96" +
-</code> +
- +
-Jednoduchý Table Schema deskriptor (JSON soubor) pro tento CSV soubor může vypadat například takto: +
- +
-<code json> +
-+
-    "fields": [{ +
-      "name": "idhod", +
-      "description":"unikátní identifikátor údaje Veřejné databáze ČSÚ", +
-      "required": true, +
-      "type": "default" +
-    }, { +
-      "name": "hodnota", +
-      "description":"zjištěná hodnota", +
-      "required": true, +
-      "type": "number" +
-    } +
-    ], +
-    "primaryKey": "idhod" +
-} +
-</code>+
  
-Jednotlivé položky mají stejný význam jako u schématu dle CSVW. Rozídly jsou následující: 
-  * Pole se sloupci se místo ''columns'' jmenuje ''fields'' 
-  * Místo ''datatype'' je ''type'' 
-  * Místo ''dc:description'' je ''description'' 
-  * Chybí povinný ''@context'' 
  
-=== Validace === 
-Pro validaci lze použít online nástroj [[http://csvlint.io/|csvlint.io]]. 
-Také lze použít knihovnu [[https://github.com/theodi/csvlint.rb|csvlint.rb]]. 
-Jelikož ze schématu nevede link na samotná data, je třeba obojí poskytnout jako parametr, např. ''csvlint data.csv -s schema.json'' 
  
 ===== Definice vlastního schématu pro data v XML ===== ===== Definice vlastního schématu pro data v XML =====
  • standardy/technicke-standardy-pro-vytvareni-datovych-schemat-na-stupni-3.1535622209.txt.gz
  • Poslední úprava: 2020/06/03 09:36
  • (upraveno mimo DokuWiki)