Loading documentation...
ETL contract for dim_code, cat_code, native_api_code, and BRIS question ids.
This file is the canonical category map used across adapters.
dim_code is fixed:
1 = Årsak (Primary Causal Factor)2 = Tennkilde (Heat Source)3 = Objekt (Item First Ignited)4 = Arnested (Area of Origin)5 = Bygningstype (Building Type) — populated by SSB; carried as
metadata rows for BRASK and Police so cross-source rollups can resolve.
See §6.6 = Bygningsalder (Building Age) — BRASK only; the same buckets are
also exposed via the building_age filter axis. See §7.cat_code is always 3 digits and scoped per dimension:
x00 = synthetic aggregate row for the full dimension (not a native API category)x01..x97 = native category rows in sequence for that dimensionx98, x99 reserved for Ikke besvart (BRIS -1 missing-answer bucket); standard_code = UNKNOWN. See §5.native_api_code is the documented numeric option id.native_api_code is the schema answer alternative id (for example 407_1, 264_2, 229_10).227, 229, 264, 403, 405, 407, 269) and are not human labels with spaces.native_api_code is the PxWebApi ContentsCode (for example KOSboligbranner0000).cat_code via native_name and registry.catByNativeName (lib/data-model/adapters/_registry.ts). BRASK uses HTML row labels; BRIS uses bucket keys.native_api_code in the tables below is reference metadata for each source's internal numbering — not stored in categories, not used for matching.407, SSB ContentsCode, BRASK query params) and filter-axis values (filters.native_code).407 and Fire Brigade 269264405 and DSB 229403 and DSB 227625 — native-only live read, never ingested (see §9)dim_code = 1
| name | dim_code | source | native_api_code | native_name | cat_code | standard_code |
|---|---|---|---|---|---|---|
| Alle kategorier | 1 | ALL | - | All categories in dimension | 100 | ALL |
| Antatt påsatt | 1 | BRASK | 1 | Antatt påsatt | 101 | INTENTIONAL |
| Selvantennelse | 1 | BRASK | 2 | Selvantennelse | 102 | SPONTANEOUS_IGNITION |
| Menneskelig feil | 1 | BRASK | 3 | Menneskelig feil | 103 | HUMAN_ERROR |
| Teknisk svikt | 1 | BRASK | 4 | Teknisk svikt | 104 | TECHNICAL_FAILURE |
| Lynnedslag | 1 | BRASK | 5 | Lynnedslag | 105 | NATURAL_PHENOMENON |
| Elektrisk fenomenskade | 1 | BRASK | 6 | Elektrisk fenomenskade | 106 | INSTALLATION_FAILURE |
| Annet eller ukjent | 1 | BRASK | 9 | Annet eller ukjent | 107 | UNKNOWN_OTHER |
| Ukjent | 1 | Police | 407_9 | Ukjent | 108 | UNKNOWN_OTHER |
| Annen årsak | 1 | Police | 407_8 | Annen årsak | 109 | UNKNOWN_OTHER |
| Feil bruk | 1 | Police | 407_4 | Feil bruk | 110 | HUMAN_ERROR |
| Elektrisk årsak | 1 | Police | 407_3 | Elektrisk årsak | 111 | TECHNICAL_FAILURE |
| Påsatt | 1 | Police | 407_1 | Påsatt (forsettelig) | 112 | INTENTIONAL |
| Åpen ild | 1 | Police | 407_2 | Åpen ild | 113 | OPEN_FLAME |
| Selvtenning | 1 | Police | 407_6 | Selvtenning | 114 | SPONTANEOUS_IGNITION |
| Naturlige fenomener | 1 | Police | 407_7 | Naturlige fenomener | 115 | NATURAL_PHENOMENON |
| Eksplosjon | 1 | Police | 407_5 | Eksplosjon | 116 | EXPLOSION |
| Ukjent | 1 | Fire Brigade | 269_6 | Ukjent | 117 | UNKNOWN_OTHER |
| Annet | 1 | Fire Brigade | 269_5 | Annet | 118 | UNKNOWN_OTHER |
| Feil bruk | 1 | Fire Brigade | 269_1 | Feil bruk | 119 | HUMAN_ERROR |
| Feil på utstyr/produkt | 1 | Fire Brigade | 269_2 | Feil på utstyr/produkt | 120 | TECHNICAL_FAILURE |
| Feil på installasjon/anlegg | 1 | Fire Brigade | 269_3 | Feil på installasjon/anlegg | 121 | INSTALLATION_FAILURE |
| Påsatt | 1 | Fire Brigade | 269_4 | Påsatt | 122 | INTENTIONAL |
dim_code = 2
| name | dim_code | source | native_api_code | native_name | cat_code | standard_code |
|---|---|---|---|---|---|---|
| Alle kategorier | 2 | ALL | - | All categories in dimension | 200 | ALL |
| Ildsted | 2 | BRASK | 1 | Ildsted (ovn, peis, gasspeis) | 201 | HEARTH |
| Varme arbeider | 2 | BRASK | 2 | Varme arbeider (sveising, skjæring av stål, lodding etc.) | 202 | HOT_WORKS |
| Åpen ild og varme | 2 | BRASK | 3 | Åpen ild og varme (fyrstikker, røyking, stearinlys, grill) | 203 | OPEN_FLAME |
| Elektroniske apparater | 2 | BRASK | 4 | Elektroniske apparater | 204 | ELECTRICAL |
| Elektriske husholdningsapparater | 2 | BRASK | 5 | Elektriske husholdningsapparater | 205 | ELECTRICAL |
| Fastmontert elektrisk utstyr | 2 | BRASK | 6 | Fastmontert elektrisk utstyr | 206 | ELECTRICAL |
| Annet eller ukjent | 2 | BRASK | 9 | Annet eller ukjent | 207 | UNKNOWN_OTHER |
| Ukjent | 2 | DSB | 264_7 | Ukjent | 208 | UNKNOWN_OTHER |
| Annen | 2 | DSB | 264_6 | Annen | 209 | UNKNOWN_OTHER |
| Elektrisitet | 2 | DSB | 264_2 | Elektrisitet | 210 | ELECTRICAL |
| Åpen ild | 2 | DSB | 264_1 | Åpen ild | 211 | OPEN_FLAME |
| Selvantennelse | 2 | DSB | 264_4 | Selvantennelse | 212 | SPONTANEOUS_IGNITION |
| Naturlig fenomen | 2 | DSB | 264_3 | Naturlig fenomen | 213 | NATURAL_PHENOMENON |
dim_code = 3
| name | dim_code | source | native_api_code | native_name | cat_code | standard_code |
|---|---|---|---|---|---|---|
| Alle kategorier | 3 | ALL | - | All categories in dimension | 300 | ALL |
| Ukjent | 3 | Police | 405_22 | Ukjent | 301 | UNKNOWN |
| Annet startsted | 3 | Police | 405_21 | Annet startsted | 302 | OTHER_OBJECT |
| Løst elektrisk utstyr | 3 | Police | 405_13 | Løst elektrisk utstyr | 303 | ELECTRICAL_EQUIPMENT |
| Fast elektrisk utstyr | 3 | Police | 405_12 | Fast elektrisk utstyr | 304 | ELECTRICAL_EQUIPMENT |
| Innfelt elektrisk utstyr | 3 | Police | 405_14 | Innfelt elektrisk utstyr | 305 | ELECTRICAL_EQUIPMENT |
| Faste installasjoner | 3 | Police | 405_11 | Faste installasjoner (pipe/peis/ovn) | 306 | CHIMNEY_HEARTH |
| Vegg | 3 | Police | 405_1 | Vegg | 307 | STRUCTURAL_ELEMENT |
| Gulv | 3 | Police | 405_3 | Gulv | 308 | STRUCTURAL_ELEMENT |
| Tak | 3 | Police | 405_2 | Tak | 309 | STRUCTURAL_ELEMENT |
| Avfallsbeholder/Resirkuleringsstasjon/Container | 3 | Police | 405_19 | Avfallsbeholder/Resirkuleringsstasjon/Container | 310 | WASTE_CONTAINER |
| Madrass | 3 | Police | 405_6 | Madrass | 311 | FURNITURE_TEXTILES |
| Sengetøy | 3 | Police | 405_7 | Sengetøy | 312 | FURNITURE_TEXTILES |
| Stoppede møbler | 3 | Police | 405_4 | Stoppede møbler | 313 | FURNITURE_TEXTILES |
| Klær | 3 | Police | 405_9 | Klær | 314 | FURNITURE_TEXTILES |
| Gardin | 3 | Police | 405_8 | Gardin | 315 | FURNITURE_TEXTILES |
| Dekorartikler/Annet løst interiør | 3 | Police | 405_17 | Dekorartikler/Annet løst interiør | 316 | FURNITURE_TEXTILES |
| Andre møbler | 3 | Police | 405_5 | Andre møbler | 317 | FURNITURE_TEXTILES |
| Andre tekstiler | 3 | Police | 405_10 | Andre tekstiler | 318 | FURNITURE_TEXTILES |
| Gassutstyr | 3 | Police | 405_16 | Gassutstyr | 319 | GAS_EQUIPMENT |
| Produksjonsmaskin | 3 | Police | 405_18 | Produksjonsmaskin | 320 | PRODUCTION_MACHINE |
| Apparat for flytende brensel | 3 | Police | 405_15 | Apparat for flytende brensel | 321 | LIQUID_FUEL_APPLIANCE |
| Vegetasjon | 3 | Police | 405_20 | Vegetasjon | 322 | VEGETATION |
| Ukjent | 3 | DSB | 229_10 | Ukjent | 323 | UNKNOWN |
| Annet startobjekt | 3 | DSB | 229_9 | Annet startobjekt | 324 | OTHER_OBJECT |
| Annet utstyr | 3 | DSB | 229_6 | Annet utstyr | 325 | OTHER_EQUIPMENT |
| Mat eller gjenstander på/i komfyr | 3 | DSB | 229_3 | Mat eller gjenstander på/i komfyr | 326 | STOVE_ITEMS |
| Elektrisk utstyr | 3 | DSB | 229_5 | Elektrisk utstyr | 327 | ELECTRICAL_EQUIPMENT |
| Skorstein eller ildsted | 3 | DSB | 229_4 | Skorstein eller ildsted | 328 | CHIMNEY_HEARTH |
| Vegg, gulv eller tak | 3 | DSB | 229_1 | Vegg, gulv eller tak | 329 | STRUCTURAL_ELEMENT |
| Avfallsbeholder, container eller resirkuleringsstasjon | 3 | DSB | 229_7 | Avfallsbeholder, container eller resirkuleringsstasjon | 330 | WASTE_CONTAINER |
| Møbler eller tekstiler | 3 | DSB | 229_2 | Møbler eller tekstiler | 331 | FURNITURE_TEXTILES |
| Vegetasjon | 3 | DSB | 229_8 | Vegetasjon | 332 | VEGETATION |
| Kjøretøy | 3 | DSB | 229_11 | Kjøretøy | 333 | VEHICLE |
| Papir eller emballasje | 3 | DSB | 229_12 | Papir eller emballasje | 334 | OTHER_OBJECT |
dim_code = 4
| name | dim_code | source | native_api_code | native_name | cat_code | standard_code |
|---|---|---|---|---|---|---|
| Alle kategorier | 4 | ALL | - | All categories in dimension | 400 | ALL |
| Ukjent | 4 | Police | 403_21 | Ukjent | 401 | UNKNOWN |
| Annet rom | 4 | Police | 403_20 | Annet rom | 402 | OTHER |
| Kjøkken | 4 | Police | 403_1 | Kjøkken | 403 | KITCHEN |
| Stue | 4 | Police | 403_2 | Stue | 404 | LIVING_ROOM |
| Soverom | 4 | Police | 403_3 | Soverom | 405 | BEDROOM |
| Loft | 4 | Police | 403_4 | Loft | 406 | ATTIC |
| Kjeller | 4 | Police | 403_5 | Kjeller | 407 | BASEMENT |
| Gang | 4 | Police | 403_7 | Gang | 408 | HALLWAY |
| Trapperom | 4 | Police | 403_8 | Trapperom | 409 | STAIRWELL |
| Våtrom | 4 | Police | 403_6 | Våtrom | 410 | WET_ROOM |
| Tavlerom | 4 | Police | 403_15 | Tavlerom | 411 | SWITCHBOARD_ROOM |
| Heisrom | 4 | Police | 403_9 | Heisrom | 412 | ELEVATOR_ROOM |
| Felles areal | 4 | Police | 403_13 | Felles areal | 413 | COMMON_AREA |
| Produksjonslokale | 4 | Police | 403_12 | Produksjonslokale | 414 | PRODUCTION_FACILITY |
| Forsamlingslokale | 4 | Police | 403_18 | Forsamlingslokale | 415 | ASSEMBLY_HALL |
| Salgslokale | 4 | Police | 403_11 | Salgslokale | 416 | RETAIL_SPACE |
| Kontor | 4 | Police | 403_10 | Kontor | 417 | OFFICE |
| Fyrrom | 4 | Police | 403_16 | Fyrrom | 418 | BOILER_ROOM |
| Lager | 4 | Police | 403_14 | Lager | 419 | STORAGE |
| Utvendig | 4 | Police | 403_19 | Utvendig | 420 | EXTERIOR |
| Garasje | 4 | Police | 403_17 | Garasje | 421 | GARAGE |
| Ukjent | 4 | DSB | 227_23 | Ukjent | 422 | UNKNOWN |
| Annet | 4 | DSB | 227_22 | Annet | 423 | OTHER |
| Kjøkken | 4 | DSB | 227_1 | Kjøkken | 424 | KITCHEN |
| Stue | 4 | DSB | 227_2 | Stue | 425 | LIVING_ROOM |
| Soverom | 4 | DSB | 227_3 | Soverom | 426 | BEDROOM |
| Loft | 4 | DSB | 227_8 | Loft | 427 | ATTIC |
| Kjeller | 4 | DSB | 227_7 | Kjeller | 428 | BASEMENT |
| Gang | 4 | DSB | 227_4 | Gang | 429 | HALLWAY |
| Trapperom | 4 | DSB | 227_9 | Trapperom | 430 | STAIRWELL |
| Våtrom | 4 | DSB | 227_6 | Våtrom | 431 | WET_ROOM |
| Hulrom i konstruksjon | 4 | DSB | 227_12 | Hulrom i konstruksjon | 432 | STRUCTURAL_CAVITY |
| Tavlerom | 4 | DSB | 227_17 | Tavlerom | 433 | SWITCHBOARD_ROOM |
| Ventilasjonsrom/teknisk rom | 4 | DSB | 227_25 | Ventilasjonsrom/teknisk rom | 434 | TECHNICAL_ROOM |
| Heisrom | 4 | DSB | 227_10 | Heisrom | 435 | ELEVATOR_ROOM |
| Fellesareal | 4 | DSB | 227_15 | Fellesareal | 436 | COMMON_AREA |
| Skorstein | 4 | DSB | 227_11 | Skorstein | 437 | CHIMNEY |
| Produksjonslokale | 4 | DSB | 227_14 | Produksjonslokale | 438 | PRODUCTION_FACILITY |
| Forsamlingslokale | 4 | DSB | 227_20 | Forsamlingslokale | 439 | ASSEMBLY_HALL |
| Salgslokale | 4 | DSB | 227_13 | Salgslokale | 440 | RETAIL_SPACE |
| Kontor | 4 | DSB | 227_5 | Kontor | 441 | OFFICE |
| Fyrrom | 4 | DSB | 227_18 | Fyrrom | 442 | BOILER_ROOM |
| Lager | 4 | DSB | 227_16 | Lager | 443 | STORAGE |
| Badstue | 4 | DSB | 227_24 | Badstue | 444 | SAUNA |
| Utvendig | 4 | DSB | 227_21 | Utvendig | 445 | EXTERIOR |
| Garasje | 4 | DSB | 227_19 | Garasje | 446 | GARAGE |
| Carport | 4 | DSB | 227_26 | Carport | 447 | EXTERIOR |
| Parkeringshus | 4 | DSB | 227_27 | Parkeringshus | 448 | EXTERIOR |
BRIS aggregate responses include a -1 bucket for missions where the relevant question was not answered. It is often the largest bucket in a slice.
Ingest contract: upstream bucket key '-1' → catalog row with native_name = 'Ikke besvart' for that (source_id, dim_code) (via resolveCatCodeFromBrisBucket). The row’s standard_code is UNKNOWN — the cross-source semantic for “not answered / not reported” on that reserved slot. Other rows (e.g. Ukjent) will also carry UNKNOWN; they are distinct categories with their own cat_code and upstream labels, but the standard_code makes them equivalent.
Reserved slot: x99 (or x98 when x99 is taken — e.g. Fire Brigade Årsak uses 198).
| name | dim_code | source | native_api_code | native_name | cat_code | standard_code |
|---|---|---|---|---|---|---|
| Ikke besvart | 1 | Police | -1 | Ikke besvart | 199 | UNKNOWN |
| Ikke besvart | 1 | Fire Brigade | -1 | Ikke besvart | 198 | UNKNOWN |
| Ikke besvart | 2 | DSB | -1 | Ikke besvart | 299 | UNKNOWN |
| Ikke besvart | 3 | Police | -1 | Ikke besvart | 399 | UNKNOWN |
| Ikke besvart | 3 | DSB | -1 | Ikke besvart | 398 | UNKNOWN |
| Ikke besvart | 4 | Police | -1 | Ikke besvart | 499 | UNKNOWN |
| Ikke besvart | 4 | DSB | -1 | Ikke besvart | 498 | UNKNOWN |
native_api_code = -1 in this table is reference metadata for the upstream sentinel; matching at ingest uses the bucket key "-1" → native_name bridge above. See pipeline-slices-idempotency-and-triggers.md §4.1.
dim_code = 5
Building Type is the only analytical dimension SSB exposes for fire counts —
the dataset choice (KOSboligbranner0000 vs KOSbygningsbrann0000) IS the
breakdown. BRASK and Police carry parallel rows so the same dim_code = 5
key resolves consistently across sources for cross-source rollups. The
matching building_type filter rows in fire_data.filters (axis =
building_type) carry the request-side identity; this section covers the
category-side identity.
Allocation:
501 — SSB Boligbranner (RESIDENTIAL)502 — SSB Bygningsbranner (ALL_BUILDINGS)503, 504 — BRASK metadata rows505, 506 — Police metadata rowsThese are the category-side (dim 5 cross-tab) building_type rows. RESIDENTIAL mirrors the building_type filter code; ALL_BUILDINGS is the dimension-total category for cross-tab matrices — it has no filter-axis equivalent (on the filter axis, "all buildings" is a NULL FK, not a code — see filter-axes-native-to-filter-id.md §2).
| name | dim_code | source | native_api_code | native_name | cat_code | standard_code |
|---|---|---|---|---|---|---|
| Boligbranner | 5 | SSB | KOSboligbranner0000 | Boligbranner | 501 | RESIDENTIAL |
| Bygningsbranner | 5 | SSB | KOSbygningsbrann0000 | Bygningsbranner | 502 | ALL_BUILDINGS |
| Beboelse | 5 | BRASK | 0 | Beboelse | 503 | RESIDENTIAL |
| Alle næringer | 5 | BRASK | — | Alle næringer | 504 | ALL_BUILDINGS |
| Bolig (kategoriene 1xx) | 5 | Police | (30 leaf ids) | Bolig (kategoriene 1xx) | 505 | RESIDENTIAL |
| Alle bygningstyper | 5 | Police | — | Alle bygningstyper | 506 | ALL_BUILDINGS |
Notes:
building_type filter axis
(lbNæring for BRASK, buildingTypes.ids for BRIS), not via a
per-cat_code request. The 30 BRIS Bolig leaf IDs are documented in
filter-axes-native-to-filter-id.md §2.dim_code = 5 and cat_code = 501
or 502, plus the matching building_type_code filter id (per
pipeline-slices-idempotency-and-triggers.md §4.3). PxWeb ContentsCode labels and the full table-12058 variable set: ssb-pxwebapi-tables.md. BRASK and Police keep dim_code = 5 writes off
the fact path — their building_type is on the filter axis instead.dim_code = 6
BRASK Utforsk axis index: BRASK_AXIS.bygningsalder / braskExplorerAxisId('bygningsalder') is 12 (ASP.NET explorer dropdown) — not analytical dim_code 6 in this section.
BRASK is the only source exposing building age. The 13 native ASP.NET option
ids collapse into 7 normalized buckets (matching building_age filter axis,
filter-axes-native-to-filter-id.md §3). HeatWaves keeps one category row per
native option to preserve fidelity, plus the synthetic 600 aggregate.
cat_code = 600 is the synthetic "Alle" row for registry lookup only — not written to fact_yearly.
| name | dim_code | source | native_api_code | native_name | cat_code | standard_code |
|---|---|---|---|---|---|---|
| Alle | 6 | BRASK | — | Alle | 600 | ALL |
| Ny | 6 | BRASK | 1 | Ny | 601 | 0-5 |
| 1-5 | 6 | BRASK | 2 | 1-5 | 602 | 0-5 |
| 6-10 | 6 | BRASK | 3 | 6-10 | 603 | 6-10 |
| 11-15 | 6 | BRASK | 4 | 11-15 | 604 | 11-20 |
| 16-20 | 6 | BRASK | 5 | 16-20 | 605 | 11-20 |
| 21-25 | 6 | BRASK | 6 | 21-25 | 606 | 21-30 |
| 26-30 | 6 | BRASK | 7 | 26-30 | 607 | 21-30 |
| 31-40 | 6 | BRASK | 8 | 31-40 | 608 | 31-50 |
| 41-50 | 6 | BRASK | 9 | 41-50 | 609 | 31-50 |
| 51-75 | 6 | BRASK | 10 | 51-75 | 610 | 51+ |
| 76-100 | 6 | BRASK | 11 | 76-100 | 611 | 51+ |
| Over 100 | 6 | BRASK | 12 | Over 100 | 612 | 51+ |
| Ukjent | 6 | BRASK | 99 | Ukjent | 613 | UNKNOWN |
Same notes as §6: the BRASK building_age filter axis carries the same
mapping at the filter table layer; this section is the category-side
identity. The two share standard_code values so the registry can resolve
either lookup direction. Two BRASK native values (1 and 2) collapse to
the 0-5 standard bucket — when querying by normalized bucket the adapter
must send both native ids.
dim_code = 7, source_id = 5 (SSB table 12058)
All 34 PxWeb ContentsCode variables are catalog rows with is_native_only = true. They are not written to fact_yearly; Explore reads them live via lib/data-model/native/providers/source-5-table-12058.ts.
| Field | Role |
|---|---|
native_name | PxWeb ContentsCode (e.g. KOSBDU338nok0000) — sent upstream |
standard_code | English semantic topic group (shared by metrics in one Emne cluster) |
cat_code | Stable integer series identity within a group (701–734) |
Group standard_code values (migration 20260608170415_ssb_dim7_standard_codes_by_group.sql):
standard_code | Emne label | cat_code rows |
|---|---|---|
FIRE_AND_COMPENSATION | Brann og erstatning | 701–706 |
EMERGENCY_DISPATCH | Utrykning og beredskap | 707, 708, 716 |
CHIMNEY_AND_SWEEPING | Piper og feiing | 709–712, 727 |
MAN_YEARS | Årsverk | 713–715 |
HIGH_RISK_OBJECTS | A-objekt og tilsyn | 717–719 |
GROSS_OPEX | Brutto driftsutgifter | 720–726 |
NET_OPEX | Netto driftsutgifter | 728–734 |
Explore URL: cat_standard (single token). Default FIRE_AND_COMPENSATION. Legacy nokkelgruppe=brann bookmarks map to the same codes. Grouping logic: lib/data-model/ssb-nokkelgrupper.ts. Full variable list: ssb-pxwebapi-tables.md.
dim_code = 8, source_id = 4 (DSB), BRIS question 625 («Hvilken strømkilde hadde utstyret da brannen/branntilløpet startet?»)
All rows are is_native_only = true — never written to fact_*. Explore reads them live via lib/data-model/native/providers/source-bris-restricted.ts (POST /restrictedaggregation, yearly only; same request body and bucket→cat_code resolution as the DSB ingest path). Seed migration 20260609223017_bris_native_stromkilde_catalog.sql.
| Native Name | Dim Code | Source | native_api_code | Mapped Name | cat_code | standard_code |
|---|---|---|---|---|---|---|
| Kun engangsbatteri | 8 | DSB | 625_1 | Kun engangsbatteri | 801 | DISPOSABLE_BATTERY |
| Kun oppladbart batteri | 8 | DSB | 625_2 | Kun oppladbart batteri | 802 | RECHARGEABLE_BATTERY |
| Kun strømforsyning | 8 | DSB | 625_3 | Kun strømforsyning | 803 | MAINS_POWER |
| Oppladbart batteri koblet til lader/strømforsyning | 8 | DSB | 625_4 | Oppladbart batteri på lading | 804 | RECHARGEABLE_ON_CHARGER |
| Ukjent | 8 | DSB | 625_5 | Ukjent | 805 | UNKNOWN |
| Ikke besvart | 8 | DSB | -1 | Ikke besvart (Strømkilde) | 899 | UNKNOWN |
Answered counts are small (low hundreds per year from 2022); the -1 bucket dominates and stays visible as its own Ikke besvart category, same as the ingested BRIS dims. New BRIS native datasets are scaffolded with node scripts/bris-native-catalog-scaffold.mjs <questionId> (probe + migration SQL + constants output; no DB writes).