Duomenų tipai#

type.absent#

Nebepalaikoma nuo 0.2 versijos: Šis tipas buvo naudojamas migracijoms ir versijavimui, tačiau nuo 0.2 versijos, versijavimo struktūros aprašuose atsisakyta.

Žymi savybę, kuri buvo ištrinta ir nebenaudojama.

Taip pat žiūrėkite

migrate

type.boolean#

Loginė reikšmė, pateikiama skaitine forma:

0

Neigiama reikšmė (false).

1

Teigiama reikšmė (true).

type.integer#

Sveikas skaičius.

property.ref stulpelyje, nurodomi Matavimo vienetai.

type.number#

Realusis skaičius, apvalinamas naudojant slankiojo kablelio aritmetiką.

property.ref stulpelyje, nurodomi Matavimo vienetai.

Sveikoji dalis atskiriama . simbolių.

type.binary#

Dvejetainiai duomenys. Bendras baitų skaičius turi būti ne didesnis nei 1G.

Jei reikšmė yra didesnė nei 1G reikųtu naudoti type.file.

type.string#

Simbolių eilutė. Neriboto dydžio, tačiau fiziškai simbolių eilutė turėtu būti ne didesnė, nei 1G.

Simboliu eilutė turėtu būti pateikta UTF-8 koduote.

Šiuo tipu žymimi duomenų laukai, kuriuose tekstas pateiktas ne žmonių kalba. Tai gali būti įvairūs kategoriniai duomenys, identifikatoriai ar kito pobūdžio simbolių eilutės, kurios nėra užrašytos natūraliąja žmonių kalba.

Jei property pavadinimas turi kalbos žymę @, tada string tipas tampa text tipo dalimi. Kablos kodas nurodomas naudojant ISO 639-1 kodų sąrašą.

Jei tekstas turi kalbos žyme, property.ref galima pateikti teksto formatą, nadojant vieną iš šių formatų:

html

tekstas pateiktas HTML formatu.

md

tekstas pateiktas Markdown formatu.

rst

tekstas pateitkas reStructuredText formatu.

tei

tekstas pateiktas TEI formatu.

Pavyzdys

d

r

b

m

property

type

ref

example

Country

name@lt

string

description@lt

string

html

description@en

string

html

Šiame pavyzdyje @lt nurodo, kad šalies pavadinimai ir aprašymai pateikti Lietuvių kalba, tačiau laukas description papildomai turi vertimą į anglų kalbą. Papildomai, šalies aprašymo teksto formatas yra HTML tipo.

type.text#

Natūraliaja žmonių kalba užrašytas tekstas, susidedantis iš vieno ar kelių string tipo duomenų laukų, pateikiant atskirą duomenų lauką, kiekvienai kalbai.

Dažniausiai tiesiogiai text tipas nenaudojamas, kadangi jei string tipas turi kalbos žymę, tai duomenų laukas yra interpretuojamas kaip text tipo.

Pavyzdžiui jei property pavadinimas yra title@lt, tada title duomenų laukas yra text tipo.

Atskirai text tipo duomenų laukas gali būti nurodomas tais atvejais, kai reikia pateikti aprašymą ir URI pačiam text tipo laukui, o ne vienam iš vertimų.

Pavyzdys

dataset

model

property

type

ref

uri

title

example

prefix

rdfs

http://www.w3.org/ 2000/01/rdf-schema#

Country

name@lt

name

text

rdfs:label

Pavadinimas

name@lt

string

type.datetime#

Data ir laikas atitinkantis ISO 8601.

Mažiausia galima reikšmė: 0001-01-01T00:00:00.

Didžiausia galima reikšmė: 9999-12-31T23:59:59.999999.

Pagal ISO 8601 standartą, data gali būti pateikta tokia forma:

YYYY-MM-DD[*HH[:MM[:SS[.fff[fff]]]][+HH:MM[:SS[.ffffff]]]]

Simbolis * reiškia, kad galima pateikti bet kokį vieną simbolį, dažniausiai naudojamas tarpo simbolis, arba raidė T.

