Duomenų šaltiniai¶
Duomenų šaltinių aprašai leidžia automatizuoti duomenų surinkimą iš įvairių šaltinių, juos patikrinti ir konvertuoti į kitus formatus.
Šaltinio duomenų struktūros aprašas atrodo taip:
name: <rinkinys>
type: dataset
resources:
<resursas>:
type: <šaltinio tipas>
source: <resurso šaltinis>
sourceparams:
objects:
<objektas>:
source: <objekto šaltinis>
sourceparams:
properties:
<savybė>:
type: <savybės tipas>
source: <savybės šaltinis>
sourceparams:
Šis aprašas yra suderinamas su DCAT žodynu, tačiau DCAT žodyno elementai sudaro tik nedidelę dalį. Šaltinio aprašas yra išplėstas ir leidžia aprašyti ne tik duomenų rinkinio ir resurso metaduomenis, bet ir detalią objektų ir savybių struktūrą, duomenų šaltinius, susieti pavadinimus su vieningu žodynu ir pan.
Šaltinio duomenų aprašo pagrindą sudaro:
- rinkinys
- resursas
- objektas
- savybė
Žemiau pateikiami išsamesni apraše naudojamų elementų pažymėtų <>
žymėmis
aprašymai.
- rinkinys
- Duomenių rinkinio sisteminis pavadinimas. Duomenų rinkinys jungia vieną ar kelis duomenų išteklius (resursus).
- resursas
- Resurso pavadinimas gali būti bet koks, tačiau prasminga jį sieti su duomenų bazės ar duomenų failo pavadinimu.
- šaltinio tipas
Šiuo metu palaikomi tokie šaltinio tipai:
csv
html
json
sql
xlsx
xml
Priklausomai nuo šaltinio tipo keičiasi visų kitų elementu interpretavimas.
- resurso šaltinis
- Gali būti duomenų bazė, JSON, XML ar skaičiuoklės failas. Priklauso nuo šaltinio tipo.
- objektas
Objekto pavadinimas gali būti bet koks pavadinimas, tačiau jei pavadinimas yra siejamas su vidiniu žodynu, tada pavadinimas turi atitikti vieną iš
type: model
aprašųname
reikšmę.Jei pavadinimas yra nesiejamas su žodynu, tada pavadinimas turi prasidėti taško simboliu
.
.- objekto šaltinis
- Priklausomai nuo duomenų šaltinio, gali būti duomenų bazės lentelė, CSV failas, JSON elemento kelias, XPath ar skaičiuoklės lapo pavadinimas.
- savybė
Objekto savybės pavadinimas. Jei nesiejama su žodyno, turi prasidėti taško simboliu.
Yra trys rezervuoti savybių pavadinimai:
id
- pirminis objekto raktastype
- objekto pavadinimasrevision
- kontrolinė suma skirta užtikrinti duomenų vientisumą
- savybės tipas
Šiuo metu paliekami šie duomenų tipai:
pk
- pirminis raktasref
- ryšys su kitu objektubackref
- atgalinis ryšys su kitu objektugeneric
- ryšis su kitu neapibrėžtu objektuarray
- masyvas, kuris gali būti sudarytas iš bet kokių kitų tipų reikšmiųobject
- objektas, kuris gali būti sudarytas iš bet kokių kitų tipų reikšmiųstring
- bet kokio ilgio simbolių eilutėinteger
- sveikas skaičius, gali būti neigiamasnumber
- racionalusis skaičiusboolean
- loginis tipasdate
- datadatetime
- data ir laikasspatial
- erdviniai duomenys, gali būti taškas, linija arba plokštumafile
- failasimage
- paveiksliukasurl
- URL adresas
- savybės šaltinis
- Priklausomai nuo šaltinio, gali būti duomenų bazės lentelės laukas, JSON objekto savybė, reliatyvus XPath, skaičiuoklės lapo stulpelis.
Resurso, objekto ir savybės šaltiniai (source
parametras) priklauso nuo
šaltinio tipo, žemiau pateikti visų palaikomų šaltinių aprašymai su
paaiškinimais kaip interpretuojamas source
kiekvienam iš jų.
sourceparams
yra papildomi parametrai, kurie priklauso nuo šaltinio tipo.
Visuose pavyzdžiuose naudojama tie patys šalies duomenys, tik duomenys
pateikiami skirtingais formatais, tačiau galutinis rezultatas visais atvejais
yra identiškas (išskyrus id
lauko reikšmes, plačiau apie tai skaitykite
skyriuje Pirminis raktas).
SQL¶
SQL arba reliacinės duomenų bazių valdymo sistemos.
- resurso šaltinis
SQL resurso šaltinis nurodo duomenų bazę, kurios duomenų struktūra aprašoma.
Dažniausiai duomenų bazės prisijungimai nėra nurodomas duomenų struktūros apraše, kadangi duomenų bazės prisijungimai negali būti viešinami. Duomenų bazės prisijungimai turi būti perduodami per aplinkos kintamuosiuos arba konfigūracijos failus.
Duomenų bazės šaltinis aprašomas naudojant tokią URL schemą:
<db>+<valdiklis>://<naudotojas>:<slaptažodis>@<serveris>:<prievadas>/<pavadinimas>
- db
Duomenų bazės rūšis:
sqlite
postgresql
mysql
mssql
- valdiklis
- Konkretus duomenų bazės valdiklis (angl. driver) naudojamas komunikacijai su duomenų baze.
- naudotojas, slaptažodis
- Duomenų bazės naudotojas ir jo slaptažodis.
- serveris, prievadas
- Serveris ir serverio prievadas kur veikia duomenų bazė.
- pavadinimas
- Duomenų bazės pavadinimas.
- objekto šaltinis
- Duomenų bazės lentelės pavadinimas.
- savybės šaltinis
- Lentelės lauko pavadinimas.
Pavyzdys¶
Tarkime turime PostgreSQL duomenų bazę, kurioje yra lentelę pavadinimu
COUNTRY
, lentelėje yra tokie duomenys:
id | code | country |
---|---|---|
1 | lt | Lietuva |
2 | lv | Latvija |
3 | ee | Estija |
Šios lentelės duomenų aprašas atrodys taip:
name: pavyzdziai/sql
type: dataset
resources:
duombaze:
type: sql
source: postgresql://user:password@host/dbname
objects:
geografija/salis:
source: COUNTRY
properties:
id:
type: pk
source: id
kodas:
type: string
source: code
pavadinimas:
type: string
source: country
Rezultate gauname atvertus duomenis, kuriuos galima pasiekti per šį prieigos tašką:
/geografija/salis/:dataset/pavyzdziai/sql
Atverta lentelė atrodys taip:
id | kodas | pavadinimas |
---|---|---|
23fcdb953846e7c709d2967fb549de67d975c010 |
lt | Lietuva |
6f9f652eb6dae29e4406f1737dd6043af6142090 |
lv | Latvija |
11a0764da48b674ce0c09982e7c43002b510d5b5 |
ee | Estija |
CSV¶
Kableliais atskirti failai.
- resurso šaltinis
- Gali būti nenurodomas, o jei nurodomas naudojamas kaip URL bazė objekto šaltiniui.
- objekto šaltinis
- Pilnas URL iki CSV failo arba reliatyvus kelias iki CSV failo, jei nurodytas resurso šaltinis.
- savybės šaltinis
- Stulpelio pavadinimas iš CSV failo.
Pavyzdys¶
Tarkime turime CSV failą, kuris pasiekiamas adresu
https://example.com/countries.csv
, failo turinys yra toks:
id,code,country
1,lt,Lietuva
2,lv,Latvija
3,ee,Estija
Šio CSV failo duomenų aprašas atrodys taip:
name: pavyzdziai/csv
type: dataset
resources:
example:
type: csv
source: https://example.com/
objects:
geografija/salis:
source: countries.csv
properties:
id:
type: pk
source: id
kodas:
type: string
source: code
pavadinimas:
type: string
source: country
Rezultate gauname atvertus duomenis, kuriuos galima pasiekti per šį prieigos tašką:
/geografija/salis/:dataset/pavyzdziai/csv
Atverta lentelė atrodys taip:
id | kodas | pavadinimas |
---|---|---|
23fcdb953846e7c709d2967fb549de67d975c010 |
lt | Lietuva |
6f9f652eb6dae29e4406f1737dd6043af6142090 |
lv | Latvija |
11a0764da48b674ce0c09982e7c43002b510d5b5 |
ee | Estija |
JSON¶
- resurso šaltinis
- URL iki JSON failo.
- objekto šaltinis
Kelias iki konkretaus elemento JSON duomenyse. Pavyzdžiui, jei turime tokį JSON failą:
{ "foo": { "bar": [ {"baz": 1}, {"baz": 2}, {"baz": 3} ] } }
Tada objekto šaltinis gali būti
foo.bar
, kas nurodo, kad skaitomas tikfoo.bar
esantis masyvas.Jei objekto šaltinis nenurodytas, tada savybės skaitomos iš šakninio JSON objekto.
- savybės šaltinis
- JSON objekto atributas.
Pavyzdys¶
Tarkime turime JSON failą, kuris pasiekiamas adresu
https://example.com/countries.json
, failo turinys yra toks:
{
"countries": [
{"id": 1, "code": "lt", "name": "Lietuva"},
{"id": 1, "code": "lv", "name": "Latvija"},
{"id": 1, "code": "ee", "name": "Estija"}
]
}
Šio JSON failo duomenų aprašas atrodys taip:
name: pavyzdziai/json
type: dataset
resources:
example:
type: json
source: https://example.com/countries.json
objects:
geografija/salis:
source: countries
properties:
id:
type: pk
source: id
kodas:
type: string
source: code
pavadinimas:
type: string
source: name
Rezultate gauname atvertus duomenis, kuriuos galima pasiekti per šį prieigos tašką:
/geografija/salis/:dataset/pavyzdziai/json
Atverta lentelė atrodys taip:
id | kodas | pavadinimas |
---|---|---|
23fcdb953846e7c709d2967fb549de67d975c010 |
lt | Lietuva |
6f9f652eb6dae29e4406f1737dd6043af6142090 |
lv | Latvija |
11a0764da48b674ce0c09982e7c43002b510d5b5 |
ee | Estija |
XML¶
- resurso šaltinis
- URL iki XML failo.
- objekto šaltinis
- XPath užklausa iki elemento iš kurio norime imti duomenis.
- savybės šaltinis
- XPath užklausa, kuri vykdoma objekto šaltinio elementų kontekste.
Pavyzdys¶
Tarkime turime XML failą, kuris pasiekiamas adresu
https://example.com/countries.xml
, failo turinys yra toks:
<root>
<country id="1" code="lt">Lietuva</country>
<country id="2" code="lv">Latvija</country>
<country id="3" code="ee">Estija</country>
</root>
Šio XML failo duomenų aprašas atrodys taip:
name: pavyzdziai/xml
type: dataset
resources:
example:
type: xml
source: https://example.com/countries.xml
objects:
geografija/salis:
source: /root/country
properties:
id:
type: pk
source: "@id"
kodas:
type: string
source: "@code"
pavadinimas:
type: string
source: "text()"
Rezultate gauname atvertus duomenis, kuriuos galima pasiekti per šį prieigos tašką:
/geografija/salis/:dataset/pavyzdziai/xml
Atverta lentelė atrodys taip:
id | kodas | pavadinimas |
---|---|---|
23fcdb953846e7c709d2967fb549de67d975c010 |
lt | Lietuva |
6f9f652eb6dae29e4406f1737dd6043af6142090 |
lv | Latvija |
11a0764da48b674ce0c09982e7c43002b510d5b5 |
ee | Estija |
XLSX¶
- resurso šaltinis
- URL iki XLSX failo.
- objekto šaltinis
- Skaičiuoklės lapo pavadinimas.
- savybės šaltinis
- Skaičiuoklės lentelės stulpelio pavadinimas.
Pavyzdys¶
Tarkime turime XLSX failą, kuris pasiekiamas adresu
https://example.com/countries.xlsx
, šiame skaičiuoklės faile yra lapas
pavadinimu COUNTRIES
, o lapo turinys atrodo taip:
id | code | country |
---|---|---|
1 | lt | Lietuva |
2 | lv | Latvija |
3 | ee | Estija |
Šios lentelės duomenų aprašas atrodys taip:
name: pavyzdziai/xlsx
type: dataset
resources:
duombaze:
type: sql
source: https://example.com/countries.xlsx
objects:
geografija/salis:
source: COUNTRIES
properties:
id:
type: pk
source: id
kodas:
type: string
source: code
pavadinimas:
type: string
source: country
Rezultate gauname atvertus duomenis, kuriuos galima pasiekti per šį prieigos tašką:
/geografija/salis/:dataset/pavyzdziai/xlsx
Atverta lentelė atrodys taip:
id | kodas | pavadinimas |
---|---|---|
23fcdb953846e7c709d2967fb549de67d975c010 |
lt | Lietuva |
6f9f652eb6dae29e4406f1737dd6043af6142090 |
lv | Latvija |
11a0764da48b674ce0c09982e7c43002b510d5b5 |
ee | Estija |