Dimensijos
Dimensijos apibrėžia duomenų metaduomenų detalumo lygį.
Stulpeliai dataset, resource, base, model ir
property yra naudojami kaip DSA dimensijos. dataset yra
aukščiausia dimensija, property žemiausia. dataset ir
resource dimensijos atitinka DCAT žodyną ir užtikrina trečia duomenų
brandos lygį, o žemiau esantys base, model ir property
atitinka RDFS žodyną ir užtikrina penktą duomenų brandos lygį. Vienoje lentelės
eilutėje gali būti užpildytas ne daugiau kaip vienas dimensijos stulpelis.
Užpildytasis dimensijos stulpelis nustato visų kitų stulpelių prasmę.
id |
d |
r |
b |
m |
property |
title |
|---|---|---|---|---|---|---|
1 |
datasets/gov/ivpk/adk |
Atvirų duomenų katalogas |
||||
2 |
adk |
Atvirų duomenų katalogo duomenų bazė |
||||
3 |
/dcat/dataset |
Duomenų rinkinys |
||||
4 |
dataset |
Duomenų rinkinys |
||||
5 |
title |
Duomenų rinkinio pavadinimas |
||||
Pavyzdyje aukščiau, taupant vietą, dalies dimensijų pavadinimai sutrumpinti iki
vienos raidės ir įtraukti ne visi stulpeliai, o tik id ir title
metaduomenų stulpeliai. Pavyzdyje matome, kad vienoje eilutėje užpildytas tik
vienas dimensijos stulpelis, o title stulpelio prasmė keičiasi
priklausomai nuo dimensijos reikšmės. Toliau specifikacijoje konkrečios
dimensijos stulpeliai įvardijami pateikiant tiek dimensijos, tiek metaduomens
stulpelio pavadinimus, kad būtų aiškiau apie kurios dimensijos metaduomenį
kalbama, pavyzdžiui model.title leidžia suprasti kad kalbama apie
„Duomenų rinkinys“ reikšmę 4-oje eilutėje.
Be minėtų dimensijų stulpelių DSA lentelėje gali būti naudojami
papildomos metaduomenų dimensijos, kai nurodoma type reikšmė ir
nepateikiama nei viena dimensijos stulpelio reikšmė. Pavyzdžiui:
id |
d |
r |
b |
m |
property |
type |
ref |
uri |
|---|---|---|---|---|---|---|---|---|
1 |
prefix |
dcat |
http://www.w3.org/ns/dcat# |
Šiuo atveju prefix tampa dar viena dimensija, leidžianti pateikti
metaduomenis apie naudojamų URI prefiksus. Analogiškai, kaip ir su kitomis
dimensijomis, dimensijos ir metaduomens pavadinimus galima apjungti, pavyzdžiui
prefix.ref apibūdina tik prefix dimensijai priklausančius
ref stulpelius.
Dimensijos leidžia suskirstyti metaduomenis į hierarchinę struktūrą. Todėl DSA lentelės eilučių eiliškumas yra svarbus, kadangi žemiau esančios eilutės priklauso aukščiau esančiai dimensijai. Tas pats galioja ir pagalbinėms dimensijoms.
Nors lentelėje sudaro tik 15 stulpelių, tačiau pasitelkiant 5 pagrindinius dimensijas ir keletą papildomų dimensijų, atsiranda galimybė išsamiai aprašyti visą duomenų šaltinio struktūrą.
Modelio bazė
Pastaba
Kol kas modelių apjungimas naudojant vieną bazę nėra įgyvendintas.
Modelio bazė naudojama kelių modelių (lentelių) susiejimui arba apjungimui.
Kadangi įvairiuose duomenų šaltiniuose dažnai pasitaiko duomenų, kuriuose
saugomos tą pačią semantinę prasmę turinčios lentelės, base stulpelyje
galima nurodyti kaip skirtingos lentelės siejasi tarpusavyje.
base.type stulpelyje nurodoma kokiu būdu lentelės yra susiję.
ETL priemonė vadovaujantis base informacija duomenis
automatiškai transformuoja ir sujungia kelias lenteles į vieną.
Modeliai ne tik susiejami semantiškai tarpusavyje, bet taip pat suliejami ir
dviejų modelių duomenys naudojant laukų sąrašą nurodytą base.ref
stulpelyje. base.ref stulpelyje nurodyti laukai naudojami norint
unikaliai identifikuoti model lentelėje esančią eilutę, kuri atitinka
base lentelėje esančią eilutę. Tai reiškia, kad modelis ir jo bazė turi
vienodus identifikatorius.
Siejant model ir base duomenis tarpusavyje, model
lentelė įgauna lygiai tokius pačius unikalius identifikatorius, kurie yra base
lentelėje. Tai reiškia, kad model lentelėje negali būti duomenų, kurių
nėra base lentelėje.
model.property laukams, kurie sutampa su base modelio laukais,
nenurodomas property.type, tokiu būdu nurodoma, kad
model.property turi tą pačią semantinę prasmę, kaip ir base,
tačiau model gali turėti ir papildomų laukų, kurių nėra base
modelyje, tokiu atveju property.type turi būti nurodomas.
Visi base.ref laukai turi būti aprašyti tiek base, tiek
model modeliuose, tai reiškia, kad base.ref gali būti naudojami
tik tiek laukai, kurie neturi tipo.
Jei base stulpelyje nurodoma / reikšmė, tai reiškia, kad
model neturi bazės, arba modelio bazė yra panaikinama. / naudojamas
tais atvejais, kai norima vieną ar kelis modelius prijungti prie vienos bazės,
tačiau sekantys modeliai nebeturi priklausyti jokiai bazei.
Sinonimai
Tais atvejais, kai visi model laukai neturi property.type, tada
toks modelis laikomas base sinonimu ir iš esmės saugomas tik
identifikatorius.
Tačiau, jei bent vienas property.type yra nurodytas, tada modelis įgyja
fizinę reprezentaciją ir turi vieną ar kelis savo laukus, kurių nėra
base modelyje.
Kiekvieną kartą saugant duomenis per kitą modelį į bazę, bazės modelio istorijoje išsaugoma informacija iš kokio modelio atėjo duomenys.
Paveldimumas
model paveldi visus laukus, įskaitant ir tuos, kurie nėra nurodyti prie
model laukų sąrašo. Tai reiškia, kad galima skaityti ir rašyti duomenis
į base, per model. Jei skaitomas ar rašomas laukas, kurio nėra
model laukų sąraše, tada to lauko duomenys sakomi iš arba rašomi į
base modelį.
Visi modelio laukai, kurie neturi tipo, fiziškai yra priskiriami base
modeliui.
Dubliavimas
Laukai pavadinimai modelyje, kurie turi tą pačią semantinę prasmę, kaip ir bazėje turi sutapti su pavadinimais nurodytais bazėje. Tačiau, jei yra nurodomas jų tipas, tada tie duomenys dubliuojami, laikant, kad duomenys skiriasi nuo bazės, nepaisant to, kad semantiškai jie yra vienodi.
Turint tokius dubliuojamus laukus su nurodytais tipais, jei norima pasiekti
bazės lauką, galima naudoti _base.prop išraišką, kuri nurodo, kad norima
pasiekti bazėje esančius duomenis, laukui tuo pačiu pavadinimu.
- base.source
Nenaudojamas.
- base.prepare
Išimtiniais atvejais, kai nėra galimybės lentelių susieti ar apjungti įprastiniais metodais, galima pasitelkti formules, kurių pagalba galima įgyvendinti nestandartinius lentelių apjungimo atvejus.
- base.type
Nenaudojamas.
- base.ref
model.propertyreikšmė, kurios pagalbamodelobjektai siejami subaseobjektais. Jei susiejimas pagal vieną model property yra neįmanomas, galima nurodyti kelismodel.propertypavadinimus atskirtus kableliu.Galima naudoti tik tuos
model.property, kurie neturi nurodytoproperty.type, kas reiškia, kad toks pat laukas turi būti tiekbase, tiekmodellaukų sąraše.Tais atvejais, kai
base.refrodo į modelio lauką, kuris turi tipą, tadabase.levelnegali būti didesnis nei3, kadangi jei modelio laukas turi tipą, tai reiškia, kad jo duomenys nesutampa su bazės duomenimis ir todėl jungimas negali būti daromas.
- base.level
Brandos lygis, nurodantis modelio susiejamumą su nurodytu baziniu modeliu. Plačiau žiūrėti Ryšiai tarp modelių | Brandos lygis.
Jei brandos lygis yra žemesnis nei
3, tada identifikatorių siejimas nėra atliekamas, tokiu būdu tiesiog nurodomas semantinis susiejimas metaduomenų, o ne duomenų lygmenyje.
- base.access
Nenaudojamas.
Paaiškinimas, ką reiškia kiekviena savybė.
Pavyzdys be išorinio duomenų šaltinio:
d |
r |
b |
m |
property |
type |
ref |
|---|---|---|---|---|---|---|
example |
||||||
Location |
||||||
name@lt |
text |
|||||
population |
integer |
|||||
Location |
||||||
City |
||||||
name@lt |
||||||
population |
||||||
Village |
||||||
name@lt |
||||||
population |
||||||
region |
ref |
Location |
||||
/ |
||||||
Country |
||||||
name@lt |
||||||
population |
||||||
Šiame pavyzdyje:
CityirVillagepriklauso vienai bazeiLocation.Kadangi
Locationturi savybesname@ltirpopulation, taiCityirVillagemodeliuose tą pačią semantinę prasmę turinčios savybės turi turėti lygiai tokius pačius pavadinimus, oproperty.typeturi būti tuščias. Kaiproperty.typeyra tuščias, tai reiškia, kad savybė ateina iš bazinio modelio.Kadangi
Villageturi papildomąpropertysu nurodytuproperty.type, tai reiškia, kadnameir population` priklauso bazei, tačiauregionpriklausoVillagemodeliui ir jo nėra bazėje.Kadangi
Countrysemantiškai nėra tas pats, kasGyvenviete, nors ir turi tokias pačias savybes, atskiriame ją nuoLocationbazės, priskirdami/bazei, kas reiškia, kas bazės nėra.
Pavyzdys su išoriniu duomenų šaltiniu:
d |
r |
b |
m |
property |
type |
ref |
source |
|---|---|---|---|---|---|---|---|
example |
|||||||
Location |
id |
||||||
id |
integer |
||||||
name@lt |
text |
||||||
population |
integer |
||||||
Location |
name@lt |
||||||
City |
name@lt |
CITY |
|||||
name@lt |
NAME |
||||||
population |
POPULATION |
||||||
Village |
name@lt |
VILLAGE |
|||||
name@lt |
VILLAGE |
||||||
population |
POPULATION |
||||||
region |
ref |
Location |
REGION |
||||
Šiame pavyzdyje esminis skirtumas yra tas, kad nurodyta kaip daromas jungimas.
City ir Village su Location jungiame per name@lt lauką.
Savybė
Duomenų laukas atspindi tam tikrą modelio savybę arba tai gali būti lentelės stulpelis, jei duomenų šaltinis yra lentelė.
- property.source
Duomenų lauko pavadinimas šaltinyje. Prasmė priklauso nuo
resource.type.
- property.prepare
Formulė skirta duomenų tikrinimui ir transformavimui arba statinės reikšmės pateikimui.
- property.type
Nurodomas loginis duomenų tipas. Dėl galimų tipų sąrašo žiūrėti Duomenų tipai.
Loginis duomenų tipas yra toks tipas, kurį tikitės gauti publikuojant duomenis per API. Loginis tipas gali skirtis nuo duomenų šaltinio tipo.
Visi duomenų tipai gali turėti tokius parametrus:
required- nurodo, kad šis duomenų laukas yra privalomas, tai reiškia, kad šio duomenų lauko reikšmė visada turi būti pateikta. Pagal nutylėjimą visi modelio duomenų laukai yra neprivalomi.
Kai kurie duomenų tipai, gali turėti konkrečiam duomenų tipui pateikiamus papildomus parametrus, tokie parametrai nurodomi skliausteliuose.
Dupmenų tipų pavyzdžiai:
integerinteger requiredgeometrygeometry(linestringm, 3345) required
- property.ref
Priklauso nuo
property.type, nurodo matavimo vienetus, laiko ar vietos tikslumą, klasifikatorių arba ryšį su kitais modeliais. Ką tiksliai reiškia šis laukas, patikslinta skyrelyje Duomenų tipai.
- property.level
Nurodo duomenų lauko brandos lygį. Žiūrėti Brandos lygiai.
- property.access
Nurodo prieigos prie duomenų lygį. Žiūrėti skyrių Prieigos lygiai.
- property.uri
Sąsaja su išoriniu žodynu. Žiūrėti Išoriniai žodynai.
- property.title
Duomenų lauko pavadinimas. Šis pavadinimas yra skirtas skaityti žmonėms ir bus rodomas duomenų laukų sąrašuose ir antraštėse. Jei nenurodyta, bus naudojamas
propertykodinis pavadinimas.
- property.description
Duomenų lauko aprašymas.
- property.enum
Žiūrėti Klasifikatoriai.
Papildomos dimensijos
Išorinių žodynų prefiksai
Sąsają su išoriniais žodynais galima pateikti model.uri ir
property.uri stulpeliuose. Tačiau prieš naudojant žodynus, pirmiausia
reikia apsirašyti žodynų prefiksus. Žodynų prefiksai aprašomi taip:
- prefix
- prefix.ref
Prefikso pavadinimas.
- prefix.uri
Išorinio žodyno URI.
- prefix.title
Prefikso antraštė.
- prefix.description
Prefikso aprašymas.
Rekomenduojama naudoti LOV prefiksus.
Aprašyti prefiksai gali būti naudojami model.uri ir property.uri
stulpeliuose tokiu būdu: prefix:name.
Pavyzdys:
d |
r |
b |
m |
property |
type |
ref |
uri |
|---|---|---|---|---|---|---|---|
dataset1 |
|||||||
prefix |
spinta |
https://github.com/atviriduomenys/manifest/issues/ |
|||||
manifest |
https://github.com/atviriduomenys/spinta/issues/ |
||||||
vadovas |
https://atviriduomenys.readthedocs.io/ |
||||||
dct |
http://purl.org/dc/dcmitype/ |
||||||
dataset2 |
|||||||
prefix |
dcat |
http://www.w3.org/ns/dcat# |
|||||
dct |
http://purl.org/dc/terms/ |
||||||
dctype |
http://purl.org/dc/dcmitype/ |
||||||
foaf |
http://xmlns.com/foaf/0.1/ |
||||||
owl |
http://www.w3.org/2002/07/owl# |
||||||
prov |
http://www.w3.org/ns/prov# |
||||||
rdf |
http://www.w3.org/1999/02/22-rdf-syntax-ns# |
||||||
rdfs |
http://www.w3.org/2000/01/rdf-schema# |
||||||
sdo |
http://schema.org/ |
||||||
skos |
http://www.w3.org/2004/02/skos/core# |
||||||
vcard |
http://www.w3.org/2006/vcard/ns# |
||||||
xsd |
http://www.w3.org/2001/XMLSchema# |
||||||
Prefiksai turi būti apibrėžti duomenų rinkinio kontekste, kadangi skirtingi
duomenų rinkiniai gali naudoti skirtingus prefiksus, tiems pateims URI.
Pavyzdžiui abiejusoe rinkinyje pavyzdyje aukščiau, dct ir dctype rodo į tą
patį URI.
Klasifikatoriai
Tam tikri duomenų laukai turi fiksuotą reikšmių variantų aibę. Dažnai duomenų
bazėse fiksuotos reikšmės saugomos skaitine forma ar kitais kodiniais
pavadinimais. Tokias fiksuotas reikšmes duomenų struktūros apraše galima
pateikti neužpildant hierarchinių stulpelių ir nurodant type reikšmę
enum, pavyzdžiui:
id |
d |
r |
b |
m |
property |
type |
ref |
source |
prepare |
level |
access |
uri |
title |
description |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 |
datasets/example/places |
|||||||||||||
2 |
places |
sql/sqlite |
sqlite:// |
|||||||||||
3 |
Place |
id |
PLACES |
|||||||||||
4 |
id |
integer |
ID |
3 |
open |
|||||||||
5 |
type |
string |
CODE |
3 |
open |
|||||||||
6 |
enum |
1 |
"city" |
City |
||||||||||
7 |
2 |
"town" |
Town |
|||||||||||
8 |
3 |
"village" |
Village |
|||||||||||
9 |
name |
string |
NAME |
3 |
open |
|||||||||
Šiame pavyzdyje Place.type laukas yra klasifikatorius, kurio reikšmės yra
kodai 1, 2 ir 3, kurios duomenų struktūros apraše keičiamos į city, town
ir village, papildomai title stulpelyje nurodant reikšmės pavadinimą.
Jei tas pats klasifikatorius gali būti naudojamas kelios skirtingose vietos, tada galima iškelti klasifikatorių ir suteikti jam pavadinimą, pavyzdžiui:
id |
d |
r |
b |
m |
property |
type |
ref |
source |
prepare |
level |
access |
uri |
title |
description |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 |
datasets/example/places |
|||||||||||||
6 |
enum |
place |
1 |
"city" |
City |
|||||||||
7 |
2 |
"town" |
Town |
|||||||||||
8 |
3 |
"village" |
Village |
|||||||||||
2 |
places |
sql/sqlite |
sqlite:// |
|||||||||||
3 |
Place |
id |
PLACES |
|||||||||||
4 |
id |
integer |
ID |
3 |
open |
|||||||||
5 |
type |
string |
place |
CODE |
3 |
open |
||||||||
9 |
name |
string |
NAME |
3 |
open |
|||||||||
Šiuo atveju, klasifikatoriui buvo suteiktas pavadinimas place įrašytas
enum.ref stulpelyje, 6 eilutėje. O Place.type laukui, prepare
stulpelyje nurodyta, kad šis laukas naudoja vardinį place klasifikatorių.
- enum
- enum.ref
Pasirinkimų sąrašo pavadinimas.
- enum.source
Pateikiama originali reikšmė, taip kaip ji saugoma duomenų šaltinyje. Pateiktos reikšmės turi būti unikalios ir negali kartotis.
Jei pageidaujama aprašyti tuščią šaltinio reikšmę, tada
property.preparecelėje reikia nurodyti formulę, kuri tuščią reikšmę pakeičia, į kokią nors kitą. Formulės pavyzdys:swap('', '-')
- enum.prepare
Pateikiama reikšmė, tokia kuri bus naudojama atveriant duomenis.
model.preparefiltruose taip pat bus naudojama būtent ši reikšmė.enum.preparereikšmės gali kartotis, tokiu būdu, kelios skirtingosenum.sourcereikšmės bus susietos su vienaenum.preparereikšme.
- enum.access
Klasifikatoriams galima nurodyti skirtingas prieigos teises, tokiu atveju, naudotojas turintis
openprieigą matys tik tuos duomenis, kurių klasifikatorių reikšmės turiopenprieigos teises, visi kiti bus išfiltruoti.
- enum.title
Fiksuotos reikšmės pavadinimas.
- enum.description
Fiksuotos reikšmės aprašymas.
Pagal nutylėjimą, jei property.prepare yra tuščias ir property
turi Klasifikatoriai sąrašą, tada jei šaltinis turi neaprašytą reikšmę, turėtų
būti fiksuojama klaida.
Jei yra poreikis fiksuoti tik tam tikras reikšmes, o visas kitas palikti tokias,
kokios yra šaltinyje, tada property.prepare stulpelyje reikia įrašyti
self.choose(self).
Parametrai
Parametrai leidžia iškelti tam tikras duomenų paruošimo operacijas į parametrus
kurie gali būti naudojami Dimensijos, kurioje apibrėžtas parametras
kontekste. Parametrai gali gražinti iteratorius, kurių pagalba galima
dinamiškai kartoti resource duomenų skaitymą, panaudojant aprašytus
parametrus. Taip pat parametrų pagalba galima sudaryti reikšmių sąrašus, kurių
pagalba galima kartoti resource su kiekviena reikšme.
Parametrai dažniausiai naudojami žemesnio brandos lygio duomenų šaltiniams aprašyti, o taip pat API atvejais, kai duomenys atiduodame dinamiškai.
Parametrai aprašomi pasitelkiant papildomą Parametrai dimensiją.
id |
d |
r |
b |
m |
property |
type |
ref |
source |
prepare |
|---|---|---|---|---|---|---|---|---|---|
1 |
datasets/example/cities |
||||||||
2 |
places |
dask/csv |
https://example.com/{}.csv |
||||||
3 |
Country |
id |
countries |
||||||
4 |
code |
string |
CODE |
||||||
5 |
title |
string |
TITLE |
||||||
6 |
City |
country, title |
cities/{country.code} |
||||||
7 |
param |
country |
Country |
select(code) |
|||||
8 |
country |
ref |
Country |
param("country").code |
|||||
9 |
title |
string |
TITLE |
||||||
- param
- param.ref
Parametro kodinis pavadinimas.
- param.prepare
Formulė, kuri grąžina sąrašą reikšmių aprašomam parametrui.
- param.source
Jei reikšmė pateikta, tada ši reikšmė perduodama formulei kaip
self. Pavyzdžiui, jeiparam.preparepateikta formulėselect(code), oparam.sourcenurodytaCountry, tai formulė bus iškviesta taipselect("Country", code).
Jei parametro reikšmė yra iteratorius, tada dimensija, kurios kontekste yra aprašytas parametras yra kartojama tiek kartų, kiek reikšmių grąžina iteratorius.
Jei yra keli Parametrai grąžinantys iteratorius, tada iš
visų iteratorių sudaroma Dekarto sandauga ir
resource dimensija vykdoma su kiekviena sandaugos rezultato reikšme.
Jei sekančioje DSA eilutėje, einančioje po eilutės, kurioje aprašytas
Parametrai, nenurodytas type ir neužpildytas joks kitas
dimensijos stulpelis, tada parametras tampa
iteratoriumi, kurio reikšmių sąrašą sudaro sekančiose
eilutėse patektos source ir prepare reikšmės. Pavyzdžiui
anksčiau pateiktą pavyzdį galima būtų perdaryti taip:
id |
d |
r |
b |
m |
property |
type |
ref |
source |
prepare |
|---|---|---|---|---|---|---|---|---|---|
1 |
datasets/example/cities |
||||||||
2 |
places |
dask/csv |
https://example.com/{}.csv |
||||||
3 |
Country |
id |
countries |
||||||
4 |
code |
string |
CODE |
||||||
5 |
title |
string |
TITLE |
||||||
6 |
City |
country, title |
cities/{country} |
||||||
7 |
param |
country |
"lt" |
||||||
7 |
"lv" |
||||||||
7 |
"ee" |
||||||||
8 |
country |
ref |
Country |
param("country") |
|||||
9 |
title |
string |
TITLE |
||||||
Šiame pavyzdyje, parametras country grąžins tris šalies kodus: lt, lv ir
ee, kurie bus panaudojami cities/{country} pavadinime, pakeičiant
{country} dalį.
Parametrai reikšmės pasiekiamos naudojanti pavadinimą įrašytą
param.ref stulpelyje. Pavyzdžiui, jei param.ref stulpelyje
įrašyta x, tada x parametro reikšmę galima gauti taip:
- source
{x}.
- prepare
xarbaparam(x).
Parametrų generavimui galima naudoti tokias formules:
- param.prepare
- range(stop)
Sveikų skaičių generavimas nuo 0 iki
stop,stopneįeina.
- range(start, stop)
Sveikų skaičių generavimas nuo
startikistop,stopneįeina.
- scalar(name)
Jei nurodytas
param.source, tada imama tiknamelauko reikšmė, o ne visi modelio laukai.
Jei užpildytas param.source stulpelis, tada param.prepare
stulpelyje galima naudoti filtrą nurodyto param.source modelio duomenims
filtruoti, o naudojant parametrus galima nurodyti ir modelio laukų pavadinimus,
pavyzdžiui:
- source
{x.field}.
- prepare
x.fieldarbaparam(x).field.
Reikšmių sukeitimas
Tam tikrais atvejais duomenis tenka normalizuoti parenkant tam tikrą reikšmę jei
tenkinama nurodyta sąlyga. Tokias situacijas galima aprašyti pasitelkiant
switch dimensiją.
- switch
- switch.source
Reikšmė, kuri bus atveriama.
- switch.prepare
Sąlyga, naudojant einamojo modelio laukus. Jei sąlyga tenkinama, tada laukui priskiriama
switch.sourcereikšmė. Jei sąlyga netenkinama, tada bandoma tikrinti sekančią sąlygą. Parenkama ta reikšmė, kurios pirmoji sąlyga tenkinama.Jei
switch.prepareyra tuščias, tada sąlyga visada teigiama ir visada grąžinamaswitch.sourcereikšmė.
Komentavimas
Dirbant su DSA yra galimybė komentuoti eilutes, naudojant papildomą
comment dimensiją, kurią galima naudoti bet kurios kitos dimensijos
kontekste.
- comment
- comment.id
Komentaro numeris.
- comment.ref
Komentuojamo vieno ar kelių kableliu atskirtų
propertypavadinimai. Galima nurodyti ne tik stulpelio pavadinimą, bet ir dimensiją.
- comment.source
Komentaro autorius.
- comment.prepare
Keitimo pasiūlymas, naudojant
create(),updateirdelete()funkcijas. Pavyzdžiui:update(property: "pavadinimas@lt", type: "text")
Šiuo atveju nurodoma, kad siūloma keisti
propertypavadnimą įpavadinimas@lt, otypeįtext.
- comment.level
Nurodoma, kad patenkinus keitimo sliūlymą, kuris nurodytas
comment.preparestulplyje, komentuojamai eilutei gali būti suteiktas nurodytas brandos lygis.
- comment.access
Nurodoma, ar komentaras gali būti publikuojamas viešai.
- private
Komentaras negali būti publikuojamas viešai. Šis prieigos lygis naudojamas pagal nutylėjimą.
- open
Komentaras gali būti publikuojamas viešai.
- comment.uri
Viena ar kelios kableliu atskirtos šaltinio nuorodos, kuri pateikta daugiau informacijos apie tai, kas komentuojama. Taip pat gali būti nurodytas kito komentaro
comment.id, nurodant, kad tai yra atsakymas į ankstesnį komentarą.URI pateikiami sutrumpinta forma, naudojant prefikstus. Žiūrėti skrių Išoriniai žodynai.
- comment.description
Komentaro tekstas.
Pavyzdys
d |
r |
b |
m |
property |
type |
ref |
prepare |
level |
access |
uri |
|---|---|---|---|---|---|---|---|---|---|---|
example |
||||||||||
prefix |
spinta |
https://github.com/atviriduomenys/manifest/issues/ |
||||||||
manifest |
https://github.com/atviriduomenys/spinta/issues/ |
|||||||||
vadovas |
https://atviriduomenys.readthedocs.io/ |
|||||||||
Imone |
2 |
|||||||||
comment |
base |
update(base: "/jar/JuridinisAsmuo", ref: "id") |
4 |
open |
spinta:205, manifest:1290 |
|||||
comment |
ref |
update(ref: "id") |
4 |
open |
vadovas:dsa/dimensijos.html#model.ref |
|||||
id |
integer |
4 |
open |
|||||||
pavadinimas |
string |
2 |
open |
|||||||
comment |
ref |
update(property: "pavadinimas@lt", type: "text") |
4 |
open |
spinta:204 |
|||||
Daugiakalbiškumas
title ir description stulpeliuose tekstas rašomas lietuvių
kalba, tačiau galima pateikti tekstą ir kita kalba, panaudojus papildomą
lang dimensiją, kurią reikia naudoti prieš eilutę, kuriai pateikiamas
tekstas kita kalba.
Struktūros keitimas
Laikui einant, pirminių duomenų šaltinių arba jau atvertų duomenų struktūra keičiasi, papildoma naujais modeliais ar savybėmis, keliant duomenų brandos lygį seni duomenys keičiami naujais, aukštesnio brandos lygio duomenimis.
Visi šie struktūros ar pačių duomenų pasikeitimai fiksuojami papildomos
migrate dimensijos pagalba, kuri gali būti naudojama, bet kurios kitos
dimensijos kontekste.
Pastaba
Migracijos naudojamos tik tuo atveju, kai keičiasi duomenų struktūra arba patys duomenys. Jei keičiasi tik metaduomenys, tai migracijų sąraše neatsispindi.
id |
d |
r |
b |
m |
property |
type |
ref |
prepare |
level |
title |
description |
|---|---|---|---|---|---|---|---|---|---|---|---|
1 |
migrate |
2021-12-21 16:29 |
Pirmoji migracija. |
||||||||
2 |
migrate |
1 |
2021-12-21 16:33 |
Antroji migracija. |
|||||||
3 |
migrate |
2 |
2022-06-21 16:41 |
Trečioji migracija. |
|||||||
datasets/example/migrate |
|||||||||||
Country |
id |
||||||||||
id |
integer |
4 |
|||||||||
code |
string |
3 |
|||||||||
migrate |
1 |
create(level: 2) |
|||||||||
migrate |
3 |
update(level: 3) |
|||||||||
name |
string |
||||||||||
migrate |
2 |
create() |
|||||||||
Pavyzdyje aukščiau matome, kad šis duomenų struktūros aprašas turi tris migracijas:
Pirmosios migracijos metu sukuriamas pradinis duomenų struktūros variantas. Pirmoji migracija nežymima prie modelių ir duomenų laukų, nebent daromas keitimas, tuomet įtraukiam ir pirmoji migracija, kad būtų matoma, kas keitėsi. Būtent toks atvejis parodytas prie
Country.codelauko, kuri trečiojo migracijoje keičiamas brandos lygis.Antrosios migracijos metu buvo įtrauktas naujas duomenų laukas
Country.name.Trečiosios migracijos metu, buvo keičiami
Country.codelauko duomenys, pakeitimo metu brandos lygis buvo pakeltas iki trečio. Atkreipkite dėmesį, kad metaduomenų pasikeitimas, kaip šiuo atveju, žymimas migracijose tik tuo atveju, jei tai yra susiję su pačių duomenų pasikeitimu.Jei brandos lygis būtų pakeistas, nekeičiant pačių duomenų, tuomet tokio pakeitimo nereikėtų įtraukti į migracijų sąrašą.
Kadangi trečiojoje migracijoje buvo atliktas su ankstesne versija nesuderinamas pakeitimas, tai šios migracijos data yra 6 mėnesiai ateityje, kadangi nesuderinamos migracijos pirmiausia paskelbiamos, o įgyvendinamos tik praėjus 6 mėnesiams nuo paskelbimo.
- migrate
- migrate.id
Migracijos numeris (UUID). Kiekvienos migracijos metu gali būti atliekama eilė operacijų, visos operacijos fiksuojamos naudojant migracijos numerį.
Visų migracijų sąrašas pateikiamas, kai
migratenepriklauso jokiam dimensijos kontekstui.
- migrate.ref
Ankstesnės migracijos numeris, pateiktas
migrate.idstulpelyje, arba tuščia, jei prieš tai jokių kitų migracijų nebuvo.Naudojamas jei
migratenepatenka į jokios dimensijos kontekstą.Jei
migrateaprašomas dimensijos kontekste, tada šis stulpelis nenaudojamas.
- migrate.prepare
Migracijos operacija. Galimos tokios operacijos:
- create()
Priklausomai nuo dimensijos konteksto, prideda naują modelį, arba savybę.
Funkcijai galima perduoti
refir kitus vardinius argumentus, kurie atitinka DSA lentelės metaduomenų stulpelių pavadinimus.
- update()
Taikomas tik duomenų laukams ir nurodo, kad buvo pakeistos esamų duomenų reikšmės, keičiant reikšmių dimensiją, matavimo vienetus, formatą ir kita.
Funkcijai galima perduoti
refir kitus vardinius argumentus, kurie atitinka DSA lentelės metaduomenų stulpelių pavadinimus.Perduodami tik tie vardiniai argumentai, kuriuos atitinkantys metaduomenys keičiasi.
- delete()
Priklausomai nuo dimensijos konteksto, šalina modelį ar savybę.
Pašalinto modelio ar savybės
typekeičiamas įabsentreikšmę.
- filter(where)
Naudojamas
propertykontekste, kai vykdoma duomenų migracija. Nurodo, kad migracija taikoma tikwheresąlygą tenkinantiems duomenims.
Be šių pagrindinių migracijos operacijų, galima naudoti kitas duomenų transformavimo operacijas, kurios vykdomos su kiekviena duomenų eilute ir atlikus pateiktas transformacijos funkcijas, pakeista reikšmė išsaugoma.
- migrate.title
Migracijos įvykdymo data ir laikas. Migracijos laikas ir data gali būti ir ateityje, tuo atveju, jei daromas nesuderinamas keitimas.
Naudojamas tik tada, kai
migratenepatenka į jokios dimensijos kontekstą.
- migrate.description
Migracijos atliekamo pakeitimo trumpas aprašymas.