1
0

B03 Valsts budžeta izpilde: mērķa shēma, avota un mērķa datu līgumi, pārveidošanas noteikumi

- schemas/valsts-budzeta-izpilde-0.1.xsd
- contracts/B03-valsts-budzeta-izpilde.source.odcs.yaml (Valsts kases CSV)
- contracts/B03-valsts-budzeta-izpilde.odcs.yaml (ģenerēts no XSD)
- mappings/B03-izpilde.yaml, docs/IZPILDE.md; CHANGELOG 0.2.0

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016679RwmHsuTFfxt26wP6rk
This commit is contained in:
2026-10-11 10:49:19 +00:00
parent 6a89b97baf
commit 88577135b5
8 changed files with 1017 additions and 2 deletions

View File

@@ -1,5 +1,10 @@
# Izmaiņu žurnāls # Izmaiņu žurnāls
## 0.2.0 — 2026-10-11
- Budžeta izpilde (B03): mērķa shēma `schemas/valsts-budzeta-izpilde-0.1.xsd`, avota līgums `contracts/B03-valsts-budzeta-izpilde.source.odcs.yaml` (Valsts kases CSV), mērķa līgums `contracts/B03-valsts-budzeta-izpilde.odcs.yaml` (ģenerēts no XSD), pārveidošanas noteikumi `mappings/B03-izpilde.yaml`, paraugs `examples/lv-vbi-2026.sample.xml`, apraksts `docs/IZPILDE.md`.
- Budžeta likuma shēma un dati nemainās.
## 0.1.2 — 2026-10-11 ## 0.1.2 — 2026-10-11
- Terminoloģija: „naudas fakts” → „finanšu fakts” un līdzīgi formulējumi pārlūkā, dokumentācijā, shēmas un datu līguma aprakstos (datu struktūra nemainās). - Terminoloģija: „naudas fakts” → „finanšu fakts” un līdzīgi formulējumi pārlūkā, dokumentācijā, shēmas un datu līguma aprakstos (datu struktūra nemainās).

View File

@@ -69,6 +69,18 @@ Datnes nosaukums ir budžeta identifikators.
| `schemas/valsts-budzets-0.1.xsd` | Shēma: viens saknes elements, deviņi ierakstu veidi, vārdnīcas (plūsma, fonds, būtība, bloks, klasifikācija) | | `schemas/valsts-budzets-0.1.xsd` | Shēma: viens saknes elements, deviņi ierakstu veidi, vārdnīcas (plūsma, fonds, būtība, bloks, klasifikācija) |
| `contracts/B15-valsts-budzets.odcs.yaml` | ODCS v3 datu līgums, ģenerēts no XSD (tāpat kā B01–B14) | | `contracts/B15-valsts-budzets.odcs.yaml` | ODCS v3 datu līgums, ģenerēts no XSD (tāpat kā B01–B14) |
### Budžeta izpilde (B03)
Likums ir plāns, izpilde ir fakts. Izpildes datus publicē Valsts kase; šeit glabājas to definīcijas, un VDE tos ielādē katru reizi, kad Valsts kase publicē jaunu datni. Sīkāk: `docs/IZPILDE.md`.
| Datne | Saturs |
|---|---|
| `schemas/valsts-budzeta-izpilde-0.1.xsd` | Mērķa shēma: izpildes fakti pa mēnešiem uz budžeta likuma identifikatoriem (resors, programma, apakšprogramma, EKK) |
| `contracts/B03-valsts-budzeta-izpilde.source.odcs.yaml` | Avota līgums: Valsts kases CSV datne data.gov.lv (kolonnas, secība, kodi) |
| `contracts/B03-valsts-budzeta-izpilde.odcs.yaml` | Mērķa līgums, ģenerēts no XSD |
| `mappings/B03-izpilde.yaml` | Pārveidošanas noteikumi: avota kolonna → shēmas atribūts |
| `examples/lv-vbi-2026.sample.xml` | Paraugs: daži pārveidoti izpildes fakti, pārbaudīti pret XSD |
### Pārlūks ### Pārlūks
| Datne | Saturs | | Datne | Saturs |
@@ -83,6 +95,7 @@ Datnes nosaukums ir budžeta identifikators.
| `docs/MODELIS.md` | Modeļa jēdzieni, konsolidācijas noteikums, pielikumu atbilstība modelim | | `docs/MODELIS.md` | Modeļa jēdzieni, konsolidācijas noteikums, pielikumu atbilstība modelim |
| `docs/IDENTIFIKATORI.md` | Identifikatoru veidošanas noteikumi | | `docs/IDENTIFIKATORI.md` | Identifikatoru veidošanas noteikumi |
| `docs/SADERIBA.md` | Atpakaļsaderības pārbaude: metode, rezultāti, atrastās avotu īpatnības | | `docs/SADERIBA.md` | Atpakaļsaderības pārbaude: metode, rezultāti, atrastās avotu īpatnības |
| `docs/IZPILDE.md` | Budžeta izpilde: avots, plūsma uz VDE, sasaiste ar likumu, ierobežojumi |
| `verification/lv-vb-GGGG.verify.json` | Pārbaudes rezultāts pa pielikumiem | | `verification/lv-vb-GGGG.verify.json` | Pārbaudes rezultāts pa pielikumiem |
### Avoti (`source/`) ### Avoti (`source/`)

View File

