Budgeting with Real Assets: the Canonical Data Model

Welcome to the home of the open source model for

We are developing an open-source framework for pre-budget analysis that integrates real resource constraints, human needs, and planetary boundary impacts into public financial decision-making. By connecting budget allocations to economic activities and environmental pressures, the framework makes the biophysical consequences of fiscal policy visible before spending decisions are made. The aim is to improve government decision-making by aligning fiscal policy with both resource realities and ecological sustainability.

Version 1.6.2 is the first public baseline release of the Real Capital Canonical Data Model. It establishes the core structure for representing real capital, its maturity, stewardship and relationship to financial allocations. It is released for public examination and practical testing. The model is not considered final, and the project invites proposals for improvement.

01 · ABOUT

Why the model exists

Explain the problem: governments manage real resources, but financial budgets do not by themselves describe the condition, capacity or ecological implications of those resources.

02 · THE MODEL

Explore the structure

Introduce the four capital types, the asset register, maturity, lifecycle activities and the relationship to budgeting.

03 · DOCUMENTATION

Read Version 1

Publish the specification, glossary, diagrams, examples and implementation guidance.

04 · PARTICIPATE

Help develop the model

Invite comments, questions, corrections, proposed changes and practical testing.

05 · GOVERNANCE

How the model is maintained

Explain ownership, administration, decision-making, versioning and the review process.

06 · RELEASES

Follow development

Provide the current release, previous releases, proposed changes and the development roadmap.

erDiagram
    AssetPortfolio ||--o{ AssetManagementObjective : "has"
    AssetPortfolio ||--o{ AssetPerformanceRecord : "has"
    AssetPortfolio ||--o{ AssetHealthIndicator : "has"
    AssetPortfolio ||--o{ AssetRisk : "has"
    AssetPortfolio ||--o{ LifecycleActivity : "has"
    AssetPortfolio ||--o{ AssetPressure : "experiences"
    AssetPortfolio ||--o{ AssetMaturityHistory : "tracks"
    
    LifecycleActivity }o--|| AssetPerformanceRecord : "targets (if performance)"
    LifecycleActivity ||--o{ FinancialResourceAllocation : "funded_by"
    LifecycleActivity ||--o{ RealResourceConstraint : "requires"
    LifecycleActivity ||--o{ InflationMonitoring : "monitored_by"
    
    AssetPressure }o--|| EconomicActivity : "caused_by"
    AssetPressure }o--|| UnitOfMeasure : "measured_in"
    
    RealEstate ||--o| AssetPortfolio : "hosts"
    RealEstate }o--|| Region : "belongs_to"
    Region ||--o{ LandUseProfile : "has"
    
    EnumMapping }o--|| AssetPortfolio : "translates"
    ReconciliationRules }o--|| AssetPortfolio : "reconciles"
    
    AssetManagementObjective }o--|| MaturityScale : "targets"
    AssetPortfolio }o--|| MaturityScale : "currently_at"

/

SELECT 
    a.official_name,
    (o.target_maturity_level - a.current_maturity_level) AS maturity_gap,
    apr.performance_gap,
    la.activity_description,
    la.target_entity_type,
    fra.allocated_amount
FROM AssetPortfolio a
JOIN AssetManagementObjective o ON a.asset_id = o.linked_asset_id
JOIN AssetPerformanceRecord apr ON a.asset_id = apr.asset_id
JOIN LifecycleActivity la ON a.asset_id = la.asset_id
JOIN FinancialResourceAllocation fra ON la.activity_id = fra.activity_id
WHERE (o.target_maturity_level - a.current_maturity_level) > 0 
  AND apr.performance_gap < 0
  AND la.target_entity_type = 'Maturity';