{
  "snapshot_id": "approved-static-6fbe9b847dfeb5d6",
  "schema_version": "immigrationdb-city-resource-v2",
  "generated_at": "2026-07-15",
  "canonical_path": "/cities/dk/roskilde/",
  "mcp_uri": "immigrationdb://city/dk/roskilde",
  "city": {
    "entity_id": "city:dk:slug:roskilde",
    "name": "Roskilde",
    "country_code": "DK",
    "public_slug": "roskilde",
    "canonical_path": "/cities/dk/roskilde/",
    "mcp_uri": "immigrationdb://city/dk/roskilde",
    "page_state": "published",
    "useful_blocks": [
      "climate_air",
      "demographics",
      "mobility_admin",
      "safety",
      "work_income",
      "cost_living"
    ],
    "useful_fact_count": 13,
    "city_tags": [
      "regional_hub"
    ],
    "facts_by_block": {
      "climate_air": [
        {
          "metric_id": "climate_avg_temp_c",
          "block_id": "climate_air",
          "value": 8.5,
          "unit": "°C",
          "geographic_scope": "region",
          "observed_at": "2026-06-09",
          "verified_at": "2026-07-11",
          "comparison_eligible": true,
          "source_id": "source-451c0de78599",
          "source_url": "https://www.dmi.dk/vejrarkiv/",
          "source_title": "DMI",
          "source_authority": "Unresolved official source owner",
          "source_quality": "verified"
        },
        {
          "metric_id": "climate_avg_temp_jan_c",
          "block_id": "climate_air",
          "value": 0.8,
          "unit": "°C",
          "geographic_scope": "region",
          "observed_at": "2026-06-09",
          "verified_at": "2026-07-11",
          "comparison_eligible": true,
          "source_id": "source-451c0de78599",
          "source_url": "https://www.dmi.dk/vejrarkiv/",
          "source_title": "DMI",
          "source_authority": "Unresolved official source owner",
          "source_quality": "verified"
        }
      ],
      "cost_living": [
        {
          "metric_id": "english_portal_url",
          "block_id": "cost_living",
          "value": "https://www.nyidanmark.dk/",
          "unit": "url",
          "geographic_scope": "city",
          "observed_at": "2026-06-09",
          "verified_at": "2026-06-10T00:00:00Z",
          "comparison_eligible": true,
          "source_id": "nyidanmark",
          "source_url": "https://www.nyidanmark.dk/en",
          "source_title": "nyidanmark.dk — Danish immigration portal (English)",
          "source_authority": "nyidanmark.dk",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        }
      ],
      "demographics": [
        {
          "metric_id": "foreign_population_pct",
          "block_id": "demographics",
          "value": 8,
          "unit": "percent",
          "geographic_scope": "kommune",
          "observed_at": "2026-06-09",
          "verified_at": "2026-07-11",
          "comparison_eligible": true,
          "source_id": "source-3844dcaf9676",
          "source_url": "https://api.statbank.dk/v1/data/FOLK1C",
          "source_title": "DST Indvandrere",
          "source_authority": "Statistics Denmark",
          "source_quality": "verified"
        },
        {
          "metric_id": "population_total",
          "block_id": "demographics",
          "value": 91000,
          "unit": "persons",
          "geographic_scope": "kommune",
          "observed_at": "2026-06-09",
          "verified_at": "2026-07-11",
          "comparison_eligible": true,
          "source_id": "source-6d395d1d3c64",
          "source_url": "https://api.statbank.dk/v1/data/FOLK1A",
          "source_title": "DST",
          "source_authority": "Statistics Denmark",
          "source_quality": "verified"
        }
      ],
      "identity": [
        {
          "metric_id": "car_density_per_1000",
          "block_id": "identity",
          "value": 492,
          "unit": "cars/1000 residents",
          "geographic_scope": "city",
          "observed_at": "2026-01-01",
          "verified_at": "2026-07-15",
          "comparison_eligible": true,
          "source_id": "dst_bil54_2026m01__dst_folk1a_2026k1",
          "source_url": "https://api.statbank.dk/v1/data",
          "source_title": "Derived stock density from DST BIL54 passenger-car stock and DST FOLK1A population. BIL54 is stock of passenger cars, not registrations, trips or ownership-only subset.",
          "source_authority": "Danmarks Statistik (DST)",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        },
        {
          "metric_id": "city_area_km2",
          "block_id": "identity",
          "value": 211.8,
          "unit": "km2",
          "geographic_scope": "city",
          "observed_at": "2026-01-01",
          "verified_at": "2026-07-15",
          "comparison_eligible": true,
          "source_id": "dst_are207_2026",
          "source_url": "https://api.statbank.dk/v1/data",
          "source_title": "DST ARE207 Area 1 January; area based on the SDFE land register. Registered area is used; some lakes are excluded according to the table footnote.",
          "source_authority": "Danmarks Statistik (DST)",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        },
        {
          "metric_id": "foreign_population_total",
          "block_id": "identity",
          "value": 7815,
          "unit": "people",
          "geographic_scope": "city",
          "observed_at": "2026-01-01",
          "verified_at": "2026-07-15",
          "comparison_eligible": true,
          "source_id": "dst_folk1d_2026k1_foreign_citizens",
          "source_url": "https://api.statbank.dk/v1/data",
          "source_title": "DST FOLK1D: population at the first day of the quarter, total sex, total age, STATSB=UDLAND (Foreign citizen). This is citizenship, not foreign-born or foreign-origin population.",
          "source_authority": "Danmarks Statistik (DST)",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        },
        {
          "metric_id": "population_density_per_km2",
          "block_id": "identity",
          "value": 438,
          "unit": "people/km2",
          "geographic_scope": "city",
          "observed_at": "2026-01-01",
          "verified_at": "2026-07-15",
          "comparison_eligible": true,
          "source_id": "dst_folk1a_2026k1__dst_are207_2026",
          "source_url": "https://api.statbank.dk/v1/data",
          "source_title": "Derived municipality density from DST population and ARE207 registered municipal area.",
          "source_authority": "Danmarks Statistik (DST)",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        }
      ],
      "mobility_admin": [
        {
          "metric_id": "nearest_airport_iata",
          "block_id": "mobility_admin",
          "value": "RKE",
          "unit": "code",
          "geographic_scope": "city",
          "observed_at": "2026-06-13",
          "verified_at": "2026-06-13",
          "comparison_eligible": true,
          "source_id": "ourairports_airports_csv",
          "source_url": "https://davidmegginson.github.io/ourairports-data/airports.csv",
          "source_title": "OurAirports — airports.csv — nearest_airport_iata",
          "source_authority": "OurAirports — airports.csv",
          "source_quality": "verified"
        },
        {
          "metric_id": "nearest_airport_km",
          "block_id": "mobility_admin",
          "value": 7,
          "unit": "km",
          "geographic_scope": "city",
          "observed_at": "2026-06-13",
          "verified_at": "2026-06-13",
          "comparison_eligible": true,
          "source_id": "ourairports_airports_csv",
          "source_url": "https://davidmegginson.github.io/ourairports-data/airports.csv",
          "source_title": "OurAirports — airports.csv — nearest_airport_iata",
          "source_authority": "OurAirports — airports.csv",
          "source_quality": "verified"
        }
      ],
      "safety": [
        {
          "metric_id": "crime_rate_per_100k",
          "block_id": "safety",
          "value": 4200,
          "unit": "per 100k",
          "geographic_scope": "kommune",
          "observed_at": "2026-06-09",
          "verified_at": "2026-07-11",
          "comparison_eligible": true,
          "source_id": "source-57f9b3ad17a8",
          "source_url": "https://api.statbank.dk/v1/data/STRAF10",
          "source_title": "DST Kriminalstatistik",
          "source_authority": "Statistics Denmark",
          "source_quality": "verified"
        }
      ],
      "work_income": [
        {
          "metric_id": "median_salary_eur_month",
          "block_id": "work_income",
          "value": 3800,
          "unit": "EUR/month",
          "geographic_scope": "kommune",
          "observed_at": "2026-06-09",
          "verified_at": "2026-07-11",
          "comparison_eligible": true,
          "source_id": "source-acd757cf3cc0",
          "source_url": "https://api.statbank.dk/v1/data/LONS30",
          "source_title": "DST Lønstatistik",
          "source_authority": "Statistics Denmark",
          "source_quality": "verified"
        }
      ]
    }
  }
}
