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/10/09 14:39] – [Metadata Vocabulary for Tabular Data (CSV on the Web, CSVW)] Jakub Klímekstandardy:technicke-standardy-pro-vytvareni-datovych-schemat-na-stupni-3 [2021/11/23 07:43] (aktuální) – [Technické standardy vytváření datových schémat pro datové sady na stupni otevřenosti 3] Jakub Klímek
Řá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:cele-cislo|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 77: Řádek 75:
       * 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/csvw+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]].
 +
 +=== Sdílené schéma pro více CSV souborů ===
 Deskriptor CSV souboru lze oddělit od schématu, pokud schéma chceme použít pro více CSV souborů. Deskriptor CSV souboru lze oddělit od schématu, pokud schéma chceme použít pro více CSV souborů.
 Pak budeme mít JSON soubor ''schema.json'' se schématem samotným: Pak budeme mít JSON soubor ''schema.json'' se schématem samotným:
Řádek 115: Řádek 116:
 } }
 </code> </code>
-==== JSON Table Schema ==== 
  
-===== Definice vlastního schématu pro data v XML =====+=== 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.
 +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://data.mvcr.gov.cz/soubory/czechpoint/2007.json''.
 +
 +<WRAP center round important 60%>
 +Webové rozhraní [[https://csvlint.io/|csvlint]] doporučení CSV on the Web neumí!
 +</WRAP>
 +
 +
 +
 +===== Definice vlastního schématu pro data v XML =====
 +Pro popis XML schématu se používá jazyk XML Schema.
 +
 +Prvním krokem k tvorbě schematu pro XML data je určení toho, jak se budou jmenovat a jak budou zanořeny jednotlivé elementy v XML 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:
 +  - Podívejte se na [[vzor:start|již existující standardy]] pro datové sady.
 +      - Pokud se některá datová sada shoduje s daty, které 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 XML elementy s datovými typy z existujícího XML schématu.
 +  - Dosud nepokryté elementy, tj. ty, jejichž význam neodpovídá žádnému datovému typu v žádné existující datové sadě ze vzorových publikačních plánů, pojmenujte dle stejných jmenných konvencí. Tj.
 +      - vytvořte si vlastní XML namespace
 +      - názvy elementů či atributů v češtině
 +      - všechna písmena malá (lower case)
 +      - žádná diakritika
 +      - víceslovné názvy spojené podtržítkem ''_''
 +      - hierarchickou vazbu reprezentujte vnořeným XML elementem
 +  - Pro nově definované elementy použijte vhodný datový typ jazyka XML Schema.
  • standardy/technicke-standardy-pro-vytvareni-datovych-schemat-na-stupni-3.1507552787.txt.gz
  • Poslední úprava: 2020/06/03 09:36
  • (upraveno mimo DokuWiki)