.. default-role:: literal .. _dimensijos: Dimensijos ========== :term:`Dimensijos ` apibrėžia duomenų metaduomenų detalumo lygį. Stulpeliai :data:`dataset`, :data:`resource`, :data:`base`, :data:`model` ir :data:`property` yra naudojami kaip :term:`DSA` dimensijos. :data:`dataset` yra aukščiausia dimensija, :data:`property` žemiausia. :data:`dataset` ir :data:`resource` dimensijos atitinka DCAT_ žodyną ir užtikrina trečia duomenų brandos lygį, o žemiau esantys :data:`base`, :data:`model` ir :data:`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ę. .. _DCAT: https://www.w3.org/TR/vocab-dcat-2/ .. _RDFS: https://www.w3.org/TR/rdf-schema/ +----+-----+-----+-----+-----+----------+------------------------------+ | 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 :data:`id` ir :data:`title` metaduomenų stulpeliai. Pavyzdyje matome, kad vienoje eilutėje užpildytas tik vienas dimensijos stulpelis, o :data:`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 :data:`model.title` leidžia suprasti kad kalbama apie „Duomenų rinkinys“ reikšmę 4-oje eilutėje. Be minėtų dimensijų stulpelių :term:`DSA` lentelėje gali būti naudojami papildomos metaduomenų dimensijos, kai nurodoma :data:`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 :data:`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 :data:`prefix.ref` apibūdina tik :data:`prefix` dimensijai priklausančius :data:`ref` stulpelius. Dimensijos leidžia suskirstyti metaduomenis į hierarchinę struktūrą. Todėl :term:`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 :term:`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ą. .. _dataset: Duomenų rinkinys ---------------- :term:`DSA` lentelėje :term:`duomenų rinkinys` nurodomas tam, kad būtų išlaikomas ryšys tarp :term:`DSA` ir :term:`ADK`. Atliekant duomenų inventorizaciją, automatiškai generuota :term:`DSA` lentelė turi būti suskirstoma į :term:`duomenų rinkinius `. Tada priemonių pagalba automatiškai sukuriami pirminiai :term:`ADK` metaduomenys apie :term:`duomenų rinkinius `, kuriuos vėliau reikia papildyti rankiniu būdu prisijungus prie ADK. Automatizuota priemonė sukūrus duomenų rinkinių įrašus :term:`ADK`, papildys :term:`DSA` lentelę, į :data:`dataset.ref` įrašant :term:`ADK` sukurto duomenų rinkinio identifikatorių. Tokiu būdu, sekantį kartą vykdant sinchronizaciją, jei :data:`dataset.ref` yra užpildytas, bus atnaujinami jau sukurti :term:`ADK` :term:`duomenų rinkinių ` įrašai. Į :term:`ADK` turi būti publikuojami tik tie duomenų rinkiniai iš DSA, kurių :data:`dataset.access` reikšmė yra `public` arba `open`. .. data:: dataset.source Jei nenurodyta, naudoti \https://data.gov.lt/ adresą. Nenaudojama, jei `dataset.type` yra `ns`. .. data:: dataset.prepare Nenaudojama. .. data:: dataset.type Jei nenurodyta, naudoti `ivpk` reikšmę. type nurodo :term:`API` formatą, kuriuo automatiškai pildomi duomenų rinkinių metaduomenys atvirų duomenų portale. Galimos reikšmės: .. describe:: ns Atitinka vardų erdvę, kurioje pateikiami duomenų rinkiniai. Naudojamas tais atvejais, kai norima pateiki papildomus metaduomenis vardų erdvei, pavydžui pavadinimą ar parašymą. .. describe:: ckan Atitinka duomenų rinkinį iš CKAN_ duomenų katalogo. .. describe:: ivpk Atitinka duomenų rinkinį iš `data.gov.lt`_ duomenų katalogo. .. _CKAN: https://ckan.org/ .. _data.gov.lt: https://data.gov.lt/ .. data:: dataset.ref :term:`Duomenų rinkinio ` duomenų kataloge identifikatorius. Nenaudojamas jei :data:`dataset.type` yra `ns`. .. data:: dataset.level Nenaudojamas. .. data:: dataset.access Viso duomenų rinkinio ar vardų erdvės :ref:`access`. Paveldimas. .. data:: dataset.title Duomenų rinkinio ar vardų erdvės pavadinimas. .. data:: dataset.description Duomenų rinkinio ar vardų erdvės aprašymas. Skaidymas į :term:`duomenų rinkinius ` turi būti atliekamas tokiu principu, kad visi tarpusavyje susiję :term:`modeliai ` patektų į vieną :term:`duomenų rinkinį `. Teoriškai, absoliučiai visi :term:`modeliai ` gali būti susiję tarpusavyje, skaidymą reikėtų daryti pagal tematinį :term:`modelių ` tarpusavio ryšį, o ne pagal reliacinius ryšius. Jei duomenys yra išskaidyti pagal laiką, vietove ar kitus kriterijus į skirtingus duomenų šaltinius, tokie duomenys turėtų būti apjungti į vieną modelį :ref:`base` pagalba ir turėtų priklausyti vienam :term:`duomenų rinkiniui `. Tą pačią semantinę prasmę turintys duomenys neturėtų būti išskaidyti keliuose :term:`duomenų rinkiniuose `. Pavyzdys: +-----+-----+-----+-----+----------+-------+-------------------------------------------+ | d | r | b | m | property | type | | +=====+=====+=====+=====+==========+=======+===========================================+ | datasets/gov/ivpk | ns | Informacinės visuomenės plėtros komitetas | +-----+-----+-----+-----+----------+-------+-------------------------------------------+ | datasets/gov/ivpk/adp | ns | Lietuvos atvirų duomenų portalas | +-----+-----+-----+-----+----------+-------+-------------------------------------------+ | datasets/gov/ivpk/adp/catalog | | Lietuvos atvirų duomenų katalogas | +-----+-----+-----+-----+----------+-------+-------------------------------------------+ | datasets/gov/ivpk/adp/store | | Lietuvos atvirų duomenų saugykla | +-----+-----+-----+-----+----------+-------+-------------------------------------------+ Šiame pavyzdyje apibrėžtos dvi vardų erdvės ir du rinkiniai. Kiekviena organizacija turėtu deklaruoti tik savo vardų erdvės metaduomenis. Globalios vardų erdvės, tokios kaip `datasets` ir `datasets/gov` yra administruojamos vyriausiojo duomenų atvėrimo koordinatoriaus. .. _duomenų-šaltinis: Duomenų šaltinis ---------------- :term:`ŠDSA` atveju :term:`duomenų šaltinis` bus vidinis duomenų bazių serveris, kažkoks vidinis katalogas kuriame yra lentelių failai ar koks nors vidinis API. :term:`ADSA` atveju, :term:`duomenų šaltinis` gali būti nenurodytas, tai reiškia, kad duomenų rinkinio duomenys dar nėra publikuoti. Jei duomenys jau yra publikuoti, tada :term:`ADSA` :term:`duomenų šaltinis` turi rodyti į publikuotus atvertus duomenis, tai gali būti nuorodos į CSV failus, į viešą JSON API ir pan. :term:`Duomenų šaltinio ` įrašas taip pat naudojamas tam, kad automatiškai atnaujinti :term:`ADK` esančius :term:`duomenų rinkinius `, patelkiant konkrečias nuorodas į konkrečius duomenų failus. Analogiškai kaip ir :ref:`dataset` atveju, :data:`resource.ref` stulpelyje nurodomas duomenų šaltinio identifikatorius iš :term:`ADK`. .. data:: resource.type Duomenų šaltinio tipas. Galimos reikšmės: .. describe:: sql Reliacinės duomenų bazės .. describe:: dask/csv CSV lentelės .. describe:: tsv TSV lentelės .. describe:: dask/json JSON resursai .. describe:: jsonl JSON lines resursai .. describe:: geojson GeoJSON failai .. describe:: dask/xml XML resursai .. describe:: html HTML puslapiai .. describe:: xlsx Excel lentelės (naujasis OOXML_ formatas) .. _OOXML: https://en.wikipedia.org/wiki/Office_Open_XML .. describe:: xls Excel lentelės (senasis formatas) .. describe:: ods ODT_ skaičiuoklės formatas .. _ODT: https://en.wikipedia.org/wiki/OpenDocument .. describe:: zip ZIP_ failų archyvas. .. _ZIP: https://en.wikipedia.org/wiki/ZIP_(file_format) .. data:: resource.source Priklauso nuo :data:`resource.source`. Žiūrėti :ref:`resource`. .. data:: resource.ref Resurso kodinis pavadinimas, kuris yra apibrėžtas atskirai duomenų struktūros apraše, ar konfigūracijos failuose. Kai vienas resursas nurodo kitą, tuomet aprašomas resursas išplečia kitą resursą į kurį rodo arba naudoja kitą resursą, kaip konteinerį, kuriame saugomi duomenys. Išplėtimo atveju, galima pateikti tam tikro resurso konfidencialius duomenis, tokius, kaip slaptažodis, atskirai nuo duomenų struktūros aprašo, konfigūracijos failuose, o duomenų struktūros apraše išplėsti resursą, pateikiant ne konfidencialius duomenis. Tokiais atvejais, kaip duomenų failai saugomi ZIP archyvuose arba FTP serveryje, galima atskirai aprašyti ZIP ar FTP resursą, o po to, aprašant konkretų duomenų failo resursą, pateikti nuorodą, kuriame kitame resurse aprašomas failas yra. .. data:: resource.level Duomenų šaltinio brandos lygis, vertinant tik pagal formatą, nežiūrint į šaltinyje esančių duomenų turinį. .. data:: resource.access Viso duomenų šaltinio prieigos lygis. Paveldimas. .. data:: resource.title Duomenų šaltinio pavadinimas. .. data:: resource.description Duomenų šaltinio aprašymas. Duomenų šaltinio :data:`resource.type` reikšmė apibrėžia kokią :term:`ETL` priemonę naudoti skaitant duomenis iš duomenų šaltinio. Automatizuota duomenų priemonė skirta įstaigos duomenų atvėrimui turėtų palaikyti tik tokius duomenų šaltinius, kurie naudojami įstaigos vidinėje infrastruktūroje. Esant poreikiui gali būti įgyvendintas palaikymas naujiems duomenų šaltiniams. .. _base: Modelio bazė ------------ .. note:: 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, :data:`base` stulpelyje galima nurodyti kaip skirtingos lentelės siejasi tarpusavyje. :data:`base.type` stulpelyje nurodoma kokiu būdu lentelės yra susiję. :term:`ETL` priemonė vadovaujantis :data:`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ą :data:`base.ref` stulpelyje. :data:`base.ref` stulpelyje nurodyti laukai naudojami norint unikaliai identifikuoti :data:`model` lentelėje esančią eilutę, kuri atitinka :data:`base` lentelėje esančią eilutę. Tai reiškia, kad modelis ir jo bazė turi vienodus identifikatorius. Siejant :data:`model` ir :data:`base` duomenis tarpusavyje, :data:`model` lentelė įgauna lygiai tokius pačius unikalius identifikatorius, kurie yra base lentelėje. Tai reiškia, kad :data:`model` lentelėje negali būti duomenų, kurių nėra :data:`base` lentelėje. :data:`model.property` laukams, kurie sutampa su :data:`base` modelio laukais, nenurodomas :data:`property.type`, tokiu būdu nurodoma, kad :data:`model.property` turi tą pačią semantinę prasmę, kaip ir :data:`base`, tačiau :data:`model` gali turėti ir papildomų laukų, kurių nėra :data:`base` modelyje, tokiu atveju :data:`property.type` turi būti nurodomas. Visi :data:`base.ref` laukai turi būti aprašyti tiek :data:`base`, tiek :data:`model` modeliuose, tai reiškia, kad :data:`base.ref` gali būti naudojami tik tiek laukai, kurie neturi tipo. Jei :data:`base` stulpelyje nurodoma `/` reikšmė, tai reiškia, kad :data:`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 :data:`model` laukai neturi :data:`property.type`, tada toks modelis laikomas :data:`base` sinonimu ir iš esmės saugomas tik identifikatorius. Tačiau, jei bent vienas :data:`property.type` yra nurodytas, tada modelis įgyja fizinę reprezentaciją ir turi vieną ar kelis savo laukus, kurių nėra :data:`base` modelyje. Kiekvieną kartą saugant duomenis per kitą modelį į bazę, bazės modelio istorijoje išsaugoma informacija iš kokio modelio atėjo duomenys. **Paveldimumas** :data:`model` paveldi visus laukus, įskaitant ir tuos, kurie nėra nurodyti prie :data:`model` laukų sąrašo. Tai reiškia, kad galima skaityti ir rašyti duomenis į :data:`base`, per :data:`model`. Jei skaitomas ar rašomas laukas, kurio nėra :data:`model` laukų sąraše, tada to lauko duomenys sakomi iš arba rašomi į :data:`base` modelį. Visi modelio laukai, kurie neturi tipo, fiziškai yra priskiriami :data:`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. .. data:: base.source Nenaudojamas. .. data:: 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. .. data:: base.type Nenaudojamas. .. data:: base.ref :data:`model.property` reikšmė, kurios pagalba :data:`model` objektai siejami su :data:`base` objektais. Jei susiejimas pagal vieną model property yra neįmanomas, galima nurodyti kelis :data:`model.property` pavadinimus atskirtus kableliu. Galima naudoti tik tuos :data:`model.property`, kurie neturi nurodyto :data:`property.type`, kas reiškia, kad toks pat laukas turi būti tiek :data:`base`, tiek :data:`model` laukų sąraše. Tais atvejais, kai :data:`base.ref` rodo į modelio lauką, kuris turi tipą, tada :data:`base.level` negali būti didesnis nei `3`, 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. .. data:: base.level :ref:`Brandos lygis `, nurodantis modelio susiejamumą su nurodytu baziniu modeliu. Plačiau žiūrėti :ref:`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. .. data:: 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: - `City` ir `Village` priklauso vienai bazei `Location`. - Kadangi `Location` turi savybes `name@lt` ir `population`, tai `City` ir `Village` modeliuose tą pačią semantinę prasmę turinčios savybės turi turėti lygiai tokius pačius pavadinimus, o :data:`property.type` turi būti tuščias. Kai :data:`property.type` yra tuščias, tai reiškia, kad savybė ateina iš bazinio modelio. - Kadangi `Village` turi papildomą :data:`property` su nurodytu :data:`property.type`, tai reiškia, kad `name` ir population` priklauso bazei, tačiau `region` priklauso `Village` modeliui ir jo nėra bazėje. - Kadangi `Country` semantiškai nėra tas pats, kas `Gyvenviete`, nors ir turi tokias pačias savybes, atskiriame ją nuo `Location` bazė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ą. .. _duomenų-modelis: Duomenų modelis --------------- Duomenų modelis apibrėžia duomenų grupę turinčią tas pačias savybes. Skirtinguose duomenų šaltiniuose ir formatuose, duomenų modelis gali būti išreikštas skirtingomis formomis, pavyzdžiui `sql` duomenų šaltinio atveju, modelis aprašo vieną duomenų bazės lentelę. Kiekvienas modelis turi turėti pirminį raktą, unikalų modelio duomenų identifikatorių. Pirminis raktas aprašomas pateikiant vieną ar kelias :data:`model.property` reikšmes :data:`model.ref` stulpelyje, kurios kartu unikaliai identifikuoja kiekvieną duomenų eilutę. Išimtiniais atvejais, kai modelio duomenų laukų reikšmės turi būti generuojamos dinamiškai ar kitais nestandartiniais atvejais yra galimybė nurodyti model.type reikšmę. Jei :data:`model.type` yra pateiktas, tada už modelio duomenų generavimą, įeinančių duomenų tikrinimą ir visos kitos su modeliu susijusios dalys gali būti pritaikytos konkretaus modelio atvejui. Tačiau, jei reikia keisti tik duomenų pateikimą, užtenka naudoti :data:`model.prepare` formules. .. data:: model.source Modelio pavadinimas šaltinyje. Prasmė priklauso nuo :data:`resource.type`. .. data:: model.prepare Formulė skirta duomenų filtravimui ir paruošimui, iš dalies priklauso nuo :data:`resource.type`. Taip pat skaitykite: :ref:`duomenų-atranka`. .. data:: model.type Jei nurodytą, naudoti išplėstą modelio variantą, jei nenurodyta palikti tuščią. Jei tuščia, naudoti standartinį modelio variantą. Gali būti įrašoma reikšmė `absent`, kuri nurodo, kad modelis buvo ištrintas. .. data:: model.ref Kableliu atskirtas sąrašas :data:`model.property` reikšmių, kurios kartu unikaliai identifikuoja vieną duomenų eilutę (pirminis lentelės raktas). .. data:: model.level Modelio :ref:`brandos lygis `, nusakantis pačio modelio brandos lygį, pavyzdžiui ar nurodytas pirminis raktas, ar modelio pavadinimas atitinka kodiniams pavadinimams kelimus reikalavimus. .. data:: model.access Modeliui priklausančių laukų :ref:`prieigos lygis `. Paveldimas. .. data:: model.uri Sąsaja su :ref:`išoriniu žodynu `. .. data:: model.title Modelio pavadinimas. .. data:: model.description Modelio aprašymas. .. data:: model.property Modeliui priklausantis duomenų laukas. .. _savybė: Savybė ------ Duomenų laukas atspindi tam tikrą modelio savybę arba tai gali būti lentelės stulpelis, jei duomenų šaltinis yra lentelė. .. data:: property.source Duomenų lauko pavadinimas šaltinyje. Prasmė priklauso nuo :data:`resource.type`. .. data:: property.prepare Formulė skirta duomenų tikrinimui ir transformavimui arba statinės reikšmės pateikimui. .. data:: property.type Nurodomas loginis duomenų tipas. Dėl galimų tipų sąrašo žiūrėti :ref:`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: - `integer` - `integer required` - `geometry` - `geometry(linestringm, 3345) required` .. data:: property.ref Priklauso nuo `property.type`, nurodo matavimo vienetus, laiko ar vietos tikslumą, :ref:`klasifikatorių ` arba :ref:`ryšį su kitais modeliais `. Ką tiksliai reiškia šis laukas, patikslinta skyrelyje :ref:`duomenų-tipai`. .. data:: property.level Nurodo duomenų lauko brandos lygį. Žiūrėti :ref:`level`. .. data:: property.access Nurodo prieigos prie duomenų lygį. Žiūrėti skyrių :ref:`access`. .. data:: property.uri Sąsaja su išoriniu žodynu. Žiūrėti :ref:`vocab`. .. data:: 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 :data:`property` kodinis pavadinimas. .. data:: property.description Duomenų lauko aprašymas. .. data:: property.enum Žiūrėti :ref:`enum`. .. _papildomos-dimensijos: Papildomos dimensijos ===================== .. _išorinių-žodynų-prefiksai: Išorinių žodynų prefiksai ------------------------- Sąsają su išoriniais žodynais galima pateikti :data:`model.uri` ir :data:`property.uri` stulpeliuose. Tačiau prieš naudojant žodynus, pirmiausia reikia apsirašyti žodynų prefiksus. Žodynų prefiksai aprašomi taip: .. data:: prefix .. data:: prefix.ref Prefikso pavadinimas. .. data:: prefix.uri Išorinio žodyno URI. .. data:: prefix.title Prefikso antraštė. .. data:: prefix.description Prefikso aprašymas. Rekomenduojama naudoti LOV_ prefiksus. .. _LOV: https://lov.linkeddata.es/dataset/lov/ Aprašyti prefiksai gali būti naudojami :data:`model.uri` ir :data:`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. .. _enum: Klasifikatoriai --------------- .. _Categorical data: https://pandas.pydata.org/pandas-docs/stable/user_guide/categorical.html 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ų. .. data:: enum .. data:: enum.ref Pasirinkimų sąrašo pavadinimas. .. data:: 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 :data:`property.prepare` celėje reikia nurodyti formulę, kuri tuščią reikšmę pakeičia, į kokią nors kitą. Formulės pavyzdys: .. code-block:: python swap('', '-') .. data:: enum.prepare Pateikiama reikšmė, tokia kuri bus naudojama atveriant duomenis. :data:`model.prepare` filtruose taip pat bus naudojama būtent ši reikšmė. `enum.prepare` reikšmės gali kartotis, tokiu būdu, kelios skirtingos `enum.source` reikšmės bus susietos su viena `enum.prepare` reikšme. .. data:: enum.access Klasifikatoriams galima nurodyti skirtingas prieigos teises, tokiu atveju, naudotojas turintis `open` prieigą matys tik tuos duomenis, kurių klasifikatorių reikšmės turi `open` prieigos teises, visi kiti bus išfiltruoti. .. data:: enum.title Fiksuotos reikšmės pavadinimas. .. data:: enum.description Fiksuotos reikšmės aprašymas. Pagal nutylėjimą, jei :data:`property.prepare` yra tuščias ir :data:`property` turi :ref:`enum` 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 :data:`property.prepare` stulpelyje reikia įrašyti `self.choose(self)`. .. _param: Parametrai ---------- Parametrai leidžia iškelti tam tikras duomenų paruošimo operacijas į parametrus kurie gali būti naudojami :ref:`dimensijos`, kurioje apibrėžtas parametras kontekste. Parametrai gali gražinti :term:`iteratorius`, kurių pagalba galima dinamiškai kartoti :data:`resource` duomenų skaitymą, panaudojant aprašytus parametrus. Taip pat parametrų pagalba galima sudaryti reikšmių sąrašus, kurių pagalba galima kartoti :data:`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ą :ref:`param` 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, |nbsp| title | cities/{country.code} | | +----+---+---+---+---+------------+----------+-----------------------+-----------------------------+-----------------------+ | 7 | | | | | | param | country | Country | select(code) | +----+---+---+---+---+------------+----------+-----------------------+-----------------------------+-----------------------+ | 8 | | | | | country | ref | Country | | param("country").code | +----+---+---+---+---+------------+----------+-----------------------+-----------------------------+-----------------------+ | 9 | | | | | title | string | | TITLE | | +----+---+---+---+---+------------+----------+-----------------------+-----------------------------+-----------------------+ .. data:: param .. data:: param.ref Parametro :term:`kodinis pavadinimas`. .. data:: param.prepare Formulė, kuri grąžina sąrašą reikšmių aprašomam parametrui. .. data:: param.source Jei reikšmė pateikta, tada ši reikšmė perduodama formulei kaip `self`. Pavyzdžiui, jei :data:`param.prepare` pateikta formulė `select(code)`, o :data:`param.source` nurodyta `Country`, tai formulė bus iškviesta taip `select("Country", code)`. Jei parametro reikšmė yra :term:`iteratorius`, tada :term:`dimensija`, kurios kontekste yra aprašytas :ref:`parametras ` yra kartojama tiek kartų, kiek reikšmių grąžina :term:`iteratorius`. Jei yra keli :ref:`param` grąžinantys :term:`iteratorius`, tada iš visų :term:`iteratorių ` sudaroma `Dekarto sandauga`_ ir :data:`resource` dimensija vykdoma su kiekviena sandaugos rezultato reikšme. .. _Dekarto sandauga: https://lt.wikipedia.org/wiki/Dekarto_sandauga Jei sekančioje :term:`DSA` eilutėje, einančioje po eilutės, kurioje aprašytas :ref:`param`, nenurodytas :data:`type` ir neužpildytas joks kitas :term:`dimensijos ` stulpelis, tada parametras tampa :term:`iteratoriumi `, kurio reikšmių sąrašą sudaro sekančiose eilutėse patektos :data:`source` ir :data:`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, |nbsp| 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į. :ref:`param` reikšmės pasiekiamos naudojanti pavadinimą įrašytą :data:`param.ref` stulpelyje. Pavyzdžiui, jei :data:`param.ref` stulpelyje įrašyta `x`, tada `x` parametro reikšmę galima gauti taip: .. describe:: source `{x}`. .. describe:: prepare `x` arba `param(x)`. Parametrų generavimui galima naudoti tokias formules: .. describe:: param.prepare .. function:: range(stop) Sveikų skaičių generavimas nuo 0 iki `stop`, `stop` neįeina. .. function:: range(start, stop) :noindex: Sveikų skaičių generavimas nuo `start` iki `stop`, `stop` neįeina. .. function:: scalar(name) Jei nurodytas :data:`param.source`, tada imama tik `name` lauko reikšmė, o ne visi modelio laukai. Jei užpildytas :data:`param.source` stulpelis, tada :data:`param.prepare` stulpelyje galima naudoti filtrą nurodyto :data:`param.source` modelio duomenims filtruoti, o naudojant parametrus galima nurodyti ir modelio laukų pavadinimus, pavyzdžiui: .. describe:: source `{x.field}`. .. describe:: prepare `x.field` arba `param(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 :data:`switch` dimensiją. .. data:: switch .. data:: switch.source Reikšmė, kuri bus atveriama. .. data:: switch.prepare Sąlyga, naudojant einamojo modelio laukus. Jei sąlyga tenkinama, tada laukui priskiriama :data:`switch.source` reikšmė. Jei sąlyga netenkinama, tada bandoma tikrinti sekančią sąlygą. Parenkama ta reikšmė, kurios pirmoji sąlyga tenkinama. Jei :data:`switch.prepare` yra tuščias, tada sąlyga visada teigiama ir visada grąžinama :data:`switch.source` reikšmė. Komentavimas ------------ Dirbant su :term:`DSA` yra galimybė komentuoti eilutes, naudojant papildomą :data:`comment` dimensiją, kurią galima naudoti bet kurios kitos dimensijos kontekste. .. data:: comment .. data:: comment.id Komentaro numeris. .. data:: comment.ref Komentuojamo vieno ar kelių kableliu atskirtų :data:`property` pavadinimai. Galima nurodyti ne tik stulpelio pavadinimą, bet ir dimensiją. .. data:: comment.source Komentaro autorius. .. data:: comment.prepare Keitimo pasiūlymas, naudojant `create()`, `update` ir `delete()` funkcijas. Pavyzdžiui:: update(property: "pavadinimas@lt", type: "text") Šiuo atveju nurodoma, kad siūloma keisti `property` pavadnimą į `pavadinimas@lt`, o `type` į `text`. .. data:: comment.level Nurodoma, kad patenkinus keitimo sliūlymą, kuris nurodytas :data:`comment.prepare` stulplyje, komentuojamai eilutei gali būti suteiktas nurodytas brandos lygis. .. data:: 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. .. data:: 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 :data:`comment.id`, nurodant, kad tai yra atsakymas į ankstesnį komentarą. URI pateikiami sutrumpinta forma, naudojant prefikstus. Žiūrėti skrių :ref:`vocab`. .. data:: comment.title Komentaro data, `ISO 8601`_ formatu. .. _ISO 8601: https://en.wikipedia.org/wiki/ISO_8601 .. data:: 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 ----------------- :data:`title` ir :data:`description` stulpeliuose tekstas rašomas lietuvių kalba, tačiau galima pateikti tekstą ir kita kalba, panaudojus papildomą :data:`lang` dimensiją, kurią reikia naudoti prieš eilutę, kuriai pateikiamas tekstas kita kalba. .. data:: lang .. data:: lang.ref `ISO 639-1`_ dviejų simbolių kalbos kodas. .. _ISO 639-1: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes .. data:: lang.title Pavadinimas :data:`lang.ref` stulpelyje nurodyta kalba. .. data:: lang.description Aprašymas :data:`lang.ref` stulpelyje nurodyta kalba. .. _struktūros-keitimas: Struktūros keitimas ------------------- Laikui einant, pirminių duomenų šaltinių arba jau atvertų duomenų struktūra keičiasi, papildoma naujais :term:`modeliais ` ar :term:`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 :data:`migrate` dimensijos pagalba, kuri gali būti naudojama, bet kurios kitos dimensijos kontekste. .. note:: 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\ |nbsp|\ 16:29 Pirmoji migracija. 2 migrate 1 2021-12-21\ |nbsp|\ 16:33 Antroji migracija. 3 migrate 2 2022-06-21\ |nbsp|\ 16:41 Trečioji migracija. \ datasets/example/migrate -- --------------------------- -------- --- ------------------------- ----- ----------------------------- ------------------- \ Country id -- -- -- -- ------------------ -------- --- ------------------------- ----- ----------------------------- ------------------- \ id integer 4 -- -- -- -- -- --------------- -------- --- ------------------------- ----- ----------------------------- ------------------- \ code string 3 \ migrate 1 create(level:\ |nbsp|\ 2) \ migrate 3 update(level:\ |nbsp|\ 3) \ name string \ migrate 2 create() == == == == == =============== ======== === ========================= ===== ============================= =================== Pavyzdyje aukščiau matome, kad šis duomenų struktūros aprašas turi tris migracijas: 1. 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.code` lauko, kuri trečiojo migracijoje keičiamas brandos lygis. 2. Antrosios migracijos metu buvo įtrauktas naujas duomenų laukas `Country.name`. 3. Trečiosios migracijos metu, buvo keičiami `Country.code` lauko 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. .. data:: migrate .. data:: 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 :data:`migrate` nepriklauso jokiam dimensijos kontekstui. .. data:: migrate.ref Ankstesnės migracijos numeris, pateiktas :data:`migrate.id` stulpelyje, arba tuščia, jei prieš tai jokių kitų migracijų nebuvo. Naudojamas jei :data:`migrate` nepatenka į jokios dimensijos kontekstą. Jei :data:`migrate` aprašomas dimensijos kontekste, tada šis stulpelis nenaudojamas. .. data:: migrate.prepare Migracijos operacija. Galimos tokios operacijos: .. function:: create() Priklausomai nuo dimensijos konteksto, prideda naują modelį, arba savybę. Funkcijai galima perduoti `ref` ir kitus vardinius argumentus, kurie atitinka :term:`DSA` lentelės metaduomenų stulpelių pavadinimus. .. function:: 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 `ref` ir kitus vardinius argumentus, kurie atitinka :term:`DSA` lentelės metaduomenų stulpelių pavadinimus. Perduodami tik tie vardiniai argumentai, kuriuos atitinkantys metaduomenys keičiasi. .. function:: delete() Priklausomai nuo dimensijos konteksto, šalina modelį ar savybę. Pašalinto modelio ar savybės :data:`type` keičiamas į `absent` reikšmę. .. function:: filter(where) Naudojamas :data:`property` kontekste, kai vykdoma duomenų migracija. Nurodo, kad migracija taikoma tik `where` są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. .. data:: 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 :data:`migrate` nepatenka į jokios dimensijos kontekstą. .. data:: migrate.description Migracijos atliekamo pakeitimo trumpas aprašymas. .. |nbsp| unicode:: 0xA0 :trim: