{
  "manifest_version": "1.0.0",
  "semantic_id": "dk_dar_source_v1",
  "data_status": "SOURCE",
  "intent": {
    "scientific_purpose": "DAR is the authoritative Danish register of addresses, house numbers, and address points. It provides standardized structured address descriptions with point geometries, lifecycle state, and bitemporality for all Danish addresses. It serves as the geocoding backbone for any spatial analysis requiring ground-truth address locations in Denmark.",
    "research_question_links": [
      "What is the spatial distribution of registered addresses in a given area?",
      "How can authoritative address points be used as a geocoding base for cross-register spatial joins?",
      "Which addresses are currently active versus historical in a study area?"
    ]
  },
  "provenance": {
    "source_origin": "Danmarks Adresseregister (DAR)",
    "acquisition_date": "2026-04-03",
    "licence": "Datafordeler license terms and institutional API key agreement",
    "source_manifest_refs": [
      "semanticgis-data/metadata-loader/xml_models/DanmarksAdresser/2.0.2_DanmarksAdresser.xml",
      "semanticgis-data/metadata-loader/schemas/dar.json",
      "https://grunddatamodel.datafordeler.dk/domaenemodeller/",
      "https://grunddatamodel.datafordeler.dk/objekttypekatalog/",
      "https://datafordeler.dk/GraphQLSchema/DAR.graphql",
      "https://confluence.sdfi.dk/pages/viewpage.action?pageId=193921410",
      "data_sanctuary/sources/datafordeler.platform.manifest.v1.json",
      "data_sanctuary/shared/datafordeler_graphql_contract.md",
      "data_sanctuary/shared/time_semantics_shared.md"
    ]
  },
  "grounding_logic": {
    "type": "api",
    "uri": "https://datafordeler.dk/",
    "layer_filter": "status = 'gældende'",
    "crs": "EPSG:25832",
    "geometry_type": "POINT",
    "join_hints": [
      {
        "target_semantic_id": "dk_cvr_source_v1",
        "join_type": "attribute",
        "left_key": "vejnavn + husnummer + postnummer",
        "right_key": "CVRAdresse_vejnavn + CVRAdresse_husnummerFra + CVRAdresse_postnummer"
      }
    ]
  },
  "privacy_governance": {
    "gdpr_classification": "Public",
    "retention_period": "Project duration + 5 years",
    "access_requirements": "Institutional Datafordeler API key and register access rights",
    "ethical_risks": [
      "Address data can become sensitive when combined with person-level or complaint-level datasets.",
      "Geocoded density maps may amplify reporting bias when interpreted without uncertainty notes."
    ]
  },
  "sanitisation_rituals": [
    "Filter to status = 'gældende' for current-state analyses; retain historical rows only when temporal analysis is intended.",
    "Remove datafordeler system bookkeeping fields (datafordelerRowId, datafordelerRowVersion, datafordelerRegisterImportSequenceNumber) unless provenance tracing is required.",
    "Standardize address strings (normalize Danish characters, remove trailing whitespace) before cross-register joins.",
    "Reproject to EPSG:25832 before any distance, density, or overlay operation."
  ],
  "attributes": [
    {
      "name": "id_lokalId",
      "logical_type": "Nominal",
      "meaning": "Persistent DAR-assigned UUID for the address object. Stable across updates and used as the canonical join key for cross-register address linkage.",
      "provenance_level": "source"
    },
    {
      "name": "adressebetegnelse",
      "logical_type": "Nominal",
      "meaning": "Complete human-readable address string as defined in the Danish Address Decree (BEK nr 271 of 13/04/2018). Example: 'Gimles Allé 14, 2300 København S'.",
      "provenance_level": "source"
    },
    {
      "name": "husnummer",
      "logical_type": "Ordinal",
      "meaning": "Reference to the canonical house number object that anchors this address. Acts as the key join target for attribute-based address resolution from other registers.",
      "provenance_level": "source"
    },
    {
      "name": "doerpunkt",
      "logical_type": "Nominal",
      "meaning": "Optional point geometry indicating the precise doorway location of the address. More specific than the access-point (adgangspunkt) on the house number. May be absent for non-residential or rural addresses.",
      "provenance_level": "source"
    },
    {
      "name": "etagebetegnelse",
      "logical_type": "Nominal",
      "meaning": "Floor/storey designator (e.g. 'st', '1', '2'). Present only for multi-unit addresses.",
      "provenance_level": "source"
    },
    {
      "name": "doerbetegnelse",
      "logical_type": "Nominal",
      "meaning": "Door designator within a floor (e.g. 'tv', 'th', '10'). Present only for multi-unit addresses.",
      "provenance_level": "source"
    },
    {
      "name": "status",
      "logical_type": "Ordinal",
      "meaning": "Lifecycle state of the address. Use 'gældende' for current addresses. Other states include 'foreløbig', 'nedlagt' (discontinued).",
      "provenance_level": "source"
    },
    {
      "name": "virkningFra",
      "logical_type": "Interval",
      "meaning": "Start timestamp of the address version's validity period. Combined with virkningTil enables bitemporal address queries.",
      "provenance_level": "source"
    }
  ],
  "agent_hints": {
    "recommended_filters": [
      "Filter status = 'gældende' before any present-state spatial analysis.",
      "Use the husnummer reference to access the adgangspunkt (access point) geometry when door-level precision is not required.",
      "Reproject to EPSG:25832 before any distance, overlay, or density operation.",
      "When joining from CVR, match on vejnavn + husnummer + postnummer; flag unmatched rows rather than silently dropping them."
    ],
    "known_pitfalls": [
      "DAR has a two-level address hierarchy: Husnummer (house number with access point) and Adresse (unit address with optional door point). Be explicit about which level you are using.",
      "Historical records can pollute current-state analyses if status is not filtered; note that registreringTil = null means the row is the current registration.",
      "Address string variants in non-DAR source data (e.g. CVR) may not match adressebetegnelse exactly; use component-level matching over string matching.",
      "Not all addresses have a doerpunkt; fallback to husnummer adgangspunkt for geocoding if doerpunkt is null."
    ],
    "quality_notes": [
      "Primary source of truth is Grunddatamodel and Datafordeler, with XML models as canonical structure references.",
      "GraphQL and entity-based file download access are available through Datafordeler services.",
      "DAR is authoritative for address geocoding in Denmark.",
      "Point geometry completeness varies by address detail level.",
      "Temporal interpretation for current/temporal/bitemporal file-download modes is shared and documented in the referenced time semantics note."
    ]
  },
  "shared_contract_refs": [
    "data_sanctuary/sources/datafordeler.platform.manifest.v1.json",
    "data_sanctuary/shared/datafordeler_graphql_contract.md",
    "data_sanctuary/shared/time_semantics_shared.md",
    "data_sanctuary/sources/datafordeler.graphql.services.manifest.v1.json"
  ],
  "execution_contract": {
    "interface_type": "graphql",
    "auth": {
      "scheme": "apikey",
      "location": "query_param",
      "parameter_name": "apikey",
      "required_permissions": [
        "DAR GraphQL access"
      ]
    },
    "pagination": {
      "style": "cursor",
      "page_size_param": "first",
      "cursor_param": "after",
      "recommended_page_size": 200,
      "max_page_size": 1000
    },
    "timeouts": {
      "server_timeout_seconds": 60,
      "retry_strategy": "reduce page size and constrain where clauses"
    },
    "time_parameters": {
      "supports_virkningstid": true,
      "supports_registreringstid": true,
      "default_query_mode": "register_default"
    },
    "filterability_notes": [
      "Confirm filterability in DAR_*FilterInput before using address fields in where clauses."
    ],
    "known_error_codes": [
      "400",
      "401",
      "HC0045"
    ]
  },
  "platform_links": [
    "https://semanticgis.dk"
  ],
  "resource_scope": "dataset"
}
