Repository navigation
Add 2014-2020 EU structural-funds domain - #84
Merged
Merged
Conversation
New etl/eu-funds/ domain: one ltlod:EUFundingContract per implementation contract (finmin/sutartys/Contract, ~26k), joined to legal-entities/ by the bare JAR code so the beneficiary (executor_code) and project partners (ConPartner) link with no lookup. ~685 carry a formal project code (via finmin/paraiskos/Project) with the EU / total / decided amounts and a ConFinSource breakdown; the rest are code-less financial-instrument payouts (e.g. partial interest compensation to SMEs) with the beneficiary, dates and aid flags only. ltlod-eu-funds (registered uv tool) keyset-paginates Contract, joins ConPartner/ConFinSource by Contract._id and paraiskos/Project by Contract.project._id, and crosswalks the free-text municipality to the AR sav_kodas (normalising the abbreviation; a unique-stem fallback for "Visagino miesto"). Contracts with no beneficiary code are dropped (3). app/ns.ttl: ltlod:EUFundingContract + ltlod:beneficiary / ltlod:fundingPartner (each with its inverse view on the legal entity) and the amount/flag/date properties; :DayEUFunding on dct:temporal (a day's contract starts). app/eu-funds.ttl container with top-beneficiaries and per-year charts (no children listing for 26k docs). SHACL shapes in etl/shapes/eu-funds.ttl. contracts.trig is gitignored bulk output (~29 MB). Part of `make all`. Two cross-domain cases joined on the JAR code: politicians' companies that received EU funds (vtek × eu-funds), and companies with both EU funds and public contracts (eu-funds × procurement). NOT modelled, documented as gaps: Repayment (lėšų grąžinimai) and kontroles_veiksmai/Suspicion (pažeidimai) are keyed by a project_hash / project_hash_id that is a hash of an unpublished internal SFMIS identifier — tested against every published id (code, _id, project_id, Contract._id) under md5/sha*/crc/blake, salted and prefix/suffix, with no match, so repayments and irregularities cannot be attributed to a beneficiary. The 2021-2027 programme is not on Spinta. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Third Tier 1 source. A new
etl/eu-funds/domain — oneltlod:EUFundingContractper 2014-2020 EU structural-funds implementation contract (finmin/sutartys/Contract, ~26k), joined tolegal-entities/by the bare JAR code so the beneficiary (executor_code) and project partners (ConPartner) link with no lookup. Opens the cases politicians' companies that received EU funds and companies with both EU funds and public contracts.What the data actually is (verified, differs from the original plan)
03.3.1-…) viafinmin/paraiskos/Project, with the EU / total / decided amounts and aConFinSourcebreakdown. The rest are code-less financial-instrument payouts (e.g. partial interest compensation to SMEs) — beneficiary + dates + aid flags only. Per the maintainer's call, all ~26k are kept (maximises the "which companies got EU money" JAR coverage).sutartys/Repaymentandkontroles_veiksmai/Suspicionare keyed by aproject_hash/project_hash_idthat is a hash of an unpublished internal SFMIS id. I tested the allowed hash-comparison bridge — every published id (projectcode,_id,project_id,Contract._id) under md5/sha*/crc/blake, salted and prefix/suffix — 0 matches, so repayments/irregularities can't be attributed to a project or beneficiary. The plannedeu-irregularities-by-beneficiarycase is therefore infeasible;eu-funds-and-procurementreplaces it. The 2021-2027 programme is not on Spinta.Model
ltlod:beneficiary/ltlod:fundingPartner→legal-entities/{code}/#this(each with its own inverse view);sdmx-dimension:refArea→ the municipality;ltlod:euAmount/totalAmount/decidedEuAmount(EUR, coded ones);dct:date+dct:temporal→ the start day;ltlod:implementationFrom/Tillliterals;ltlod:stateAid/deMinimisAidbooleans;dct:identifier→ the project code.ltlod-eu-fundskeyset-paginates Contract, joins ConPartner/ConFinSource byContract._idand the project byContract.project._id, and crosswalks the free-text municipality to the ARsav_kodas.Verification (2026-10-25 finmin feeds)
legal-entities/dangle until the full JAR register is loaded — expected. Gitignored bulk output (~29 MB).EXAMPLES.mdupdated with the two sections only.🤖 Generated with Claude Code