@@ -0,0 +1,524 @@
# ODCS v3 datu līgums: B03 Valsts budžeta izpilde (izpildes fakti uz budžeta likuma identifikatoriem)
# Ģenerēts no schemas/valsts-budzeta-izpilde-0.1.xsd (tools/xsd_to_odcs.py, lakehouse). Shēmas daļu nelabot ar roku — labot XSD un ģenerēt no jauna.
# Serveri un SLA pielāgoti: datu kopa tiek veidota VDE no Valsts kases CSV, nevis glabāta ProcessGit.
apiVersion: v3.0.2
kind: DataContract
id: urn:pppa:cac:contract:B03
name: Valsts budžeta izpilde (izpildes fakti uz budžeta likuma identifikatoriem)
version: 0.1.0
status: active
domain: Valsts kā kods (Country as Code)
dataProduct: Valsts budžeta izpilde
tenant: PPP Asociācija (PPPA)
description:
purpose: Valsts pamatbudžeta un speciālā budžeta izpilde pa mēnešiem, iestādēm, programmām, apakšprogrammām un klasifikācijas kodiem, pārveidota
uz tiem pašiem identifikatoriem, kas budžeta likumā (B15), lai plānu un izpildi var salīdzināt bez manuālas sasaistes.
usage: Plāna (B15) un izpildes salīdzināšana VDE; AI aģentu vaicājumi caur MCP.
limitations: Koncepcijas demonstrācija, nav oficiāls izdevums. Plāns ir pieņemtais likums; gada laikā veiktās apropriāciju izmaiņas vēl nav
iekļautas. Valsts pamatbudžeta nodokļu ieņēmumi avotā nav.
servers:
- server: vde
type: postgres
format: iceberg
description: 'VDE (Valsts datu ezerkrātuve): Silver tabula, kurā savienotājs ieraksta pārveidotos izpildes faktus'
customProperties:
- property: table
value: cac_silver.budget_execution
- property: names
value: cac_silver.budget_execution_name
- property: portal
value: https://lakehouse.pppa.lv/
- server: data.gov.lv
type: custom
format: csv
description: Avots (Valsts kase); avota līgums contracts/B03-valsts-budzeta-izpilde.source.odcs.yaml
customProperties:
- property: sourceContract
value: contracts/B03-valsts-budzeta-izpilde.source.odcs.yaml
- property: mapping
value: mappings/B03-izpilde.yaml
schema:
- name: BudgetExecution
logicalType: object
physicalType: xml-element
physicalName: BudgetExecution
description: Viena budžeta gada izpilde (vai tās daļa), kā publicēta konkrētā Valsts kases datnē.
properties:
- name: id
logicalType: string
required: true
logicalTypeOptions:
pattern: lv-vbi-[0-9]{4}(\.p[0-9]{3}|\.names)?
description: 'Izpildes dokumenta identifikators: lv-vbi-GGGG (budžeta gads) un, ja dokuments ir sadalīts daļās, .pNNN vai .names.'
primaryKey: true
unique: true
- name: year
logicalType: string
required: true
- name: asOfMonth
logicalType: integer
required: true
description: Pēdējais mēnesis, par kuru datnē ir dati.
- name: law
logicalType: string
required: false
logicalTypeOptions:
pattern: lv-vb-[0-9]{4}(-r[0-9]+)?(\.[A-Za-z0-9_-]+)*
description: Tā paša gada budžeta likuma datukopa, pret kuru sasaistīti mērķi.
- name: generated
logicalType: string
required: true
- name: Source@publisher
logicalType: string
required: true
- name: Source@dataset
logicalType: string
required: true
- name: Source@url
logicalType: string
required: true
- name: Source@sha256
logicalType: string
required: true
logicalTypeOptions:
pattern: '[0-9a-f]{64}'
- name: Source@modified
logicalType: string
required: true
description: Datnes pēdējo izmaiņu laiks portālā.
- name: Source@rows
logicalType: integer
required: true
- name: Name
logicalType: array
required: false
description: Koda nosaukums, kā avotā (iestāde, resors, programma, funkcija, saistību veids, projekts, klasifikācijas kods, likuma griezuma
kods).
items:
logicalType: string
- name: Name@kind
logicalType: string
required: false
quality:
- type: library
rule: validValues
validValues:
- resort
- institution
- programme
- function
- commitment
- project
- code
- lawCode
- name: Name@key
logicalType: string
required: false
- name: Execution@id
logicalType: string
required: false
logicalTypeOptions:
pattern: lv-vbi-[0-9]{4}\.m(0[1-9]|1[0-2])\.[0-9a-f]{12}
description: 'Izpildes fakta identifikators: lv-vbi-GGGG.mMM.<12 heksadecimālas zīmes>. Zīmes ir SHA-1 no avota rindas atslēgas (mappings/B03-izpilde.yaml,
id.key), tāpēc atkārtotā ielādē tas pats fakts saņem to pašu identifikatoru.'
- name: Execution@month
logicalType: integer
required: false
- name: Execution@flow
logicalType: string
required: false
description: resource — iestādes resursi izdevumu segšanai (dotācija no vispārējiem ieņēmumiem, pašu ieņēmumi, ārvalstu finanšu palīdzība,
speciālā budžeta sociālās apdrošināšanas iemaksas, transferti); atbilst likuma pielikumu pozīcijai „Resursi izdevumu segšanai”. Valsts pamatbudžeta
nodokļu ieņēmumi šajā avotā nav. expenditure — izdevumi; financing — finansēšana.
quality:
- type: library
rule: validValues
validValues:
- resource
- expenditure
- financing
- name: Execution@fund
logicalType: string
required: false
description: basic — valsts pamatbudžets; special — valsts speciālais budžets; loans — aizdevumu un atmaksu budžets; donations — ziedojumi
un dāvinājumi.
quality:
- type: library
rule: validValues
validValues:
- basic
- special
- loans
- donations
- name: Execution@block
logicalType: string
required: false
description: core — valsts pamatfunkciju īstenošana; eu — Eiropas Savienības politiku instrumentu un pārējās ārvalstu finanšu palīdzības līdzfinansētie
projekti un pasākumi. Tās pašas vērtības kā budžeta likumā.
quality:
- type: library
rule: validValues
validValues:
- core
- eu
- name: Execution@consolidation
logicalType: string
required: false
description: net — „Visu resoru NETO – bez transfertiem” (summējams, lai iegūtu izpildi bez savstarpējiem transfertiem); basicTransfers —
pamatbudžeta savstarpējie transferti un atmaksas; basicSpecialTransfers — pamatbudžeta un speciālā budžeta savstarpējie transferti; specialTransfers
— speciālā budžeta savstarpējie transferti. Nekonsolidētu izpildi iegūst, saskaitot visas četras.
quality:
- type: library
rule: validValues
validValues:
- net
- basicTransfers
- basicSpecialTransfers
- specialTransfers
- name: Execution@resort
logicalType: string
required: false
logicalTypeOptions:
pattern: '[0-9]{2}'
description: Budžeta resora (ministrijas vai citas centrālās valsts iestādes) kods, divi cipari. Tas pats kods budžeta likumā un VPK ID pirmajos
divos ciparos.
- name: Execution@institution
logicalType: string
required: false
logicalTypeOptions:
pattern: '[0-9]{11}'
description: Iestādes reģistrācijas numurs (11 cipari); sasaista ar UR un Valsts kancelejas organizāciju reģistru (VPK ID).
- name: Execution@institutionCode
logicalType: string
required: false
description: Iestādes kods Valsts kases sistēmā (mainās starp gadiem; pastāvīgais ir institution).
- name: Execution@programme
logicalType: string
required: false
logicalTypeOptions:
pattern: '[0-9]{2}\.[0-9]{2}\.[0-9]{2}'
description: Programmas vai apakšprogrammas kods PP.AA.SS, kā budžeta likumā (piemēram 19.03.00). Programmai bez apakšprogrammām apakšprogrammas
kods ir programmas kods.
- name: Execution@subprogramme
logicalType: string
required: false
logicalTypeOptions:
pattern: '[0-9]{2}\.[0-9]{2}\.[0-9]{2}'
description: Programmas vai apakšprogrammas kods PP.AA.SS, kā budžeta likumā (piemēram 19.03.00). Programmai bez apakšprogrammām apakšprogrammas
kods ir programmas kods.
- name: Execution@function
logicalType: string
required: false
logicalTypeOptions:
pattern: '[0-9]{2}\.[0-9]{3}'
description: Valdības funkciju klasifikācijas kods (COFOG), piemēram 09.200.
- name: Execution@commitmentKind
logicalType: string
required: false
description: Saistību veida kods (10 cipari), kā budžeta likuma 11. pielikumā; 0000000000 — bez saistību veida.
- name: Execution@project
logicalType: string
required: false
description: Projekta ārējais kods, ja izpilde attiecas uz projektu.
- name: Execution@scheme
logicalType: string
required: false
description: 'Kura klasifikācija ir atribūtā code: ekk — izdevumu ekonomiskā klasifikācija; revenue — ieņēmumu klasifikācija; financing —
finansēšanas klasifikācija. Tās pašas vērtības kā budžeta likumā.'
quality:
- type: library
rule: validValues
validValues:
- ekk
- revenue
- financing
- name: Execution@code
logicalType: string
required: false
description: Zemākā līmeņa klasifikācijas kods (EKK, ieņēmumu vai finansēšanas klasifikācija).
- name: Execution@group
logicalType: string
required: false
description: EKK grupa četru ciparu līmenī (1000, 2000 … 9000) — tas līmenis, kurā izdevumi noteikti budžeta likumā.
- name: Execution@lawCode
logicalType: string
required: false
description: Pozīcija likuma pielikumu griezumā (piemēram 1000, A300, 21710), ja avots to norāda.
- name: Execution@purpose
logicalType: string
required: false
logicalTypeOptions:
pattern: lv-vb-[0-9]{4}(-r[0-9]+)?(\.[A-Za-z0-9_-]+)*
description: 'Budžeta likuma mērķis (Purpose), kuram atbilst izpilde: tā paša gada likums, šī resora apakšprogramma vai programma.'
- name: Execution@lawMatch
logicalType: string
required: false
description: 'Kā izpildes fakts sasaistīts ar tā paša gada budžeta likumu: subprogramme — likumā ir šī resora apakšprogramma; programme —
likumā ir tikai programma; none — likumā šādas programmas nav (piemēram, izveidota gada laikā) vai likums nav ielādēts.'
quality:
- type: library
rule: validValues
validValues:
- subprogramme
- programme
- none
- name: Execution@amount
logicalType: number
required: false
description: Summa euro par mēnesi, kā publicēta. Negatīva vērtība nozīmē samazinājumu (atmaksu, korekciju) vai finansēšanā līdzekļu izlietojumu.
- name: Execution@srcRow
logicalType: integer
required: false
description: Rindas numurs avota datnē (bez virsrakstu rindas).
customProperties: []
- name: Name
logicalType: object
physicalType: xml-element
physicalName: Name
description: Koda nosaukums, kā avotā (iestāde, resors, programma, funkcija, saistību veids, projekts, klasifikācijas kods, likuma griezuma
kods).
properties:
- name: kind
logicalType: string
required: true
quality:
- type: library
rule: validValues
validValues:
- resort
- institution
- programme
- function
- commitment
- project
- code
- lawCode
primaryKey: true
unique: true
- name: key
logicalType: string
required: true
primaryKey: true
unique: true
- name: text()
logicalType: string
required: true
customProperties:
- property: lakehouseTable
value: cac_silver.budget_execution_name
- name: Execution
logicalType: object
physicalType: xml-element
physicalName: Execution
description: 'Viens izpildes fakts: summa par mēnesi vienā avota griezumā.'
properties:
- name: id
logicalType: string
required: true
logicalTypeOptions:
pattern: lv-vbi-[0-9]{4}\.m(0[1-9]|1[0-2])\.[0-9a-f]{12}
description: 'Izpildes fakta identifikators: lv-vbi-GGGG.mMM.<12 heksadecimālas zīmes>. Zīmes ir SHA-1 no avota rindas atslēgas (mappings/B03-izpilde.yaml,
id.key), tāpēc atkārtotā ielādē tas pats fakts saņem to pašu identifikatoru.'
primaryKey: true
unique: true
- name: month
logicalType: integer
required: true
- name: flow
logicalType: string
required: true
description: resource — iestādes resursi izdevumu segšanai (dotācija no vispārējiem ieņēmumiem, pašu ieņēmumi, ārvalstu finanšu palīdzība,
speciālā budžeta sociālās apdrošināšanas iemaksas, transferti); atbilst likuma pielikumu pozīcijai „Resursi izdevumu segšanai”. Valsts pamatbudžeta
nodokļu ieņēmumi šajā avotā nav. expenditure — izdevumi; financing — finansēšana.
quality:
- type: library
rule: validValues
validValues:
- resource
- expenditure
- financing
- name: fund
logicalType: string
required: true
description: basic — valsts pamatbudžets; special — valsts speciālais budžets; loans — aizdevumu un atmaksu budžets; donations — ziedojumi
un dāvinājumi.
quality:
- type: library
rule: validValues
validValues:
- basic
- special
- loans
- donations
- name: block
logicalType: string
required: false
description: core — valsts pamatfunkciju īstenošana; eu — Eiropas Savienības politiku instrumentu un pārējās ārvalstu finanšu palīdzības līdzfinansētie
projekti un pasākumi. Tās pašas vērtības kā budžeta likumā.
quality:
- type: library
rule: validValues
validValues:
- core
- eu
- name: consolidation
logicalType: string
required: true
description: net — „Visu resoru NETO – bez transfertiem” (summējams, lai iegūtu izpildi bez savstarpējiem transfertiem); basicTransfers —
pamatbudžeta savstarpējie transferti un atmaksas; basicSpecialTransfers — pamatbudžeta un speciālā budžeta savstarpējie transferti; specialTransfers
— speciālā budžeta savstarpējie transferti. Nekonsolidētu izpildi iegūst, saskaitot visas četras.
quality:
- type: library
rule: validValues
validValues:
- net
- basicTransfers
- basicSpecialTransfers
- specialTransfers
- name: resort
logicalType: string
required: true
logicalTypeOptions:
pattern: '[0-9]{2}'
description: Budžeta resora (ministrijas vai citas centrālās valsts iestādes) kods, divi cipari. Tas pats kods budžeta likumā un VPK ID pirmajos
divos ciparos.
- name: institution
logicalType: string
required: true
logicalTypeOptions:
pattern: '[0-9]{11}'
description: Iestādes reģistrācijas numurs (11 cipari); sasaista ar UR un Valsts kancelejas organizāciju reģistru (VPK ID).
- name: institutionCode
logicalType: string
required: true
description: Iestādes kods Valsts kases sistēmā (mainās starp gadiem; pastāvīgais ir institution).
- name: programme
logicalType: string
required: true
logicalTypeOptions:
pattern: '[0-9]{2}\.[0-9]{2}\.[0-9]{2}'
description: Programmas vai apakšprogrammas kods PP.AA.SS, kā budžeta likumā (piemēram 19.03.00). Programmai bez apakšprogrammām apakšprogrammas
kods ir programmas kods.
- name: subprogramme
logicalType: string
required: true
logicalTypeOptions:
pattern: '[0-9]{2}\.[0-9]{2}\.[0-9]{2}'
description: Programmas vai apakšprogrammas kods PP.AA.SS, kā budžeta likumā (piemēram 19.03.00). Programmai bez apakšprogrammām apakšprogrammas
kods ir programmas kods.
- name: function
logicalType: string
required: false
logicalTypeOptions:
pattern: '[0-9]{2}\.[0-9]{3}'
description: Valdības funkciju klasifikācijas kods (COFOG), piemēram 09.200.
- name: commitmentKind
logicalType: string
required: false
description: Saistību veida kods (10 cipari), kā budžeta likuma 11. pielikumā; 0000000000 — bez saistību veida.
- name: project
logicalType: string
required: false
description: Projekta ārējais kods, ja izpilde attiecas uz projektu.
- name: scheme
logicalType: string
required: true
description: 'Kura klasifikācija ir atribūtā code: ekk — izdevumu ekonomiskā klasifikācija; revenue — ieņēmumu klasifikācija; financing —
finansēšanas klasifikācija. Tās pašas vērtības kā budžeta likumā.'
quality:
- type: library
rule: validValues
validValues:
- ekk
- revenue
- financing
- name: code
logicalType: string
required: true
description: Zemākā līmeņa klasifikācijas kods (EKK, ieņēmumu vai finansēšanas klasifikācija).
- name: group
logicalType: string
required: false
description: EKK grupa četru ciparu līmenī (1000, 2000 … 9000) — tas līmenis, kurā izdevumi noteikti budžeta likumā.
- name: lawCode
logicalType: string
required: false
description: Pozīcija likuma pielikumu griezumā (piemēram 1000, A300, 21710), ja avots to norāda.
- name: purpose
logicalType: string
required: false
logicalTypeOptions:
pattern: lv-vb-[0-9]{4}(-r[0-9]+)?(\.[A-Za-z0-9_-]+)*
description: 'Budžeta likuma mērķis (Purpose), kuram atbilst izpilde: tā paša gada likums, šī resora apakšprogramma vai programma.'
- name: lawMatch
logicalType: string
required: true
description: 'Kā izpildes fakts sasaistīts ar tā paša gada budžeta likumu: subprogramme — likumā ir šī resora apakšprogramma; programme —
likumā ir tikai programma; none — likumā šādas programmas nav (piemēram, izveidota gada laikā) vai likums nav ielādēts.'
quality:
- type: library
rule: validValues
validValues:
- subprogramme
- programme
- none
- name: amount
logicalType: number
required: true
description: Summa euro par mēnesi, kā publicēta. Negatīva vērtība nozīmē samazinājumu (atmaksu, korekciju) vai finansēšanā līdzekļu izlietojumu.
- name: srcRow
logicalType: integer
required: true
description: Rindas numurs avota datnē (bez virsrakstu rindas).
customProperties:
- property: lakehouseTable
value: cac_silver.budget_execution
quality:
- name: xsd_valid
type: custom
engine: xsd
implementation: schemas/valsts-budzeta-izpilde-0.1.xsd
description: Katra pārveidotā BudgetExecution dokumenta daļa atbilst XSD shēmai
dimension: conformity
- name: id_unique
type: custom
engine: cac-lakehouse
implementation: app.cac_execution:id_unique
description: Izpildes faktu identifikatori ir unikāli visā gadā
dimension: uniqueness
- name: totals_reconcile
type: custom
engine: cac-lakehouse
implementation: app.cac_execution:totals_reconcile
description: Pārveidoto faktu summa katrā gadā sakrīt ar avota datnes summu (nekas nav zaudēts vai pievienots)
dimension: accuracy
- name: resort_known
type: custom
engine: cac-lakehouse
implementation: app.cac_execution:resort_known
description: Resora kods ir Valsts kancelejas organizāciju reģistrā (B01) vai budžeta likumā (B15)
dimension: consistency
slaProperties:
- property: frequency
value: 1
unit: d
element: pārbaude katru dienu (cron 03:30 UTC); pārveidošana, ja mainījusies avota datne vai šī repozitorija commit
- property: retention
value: kārtējais stāvoklis; avota datnes kontrolsumma un commit katrā ielādē (cac_meta.loads)
team:
- role: owner
name: Valsts kase (izpildes dati); PPPA (shēma un pārveidošana)
- role: data steward
name: PPP Asociācija (PPPA)
support:
- channel: issues
url: https://processgit.org/Valsts-Pirmkods/Budget-as-Code/issues
customProperties:
- property: sourceId
value: B03
- property: namespace
value: urn:pppa:vpk:budzeta-izpilde:0.1
- property: rootElement
value: BudgetExecution
- property: identifiers
value: dokuments lv-vbi-GGGG[.pNNN]; fakts lv-vbi-GGGG.mMM.<sha1[:12]>; purpose → lv-vb-GGGG.pr.RR.PP.AA.SS (B15)

View File

@@ -0,0 +1,106 @@
# ODCS v3 datu līgums: B03 Valsts budžeta izpilde — AVOTS (Valsts kases CSV, kā publicēts data.gov.lv).
# Apraksta, ko VDE sagaida no Valsts kases datnes. Ja Valsts kase maina kolonnas vai kodus, ielāde to konstatē un reģistrē kā kļūdu.
# Mērķa (pārveidotās) datu kopas līgums: contracts/B03-valsts-budzeta-izpilde.odcs.yaml. Pārveidošana: mappings/B03-izpilde.yaml.
apiVersion: v3.0.2
kind: DataContract
id: urn:pppa:cac:contract:B03-source
name: Valsts budžeta izpilde — Valsts kases avota datne
version: 0.1.0
status: active
domain: Valsts kā kods (Country as Code)
dataProduct: Valsts budžeta izpilde
tenant: PPP Asociācija (PPPA)
description:
purpose: >-
Nekonsolidēta valsts pamatbudžeta un valsts speciālā budžeta izpilde pa mēnešiem sadalījumā pa iestādēm, gadskārtējā valsts
budžeta likumā apstiprinātām programmām un apakšprogrammām un ieņēmumu, izdevumu ekonomiskās un finansēšanas klasifikāciju
kodiem, atbilstoši Valsts kases valsts budžeta informācijas sistēmā reģistrētajiem datiem.
usage: Avots datu kopai B03 VDE. Datne tiek lejupielādēta, pārbaudīta pret šo līgumu un pārveidota pēc mappings/B03-izpilde.yaml.
limitations: >-
Summas ir mēneša apjoms (nevis uzkrājums). Datnē nav apstiprinātā plāna un gada laikā precizētā plāna — tikai izpilde.
Valsts pamatbudžeta nodokļu ieņēmumi datnē nav (ir iestāžu līmeņa resursi). Kārtējā gada datne tiek aizstāta katru mēnesi;
iepriekšējā gada datne pēc gada slēgšanas var tikt precizēta.
servers:
- server: data.gov.lv
type: custom
format: csv
description: Latvijas Atvērto datu portāls (CKAN), datu kopa ar vienu CSV datni katram gadam
customProperties:
- {property: dataset, value: "https://data.gov.lv/dati/lv/dataset/valsts-budzeta-izpilde-pa-iestadem-budzeta-programmam-apaksprogrammam-un-klasifikacijas-kodiem"}
- {property: api, value: "https://data.gov.lv/dati/api/3/action/package_show?id=valsts-budzeta-izpilde-pa-iestadem-budzeta-programmam-apaksprogrammam-un-klasifikacijas-kodiem"}
- {property: filePattern, value: "adkopai_(\\d{4})\\.csv$"}
- {property: encoding, value: utf-8-sig}
- {property: delimiter, value: ","}
- {property: quote, value: "\""}
- {property: decimalSeparator, value: "."}
schema:
- name: izpilde
logicalType: object
physicalType: csv-file
physicalName: "vb_izpilde_pa_iestadem_budzeta_progr_apakspr_adkopai_<GGGG>.csv"
description: Viena rinda = viena summa par mēnesi vienā griezumā. Kolonnu secība ir fiksēta; virsrakstu rinda ir obligāta.
customProperties:
- {property: lakehouseTable, value: cac_bronze.vk_budget_execution}
properties:
- {name: gads, physicalName: Gads, logicalType: integer, required: true, description: Budžeta gads; sakrīt ar gadu datnes nosaukumā}
- {name: menesis, physicalName: Menesis_Atslega, logicalType: integer, required: true, description: "Mēnesis 1–12", logicalTypeOptions: {minimum: 1, maximum: 12}}
- {name: menesis_nosaukums, physicalName: Menesis_nosaukums, logicalType: string, required: true}
- {name: ministrija_kods, physicalName: Ministrija_Atslega, logicalType: string, required: true, description: Budžeta resora kods (2 cipari), logicalTypeOptions: {pattern: "[0-9]{2}"}}
- {name: ministrija, physicalName: Ministrija_nosaukums, logicalType: string, required: true}
- {name: resora_veids, physicalName: Resora_veids, logicalType: string, required: true}
- {name: iestade_kods, physicalName: Iestade_Atslega, logicalType: string, required: true, description: Iestādes kods Valsts kases sistēmā}
- {name: iestade, physicalName: Iestade_nosaukums, logicalType: string, required: true}
- {name: nmr, physicalName: Iestades_NMR, logicalType: string, required: true, description: Iestādes reģistrācijas numurs, logicalTypeOptions: {pattern: "[0-9]{11}"}}
- {name: budzeta_tips_kods, physicalName: Budzeta_tips_Atslega, logicalType: string, required: true,
quality: [{type: library, rule: validValues, validValues: ["P", "S", "6", "7"]}]}
- {name: budzeta_tips, physicalName: Budzeta_tips_nosaukums, logicalType: string, required: true}
- {name: programma_kods, physicalName: Programma_Atslega, logicalType: string, required: true, logicalTypeOptions: {pattern: "[0-9]{2}\\.[0-9]{2}\\.[0-9]{2}"}}
- {name: programma, physicalName: Programma_nosaukums, logicalType: string, required: true}
- {name: apaksprogramma_kods, physicalName: Apaksprogramma_Atslega, logicalType: string, required: true, logicalTypeOptions: {pattern: "[0-9]{2}\\.[0-9]{2}\\.[0-9]{2}"}}
- {name: apaksprogramma, physicalName: Apaksprogramma_nosaukums, logicalType: string, required: true}
- {name: budzeta_bloks, physicalName: Buzeta_bloks, logicalType: string, required: false, description: "Kolonnas nosaukumā avotā ir drukas kļūda (Buzeta)",
quality: [{type: library, rule: validValues, validValues: ["Pamatfunkcijas", "Ārvalstu finanšu palīdzība"]}]}
- {name: funkcija_l1_kods, physicalName: Funkcija_augstakais_limenis_Atslega, logicalType: string, required: false}
- {name: funkcija_l1, physicalName: Funkcija_augstakais_limenis_Nosaukums, logicalType: string, required: false}
- {name: funkcija_kods, physicalName: Funkcija_zemakaja_limeni_Atslega, logicalType: string, required: false, logicalTypeOptions: {pattern: "[0-9]{2}\\.[0-9]{3}"}}
- {name: funkcija, physicalName: Funkcija_zemakaja_limeni_nosaukums, logicalType: string, required: false}
- {name: saistibu_veids_kods, physicalName: Saistibu_veids_Atslega, logicalType: string, required: false}
- {name: saistibu_veids, physicalName: Saistibu_veids_nosaukums, logicalType: string, required: false}
- {name: projekta_kods, physicalName: Projekta_arejais_kods_Atslega, logicalType: string, required: false}
- {name: projekts, physicalName: Projekts_nosaukums, logicalType: string, required: false}
- {name: klasifikacija, physicalName: Klasifikacija, logicalType: string, required: true,
quality: [{type: library, rule: validValues, validValues: ["Ieņēmumi", "Izdevumi", "Finansēšana"]}]}
- {name: ekk1, physicalName: Vienotais_EKK_Atslega_1_limenis, logicalType: string, required: false}
- {name: ekk2, physicalName: Vienotais_EKK_Atslega_2_limenis, logicalType: string, required: false}
- {name: ekk3, physicalName: Vienotais_EKK_Atslega_3_limenis, logicalType: string, required: false}
- {name: ekk4, physicalName: Vienotais_EKK_Atslega_4_limenis, logicalType: string, required: false}
- {name: ekk5, physicalName: Vienotais_EKK_Atslega_5_limenis, logicalType: string, required: false}
- {name: ekk6, physicalName: Vienotais_EKK_Atslega_6_limenis, logicalType: string, required: false}
- {name: ekk7, physicalName: Vienotais_EKK_Atslega_7_limenis, logicalType: string, required: true, description: Zemākā līmeņa klasifikācijas kods}
- {name: ekk7_nosaukums, physicalName: Vienotais_EKK_Nosaukums_7_limenis, logicalType: string, required: false}
- {name: likuma_griezuma_ekk, physicalName: Likuma_griezuma_EKK, logicalType: string, required: false, description: "Pozīcija likuma pielikumu griezumā: kods un nosaukums, piemēram „1000 Atlīdzība”"}
- {name: konsolidacija, physicalName: Konsolidacija, logicalType: string, required: true,
quality: [{type: library, rule: validValues, validValues: ["Visu resoru NETO - bez transfertiem", "+ pamatbudžeta savstarpējie transferti un atmaksas",
"+ pamatbudžeta/speciālā budžeta savstarpējie transferti", "+ speciālā budžeta savstarpējie transferti"]}]}
- {name: valuta, physicalName: Datu_valuta, logicalType: string, required: true, quality: [{type: library, rule: validValues, validValues: ["Euro"]}]}
- {name: summa, physicalName: Summa, logicalType: number, required: true, description: Summa euro par mēnesi (punkts kā decimālatdalītājs)}
quality:
- {name: source_columns_match, type: custom, engine: cac-lakehouse, implementation: "app.cac_execution:source_columns_match",
description: "Datnes virsrakstu rinda sakrīt ar līgumā noteiktajām kolonnām un to secību", dimension: conformity}
- {name: source_values_valid, type: custom, engine: cac-lakehouse, implementation: "app.cac_execution:source_values_valid",
description: "Obligātās kolonnas aizpildītas; vērtības atbilst šablonam vai pieļaujamo vērtību sarakstam; summa ir skaitlis; gads sakrīt ar datni", dimension: validity}
- {name: source_key_unique, type: custom, engine: cac-lakehouse, implementation: "app.cac_execution:source_key_unique",
description: "Rindas atslēga (mappings/B03-izpilde.yaml, id.key) ir unikāla", dimension: uniqueness}
slaProperties:
- {property: frequency, value: 1, unit: d, element: "pārbaude katru dienu (cron 03:30 UTC); ielāde, ja datne portālā mainījusies"}
- {property: latency, value: 1, unit: month, element: "Valsts kase publicē iepriekšējā mēneša izpildi mēneša sākumā"}
team:
- {role: owner, name: "Valsts kase, Pārskatu departaments"}
- {role: data steward, name: PPP Asociācija (PPPA)}
support:
- {channel: email, url: "mailto:pd@kase.gov.lv", description: Datu turētājs (Valsts kase)}
- {channel: issues, url: "https://processgit.org/Valsts-Pirmkods/Budget-as-Code/issues", description: Līgums un pārveidošana (PPPA)}
customProperties:
- {property: sourceId, value: B03}
- {property: licence, value: CC0-1.0}
- {property: years, value: "2024, 2025, 2026"}

65
docs/IZPILDE.md Normal file
View File

@@ -0,0 +1,65 @@
# Valsts budžeta izpilde (B03)
Budžeta likums (B15) ir plāns. Izpilde ir fakts: cik katra iestāde katru mēnesi faktiski saņēmusi un izlietojusi pa programmām, apakšprogrammām un klasifikācijas kodiem. Šajā repozitorijā glabājas izpildes **definīcijas**; pašus datus publicē Valsts kase, un VDE tos ielādē no turienes.
## Kas kur atrodas
| Datne | Saturs |
|---|---|
| `schemas/valsts-budzeta-izpilde-0.1.xsd` | Mērķa shēma: izpildes fakti uz tiem pašiem identifikatoriem, kas budžeta likumā |
| `contracts/B03-valsts-budzeta-izpilde.source.odcs.yaml` | Avota līgums: ko VDE sagaida no Valsts kases CSV datnes (kolonnas, secība, kodi, pieļaujamās vērtības) |
| `contracts/B03-valsts-budzeta-izpilde.odcs.yaml` | Mērķa līgums: pārveidotie izpildes fakti; ģenerēts no XSD |
| `mappings/B03-izpilde.yaml` | Pārveidošanas noteikumi: avota kolonna → shēmas atribūts, vērtību vārdnīcas, identifikatora un sasaistes ar likumu noteikumi |
Datu mapes izpildei nav. Autoritatīvā datu kopija ir Valsts kases publikācija; katru mēnesi atkārtoti glabāt 300 000+ rindu git repozitorijā nav jēgas.
## Avots
Valsts kase, datu kopa „Valsts budžeta izpilde pa iestādēm, budžeta programmām/apakšprogrammām un klasifikācijas kodiem” Latvijas Atvērto datu portālā (CC0). Viena CSV datne katram gadam; kārtējā gada datne tiek aizstāta katru mēnesi. Summas ir mēneša apjoms, nevis uzkrājums no gada sākuma. Datnē ir tikai izpilde — nav apstiprinātā un precizētā plāna.
## Plūsma
```
data.gov.lv (Valsts kase, CSV) ProcessGit Budget-as-Code (šis repozitorijs)
│ shēma · avota līgums · mērķa līgums · pārveidošanas noteikumi
▼ │
VDE savienotājs (katru dienu 03:30 UTC) ◄──────────────────────┘ lasa tajā pašā commit
1. pārbauda, vai datne portālā mainījusies (ja nē — izlaiž)
2. avota līguma pārbaudes: kolonnas un secība, vērtības, atslēgas unikalitāte
3. Bronze: cac_bronze.vk_budget_execution — rindas, kā saņemtas
4. pārveidošana pēc mappings/B03-izpilde.yaml → BudgetExecution dokumenti (pa 20 000 ierakstiem), katrs pārbaudīts pret XSD
5. Silver: cac_silver.budget_execution — izpildes fakti ar likuma mērķi (purpose)
6. mērķa līguma pārbaudes: identifikatori unikāli, summas sakrīt ar avotu, resors zināms
7. Gold: plāns pret izpildi pa resoriem un apakšprogrammām; izpilde pa mēnešiem
```
## Sasaiste ar budžeta likumu
Izpildes fakts saņem atribūtu `purpose`, ja tā paša gada likumā ir šī resora apakšprogramma (`lv-vb-GGGG.pr.RR.PP.AA.SS`) vai — ja nav — programma. Pretējā gadījumā `lawMatch="none"`: parasti tā ir programma vai apakšprogramma, kas izveidota gada laikā (piemēram, finansējums no 74. resora „Gadskārtējā valsts budžeta izpildes procesā pārdalāmais finansējums”).
Kopējās vērtības:
| Vērtība | Avotā | Likumā (B15) |
|---|---|---|
| Resors | `Ministrija_Atslega` | Purpose `kind="resort"`, Actor `code` |
| Programma, apakšprogramma | `Programma_Atslega`, `Apaksprogramma_Atslega` | Purpose `code` |
| Budžeta veids | `Budzeta_tips_Atslega` P / S | `fund` basic / special |
| Bloks | `Buzeta_bloks` | `block` core / eu |
| Funkcija | `Funkcija_zemakaja_limeni_Atslega` | Purpose `function` |
| Saistību veids | `Saistibu_veids_Atslega` | `commitmentKind` |
| EKK grupa | `Vienotais_EKK_Atslega_4_limenis` | Allocation `code` (izdevumi) |
| Iestāde | `Iestades_NMR` | — (likumā nav iestāžu līmeņa) → VPK ID caur B01 |
## Ko salīdzinājums parāda un ko nē
- Plāns ir **pieņemtais** likums. Gada laikā apropriācijas mainās (74. resora pārdale, apropriāciju pārdale un palielināšana saskaņā ar Likumu par budžetu un finanšu vadību, likuma grozījumi). Šīs izmaiņas vēl nav datu kopā, tāpēc izpilde virs 100 % vai programma bez plāna ne vienmēr nozīmē pārkāpumu.
- Izpilde ir „Visu resoru NETO – bez transfertiem” (`consolidation="net"`). Nekonsolidētu izpildi iegūst, saskaitot visas četras konsolidācijas pazīmes.
- Valsts pamatbudžeta nodokļu ieņēmumi šajā avotā nav; `flow="resource"` ir iestāžu līmeņa resursi izdevumu segšanai.
## Nākamie avoti
| Kas | Turētājs | Statuss |
|---|---|---|
| Precizētais plāns (tāmes ar grozījumiem) | Valsts kase | Iespējams `opendata.kase.gov.lv/api/v1/valsts_budzeta_tames`; jānoskaidro vaicājuma parametri |
| Valsts konsolidētā budžeta ieņēmumu izpilde (nodokļi) | Valsts kase, VID | Jāpārbauda |
| Mērķdotāciju izlietojums pašvaldībās | Valsts kase (pašvaldību budžeti) | Jāpārbauda |

77
mappings/B03-izpilde.yaml Normal file
View File

@@ -0,0 +1,77 @@
# B03 Valsts budžeta izpilde — pārveidošanas noteikumi (avota CSV → mērķa shēma valsts-budzeta-izpilde-0.1.xsd).
# Šo datni lasa VDE savienotājs (lakehouse app/cac_execution.py) katrā ielādē tajā pašā commit, kurā ir shēma un datu līgumi.
# Labojot noteikumus, jāpalielina version; savienotājs ielādi atkārto, ja mainījies Budget-as-Code commit.
version: 0.1.0
source_contract: contracts/B03-valsts-budzeta-izpilde.source.odcs.yaml
target_contract: contracts/B03-valsts-budzeta-izpilde.odcs.yaml
schema: schemas/valsts-budzeta-izpilde-0.1.xsd
namespace: urn:pppa:vpk:budzeta-izpilde:0.1
root: BudgetExecution
# Kuras avota rindas tiek pārveidotas. Visas rindas ar summu; rinda bez gada vai mēneša ir kļūda (avota līguma pārbaude).
document:
id: "lv-vbi-{Gads}"
law: "lv-vb-{Gads}" # tā paša gada budžeta likums (B15); ja nav ielādēts, purpose netiek aizpildīts
part_size: 20000 # Execution ierakstu skaits vienā dokumenta daļā (lv-vbi-GGGG.pNNN)
# Execution ieraksta identifikators: lv-vbi-GGGG.mMM.<sha1(atslēga)[:12]>; atslēga = šīs kolonnas, savienotas ar „|”.
# Kolonnu kombinācija avotā ir unikāla (pārbaudīts 2024–2026: katra rinda atšķiras vismaz vienā no tām).
id:
template: "lv-vbi-{Gads}.m{Menesis_Atslega:02d}.{hash}"
key: [Gads, Menesis_Atslega, Iestades_NMR, Budzeta_tips_Atslega, Programma_Atslega, Apaksprogramma_Atslega,
Funkcija_zemakaja_limeni_Atslega, Saistibu_veids_Atslega, Projekta_arejais_kods_Atslega, Klasifikacija,
Vienotais_EKK_Atslega_7_limenis, Konsolidacija]
# Atribūti: kolonna → atribūts; map — vērtību vārdnīca (nezināma vērtība = kļūda); empty — ja tukšs, atribūts netiek rakstīts.
attributes:
month: {column: Menesis_Atslega, type: int}
flow: {column: Klasifikacija, map: {"Ieņēmumi": resource, "Izdevumi": expenditure, "Finansēšana": financing}}
fund: {column: Budzeta_tips_Atslega, map: {"P": basic, "S": special, "6": loans, "7": donations}}
block: {column: Buzeta_bloks, map: {"Pamatfunkcijas": core, "Ārvalstu finanšu palīdzība": eu}, empty: omit}
consolidation: {column: Konsolidacija, map: {"Visu resoru NETO - bez transfertiem": net,
"+ pamatbudžeta savstarpējie transferti un atmaksas": basicTransfers,
"+ pamatbudžeta/speciālā budžeta savstarpējie transferti": basicSpecialTransfers,
"+ speciālā budžeta savstarpējie transferti": specialTransfers}}
resort: {column: Ministrija_Atslega}
institution: {column: Iestades_NMR}
institutionCode: {column: Iestade_Atslega}
programme: {column: Programma_Atslega}
subprogramme: {column: Apaksprogramma_Atslega}
function: {column: Funkcija_zemakaja_limeni_Atslega, empty: omit}
commitmentKind: {column: Saistibu_veids_Atslega, empty: omit}
project: {column: Projekta_arejais_kods_Atslega, empty: omit}
scheme: {column: Klasifikacija, map: {"Ieņēmumi": revenue, "Izdevumi": ekk, "Finansēšana": financing}}
code: {column: Vienotais_EKK_Atslega_7_limenis}
group: {column: Vienotais_EKK_Atslega_4_limenis, when: {flow: expenditure}, empty: omit}
lawCode: {column: Likuma_griezuma_EKK, take: first_token, empty: omit} # „1000 Atlīdzība” → 1000
amount: {column: Summa, type: decimal}
# Sasaiste ar budžeta likumu (B15): vispirms apakšprogramma, tad programma; ja nav neviena — lawMatch=none.
purpose:
candidates:
- {match: subprogramme, template: "lv-vb-{Gads}.pr.{Ministrija_Atslega}.{Apaksprogramma_Atslega}"}
- {match: programme, template: "lv-vb-{Gads}.pr.{Ministrija_Atslega}.{Programma_Atslega}"}
# Nosaukumi (Name ieraksti): koda nosaukums no avota; viens ieraksts katram (kind, key) gadā.
names:
- {kind: resort, key: Ministrija_Atslega, name: Ministrija_nosaukums}
- {kind: institution, key: Iestades_NMR, name: Iestade_nosaukums}
- {kind: programme, key: Programma_Atslega, name: Programma_nosaukums, scope: Ministrija_Atslega}
- {kind: programme, key: Apaksprogramma_Atslega, name: Apaksprogramma_nosaukums, scope: Ministrija_Atslega}
- {kind: function, key: Funkcija_zemakaja_limeni_Atslega, name: Funkcija_zemakaja_limeni_nosaukums}
- {kind: function, key: Funkcija_augstakais_limenis_Atslega, name: Funkcija_augstakais_limenis_Nosaukums}
- {kind: commitment, key: Saistibu_veids_Atslega, name: Saistibu_veids_nosaukums}
- {kind: project, key: Projekta_arejais_kods_Atslega, name: Projekts_nosaukums}
- {kind: code, key: Vienotais_EKK_Atslega_7_limenis, name: Vienotais_EKK_Nosaukums_7_limenis}
- {kind: lawCode, key: Likuma_griezuma_EKK, name: Likuma_griezuma_EKK, take: split_first}
# Kolonnas, kas netiek pārnestas, un kāpēc.
not_mapped:
Menesis_nosaukums: "atkārto Menesis_Atslega"
Resora_veids: "resora veids (ministrija, centrālā valsts iestāde, neatkarīgā institūcija) — pieejams VPK reģistrā (B01)"
Vienotais_EKK_Atslega_1_limenis: "grupu teksta apzīmējumi; kods ir atribūtos code un group"
Vienotais_EKK_Atslega_2_limenis: "tas pats"
Vienotais_EKK_Atslega_3_limenis: "tas pats"
Vienotais_EKK_Atslega_5_limenis: "starplīmenis; atjaunojams no code"
Vienotais_EKK_Atslega_6_limenis: "starplīmenis; atjaunojams no code"
Datu_valuta: "vienmēr Euro (avota līguma pārbaude)"

