Tento dokument je sdílenou specifikací pro základní datové typy pro použití v otevřených formálních normách ve smyslu § 3a odst. 3 zákona č. 106/1999 Sb., o svobodném přístupu k informacím. Specifikace je ilustrována příklady dat ve formátech JSON-LD [[json-ld11]] a tedy i JSON [[ECMA-404]], XML [[xml]], CSV [[rfc4180]] a RDF Turtle [[turtle]].
Základní datové typy dělíme na jednoduché, které již dále nejsou strukturovány, a složené, které se dělí na více položek.
Jednoduché datové typy se už dále nedělí na jednotlivé položky. Pokud jsou strukturované, je jejich struktura určena již pouze syntaxí použitého datového typu.
Booleovská hodnota se hodí pro reprezentaci vlastností, které mohou mít pouze dvě hodnoty - Ano či ne.
Ve všech cílových otevřených formátech, tj. JSON-LD [[!json-ld11]] a tedy i JSON [[!ECMA-404]], XML [[!xml]], CSV [[!rfc4180]] a RDF Turlte [[!turtle]] se pro reprezentaci booleovské hodnoty používá typ xsd:boolean
z jazyka XML Schema [[!xmlschema11-2-20120405]].
Hodnota true
vyjadřuje Ano, false
vyjadřuje Ne.
Nepoužívejte hodnoty jako Ano
, 1
, yes
a podobně.
Znesnadňujete tím použití dat.
Pro reprezentaci datumu se ve všech cílových otevřených formátech, tj. JSON-LD [[!json-ld11]] a tedy i JSON [[!ECMA-404]], XML [[!xml]], CSV [[!rfc4180]] a RDF Turlte [[!turtle]] používá typ xsd:date
z jazyka XML Schema [[!xmlschema11-2-20120405]].
Tento datový typ umožňuje i explicitně zaznamenat časovou zónu.
To se hodí například pro data, u kterých se dá předpokládat využití v jiné časové zóně.
Nepoužívejte hodnoty v jiných tvarech jako třeba 1. ledna 2019
, 01-01-2019
a podobně.
Znesnadňujete tím použití dat.
Pro reprezentaci času se ve všech cílových otevřených formátech, tj. JSON-LD [[!json-ld11]] a tedy i JSON [[!ECMA-404]], XML [[!xml]], CSV [[!rfc4180]] a RDF Turlte [[!turtle]] používá typ xsd:time
z jazyka XML Schema [[!xmlschema11-2-20120405]].
Tento datový typ umožňuje i explicitně zaznamenat časovou zónu.
To se hodí například pro časy, u kterých se dá předpokládat využití v jiné časové zóně.
Nepoužívejte hodnoty v jiných tvarech jako třeba 09:30
, 9:30
a podobně.
Znesnadňujete tím použití dat.
Pro reprezentaci data a času jakožto jedné hodnoty se ve všech cílových otevřených formátech, tj. JSON-LD [[!json-ld11]] a tedy i JSON [[!ECMA-404]], XML [[!xml]], CSV [[!rfc4180]] a RDF Turlte [[!turtle]] používá typ xsd:dateTimeStamp
z jazyka XML Schema [[!xmlschema11-2-20120405]].
Tento datový typ vyžaduje explicitně zaznamenat časovou zónu.
Syntakticky se jedná se o spojení datových typů Datum a Čas pomocí znaku T
.
Nepoužívejte hodnoty v jiných tvarech jako třeba 2019-01-01 09:30
(chybný oddělovač, neúplný čas), 1. ledna 2019 v 9:30
a podobně.
Znesnadňujete tím použití dat.
Pro reprezentaci celých čísel se ve všech cílových otevřených formátech, tj. JSON-LD [[!json-ld11]] a tedy i JSON [[!ECMA-404]], XML [[!xml]], CSV [[!rfc4180]] a RDF Turlte [[!turtle]] používá typ xsd:integer
z jazyka XML Schema [[!xmlschema11-2-20120405]].
Nepoužívejte hodnoty v jiných tvarech jako třeba 4 815
(s oddělovačem) a podobně.
Znesnadňujete tím použití dat.
Pro reprezentaci desetinných čísel se ve všech cílových otevřených formátech, tj. JSON-LD [[!json-ld11]] a tedy i JSON [[!ECMA-404]], XML [[!xml]], CSV [[!rfc4180]] a RDF Turlte [[!turtle]] používá typ xsd:double
z jazyka XML Schema [[!xmlschema11-2-20120405]].
Oddělovačem desetinných míst je .
- tečka.
Nepoužívejte hodnoty v jiných tvarech jako třeba 4,24
(chybný oddělovač desetinných míst) a podobně.
Znesnadňujete tím použití dat.
Pro reprezentaci webových identifikátorů a odkazů URI, IRI a URL se ve všech cílových otevřených formátech, tj. JSON-LD [[!json-ld11]] a tedy i JSON [[!ECMA-404]], XML [[!xml]], CSV [[!rfc4180]] a RDF Turlte [[!turtle]] používá typ xsd:anyURI
z jazyka XML Schema [[!xmlschema11-2-20120405]].
URI, IRI ani URL nesmí obsahovat nezakódované mezery.
Pro reprezentaci kódů a jiných jednoduchých hodnot, kterým neodpovídá žádný existující datový typ z jazyka XML Schema [[!xmlschema11-2-20120405]], se použije xsd:string
v kódování UTF-8.
U všech formátů je třeba dodržovat pravidla pro nahrazování speciálních znaků, které se v textech mohou vyskytovat.
Pokud se ale jedná o text v přirozeném jazyce, jako je název, popis apod., je třeba využít datový typ text v přirozeném jazyce.
Pro texty v přirozeném jazyce je třeba specifikovat, v jakém jazyce jsou. Tato informace se pak dá využít ve vícejazyčných aplikacích či automatických překladačích.
Ve formátu JSON je třeba dodržet schéma pro vícejazyčné texty. Pokud může být textových hodnot v daném jazyce více, je třeba dodržet schéma pro více vícejazyčných textů.
Formáty XML a RDF umožňují přímo v datech specifikovat, ve kterém jazyce text je.
U formátu CSV je toto možno specifikovat pro každý sloupec ve schématu souboru, a také promítnout v názvu sloupce.
Složené datové typy se dále dělí na položky, které je pro úplné určení hodnoty třeba uvést.
Pro reprezentaci množství je třeba vždy uvést dvě položky - hodnotu a jednotku množství.
hodnota
12400.21
Pro specifikaci jednotky množství je třeba použít číselník UN/CEFACT Common Codes.
jednotka
KGM
gr:QuantitativeValue
ze slovníku GoodRelations.
Množství bez určení jednotky jsou těžko interpretovatelná. Při určování jednotky je třeba dodržet kódy z číselníku UN/CEFACT Common Codes, jinak se zesložiťuje použití dat.
Pro reprezentaci peněžních částek je třeba vždy uvést výši částky a měnu částky. Pokud se jedná o jednotkovou částku, pak se také uvede jednotka.
výše
12400.21
Pro určení měny je třeba použít IRI z evropského číselníku měn z EU Vocabularies.
měna
http://publications.europa.eu/resource/authority/currency/CZK
Pro specifikaci jednotky množství je třeba použít číselník UN/CEFACT Common Codes.
jednotka
KGM
gr:PriceSpecification
ze slovníku GoodRelations.
Jelikož je již starší, tak jako specifikaci měny používá její kód formou řetězce.
Ten lze do dat přidat pro zpětnou kompatibilitu, ale potřeba je zejména uvést měnu ve formě IRI z příslušného evropského číselníku.
Částky bez určení měny jsou těžko interpretovatelné. Při určování měny je třeba dodržet kódy z evropského číselníku, jinak se zesložiťuje použití dat.
Pro reprezentaci časových okamžiků lze použít datum, kombinaci data a času a nebo říci, že je časový okamžik nespecifikován. Pokud je jasné, který datový typ je v daném místě vhodný, použije se konkrétní datový typ, tedy datum či datum a čas. Často ale při tvorbě OFN není předem známo, jaká úroveň detailu bude pro určení okamžiku k dispozici. Aby se zabránilo různým reprezentacím této situace v různých OFN, je specifikována třída Časový okamžik.
datum
2019-01-01+01:00
datum_a_čas
2019-01-01T09:30:00+02:00
nespecifikovaný
3333-03-03
či 9999-09-09
apod. nebo hodnotu vynechat.
true
Pokud je časový okamžik vždy určen datem a časem, pak je třeba použít vlastnosti s datovým typem Datum a čas, nikoliv dvojici vlastností kde je datum a čas odděleně.
Pro reprezentaci časových intervalů je potřeba buď uvést jejich začátek a konec, a nebo pouze jeden údaj, pokud ten druhý není znám, ale je známo, že se jedná o interval. Časový interval začíná a končí časovým okamžikem.
začátek
konec