{
  "generated_at": "2026-08-23T16:21:19.674037+00:00",
  "table_count": 15,
  "tables": [
    {
      "table": "datasets",
      "title": "Source datasets",
      "title_ne": null,
      "description": "Every upstream dataset DataNepal draws on, with publisher, URL, licence, retrieval date, and whether the publisher revises previously published values.",
      "grain": "One row per source dataset.",
      "geography_level": "none",
      "sources": [
        "datanepal-internal"
      ],
      "effective_licence": "cc0-1.0",
      "share_alike": false,
      "contributing_licences": [
        "cc0-1.0"
      ],
      "attribution": [],
      "caveats": [],
      "row_count": 5,
      "parquet": "datasets.parquet",
      "json": "datasets.json",
      "bytes": 6861
    },
    {
      "table": "dimension_members",
      "title": "Dimension members",
      "title_ne": null,
      "description": "The permitted values for each dimension, with bilingual labels and an optional parent for hierarchical dimensions such as budget categories. An observation may only use members declared here, which is what keeps extensible dimensions from becoming a free-text field.",
      "grain": "One row per (dimension, member).",
      "geography_level": "none",
      "sources": [
        "datanepal-internal"
      ],
      "effective_licence": "cc0-1.0",
      "share_alike": false,
      "contributing_licences": [
        "cc0-1.0"
      ],
      "attribution": [],
      "caveats": [],
      "row_count": 21,
      "parquet": "dimension_members.parquet",
      "json": "dimension_members.json",
      "bytes": 1554
    },
    {
      "table": "dimensions",
      "title": "Dimensions",
      "title_ne": null,
      "description": "The dimensions observations can be broken down by — sex and age band today, and whatever future datasets require. Adding a dataset adds rows here rather than columns to the fact table.",
      "grain": "One row per dimension.",
      "geography_level": "none",
      "sources": [
        "datanepal-internal"
      ],
      "effective_licence": "cc0-1.0",
      "share_alike": false,
      "contributing_licences": [
        "cc0-1.0"
      ],
      "attribution": [],
      "caveats": [],
      "row_count": 2,
      "parquet": "dimensions.parquet",
      "json": "dimensions.json",
      "bytes": 1160
    },
    {
      "table": "geography",
      "title": "Nepal administrative geography",
      "title_ne": "नेपालको प्रशासनिक भूगोल",
      "description": "Convenience view of the 753 local units with their district and province lineage denormalised onto each row, for consumers who want one flat file rather than walking the parent chain in places.",
      "grain": "One row per local unit.",
      "geography_level": "municipality",
      "sources": [
        "cod-ab-npl",
        "wikidata-np-places"
      ],
      "effective_licence": "cc-by-igo-3.0",
      "share_alike": false,
      "contributing_licences": [
        "cc-by-igo-3.0",
        "cc0-1.0"
      ],
      "attribution": [
        "UN Office for the Coordination of Humanitarian Affairs",
        "Wikidata"
      ],
      "caveats": [
        "Excludes protected areas, which are not local units.",
        "Derived from places; places is the canonical table."
      ],
      "row_count": 753,
      "parquet": "geography.parquet",
      "json": "geography.json",
      "bytes": 53286
    },
    {
      "table": "indicators",
      "title": "Indicators",
      "title_ne": null,
      "description": "What each measured concept means, its default unit, and crucially whether it is additive. Aggregating a non-additive indicator is the most common way to produce a confidently wrong number, so the policy is data rather than documentation.",
      "grain": "One row per indicator.",
      "geography_level": "none",
      "sources": [
        "datanepal-internal"
      ],
      "effective_licence": "cc0-1.0",
      "share_alike": false,
      "contributing_licences": [
        "cc0-1.0"
      ],
      "attribution": [],
      "caveats": [],
      "row_count": 5,
      "parquet": "indicators.parquet",
      "json": "indicators.json",
      "bytes": 3462
    },
    {
      "table": "licences",
      "title": "Licences",
      "title_ne": null,
      "description": "Reuse terms, with share-alike and attribution flags recorded as booleans so licence compatibility can be tested mechanically rather than reasoned about.",
      "grain": "One row per licence.",
      "geography_level": "none",
      "sources": [
        "datanepal-internal"
      ],
      "effective_licence": "cc0-1.0",
      "share_alike": false,
      "contributing_licences": [
        "cc0-1.0"
      ],
      "attribution": [],
      "caveats": [],
      "row_count": 7,
      "parquet": "licences.parquet",
      "json": "licences.json",
      "bytes": 2596
    },
    {
      "table": "observation_dimensions",
      "title": "Observation dimension members",
      "title_ne": null,
      "description": "Long-format dimension assignments for each observation. Joining this to observations reconstructs the full key of a measurement.",
      "grain": "One row per (observation, dimension, member).",
      "geography_level": "none",
      "sources": [
        "cod-ps-npl",
        "worldbank-npl"
      ],
      "effective_licence": "cc-by-igo-3.0",
      "share_alike": false,
      "contributing_licences": [
        "cc-by-4.0",
        "cc-by-igo-3.0"
      ],
      "attribution": [
        "United Nations Population Fund",
        "World Bank"
      ],
      "caveats": [
        "An observation with no dimensions has no rows here. That is normal for scalar indicators like national inflation.\n"
      ],
      "row_count": 9180,
      "parquet": "observation_dimensions.parquet",
      "json": "observation_dimensions.json",
      "bytes": 95882
    },
    {
      "table": "observations",
      "title": "Observations",
      "title_ne": "अवलोकनहरू",
      "description": "The canonical fact table. One row per measurement: an indicator, optionally a place, a period, a set of dimension members, and a value. Every dataset on the platform lands in this shape, which is what lets one component render any indicator without dataset-specific code.",
      "grain": "One row per (dataset, indicator, place, period, dimension combination, revision). Only rows with is_current = true are the present truth.\n",
      "geography_level": "mixed",
      "sources": [
        "cod-ps-npl",
        "worldbank-npl"
      ],
      "effective_licence": "cc-by-igo-3.0",
      "share_alike": false,
      "contributing_licences": [
        "cc-by-4.0",
        "cc-by-igo-3.0"
      ],
      "attribution": [
        "United Nations Population Fund",
        "World Bank"
      ],
      "caveats": [
        "Dimensions are not columns. They live in observation_dimensions, keyed by dimension_key, so a new dataset introduces dimension members rather than schema changes.\n",
        "Totals coexist with their components -- population has sex='all' alongside 'female' and 'male'. Filter by dimension_key or dimension members; never sum blindly.\n",
        "Check the indicator's is_additive flag before aggregating. Rates and ratios (inflation, GDP per capita, density) must not be summed or unweighted-averaged.\n",
        "A NULL value with status 'suppressed' or 'not_collected' is meaningful and distinct from zero.\n"
      ],
      "row_count": 4781,
      "parquet": "observations.parquet",
      "json": "observations.json",
      "bytes": 110539
    },
    {
      "table": "organisations",
      "title": "Source registry",
      "title_ne": "स्रोत निर्देशिका",
      "description": "Every organisation DataNepal cites — as a publisher, an acquisition source, or both — with its Nepali name, type, jurisdiction, and provenance tier.",
      "grain": "One row per organisation.",
      "geography_level": "none",
      "sources": [
        "datanepal-internal"
      ],
      "effective_licence": "cc0-1.0",
      "share_alike": false,
      "contributing_licences": [
        "cc0-1.0"
      ],
      "attribution": [],
      "caveats": [
        "source_tier records provenance authority, not data quality. A Tier A ministry publishing a badly-formatted PDF is more authoritative than a Tier C aggregator's clean CSV of the same numbers.\n",
        "The National Statistics Office was called the Central Bureau of Statistics until 2022. Aggregator records still use the old name; both resolve to nso.\n"
      ],
      "row_count": 24,
      "parquet": "organisations.parquet",
      "json": "organisations.json",
      "bytes": 5522
    },
    {
      "table": "place_identifiers",
      "title": "Place identifiers by source system",
      "title_ne": null,
      "description": "Maps external identifiers to DataNepal place_ids. This is the crosswalk layer that lets a source keyed on its own codes join the canonical geography without name matching.",
      "grain": "One row per (place, identifier system, identifier value).",
      "geography_level": "mixed",
      "sources": [
        "cod-ab-npl",
        "wikidata-np-places"
      ],
      "effective_licence": "cc-by-igo-3.0",
      "share_alike": false,
      "contributing_licences": [
        "cc-by-igo-3.0",
        "cc0-1.0"
      ],
      "attribution": [
        "UN Office for the Coordination of Humanitarian Affairs",
        "Wikidata"
      ],
      "caveats": [
        "Identifier values are unique within their system, not globally. Always qualify a lookup by id_system.\n"
      ],
      "row_count": 1351,
      "parquet": "place_identifiers.parquet",
      "json": "place_identifiers.json",
      "bytes": 21355
    },
    {
      "table": "places",
      "title": "Nepal places",
      "title_ne": "नेपालका स्थानहरू",
      "description": "Every place DataNepal can attach an observation to, across all types: country, provinces, districts, local units, and later wards, electoral constituencies, and protected areas. Keyed by a stable internal place_id with explicit parent relationships.",
      "grain": "One row per place.",
      "geography_level": "mixed",
      "sources": [
        "cod-ab-npl",
        "wikidata-np-places"
      ],
      "effective_licence": "cc-by-igo-3.0",
      "share_alike": false,
      "contributing_licences": [
        "cc-by-igo-3.0",
        "cc0-1.0"
      ],
      "attribution": [
        "UN Office for the Coordination of Humanitarian Affairs",
        "Wikidata"
      ],
      "caveats": [
        "place_id is a DataNepal surrogate, not a source code. Source identifiers (OCHA P-codes, Wikidata QIDs) live in place_identifiers so a place survives a source renumbering its codes.\n",
        "Parent relationships are explicit foreign keys, not derived from P-code substrings. Substring nesting works for the administrative hierarchy and breaks for constituencies and protected areas.\n",
        "Nepali names cover provinces (hand-verified) and ~66% of local units (Wikidata). Districts have none yet. NULL means no verified name exists; names are never transliterated.\n"
      ],
      "row_count": 860,
      "parquet": "places.parquet",
      "json": "places.json",
      "bytes": 65160
    },
    {
      "table": "protected_areas",
      "title": "Nepal protected areas",
      "title_ne": "नेपालका संरक्षित क्षेत्रहरू",
      "description": "National parks, wildlife reserves, hunting reserves, and conservation areas. Federally administered and outside local-unit jurisdiction, so kept out of the administrative hierarchy.",
      "grain": "One row per protected area and district it intersects.",
      "geography_level": "mixed",
      "sources": [
        "cod-ab-npl"
      ],
      "effective_licence": "cc-by-igo-3.0",
      "share_alike": false,
      "contributing_licences": [
        "cc-by-igo-3.0"
      ],
      "attribution": [
        "UN Office for the Coordination of Humanitarian Affairs"
      ],
      "caveats": [
        "Several protected areas span districts and therefore appear more than once.\n",
        "Identified by P-code type digit 5, which depends on OCHA's coding convention."
      ],
      "row_count": 22,
      "parquet": "protected_areas.parquet",
      "json": "protected_areas.json",
      "bytes": 2873
    },
    {
      "table": "table_sources",
      "title": "Table-to-source links",
      "title_ne": null,
      "description": "Which source datasets each published table draws on. This is what makes the effective licence of a table computable rather than asserted.",
      "grain": "One row per (published table, source dataset).",
      "geography_level": "none",
      "sources": [
        "datanepal-internal"
      ],
      "effective_licence": "cc0-1.0",
      "share_alike": false,
      "contributing_licences": [
        "cc0-1.0"
      ],
      "attribution": [],
      "caveats": [],
      "row_count": 18,
      "parquet": "table_sources.parquet",
      "json": "table_sources.json",
      "bytes": 654
    },
    {
      "table": "topics",
      "title": "Topics",
      "title_ne": "विषयहरू",
      "description": "The browse dimension: subject areas users navigate by, with counts of how much data each currently holds.",
      "grain": "One row per topic.",
      "geography_level": "none",
      "sources": [
        "datanepal-internal"
      ],
      "effective_licence": "cc0-1.0",
      "share_alike": false,
      "contributing_licences": [
        "cc0-1.0"
      ],
      "attribution": [],
      "caveats": [
        "status = 'planned' means DataNepal intends to cover the topic and holds no data for it yet. The site must not present a planned topic as populated.\n"
      ],
      "row_count": 12,
      "parquet": "topics.parquet",
      "json": "topics.json",
      "bytes": 3015
    },
    {
      "table": "units",
      "title": "Units of measure",
      "title_ne": null,
      "description": "Units, including currency and price basis. Currency and price basis are part of the unit rather than separate columns, so 'US dollars, current prices' and 'US dollars, constant 2015 prices' are distinct and never silently compared.",
      "grain": "One row per unit.",
      "geography_level": "none",
      "sources": [
        "datanepal-internal"
      ],
      "effective_licence": "cc0-1.0",
      "share_alike": false,
      "contributing_licences": [
        "cc0-1.0"
      ],
      "attribution": [],
      "caveats": [],
      "row_count": 13,
      "parquet": "units.parquet",
      "json": "units.json",
      "bytes": 1972
    }
  ],
  "history": {
    "table": "observation_history",
    "title": "Observation revision history",
    "description": "Append-only history of every published observation. One row per revision; is_current marks the present value. A superseded row keeps its original value and records when it was replaced.",
    "row_count": 4781,
    "parquet": "observation_history.parquet",
    "bytes": 111505
  },
  "sources": [
    {
      "dataset_id": "cod-ab-npl",
      "title": "Nepal — Subnational Administrative Boundaries",
      "publisher": "UN Office for the Coordination of Humanitarian Affairs",
      "publisher_org_id": "ocha",
      "publisher_name_ne": null,
      "publisher_homepage": "https://www.unocha.org",
      "source_tier": "B",
      "acquired_from": "Humanitarian Data Exchange",
      "acquired_from_org_id": "hdx",
      "acquisition_method": "aggregator_download",
      "acquisition_url": null,
      "acquired_indirectly": true,
      "url": "https://data.humdata.org/dataset/cod-ab-npl",
      "licence": "cc-by-igo-3.0",
      "licence_statement_url": "https://data.humdata.org/dataset/cod-ab-npl",
      "commercial_reuse": "permitted_with_attribution",
      "rights_review_status": "reviewed_ok",
      "retrieved": "2026-08-23",
      "vintage": "2024",
      "time_coverage": "2024",
      "geographic_granularity": "mixed",
      "methodology_url": null,
      "update_frequency": "irregular",
      "revises_published_values": true,
      "caveats": [
        "P-codes are OCHA identifiers, not a Nepali government standard. They are recorded as source identifiers against canonical places rather than used as canonical identity.\n",
        "Models 775 units at admin level 3, of which 22 are protected areas rather than local units. Excluding them gives Nepal's official 753.\n",
        "English names only; the source publishes no Nepali names.",
        "Published by OCHA Field Information Services Section; DataNepal obtained this copy via the hdx platform. Attribute the publisher, not the platform."
      ]
    },
    {
      "dataset_id": "cod-ps-npl",
      "title": "Nepal — Subnational Population Statistics",
      "publisher": "United Nations Population Fund",
      "publisher_org_id": "unfpa",
      "publisher_name_ne": null,
      "publisher_homepage": "https://www.unfpa.org",
      "source_tier": "B",
      "acquired_from": "Humanitarian Data Exchange",
      "acquired_from_org_id": "hdx",
      "acquisition_method": "aggregator_download",
      "acquisition_url": null,
      "acquired_indirectly": true,
      "url": "https://data.humdata.org/dataset/cod-ps-npl",
      "licence": "cc-by-igo-3.0",
      "licence_statement_url": "https://data.humdata.org/dataset/cod-ps-npl",
      "commercial_reuse": "permitted_with_attribution",
      "rights_review_status": "reviewed_ok",
      "retrieved": "2026-08-23",
      "vintage": "2023",
      "time_coverage": "2023",
      "geographic_granularity": "district",
      "methodology_url": null,
      "update_frequency": "annual",
      "revises_published_values": true,
      "caveats": [
        "Figures for 2023 are projections, not census counts. Nepal's most recent census was 2021 (29,164,578). Never present projections as census results.\n",
        "Coverage stops at district level; there is no local-unit breakdown.",
        "The open-ended top age band is spelled '80Plus' in current files and '80PL' in others. Ingestion accepts both and asserts the measure count per place.\n",
        "Published by UNFPA; DataNepal obtained this copy via the hdx platform. Attribute the publisher, not the platform."
      ]
    },
    {
      "dataset_id": "wikidata-np-places",
      "title": "Wikidata — Nepal local units",
      "publisher": "Wikidata",
      "publisher_org_id": "wikidata",
      "publisher_name_ne": null,
      "publisher_homepage": "https://www.wikidata.org",
      "source_tier": "D",
      "acquired_from": "Wikidata",
      "acquired_from_org_id": "wikidata",
      "acquisition_method": "official_api",
      "acquisition_url": null,
      "acquired_indirectly": false,
      "url": "https://query.wikidata.org",
      "licence": "cc0-1.0",
      "licence_statement_url": "https://www.wikidata.org/wiki/Wikidata:Licensing",
      "commercial_reuse": "permitted",
      "rights_review_status": "reviewed_ok",
      "retrieved": "2026-08-23",
      "vintage": "2026",
      "time_coverage": "2026",
      "geographic_granularity": "municipality",
      "methodology_url": null,
      "update_frequency": "irregular",
      "revises_published_values": false,
      "caveats": [
        "Chosen over OpenStreetMap on licensing grounds, not coverage. OSM carries Nepali names for ~55% of units but is ODbL, whose share-alike terms would propagate to every table this fed.\n",
        "Covers ~66% of local units. Typing is inconsistent: metropolitan cities are often modelled as the city rather than the administrative unit.\n",
        "Community-maintained, so names are not authoritative."
      ]
    },
    {
      "dataset_id": "worldbank-npl",
      "title": "World Bank World Development Indicators — Nepal",
      "publisher": "World Bank",
      "publisher_org_id": "worldbank",
      "publisher_name_ne": null,
      "publisher_homepage": "https://www.worldbank.org",
      "source_tier": "B",
      "acquired_from": "World Bank",
      "acquired_from_org_id": "worldbank",
      "acquisition_method": "official_api",
      "acquisition_url": "https://api.worldbank.org/v2/country/NPL/indicator/FP.CPI.TOTL.ZG?format=json",
      "acquired_indirectly": false,
      "url": "https://data.worldbank.org/country/nepal",
      "licence": "cc-by-4.0",
      "licence_statement_url": "https://datacatalog.worldbank.org/public-licenses",
      "commercial_reuse": "permitted_with_attribution",
      "rights_review_status": "reviewed_ok",
      "retrieved": "2026-08-23",
      "vintage": "1960-2024",
      "time_coverage": "1960-2024",
      "geographic_granularity": "country",
      "methodology_url": "https://datahelpdesk.worldbank.org/knowledgebase/articles/889392",
      "update_frequency": "quarterly",
      "revises_published_values": true,
      "caveats": [
        "The World Bank restates figures as national accounts are revised. The API exposes a lastupdated date per indicator, which is recorded as the publication date of each observation so revisions are traceable.\n",
        "National level only. These are compiled from Nepali official statistics (largely NRB and the National Statistics Office); the World Bank is the aggregator, not the primary collector.\n",
        "Inflation and per-capita figures are rates and ratios. They must never be summed or averaged across places or periods without weighting.\n"
      ]
    }
  ],
  "notes": {
    "licensing": "Each table's effective_licence is computed from the sources it draws on, taking the most restrictive. DataNepal does not relicense upstream data; attribution requirements travel with it.",
    "provenance": "Every source records both who published the data and where DataNepal obtained this copy. Attribute the publisher, not the platform the copy came from.",
    "additivity": "Check the indicators table before aggregating. Rates, ratios, and per-capita measures are marked is_additive = false."
  }
}