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 [2017/12/01 16:14]
Jakub Klímek
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 83: Řádek 81:
   * Pro datové typy v položce ''datatype'' lze použít [[https://www.w3.org/TR/tabular-metadata/#datatypes|hodnoty založené na datových typech XML Schema]].   * Pro datové typy v položce ''datatype'' lze použít [[https://www.w3.org/TR/tabular-metadata/#datatypes|hodnoty založené na datových typech XML Schema]].
  
-Vystavený JSON deskriptor dle CSVW by pak měl být poskytován s HTTP hlavičkou ''Content-Type: application/csvm+json; charset=utf-8''.+Vystavený JSON deskriptor dle CSVW by pak měl být poskytován s HTTP hlavičkou ''Content-Type: application/csvm+json; charset=utf-8'' a pojmenován podle popisovaného souboru, tedy pro ''xxx.csv'' to bude ''xxx.csv-metadata.json''.
  
 Toto je jen minimalistický příklad toho, co lze popsat pomocí CSVW. Pro využití všech možností je třeba postupovat dle [[https://www.w3.org/TR/tabular-metadata/|specifikace]]. Toto je jen minimalistický příklad toho, co lze popsat pomocí CSVW. Pro využití všech možností je třeba postupovat dle [[https://www.w3.org/TR/tabular-metadata/|specifikace]].
Řádek 120: Řádek 118:
  
 === Validace CSVW === === Validace CSVW ===
-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, í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 nejjednodušeji validovat nástrojem [[https://csvw.opendata.cz|csvw-validator]]
 +Ten má jednak sdílené webové rozhranía také lze spustit íkazové řádky nebo použít jako webovou službu.
  
-==== Table Schema ==== +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 soubora v případě nedodržení doporučeného pojmenování JSON deskriptoru i na tento deskriptor
-Použití Table Schema si opět ilustrujeme na zjednodušeném příkladu pro následující dvousloupcové CSV+Tedy ''rdf validate xxx.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:+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''.
  
-<code json+<WRAP center round important 60%
-+Webové rozhraní [[https://csvlint.io/|csvlint]] doporučení CSV on the Web neumí! 
-    "fields": [+</WRAP>
-      "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.1512141257.txt.gz
  • Poslední úprava: 2020/06/03 09:36
  • (upraveno mimo DokuWiki)