{
  "schema_version": "1.1",
  "provider": "calcofi",
  "dataset": "dic",
  "workflow": "https://calcofi.io/workflows/ingest_calcofi_dic.html",
  "tables": {
    "sample": {
      "name_long": "Sample",
      "description_md": "One row per physical sampling event at its native grain (site, tow, net, cast, bottle, underway, transect, region pool). An adjacency list: `parent_sample_key` points at the containing event and `root_sample_key` at the top of the chain, so counting distinct events at any level is a single `GROUP BY`."
    },
    "obs": {
      "name_long": "Observation",
      "description_md": "The occurrence-headline long table: one scalar measurement per row, environmental (`realm = 'env'`) and biological (`realm = 'bio'`) together. Biological taxon is the global `taxon_key`; sub-occurrence detail (length/stage bins, behavior) lives in `obs_attribute`, and event-level effort in `sample_measurement`."
    },
    "measurement_type": {
      "name_long": "Measurement Type",
      "description_md": ""
    },
    "dataset": {
      "name_long": "Dataset",
      "description_md": ""
    }
  },
  "columns": {
    "dataset.provider": {
      "name_long": "Provider",
      "units": null,
      "description_md": ""
    },
    "dataset.dataset": {
      "name_long": "Dataset",
      "units": null,
      "description_md": ""
    },
    "dataset.dataset_name": {
      "name_long": "Dataset Name",
      "units": null,
      "description_md": ""
    },
    "dataset.dataset_name_short": {
      "name_long": "Dataset Name Short",
      "units": null,
      "description_md": ""
    },
    "dataset.category": {
      "name_long": "Category",
      "units": null,
      "description_md": ""
    },
    "dataset.color": {
      "name_long": "Color",
      "units": null,
      "description_md": ""
    },
    "dataset.description": {
      "name_long": "Description",
      "units": null,
      "description_md": ""
    },
    "dataset.citation_main": {
      "name_long": "Citation Main",
      "units": null,
      "description_md": ""
    },
    "dataset.citation_others": {
      "name_long": "Citation Others",
      "units": null,
      "description_md": ""
    },
    "dataset.link_calcofi_org": {
      "name_long": "Link Calcofi Org",
      "units": null,
      "description_md": ""
    },
    "dataset.link_data_source": {
      "name_long": "Link Data Source",
      "units": null,
      "description_md": ""
    },
    "dataset.link_others": {
      "name_long": "Link Others",
      "units": null,
      "description_md": ""
    },
    "dataset.tables": {
      "name_long": "Tables",
      "units": null,
      "description_md": ""
    },
    "dataset.coverage_temporal": {
      "name_long": "Coverage Temporal",
      "units": null,
      "description_md": ""
    },
    "dataset.coverage_spatial": {
      "name_long": "Coverage Spatial",
      "units": null,
      "description_md": ""
    },
    "dataset.license": {
      "name_long": "License",
      "units": null,
      "description_md": ""
    },
    "dataset.pi_names": {
      "name_long": "Pi Names",
      "units": null,
      "description_md": ""
    },
    "dataset.doi": {
      "name_long": "Doi",
      "units": null,
      "description_md": ""
    },
    "dataset.license_url": {
      "name_long": "License Url",
      "units": null,
      "description_md": ""
    },
    "dataset.acknowledgement": {
      "name_long": "Acknowledgement",
      "units": null,
      "description_md": ""
    },
    "dataset.contact": {
      "name_long": "Contact",
      "units": null,
      "description_md": ""
    },
    "measurement_type.measurement_type": {
      "name_long": "Measurement Type",
      "units": null,
      "description_md": ""
    },
    "measurement_type.description": {
      "name_long": "Description",
      "units": null,
      "description_md": ""
    },
    "measurement_type.units": {
      "name_long": "Units",
      "units": null,
      "description_md": ""
    },
    "measurement_type.valid_min": {
      "name_long": "Valid Min",
      "units": null,
      "description_md": ""
    },
    "measurement_type.valid_max": {
      "name_long": "Valid Max",
      "units": null,
      "description_md": ""
    },
    "measurement_type.valid_depth_min_m": {
      "name_long": "Valid Depth Min M",
      "units": null,
      "description_md": ""
    },
    "measurement_type.valid_depth_max_m": {
      "name_long": "Valid Depth Max M",
      "units": null,
      "description_md": ""
    },
    "measurement_type.derivation": {
      "name_long": "Derivation",
      "units": null,
      "description_md": ""
    },
    "measurement_type.is_canonical": {
      "name_long": "Is Canonical",
      "units": null,
      "description_md": ""
    },
    "measurement_type._source_column": {
      "name_long": " Source Column",
      "units": null,
      "description_md": ""
    },
    "measurement_type._source_table": {
      "name_long": " Source Table",
      "units": null,
      "description_md": ""
    },
    "measurement_type._source_datasets": {
      "name_long": " Source Datasets",
      "units": null,
      "description_md": ""
    },
    "measurement_type._qual_column": {
      "name_long": " Qual Column",
      "units": null,
      "description_md": ""
    },
    "measurement_type._prec_column": {
      "name_long": " Prec Column",
      "units": null,
      "description_md": ""
    },
    "measurement_type.grain": {
      "name_long": "Grain",
      "units": null,
      "description_md": ""
    },
    "measurement_type.denominator": {
      "name_long": "Denominator",
      "units": null,
      "description_md": ""
    },
    "measurement_type.category": {
      "name_long": "Category",
      "units": null,
      "description_md": ""
    },
    "measurement_type.variable": {
      "name_long": "Variable",
      "units": null,
      "description_md": ""
    },
    "measurement_type.nerc_p01": {
      "name_long": "Nerc P01",
      "units": null,
      "description_md": ""
    },
    "measurement_type.units_nerc_p06": {
      "name_long": "Units Nerc P06",
      "units": null,
      "description_md": ""
    },
    "obs.obs_id": {
      "name_long": "Observation ID",
      "description_md": "Surrogate key, renumbered globally when the release concatenates the per-dataset shards."
    },
    "obs.realm": {
      "name_long": "Realm",
      "description_md": "`env` for physical/chemical measurements, `bio` for organism observations."
    },
    "obs.dataset_key": {
      "name_long": "Dataset Key",
      "description_md": "Provenance stamp: `provider_dataset`."
    },
    "obs.sample_key": {
      "name_long": "Sample Key",
      "description_md": "The sampling event this observation came from; joins `sample`."
    },
    "obs.grid_key": {
      "name_long": "Grid Key",
      "description_md": "CalCOFI station grid cell, denormalized from `sample` so rollups need no join. NULL for region-pooled data."
    },
    "obs.cruise_key": {
      "name_long": "Cruise Key",
      "description_md": "Cruise, denormalized from `sample` so rollups need no join."
    },
    "obs.latitude": {
      "name_long": "Latitude",
      "units": "decimal degrees",
      "description_md": "Observation latitude (WGS84)."
    },
    "obs.longitude": {
      "name_long": "Longitude",
      "units": "decimal degrees",
      "description_md": "Observation longitude (WGS84)."
    },
    "obs.datetime": {
      "name_long": "Datetime",
      "description_md": "Observation time (UTC). NULL for region-pooled data with no event time."
    },
    "obs.depth_min_m": {
      "name_long": "Depth Min",
      "units": "m",
      "description_md": "Shallowest depth this observation represents."
    },
    "obs.depth_max_m": {
      "name_long": "Depth Max",
      "units": "m",
      "description_md": "Deepest depth this observation represents; equal to `depth_min_m` for point measurements (bottle, CTD scan)."
    },
    "obs.taxon_key": {
      "name_long": "Taxon Key",
      "description_md": "Global taxon key, `worms:<AphiaID>` or `itis:<TSN>` for birds. NULL for `env` rows. Joins `taxon`."
    },
    "obs.life_stage": {
      "name_long": "Life Stage",
      "description_md": "Life stage where the source resolves one (larva, adult, juvenile, egg, phyllosoma)."
    },
    "obs.measurement_type": {
      "name_long": "Measurement Type",
      "description_md": "Measured quantity; joins the `measurement_type` vocabulary."
    },
    "obs.measurement_value": {
      "name_long": "Measurement Value",
      "description_md": "The measured value, in the units `measurement_type` declares."
    },
    "obs.measurement_qual": {
      "name_long": "Measurement Qualifier",
      "description_md": "Source quality flag, verbatim."
    },
    "obs.measurement_prec": {
      "name_long": "Measurement Precision",
      "description_md": "Source-reported precision where available."
    },
    "obs.hex_id": {
      "name_long": "Hex ID",
      "description_md": "H3 cell at resolution 10, stored as UBIGINT. Aggregate coarser at query time with `h3_cell_to_parent(hex_id, res)` — there is no per-resolution column ladder."
    },
    "sample.sample_key": {
      "name_long": "Sample Key",
      "description_md": "Globally unique event key, namespaced `dataset_key:sample_type:id` so the same integer id in two datasets — or at two event levels in one dataset — never collides."
    },
    "sample.sample_type": {
      "name_long": "Sample Type",
      "description_md": "Event grain: `site`, `tow`, `net`, `cast`, `bottle`, `underway`, `transect` or `region_pool`."
    },
    "sample.parent_sample_key": {
      "name_long": "Parent Sample Key",
      "description_md": "The containing event (net → tow → site; bottle → cast). NULL at the top of the chain. Flat adjacency list: attributes are not inherited."
    },
    "sample.root_sample_key": {
      "name_long": "Root Sample Key",
      "description_md": "Top of this event's containment chain; equals `sample_key` for single-level datasets. Use `count(DISTINCT root_sample_key)` to count stations/casts irrespective of grain."
    },
    "sample.dataset_key": {
      "name_long": "Dataset Key",
      "description_md": "Provenance stamp: `provider_dataset`."
    },
    "sample.grid_key": {
      "name_long": "Grid Key",
      "description_md": "CalCOFI station grid cell. NULL where the dataset has no station assignment (region-pooled phytoplankton)."
    },
    "sample.site_key": {
      "name_long": "Site Key",
      "description_md": "CalCOFI station natural key as the source records it (line/station, e.g. `090.0 060.0`). Present on 13 of the 18 source event tables, so it is carried on the event dimension rather than lost to consolidation; `grid_key` is the derived grid cell, this is the source's own station id."
    },
    "sample.cruise_key": {
      "name_long": "Cruise Key",
      "description_md": "CalCOFI cruise natural key `YYYY-MM-NODC`."
    },
    "sample.order_occ": {
      "name_long": "Order of Occupation",
      "description_md": "Order in which the station was occupied on the cruise. Source spelling varies (`order_occ`, `ord_occ`) and CTD stores it as text; normalised to an integer here."
    },
    "sample.latitude": {
      "name_long": "Latitude",
      "units": "decimal degrees",
      "description_md": "Event latitude (WGS84)."
    },
    "sample.longitude": {
      "name_long": "Longitude",
      "units": "decimal degrees",
      "description_md": "Event longitude (WGS84)."
    },
    "sample.datetime": {
      "name_long": "Datetime",
      "description_md": "Event start time (UTC)."
    },
    "sample.depth_min_m": {
      "name_long": "Depth Min",
      "units": "m",
      "description_md": "Shallowest depth sampled by this event."
    },
    "sample.depth_max_m": {
      "name_long": "Depth Max",
      "units": "m",
      "description_md": "Deepest depth sampled by this event."
    },
    "sample.tow_type": {
      "name_long": "Tow Type",
      "description_md": "Net gear code where the dataset records one (C1/CB/CV/PV oblique or vertical, MT manta); NULL for gears and datasets without one. Needed to compute gear-appropriate CPUE."
    },
    "sample.data_stage": {
      "name_long": "Data Stage",
      "description_md": "The source's own processing state for this event: `final` (post-cruise calibrations applied) or `preliminary` (**not for publication** — the source warns that oxygen, nitrate and chlorophyll may change significantly once calibrated). Populated by `calcofi_ctd-cast`; NULL where the dataset draws no such distinction, which is not a claim that the data are final."
    },
    "sample.geom": {
      "name_long": "Geometry",
      "description_md": "Point geometry minted from `longitude`/`latitude` (OGC:CRS84)."
    },
    "sample.source_uuid": {
      "name_long": "Source Uuid",
      "units": null,
      "description_md": ""
    }
  },
  "contributions": {
    "sample": {
      "rows": 3261,
      "owned": true,
      "shared": true
    },
    "obs": {
      "rows": 3708,
      "owned": true,
      "shared": true
    },
    "measurement_type": {
      "rows": 200,
      "owned": true,
      "shared": true
    }
  }
}