property.ref stulpelyje, nurodomas datos ir laiko tikslumas sekundėmis. Tikslumą galima nurodyti laiko vienetais, pavyzdžiui Y, D, S, arba 5Y, 10D, 30S. Visi duomenys turi atitikti vienodą tikslumą, tikslumas negali varijuoti. Galimi vienetų variantai:

Reikšmė

Prasmė

Y

Metai

M

Mėnesiai

Q

Metų ketvirčiai

W

Savaitės

D

Dienos

H

Valandos

T

Minutės

S

Sekundės

L

Milisekundės

U

Mikrosekundės

N

Nanosekundės

type.date#

Tas pats kas datetime tik dienos tikslumu. Šio tipo reikšmės taip pat turi atitikti ISO 8601:

YYYY-MM-DD

property.ref stulpeyje nurodomas datos tikslumas:

Reikšmė

Prasmė

Y

Metai

M

Mėnesiai

Q

Metų ketvirčiai

W

Savaitės

D

Dienos

Jei duomenys pateikti žemesniu nei dienos tikslumu, tada datos rekšmės turi būti nurodytos YYYY-MM-DD formatu, pakeičiant MM ir arba DD~ į `01.

Pavyzdys

Turint tokį struktūros aprašą:

model

property

type

ref

Country

id

id

integer

independence

date

Y

Nors independence duomenų lauko tiksluas yra metų, tačiau pateikiant duomenis būtina nurodyti mėnesį ir dieną taip pat:

{
    "id": 1,
    "independence": "1990-01-01",
}

Šiuo atveju, kadangi datos tiksluas yra metai, -01-01 dalis datoje neturi jokios reikšmės ir yra pateikiama tik tam, kad reikšmė atitiktu ISO 8601 reikalavimus.

type.time#

Dienos laikas, be konkrečios datos. Šio tipo reikšmės, kaip ir kiti su laiku susiję tipai turi atitikti ISO 8601:

HH[:MM[:SS[.fff[fff]]]][+HH:MM[:SS[.ffffff]]]

Jei norima nurodyti žemesnio nei sekundžių tikslumo laiką, tada vietoj minučių ir/ar sekundžių galima naudoti 00 ir property.ref stulpelyje nurodyti tikslumą:

Reikšmė

Prasmė

H

Valandos

T

Minutės

S

Sekundės

L

Milisekundės

U

Mikrosekundės

N

Nanosekundės

type.temporal

Nebepalaikoma nuo 0.2 versijos.

Apibrėžtis laike.

Šis tipas atitinka datetime, tačiau nurodo, kad visas model yra apibrėžtas laike, būtent pagal šią savybę. Tik viena model savybė gali turėti temporal tipą. Pagal šios savybės reikšmes apskaičiuojamas ir įvertinamas dct:temporal.

type.geometry#

Erdviniai duomenys. Duomenys pateikiami WKT formatu, naudojant EPSG duomenų bazės parametrus, skirtingoms projekcijoms išreikšti.

property.ref stulpelyje nurodomas tikslumas metrais. Tikslumą galima pateikti naudojanti SI vienetus, pavyzdžiui m, km arba 10m, 100km.

geometry tipas gali turėti du argumentus geometry(form, crs):

  • form - geometrijos forma

  • crs - koordinačių sistema

Pats tipas gali būti pateiktas vienu iš šių variantų:

  • geometry(form, crs) - nurodant formą ir koordinačių sistemą

  • geometry(crs) - nurodant tik koordinačių sistemą

  • geometry(form) - nurodant tik formą

  • geometry - be argumentų.

Geometrijos forma (form)

Galimi tokie geometrijos tipai:

  • point - taškas.

  • linestring - linija.

  • polygon - daugiakampis (pradžios ir pabaigos taškai turi sutapti).

  • multipoint - keli taškai.

  • multilinestring - kelios linijos.

  • multipolygon - keli daugiakampiai (kiekvieno daugiakampio pradžios ir pabaigos taškai turi sutapti).

Kiekviena iš formų gali turėti tokias galūnes nurodančias papildomą dimensiją:

  • z - aukštis.

  • m - pasirinktas matmuo (pavyzdžiui laikas, atstumas, storis ir pan.)

  • zm - aukštis ir pasirinktas matmuo.

Jei geometrijos forma nenurodyta, tada duomenys gali būti bet kokios geometrinės formos. Jei forma nurodyta, tada visi duomenys turi būti tik tokios formos, kokia nurodyta.

Koordinačių sistema (crs)

Antrasis geometry argumentas nurodomas pateikiant SRID numerį, kuris yra konkrečios koordinačių sistemos identifikacinis numeris EPSG duomenų bazėje. Jei koordinačių sistemos numeris nenurodytas, tuomet daroma prielaida, kad erdviniai duomenys atitinka 4326 (WGS84_) koordinačių sistemą.

Svarbu, kad pateikiant duomenis, koordinačių ašių eiliškumas atitiktų tokį eiliškumą, kuris nurodytas EPSG parametrų duomenų bazėje, konkrečiai koordinačių sistemai, kuria pateikiami duomenys.

Svarbu, kad pateikiant duomenis, koordinačių ašių eiliškumas atitiktų tokį eiliškumą, kuris nurodytas EPSG parametrų duomenų bazėje, konkrečiai koordinačių sistemai, kuria pateikiami duomenys.

Pavyzdys

  1. pateikiant duomenis LKS 94 (SRID:3346) ir WGS84 (SRID:4326) koordinačių sistemose į ADP Saugyklą turi būti laikomasi eiliškumo: pirmiausia pateikiama X (į šiaurę/platumos/latitude), o po to Y (į rytus/ilgumos/longitute) reikšmės;

  2. tačiau pateikiant duomenis WGS84/Pseudo-Merkator (SRID:3857) koordinačių sistemoje jau atvirkščiai – pirmiausia pateikiama rytų ilgumos, o po to šiaurės platumos reikšmės.

Pilną SRID kodų sąrašą galite rasti epsg.io svetainėje. Keletas dažniau naudojamų SRID kodų:

SRID

CRS

Pavyzdys

ašys

orientacija

4326

WGS84

POINT(54.6981 25.2738)

lat, lon

north, east

3346

LKS94

POINT(6063156 582111)

north, east (x, y)

north, east

3857

WGS84 / Pseudo-Merctor

POINT(2813472 7303494)

lon, lat

east, north

4258

ETRS89

POINT(54.6981 25.2738)

lat, lon

north, east

Pastaba

Atkreipkite dėmesį, kad LKS94 koordinačių sistemoje geometrinės ašys neatitinka įprastinio ašių eiliškumo naudojamo GIS sistemose. LKS94 pirmas skaičius yra apytiksliai 6,000,000 metrų nuo pusiaujo į šiaurę, o antrasis skaičius apytiksliai 500,000 metrų į rytus, skaičiuojant nuo 24º rytų meridiano, atėmus 500km. Teikiant duomenis, taškai turėtu atrodyti taip: 6000000 500000, pirmas ilgesnis, antras trumpesnis.

Ašinio meridiano projekcija yra abscisių (x) ašis. Šios ašies teigiamoji kryptis nukreipta į šiaurę. Ordinačių (y) ašies teigiamoji kryptis nukreipta į rytus.

Išvyniojus cilindrą, gaunamos stačiakampės koordinatės su x šiaurinės abscisės pradžia pusiaujuje ir y rytinės ordinatės reikšme 24°C meridiane 500 000 metrų.

https://www.e-tar.lt/portal/lt/legalAct/TAR.6D575923F94A

Prieš publikuojant duomenis, galite pasitikrinti, ar koordinačių ašys pateikiamos teisinga tvarka, naudotami taško atvaizdavimo įrankį.

Pavyzdžiui, norint patikrinti Vilniaus Katedros varpinės bokšto taško koordinates, LKS94 (EPSG:3346) sistemoje, galite naršyklės adreso juostoje pateikti šį adresą:

https://get.data.gov.lt/_srid/3346/6061789/582964

Jei ašių eiliškumas teisingas, gausite tašką ten kur tikėjotės, jei ašys sukeistos vietomis, tada taškas žemėlapyje gali būti visai kitoje vietoje, nei tikėjotės.

Adreso formatas:

/_srid/{srid}/{ašis1}/{ašis2}
  • {srid} - EPSG duomenų bazėje esančios koordinačių sistemos SRID kodas

  • {ašis1} - pirmosios ašies reikšmė (kryptis priklauso nuo {srid})

  • {ašis2} - antrosios ašies reikšmė (kryptis priklauso nuo {srid})

Pavyzdinės property.type reikšmės

  • geometry - WGS84 projekcijos, bet kokio tipo geometriniai objektai.

  • geometry(3346) - LKS94 projekcijos, bet kokio tipo geometriniai objektai.

  • geometry(point) - GWS84 projekcijos, bet point tipo geometriniai objektai.

  • geometry(linestringm, 3345) - LKS94 projekcijos, linestringm tipo geometriniai objektai su pasirinktu matmeniu, kaip trečia dimensija.

Pavyzdys (duomenys)

Vilniaus Katedros varpinės bokšto taškas, LKS94 (EPSG:3346) koordinačių sistemoje:

{
    "koordinates": "POINT (6061789 582964)"
}
type.spatial

Nebepalaikoma nuo 0.2 versijos.

Apibrėžtis erdvėje.

Šis tipas atitinka geometry, tačiau nurodo, kad visas model yra apibrėžtas erdvėje, būtent pagal šią savybę. Tik viena model savybė gali turėti spatial tipą. Pagal šios savybės reikšmes apskaičiuojamas ir įvertinamas dct:spatial.

type.money#

Valiuta. Saugomas valiutos kiekis, nurodant tiek sumą, tiek valiutos kodą naudojant ISO 4217 kodus.

Valiutos kodas nurodomas property.ref stulpelyje.

Pavyzdys:

d

r

b

m

property

type

ref

source

example

Product

PRODUCT

price

money

EUR

PRICE

Jei valiutos suma ir pavadinimas saugomi atskirai, tuomet valiutą galima aprašyti taip:

d

r

b

m

property

type

ref

source

prepare

example

Product

PRODUCT

amount

PRICE

currency

CURRENCY_CODE

price

money

money(amount, currency)

Šio tipo duomenys pateikiami viena iš šių formų:

123
123.45
123 EUR
123.45 EUR
type.file#

Šis duomenų tipas yra sudėtinis, susidedantis iš tokių duomenų:

id

Laukas, kuris unikaliai identifikuoja failą, šis laukas duomenų saugojimo metu pavirs failo identifikatoriumi, jam suteikiant unikalų UUID.

name

Failo pavadinimas.

type

Failo media tipas.

size

Failo turinio dydis baitais.

content

Failo turinys.

Šiuos metaduomenis galima perduoti file() funkcijai, kaip vardinius argumentus.

Pavyzdys

d

r

b

m

property

type

source

prepare

access

datasets/example

Country

name

string

NAME

open

flag_file_name

string

FLAG_FILE_NAME

private

flag_file_data

binary

FLAG_FILE_DATA

private

flag

file

file(name: flag_file_name, content: flag_file_data)

open

Šiame pavyzdyje, iš flag_file_name ir flag_file_data laukų padaromas vienas flag laukas, kuriame panaudojami duomenys iš dviejų laukų. Šiuo atveju, flag_file_name ir flag_file_data laukai tampa pertekliniais, todėl access stulpelyje jie pažymėti private.

Analogiškai, tokius pačius duomenis galima aprašyti ir nenaudojant formulių:

d

r

b

m

property

type

source

prepare

access

datasets/example

Country

name

string

NAME

open

flag

file

open

flag._name

FLAG_FILE_NAME

open

flag._content

FLAG_FILE_DATA

open

type.image#

Paveiksliukas. image tipas turi tokias pačias savybes kaip file tipas.

type.ref#

Ryšys su modeliu. Šis tipas naudojamas norint pažymėti, kad lauko reikšmė yra property.ref stulpelyje nurodyto modelio objektas.

Pagal nutylėjimą, jungimas su kito modelio objektais daromas per siejamo pirminį raktą (model.ref), tačiau yra galimybė nurodyti ir kitą, nebūtinai pirminį raktą.

Jei jungimas daromas, ne per pirminį raktą, tuomet, laukai per kuriuos daromas jungimas nurodomi property.ref stulpelyje laužtiniuose sklaustuose, pavyzdžiui:

Country[code]

Čia jungiama su Country modeliu, per Country modelio code duomenų lauką.

Jei laukas, per kurį daromas jungimas nenurodytas, pavyzdžiui:

Country

Tada, jungimas daromas per Country modelio pirminį raktą, kuris nurodytas model.ref stulpelyje.

Šio objekto reikšmės yra pateikiamos, kaip dalis objekto į kurį rodoma. Jei ref tipo lauko brandos lygis (property.level) yra 4 ar didesnis, tuomet šio duomenų tipo reikšmės atrodo taip:

{"_id": "69c98b0f-9e4e-424b-9575-9f601d79b68e"}

Jei brandos lygis (property.level) yra žemesnis nei 4, tada reikšmė atrodo taip:

{"id": "69c98b0f-9e4e-424b-9575-9f601d79b68e"}

Čia id yra model.ref arba kitas laukas, per kurį daromas jungimas. Jei nenurodytas nei model.ref, nei kitas laukas, tada jungimas daromas per _id, tačiau netikrinama ar toks _id egzistuoja jungiamame modelyje.

Taip pat žiūrėkite

Ryšiai tarp modelių

type.backref#

Atgalinis ryšys su modeliu.

Jei ryšys tarp dviejų modlių yra daug su vienu, tada property pavadinimas nurodomas su [] simboliu.

Pavyzdys

Koncepcinis modelis

classDiagram direction LR class Country { + id: integer [1..1] + name@lt: string [1..1] } class City { + id: integer [1..1] + name@lt: string [1..1] } City --> "[1..1]" Country : country City "[1..*]" <-- Country : cities

Struktūros aprašas

model

property

type

ref

Country

id

id

integer

name@lt

string

cities[]

backref

City

City

id

id

integer

name@lt

string

country

ref

Country

Taip pat žiūrėkite

Jungimas atgaliniu ryšiu

type.generic#

Dinaminis ryšys su modeliu.

Šis tipas naudojamas tada, kai yra poreikis perteikti dinaminį ryšį, t. y. duomenys siejami ne tik pagal id, bet ir pagal modelio pavadinimą. Tokiu būdu, vieno modelio laukas gali būti siejamas su keliais modeliais.

Taip pat žiūrėkite

Polimorfinis jungimas

Šis duomenų tipas yra sudėtinis, susidedantis iš tokių duomenų:

object_model

Pilnas modelio pavadinimas, su kuriuo yra siejamas objektas.

object_id

object_model modelio objekto id.

type.object#

Kompozicinis tipas, apjuniants kelias savybes į grupę, po vienu pavadinimu.

Šis tipas naudojamas apibrėžti sudėtiniams duomenims, kurie aprašyti naudojant kelis skirtingus tipas. Kompozicinio tipo atveju property stulpelyje komponuojami pavadinimai atskiriami taško simboliu.

Sudarant duomenų modelį, rekomenduojama laikytis plokščios struktūros ir komponavimą įgyvendinti siejant modelius per ref ar generic tipus.

type.array#

Kompozicinis duomenų tipas, nurodo reikšmių masyvą.

Šis tipas naudojamas apibrėžti duomenų masyvams. Jei masyvo elementai turi vienodus tipus, tada elemento tipas pateikiamas property pavadinimo gale prirašant [] sufiksą, kuris nurodo, kad aprašomas ne pats masyvas, o masyvo elementas.

type.url#

Unikali resurso vieta (URL) (angl. Uniform Resource Locator).

Šis tipas naudojamas pateikiant nuorodas į išorinius šaltinius.

https://en.wikipedia.org/wiki/Uniform_Resource_Locator

type.uri#

Universalus resurso identifikatorius (URI) (angl. Universal Resource Identifier).

Šis tipas naudojamas tais atvejais, kai pateikiamas išorinio resurso identifikatorius, RDF duomenų modelyje tai yra subjeto identifikatorius.

https://en.wikipedia.org/wiki/Uniform_Resource_Identifier