View File

@@ -0,0 +1,202 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Valsts budžeta izpilde kā dati — mērķa shēma v0.1
PPP Asociācija (PPPA), Valsts Pirmkods (VPK). Melnraksts.
Pāris ar budžeta likuma shēmu valsts-budzets-0.1.xsd: likums ir plāns, izpilde ir fakts.
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="urn:pppa:vpk:budzeta-izpilde:0.1"
xmlns:i="urn:pppa:vpk:budzeta-izpilde:0.1"
targetNamespace="urn:pppa:vpk:budzeta-izpilde:0.1"
elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.1" xml:lang="lv">
<xs:annotation>
<xs:documentation xml:lang="lv">
Valsts budžeta izpilde pa mēnešiem kā dati. Avots: Valsts kases datu kopa „Valsts budžeta izpilde pa iestādēm,
budžeta programmām/apakšprogrammām un klasifikācijas kodiem” (data.gov.lv, CC0). Avota apraksts un pārbaudes:
contracts/B03-valsts-budzeta-izpilde.source.odcs.yaml. Pārveidošanas noteikumi: mappings/B03-izpilde.yaml.
Viens Execution ieraksts ir viena avota rinda: mēnesis × iestāde × budžeta veids × programma/apakšprogramma × funkcija ×
saistību veids × projekts × klasifikācijas kods × konsolidācijas pazīme. Summas ir mēneša apjoms, nevis uzkrājums no gada sākuma.
Identifikatori sakrīt ar budžeta likuma datukopu (urn:pppa:vpk:budzets:0.1): resora kods, programmas un apakšprogrammas kods,
funkcijas kods, saistību veida kods. Atribūts purpose norāda likuma mērķi (lv-vb-GGGG.pr.RR.PP.AA.SS), ja tāds likumā ir.
Kopsummas netiek glabātas: tās aprēķina no Execution ierakstiem.
</xs:documentation>
</xs:annotation>
<!-- ============================================================ identifikatori -->
<xs:simpleType name="DocumentId">
<xs:annotation><xs:documentation xml:lang="lv">Izpildes dokumenta identifikators: lv-vbi-GGGG (budžeta gads) un, ja dokuments ir sadalīts daļās, .pNNN vai .names.</xs:documentation></xs:annotation>
<xs:restriction base="xs:ID"><xs:pattern value="lv-vbi-[0-9]{4}(\.p[0-9]{3}|\.names)?"/></xs:restriction>
</xs:simpleType>
<xs:simpleType name="ExecutionId">
<xs:annotation><xs:documentation xml:lang="lv">Izpildes fakta identifikators: lv-vbi-GGGG.mMM.&lt;12 heksadecimālas zīmes&gt;. Zīmes ir SHA-1 no avota rindas atslēgas (mappings/B03-izpilde.yaml, id.key), tāpēc atkārtotā ielādē tas pats fakts saņem to pašu identifikatoru.</xs:documentation></xs:annotation>
<xs:restriction base="xs:ID"><xs:pattern value="lv-vbi-[0-9]{4}\.m(0[1-9]|1[0-2])\.[0-9a-f]{12}"/></xs:restriction>
</xs:simpleType>
<xs:simpleType name="LawRef">
<xs:annotation><xs:documentation xml:lang="lv">Atsauce uz budžeta likuma datukopas ierakstu (urn:pppa:vpk:budzets:0.1), piemēram lv-vb-2026 vai lv-vb-2026.pr.22.19.03.00.</xs:documentation></xs:annotation>
<xs:restriction base="xs:string"><xs:pattern value="lv-vb-[0-9]{4}(-r[0-9]+)?(\.[A-Za-z0-9_-]+)*"/></xs:restriction>
</xs:simpleType>
<xs:simpleType name="Nmr">
<xs:annotation><xs:documentation xml:lang="lv">Iestādes reģistrācijas numurs (11 cipari); sasaista ar UR un Valsts kancelejas organizāciju reģistru (VPK ID).</xs:documentation></xs:annotation>
<xs:restriction base="xs:string"><xs:pattern value="[0-9]{11}"/></xs:restriction>
</xs:simpleType>
<xs:simpleType name="ResortCode">
<xs:annotation><xs:documentation xml:lang="lv">Budžeta resora (ministrijas vai citas centrālās valsts iestādes) kods, divi cipari. Tas pats kods budžeta likumā un VPK ID pirmajos divos ciparos.</xs:documentation></xs:annotation>
<xs:restriction base="xs:string"><xs:pattern value="[0-9]{2}"/></xs:restriction>
</xs:simpleType>
<xs:simpleType name="ProgrammeCode">
<xs:annotation><xs:documentation xml:lang="lv">Programmas vai apakšprogrammas kods PP.AA.SS, kā budžeta likumā (piemēram 19.03.00). Programmai bez apakšprogrammām apakšprogrammas kods ir programmas kods.</xs:documentation></xs:annotation>
<xs:restriction base="xs:string"><xs:pattern value="[0-9]{2}\.[0-9]{2}\.[0-9]{2}"/></xs:restriction>
</xs:simpleType>
<xs:simpleType name="FunctionCode">
<xs:annotation><xs:documentation xml:lang="lv">Valdības funkciju klasifikācijas kods (COFOG), piemēram 09.200.</xs:documentation></xs:annotation>
<xs:restriction base="xs:string"><xs:pattern value="[0-9]{2}\.[0-9]{3}"/></xs:restriction>
</xs:simpleType>
<xs:simpleType name="Amount">
<xs:annotation><xs:documentation xml:lang="lv">Summa euro par mēnesi, kā publicēta. Negatīva vērtība nozīmē samazinājumu (atmaksu, korekciju) vai finansēšanā līdzekļu izlietojumu.</xs:documentation></xs:annotation>
<xs:restriction base="xs:decimal"><xs:fractionDigits value="2"/></xs:restriction>
</xs:simpleType>
<xs:simpleType name="Month">
<xs:restriction base="xs:int"><xs:minInclusive value="1"/><xs:maxInclusive value="12"/></xs:restriction>
</xs:simpleType>
<!-- ============================================================ vārdnīcas -->
<xs:simpleType name="Flow">
<xs:annotation><xs:documentation xml:lang="lv">
resource — iestādes resursi izdevumu segšanai (dotācija no vispārējiem ieņēmumiem, pašu ieņēmumi, ārvalstu finanšu palīdzība,
speciālā budžeta sociālās apdrošināšanas iemaksas, transferti); atbilst likuma pielikumu pozīcijai „Resursi izdevumu segšanai”.
Valsts pamatbudžeta nodokļu ieņēmumi šajā avotā nav. expenditure — izdevumi; financing — finansēšana.
</xs:documentation></xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="resource"/>
<xs:enumeration value="expenditure"/>
<xs:enumeration value="financing"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Fund">
<xs:annotation><xs:documentation xml:lang="lv">basic — valsts pamatbudžets; special — valsts speciālais budžets; loans — aizdevumu un atmaksu budžets; donations — ziedojumi un dāvinājumi.</xs:documentation></xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="basic"/>
<xs:enumeration value="special"/>
<xs:enumeration value="loans"/>
<xs:enumeration value="donations"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Block">
<xs:annotation><xs:documentation xml:lang="lv">core — valsts pamatfunkciju īstenošana; eu — Eiropas Savienības politiku instrumentu un pārējās ārvalstu finanšu palīdzības līdzfinansētie projekti un pasākumi. Tās pašas vērtības kā budžeta likumā.</xs:documentation></xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="core"/>
<xs:enumeration value="eu"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Consolidation">
<xs:annotation><xs:documentation xml:lang="lv">
net — „Visu resoru NETO – bez transfertiem” (summējams, lai iegūtu izpildi bez savstarpējiem transfertiem);
basicTransfers — pamatbudžeta savstarpējie transferti un atmaksas; basicSpecialTransfers — pamatbudžeta un speciālā budžeta
savstarpējie transferti; specialTransfers — speciālā budžeta savstarpējie transferti. Nekonsolidētu izpildi iegūst, saskaitot visas četras.
</xs:documentation></xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="net"/>
<xs:enumeration value="basicTransfers"/>
<xs:enumeration value="basicSpecialTransfers"/>
<xs:enumeration value="specialTransfers"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Scheme">
<xs:annotation><xs:documentation xml:lang="lv">Kura klasifikācija ir atribūtā code: ekk — izdevumu ekonomiskā klasifikācija; revenue — ieņēmumu klasifikācija; financing — finansēšanas klasifikācija. Tās pašas vērtības kā budžeta likumā.</xs:documentation></xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="ekk"/>
<xs:enumeration value="revenue"/>
<xs:enumeration value="financing"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="LawMatch">
<xs:annotation><xs:documentation xml:lang="lv">Kā izpildes fakts sasaistīts ar tā paša gada budžeta likumu: subprogramme — likumā ir šī resora apakšprogramma; programme — likumā ir tikai programma; none — likumā šādas programmas nav (piemēram, izveidota gada laikā) vai likums nav ielādēts.</xs:documentation></xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="subprogramme"/>
<xs:enumeration value="programme"/>
<xs:enumeration value="none"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="NameKind">
<xs:restriction base="xs:token">
<xs:enumeration value="resort"/>
<xs:enumeration value="institution"/>
<xs:enumeration value="programme"/>
<xs:enumeration value="function"/>
<xs:enumeration value="commitment"/>
<xs:enumeration value="project"/>
<xs:enumeration value="code"/>
<xs:enumeration value="lawCode"/>
</xs:restriction>
</xs:simpleType>
<!-- ============================================================ ieraksti -->
<xs:complexType name="SourceType">
<xs:annotation><xs:documentation xml:lang="lv">Avota datne, no kuras dokuments izveidots, ar kontrolsummu un publicēšanas laiku.</xs:documentation></xs:annotation>
<xs:attribute name="publisher" type="xs:string" use="required"/>
<xs:attribute name="dataset" type="xs:anyURI" use="required"/>
<xs:attribute name="url" type="xs:anyURI" use="required"/>
<xs:attribute name="sha256" use="required"><xs:simpleType><xs:restriction base="xs:string"><xs:pattern value="[0-9a-f]{64}"/></xs:restriction></xs:simpleType></xs:attribute>
<xs:attribute name="modified" type="xs:dateTime" use="required"><xs:annotation><xs:documentation xml:lang="lv">Datnes pēdējo izmaiņu laiks portālā.</xs:documentation></xs:annotation></xs:attribute>
<xs:attribute name="rows" type="xs:nonNegativeInteger" use="required"/>
</xs:complexType>
<xs:complexType name="NameType">
<xs:annotation><xs:documentation xml:lang="lv">Koda nosaukums, kā avotā (iestāde, resors, programma, funkcija, saistību veids, projekts, klasifikācijas kods, likuma griezuma kods).</xs:documentation></xs:annotation>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="kind" type="NameKind" use="required"/>
<xs:attribute name="key" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="ExecutionType">
<xs:annotation><xs:documentation xml:lang="lv">Viens izpildes fakts: summa par mēnesi vienā avota griezumā.</xs:documentation></xs:annotation>
<xs:attribute name="id" type="ExecutionId" use="required"/>
<xs:attribute name="month" type="Month" use="required"/>
<xs:attribute name="flow" type="Flow" use="required"/>
<xs:attribute name="fund" type="Fund" use="required"/>
<xs:attribute name="block" type="Block"/>
<xs:attribute name="consolidation" type="Consolidation" use="required"/>
<xs:attribute name="resort" type="ResortCode" use="required"/>
<xs:attribute name="institution" type="Nmr" use="required"/>
<xs:attribute name="institutionCode" type="xs:string" use="required"><xs:annotation><xs:documentation xml:lang="lv">Iestādes kods Valsts kases sistēmā (mainās starp gadiem; pastāvīgais ir institution).</xs:documentation></xs:annotation></xs:attribute>
<xs:attribute name="programme" type="ProgrammeCode" use="required"/>
<xs:attribute name="subprogramme" type="ProgrammeCode" use="required"/>
<xs:attribute name="function" type="FunctionCode"/>
<xs:attribute name="commitmentKind" type="xs:string"><xs:annotation><xs:documentation xml:lang="lv">Saistību veida kods (10 cipari), kā budžeta likuma 11. pielikumā; 0000000000 — bez saistību veida.</xs:documentation></xs:annotation></xs:attribute>
<xs:attribute name="project" type="xs:string"><xs:annotation><xs:documentation xml:lang="lv">Projekta ārējais kods, ja izpilde attiecas uz projektu.</xs:documentation></xs:annotation></xs:attribute>
<xs:attribute name="scheme" type="Scheme" use="required"/>
<xs:attribute name="code" type="xs:string" use="required"><xs:annotation><xs:documentation xml:lang="lv">Zemākā līmeņa klasifikācijas kods (EKK, ieņēmumu vai finansēšanas klasifikācija).</xs:documentation></xs:annotation></xs:attribute>
<xs:attribute name="group" type="xs:string"><xs:annotation><xs:documentation xml:lang="lv">EKK grupa četru ciparu līmenī (1000, 2000 … 9000) — tas līmenis, kurā izdevumi noteikti budžeta likumā.</xs:documentation></xs:annotation></xs:attribute>
<xs:attribute name="lawCode" type="xs:string"><xs:annotation><xs:documentation xml:lang="lv">Pozīcija likuma pielikumu griezumā (piemēram 1000, A300, 21710), ja avots to norāda.</xs:documentation></xs:annotation></xs:attribute>
<xs:attribute name="purpose" type="LawRef"><xs:annotation><xs:documentation xml:lang="lv">Budžeta likuma mērķis (Purpose), kuram atbilst izpilde: tā paša gada likums, šī resora apakšprogramma vai programma.</xs:documentation></xs:annotation></xs:attribute>
<xs:attribute name="lawMatch" type="LawMatch" use="required"/>
<xs:attribute name="amount" type="Amount" use="required"/>
<xs:attribute name="srcRow" type="xs:positiveInteger" use="required"><xs:annotation><xs:documentation xml:lang="lv">Rindas numurs avota datnē (bez virsrakstu rindas).</xs:documentation></xs:annotation></xs:attribute>
</xs:complexType>
<!-- ============================================================ saknes elements -->
<xs:element name="BudgetExecution">
<xs:annotation><xs:documentation xml:lang="lv">Viena budžeta gada izpilde (vai tās daļa), kā publicēta konkrētā Valsts kases datnē.</xs:documentation></xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Source" type="SourceType"/>
<xs:element name="Name" type="NameType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="Execution" type="ExecutionType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="id" type="DocumentId" use="required"/>
<xs:attribute name="year" type="xs:gYear" use="required"/>
<xs:attribute name="asOfMonth" type="Month" use="required"><xs:annotation><xs:documentation xml:lang="lv">Pēdējais mēnesis, par kuru datnē ir dati.</xs:documentation></xs:annotation></xs:attribute>
<xs:attribute name="law" type="LawRef"><xs:annotation><xs:documentation xml:lang="lv">Tā paša gada budžeta likuma datukopa, pret kuru sasaistīti mērķi.</xs:documentation></xs:annotation></xs:attribute>
<xs:attribute name="generated" type="xs:dateTime" use="required"/>
</xs:complexType>
<xs:key name="executionKey"><xs:selector xpath="i:Execution"/><xs:field xpath="@id"/></xs:key>
<xs:key name="nameKey"><xs:selector xpath="i:Name"/><xs:field xpath="@kind"/><xs:field xpath="@key"/></xs:key>
</xs:element>
</xs:schema>

