{
  "release": "v20260728",
  "obis_snapshot": "2026-07-28",
  "store": "obis_h3_global_v20260728.duckdb",
  "obisindicators_version": "0.7.1",
  "duckdb_version": "v1.5.6",
  "built_at": "2026-10-07T21:18:29Z",
  "esn": 50,
  "res": [1, 2, 3, 4, 5, 6, 7],
  "res_decade": [1, 2, 3, 4, 5],
  "decades": [1960, 1970, 1980, 1990, 2000, 2010, 2020],
  "compression": "zstd",
  "layers": {
    "all": {
      "path": "all",
      "partitions": ["res"],
      "template": "all/res=<res>/data_0.parquet",
      "rows": 6481134,
      "parent_res": {
        "6": 2,
        "7": 3
      },
      "template_parent": "all/res=<res>/p=<parent>/data_0.parquet",
      "files": 42697,
      "bytes": 118003200
    },
    "eov": {
      "path": "eov",
      "partitions": ["eov", "res"],
      "template": "eov/eov=<eov>/res=<res>/data_0.parquet",
      "rows": 7138315,
      "parent_res": {
        "6": 2,
        "7": 3
      },
      "template_parent": "eov/eov=<eov>/res=<res>/p=<parent>/data_0.parquet",
      "files": 93729,
      "bytes": 172088223
    },
    "taxon": {
      "path": "taxon",
      "partitions": ["rank", "taxon", "res"],
      "template": "taxon/rank=<rank>/taxon=<taxon>/res=<res>/data_0.parquet",
      "rows": 44216189,
      "parent_res": {
        "6": 0,
        "7": 0
      },
      "template_parent": "taxon/rank=<rank>/taxon=<taxon>/res=<res>/p=<parent>/data_0.parquet",
      "files": 21765,
      "bytes": 511529729
    },
    "decade_all": {
      "path": "decade/all",
      "partitions": ["decade", "res"],
      "template": "decade/all/decade=<decade>/res=<res>/data_0.parquet",
      "rows": 1616582,
      "files": 35,
      "bytes": 26124188
    },
    "decade_eov": {
      "path": "decade/eov",
      "partitions": ["eov", "decade", "res"],
      "template": "decade/eov/eov=<eov>/decade=<decade>/res=<res>/data_0.parquet",
      "rows": 1811108,
      "files": 245,
      "bytes": 25622113
    }
  },
  "columns": {
    "h3": "H3 cell index as a lowercase hex string (deck.gl H3HexagonLayer getHexagon)",
    "cell_id": "H3 cell index as BIGINT (same cell as h3)",
    "n": "number of occurrence records",
    "sp": "species richness (distinct species names)",
    "shannon": "Shannon diversity H' = -sum(p_i ln p_i) over species",
    "simpson": "Simpson index sum(p_i^2) over species",
    "es": "Hurlbert expected number of species in a random draw of 50 records, ES(50); NULL where n < 50"
  },
  "stats": {
    "file": "stats.parquet",
    "columns": ["layer", "key", "rank", "decade", "res", "variable", "min", "p02", "p50", "p98", "max", "n_cells"],
    "note": "one row per layer x key x decade x res x variable; n_cells counts cells with a non-NULL value (0 when all are NULL, e.g. es where every n < 50)"
  },
  "taxon_groups": {
    "file": "taxon_groups.parquet",
    "columns": ["kind", "rank", "taxon", "label", "n", "n_cells_res1", "path", "url_path"]
  },
  "encoding": "partition values are percent-encoded on disk by DuckDB (space = %20); fetch over HTTP with `url_path` (each % encoded as %25), or read with DuckDB hive_partitioning, which decodes them.",
  "decade_note": "decade = floor(date_year / 10) * 10; records with no year are excluded; indicators computed with the same SQL as idx_h3 / idx_h3_eov.",
  "files": {
    "file": "files.parquet",
    "columns": ["layer", "path", "url_path", "rows", "bytes", "parent"],
    "n_files": 158474,
    "note": "manifest of every parquet file except itself (HTTP cannot glob)"
  },
  "parents": {
    "parent_res": {
      "6": 2,
      "7": 3
    },
    "parent_res_taxon": {
      "6": 0,
      "7": 0
    },
    "parent_min_rows": 50000,
    "note": "a layer's resolutions listed in its `parent_res` are split one file per parent cell, <layer path>/.../res=<r>/p=<parent h3>/data_0.parquet, for every (layer key, res) with more than parent_min_rows rows (others stay whole); files.parquet `parent` is that parent cell (NULL for a whole file), and its H3 resolution is the parent resolution. A viewer loads the parents covering its viewport."
  }
}
