Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ datasets/current/elections/campaign-expenses.trig
# bulk procurement contracts (~56k a year, ~120 MB) — regenerate with `make -C etl procurement`
datasets/current/procurement/contracts.trig

# bulk 2014-2020 EU-funds contracts (~26k, ~29 MB) — regenerate with `make -C etl eu-funds`
datasets/current/eu-funds/contracts.trig

# VTEK browser harvests (SKAIDRIS lobbying, PINREG private interests) — re-harvest with the
# harvest-vtek skill, never edit; data/institution-aliases.csv (curated) IS committed
etl/vtek/data/*.json
Expand Down
23 changes: 22 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,18 @@ make -C etl/insolvency # company insolvency proceedings via get.data.gov
# AVNT territory code to the AR municipality and emits one tidy CSV;
# the lifecycle is a time:Interval on calendar days. Committed output
# (~6.4k proceedings). In `make all`.
make -C etl/eu-funds # 2014-2020 EU structural-funds implementation contracts via
# get.data.gov.lt (finmin): one ltlod:EUFundingContract per
# document (eu-funds/{_id}), from finmin/sutartys/Contract (~26k,
# keyset-paginated) joined to its partners (ConPartner) and
# financing sources (ConFinSource) by _id, and to the project
# applications (finmin/paraiskos/Project) for the code + decision
# amounts. ltlod-eu-funds crosswalks the municipality text to the
# AR code. Beneficiary + partners link by bare JAR code. Most are
# code-less financial-instrument payouts; ~685 carry a project
# code with amounts. Repayments/irregularities are NOT modelled
# (their keys are a hash of an unpublished id). contracts.trig is
# gitignored bulk output (~29 MB). In `make all`.
make -C etl land-acquisitions # NŽT applications to acquire agricultural/forest land (Spinta,
# ~140k rows) + JAR names for the code check (547k rows); legal-entity
# applications per document (applications.trig, ~430k quads, gitignored),
Expand Down Expand Up @@ -430,7 +442,7 @@ since the rows differ in the image cell.
- **dates before the calendar start** (1977-01-01, set by the earliest JAR
registration 1977-11-11) would dangle: extend the calendar range in
`calendar.rq` first (start date + the weekday offset), never drop the link.
Linked now: sittings, votes, agenda items, bill registrations, election rounds, campaign donations and expenses, procurement contracts, lobbying declarations, lobbyist registrations, land-acquisition applications and NŽT
Linked now: sittings, votes, agenda items, bill registrations, election rounds, campaign donations and expenses, procurement contracts, lobbying declarations, lobbyist registrations, EU-funding contract starts, land-acquisition applications and NŽT
decisions (event; a
contract's expiry date is left out — it reaches 2055, past the calendar); terms,
sessions, Seimas seats, unit positions, parliamentary groups, public offices —
Expand Down Expand Up @@ -675,6 +687,15 @@ reports, 624 older intentional bankruptcies added from the tyčiniai list), from
municipalities resolve with 0 dangling (9 rows under the defunct Marijampolė-district code 2651
get no refArea). `ltlod:insolvent` links into `legal-entities/` dangle for every
non-budget-institution until the full JAR register is loaded — expected. Committed output.
EU funds (`eu-funds/`, 2026-10-25 finmin feeds): contracts.trig = 25 978 EU-funding contracts
(3 dropped with no beneficiary code), of which 685 carry a formal project code with EU / total /
decided amounts (805 ConFinSource EU-amount rows); 1 820 project-partner links. All 25 978 graphs
validate, SHACL conforms, no blank nodes; 1 650 distinct start days and all 60 municipalities
resolve with 0 dangling. `ltlod:beneficiary`/`ltlod:fundingPartner` links into `legal-entities/`
dangle until the full JAR register is loaded — expected. Gitignored bulk output (~29 MB).
Repayments and irregularities are not modelled: their `project_hash`/`project_hash_id` keys hash
an unpublished internal SFMIS id — tested against every published id (code, `_id`, `project_id`,
`Contract._id`) under md5/sha*/crc/blake, salted, prefix/suffix, 0 matches. 2021-2027 not on Spinta.
`python3 queries/render-examples.py` re-runs all example queries end-to-end.
Name-based person links, audited 2026-10-21 (`make -C etl/audit score` over the 400-link sample in
`etl/audit/reviews/`, verdicts filled; 0 wrong in 50 means precision >= 92.9 %; the `links` column is the
Expand Down
13 changes: 12 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ kalba (kaip SQL reliacinėms DB). Pavyzdžiai — [žemiau](#ką-jau-galima-atsa
| [`employment`](etl/sodra/) (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](https://atvira.sodra.lt/imones/rinkiniai/index.html) (`monthly-{metai}.csv.zip`; svetainę saugo Cloudflare, todėl failai atsisiunčiami naršyklėje — žr. [`.claude/skills/harvest-sodra/`](.claude/skills/harvest-sodra/SKILL.md)) |
| [`taxes`](etl/taxes/) (failai `taxpayers.trig` ir `taxes-paid.trig` neįtraukiami į git — sugeneruojami `make -C etl taxes`; į git įtraukiamas tik kubo aprašas `dataset.trig`) | 178 177 juridinių asmenų mokesčių įrašai (dviejų VMI srautų sąjunga): 30 764 turi dabartinę mokestinę nepriemoką (bendra, pradelsta, atidėta, atidėta pradelsta — EUR, su registracijos savivaldybe ir VMI skelbimo diena kalendoriuje), 620 689 (juridinis asmuo, metai) sumokėtų mokesčių stebėjimai 2022–2026 m. (175 198 skirtingi asmenys); mokesčių mokėtojas susietas su JAR įrašu (`ltlod:taxpayer`) — jungiasi su pirkimų tiekėjais, Sodros darbdaviais ir kampanijų aukotojais per tą patį kodą | [VMI](https://get.data.gov.lt/datasets/gov/vmi/ja_nepriemokos/:ns) per get.data.gov.lt (`vmi/ja_nepriemokos` nepriemokos ⋈ `vmi/ja_mokesciai` sumokėti mokesčiai, pagal JAR kodą; Valstybės duomenų agentūra, CC BY 4.0) |
| [`insolvency-cases`](datasets/current/insolvency/) | 6 412 įmonių nemokumo bylų: 6 254 bankrotai (iš jų 834 pripažinti tyčiniais) ir 158 restruktūrizavimai; kiekviena byla susieta su JAR įrašu (`ltlod:insolvent`), savivaldybe ir kalendoriaus dienomis (pradžia ir pabaiga — `time:Interval`); nurodomas apygardos teismas, bankroto iniciatorius ir ne teismo / supaprastinto / tyčinio bankroto požymiai. Bankrotų ir restruktūrizavimų ataskaitiniai duomenys — nuo 2020 m., tyčinių bankrotų sąrašas — nuo 1994 m. | [AVNT](https://get.data.gov.lt/datasets/gov/avnt/imoniu_bankrotas/:ns) per get.data.gov.lt (`avnt/imoniu_bankrotas` + `avnt/imoniu_restrukturizavimas` + `avnt/tyciniai_bankrotai`; Valstybės duomenų agentūra, CC BY 4.0) |
| [`eu-funds`](etl/eu-funds/) (failas neįtraukiamas į git — sugeneruojamas `make -C etl eu-funds`) | 25 978 Europos Sąjungos struktūrinių fondų (2014–2020 m.) finansavimo sutarčių: kiekviena susieta su paramos gavėju (`ltlod:beneficiary`) ir projekto partneriais (JAR pagal įmonės kodą), savivaldybe ir pradžios diena kalendoriuje; ~685 turi formalų projekto kodą su skirtomis ES bei bendromis lėšomis (EUR), likusios — finansinių priemonių išmokos (be kodo). Lėšų grąžinimai ir pažeidimai neįtraukti — jų šaltinio raktas yra neskelbiamo vidinio identifikatoriaus maiša; 2021–2027 m. duomenų dar nėra | [Finansų ministerija](https://get.data.gov.lt/datasets/gov/finmin/sutartys/:ns) per get.data.gov.lt (`finmin/sutartys` ⋈ `finmin/paraiskos`; Valstybės duomenų agentūra, CC BY 4.0) |
| [`land-acquisitions`](datasets/current/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](https://get.data.gov.lt/datasets/gov/nzt/paraiskos/Paraiska) per get.data.gov.lt; pavadinimų patikra — pagal JAR |
| [`calendar`](etl/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`](etl/calendar/data/holidays.csv)) |
| [`taxonomies`](datasets/current/taxonomies/) | 27 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, nemokumo bylų rūšys, bankroto iniciatoriai, apygardos teismai | JAR + išvesta iš duomenų |
Expand Down Expand Up @@ -137,6 +138,8 @@ graph LR
taxes -->|dct:temporal| calendar
insolvency[nemokumo bylos] -->|ltlod:insolvent · JAR kodas| legal
insolvency -->|sdmx-dimension:refArea| admin
eufunds[ES fondų finansavimas] -->|ltlod:beneficiary · JAR kodas| legal
eufunds -->|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]
Expand Down Expand Up @@ -189,6 +192,7 @@ Principas: **pirmiausia W3C standartai → tada srities žodynai (ES SEMIC, OP k
| Darbdavių statistika (Sodra) | W3C [Data Cube](https://www.w3.org/TR/vocab-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` |
| Juridinių asmenų mokesčiai (VMI) | W3C [Data Cube](https://www.w3.org/TR/vocab-data-cube/) (`qb:DataSet`, `qb:Observation`) + SDMX-RDF `sdmx-dimension:refArea` (savivaldybė); `ltlod:taxpayer` → juridinis asmuo (JAR kodas); nepriemokos momentinė nuotrauka (`#this`) — `dct:temporal` → kalendoriaus diena, matai `ltlod:arrears`, `ltlod:overdueArrears`, `ltlod:deferredArrears`, `ltlod:deferredOverdueArrears`; sumokėti mokesčiai (`#paid-{metai}`) — `dct:temporal` → kalendoriaus metai, matas `ltlod:taxesPaid` (visi — EUR) |
| Nemokumo bylos (AVNT) | `ltlod:InsolvencyProceeding` — viena byla viename dokumente; `dct:type` → nemokumo rūšis (bankrotas / restruktūrizavimas), `ltlod:insolvent` → juridinis asmuo (JAR kodas), `sdmx-dimension:refArea` → savivaldybė, `ltlod:court` → apygardos teismas, `ltlod:initiatedBy` → bankroto iniciatorius; bylos eiga — W3C [Time](https://www.w3.org/TR/owl-time/) `time:hasTime` → `time:Interval` (`#start` → `#end` `time:Instant` → kalendoriaus diena); loginiai požymiai `ltlod:outOfCourt`, `ltlod:simplified`, `ltlod:intentional` |
| ES fondų finansavimas 2014–2020 (Finansų ministerija) | `ltlod:EUFundingContract` — viena įgyvendinimo sutartis viename dokumente; `dct:identifier` → projekto kodas, `ltlod:beneficiary` → paramos gavėjas, `ltlod:fundingPartner` → projekto partneriai (JAR kodas), `sdmx-dimension:refArea` → savivaldybė; matai `ltlod:euAmount` / `ltlod:totalAmount` / `ltlod:decidedEuAmount` (EUR); `dct:date` + `dct:temporal` → pradžios diena; loginiai požymiai `ltlod:stateAid` / `ltlod:deMinimisAid`. Nėra W3C/ES RDF žodyno sanglaudos projektams — tai `ltlod:` kaskados pabaiga |
| Asmenys | FOAF (+ suderinama su [Core Person 2.0](https://semiceu.github.io/Core-Person-Vocabulary/releases/2.00/)) |
| Klasifikatoriai | [SKOS](https://www.w3.org/TR/skos-primer/) |
| Bendrasis fallback | [schema.org](https://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) |
Expand Down Expand Up @@ -245,6 +249,10 @@ make -C taxes # VMI juridinių asmenų mokesčiai: dabar
make -C insolvency # įmonių nemokumo bylos (AVNT): bankrotai, restruktūrizavimai
# ir tyčiniai bankrotai per get.data.gov.lt; ~6,4 tūkst. bylų,
# susietų su JAR, savivaldybe ir kalendoriumi (į git įtraukiama)
make -C eu-funds # ES struktūrinių fondų (2014–2020 m.) finansavimo sutartys
# per get.data.gov.lt (finmin); ~26 tūkst. sutarčių, susietų su
# paramos gavėjais ir partneriais (JAR), savivaldybe ir
# kalendoriumi; failas neįtraukiamas į git
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ų;
Expand Down Expand Up @@ -444,7 +452,10 @@ Daugiau klausimų, į kuriuos duomenys jau atsako (visi su užklausomis ir pilna
- kurie viešųjų pirkimų tiekėjai yra ar buvo nemokūs (bankrotas ar restruktūrizavimas), ir
kurie politinių kampanijų rėmėjai vėliau tapo nemokūs (pirkimai / kampanijų finansavimas ×
nemokumo bylos per JAR kodą);
- kuriose savivaldybėse iškelta daugiausia bankroto bylų ir kaip jų skaičius kito pagal metus.
- kuriose savivaldybėse iškelta daugiausia bankroto bylų ir kaip jų skaičius kito pagal metus;
- kurių politikų deklaruoti juridiniai asmenys gavo 2014–2020 m. ES struktūrinių fondų paramą
(privatūs interesai × ES fondai per JAR kodą), ir kurios įmonės gavo ir ES paramą, ir laimėjo
viešuosius pirkimus (ES fondai × pirkimai per JAR kodą).

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`).
Expand Down
85 changes: 85 additions & 0 deletions app/eu-funds.ttl
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
@prefix dh: <https://w3id.org/atomgraph/linkeddatahub/document-hierarchy#> .
@prefix ldh: <https://w3id.org/atomgraph/linkeddatahub#> .
@prefix ac: <https://w3id.org/atomgraph/client#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix dct: <http://purl.org/dc/terms/> .
@prefix sp: <http://spinrdf.org/sp#> .
@prefix spin: <http://spinrdf.org/spin#> .

<> a dh:Container ;
dct:title "ES fondų finansavimas"@lt, "EU funding"@en ;
rdf:_1 <#intro> ;
rdf:_2 <#chart-top-block> ;
rdf:_3 <#chart-per-year-block> .

# rdf:_1..3 — intro + the largest EU-funded projects + funding per year. No children listing:
# ~26k contracts in title order answer nothing; a contract is reached from its beneficiary,
# its municipality and its start day.

<#intro> a ldh:XHTML ;
rdf:value """<div xmlns="http://www.w3.org/1999/xhtml">
<p class="lede">2014–2020 m. Europos Sąjungos struktūrinių fondų investicijų projektų įgyvendinimo duomenys (Finansų ministerija). Kiekviena sutartis susieta su paramos gavėju ir projekto partneriais (Juridinių asmenų registre pagal įmonės kodą), savivaldybe ir pradžios diena kalendoriuje.</p>
<p>Didžioji dalis įrašų — finansinių priemonių išmokos (pvz., dalinis palūkanų kompensavimas smulkiajam verslui) be atskiro projekto kodo; maždaug 685 turi formalų projekto kodą su skirtomis ES bei bendromis lėšomis. Lėšų grąžinimai ir nustatyti pažeidimai čia neįtraukti — jų šaltinio raktas yra neskelbiamo vidinio identifikatoriaus maiša, nesusiejama su projektu ar gavėju. 2021–2027 m. laikotarpio atvirų duomenų dar nėra.</p>
</div>"""^^rdf:XMLLiteral .

<#chart-top-block> a ldh:Object ;
rdf:value <#chart-top> .

<#chart-top> a ldh:ResultSetChart ;
dct:title "Daugiausia ES lėšų gavę projektai"@lt, "Projects awarded the most EU funds"@en ;
spin:query <#chart-top-query> ;
ldh:chartType ac:Table ;
ldh:categoryVarName "projektas" ;
ldh:seriesVarName "es_lesos_eur" ;
ldh:seriesVarName "gavejas" .

<#chart-top-query> a sp:Select ;
dct:title "Projektai pagal skirtas ES fondų lėšas"@lt, "Projects by EU funds awarded"@en ;
sp:text """PREFIX dct: <http://purl.org/dc/terms/>
PREFIX ltlod: <http://linkeddata.lt/ns#>

# The coded projects with the largest EU-fund amount (ltlod:euAmount), with the beneficiary
# name as the contract recorded it. Only ~685 contracts carry a project code and amounts.
SELECT ?projektas (SAMPLE(?ben) AS ?gavejas) (SAMPLE(?eu) AS ?es_lesos_eur)
WHERE
{
GRAPH ?graph
{
?contract a ltlod:EUFundingContract ;
dct:identifier ?projektas ;
ltlod:euAmount ?eu ;
ltlod:beneficiaryName ?ben .
}
}
GROUP BY ?projektas
ORDER BY DESC(?es_lesos_eur)
LIMIT 20""" .

<#chart-per-year-block> a ldh:Object ;
rdf:value <#chart-per-year> .

<#chart-per-year> a ldh:ResultSetChart ;
dct:title "Sutartys pagal pradžios metus"@lt, "Contracts by start year"@en ;
spin:query <#chart-per-year-query> ;
ldh:chartType ac:BarChart ;
ldh:categoryVarName "metai" ;
ldh:seriesVarName "sutartys" .

<#chart-per-year-query> a sp:Select ;
dct:title "ES fondų sutarčių skaičius pagal pradžios metus"@lt, "EU-funding contracts by start year"@en ;
sp:text """PREFIX dct: <http://purl.org/dc/terms/>
PREFIX ltlod: <http://linkeddata.lt/ns#>

# Contracts (incl. the code-less instrument payouts) by the year they started.
SELECT ?metai (COUNT(DISTINCT ?contract) AS ?sutartys)
WHERE
{
GRAPH ?graph
{
?contract a ltlod:EUFundingContract ;
dct:date ?date .
}
BIND(SUBSTR(STR(?date), 1, 4) AS ?metai)
}
GROUP BY ?metai
ORDER BY ?metai""" .
Loading
Loading