View File

@@ -1,4 +1,4 @@
# B15 datu līguma konfigurācija lakehouse rīkam tools/xsd_to_odcs.py (tas pats rīks, ar ko ģenerēti B01–B14). # B15 un B03 (mērķa) datu līgumu konfigurācija lakehouse rīkam tools/xsd_to_odcs.py (tas pats rīks, ar ko ģenerēti B01–B14).
# python3 tools/xsd_to_odcs.py <šī datne> <repozitorija sakne> contracts Budget-as-Code # python3 tools/xsd_to_odcs.py <šī datne> <repozitorija sakne> contracts Budget-as-Code
base_url: https://processgit.org base_url: https://processgit.org
contracts: contracts:
@@ -17,7 +17,7 @@ contracts:
data_product: Valsts budžeta datukopa data_product: Valsts budžeta datukopa
purpose: Pieņemtais valsts budžeta likums kā dati — panti, ieņēmumi, apropriācijas pa programmām un apakšprogrammām, nākamo gadu maksimālie apjomi, ilgtermiņa saistības un mērķdotācijas pašvaldībām; katrs likuma pielikumos drukātais skaitlis atjaunojams no datnes. purpose: Pieņemtais valsts budžeta likums kā dati — panti, ieņēmumi, apropriācijas pa programmām un apakšprogrammām, nākamo gadu maksimālie apjomi, ilgtermiņa saistības un mērķdotācijas pašvaldībām; katrs likuma pielikumos drukātais skaitlis atjaunojams no datnes.
limitations: Koncepcijas demonstrācija, nav oficiāls izdevums. Budžeta paskaidrojumi (mērķi, rezultatīvie rādītāji) un gada laikā veiktās apropriācijas izmaiņas vēl nav iekļautas. limitations: Koncepcijas demonstrācija, nav oficiāls izdevums. Budžeta paskaidrojumi (mērķi, rezultatīvie rādītāji) un gada laikā veiktās apropriācijas izmaiņas vēl nav iekļautas.
identifiers: "lv-vb-GGGG; pants .pNNN; resors .ac.rSS; programma .pr.SS.PP.AA.00; projekts .pj.…; naudas fakts .a.pNN.r<rinda>.y<gads>" identifiers: "lv-vb-GGGG; pants .pNNN; resors .ac.rSS; programma .pr.SS.PP.AA.00; projekts .pj.…; finanšu fakts .a.pNN.r<rinda>.y<gads>"
objects: objects:
- {element: Budget, keys: [id]} - {element: Budget, keys: [id]}
- {element: Source, keys: [id]} - {element: Source, keys: [id]}
@@ -30,3 +30,26 @@ contracts:
rules: rules:
- {rule: printed_numbers_reproduced, description: "Katrs likuma pielikumos drukātais skaitlis atjaunojams no datnes (tools/verify_budget.py)", dimension: accuracy} - {rule: printed_numbers_reproduced, description: "Katrs likuma pielikumos drukātais skaitlis atjaunojams no datnes (tools/verify_budget.py)", dimension: accuracy}
- {rule: resort_has_vpk_id, description: "Resoram, kas ir institūcija, norādīts VPK ID"} - {rule: resort_has_vpk_id, description: "Resoram, kas ir institūcija, norādīts VPK ID"}
- id: B03
file: B03-valsts-budzeta-izpilde.odcs.yaml
name: Valsts budžeta izpilde (izpildes fakti uz budžeta likuma identifikatoriem)
version: 0.1.0
org: Valsts-Pirmkods
repo: Budget-as-Code
pattern: "VDE cac_silver.budget_execution — pārveidots no Valsts kases CSV (data.gov.lv)"
schema: schemas/valsts-budzeta-izpilde-0.1.xsd
root: BudgetExecution
namespace: urn:pppa:vpk:budzeta-izpilde:0.1
owner: Valsts kase (izpildes dati); PPPA (shēma un pārveidošana)
data_product: Valsts budžeta izpilde
purpose: Valsts pamatbudžeta un speciālā budžeta izpilde pa mēnešiem, iestādēm, programmām, apakšprogrammām un klasifikācijas kodiem, pārveidota uz tiem pašiem identifikatoriem, kas budžeta likumā (B15), lai plānu un izpildi var salīdzināt bez manuālas sasaistes.
limitations: Koncepcijas demonstrācija, nav oficiāls izdevums. Plāns ir pieņemtais likums; gada laikā veiktās apropriāciju izmaiņas vēl nav iekļautas. Valsts pamatbudžeta nodokļu ieņēmumi avotā nav.
identifiers: "dokuments lv-vbi-GGGG[.pNNN]; fakts lv-vbi-GGGG.mMM.<sha1[:12]>; purpose → lv-vb-GGGG.pr.RR.PP.AA.SS (B15)"
objects:
- {element: BudgetExecution, keys: [id]}
- {element: Name, keys: [kind, key], tables: [cac_silver.budget_execution_name]}
- {element: Execution, keys: [id], tables: [cac_silver.budget_execution]}
rules:
- {rule: id_unique, description: "Izpildes faktu identifikatori ir unikāli visā gadā", dimension: uniqueness}
- {rule: totals_reconcile, description: "Pārveidoto faktu summa katrā gadā sakrīt ar avota datnes summu (nekas nav zaudēts vai pievienots)", dimension: accuracy}
- {rule: resort_known, description: "Resora kods ir Valsts kancelejas organizāciju reģistrā (B01) vai budžeta likumā (B15)", dimension: consistency}