LTLOD tikslas — lietuviškas Knowledge Graph: Lietuvos atvirieji duomenys, sujungti į vientisą, standartais grįstą RDF grafą, kurį galima užklausti, papildyti ir susieti su pasauliniais duomenimis (Wikidata, ES žodynais).
Rinkiniai publikuojami adresu https://linkeddata.lt/: kiekvieną objektą galima naršyti kaip Linked Data dokumentą, o SPARQL užklausas teikti per https://linkeddata.lt/sparql.
Šiame repozitoriuje yra:
- atkuriamos (re-runnable) ETL grandinės (
etl/), kurios kiekvieno paleidimo metu parsisiunčia aktualius duomenis iš oficialių šaltinių ir sugeneruoja RDF rinkinius; - sugeneruoti duomenų rinkiniai (
datasets/current/) — beveik milijonas RDF ketvertų apie administracinius vienetus, Seimo narius, įstaigas; - SPARQL užklausų pavyzdžiai su rezultatais (
queries/EXAMPLES.md).
RDF — W3C standartas duomenims užrašyti grafo pavidalu. Kiekvienas faktas yra trejetas subjektas → predikatas → objektas, o objektai identifikuojami URI adresais, kurie galioja viso interneto mastu. Dėl to skirtingi rinkiniai susijungia savaime — užtenka, kad jie naudotų tuos pačius URI.
Štai tikri duomenys iš šio repozitorijaus (Seimo narys, jo frakcija ir partija):
graph LR
person(["persons/7194/#this"]) -->|foaf:name| name["Algirdas Butkevičius"]
membership(["…/#membership-1322-…"]) -->|org:member| person
membership -->|org:organization| faction(["…/seimas/org-units/1322/#this"])
membership -->|org:memberDuring| interval["time:Interval<br/>nuo 2024-11-14"]
faction -->|skos:prefLabel| fname["Demokratų frakcija<br/>„Vardan Lietuvos“"]
faction -->|org:unitOf| seimas(["organizations/<br/>lietuvos-respublikos-seimas/#this"])
person -->|ltlod:nominatedBy| party(["parties/demokratu-sajunga-…/#this"])
person -->|owl:sameAs| wd(["wikidata: Q394006"])
Narystė čia — atskiras objektas su galiojimo intervalu (org:Membership + time:Interval),
todėl grafas saugo ne tik dabartinę būseną, bet ir istoriją: pasikeitus pareigoms, sena
narystė gauna pabaigos datą, o nauja — pradžios.
Kiekvienas objektas gyvena savo named graph'e (dokumente), kurio URI sutampa su dokumento
adresu. Štai Birštono savivaldybės dokumentas (TriG sintakse;
čia parodyta išskleista absoliuti forma — užfiksuoti failai naudoja santykines URI, pvz.
<admin-units/12/#this>, o bazė pritaikoma krovimo metu; Wikidata susiejimai ir herbas
prijungti iš alignments.trig, koordinatės ir riba iš *-geo.trig praleistos):
<https://linkeddata.lt/admin-units/12/> {
<https://linkeddata.lt/admin-units/12/>
a dh:Item ; # LinkedDataHub dokumentas
sioc:has_container <https://linkeddata.lt/admin-units/> ;
dct:title "Birštono savivaldybė"@lt ;
dct:created "2026-10-13T01:12:44.490+02:00"^^xsd:dateTime ; # ETL paleidimo laikas
foaf:primaryTopic <https://linkeddata.lt/admin-units/12/#this> .
<https://linkeddata.lt/admin-units/12/#this>
a cv:AdminUnit ; # ES Core Location klasė
cv:level atu-type:LTU_SV ; # ES klasifikatorius: savivaldybė
skos:prefLabel "Birštono savivaldybė"@lt ;
skos:notation "12" ; # natūralus raktas iš Adresų registro
dct:isPartOf <https://linkeddata.lt/admin-units/2/#this> ; # → Kauno apskritis
owl:sameAs <http://www.wikidata.org/entity/Q2015893> ; # → Wikidata
foaf:img <https://commons.wikimedia.org/wiki/Special:FilePath/Birstonas%20COA.svg> ; # herbas
schema:validFrom "1998-06-01"^^xsd:date .
}Užklausoms naudojama SPARQL — standartinė RDF užklausų kalba (kaip SQL reliacinėms DB). Pavyzdžiai — žemiau.
| Rinkinys | Objektai | Šaltinis |
|---|---|---|
admin-units |
10 apskričių, 60 savivaldybių, 584 seniūnijos, 26 229 gyvenamosios vietovės ir 61 149 gatvės (streets) |
Adresų registras per get.data.gov.lt |
seimas |
831 visų kadencijų nuo 1990 m. Seimo narys (148 — dabartinėje) su ~21 000 kadencijų, pareigų ir narysčių (galiojimo intervalai), 394 padaliniai (frakcijos, komitetai, komisijos, parlamentinės grupės), 66 partijos, 771 vienmandatė apygarda (pagal kadenciją); Seimo kalendorius nuo 1990 m.: 10 kadencijų, 131 sesija ir 4 771 plenarinis posėdis su protokolais ir stenogramomis; pasirinktinai (make -C etl/seimas votes, numatytai — dabartinė kadencija) plenarinių posėdžių balsavimai: 10-ojoje kadencijoje 5 633 balsavimai su ~336 000 Seimo narių individualių balsų (už / prieš / susilaikė); pasirinktinai (make -C etl/seimas bills, ta pati kadencija) teisės aktų projektai ir svarstyti klausimai: 10-ojoje kadencijoje 2 086 projektai (799 — Seimo narių inicijuoti, su iniciatoriais) ir 4 766 plenariniuose posėdžiuose svarstyti klausimai su stadija, svarstytais projektais, kalbėjusiais Seimo nariais ir e-seimas dokumentu; balsavimai susieti su klausimu, kuriuo balsuota |
apps.lrs.lt XML API |
officials |
viešųjų pareigų ėjimas nuo 1990-03-11: 7 Respublikos Prezidento kadencijos (su laikinai einančiais pareigas), 263 Ministro Pirmininko ir ministrų pareigų laikotarpiai, 134 merų kadencijos ir 88 Lietuvoje išrinktų EP narių mandatai — iš viso 350 asmenų: 162 jau yra Seimo narių rinkinyje (jų pareigos prijungiamos prie to paties asmens), 188 nauji | Wikidata (Prezidentas, Vyriausybė, merai; CC0) + Europos Parlamento atvirieji duomenys (EP nariai; CC BY 4.0) |
declarations |
2 213 metinių turto deklaracijų (2012–2025 ataskaitiniai metai) — 455 asmenys: Seimo nariai, ministrai, merai, EP nariai ir Prezidentas; deklaruotos sumos pagal 23 turto rūšis (iki 2014 m. — litais, nuo 2015 m. — eurais); deklaracijos, pateiktos einant Seimo nario, ministro, viceministro, EP nario, Prezidento ar mero pareigas (viceministrų kol kas nesusiejama — jų sąrašo atviruose šaltiniuose nėra) | VMI viešai skelbiami turto deklaracijų duomenų išrašai (renkama naršyklėje kartą per metus — žr. .claude/skills/harvest-declarations/) |
elections |
2020 ir 2024 m. Seimo rinkimai (abu turai susieti su kalendoriaus dienomis ir išrinkta kadencija); rezultatai visose 71 vienmandatėje apygardoje — 142 apygardų rinkimai, 273 turai su rinkėjų aktyvumu, 1 719 kandidatų rezultatų (678 susieti su Seimo nariais, laimėtojai — visi), 2 272 partijų sąrašų rezultatai apygardose (sąrašų balsai, suskaičiuoti toje apygardoje); vienmandačių apygardų ribos žemėlapyje (constituencies-geo.trig) |
VRK rinkimų rezultatų žemėlapio atviri ArcGIS sluoksniai (rinkimai-vrk.opendata.arcgis.com) |
elections — politinių kampanijų finansai |
Seimo rinkimų (2008–2024 ir naujų bei pakartotinių rinkimų) politinių kampanijų finansai: 1 883 kampanijų dalyviai (kandidatai, partijos, sąrašai), susieti su rinkimais, Seimo nariais (725), partijomis ir kandidatų rezultatais apygardose (485); 5 492 juridinių asmenų įnašai ir 32 269 apmokėtos juridinių asmenų paslaugos (kiekviena atskirai, su JAR kodu ir data kalendoriuje; išlaidų failas campaign-expenses.trig — neįtraukiamas į git, ~21 MB); fizinių asmenų aukos ir paslaugos — tik sumos pagal lėšų šaltinį ar išlaidų paskirtį (25 641 aukų įrašas → 3 741 suma) |
VRK atvirieji duomenys (data.gov.lt 2016, 2017), renkami naršyklėje — VRK API saugo Cloudflare (žr. .claude/skills/harvest-vrk/) |
legal-entities |
visas Juridinių asmenų registras — 547 382 juridiniai asmenys, iš jų 314 788 jau išregistruoti: teisinė forma, statusas, įregistravimo ir išregistravimo dienos kalendoriuje, registruota buveinė (savivaldybė, gyvenamoji vietovė, gatvė, pašto kodas, Adresų registro kodas — 217 987 iš 229 645 registruotų buveinių). Į git įtraukiamos tik 6 028 valstybės ir savivaldybių biudžetinės įstaigos (institutions.trig); likusieji (entities.trig, ~14,4 mln. ketvertų, ~1 GB) sugeneruojami make -C etl/legal-entities entities |
JAR ir Adresų registras per get.data.gov.lt |
facilities (heritage.trig neįtraukiamas į git — sugeneruojamas make -C etl/facilities) |
10 032 švietimo ir mokslo institucijos (5 767 veikiančios, su koordinatėmis; ir uždarytos — su išregistravimo data), 4 130 licencijuotų asmens sveikatos priežiūros įstaigų su ~8 300 veiklos adresų ir 26 058 nekilnojamosios kultūros vertybės; visos susietos su savivaldybe (švietimo įstaigos — ir su seniūnija bei gyvenamąja vietove, paveldas — su seniūnija), įstaigos — su jas valdančiu juridiniu asmeniu (ltlod:legalEntity), registravimo ir licencijavimo datos — su kalendoriumi |
ŠVIS ir VASPVT per get.data.gov.lt; Kultūros vertybių registras — data.gov.lt XLSX (KPD, CC BY 4.0; 2023-02-01 momentinė kopija) |
procurement (failas neįtraukiamas į git — sugeneruojamas make -C etl/procurement) |
viešųjų pirkimų sutartys, sudarytos per paskutinius 12 mėnesių, ne mažesnės nei 10 000 EUR vertės (~56 000; be sutarčių pakeitimų): pirkimo objektas, BVPŽ (CPV) kodas, prekės / paslaugos / darbai, vertė, sudarymo diena; perkančioji organizacija ir tiekėjas susieti per JAR kodą (legal-entities) |
VPT CVP IS sutarčių posistemė per get.data.gov.lt (Valstybės duomenų agentūra, CC BY 4.0) |
vtek |
Lobizmas: 427 lobistai (238 juridiniai asmenys, susieti su JAR kodu; 189 fiziniai — 5 iš jų susieti su politikais), 2 271 lobistinės veiklos deklaracija (1 833 lobistų skaidrumo ir 438 įtaką patyrusių asmenų) su sritimi, užsakovu, teisės akto projektu (388 nurodo Seimo projektų numerius) ir paveiktais asmenimis bei institucijomis (3 103: 1 076 susieti su politikais, 2 509 — su institucijomis ar Seimo komitetais). Privatūs interesai: visos 244 viešos Seimo narių, ministrų, merų, EP narių ir Prezidento privačių interesų deklaracijos (228 susietos su politikais) su 865 darbovietėmis ir paties deklaruojančiojo ryšiais su juridiniais asmenimis (596 ryšiai) | VTEK registrai SKAIDRIS ir PINREG (renkama naršyklėje — žr. .claude/skills/harvest-vtek/); sutuoktinių duomenys, asmens kodai ir el. pašto adresai neskelbiami |
employment (failas employers.trig neįtraukiamas į git — sugeneruojamas make -C etl/sodra; į git įtraukiamas tik kubo aprašas dataset.trig) |
114 316 darbdavių (2026 m. rugpjūtis): kiekvieno juridinio asmens (draudėjo) naujausio mėnesio apdraustųjų skaičius, vidutinis darbo užmokestis ir socialinio draudimo įmokos, taip pat paskutinių 12 mėnesių (SODRA_MONTHS) vidutinis apdraustųjų skaičius, pasvertas vidutinis darbo užmokestis ir įmokų suma; darbdavys susietas su JAR įrašu (ltlod:employer), mėnuo — su kalendoriumi (dct:temporal), registracijos savivaldybė — su administraciniu vienetu. Pasirinktinai (SODRA_CUBE=1) — ir visa mėnesių eilutė (~14 mln. ketvertų) |
Sodros atviri draudėjų duomenys (monthly-{metai}.csv.zip; svetainę saugo Cloudflare, todėl failai atsisiunčiami naršyklėje — žr. .claude/skills/harvest-sodra/) |
land-acquisitions (juridinių asmenų prašymų failas neįtraukiamas į git — sugeneruojamas make -C etl land-acquisitions) |
prašymai Nacionalinei žemės tarnybai leisti įsigyti žemės ūkio ar miškų ūkio paskirties žemės (nuo 2023 m.): 17 842 juridinių asmenų prašymai po vieną — su NŽT sprendimu, prašomu ir jau valdomu plotu, savivaldybe, pateikimo ir sprendimo dienomis, susieti su juridiniu asmeniu, jei NŽT nurodytas pavadinimas atitinka JAR kodą; 121 869 fizinių asmenų prašymai — tik suskaičiuoti pagal savivaldybę, metus ir paskirtį (447 suvestinės, mažiau nei 3 prašymų langeliai praleisti), nes NŽT jų kodus ir vardus užšifruoja | NŽT per get.data.gov.lt; pavadinimų patikra — pagal JAR |
calendar (failas neįtraukiamas į git — sugeneruojamas make -C etl/calendar) |
kalendorius nuo 1977-01-01 (anksčiausia JAR registracija) iki kitų metų pabaigos: metai, mėnesiai ir dienos (2027 m. imtinai — 51 metai, 612 mėnesių, 18 627 dienos), valstybinių švenčių dienos pažymėtos; visos kitų rinkinių datos (posėdžiai, balsavimai, kadencijų, sesijų ir narysčių pradžios bei pabaigos, juridinių asmenų įregistravimas ir išregistravimas, deklaracijų ataskaitiniai metai) susietos su kalendoriaus diena ar metais (dct:temporal) |
sugeneruojama ETL metu; šventės — pagal Švenčių dienų įstatymą ir Darbo kodeksą, su kiekvienos šventės galiojimo datomis (etl/calendar/data/holidays.csv) |
taxonomies |
24 SKOS klasifikatorių: administracinių vienetų lygiai, teisinės formos (iš JAR), statusai, pareigų/padalinių/vietovių/gatvių tipai, Seimo veiklos (sesijų ir posėdžių) tipai, balsavimo būdai, klausimų svarstymo stadijos, deklaruojamo turto rūšys, VMI deklaruojančiųjų pareigybių grupės, valstybinės šventės, žemės paskirtys, NŽT sprendimai dėl žemės įsigijimo, pareiškėjo kodo patikros rezultatai, švietimo įstaigų tipai, kultūros paveldo apsaugos statusai, reikšmingumo lygmenys, objektų rūšys ir vertingųjų savybių pobūdis, lobistinės veiklos sritys, ryšių su juridiniais asmenimis pobūdžiai, asmenų susiejimo būdai | JAR + išvesta iš duomenų |
Rinkiniai tarpusavyje susieti natūraliais raktais (Adresų registro kodai, JAR kodai, Seimo
asmenų ID) — iš bet kurio išorinio rakto galima sukonstruoti objekto URI. Pavyzdžiui, kiekvienos
juridinio asmens registruota buveinė susieta su savivaldybe ir gyvenamąja vietove
(locn:adminUnit) bei gatve (dct:spatial), o jos Adresų registro kodas (locn:addressId)
leidžia prijungti bet kurį adresu paremtą šaltinį.
Administraciniai vienetai papildomai turi koordinates (geo:lat/geo:long, visi lygiai) ir
supaprastintas ribų geometrijas (gsp:asWKT, stambieji lygiai), o gatvės — ašines linijas
(gsp:asWKT, 22 543 iš 61 149 gatvių). Objektai taip pat susieti su
Wikidata (owl:sameAs) ir turi atvaizdus: administracinių vienetų herbus (foaf:img —
reprezentacinis, „ypač tinkamas“ atvaizdas), Seimo narių oficialius portretus ir vietovių
nuotraukas (foaf:depiction).
graph LR
streets[gatvės] -->|dct:isPartOf| admin[admin-units]
legal[juridiniai asmenys] -->|locn:adminUnit · reg. buveinė| admin
legal -->|dct:spatial · reg. buveinė| streets
seimas[Seimo nariai] -->|org:Membership| units[padaliniai]
seimas -->|ltlod:nominatedBy| parties[partijos]
seimas -->|ltlod:electoralDistrict| districts[rinkimų apygardos]
seimas -->|org:role| tax[taxonomies · SKOS]
legal -->|rov:companyType / rov:orgStatus| tax
admin -->|cv:level| atu[ES ATU-type klasifikatorius]
admin -->|geo:lat/long · gsp:asWKT| geo[koordinatės · geometrijos]
streets -->|gsp:asWKT · ašinės linijos| geo
admin -->|owl:sameAs + herbai · foaf:img| wd[(Wikidata)]
seimas -->|owl:sameAs + nuotraukos| wd
seimas -->|epvoc:memberDuringParliamentaryTerm| terms[kadencijos]
declarations[turto deklaracijos] -->|ltlod:declarant| seimas
declarations -->|ltlod:declarant| officials[ministrai, merai, EP nariai, Prezidentas]
officials -->|org:Membership · mero pareigos| admin
officials -->|tas pats asmuo| seimas
contracts[pirkimų sutartys] -->|epo:bindsBuyer / epo:bindsContractor · JAR kodas| legal
contracts -->|dct:temporal| calendar[kalendorius]
interests[privačių interesų deklaracijos] -->|org:Membership · ryšiai| legal
interests -->|ltlod:declarant| seimas
lobbying[lobistinės veiklos deklaracijos] -->|ltlod:lobbyist| lobbyists[lobistai]
lobbyists -->|ltlod:agent| legal
lobbying -->|ltlod:influencedPerson| seimas
lobbying -->|ltlod:draftAct| bills[Seimo teisės aktų projektai]
employment[Sodra: darbdavių stebėjimai] -->|ltlod:employer| legal
employment -->|sdmx-dimension:refArea| admin
land[prašymai įsigyti žemės] -->|ltlod:applicant · patikrinus pavadinimą| legal
land -->|schema:location| admin
sittings[plenariniai posėdžiai] -->|eli-dl:forms_part_of| sessions[sesijos]
sessions -->|eli-dl:parliamentary_term| terms
sessions -->|eli-dl:had_activity_type| tax
sittings -->|eli-dl:recorded_in_a_realization_of| eseimas[(e-seimas: protokolai, stenogramos)]
votes[balsavimai] -->|schema:superEvent| sittings
votes -->|eli-dl:had_voter_favor / _against / _abstention| seimas
items[svarstyti klausimai] -->|schema:superEvent| sittings
votes -->|schema:superEvent| items
items -->|eli-dl:involved_work| bills[teisės aktų projektai]
bills -->|eli-dl:legislative_process_work_creator| seimas
items -->|eli-dl:had_participant_person · kalbėjo| seimas
elections[rinkimai] -->|ltlod:electedTerm| terms
results[rezultatai apygardose] -->|ltlod:election| elections
results -->|ltlod:constituency| districts
results -->|ltlod:candidate| seimas
results -->|ltlod:nominatedBy · ltlod:party| parties
finance[kampanijų finansai] -->|ltlod:inElection| elections
finance -->|ltlod:campaignOf| seimas
finance -->|ltlod:campaignOf · ltlod:nominatedBy| parties
finance -->|ltlod:candidacy| results
finance -->|ltlod:donor · ltlod:provider · JAR kodas| legal
facilities[švietimo, sveikatos įstaigos · paveldas] -->|locn:adminUnit| admin
facilities -->|ltlod:legalEntity| legal
URI schema ir raktų taisyklės: etl/URI-SCHEME.md.
Principas: pirmiausia W3C standartai → tada srities žodynai (ES SEMIC, OP klasifikatoriai, FOAF) → schema.org kaip platus bendrasis fallback'as → savi terminai tik kraštutiniu atveju.
| Sritis | Žodynas |
|---|---|
| Administraciniai vienetai, adresai | SEMIC Core Location 2.1.1 (cv:AdminUnit, cv:level, locn:Address) + ES ATU-type klasifikatorius (LTU_APS, LTU_SV, LTU_SEN…); gatvės — dct:Location |
| Koordinatės ir geometrijos | W3C Basic Geo (geo:lat, geo:long) + OGC GeoSPARQL (gsp:asWKT: ribos, gatvių ašinės linijos) |
| Juridiniai asmenys | RegOrg / Core Business (rov:RegisteredOrganization, rov:companyType, rov:orgStatus); registruota buveinė — W3C ORG org:hasRegisteredSite → org:Site → locn:Address |
| Seimas, partijos | W3C ORG org:FormalOrganization + SEMIC CPOV cv:PublicOrganisation (Seimas) / schema:PoliticalParty (partijos) |
| Organizacijų struktūra, pareigos, narystės | W3C ORG (org:Membership, org:role, org:memberDuring) + W3C Time intervalai — be reifikacijos ir be RDF-star; tuo pačiu modeliu ir Prezidento, ministrų, merų bei EP narių pareigos (mero organizacija — pati savivaldybė) |
| Seimo balsavimai | ES ELI-DL (eli-dl:Vote, eli-dl:decision_method, eli-dl:had_voter_favor / _against / _abstention, eli-dl:number_of_votes_*) + schema:superEvent (balsavimas → posėdis) |
| Seimo teisės aktų projektai, svarstyti klausimai | ES ELI-DL (eli-dl:DraftLegislationWork, eli-dl:legislative_process_work_creator — iniciatoriai, eli-dl:involved_work — klausimas → projektas, eli-dl:occured_at_stage → eli-dl:ProcessStage, eli-dl:had_participant_person — kalbėję Seimo nariai) |
| Seimo kadencijos, sesijos, posėdžiai | ES ELI-DL (eli-dl:ParliamentaryTerm, eli-dl:Activity, eli-dl:forms_part_of, eli-dl:recorded_in_a_realization_of) + Europos Parlamento EPVOC (epvoc:memberDuringParliamentaryTerm) |
| Žemės įsigijimas (NŽT prašymai) | savas ltlod:LandAcquisitionApplication (ltlod:applicant → juridinis asmuo, ltlod:decision → NŽT sprendimas), schema:location → savivaldybė; fizinių asmenų prašymai — W3C Data Cube (qb:Observation: savivaldybė, metai, paskirtis) |
| Turto deklaracijos | savas ltlod:AssetDeclaration (ltlod:declarant ⊑ dct:creator) + schema.org schema:MonetaryAmount (schema:value, schema:currency) kiekvienai deklaruotai sumai; turto rūšis — dct:type → SKOS klasifikatorius; ataskaitiniai metai — dct:temporal → kalendoriaus metai |
| Seimo rinkimai | savi ltlod:Election / ltlod:ElectionRound (⊑ schema:Event, turas → kalendoriaus diena), ltlod:ConstituencyContest (rinkimai apygardoje), ltlod:CandidateResult ir ltlod:PartyListResult (balsai, balsų dalis, vieta, išrinktas) — W3C/ES rinkimų žodyno nėra |
| Politinių kampanijų finansai | savi ltlod:CampaignParticipant, ltlod:CampaignDonation, ltlod:CampaignExpense ir fizinių asmenų sumos (ltlod:CampaignIncomeTotal / ltlod:CampaignExpenseTotal) + schema.org schema:value / schema:currency; lėšų šaltiniai, išlaidų paskirtys ir dalyvių tipai — SKOS klasifikatoriai pagal VRK kodus |
| Švietimo, sveikatos įstaigos, kultūros paveldas | schema.org schema:EducationalOrganization / schema:MedicalOrganization (+ W3C ORG org:Organization, org:subOrganizationOf — skyriai, org:hasSite — veiklos adresai), schema:Permit — licencija, schema:LandmarksOrHistoricalBuildings — kultūros vertybė (schema:containedInPlace — komplekso dalis); vieta — SEMIC locn:Address → locn:adminUnit; buvimo registre laikotarpis — W3C Time intervalas → kalendorius |
| Viešieji pirkimai | ES ePO (eProcurement Ontology): epo:Contract, epo:bindsBuyer / epo:bindsContractor → epo:Buyer / epo:Contractor vaidmenys → epo:playedBy → juridinis asmuo, epo:hasContractValue → epo:MonetaryValue, epo:hasPurpose → BVPŽ (CPV) kodas; OP klasifikatoriai: valiuta, CPV, pirkimo objekto rūšis (contract-nature) |
| Darbdavių statistika (Sodra) | W3C Data Cube (qb:DataSet, qb:Observation — vienas kiekvienam darbdaviui, pasirinktinai ir kiekvienam mėnesiui) + SDMX-RDF sdmx-dimension:refArea (savivaldybė); mėnuo — dct:temporal → kalendoriaus mėnuo; matai ltlod:insuredCount, ltlod:averageWage, ltlod:contributions ir 12 mėnesių ltlod:meanInsuredCount, ltlod:meanAverageWage, ltlod:totalContributions |
| Asmenys | FOAF (+ suderinama su Core Person 2.0) |
| Klasifikatoriai | SKOS |
| Bendrasis fallback | schema.org — tik kur W3C/ES termino nėra: galiojimo ir gyvavimo datos (schema:validFrom/validThrough, schema:foundingDate/dissolutionDate), schema:PoliticalParty, schema:EventSeries/schema:Event (sesijos, posėdžiai) |
| Savi terminai | tik ltlod:nominatedBy — „iškėlusi partija“, ltlod:ElectoralDistrict / ltlod:electoralDistrict — Seimo rinkimų apygarda ir ltlod:AssetDeclaration / ltlod:declarant / ltlod:declaredValue — turto deklaracija, ltlod:LandAcquisitionApplication / ltlod:applicant — prašymas įsigyti žemės, rinkimų rezultatų terminai (ltlod:Election, ltlod:CandidateResult, …) (http://linkeddata.lt/ns#); ES/W3C atitikmenų nėra |
Pasirinkimų motyvacija ir žinomos modeliavimo skolos: etl/ONTOLOGY-NOTES.md.
Reikalavimai:
- Docker — tik
atomgraph/csv2rdfkonteineriui (CSV → RDF normalizacijai).docker-composenereikia — jokios nuolat veikiančios infrastruktūros ETL nenaudoja. - Apache Jena 5.6.0 (atsisiųsti) —
arq/riotCLI transformacijoms ir validacijai. Naujesnės 6.x versijos netinka:arqnebemoka išvesti kvadųCONSTRUCTrezultatų (TriG, žr. apache/jena#4091). Kelias nurodomasJENA_HOMEarbaetl/config.mk. xsltproc— XML šaltinių (Seimo API) transformacijoms (macOS/Linux jau turi).uv— Python įrankiams (Wikidata susiejimas, scraperiai); priklausomybes susitvarko pats.make,curl.
cd etl
make # viskas: taxonomies → calendar → admin-units → seimas →
# officials → declarations → legal-entities
make -C officials all # Prezidentas, ministrai, merai (Wikidata), EP nariai (EP API)
make -C seimas all # tik vienas domenas
make -C seimas photos # papildomai: oficialūs portretai iš lrs.lt
make -C seimas votes # papildomai: plenarinių posėdžių balsavimai (dabartinė kadencija;
# VOTE_TERMS="9 10" — daugiau; ~12 tūkst. užklausų, ~20 min)
make -C seimas bills # papildomai: teisės aktų projektai, jų iniciatoriai ir posėdžiuose
# svarstyti klausimai (ta pati VOTE_TERMS apimtis; dalijasi
# balsavimų atsisiuntimu, + ~200 darbotvarkių ir ~1 min. kadencijai)
make -C declarations all # turto deklaracijos iš įkelto VMI rinkinio (data/vmi-fr0001.json;
# jį kasmet surenka harvest.js naršyklėje — automatinio
# atsisiuntimo nėra: vmi.lt saugo Cloudflare)
make -C elections all # Seimo rinkimų rezultatai apygardose (VRK ArcGIS sluoksniai;
# ELECTIONS="2020 2024" numatytai) ir politinių kampanijų
# finansai iš naršyklėje surinktų VRK CSV (data/vrk-*.csv —
# žr. .claude/skills/harvest-vrk/; be jų praleidžiami)
make -C procurement all # viešųjų pirkimų sutartys (numatytai — paskutiniai 12 mėn.,
# >= 10 000 EUR; kitaip — SINCE=2024-01-01 MIN_VALUE=50000;
# ~56 tūkst. sutarčių, ~30 min.)
make -C sodra # Sodros darbdavių duomenys iš naršykle atsisiųstų
# data/monthly-{metai}.csv.zip (atvira.sodra.lt saugo Cloudflare;
# SODRA_MONTHS=12 — kiek paskutinių mėnesių;
# SODRA_CUBE=1 — ir visa mėnesių eilutė, ~14 mln. ketvertų)
make BASE=https://linkeddata.lt/ # produkcinė bazinė URI (numatytoji — https://localhost:4443/)Kiekvienas rinkinys pereina tas pačias keturias stadijas, tad naujo šaltinio pridėjimas —
tik naujas katalogas su fetch + transformacijos užklausa:
graph LR
src["Šaltiniai<br/>get.data.gov.lt · apps.lrs.lt"] -->|fetch| raw["CSV / XML"]
raw -->|"CSV2RDF / XSLT"| norm["tarpinis RDF"]
norm -->|"graphify:<br/>SPARQL CONSTRUCT"| trig["TriG<br/>(objektas = named graph)"]
trig -->|validate| out["datasets/current/"]
out -->|"reconcile:<br/>Wikidata"| align["alignments.trig<br/>+ herbai, nuotraukos"]
Rezultatas visada atspindi šaltinių būseną paleidimo metu — jokių rankinių žingsnių.
Rinkiniai publikuojami kaip naršomi Linked Data dokumentai per
LinkedDataHub (toliau — LDH). Reikia tik
Docker Desktop (Compose ≥ 2.23); visa infrastruktūra aprašyta docker-compose.yml
(tas pats išdėstymas kaip linkeddatahub.com / Homepage projektuose — nginx, LDH,
vienas Fuseki serveris su atskiromis end-user ir admin saugyklomis, Varnish kešai,
sef-compiler, egress tarpinis serveris ir neprivalomas web-algebra asistentas — jis
paleidžiamas tik su COMPOSE_PROFILES=assistant .env faile ir OpenAI raktu
secrets/openai_api_key.txt).
cp .env_sample .env # vienąkart: diegimo nustatymai (.env neįtraukiamas į git)
make up # sugeneruoja slaptažodžius + serverio sertifikatą ir paleidžia LDH
make install # suteikia viešą skaitymo prieigą, sukuria konteinerių dokumentus ir vardų erdvės
# ontologiją per LDH CLI (reikia ../LinkedDataHub);
# interaktyvus: Enter×4 = lokali aplinka, kitas Base URL = bet kuri LDH instancija
make load # užkrauna datasets/current/*/*.trig tiesiai į triplestore
# (nereikia perkurti — rinkiniai bazei neutralūs; bazė pritaikoma krovimo metu)Po make up LDH pasiekiamas adresu https://localhost:4443/ (savo pasirašytas
sertifikatas — naršyklė įspės; pirmas paleidimas trunka ~1–2 min.). Administravimo
aplinka — https://admin.localhost:4443/.
Svarbu dėl bazinės URI: repozitorijoje užfiksuoti datasets/current/ failai
naudoja santykines URI (be @base), tad yra neutralūs bazei — tas pats rinkinys
tinka bet kuriam diegimui. make load išsprendžia santykines URI pagal .env bazę
(BASE_URI, lokaliai https://localhost:4443/) su riot prieš tdb2.tdbloader, tad
dokumentų URI visada sutampa su LDH adresu. Perkurti prieš krovimą nebūtina —
make -C etl reikia tik norint atsinaujinti duomenis iš gyvų šaltinių.
Duomenų struktūra kuriama dviem lygiais:
- Karkasas (
make install): šakninis dokumentas, konteineriai ir taksonomijų schemos išapp/katalogo per LDH CLI (ldh push, kaip LinkedDataHub-Apps projektuose) — taip dokumentai gaunaldh:ChildrenViewbloką, dėl kurio konteinerių puslapiai rodo vaikų sąrašus. Asmenų konteineris (app/persons.ttl) vietoj jo turi savo rodinį su užklausa: Seimo nariai rodomi nuotraukų tinkleliu, kurį galima filtruoti ir rikiuoti pagal vardą, pavardę, lytį ir iškėlusią partiją. Kartu įdiegiama vardų erdvės ontologija (app/ns.ttl) su 1:N rodiniais (ldh:inverseView): apskrities puslapis rodo jos savivaldybes, komiteto — dabartinius ir buvusius narius, Seimo — padalinius, partijos — jos iškeltus Seimo narius; visi asmenų sąrašai turi tuos pačius filtrus ir rikiavimą kaip asmenų konteineris. Reikia šalia išklonintos LinkedDataHub repozitorijos (../LinkedDataHub, keičiama permake install LDH_HOME=…). - Duomenys (
make load): ETL rinkiniai — viendh:Itemdokumentai susioc:has_containernuorodomis į karkasą — rašomi tiesiogiai įfusekiserverioend-userTDB2 saugyklą (santykinės URI pirma išsprendžiamos pagal.envbazę suriot, tadatdb2.tdbloaderper vienkartinįtdb-loaderkonteinerį), ne po vieną dokumentą per HTTP: ~1 mln. ketvertų užsikrauna per kelias minutes. Pabaigoje suteikiama vieša skaitymo prieiga (make public—ldh admin make-public, kuri per LDH HTTP API suteikiaacl:accessToClassteises). Triplestore prievadai neatveriami į host'ą — SPARQL užklausos teikiamos per LDH: https://localhost:4443/sparql. Krovimas yra append-only: pakartotinismake loadtik papildo saugyklą; švariam perkrovimui:
make down && rm -rf fuseki/end-user && make up && make loadDokumento patikrinimas (Birštono savivaldybė):
curl -k -H "Accept: text/turtle" https://localhost:4443/admin-units/12/Pastabos:
make dropištrina tik LDH vykdymo būseną (fuseki/,ssl/,secrets/,uploads/,datasets/owner,datasets/secretary) —datasets/current/niekada neliečiamas.- Prievadai 81/4443/5443 sutampa su kitų lokalių LDH diegimų (pvz.,
LinkedDataHubrepozitorijos) prievadais — vienu metu gali veikti tik vienas stack'as. - Dokumentai naršomi per LDH konteinerius: kiekvienas ETL dokumentas yra
dh:Itemsusioc:has_container, o konteineriai — LDH CLI sukurtidh:Containerdokumentai išapp/(pvz., https://localhost:4443/admin-units/).
Visi rinkiniai užkraunami į atmintį viena komanda ir užklausiami SPARQL'u:
queries/run.sh <užklausa.rq>Pavyzdys: kas šiuo metu vadovauja Seimo komitetams ir komisijoms, kuri partija juos iškėlė, nuo kada — ir kaip jie atrodo? Viena užklausa kerta šešis failus: asmenis, padalinius, pareigų taksonomiją, partijas, nuotraukas ir Wikidata susiejimus. Narystės su galiojimo intervalais leidžia klausti „kas vadovauja dabar“ — imamos tik narystės be pabaigos datos:
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX time: <http://www.w3.org/2006/time#>
PREFIX ltlod: <http://linkeddata.lt/ns#>
SELECT ?unit ?chair ?party ?since ?photo
WHERE
{
# kiekvienas įrašas — atskiras dokumentas (įvardytas grafas): asmens grafe yra jo
# narystės, intervalai ir nuotraukos, padalinio, pareigų ir partijos — atskiruose
GRAPH ?personGraph
{
?membership a org:Membership ;
org:member ?person ;
org:organization ?org ;
org:role ?roleConcept ;
org:memberDuring ?interval .
FILTER NOT EXISTS { ?interval time:hasEnd ?end }
OPTIONAL { ?interval time:hasBeginning/time:inXSDDate ?since }
?person foaf:name ?chair .
OPTIONAL { ?person foaf:depiction ?photo . FILTER(CONTAINS(STR(?photo), "lrs.lt")) }
}
GRAPH ?roleGraph { ?roleConcept skos:prefLabel ?role }
FILTER(LANG(?role) = "lt" && CONTAINS(LCASE(STR(?role)), "pirminink"))
FILTER(!CONTAINS(LCASE(STR(?role)), "pavaduotoj"))
GRAPH ?orgGraph { ?org skos:prefLabel ?unit }
# partija, iškėlusi narį dabartinei kadencijai (asmuo turi visas jį kada nors iškėlusias)
OPTIONAL {
GRAPH ?tenureGraph
{
?tenure org:member ?person ;
ltlod:nominatedBy ?nominator ;
org:memberDuring ?tenureInterval .
FILTER NOT EXISTS { ?tenureInterval time:hasEnd ?tenureEnd }
}
GRAPH ?partyGraph { ?nominator skos:prefLabel ?party }
}
}
ORDER BY ?unitDaugiau klausimų, į kuriuos duomenys jau atsako (visi su užklausomis ir pilnais rezultatais
queries/EXAMPLES.md):
- kurios savivaldybės turi daugiausia gyvenamųjų vietovių ir kaip atrodo jų herbai;
- kur tiksliai yra bet kuri gatvė (gatvė → vietovė → savivaldybė → apskritis);
- dabartinė Seimo frakcijų sudėtis su iškėlusiomis partijomis ir nuotraukomis;
- kiek biudžetinių įstaigų veikia, o kiek išregistruota, pagal teisines formas;
- kokių juridinių asmenų daugiausia kiekvienoje savivaldybėje (bendrovės, mažosios bendrijos, asociacijos…) ir kurios savivaldybės per paskutinius metus neteko daugiausia juridinių asmenų;
- kurių savivaldybių įstaigos per metus sudarė didžiausios vertės viešųjų pirkimų sutarčių, kurie tiekėjai uždirba daugiausia ir kiek sutarčių pasirašyta savaitgaliais ar per šventes (pirkimai × juridiniai asmenys × administraciniai vienetai × kalendorius);
- kokia dalis objektų jau susieta su Wikidata (
CONSTRUCTpavyzdys papildomai parodo, kaip iš grafo sugeneruoti schema.org profilius kitoms sistemoms); - ką deklaruoja dabartinis Seimas: kiek narių turi butų, žemės, akcijų, pinigų užsienyje ar skolų, ir kokios tai sumos;
- kaip kito vieno politiko deklaruotas turtas per visus metus (iki 2015 m. — litais);
- kurie politikai ėjo daugiausia skirtingų pareigų — Seimo nario, ministro, EP nario, mero;
- kurie Seimo nariai inicijuoja daugiausia teisės aktų projektų ir kokia jų dalis pasiekia priėmimo stadiją;
- kurie Seimo nariai balsavo prieš ar susilaikė dėl projekto, kurį patys inicijavo.
- kurie Seimo nariai yra juridinių asmenų, kurie patys užsiima lobizmu, nariai ar valdymo organų nariai (privatūs interesai × lobistų sąrašas, susieta per JAR kodą);
- kuriuos Seimo narius lobistai veikė dažniausiai, kiek skirtingų lobistų ir kokiose srityse;
- kurių politikų deklaruoti juridiniai asmenys laimi viešuosius pirkimus (privatūs interesai × pirkimų sutartys per JAR kodą — kai įkeltas pirkimų rinkinys).
Turto deklaracijų pjūviai pagal partiją, kadencijos pokyčius, turtą užsienyje ir dalyvavimą
balsavimuose — duomenų istorijoje „Seimo turtas 2024“ (app/stories/seimo-turtas-2024.ttl).
Nauji rinkiniai (integracijos taškai jau paruošti — žr. „kaip pridėti“ žemiau):
- Adresų registro adresai ir jų koordinatės (~1 mln. taškų;
locn:Address+ GeoSPARQL) — administraciniai vienetai reprezentacines koordinates ir supaprastintas ribų geometrijas jau turi (geo:lat/geo:long,gsp:asWKT), lieka adresų lygmens tikslumas; juridinių asmenų registruotos buveinės jau susietos su savivaldybe, vietove ir gatve (JARBuveine⋈ ARPastatas/Patalpaperaob_kodas, SEMICorg:hasRegisteredSite/locn:Addressgrandinė) — lieka patys adresai kaip objektai (pastato puslapis su jame registruotais juridiniais asmenimis); - VRK rinkimų duomenys: Seimo rinkimų rezultatai apygardose (2020, 2024) ir Seimo rinkimų kampanijų finansai (nuo 2008 m.) jau yra (
elections); lieka kiti rinkimai (savivaldybių, Prezidento, EP — jų kampanijų finansai jau surinkti,CAMPAIGN_TYPES), rezultatai apylinkėse, politinė reklama ir narių mokesčiai (docs/sources/elections-financing.md); - viešieji pirkimai — sutartys jau yra (
procurement, ES ePO); lieka pirkimų procedūros (būdas, dalyvių skaičius), subrangovai ir ilgesnė istorija; - kultūros vertybių koordinatės (KVR atvertuose duomenyse jų dar nėra — data.gov.lt pateiktas prašymas jas atverti) ir sveikatos įstaigų veiklos adresų koordinatės.
Žodynų plėtra: apskritys jau turi tiesioginį skos:exactMatch į
NUTS3 (savivaldybėms — LAU — dar lieka);
Core Person terminai atsiradus asmenų gimimo datoms; belyčiai pareigų konceptai
(dabar „pirmininkas“/„pirmininkė“ — atskiri konceptai, kaip šaltinyje).
Kaip pridėti naują rinkinį: sukurti etl/<domenas>/ su Makefile, fetch žingsniu ir
LDH stiliaus mappings/*.rq (žr. etl/admin-units/ kaip šabloną);
papildyti etl/URI-SCHEME.md konteineriu ir natūralaus rakto taisykle;
jei objektai turi atitikmenis Wikidata — pridėti domeną į
etl/tools/src/ltlod_etl/reconcile.py.
Žodynams galioja kaskada ES → W3C → savas (http://linkeddata.lt/ns#).
datasets/current/ atspindi šaltinių būseną paskutinio ETL paleidimo metu — kada tai buvo,
matyti tų failų git istorijoje; make visada sugeneruoja šviežią versiją. Išimtis — turto
deklaracijos: VMI duomenys renkami rankiniu būdu kartą per metus (VMI juos paskelbia iki spalio 1 d.),
todėl jie tokie švieži, koks paskutinis surinkimas (etl/declarations/data/vmi-fr0001.json).
Taip pat ir Sodros darbdavių duomenys: jie tokie švieži, kokie paskutiniai naršyklėje atsisiųsti
etl/sodra/data/monthly-{metai}.csv.zip failai. Vidutinis darbo užmokestis ir apdraustųjų skaičius
pateikiami taip, kaip juos skelbia Sodra (mažų darbdavių darbo užmokesčio Sodra neskelbia — tada jo
nėra ir duomenyse); savivaldybė — darbdavio registracijos, ne darbuotojų gyvenamoji vieta.
Deklaruojantieji su Seimo nariais susiejami pagal vardą ir pavardę (+ Seimo nario kadencijos metus),
kiti — su officials rinkinio asmenimis pagal vardą, pavardę ir tų metų pareigas (ministro, mero,
EP nario, Prezidento); nesusieti lieka etl/declarations/cache/unmatched.csv, niekada nesiejami spėjant.
Ministrų ir merų sąrašai tokie išsamūs, kokie jie yra Wikidata (lrv.lt ir vrk.lt saugo Cloudflare,
todėl tiesioginio atsisiuntimo nėra); viceministrų ir savivaldybių tarybų narių atvirame šaltinyje nėra.
VTEK registrai (lobizmas ir privatūs interesai) taip pat renkami naršyklėje; asmenys su Seimo
nariais, o institucijos su JAR siejami tik vienareikšmiškai sutampant pavadinimui (arba pagal
rankiniu būdu sudarytą sinonimų sąrašą) — kitaip lieka tekstas, kaip nurodyta šaltinyje.
Kiekvienas pagal vardą (be bendro kodo) padarytas susiejimas su asmeniu pažymėtas, kaip jis padarytas
(ltlod:matchMethod → taxonomies/match-methods): pagal vardą ir
pareigas (vardas sutampa, o šaltinyje nurodytos pareigos ar institucija atitinka tuo metu eitas
pareigas), pagal tikslų vardą (vardas vienareikšmis, bet šaltinis to nepatvirtina — silpnesnis
susiejimas, peržiūrėtinas) arba pagal sinonimų sąrašą. Susiejimai pagal kodą (JAR, Seimo asmens ID)
nežymimi — jie tikslūs. Asmuo, kurio mirties data (iš Wikidata, schema:deathDate) ankstesnė už
šaltinio datą, nesiejamas apskritai — bendravardis negali būti kandidatas ar deklarantas po mirties.
Tyrimams, kuriuose minimi asmenys, rinkitės „pagal vardą ir pareigas“ arba
patikrinkite „pagal tikslų vardą“ eilutes rankiniu būdu. Susiejimų tikslumas matuojamas auditu:
make -C etl/audit sample atrenka pavyzdžius peržiūrai (etl/audit/reviews/), o make -C etl/audit score
apskaičiuoja tikslumą pagal susiejimo rūšį ir būdą (su 95 % pasikliautinuoju intervalu).
Prašymai įsigyti žemės su juridiniu asmeniu siejami pagal NŽT nurodytą JAR kodą, bet tik patikrinus, ar kartu nurodytas pavadinimas atitinka to kodo pavadinimą registre (ltlod:applicantCheck): ~100 prašymų pavadinimas akivaizdžiai neatitinka kodo (pvz., įmonės pavadinimas prie Valstybinės mokesčių inspekcijos kodo) — tokie prašymai su juridiniu asmeniu nesiejami, o kodas ir pavadinimas paliekami tokie, kokius paskelbė NŽT (sąrašas peržiūrai — etl/land-acquisitions/cache/name-check.csv). Prašymas ir net NŽT sutikimas — dar ne sandoris; „valdomas plotas“ yra prašyme nurodytas tos pačios paskirties žemės plotas, ne visa pareiškėjo žemė.
Tai išvestinis, neoficialus rinkinys: autoritetingi šaltiniai lieka valstybės registrai ir
Seimo kanceliarija. Wikidata susiejimai daromi automatiškai (deterministinės atitiktys pagal
kodus ir etiketes) — nesusieti objektai fiksuojami peržiūros ataskaitose (etl/*/cache/unmatched*.csv),
tačiau pavienės klaidingos atitiktys galimos. Radę klaidą — praneškite per GitHub issues.
- Kodas (ETL, užklausos, įrankiai) — Apache-2.0.
- Sugeneruoti duomenys (
datasets/current/) — CC BY 4.0, kaip ir šaltiniai: Adresų registro ir JAR duomenys © Registrų centras / Valstybės duomenų agentūra per get.data.gov.lt (CC BY 4.0), Seimo duomenys © Seimo kanceliarija (CC BY 4.0), susiejimai su Wikidata (CC0). Naudodami duomenis nurodykite šiuos šaltinius. - Seimo narių portretai neplatinami šiame repozitorijuje — duomenyse tik nuorodos
(
foaf:depiction) į lrs.lt ir Wikimedia Commons originalus.
Klausimai, idėjos, klaidos, nauji duomenų šaltiniai — laukiami per GitHub issues ir pull requests (žr. „Kaip pridėti naują rinkinį“) arba martynas@atomgraph.com.




