{
  "schema_version": "1.2",
  "release_version": "v2026.06.26",
  "release_date": "2026-06-26",
  "datasets": {
    "calcofi_bird_mammal_census": {
      "provider": "calcofi",
      "dataset": "bird_mammal_census",
      "dataset_name": "CalCOFI Bird & Mammal Census",
      "description": "Bird and mammal observations along CalCOFI (and NMFS, CPR) cruise transects, 1987-2021. Transect effort + counts + species/behavior lookups. Curated via CCE-LTER DataZoo 255 (PI Bill Sydeman).\n",
      "citation_main": null,
      "link_calcofi_org": null,
      "link_data_source": "https://oceaninformatics.ucsd.edu/datazoo/catalogs/ccelter/datasets/255",
      "coverage_temporal": "1987 to 2021",
      "coverage_spatial": "CalCOFI region (California Current)",
      "license": null,
      "pi_names": "Bill Sydeman",
      "tables": [
        "bird_mammal_transect",
        "bird_mammal_observation",
        "bird_mammal_species",
        "bird_mammal_behavior"
      ],
      "workflow_url": "https://calcofi.io/workflows/ingest_calcofi_bird_mammal_census.html"
    },
    "calcofi_bottle": {
      "provider": "calcofi",
      "dataset": "bottle",
      "dataset_name": "CalCOFI Bottle Database",
      "description": "Hydrographic bottle data including temperature, salinity, oxygen, nutrients, pigments, and C14 from CalCOFI cruises.\n",
      "citation_main": "CalCOFI. (2023). CalCOFI Bottle Database 194903-202105. CalCOFI.org.",
      "link_calcofi_org": "https://calcofi.org/data/oceanographic-data/bottle-database/",
      "link_data_source": "https://calcofi.org/downloads/database/CalCOFI_Database_194903-202105_csv_16October2023.zip",
      "coverage_temporal": "1949-03 to 2021-05",
      "coverage_spatial": "23-51°N, -170 to -117°W",
      "license": null,
      "pi_names": null,
      "tables": [
        "casts",
        "bottle",
        "bottle_measurement",
        "cast_condition",
        "measurement_type"
      ],
      "workflow_url": "https://calcofi.io/workflows/ingest_calcofi_bottle.html"
    },
    "calcofi_ctd-cast": {
      "provider": "calcofi",
      "dataset": "ctd-cast",
      "dataset_name": "CalCOFI CTD Cast Files",
      "description": "CTD downcast profiles with temperature, salinity, oxygen, fluorescence, and other sensors at standard depths.\n",
      "citation_main": "CalCOFI. (2023). CalCOFI CTD Cast Files. CalCOFI.org.",
      "link_calcofi_org": "https://calcofi.org/data/oceanographic-data/ctd-cast-files/",
      "link_data_source": "https://calcofi.org/data/oceanographic-data/ctd-cast-files/",
      "coverage_temporal": "1993-01 to 2021-05",
      "coverage_spatial": "28-37°N, -125 to -117°W",
      "license": null,
      "pi_names": null,
      "tables": [
        "ctd_cast",
        "ctd_thin",
        "ctd_measurement",
        "ctd_summary",
        "ctd_wide",
        "measurement_type"
      ],
      "workflow_url": "https://calcofi.io/workflows/ingest_calcofi_ctd-cast.html"
    },
    "calcofi_dic": {
      "provider": "calcofi",
      "dataset": "dic",
      "dataset_name": "CalCOFI DIC",
      "description": "Discrete profile dissolved inorganic carbon (DIC) and total alkalinity (TA) from CalCOFI Niskin bottle samples, quality-controlled using WOCE flagging.\n",
      "citation_main": "Keeling, C.D.; Lueker, T.J.; Emanuele, G.; Dickson, A.G.; Martz, T.R.; Wolfe, W.H.; Mau, A. (2025). Discrete profile dissolved inorganic carbon, total alkalinity, water temperature and salinity measurements for CalCOFI (NCEI Accession 0301029). NOAA NCEI. https://doi.org/10.25921/3w9f-jd72",
      "link_calcofi_org": "https://calcofi.org/data/oceanographic-data/dic/",
      "link_data_source": "https://www.ncei.noaa.gov/access/metadata/landing-page/bin/iso?id=gov.noaa.nodc:0301029",
      "coverage_temporal": "1983-03 to 2021-07",
      "coverage_spatial": "28-37°N, -125 to -117°W",
      "license": "CC BY 4.0",
      "pi_names": "Todd Martz; Aaron Mau",
      "tables": [
        "dic_sample",
        "dic_measurement",
        "dic_summary",
        "measurement_type"
      ],
      "workflow_url": "https://calcofi.io/workflows/ingest_calcofi_dic.html"
    },
    "calcofi_phyllosoma": {
      "provider": "calcofi",
      "dataset": "phyllosoma",
      "dataset_name": "CalCOFI Lobster Phyllosoma",
      "description": "Spiny lobster (Panulirus interruptus) phyllosoma larvae counts by developmental stage from CalCOFI net tows, 1951-2008. Source: EDI knb-lter-cce.188.4 (Koslow).\n",
      "citation_main": null,
      "link_calcofi_org": null,
      "link_data_source": "https://portal.edirepository.org/nis/mapbrowse?packageid=knb-lter-cce.188.4",
      "coverage_temporal": "1951 to 2008",
      "coverage_spatial": "CalCOFI region",
      "license": null,
      "pi_names": "J. Anthony Koslow",
      "tables": [
        "phyllosoma_tow",
        "phyllosoma_measurement",
        "measurement_type"
      ],
      "workflow_url": "https://calcofi.io/workflows/ingest_calcofi_phyllosoma.html"
    },
    "calcofi_phytoplankton": {
      "provider": "calcofi",
      "dataset": "phytoplankton",
      "dataset_name": "CalCOFI Phytoplankton (Venrick)",
      "description": "Abundance and species composition of phytoplankton (385 taxonomic categories) in the California Current, 1996-2022, by inverted-microscope counts (E. Venrick). Samples from the near-surface \"second depth\" are pooled across stations into four regions (NE, SE, Alley, Offshore; Hayward & Venrick 1998) before counting, so the grain is cruise x region, not per-station. Source: EDI knb-lter-cce.254.4.\n",
      "citation_main": null,
      "link_calcofi_org": "https://calcofi.org/data/marine-ecosystem-data/phytoplankton-bacterioplankton/",
      "link_data_source": "https://portal.edirepository.org/nis/mapbrowse?packageid=knb-lter-cce.254.4",
      "coverage_temporal": "1996 to 2022",
      "coverage_spatial": "CalCOFI region (4 pooled sub-regions)",
      "license": null,
      "pi_names": "Elizabeth L. Venrick",
      "tables": [
        "phyto_sample",
        "phyto_measurement",
        "phyto_taxon",
        "region",
        "measurement_type"
      ],
      "workflow_url": "https://calcofi.io/workflows/ingest_calcofi_phytoplankton.html"
    },
    "cce-lter_euphausiids": {
      "provider": "cce-lter",
      "dataset": "euphausiids",
      "dataset_name": "CCE-LTER Euphausiid Abundance",
      "description": "Euphausiid (krill) abundance from CalCOFI / CCE-LTER net tows, 1951-2019, one row per tow. Provisional pending provider answers on abundance units and taxonomic scope (see Questions for Data Providers).\n",
      "citation_main": null,
      "link_calcofi_org": null,
      "link_data_source": "https://portal.edirepository.org/ (EDI package TBD)",
      "coverage_temporal": "1951-01 to 2019-04",
      "coverage_spatial": "CalCOFI grid incl. Baja lines",
      "license": null,
      "pi_names": "Rasmus Swalethorp; Linsey Sala",
      "tables": [
        "euphausiids_tow",
        "euphausiids_measurement",
        "euphausiids_summary",
        "measurement_type"
      ],
      "workflow_url": "https://calcofi.io/workflows/ingest_cce-lter_euphausiids.html"
    },
    "cce-lter_zoodb": {
      "provider": "cce-lter",
      "dataset": "zoodb",
      "dataset_name": "ZooDB Holoplankton Community",
      "description": "Holoplankton abundance and carbon biomass by 33 higher taxa (copepods to family, plus amphipods, chaetognaths, salps, pyrosomes, pteropods, ostracods, foraminifera, radiolaria and more) from CalCOFI net tows, 1951-2021, enumerated by microscopy (Ohman Lab / SIO Pelagic Invertebrate Collection). One row per (sample, taxon, measurement_type); unpooled tows are station-resolved, pooled samples are per-cruise regional composites. Raw (uncorrected) abundance per 1000 m3 and per m2, plus biomass mg C/m2.\n",
      "citation_main": null,
      "link_calcofi_org": "https://calcofi.org/data/marine-ecosystem-data/zooplankton/",
      "link_data_source": "https://oceaninformatics.ucsd.edu/zoodb/",
      "coverage_temporal": "1951-03 to 2021-05",
      "coverage_spatial": "CalCOFI lines 60-93 (Southern + Central California)",
      "license": null,
      "pi_names": "Mark D. Ohman; Bertha Lavaniegos; Linsey Sala",
      "tables": [
        "zoodb_sample",
        "zoodb_measurement",
        "zoodb_taxon",
        "measurement_type"
      ],
      "workflow_url": "https://calcofi.io/workflows/ingest_cce-lter_zoodb.html"
    },
    "cce-lter_zooscan": {
      "provider": "cce-lter",
      "dataset": "zooscan",
      "dataset_name": "ZooScan PRPOOS Zooplankton",
      "description": "Zooplankton abundance, carbon biomass, and size (Feret diameter, individual carbon content) from ZooScan optical imaging of CalCOFI / CCE-LTER PRPOOS net tows on lines 80, 87 and 90, 2005-present, machine-classified into 23 bioclasses (copepod groups, euphausiids, chaetognaths, appendicularians, salps, doliolids, pteropods, rhizaria and more). One row per (sample, taxon, measurement_type); per-station tows. Source: SIO Ocean Informatics ZooScan portal (Ohman Lab; interface by Marina Frants).\n",
      "citation_main": null,
      "link_calcofi_org": "https://calcofi.org/data/marine-ecosystem-data/zooplankton/",
      "link_data_source": "https://oceaninformatics.ucsd.edu/zooscandb/",
      "coverage_temporal": "2005-07 to 2026-04",
      "coverage_spatial": "CalCOFI lines 80, 87, 90 (Southern California)",
      "license": null,
      "pi_names": "Mark D. Ohman; Marina Frants",
      "tables": [
        "zooscan_sample",
        "zooscan_measurement",
        "zooscan_taxon",
        "measurement_type"
      ],
      "workflow_url": "https://calcofi.io/workflows/ingest_cce-lter_zooscan.html"
    },
    "pic_zooplankton": {
      "provider": "pic",
      "dataset": "zooplankton",
      "dataset_name": "SIO PIC Zooplankton Net Tows",
      "description": "Zooplankton net-tow sample registry from the SIO Pelagic Invertebrate Collection, filtered to the CalCOFI region. Position, time, depth, and gear metadata per tow. Biovolume measurements are not in the source file and are pending from the provider (see Questions for Data Providers).\n",
      "citation_main": null,
      "link_calcofi_org": null,
      "link_data_source": "SIO Pelagic Invertebrate Collection DB (CSV export)",
      "coverage_temporal": "1926 to present (CalCOFI-region subset)",
      "coverage_spatial": "CalCOFI grid (~23-51N, -135 to -117W incl. Baja)",
      "license": null,
      "pi_names": "Rasmus Swalethorp; Ed Weber; Linsey Sala",
      "tables": "zooplankton_tow",
      "workflow_url": "https://calcofi.io/workflows/ingest_pic_zooplankton.html"
    },
    "swfsc_cufes": {
      "provider": "swfsc",
      "dataset": "cufes",
      "dataset_name": "CalCOFI Underway CUFES Fish Eggs",
      "description": "Continuous Underway Fish Egg Sampler (CUFES) egg counts (sardine, anchovy, jack mackerel, hake, squid, other) with underway environmental conditions, from CalCOFI cruises (1996-present). Source: NOAA CoastWatch ERDDAP erdCalCOFIcufes.\n",
      "citation_main": null,
      "link_calcofi_org": null,
      "link_data_source": "https://coastwatch.pfeg.noaa.gov/erddap/tabledap/erdCalCOFIcufes.html",
      "coverage_temporal": "1996 to present",
      "coverage_spatial": "CalCOFI region (underway)",
      "license": null,
      "pi_names": "Noelle Bowlin",
      "tables": [
        "cufes_sample",
        "cufes_measurement",
        "measurement_type"
      ],
      "workflow_url": "https://calcofi.io/workflows/ingest_swfsc_cufes.html"
    },
    "swfsc_ichthyo": {
      "provider": "swfsc",
      "dataset": "ichthyo",
      "dataset_name": "SWFSC Ichthyoplankton",
      "description": "Ichthyoplankton (fish eggs and larvae) collected by bongo and manta net tows on CalCOFI cruises, processed by SWFSC.\n",
      "citation_main": "NOAA Fisheries SWFSC. CalCOFI Ichthyoplankton Database.",
      "link_calcofi_org": "https://calcofi.org/data/biology/ichthyoplankton/",
      "link_data_source": null,
      "coverage_temporal": "1951 to present",
      "coverage_spatial": "23-51°N, -170 to -117°W",
      "license": null,
      "pi_names": null,
      "tables": [
        "cruise",
        "ship",
        "site",
        "tow",
        "net",
        "ichthyo",
        "species",
        "taxon",
        "taxa_rank",
        "lookup",
        "grid",
        "segment",
        "invert"
      ],
      "workflow_url": "https://calcofi.io/workflows/ingest_swfsc_ichthyo.html"
    }
  },
  "tables": {
    "bird_mammal_transect": {
      "name_long": "Bird Mammal Transect",
      "description_md": "One row per survey transect segment (effort): position, time, dimensions, and bottom depth. Bird/mammal counts join from bird_mammal_observation on gis_key.",
      "provider": "calcofi",
      "dataset": "bird_mammal_census",
      "workflow": "https://calcofi.io/workflows/ingest_calcofi_bird_mammal_census.html"
    },
    "bird_mammal_observation": {
      "name_long": "Bird Mammal Observation",
      "description_md": "Bird and mammal counts per transect segment: one row per (transect, species, behavior). count is the measurement; species_code -> bird_mammal_species, behavior_code -> bird_mammal_behavior.",
      "provider": "calcofi",
      "dataset": "bird_mammal_census",
      "workflow": "https://calcofi.io/workflows/ingest_calcofi_bird_mammal_census.html"
    },
    "bird_mammal_species": {
      "name_long": "Bird Mammal Species",
      "description_md": "Species lookup for the census: 4-letter species_code with common/scientific name, ITIS id, and bird/mammal/fish flags.",
      "provider": "calcofi",
      "dataset": "bird_mammal_census",
      "workflow": "https://calcofi.io/workflows/ingest_calcofi_bird_mammal_census.html"
    },
    "bird_mammal_behavior": {
      "name_long": "Bird Mammal Behavior",
      "description_md": "Behavior-code lookup for the census observations.",
      "provider": "calcofi",
      "dataset": "bird_mammal_census",
      "workflow": "https://calcofi.io/workflows/ingest_calcofi_bird_mammal_census.html"
    },
    "bottle": {
      "name_long": "Bottle",
      "description_md": "water sample identity and context at specific depths; measurements pivoted to bottle_measurement",
      "provider": "calcofi",
      "dataset": "bottle",
      "workflow": "https://calcofi.io/workflows/ingest_calcofi_bottle.html"
    },
    "bottle_measurement": {
      "name_long": "Bottle Measurement",
      "description_md": "long-format measurement values pivoted from bottle table",
      "provider": "calcofi",
      "dataset": "bottle",
      "workflow": "https://calcofi.io/workflows/ingest_calcofi_bottle.html"
    },
    "cast_condition": {
      "name_long": "Cast Condition",
      "description_md": "long-format environmental/meteorological conditions pivoted from casts table",
      "provider": "calcofi",
      "dataset": "bottle",
      "workflow": "https://calcofi.io/workflows/ingest_calcofi_bottle.html"
    },
    "casts": {
      "name_long": "Casts",
      "description_md": "station-level cast metadata including location and integrated measurements; environmental conditions pivoted to cast_condition",
      "provider": "calcofi",
      "dataset": "bottle",
      "workflow": "https://calcofi.io/workflows/ingest_calcofi_bottle.html"
    },
    "dataset": {
      "name_long": "Dataset",
      "description_md": "",
      "provider": "swfsc",
      "dataset": "ichthyo",
      "workflow": "https://calcofi.io/workflows/ingest_swfsc_ichthyo.html"
    },
    "grid": {
      "name_long": "Grid",
      "description_md": "CalCOFI survey grid polygons with standard and historical station patterns",
      "provider": "swfsc",
      "dataset": "ichthyo",
      "workflow": "https://calcofi.io/workflows/ingest_swfsc_ichthyo.html"
    },
    "measurement_type": {
      "name_long": "Measurement Type",
      "description_md": "reference table for CTD measurement types with units and descriptions",
      "provider": "calcofi",
      "dataset": "ctd-cast",
      "workflow": "https://calcofi.io/workflows/ingest_calcofi_ctd-cast.html"
    },
    "ctd_cast": {
      "name_long": "CTD Cast",
      "description_md": "cast-level metadata for CalCOFI CTD profiles; measurements pivoted to ctd_measurement",
      "provider": "calcofi",
      "dataset": "ctd-cast",
      "workflow": "https://calcofi.io/workflows/ingest_calcofi_ctd-cast.html"
    },
    "ctd_measurement": {
      "name_long": "CTD Measurement",
      "description_md": "long-format sensor readings pivoted from wide CTD profile data",
      "provider": "calcofi",
      "dataset": "ctd-cast",
      "workflow": "https://calcofi.io/workflows/ingest_calcofi_ctd-cast.html"
    },
    "ctd_thin": {
      "name_long": "CTD Thin",
      "description_md": "adaptively-thinned ctd_measurement: single cast direction, canonical measurement types, ~10 m depth grid with inflection points preserved (see Measurement Frequency section); headline table — full ctd_measurement is supplemental",
      "provider": "calcofi",
      "dataset": "ctd-cast",
      "workflow": "https://calcofi.io/workflows/ingest_calcofi_ctd-cast.html"
    },
    "ctd_summary": {
      "name_long": "CTD Summary",
      "description_md": "summary statistics per station/depth/measurement_type across cast directions",
      "provider": "calcofi",
      "dataset": "ctd-cast",
      "workflow": "https://calcofi.io/workflows/ingest_calcofi_ctd-cast.html"
    },
    "ctd_wide": {
      "name_long": "CTD Wide",
      "description_md": "wide-format CTD profile — one column per measurement type (supplemental output for ERDDAP; not part of normalized release). Column definitions follow the CalCOFI CTD+Bottle CSV column format (Sep 2015).",
      "provider": "calcofi",
      "dataset": "ctd-cast",
      "workflow": "https://calcofi.io/workflows/ingest_calcofi_ctd-cast.html"
    },
    "dic_sample": {
      "name_long": "Dic Sample",
      "description_md": "DIC and total alkalinity measurements from Niskin bottle samples, NCEI accession 0301029",
      "provider": "calcofi",
      "dataset": "dic",
      "workflow": "https://calcofi.io/workflows/ingest_calcofi_dic.html"
    },
    "dic_measurement": {
      "name_long": "Dic Measurement",
      "description_md": "",
      "provider": "calcofi",
      "dataset": "dic",
      "workflow": "https://calcofi.io/workflows/ingest_calcofi_dic.html"
    },
    "dic_summary": {
      "name_long": "Dic Summary",
      "description_md": "",
      "provider": "calcofi",
      "dataset": "dic",
      "workflow": "https://calcofi.io/workflows/ingest_calcofi_dic.html"
    },
    "phyllosoma_tow": {
      "name_long": "Phyllosoma Tow",
      "description_md": "One row per net tow with spiny lobster (Panulirus interruptus) phyllosoma larvae sampling: position, time, depth, volume filtered, aliquot. Counts by developmental stage are pivoted to phyllosoma_measurement.",
      "provider": "calcofi",
      "dataset": "phyllosoma",
      "workflow": "https://calcofi.io/workflows/ingest_calcofi_phyllosoma.html"
    },
    "phyllosoma_measurement": {
      "name_long": "Phyllosoma Measurement",
      "description_md": "Phyllosoma larvae counts per tow in long form: measurement_type = total or developmental stage (1-11), measurement_value = count.",
      "provider": "calcofi",
      "dataset": "phyllosoma",
      "workflow": "https://calcofi.io/workflows/ingest_calcofi_phyllosoma.html"
    },
    "phyto_sample": {
      "name_long": "Phyto Sample",
      "description_md": "One row per pooled regional sample: a (cruise x region) composite. Venrick CalCOFI phytoplankton are pooled across stations into 4 regions (NE/SE/Alley/Offshore; Hayward & Venrick 1998) before counting, so there is no per-station position — latitude/longitude are the region-centroid (provisional, see questions Q01).",
      "provider": "calcofi",
      "dataset": "phytoplankton",
      "workflow": "https://calcofi.io/workflows/ingest_calcofi_phytoplankton.html"
    },
    "phyto_measurement": {
      "name_long": "Phyto Measurement",
      "description_md": "Phytoplankton abundance in long form: one row per (sample, taxon). measurement_type = phytoplankton_abundance, measurement_value = cells/L (provisional units, Q02). Group-SUM rows from the source are derivable from taxa and excluded (Q03).",
      "provider": "calcofi",
      "dataset": "phytoplankton",
      "workflow": "https://calcofi.io/workflows/ingest_calcofi_phytoplankton.html"
    },
    "phyto_taxon": {
      "name_long": "Phyto Taxon",
      "description_md": "Taxon lookup keyed by the source species_code (Venrick code), with verbatim taxa group + species and a best-effort WoRMS aphia_id (partial; phytoplankton are poorly covered, Q05).",
      "provider": "calcofi",
      "dataset": "phytoplankton",
      "workflow": "https://calcofi.io/workflows/ingest_calcofi_phytoplankton.html"
    },
    "region": {
      "name_long": "Region",
      "description_md": "The 4 pooled regions defined on the CalCOFI grid (Hayward & Venrick 1998), with member station codes and a provisional centroid (Q01).",
      "provider": "calcofi",
      "dataset": "phytoplankton",
      "workflow": "https://calcofi.io/workflows/ingest_calcofi_phytoplankton.html"
    },
    "euphausiids_tow": {
      "name_long": "Euphausiids Tow",
      "description_md": "One row per euphausiid net tow: position, time, and cruise/ship/site keys. The Abundance measurement is pivoted into euphausiids_measurement. Source: CCE-LTER euphausiid abundance time series (data.csv).",
      "provider": "cce-lter",
      "dataset": "euphausiids",
      "workflow": "https://calcofi.io/workflows/ingest_cce-lter_euphausiids.html"
    },
    "euphausiids_measurement": {
      "name_long": "Euphausiids Measurement",
      "description_md": "",
      "provider": "cce-lter",
      "dataset": "euphausiids",
      "workflow": "https://calcofi.io/workflows/ingest_cce-lter_euphausiids.html"
    },
    "euphausiids_summary": {
      "name_long": "Euphausiids Summary",
      "description_md": "",
      "provider": "cce-lter",
      "dataset": "euphausiids",
      "workflow": "https://calcofi.io/workflows/ingest_cce-lter_euphausiids.html"
    },
    "zoodb_sample": {
      "name_long": "Zoodb Sample",
      "description_md": "One row per zooplankton sample. source='unpooled' is a single night/day net tow with full position (line/station/site_key, lat/lon, datetime, depth, net type); source='pooled' is a per-cruise regional composite of n_tows_pooled night tows (Lavaniegos & Ohman 2007) with no per-station position. Unpooled tows resolve ship_key/cruise_key/site_key/grid_key against the shared CalCOFI reference tables; pooled samples carry only cruise_key + region. Source: ZooDB holoplankton export (oceaninformatics.ucsd.edu/zoodb), pooled=combined.",
      "provider": "cce-lter",
      "dataset": "zoodb",
      "workflow": "https://calcofi.io/workflows/ingest_cce-lter_zoodb.html"
    },
    "zoodb_measurement": {
      "name_long": "Zoodb Measurement",
      "description_md": "Holoplankton abundance and biomass in long form: one row per (sample, taxon, measurement_type). measurement_type is zooplankton_abundance (count/1000m3), zooplankton_abundance_areal (count/m2), or zooplankton_biomass_carbon (mg C/m2). A row's presence means the taxon was analyzed for that sample; measurement_value=0 means analyzed-but-absent. Coverage varies by taxon/cruise (Ohman & Smith 1995) — missing (sample, taxon) combinations are NOT analyzed, not zeros.",
      "provider": "cce-lter",
      "dataset": "zoodb",
      "workflow": "https://calcofi.io/workflows/ingest_cce-lter_zoodb.html"
    },
    "zoodb_taxon": {
      "name_long": "Zoodb Taxon",
      "description_md": "Higher-taxon lookup for the 33 enumerated holoplankton groups, with the verbatim ZooDB label, a taxon_slug join key, and the WoRMS-resolved aphia_id + accepted scientific name, rank, and kingdom..family classification. Counts are aggregated to this higher-taxon level (all genera/species and phases/stages combined).",
      "provider": "cce-lter",
      "dataset": "zoodb",
      "workflow": "https://calcofi.io/workflows/ingest_cce-lter_zoodb.html"
    },
    "zooscan_sample": {
      "name_long": "Zooscan Sample",
      "description_md": "One row per ZooScan PRPOOS net-tow sample: a station occupation on a CalCOFI/CCE-LTER cruise (lines 80, 87, 90), 2005-present, with position, time, day/night, and resolved cruise/ship/site keys. Samples were optically imaged with a ZooScan and machine-classified. Source: SIO Ocean Informatics ZooScan portal PRPOOS plot CGI (oceaninformatics.ucsd.edu/zooscandb), per-station values.",
      "provider": "cce-lter",
      "dataset": "zooscan",
      "workflow": "https://calcofi.io/workflows/ingest_cce-lter_zooscan.html"
    },
    "zooscan_measurement": {
      "name_long": "Zooscan Measurement",
      "description_md": "ZooScan imaging metrics in long form: one row per (sample, taxon, measurement_type). measurement_type is zooscan_abundance (No./m2), zooscan_biomass_carbon (mgC/m2), zooscan_feret_diameter (mm, mean organism size), or zooscan_carbon_individual (ugC per individual). measurement_value=0 means the class was imaged-but-absent at that sample.",
      "provider": "cce-lter",
      "dataset": "zooscan",
      "workflow": "https://calcofi.io/workflows/ingest_cce-lter_zooscan.html"
    },
    "zooscan_taxon": {
      "name_long": "Zooscan Taxon",
      "description_md": "Image-classification lookup for the 23 ZooScan PRPOOS bioclasses, with the verbatim class name, a taxon_slug join key, and a best-effort WoRMS aphia_id + accepted name/rank/classification. Four classes are non-taxonomic operational categories (eggs, multiples, nauplii, others) and two are combined groups (cnidaria_ctenophores, pteropoda_heteropoda); see taxon_note.",
      "provider": "cce-lter",
      "dataset": "zooscan",
      "workflow": "https://calcofi.io/workflows/ingest_cce-lter_zooscan.html"
    },
    "zooplankton_tow": {
      "name_long": "Zooplankton Tow",
      "description_md": "One row per zooplankton net tow (parent-net-tow registry) from the SIO Pelagic Invertebrate Collection, filtered to the CalCOFI region. Position, time, depth, and gear metadata. Biovolume measurements are NOT in the source file (see questions Q01) and will be added as zooplankton_measurement when provided.",
      "provider": "pic",
      "dataset": "zooplankton",
      "workflow": "https://calcofi.io/workflows/ingest_pic_zooplankton.html"
    },
    "cufes_sample": {
      "name_long": "Cufes Sample",
      "description_md": "One row per Continuous Underway Fish Egg Sampler (CUFES) sample: position, time, and underway environmental conditions (temperature, salinity, wind, pump). Egg counts are pivoted to cufes_measurement.",
      "provider": "swfsc",
      "dataset": "cufes",
      "workflow": "https://calcofi.io/workflows/ingest_swfsc_cufes.html"
    },
    "cufes_measurement": {
      "name_long": "Cufes Measurement",
      "description_md": "Fish/squid egg counts per CUFES sample in long form (measurement_type = taxon eggs, measurement_value = count).",
      "provider": "swfsc",
      "dataset": "cufes",
      "workflow": "https://calcofi.io/workflows/ingest_swfsc_cufes.html"
    },
    "cruise": {
      "name_long": "Cruise",
      "description_md": "unique by ship and year-month",
      "provider": "swfsc",
      "dataset": "ichthyo",
      "workflow": "https://calcofi.io/workflows/ingest_swfsc_ichthyo.html"
    },
    "ichthyo": {
      "name_long": "Ichthyoplankton",
      "description_md": "Consolidated tidy table of ichthyoplankton observations from egg, egg_stage, larva, larva_stage, and larva_size source tables",
      "provider": "swfsc",
      "dataset": "ichthyo",
      "workflow": "https://calcofi.io/workflows/ingest_swfsc_ichthyo.html"
    },
    "invert": {
      "name_long": "Invert",
      "description_md": "number of invertebrates from net tow by species",
      "provider": "swfsc",
      "dataset": "ichthyo",
      "workflow": "https://calcofi.io/workflows/ingest_swfsc_ichthyo.html"
    },
    "lookup": {
      "name_long": "Lookup",
      "description_md": "Unified vocabulary lookup table for egg stages, larva stages, and tow types",
      "provider": "swfsc",
      "dataset": "ichthyo",
      "workflow": "https://calcofi.io/workflows/ingest_swfsc_ichthyo.html"
    },
    "net": {
      "name_long": "Net",
      "description_md": "individual net from given tow",
      "provider": "swfsc",
      "dataset": "ichthyo",
      "workflow": "https://calcofi.io/workflows/ingest_swfsc_ichthyo.html"
    },
    "segment": {
      "name_long": "Segment",
      "description_md": "Line segments between consecutive sites along a cruise track",
      "provider": "swfsc",
      "dataset": "ichthyo",
      "workflow": "https://calcofi.io/workflows/ingest_swfsc_ichthyo.html"
    },
    "ship": {
      "name_long": "Ship",
      "description_md": "unique ship with many cruises",
      "provider": "swfsc",
      "dataset": "ichthyo",
      "workflow": "https://calcofi.io/workflows/ingest_swfsc_ichthyo.html"
    },
    "site": {
      "name_long": "Site",
      "description_md": "unique location (longitude, latitude) and time along cruise",
      "provider": "swfsc",
      "dataset": "ichthyo",
      "workflow": "https://calcofi.io/workflows/ingest_swfsc_ichthyo.html"
    },
    "species": {
      "name_long": "Species",
      "description_md": "unique species (or taxa) found in egg or larva net tows",
      "provider": "swfsc",
      "dataset": "ichthyo",
      "workflow": "https://calcofi.io/workflows/ingest_swfsc_ichthyo.html"
    },
    "taxa_rank": {
      "name_long": "Taxa Rank",
      "description_md": "Lookup table mapping taxonomic rank names to sort order",
      "provider": "swfsc",
      "dataset": "ichthyo",
      "workflow": "https://calcofi.io/workflows/ingest_swfsc_ichthyo.html"
    },
    "taxon": {
      "name_long": "Taxon",
      "description_md": "Taxonomic hierarchy for species via WoRMS and ITIS authorities (built from spp.duckdb via recursive CTEs)",
      "provider": "swfsc",
      "dataset": "ichthyo",
      "workflow": "https://calcofi.io/workflows/ingest_swfsc_ichthyo.html"
    },
    "tow": {
      "name_long": "Tow",
      "description_md": "unique net tows",
      "provider": "swfsc",
      "dataset": "ichthyo",
      "workflow": "https://calcofi.io/workflows/ingest_swfsc_ichthyo.html"
    },
    "cruise_summary": {
      "name_long": "Cruise Summary",
      "description_md": "Per-cruise rollup with year/month/ship and counts of sites sampled across ichthyo bottle CTD and DIC. Built in release_database.qmd from cruise + ship and site/casts/ctd_cast/dic_sample. Used by the CalCOFI cruises Shiny app.",
      "provider": "calcofi",
      "dataset": "calcofi-db-release"
    },
    "_spatial": {
      "name_long": "Spatial Layers",
      "description_md": "Geometries for ancillary spatial layers (CA jurisdictions NOAA boundaries marine protected areas etc.) keyed by layer + feature_id. Sourced from metadata/spatial_layers.csv. Companion to _spatial_attr.",
      "provider": "calcofi",
      "dataset": "spatial"
    },
    "_spatial_attr": {
      "name_long": "Spatial Layer Attributes",
      "description_md": "Non-geometry attributes for features in _spatial in long form (layer feature_id attr_name attr_value). Allows attribute schemas to differ across layers without column proliferation.",
      "provider": "calcofi",
      "dataset": "spatial"
    }
  },
  "columns": {
    "bird_mammal_behavior.behavior_code": {
      "name_long": "Behavior Code",
      "units": null,
      "description_md": "Behavior code; primary key.",
      "data_type": "VARCHAR"
    },
    "bird_mammal_behavior.behavior": {
      "name_long": "Behavior",
      "units": null,
      "description_md": "Behavior name.",
      "data_type": "VARCHAR"
    },
    "bird_mammal_behavior.description": {
      "name_long": "Description",
      "units": null,
      "description_md": "Behavior description.",
      "data_type": "VARCHAR"
    },
    "bird_mammal_observation.observation_id": {
      "name_long": "Observation ID",
      "description_md": "Sequential primary key (one row per transect/species/behavior).",
      "data_type": "INTEGER"
    },
    "bird_mammal_observation.gis_key": {
      "name_long": "Gis Key",
      "units": null,
      "description_md": "Transect-segment identifier; FK to bird_mammal_transect.",
      "data_type": "VARCHAR"
    },
    "bird_mammal_observation.species_code": {
      "name_long": "Species Code",
      "units": null,
      "description_md": "Species code; FK to bird_mammal_species.",
      "data_type": "VARCHAR"
    },
    "bird_mammal_observation.behavior_code": {
      "name_long": "Behavior Code",
      "units": null,
      "description_md": "Behavior code; FK to bird_mammal_behavior.",
      "data_type": "VARCHAR"
    },
    "bird_mammal_observation.count": {
      "name_long": "Count",
      "units": "count",
      "description_md": "Number of individuals observed.",
      "data_type": "INTEGER"
    },
    "bird_mammal_species.species_code": {
      "name_long": "Species Code",
      "units": null,
      "description_md": "Species code (4-letter); primary key.",
      "data_type": "VARCHAR"
    },
    "bird_mammal_species.common_name": {
      "name_long": "Common Name",
      "units": null,
      "description_md": "Common (vernacular) name.",
      "data_type": "VARCHAR"
    },
    "bird_mammal_species.scientific_name": {
      "name_long": "Scientific Name",
      "units": null,
      "description_md": "Scientific (Latin) name.",
      "data_type": "VARCHAR"
    },
    "bird_mammal_species.itis_id": {
      "name_long": "Itis Id",
      "units": null,
      "description_md": "ITIS Taxonomic Serial Number.",
      "data_type": "INTEGER"
    },
    "bird_mammal_species.is_bird": {
      "name_long": "Is Bird",
      "units": null,
      "description_md": "TRUE if the taxon is a bird.",
      "data_type": "BOOLEAN"
    },
    "bird_mammal_species.is_mammal": {
      "name_long": "Is Mammal",
      "units": null,
      "description_md": "TRUE if the taxon is a mammal.",
      "data_type": "BOOLEAN"
    },
    "bird_mammal_species.is_fish": {
      "name_long": "Is Fish",
      "units": null,
      "description_md": "TRUE if the taxon is a fish.",
      "data_type": "BOOLEAN"
    },
    "bird_mammal_species.is_large_bird": {
      "name_long": "Is Large Bird",
      "units": null,
      "description_md": "TRUE if classified as a large bird.",
      "data_type": "BOOLEAN"
    },
    "bird_mammal_species.is_unidentified": {
      "name_long": "Is Unidentified",
      "units": null,
      "description_md": "TRUE if the record is unidentified to species.",
      "data_type": "BOOLEAN"
    },
    "bird_mammal_species.include_flag": {
      "name_long": "Include Flag",
      "units": null,
      "description_md": "Provider inclusion flag.",
      "data_type": "BOOLEAN"
    },
    "bird_mammal_species.nmfs_code": {
      "name_long": "Nmfs Code",
      "units": null,
      "description_md": "NMFS species code (if any).",
      "data_type": "VARCHAR"
    },
    "bird_mammal_species.comment": {
      "name_long": "Comment",
      "units": null,
      "description_md": "Free-text comment.",
      "data_type": "VARCHAR"
    },
    "bird_mammal_transect.gis_key": {
      "name_long": "Gis Key",
      "units": null,
      "description_md": "Transect-segment identifier; primary key. Joins observations.",
      "data_type": "VARCHAR"
    },
    "bird_mammal_transect.cruise_label": {
      "name_long": "Cruise Label",
      "units": null,
      "description_md": "Source cruise label (e.g. CAC1987_05); cruise_key derived from it.",
      "data_type": "VARCHAR"
    },
    "bird_mammal_transect.transect_number": {
      "name_long": "Transect Number",
      "units": null,
      "description_md": "Transect number within the cruise.",
      "data_type": "INTEGER"
    },
    "bird_mammal_transect.bin_number": {
      "name_long": "Bin Number",
      "units": null,
      "description_md": "Bin (segment) number within the transect.",
      "data_type": "INTEGER"
    },
    "bird_mammal_transect.date": {
      "name_long": "Date",
      "units": null,
      "description_md": "Survey date.",
      "data_type": "DATE"
    },
    "bird_mammal_transect.time_sec": {
      "name_long": "Time Sec",
      "units": "s",
      "description_md": "Time of day in seconds (local); combined with date into datetime_start_utc.",
      "data_type": "DOUBLE"
    },
    "bird_mammal_transect.latitude": {
      "name_long": "Latitude",
      "units": "decimal_degrees",
      "description_md": "Latitude of the transect-segment midpoint, WGS84.",
      "data_type": "DOUBLE"
    },
    "bird_mammal_transect.longitude": {
      "name_long": "Longitude",
      "units": "decimal_degrees",
      "description_md": "Longitude of the transect-segment midpoint, WGS84.",
      "data_type": "DOUBLE"
    },
    "bird_mammal_transect.latitude_start": {
      "name_long": "Latitude Start",
      "units": "decimal_degrees",
      "description_md": "Latitude at segment start.",
      "data_type": "DOUBLE"
    },
    "bird_mammal_transect.longitude_start": {
      "name_long": "Longitude Start",
      "units": "decimal_degrees",
      "description_md": "Longitude at segment start.",
      "data_type": "DOUBLE"
    },
    "bird_mammal_transect.latitude_stop": {
      "name_long": "Latitude Stop",
      "units": "decimal_degrees",
      "description_md": "Latitude at segment stop.",
      "data_type": "DOUBLE"
    },
    "bird_mammal_transect.longitude_stop": {
      "name_long": "Longitude Stop",
      "units": "decimal_degrees",
      "description_md": "Longitude at segment stop.",
      "data_type": "DOUBLE"
    },
    "bird_mammal_transect.length_m": {
      "name_long": "Length M",
      "units": "m",
      "description_md": "Transect-segment length.",
      "data_type": "DOUBLE"
    },
    "bird_mammal_transect.width_m": {
      "name_long": "Width M",
      "units": "m",
      "description_md": "Transect strip width.",
      "data_type": "DOUBLE"
    },
    "bird_mammal_transect.area_m2": {
      "name_long": "Area M2",
      "units": "m2",
      "description_md": "Surveyed area of the segment.",
      "data_type": "DOUBLE"
    },
    "bird_mammal_transect.bottom_depth_m": {
      "name_long": "Bottom Depth M",
      "units": "m",
      "description_md": "Seafloor depth at the segment (negative = below sea level in source).",
      "data_type": "DOUBLE"
    },
    "bird_mammal_transect.julian_date": {
      "name_long": "Julian Date",
      "units": null,
      "description_md": "Julian date.",
      "data_type": "DOUBLE"
    },
    "bird_mammal_transect.julian_day": {
      "name_long": "Julian Day",
      "units": null,
      "description_md": "Julian day of year.",
      "data_type": "INTEGER"
    },
    "bird_mammal_transect.svy": {
      "name_long": "Svy",
      "units": null,
      "description_md": "Survey/cruise-program code (CalCOFI, NMFS, CPR).",
      "data_type": "VARCHAR"
    },
    "bird_mammal_transect.season": {
      "name_long": "Season",
      "units": null,
      "description_md": "Season of the survey.",
      "data_type": "VARCHAR"
    },
    "bird_mammal_transect.datetime_start_utc": {
      "name_long": "Datetime UTC",
      "description_md": "Survey date-time, built from date + time_sec (local tz unconfirmed; see questions).",
      "data_type": "TIMESTAMP"
    },
    "bird_mammal_transect.cruise_key": {
      "name_long": "Cruise Key",
      "description_md": "CalCOFI cruise natural key, best-effort from cruise_label + date (no ship column; see questions).",
      "data_type": "VARCHAR"
    },
    "bird_mammal_transect.geom": {
      "name_long": "Geometry",
      "description_md": "Midpoint geometry in WGS84 (EPSG:4326).",
      "data_type": "GEOMETRY('OGC:CRS84')"
    },
    "bird_mammal_transect.grid_key": {
      "name_long": "Grid Key",
      "description_md": "CalCOFI grid-cell key from spatial join of the midpoint.",
      "data_type": "VARCHAR"
    },
    "bottle.cast_id": {
      "name_long": "Cast Id",
      "units": null,
      "description_md": "Cast Count - All CalCOFI casts ever conducted, consecutively numbered",
      "data_type": "INTEGER"
    },
    "bottle.bottle_id": {
      "name_long": "Bottle Id",
      "units": null,
      "description_md": "Bottle Count - All CalCOFI bottles ever sampled, consecutively numbered",
      "data_type": "INTEGER"
    },
    "bottle.site_key": {
      "name_long": "Site Key",
      "units": null,
      "description_md": "Line and Station [Line] [Station]",
      "data_type": "VARCHAR"
    },
    "bottle.depth_key": {
      "name_long": "Depth Key",
      "units": null,
      "description_md": "Uses the Cast_ID prefix but adds three additional variables: [Depth][Bottle]-[Rec_Ind]",
      "data_type": "VARCHAR"
    },
    "bottle.depth_m": {
      "name_long": "Depth M",
      "units": "meters",
      "description_md": "Bottle depth in meters",
      "data_type": "DOUBLE"
    },
    "bottle.btl_num": {
      "name_long": "Btl Num",
      "units": null,
      "description_md": "Niskin bottle sample was collected from",
      "data_type": "SMALLINT"
    },
    "bottle.rec_ind": {
      "name_long": "Rec Ind",
      "units": null,
      "description_md": "Record Indicator (quality code that applies to the whole bottle, instead of just to a specific parameter)",
      "data_type": "VARCHAR"
    },
    "bottle.depth_qual": {
      "name_long": "Depth Quality",
      "description_md": "pressure/depth quality code (renamed from p_qual)",
      "data_type": "DOUBLE"
    },
    "bottle.inc_tim": {
      "name_long": "Inc Tim",
      "units": null,
      "description_md": "Elapsed incubation time of the primary productivity experiment",
      "data_type": "VARCHAR"
    },
    "bottle._source_file": {
      "name_long": " Source File",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "bottle._source_row": {
      "name_long": " Source Row",
      "units": null,
      "description_md": "",
      "data_type": "INTEGER"
    },
    "bottle._ingested_at": {
      "name_long": " Ingested At",
      "units": null,
      "description_md": "",
      "data_type": "TIMESTAMP"
    },
    "bottle._source_uuid": {
      "name_long": " Source Uuid",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "bottle_measurement.bottle_measurement_id": {
      "name_long": "Bottle Measurement ID",
      "description_md": "PK: auto-increment integer assigned via ROW_NUMBER(ORDER BY bottle_id, measurement_type)",
      "data_type": "BIGINT"
    },
    "bottle_measurement.bottle_id": {
      "name_long": "Bottle ID",
      "description_md": "FK to bottle.bottle_id",
      "data_type": "DOUBLE"
    },
    "bottle_measurement.measurement_type": {
      "name_long": "Measurement Type",
      "description_md": "measurement type key (FK to measurement_type.measurement_type)",
      "data_type": "VARCHAR"
    },
    "bottle_measurement.measurement_value": {
      "name_long": "Measurement Value",
      "description_md": "numeric measurement value",
      "data_type": "DOUBLE"
    },
    "bottle_measurement.measurement_prec": {
      "name_long": "Measurement Precision",
      "description_md": "replicate precision (nullable)",
      "data_type": "DOUBLE"
    },
    "bottle_measurement.measurement_qual": {
      "name_long": "Measurement Quality",
      "description_md": "quality code (nullable)",
      "data_type": "VARCHAR"
    },
    "cast_condition.cast_condition_id": {
      "name_long": "Cast Condition ID",
      "description_md": "PK: auto-increment integer assigned via ROW_NUMBER(ORDER BY cast_id, condition_type)",
      "data_type": "BIGINT"
    },
    "cast_condition.cast_id": {
      "name_long": "Cast ID",
      "description_md": "FK to casts.cast_id",
      "data_type": "DOUBLE"
    },
    "cast_condition.condition_type": {
      "name_long": "Condition Type",
      "description_md": "condition type key (FK to measurement_type.measurement_type)",
      "data_type": "VARCHAR"
    },
    "cast_condition.condition_value": {
      "name_long": "Condition Value",
      "description_md": "numeric condition value",
      "data_type": "DOUBLE"
    },
    "casts.cast_id": {
      "name_long": "Cast Id",
      "units": null,
      "description_md": "Cast Count - All CalCOFI casts ever conducted, consecutively numbered",
      "data_type": "INTEGER"
    },
    "casts.cruise_key_0": {
      "name_long": "Cruise Key 0",
      "units": null,
      "description_md": "Cruise identifier [Year]-[Month]-[Day]-C-[Ship Code]"
    },
    "casts.cast_key": {
      "name_long": "Cast Key",
      "units": null,
      "description_md": "Cast Identifier [Century] - [YY][MM][ShipCode] - [CastType][Julian Day] - [CastTime]-[Line][Sta]",
      "data_type": "VARCHAR"
    },
    "casts.site_key": {
      "name_long": "Site Key",
      "units": null,
      "description_md": "Line and Station",
      "data_type": "VARCHAR"
    },
    "casts.sta_code": {
      "name_long": "Sta Code",
      "units": null,
      "description_md": "Station Designation (See Station_ID and 0-St_Code for codes)",
      "data_type": "VARCHAR"
    },
    "casts.distance": {
      "name_long": "Distance",
      "units": "nautical miles",
      "description_md": "Nautical miles from coast intercept, calculated from estimated latitude and longitude",
      "data_type": "DOUBLE"
    },
    "casts.latitude": {
      "name_long": "Latitude",
      "units": "decimal_degrees",
      "description_md": "Observed Latitude in decimal degrees (WGS84)",
      "data_type": "DOUBLE"
    },
    "casts.longitude": {
      "name_long": "Longitude",
      "units": "decimal_degrees",
      "description_md": "Observed Longitude in decimal degrees (WGS84)",
      "data_type": "DOUBLE"
    },
    "casts.rpt_line": {
      "name_long": "Rpt Line",
      "units": null,
      "description_md": "Reported Line Number",
      "data_type": "DOUBLE"
    },
    "casts.st_line": {
      "name_long": "St Line",
      "units": null,
      "description_md": "Nearest Standard Line",
      "data_type": "DOUBLE"
    },
    "casts.ac_line": {
      "name_long": "Ac Line",
      "units": null,
      "description_md": "Calculated actual line from observed latitude and longitude",
      "data_type": "DOUBLE"
    },
    "casts.rpt_sta": {
      "name_long": "Rpt Sta",
      "units": null,
      "description_md": "Reported Station Number",
      "data_type": "DOUBLE"
    },
    "casts.st_station": {
      "name_long": "St Station",
      "units": null,
      "description_md": "Nearest Standard Station Number",
      "data_type": "DOUBLE"
    },
    "casts.ac_sta": {
      "name_long": "Ac Sta",
      "units": null,
      "description_md": "Calculated actual station from observed lat and long",
      "data_type": "DOUBLE"
    },
    "casts.bottom_depth_m": {
      "name_long": "Bottom Depth M",
      "units": "meters",
      "description_md": "Bottom depth in meters",
      "data_type": "DOUBLE"
    },
    "casts.ship_name": {
      "name_long": "Ship Name",
      "units": null,
      "description_md": "Ship's Name",
      "data_type": "VARCHAR"
    },
    "casts.ship_code": {
      "name_long": "Ship Code",
      "units": null,
      "description_md": "Ship's NODC Code",
      "data_type": "VARCHAR"
    },
    "casts.data_type": {
      "name_long": "Data Type",
      "units": null,
      "description_md": "Data Type",
      "data_type": "VARCHAR"
    },
    "casts.order_occ": {
      "name_long": "Order Occ",
      "units": null,
      "description_md": "Order station was occupied (within each cruise)",
      "data_type": "SMALLINT"
    },
    "casts.event_num": {
      "name_long": "Event Num",
      "units": null,
      "description_md": "Event number; includes all research operations within each cruise (e.g. nets, CTD)",
      "data_type": "SMALLINT"
    },
    "casts.cruz_leg": {
      "name_long": "Cruz Leg",
      "units": null,
      "description_md": "Leg of cruise, if multiple legs",
      "data_type": "VARCHAR"
    },
    "casts.orig_sta_id": {
      "name_long": "Orig Sta Id",
      "units": null,
      "description_md": "IEH Reported Station ID",
      "data_type": "VARCHAR"
    },
    "casts.data_or": {
      "name_long": "Data Or",
      "units": null,
      "description_md": "Data Origin",
      "data_type": "VARCHAR"
    },
    "casts.int_chl": {
      "name_long": "Int Chl",
      "units": "milligrams chl per square meter per half light day",
      "description_md": "Integrated Chlorophyll per half light day",
      "data_type": "DOUBLE"
    },
    "casts.int_c14": {
      "name_long": "Int C14",
      "units": "milligrams C per square meter per half light day",
      "description_md": "Integrated Primary Productivity per half light day",
      "data_type": "DOUBLE"
    },
    "casts.inc_str": {
      "name_long": "Inc Str",
      "units": null,
      "description_md": "Incubation Start Time (PST)",
      "data_type": "VARCHAR"
    },
    "casts.inc_end": {
      "name_long": "Inc End",
      "units": null,
      "description_md": "Incubation End Time (PST)",
      "data_type": "VARCHAR"
    },
    "casts.pst_lan": {
      "name_long": "Pst Lan",
      "units": null,
      "description_md": "Time of Local Apparent Noon (PST)",
      "data_type": "VARCHAR"
    },
    "casts.civil_t": {
      "name_long": "Civil T",
      "units": null,
      "description_md": "Time of Civil Twilight (PST)",
      "data_type": "VARCHAR"
    },
    "casts._source_file": {
      "name_long": " Source File",
      "units": null,
      "description_md": ""
    },
    "casts._source_row": {
      "name_long": " Source Row",
      "units": null,
      "description_md": ""
    },
    "casts._ingested_at": {
      "name_long": " Ingested At",
      "units": null,
      "description_md": ""
    },
    "casts._source_uuid": {
      "name_long": " Source Uuid",
      "units": null,
      "description_md": ""
    },
    "casts.datetime_start_utc": {
      "name_long": "Datetime Start Utc",
      "units": null,
      "description_md": "",
      "data_type": "TIMESTAMP"
    },
    "casts.geom": {
      "name_long": "Geometry",
      "description_md": "point geometry (WGS84) from lat_dec and lon_dec",
      "data_type": "GEOMETRY"
    },
    "casts.grid_key": {
      "name_long": "Grid Key",
      "description_md": "CalCOFI grid cell identifier from spatial join",
      "data_type": "VARCHAR"
    },
    "dataset.provider": {
      "name_long": "Provider",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "dataset.dataset": {
      "name_long": "Dataset",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "dataset.dataset_name": {
      "name_long": "Dataset Name",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "dataset.description": {
      "name_long": "Description",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "dataset.citation_main": {
      "name_long": "Citation Main",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "dataset.citation_others": {
      "name_long": "Citation Others",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "dataset.link_calcofi_org": {
      "name_long": "Link Calcofi Org",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "dataset.link_data_source": {
      "name_long": "Link Data Source",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "dataset.link_others": {
      "name_long": "Link Others",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "dataset.tables": {
      "name_long": "Tables",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "dataset.coverage_temporal": {
      "name_long": "Coverage Temporal",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "dataset.coverage_spatial": {
      "name_long": "Coverage Spatial",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "dataset.license": {
      "name_long": "License",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "dataset.pi_names": {
      "name_long": "Pi Names",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "grid.grid_key": {
      "name_long": "Grid Key",
      "description_md": "Natural primary key (e.g. st60-ln80 or st60-ln80_hist for historical)",
      "data_type": "VARCHAR"
    },
    "grid.station": {
      "name_long": "Station",
      "description_md": "Offshore component of CalCOFI coordinate system",
      "data_type": "DOUBLE"
    },
    "grid.line": {
      "name_long": "Line",
      "description_md": "Alongshore component of CalCOFI coordinate system",
      "data_type": "DOUBLE"
    },
    "grid.shore": {
      "name_long": "Shore",
      "description_md": "Shore classification (nearshore, offshore, etc.)",
      "data_type": "VARCHAR"
    },
    "grid.pattern": {
      "name_long": "Pattern",
      "description_md": "Station pattern: 'standard' or 'historical'",
      "data_type": "VARCHAR"
    },
    "grid.spacing": {
      "name_long": "Spacing",
      "description_md": "Station spacing in nautical miles",
      "data_type": "INTEGER"
    },
    "grid.zone": {
      "name_long": "Zone",
      "description_md": "Combined shore-pattern zone label",
      "data_type": "VARCHAR"
    },
    "grid.area_km2": {
      "name_long": "Area",
      "units": "km^2",
      "description_md": "Grid cell area",
      "data_type": "DOUBLE"
    },
    "grid.geom": {
      "name_long": "Geometry",
      "description_md": "Polygon geometry (WGS84 EPSG:4326) of grid cell",
      "data_type": "GEOMETRY"
    },
    "grid.geom_ctr": {
      "name_long": "Geometry Center",
      "description_md": "Point geometry (WGS84 EPSG:4326) of grid cell centroid",
      "data_type": "GEOMETRY"
    },
    "measurement_type.measurement_type": {
      "name_long": "Measurement Type",
      "description_md": "PK: measurement type code",
      "data_type": "VARCHAR"
    },
    "measurement_type.description": {
      "name_long": "Description",
      "description_md": "human-readable description",
      "data_type": "VARCHAR"
    },
    "measurement_type.units": {
      "name_long": "Units",
      "description_md": "measurement units",
      "data_type": "VARCHAR"
    },
    "measurement_type.is_canonical": {
      "name_long": "Is Canonical",
      "description_md": "TRUE for canonical measurement types kept in ctd_thin and ctd_summary",
      "data_type": "BOOLEAN"
    },
    "measurement_type._source_column": {
      "name_long": "Source Column",
      "description_md": "original column name in wide-format CTD CSV",
      "data_type": "VARCHAR"
    },
    "measurement_type._source_table": {
      "name_long": "Source Table",
      "description_md": "provenance: wide-format DuckDB table the measurement was pivoted from",
      "data_type": "VARCHAR"
    },
    "measurement_type._source_datasets": {
      "name_long": "Source Datasets",
      "description_md": "provenance: semicolon-delimited list of datasets that produce this measurement type",
      "data_type": "VARCHAR"
    },
    "measurement_type._qual_column": {
      "name_long": "Quality Column",
      "description_md": "provenance: quality flag column name in source wide-format table (blank if none)",
      "data_type": "VARCHAR"
    },
    "measurement_type._prec_column": {
      "name_long": "Precision Column",
      "description_md": "provenance: precision column name in source wide-format table (blank if none)",
      "data_type": "VARCHAR"
    },
    "measurement_type.provider": {
      "name_long": "Provider",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "measurement_type.dataset": {
      "name_long": "Dataset",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "ctd_cast.ctd_cast_uuid": {
      "name_long": "CTD Cast UUID",
      "description_md": "PK: deterministic UUID v5 from (cruise_key, cast_key, cast_dir, datetime_start_utc)",
      "data_type": "VARCHAR"
    },
    "ctd_cast.data_stage": {
      "name_long": "Data Stage",
      "description_md": "data processing stage: final or preliminary",
      "data_type": "VARCHAR"
    },
    "ctd_cast.cast_dir": {
      "name_long": "Cast Direction",
      "description_md": "cast direction: D=downcast (start time and start lat/lon) or U=upcast (time and lat/lon at first bottle tripped)",
      "data_type": "VARCHAR"
    },
    "ctd_cast.ord_occ": {
      "name_long": "Order Occupied",
      "description_md": "order in which the station was occupied during the cruise (CalCOFI Ord_Occ)",
      "data_type": "VARCHAR"
    },
    "ctd_cast.event_num": {
      "name_long": "Event Number",
      "description_md": "CTD-at-Depth event number from source CSV",
      "data_type": "DOUBLE"
    },
    "ctd_cast.cast_key": {
      "name_long": "Cast Key",
      "description_md": "cast identifier from source CSV (Cast_ID); composed of Study + Ord_Occ + up/downcast code",
      "data_type": "VARCHAR"
    },
    "ctd_cast.datetime_start_utc": {
      "name_long": "Datetime UTC",
      "description_md": "UTC timestamp parsed from date_time_utc string",
      "data_type": "TIMESTAMP"
    },
    "ctd_cast.latitude": {
      "name_long": "Latitude",
      "units": "decimal degrees",
      "description_md": "GPS decimal latitude; downcast = start latitude, upcast = latitude at first bottle tripped (CalCOFI Lat_Dec)",
      "data_type": "DOUBLE"
    },
    "ctd_cast.longitude": {
      "name_long": "Longitude",
      "units": "decimal degrees",
      "description_md": "GPS decimal longitude; downcast = start longitude, upcast = longitude at first bottle tripped (CalCOFI Lon_Dec)",
      "data_type": "DOUBLE"
    },
    "ctd_cast.site_key": {
      "name_long": "Site Key",
      "description_md": "CalCOFI Line and Station composite key in the form \"LLL.L SSS.S\" (renamed from Sta_ID)",
      "data_type": "VARCHAR"
    },
    "ctd_cast.line": {
      "name_long": "Line",
      "description_md": "CalCOFI Line in LLL.L format (e.g. 80.0)",
      "data_type": "VARCHAR"
    },
    "ctd_cast.sta": {
      "name_long": "Station",
      "description_md": "CalCOFI Station in SSS.S format (e.g. 60.0)",
      "data_type": "VARCHAR"
    },
    "ctd_cast.ship_key": {
      "name_long": "Ship Key",
      "description_md": "2-char ship code derived from RIGHT(cruise_key, 2)",
      "data_type": "VARCHAR"
    },
    "ctd_cast.cruise_key": {
      "name_long": "Cruise Key",
      "description_md": "cruise identifier in YYMMKK format; last 2 chars encode ship",
      "data_type": "VARCHAR"
    },
    "ctd_cast.geom": {
      "name_long": "Geometry",
      "description_md": "point geometry (WGS84) from latitude and longitude",
      "data_type": "GEOMETRY"
    },
    "ctd_cast.grid_key": {
      "name_long": "Grid Key",
      "description_md": "CalCOFI grid cell identifier from spatial join",
      "data_type": "VARCHAR"
    },
    "ctd_measurement.ctd_measurement_uuid": {
      "name_long": "CTD Measurement UUID",
      "description_md": "PK: deterministic UUID v5 from (ctd_cast_uuid, depth_m, measurement_type)"
    },
    "ctd_measurement.ctd_cast_uuid": {
      "name_long": "CTD Cast UUID",
      "description_md": "FK to ctd_cast.ctd_cast_uuid"
    },
    "ctd_measurement.depth_m": {
      "name_long": "Depth",
      "units": "m",
      "description_md": "depth in meters"
    },
    "ctd_measurement.measurement_type": {
      "name_long": "Measurement Type",
      "description_md": "measurement type key (FK to measurement_type.measurement_type)"
    },
    "ctd_measurement.measurement_value": {
      "name_long": "Measurement Value",
      "description_md": "numeric measurement value"
    },
    "ctd_measurement.measurement_qual": {
      "name_long": "Measurement Quality",
      "description_md": "quality code (nullable)"
    },
    "ctd_measurement.cruise_key": {
      "name_long": "Cruise Key",
      "description_md": "cruise identifier in YYYY-MM-NODC format; hive partition key"
    },
    "ctd_summary.ctd_summary_uuid": {
      "name_long": "CTD Summary UUID",
      "description_md": "PK: deterministic UUID v5 from (cruise_key, site_key, depth_m, measurement_type)",
      "data_type": "VARCHAR"
    },
    "ctd_summary.cruise_key": {
      "name_long": "Cruise Key",
      "description_md": "cruise identifier in YYMMKK format",
      "data_type": "VARCHAR"
    },
    "ctd_summary.site_key": {
      "name_long": "Station Key",
      "description_md": "line and station identifier",
      "data_type": "VARCHAR"
    },
    "ctd_summary.depth_m": {
      "name_long": "Depth",
      "units": "m",
      "description_md": "depth in meters",
      "data_type": "DOUBLE"
    },
    "ctd_summary.measurement_type": {
      "name_long": "Measurement Type",
      "description_md": "measurement type key",
      "data_type": "VARCHAR"
    },
    "ctd_summary.avg": {
      "name_long": "Average",
      "description_md": "mean measurement value across cast directions",
      "data_type": "DOUBLE"
    },
    "ctd_summary.stddev": {
      "name_long": "Standard Deviation",
      "description_md": "standard deviation (0 when n_obs=1)",
      "data_type": "DOUBLE"
    },
    "ctd_summary.n_obs": {
      "name_long": "Observation Count",
      "description_md": "number of observations aggregated",
      "data_type": "BIGINT"
    },
    "ctd_thin.ctd_thin_uuid": {
      "name_long": "CTD Thin UUID",
      "description_md": "PK: deterministic UUID v5 from (ctd_cast_uuid, depth_m, measurement_type)",
      "data_type": "VARCHAR"
    },
    "ctd_thin.ctd_cast_uuid": {
      "name_long": "CTD Cast UUID",
      "description_md": "FK to ctd_cast.ctd_cast_uuid",
      "data_type": "VARCHAR"
    },
    "ctd_thin.depth_m": {
      "name_long": "Depth",
      "units": "m",
      "description_md": "depth in meters (retained depths only)",
      "data_type": "DOUBLE"
    },
    "ctd_thin.measurement_type": {
      "name_long": "Measurement Type",
      "description_md": "measurement type key; canonical types only (FK to measurement_type.measurement_type where is_canonical)",
      "data_type": "VARCHAR"
    },
    "ctd_thin.measurement_value": {
      "name_long": "Measurement Value",
      "description_md": "numeric measurement value (exact copy from ctd_measurement; thinning selects rows, never interpolates)",
      "data_type": "DOUBLE"
    },
    "ctd_thin.measurement_qual": {
      "name_long": "Measurement Quality",
      "description_md": "quality code (nullable)",
      "data_type": "VARCHAR"
    },
    "ctd_thin.cast_dir": {
      "name_long": "Cast Direction",
      "description_md": "single retained direction per physical cast: D (downcast, preferred) or U (upcast, fallback)",
      "data_type": "VARCHAR"
    },
    "ctd_thin.retained_reason": {
      "name_long": "Retained Reason",
      "description_md": "why this depth was kept: grid (on the ~10 m grid) or inflection (RDP-retained between grid nodes)",
      "data_type": "VARCHAR"
    },
    "ctd_thin.cruise_key": {
      "name_long": "Cruise Key",
      "description_md": "cruise identifier; hive partition key",
      "data_type": "VARCHAR"
    },
    "ctd_wide.data_stage": {
      "name_long": "Data Stage",
      "description_md": "data processing stage: final or preliminary"
    },
    "ctd_wide.cast_dir": {
      "name_long": "Cast Direction",
      "description_md": "cast direction: D=downcast (start time, start lat/lon) or U=upcast (time, lat/lon at first bottle tripped)"
    },
    "ctd_wide.cast_key": {
      "name_long": "Cast Key",
      "description_md": "cast identifier (CalCOFI Cast_ID = Study+Ord_Occ+up/downcast code)"
    },
    "ctd_wide.datetime_start_utc": {
      "name_long": "Datetime UTC",
      "description_md": "date/time UTC; downcast=start time, upcast=time at first bottle tripped"
    },
    "ctd_wide.latitude": {
      "name_long": "Latitude",
      "units": "decimal degrees",
      "description_md": "GPS decimal latitude; downcast=start lat, upcast=lat at first bottle tripped"
    },
    "ctd_wide.longitude": {
      "name_long": "Longitude",
      "units": "decimal degrees",
      "description_md": "GPS decimal longitude; downcast=start lon, upcast=lon at first bottle tripped"
    },
    "ctd_wide.site_key": {
      "name_long": "Site Key",
      "description_md": "CalCOFI Line and Station composite key \"LLL.L SSS.S\" (renamed from Sta_ID)"
    },
    "ctd_wide.depth_m": {
      "name_long": "Depth",
      "units": "m",
      "description_md": "1 m bin-averaged depth"
    },
    "ctd_wide.pressure": {
      "name_long": "Pressure",
      "units": "dbar",
      "description_md": "1 m bin-averaged pressure"
    },
    "ctd_wide.pr_q": {
      "name_long": "Pressure Quality",
      "description_md": "pressure sensor data quality code (PrQ): 0/blank=good, 8=questionable, 9=bad"
    },
    "ctd_wide.temp1": {
      "name_long": "Temperature 1°",
      "units": "degC",
      "description_md": "primary CTD temperature sensor (Temp1)"
    },
    "ctd_wide.temp1q": {
      "name_long": "Temperature 1° Quality",
      "description_md": "primary temperature data quality code (T1Q)"
    },
    "ctd_wide.temp2": {
      "name_long": "Temperature 2°",
      "units": "degC",
      "description_md": "secondary CTD temperature sensor (Temp2)"
    },
    "ctd_wide.temp2q": {
      "name_long": "Temperature 2° Quality",
      "description_md": "secondary temperature data quality code (T2Q)"
    },
    "ctd_wide.temp_ave": {
      "name_long": "Temperature Average",
      "units": "degC",
      "description_md": "average temperature (Temp1+Temp2)/2"
    },
    "ctd_wide.salt1": {
      "name_long": "Salinity 1°",
      "units": "PSU",
      "description_md": "primary CTD salinity (PSS-78)"
    },
    "ctd_wide.salt1q": {
      "name_long": "Salinity 1° Quality",
      "description_md": "primary salinity data quality code"
    },
    "ctd_wide.salt1_corr": {
      "name_long": "Salinity 1° Bottle-corrected",
      "units": "PSU",
      "description_md": "primary salinity corrected against deep (>350 m) bottle salinities"
    },
    "ctd_wide.salt2": {
      "name_long": "Salinity 2°",
      "units": "PSU",
      "description_md": "secondary CTD salinity (PSS-78)"
    },
    "ctd_wide.salt2q": {
      "name_long": "Salinity 2° Quality",
      "description_md": "secondary salinity data quality code"
    },
    "ctd_wide.salt2_corr": {
      "name_long": "Salinity 2° Bottle-corrected",
      "units": "PSU",
      "description_md": "secondary salinity corrected against deep bottle salinities"
    },
    "ctd_wide.salt_ave_corr": {
      "name_long": "Salinity Average Corrected",
      "units": "PSU",
      "description_md": "average corrected salinity (Salt1_Corr+Salt2_Corr)/2"
    },
    "ctd_wide.ox1": {
      "name_long": "Oxygen 1°",
      "units": "mL/L",
      "description_md": "primary CTD oxygen sensor"
    },
    "ctd_wide.ox1q": {
      "name_long": "Oxygen 1° Quality",
      "description_md": "primary oxygen data quality code"
    },
    "ctd_wide.ox1_cruise_corr": {
      "name_long": "Oxygen 1° Cruise-corrected",
      "units": "mL/L",
      "description_md": "primary oxygen corrected using cruise-average regression vs bottle samples"
    },
    "ctd_wide.ox1_sta_corr": {
      "name_long": "Oxygen 1° Station-corrected",
      "units": "mL/L",
      "description_md": "primary oxygen corrected using station-average regression vs bottle samples"
    },
    "ctd_wide.ox2": {
      "name_long": "Oxygen 2°",
      "units": "mL/L",
      "description_md": "secondary CTD oxygen sensor"
    },
    "ctd_wide.ox2q": {
      "name_long": "Oxygen 2° Quality",
      "description_md": "secondary oxygen data quality code"
    },
    "ctd_wide.ox2_cruise_corr": {
      "name_long": "Oxygen 2° Cruise-corrected",
      "units": "mL/L",
      "description_md": "secondary oxygen corrected using cruise-average regression"
    },
    "ctd_wide.ox2_sta_corr": {
      "name_long": "Oxygen 2° Station-corrected",
      "units": "mL/L",
      "description_md": "secondary oxygen corrected using station-average regression"
    },
    "ctd_wide.ox_ave_sta_corr": {
      "name_long": "Oxygen Average Station-corrected",
      "units": "mL/L",
      "description_md": "average station-corrected oxygen (Ox1_StaCorr+Ox2_StaCorr)/2"
    },
    "ctd_wide.ox1u_m": {
      "name_long": "Oxygen 1°",
      "units": "umol/kg",
      "description_md": "primary CTD oxygen in micromoles per kilogram"
    },
    "ctd_wide.ox1u_m_cruise_corr": {
      "name_long": "Oxygen 1° Cruise-corrected",
      "units": "umol/kg",
      "description_md": "primary oxygen cruise-corrected in umol/kg"
    },
    "ctd_wide.ox1u_m_sta_corr": {
      "name_long": "Oxygen 1° Station-corrected",
      "units": "umol/kg",
      "description_md": "primary oxygen station-corrected in umol/kg"
    },
    "ctd_wide.ox2u_m": {
      "name_long": "Oxygen 2°",
      "units": "umol/kg",
      "description_md": "secondary CTD oxygen in umol/kg"
    },
    "ctd_wide.ox2u_m_cruise_corr": {
      "name_long": "Oxygen 2° Cruise-corrected",
      "units": "umol/kg",
      "description_md": "secondary oxygen cruise-corrected in umol/kg"
    },
    "ctd_wide.ox2u_m_sta_corr": {
      "name_long": "Oxygen 2° Station-corrected",
      "units": "umol/kg",
      "description_md": "secondary oxygen station-corrected in umol/kg"
    },
    "ctd_wide.ox_aveu_m_sta_corr": {
      "name_long": "Oxygen Average Station-corrected",
      "units": "umol/kg",
      "description_md": "average station-corrected oxygen in umol/kg"
    },
    "ctd_wide.fluor_v": {
      "name_long": "Fluorometer Voltage",
      "units": "V",
      "description_md": "fluorometer voltage"
    },
    "ctd_wide.fluor_q": {
      "name_long": "Fluorometer Quality",
      "description_md": "fluorometer data quality code (FlQ)"
    },
    "ctd_wide.est_chl_cruise_corr": {
      "name_long": "Estimated Chlorophyll Cruise-corrected",
      "units": "mg/m^3",
      "description_md": "estimated chlorophyll from cruise-corrected fluorometer regression (0-200 m)"
    },
    "ctd_wide.est_chl_sta_corr": {
      "name_long": "Estimated Chlorophyll Station-corrected",
      "units": "mg/m^3",
      "description_md": "estimated chlorophyll from station-corrected fluorometer regression (0-200 m)"
    },
    "ctd_wide.isusv": {
      "name_long": "ISUS Voltage",
      "units": "V",
      "description_md": "ISUS nitrate sensor voltage"
    },
    "ctd_wide.isusq": {
      "name_long": "ISUS Quality",
      "description_md": "ISUS data quality code (IsQ)"
    },
    "ctd_wide.est_no3_cruise_corr": {
      "name_long": "Estimated Nitrate Cruise-corrected",
      "units": "uM",
      "description_md": "estimated nitrate from cruise-corrected ISUS regression vs bottle samples"
    },
    "ctd_wide.est_no3_sta_corr": {
      "name_long": "Estimated Nitrate Station-corrected",
      "units": "uM",
      "description_md": "estimated nitrate from station-corrected ISUS regression (~20 bottle samples per cast)"
    },
    "ctd_wide.sig_theta_ts1": {
      "name_long": "Sigma-theta T1S1",
      "units": "kg/m^3",
      "description_md": "potential density anomaly computed from Temp1 and Salt1"
    },
    "ctd_wide.sig_theta_ts1q": {
      "name_long": "Sigma-theta T1S1 Quality",
      "description_md": "sigma-theta T1S1 quality code"
    },
    "ctd_wide.sig_theta_ts2": {
      "name_long": "Sigma-theta T2S2",
      "units": "kg/m^3",
      "description_md": "potential density anomaly computed from Temp2 and Salt2"
    },
    "ctd_wide.sig_theta_ts2q": {
      "name_long": "Sigma-theta T2S2 Quality",
      "description_md": "sigma-theta T2S2 quality code"
    },
    "ctd_wide.bat": {
      "name_long": "Beam Attenuation",
      "units": "1/m",
      "description_md": "beam attenuation coefficient from transmissometer"
    },
    "ctd_wide.x_miss": {
      "name_long": "Light Transmission",
      "units": "%",
      "description_md": "percent light transmission from transmissometer"
    },
    "ctd_wide.trans_q": {
      "name_long": "Transmissometer Quality",
      "description_md": "transmissometer data quality code"
    },
    "ctd_wide.p_h": {
      "name_long": "pH",
      "description_md": "pH from CTD pH sensor"
    },
    "ctd_wide.p_hq": {
      "name_long": "pH Quality",
      "description_md": "pH sensor data quality code"
    },
    "ctd_wide.spar": {
      "name_long": "Surface PAR",
      "units": "uE/m^2/s",
      "description_md": "surface photosynthetically active radiation"
    },
    "ctd_wide.sparq": {
      "name_long": "Surface PAR Quality",
      "description_md": "surface PAR data quality code"
    },
    "ctd_wide.par": {
      "name_long": "Remote PAR",
      "units": "uE/m^2/s",
      "description_md": "in-water (remote) photosynthetically active radiation"
    },
    "ctd_wide.parq": {
      "name_long": "Remote PAR Quality",
      "description_md": "remote PAR data quality code"
    },
    "ctd_wide.po_t1": {
      "name_long": "Potential Temperature 1°",
      "units": "degC",
      "description_md": "potential temperature from Temp1"
    },
    "ctd_wide.po_t2": {
      "name_long": "Potential Temperature 2°",
      "units": "degC",
      "description_md": "potential temperature from Temp2"
    },
    "ctd_wide.dyn_ht": {
      "name_long": "Dynamic Height",
      "units": "dynamic meters",
      "description_md": "dynamic height anomaly"
    },
    "ctd_wide.sva": {
      "name_long": "Specific Volume Anomaly",
      "units": "1e-8 m^3/kg",
      "description_md": "specific volume anomaly"
    },
    "ctd_wide.ox_sat1": {
      "name_long": "Oxygen Saturation 1°",
      "units": "%",
      "description_md": "oxygen saturation computed from primary sensor"
    },
    "ctd_wide.ox_sat2": {
      "name_long": "Oxygen Saturation 2°",
      "units": "%",
      "description_md": "oxygen saturation computed from secondary sensor"
    },
    "ctd_wide.btl_depth": {
      "name_long": "Bottle Depth",
      "units": "m",
      "description_md": "depth at which Niskin bottle was tripped"
    },
    "ctd_wide.btl_temp": {
      "name_long": "Bottle Temperature",
      "units": "degC",
      "description_md": "bottle-measured temperature (usually Temp1)"
    },
    "ctd_wide.salt_b": {
      "name_long": "Bottle Salinity",
      "units": "PSU",
      "description_md": "bottle-measured salinity"
    },
    "ctd_wide.ox_b": {
      "name_long": "Bottle Oxygen",
      "units": "mL/L",
      "description_md": "bottle-measured dissolved oxygen"
    },
    "ctd_wide.ox_bu_m": {
      "name_long": "Bottle Oxygen",
      "units": "umol/kg",
      "description_md": "bottle-measured dissolved oxygen in umol/kg"
    },
    "ctd_wide.chl_a": {
      "name_long": "Bottle Chlorophyll",
      "units": "mg/m^3",
      "description_md": "bottle-measured chlorophyll-a"
    },
    "ctd_wide.phaeo": {
      "name_long": "Bottle Phaeopigments",
      "units": "mg/m^3",
      "description_md": "bottle-measured phaeopigments"
    },
    "ctd_wide.no3": {
      "name_long": "Bottle Nitrate",
      "units": "uM",
      "description_md": "bottle-measured nitrate"
    },
    "ctd_wide.no2": {
      "name_long": "Bottle Nitrite",
      "units": "uM",
      "description_md": "bottle-measured nitrite"
    },
    "ctd_wide.nh4": {
      "name_long": "Bottle Ammonium",
      "units": "uM",
      "description_md": "bottle-measured ammonium"
    },
    "ctd_wide.po4": {
      "name_long": "Bottle Phosphate",
      "units": "uM",
      "description_md": "bottle-measured phosphate"
    },
    "ctd_wide.sil": {
      "name_long": "Bottle Silicate",
      "units": "uM",
      "description_md": "bottle-measured silicate"
    },
    "ctd_wide.ship_key": {
      "name_long": "Ship Key",
      "description_md": "2-char NODC ship code derived from cruise_key"
    },
    "ctd_wide.cruise_key": {
      "name_long": "Cruise Key",
      "description_md": "cruise identifier YYYY-MM-NODC"
    },
    "dic_measurement.dic_measurement_id": {
      "name_long": "Dic Measurement Id",
      "units": null,
      "description_md": "",
      "data_type": "BIGINT"
    },
    "dic_measurement.expocode": {
      "name_long": "Expocode",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "dic_measurement.site_key": {
      "name_long": "Site Key",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "dic_measurement.datetime_start_utc": {
      "name_long": "Datetime Start Utc",
      "units": null,
      "description_md": "",
      "data_type": "TIMESTAMP"
    },
    "dic_measurement.depth_m": {
      "name_long": "Depth M",
      "units": null,
      "description_md": "",
      "data_type": "DOUBLE"
    },
    "dic_measurement.latitude": {
      "name_long": "Latitude",
      "units": null,
      "description_md": "",
      "data_type": "DOUBLE"
    },
    "dic_measurement.longitude": {
      "name_long": "Longitude",
      "units": null,
      "description_md": "",
      "data_type": "DOUBLE"
    },
    "dic_measurement.cast_id": {
      "name_long": "Cast Id",
      "units": null,
      "description_md": "",
      "data_type": "INTEGER"
    },
    "dic_measurement.bottle_id": {
      "name_long": "Bottle Id",
      "units": null,
      "description_md": "",
      "data_type": "INTEGER"
    },
    "dic_measurement.measurement_type": {
      "name_long": "Measurement Type",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "dic_measurement.measurement_value": {
      "name_long": "Measurement Value",
      "units": null,
      "description_md": "",
      "data_type": "DOUBLE"
    },
    "dic_measurement.measurement_qual": {
      "name_long": "Measurement Qual",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "dic_sample.expocode": {
      "name_long": "Expocode",
      "units": null,
      "description_md": "WOCE expedition code (ship+date)",
      "data_type": "VARCHAR"
    },
    "dic_sample.ship_name": {
      "name_long": "Ship Name",
      "units": null,
      "description_md": "Ship name",
      "data_type": "VARCHAR"
    },
    "dic_sample.datetime_start_utc": {
      "name_long": "Datetime Start Utc",
      "units": null,
      "description_md": "",
      "data_type": "TIMESTAMP"
    },
    "dic_sample.site_key": {
      "name_long": "Site Key",
      "units": null,
      "description_md": "CalCOFI station key (line station, e.g. 090.0 062.0)",
      "data_type": "VARCHAR"
    },
    "dic_sample.latitude": {
      "name_long": "Latitude",
      "units": "decimal degrees",
      "description_md": "Latitude of station",
      "data_type": "DOUBLE"
    },
    "dic_sample.longitude": {
      "name_long": "Longitude",
      "units": "decimal degrees",
      "description_md": "Longitude of station",
      "data_type": "DOUBLE"
    },
    "dic_sample.depth_m": {
      "name_long": "Depth M",
      "units": "m",
      "description_md": "Sampling depth",
      "data_type": "DOUBLE"
    },
    "dic_sample.cast_id": {
      "name_long": "Cast Id",
      "units": null,
      "description_md": "",
      "data_type": "INTEGER"
    },
    "dic_sample.bottle_id": {
      "name_long": "Bottle Id",
      "units": null,
      "description_md": "",
      "data_type": "INTEGER"
    },
    "dic_sample.geom": {
      "name_long": "Geom",
      "units": null,
      "description_md": "",
      "data_type": "GEOMETRY('OGC:CRS84')"
    },
    "dic_summary.site_key": {
      "name_long": "Site Key",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "dic_summary.datetime_start_utc": {
      "name_long": "Datetime Start Utc",
      "units": null,
      "description_md": "",
      "data_type": "TIMESTAMP"
    },
    "dic_summary.depth_m": {
      "name_long": "Depth M",
      "units": null,
      "description_md": "",
      "data_type": "DOUBLE"
    },
    "dic_summary.latitude": {
      "name_long": "Latitude",
      "units": null,
      "description_md": "",
      "data_type": "DOUBLE"
    },
    "dic_summary.longitude": {
      "name_long": "Longitude",
      "units": null,
      "description_md": "",
      "data_type": "DOUBLE"
    },
    "dic_summary.measurement_type": {
      "name_long": "Measurement Type",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "dic_summary.avg": {
      "name_long": "Avg",
      "units": null,
      "description_md": "",
      "data_type": "DOUBLE"
    },
    "dic_summary.stddev": {
      "name_long": "Stddev",
      "units": null,
      "description_md": "",
      "data_type": "DOUBLE"
    },
    "dic_summary.n_obs": {
      "name_long": "N Obs",
      "units": null,
      "description_md": "",
      "data_type": "BIGINT"
    },
    "dic_summary.cast_id": {
      "name_long": "Cast Id",
      "units": null,
      "description_md": "",
      "data_type": "INTEGER"
    },
    "dic_summary.bottle_id": {
      "name_long": "Bottle Id",
      "units": null,
      "description_md": "",
      "data_type": "INTEGER"
    },
    "phyllosoma_measurement.phyllosoma_measurement_id": {
      "name_long": "Measurement ID",
      "description_md": "Sequential primary key.",
      "data_type": "INTEGER"
    },
    "phyllosoma_measurement.tow_id": {
      "name_long": "Tow ID",
      "description_md": "FK to phyllosoma_tow.",
      "data_type": "INTEGER"
    },
    "phyllosoma_measurement.measurement_type": {
      "name_long": "Measurement Type",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "phyllosoma_measurement.measurement_value": {
      "name_long": "Measurement Value",
      "units": null,
      "description_md": "",
      "data_type": "DOUBLE"
    },
    "phyllosoma_measurement.measurement_qual": {
      "name_long": "Measurement Qual",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "phyllosoma_tow.tow_id": {
      "name_long": "Tow ID",
      "description_md": "Sequential primary key (one row per tow).",
      "data_type": "INTEGER"
    },
    "phyllosoma_tow.cruise_orig": {
      "name_long": "Cruise Orig",
      "units": null,
      "description_md": "Source cruise label (YYMM); cruise_key derived from it.",
      "data_type": "VARCHAR"
    },
    "phyllosoma_tow.ship_name": {
      "name_long": "Ship Name",
      "units": null,
      "description_md": "Vessel name; resolved to ship_key.",
      "data_type": "VARCHAR"
    },
    "phyllosoma_tow.sorting_lab": {
      "name_long": "Sorting Lab",
      "units": null,
      "description_md": "Lab that sorted the sample.",
      "data_type": "VARCHAR"
    },
    "phyllosoma_tow.date": {
      "name_long": "Date",
      "units": null,
      "description_md": "Tow collection date.",
      "data_type": "DATE"
    },
    "phyllosoma_tow.datetime_start_utc": {
      "name_long": "Datetime UTC",
      "description_md": "Tow date as timestamp (date only; no time in source).",
      "data_type": "TIMESTAMP"
    },
    "phyllosoma_tow.line": {
      "name_long": "Line",
      "units": null,
      "description_md": "CalCOFI alongshore line.",
      "data_type": "DOUBLE"
    },
    "phyllosoma_tow.station": {
      "name_long": "Station",
      "units": null,
      "description_md": "CalCOFI offshore station.",
      "data_type": "DOUBLE"
    },
    "phyllosoma_tow.site_key": {
      "name_long": "Site Key",
      "description_md": "CalCOFI station key 'LLL.L SSS.S'.",
      "data_type": "VARCHAR"
    },
    "phyllosoma_tow.latitude": {
      "name_long": "Latitude",
      "units": "decimal_degrees",
      "description_md": "Latitude, WGS84.",
      "data_type": "DOUBLE"
    },
    "phyllosoma_tow.longitude": {
      "name_long": "Longitude",
      "units": "decimal_degrees",
      "description_md": "Longitude, WGS84.",
      "data_type": "DOUBLE"
    },
    "phyllosoma_tow.max_tow_depth_m": {
      "name_long": "Max Tow Depth M",
      "units": "m",
      "description_md": "Maximum tow depth.",
      "data_type": "DOUBLE"
    },
    "phyllosoma_tow.volume_filtered": {
      "name_long": "Volume Filtered",
      "units": "ml/1000m3",
      "description_md": "Volume of water filtered (standardization factor).",
      "data_type": "DOUBLE"
    },
    "phyllosoma_tow.aliquot_pct": {
      "name_long": "Aliquot Pct",
      "units": "percent",
      "description_md": "Aliquot percentage sorted.",
      "data_type": "DOUBLE"
    },
    "phyllosoma_tow.aliquot_adjustment": {
      "name_long": "Aliquot Adjustment",
      "units": null,
      "description_md": "Aliquot adjustment note/value.",
      "data_type": "VARCHAR"
    },
    "phyllosoma_tow.study_flag": {
      "name_long": "Study Flag",
      "units": null,
      "description_md": "Provider study flag.",
      "data_type": "VARCHAR"
    },
    "phyllosoma_tow.ship_key": {
      "name_long": "Ship Key",
      "description_md": "NODC ship key; FK to ship.",
      "data_type": "VARCHAR"
    },
    "phyllosoma_tow.cruise_key": {
      "name_long": "Cruise Key",
      "description_md": "CalCOFI cruise natural key from cruise_orig + ship + date.",
      "data_type": "VARCHAR"
    },
    "phyllosoma_tow.geom": {
      "name_long": "Geometry",
      "description_md": "Point geometry (WGS84).",
      "data_type": "GEOMETRY('OGC:CRS84')"
    },
    "phyllosoma_tow.grid_key": {
      "name_long": "Grid Key",
      "description_md": "CalCOFI grid cell.",
      "data_type": "VARCHAR"
    },
    "phyto_measurement.phyto_measurement_id": {
      "name_long": "Measurement ID",
      "description_md": "Sequential primary key.",
      "data_type": "INTEGER"
    },
    "phyto_measurement.phyto_sample_id": {
      "name_long": "Sample ID",
      "description_md": "FK to phyto_sample.phyto_sample_id.",
      "data_type": "INTEGER"
    },
    "phyto_measurement.species_code": {
      "name_long": "Species Code",
      "description_md": "FK to phyto_taxon.species_code (Venrick code).",
      "data_type": "VARCHAR"
    },
    "phyto_measurement.measurement_type": {
      "name_long": "Measurement Type",
      "description_md": "FK to measurement_type; phytoplankton_abundance.",
      "data_type": "VARCHAR"
    },
    "phyto_measurement.measurement_value": {
      "name_long": "Abundance",
      "units": "cells/L",
      "description_md": "Phytoplankton abundance, cells per liter (provisional units; Q02).",
      "data_type": "DOUBLE"
    },
    "phyto_sample.phyto_sample_id": {
      "name_long": "Sample ID",
      "description_md": "Sequential primary key (one row per cruise x region composite).",
      "data_type": "INTEGER"
    },
    "phyto_sample.cruise_yymm": {
      "name_long": "Source Cruise",
      "description_md": "Source cruise label YYMM (e.g. 9608 = Aug 1996).",
      "data_type": "VARCHAR"
    },
    "phyto_sample.cruise_key": {
      "name_long": "Cruise Key",
      "description_md": "CalCOFI cruise natural key (YYYY-MM-NODC) matched by year-month; NULL where the month has multiple cruises (Q06).",
      "data_type": "VARCHAR"
    },
    "phyto_sample.year": {
      "name_long": "Year",
      "description_md": "Year of the cruise.",
      "data_type": "INTEGER"
    },
    "phyto_sample.month": {
      "name_long": "Month",
      "description_md": "Month of the cruise (1-12).",
      "data_type": "INTEGER"
    },
    "phyto_sample.season": {
      "name_long": "Season",
      "description_md": "Quarterly CalCOFI season (winter/spring/summer/fall).",
      "data_type": "VARCHAR"
    },
    "phyto_sample.region_key": {
      "name_long": "Region",
      "description_md": "FK to region.region_key.",
      "data_type": "VARCHAR"
    },
    "phyto_sample.latitude": {
      "name_long": "Latitude",
      "units": "decimal degrees",
      "description_md": "Region-centroid latitude (provisional; Q01).",
      "data_type": "DOUBLE"
    },
    "phyto_sample.longitude": {
      "name_long": "Longitude",
      "units": "decimal degrees",
      "description_md": "Region-centroid longitude (provisional; Q01).",
      "data_type": "DOUBLE"
    },
    "phyto_sample.geom": {
      "name_long": "Geom",
      "units": null,
      "description_md": "",
      "data_type": "GEOMETRY('OGC:CRS84')"
    },
    "phyto_taxon.species_code": {
      "name_long": "Species Code",
      "description_md": "Venrick source species code (primary key).",
      "data_type": "VARCHAR"
    },
    "phyto_taxon.taxa": {
      "name_long": "Taxa Group",
      "description_md": "Verbatim coarse group (e.g. 'diatom, centric').",
      "data_type": "VARCHAR"
    },
    "phyto_taxon.species": {
      "name_long": "Species (verbatim)",
      "description_md": "Verbatim taxon name as given by the source.",
      "data_type": "VARCHAR"
    },
    "phyto_taxon.aphia_id": {
      "name_long": "WoRMS AphiaID",
      "description_md": "Best-effort WoRMS AphiaID (accepted; partial coverage, Q05).",
      "data_type": "INTEGER"
    },
    "phyto_taxon.scientific_name_accepted": {
      "name_long": "Accepted Name",
      "description_md": "WoRMS accepted scientific name where matched.",
      "data_type": "VARCHAR"
    },
    "phyto_taxon.rank": {
      "name_long": "Taxonomic Rank",
      "description_md": "WoRMS taxonomic rank where matched.",
      "data_type": "VARCHAR"
    },
    "phyto_taxon.kingdom": {
      "name_long": "Kingdom",
      "description_md": "WoRMS kingdom where matched.",
      "data_type": "VARCHAR"
    },
    "phyto_taxon.phylum": {
      "name_long": "Phylum",
      "description_md": "WoRMS phylum where matched.",
      "data_type": "VARCHAR"
    },
    "region.region_key": {
      "name_long": "Region",
      "description_md": "Pooled-region code: NE, SE, Alley, or Offshore (primary key).",
      "data_type": "VARCHAR"
    },
    "region.description": {
      "name_long": "Description",
      "description_md": "Region description (Northern Inshore, Southern Inshore, California Current, Central Pacific).",
      "data_type": "VARCHAR"
    },
    "region.latitude": {
      "name_long": "Latitude",
      "units": "decimal degrees",
      "description_md": "Provisional region centroid latitude (mean of member CalCOFI stations; Q01).",
      "data_type": "DOUBLE"
    },
    "region.longitude": {
      "name_long": "Longitude",
      "units": "decimal degrees",
      "description_md": "Provisional region centroid longitude (mean of member CalCOFI stations; Q01).",
      "data_type": "DOUBLE"
    },
    "region.n_stations": {
      "name_long": "Number of Stations",
      "description_md": "Count of CalCOFI grid stations defining the region.",
      "data_type": "INTEGER"
    },
    "region.station_codes": {
      "name_long": "Station Codes",
      "description_md": "Member CalCOFI line.station codes (Hayward & Venrick 1998).",
      "data_type": "VARCHAR"
    },
    "euphausiids_measurement.euphausiids_measurement_id": {
      "name_long": "Euphausiids Measurement Id",
      "units": null,
      "description_md": "",
      "data_type": "BIGINT"
    },
    "euphausiids_measurement.tow_id": {
      "name_long": "Tow Id",
      "units": null,
      "description_md": "",
      "data_type": "INTEGER"
    },
    "euphausiids_measurement.measurement_type": {
      "name_long": "Measurement Type",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "euphausiids_measurement.measurement_value": {
      "name_long": "Measurement Value",
      "units": null,
      "description_md": "",
      "data_type": "DOUBLE"
    },
    "euphausiids_measurement.measurement_qual": {
      "name_long": "Measurement Qual",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "euphausiids_summary.site_key": {
      "name_long": "Site Key",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "euphausiids_summary.datetime_start_utc": {
      "name_long": "Datetime Start Utc",
      "units": null,
      "description_md": "",
      "data_type": "TIMESTAMP"
    },
    "euphausiids_summary.latitude": {
      "name_long": "Latitude",
      "units": null,
      "description_md": "",
      "data_type": "DOUBLE"
    },
    "euphausiids_summary.longitude": {
      "name_long": "Longitude",
      "units": null,
      "description_md": "",
      "data_type": "DOUBLE"
    },
    "euphausiids_summary.measurement_type": {
      "name_long": "Measurement Type",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "euphausiids_summary.avg": {
      "name_long": "Avg",
      "units": null,
      "description_md": "",
      "data_type": "DOUBLE"
    },
    "euphausiids_summary.stddev": {
      "name_long": "Stddev",
      "units": null,
      "description_md": "",
      "data_type": "DOUBLE"
    },
    "euphausiids_summary.n_obs": {
      "name_long": "N Obs",
      "units": null,
      "description_md": "",
      "data_type": "BIGINT"
    },
    "euphausiids_tow.tow_id": {
      "name_long": "Tow Id",
      "units": null,
      "description_md": "Source row identifier; primary key (one row = one euphausiid tow).",
      "data_type": "INTEGER"
    },
    "euphausiids_tow.cruise_key": {
      "name_long": "Cruise Key",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "euphausiids_tow.ship_key": {
      "name_long": "Ship Key",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "euphausiids_tow.ship_name": {
      "name_long": "Ship Name",
      "units": null,
      "description_md": "Vessel name as provided; resolved to ship_key against the NODC ship registry.",
      "data_type": "VARCHAR"
    },
    "euphausiids_tow.cruise_orig": {
      "name_long": "Cruise Orig",
      "units": null,
      "description_md": "Original cruise label as provided (e.g. 'CALCOFI 5511B', 'CALCOFI 1504'); cruise_key is derived from this with ship + date.",
      "data_type": "VARCHAR"
    },
    "euphausiids_tow.site_key": {
      "name_long": "Site Key",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "euphausiids_tow.line": {
      "name_long": "Line",
      "units": null,
      "description_md": "Alongshore component of the CalCOFI coordinate system.",
      "data_type": "DOUBLE"
    },
    "euphausiids_tow.station": {
      "name_long": "Station",
      "units": null,
      "description_md": "Offshore component of the CalCOFI coordinate system.",
      "data_type": "DOUBLE"
    },
    "euphausiids_tow.region": {
      "name_long": "Region",
      "units": null,
      "description_md": "Region label; constant 'All Regions' in this extract.",
      "data_type": "VARCHAR"
    },
    "euphausiids_tow.datetime_start_utc": {
      "name_long": "Datetime Start Utc",
      "units": null,
      "description_md": "Tow start date-time (UTC); canonical event timestamp.",
      "data_type": "TIMESTAMP"
    },
    "euphausiids_tow.datetime_end_utc": {
      "name_long": "Datetime End Utc",
      "units": null,
      "description_md": "Tow end date-time (UTC).",
      "data_type": "TIMESTAMP"
    },
    "euphausiids_tow.latitude": {
      "name_long": "Latitude",
      "units": "decimal_degrees",
      "description_md": "Latitude in decimal degrees, WGS84 (EPSG:4326).",
      "data_type": "DOUBLE"
    },
    "euphausiids_tow.longitude": {
      "name_long": "Longitude",
      "units": "decimal_degrees",
      "description_md": "Longitude in decimal degrees, WGS84 (EPSG:4326).",
      "data_type": "DOUBLE"
    },
    "euphausiids_tow.geom": {
      "name_long": "Geom",
      "units": null,
      "description_md": "",
      "data_type": "GEOMETRY('OGC:CRS84')"
    },
    "euphausiids_tow.grid_key": {
      "name_long": "Grid Key",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "zoodb_measurement.measurement_id": {
      "name_long": "Measurement ID",
      "description_md": "Sequential primary key (one row per sample x taxon x measurement_type).",
      "data_type": "INTEGER"
    },
    "zoodb_measurement.sample_id": {
      "name_long": "Sample ID",
      "description_md": "FK to zoodb_sample.sample_id.",
      "data_type": "INTEGER"
    },
    "zoodb_measurement.taxon_id": {
      "name_long": "Taxon ID",
      "description_md": "FK to zoodb_taxon.taxon_id.",
      "data_type": "INTEGER"
    },
    "zoodb_measurement.measurement_type": {
      "name_long": "Measurement Type",
      "description_md": "FK to measurement_type.measurement_type (zooplankton_abundance / zooplankton_abundance_areal / zooplankton_biomass_carbon).",
      "data_type": "VARCHAR"
    },
    "zoodb_measurement.measurement_value": {
      "name_long": "Measurement Value",
      "description_md": "Abundance (count/1000m3 or count/m2) or carbon biomass (mg C/m2). 0 = analyzed-but-absent.",
      "data_type": "DOUBLE"
    },
    "zoodb_sample.sample_id": {
      "name_long": "Sample ID",
      "description_md": "Sequential primary key (one row per ZooDB sample).",
      "data_type": "INTEGER"
    },
    "zoodb_sample.source": {
      "name_long": "Source",
      "units": null,
      "description_md": "Sample grain: 'unpooled' (single net tow with full position) or 'pooled' (per-cruise regional composite of n_tows_pooled night tows).",
      "data_type": "VARCHAR"
    },
    "zoodb_sample.cruise_orig": {
      "name_long": "Cruise Orig",
      "units": null,
      "description_md": "Original ZooDB cruise label (e.g. 'CALCOFI 5103', 'CALCOFI Monterey 5105', 'CALCOFI 1203SH'); cruise_key is derived from it.",
      "data_type": "VARCHAR"
    },
    "zoodb_sample.cruise_key": {
      "name_long": "Cruise Key",
      "description_md": "CalCOFI cruise natural key (YYYY-MM-NODC) derived from cruise_orig + ship + date; NULL where unresolved (see questions).",
      "data_type": "VARCHAR"
    },
    "zoodb_sample.ship_name": {
      "name_long": "Ship Name",
      "units": null,
      "description_md": "Vessel name as provided (unpooled only; 'N/A' for pooled); resolved to ship_key against the NODC ship registry.",
      "data_type": "VARCHAR"
    },
    "zoodb_sample.ship_key": {
      "name_long": "Ship Key",
      "description_md": "NODC ship code resolved from ship_name (unpooled only).",
      "data_type": "VARCHAR"
    },
    "zoodb_sample.date": {
      "name_long": "Date",
      "units": null,
      "description_md": "Sample date.",
      "data_type": "DATE"
    },
    "zoodb_sample.datetime_start_utc": {
      "name_long": "Datetime Start Utc",
      "units": null,
      "description_md": "Tow start date-time (unpooled only); cross-dataset match key to casts. Timezone unconfirmed (assumed local ship time, see questions).",
      "data_type": "TIMESTAMP"
    },
    "zoodb_sample.datetime_end_utc": {
      "name_long": "Datetime End Utc",
      "units": null,
      "description_md": "Tow end date-time (unpooled only).",
      "data_type": "TIMESTAMP"
    },
    "zoodb_sample.line": {
      "name_long": "Line",
      "units": null,
      "description_md": "Alongshore CalCOFI line (unpooled only).",
      "data_type": "DOUBLE"
    },
    "zoodb_sample.station": {
      "name_long": "Station",
      "units": null,
      "description_md": "Offshore CalCOFI station (unpooled only).",
      "data_type": "DOUBLE"
    },
    "zoodb_sample.site_key": {
      "name_long": "Site Key",
      "description_md": "CalCOFI station key 'LLL.L SSS.S' from line + station (unpooled only).",
      "data_type": "VARCHAR"
    },
    "zoodb_sample.region": {
      "name_long": "Region",
      "units": null,
      "description_md": "ZooDB region: SC (Southern California, lines 76.7-93), CC (Central California, lines 60-70), or Other (outside standard regions).",
      "data_type": "VARCHAR"
    },
    "zoodb_sample.latitude": {
      "name_long": "Latitude",
      "units": "decimal_degrees",
      "description_md": "Latitude in decimal degrees, WGS84 (EPSG:4326); unpooled only.",
      "data_type": "DOUBLE"
    },
    "zoodb_sample.longitude": {
      "name_long": "Longitude",
      "units": "decimal_degrees",
      "description_md": "Longitude in decimal degrees, WGS84 (EPSG:4326); unpooled only.",
      "data_type": "DOUBLE"
    },
    "zoodb_sample.max_depth_m": {
      "name_long": "Max Depth M",
      "units": "m",
      "description_md": "Maximum tow depth in meters (unpooled only); CalCOFI standard 0-210 m since 1969, 0-140 m 1951-1968.",
      "data_type": "DOUBLE"
    },
    "zoodb_sample.min_depth_m": {
      "name_long": "Min Depth M",
      "units": "m",
      "description_md": "Minimum tow depth in meters (unpooled only).",
      "data_type": "DOUBLE"
    },
    "zoodb_sample.net_type": {
      "name_long": "Net Type",
      "units": null,
      "description_md": "Net gear: CAL1MOBL (1-m ring net, to 1977), CALBOBL (0.71-m bongo, since Dec 1977), or '1 m' (unpooled only).",
      "data_type": "VARCHAR"
    },
    "zoodb_sample.n_tows_pooled": {
      "name_long": "N Tows Pooled",
      "units": null,
      "description_md": "Number of tows aggregated: 1 for unpooled, n for pooled composites.",
      "data_type": "INTEGER"
    },
    "zoodb_sample.geom": {
      "name_long": "Geometry",
      "description_md": "Point geometry (EPSG:4326) from longitude/latitude (unpooled only).",
      "data_type": "GEOMETRY('OGC:CRS84')"
    },
    "zoodb_sample.grid_key": {
      "name_long": "Grid Key",
      "description_md": "CalCOFI grid-cell key assigned spatially (unpooled only).",
      "data_type": "VARCHAR"
    },
    "zoodb_taxon.taxon_id": {
      "name_long": "Taxon ID",
      "description_md": "Sequential primary key for the higher-taxon lookup.",
      "data_type": "INTEGER"
    },
    "zoodb_taxon.taxon_zoodb": {
      "name_long": "ZooDB Taxon",
      "description_md": "Verbatim ZooDB higher-taxon label (e.g. 'COPEPODA CALANOIDA CALANIDAE').",
      "data_type": "VARCHAR"
    },
    "zoodb_taxon.taxon_slug": {
      "name_long": "Taxon Slug",
      "units": null,
      "description_md": "Lower-cased underscore join key derived from the ZooDB higher-taxon label; FK target from zoodb_measurement.",
      "data_type": "VARCHAR"
    },
    "zoodb_taxon.aphia_id": {
      "name_long": "WoRMS AphiaID",
      "description_md": "WoRMS AphiaID for the resolved taxon concept.",
      "data_type": "INTEGER"
    },
    "zoodb_taxon.scientific_name": {
      "name_long": "Scientific Name",
      "description_md": "WoRMS accepted scientific name.",
      "data_type": "VARCHAR"
    },
    "zoodb_taxon.rank": {
      "name_long": "Taxon Rank",
      "description_md": "WoRMS taxonomic rank (Phylum/Class/Order/Suborder/Superfamily/Family).",
      "data_type": "VARCHAR"
    },
    "zoodb_taxon.taxon_status": {
      "name_long": "WoRMS Status",
      "description_md": "WoRMS status of the matched name (accepted / unaccepted).",
      "data_type": "VARCHAR"
    },
    "zoodb_taxon.kingdom": {
      "name_long": "Kingdom",
      "description_md": "WoRMS kingdom.",
      "data_type": "VARCHAR"
    },
    "zoodb_taxon.phylum": {
      "name_long": "Phylum",
      "description_md": "WoRMS phylum.",
      "data_type": "VARCHAR"
    },
    "zoodb_taxon.class": {
      "name_long": "Class",
      "description_md": "WoRMS class.",
      "data_type": "VARCHAR"
    },
    "zoodb_taxon.order_taxon": {
      "name_long": "Order",
      "description_md": "WoRMS order (column named order_taxon; 'order' is a SQL reserved word).",
      "data_type": "VARCHAR"
    },
    "zoodb_taxon.family": {
      "name_long": "Family",
      "description_md": "WoRMS family.",
      "data_type": "VARCHAR"
    },
    "zooscan_measurement.measurement_id": {
      "name_long": "Measurement ID",
      "description_md": "Sequential primary key (one row per sample x taxon x measurement_type).",
      "data_type": "INTEGER"
    },
    "zooscan_measurement.sample_id": {
      "name_long": "Sample ID",
      "description_md": "FK to zooscan_sample.sample_id.",
      "data_type": "INTEGER"
    },
    "zooscan_measurement.taxon_id": {
      "name_long": "Taxon ID",
      "description_md": "FK to zooscan_taxon.taxon_id.",
      "data_type": "INTEGER"
    },
    "zooscan_measurement.measurement_type": {
      "name_long": "Measurement Type",
      "description_md": "FK to measurement_type.measurement_type.",
      "data_type": "VARCHAR"
    },
    "zooscan_measurement.measurement_value": {
      "name_long": "Measurement Value",
      "description_md": "Abundance (No./m2), C biomass (mgC/m2), Feret diameter (mm), or individual C content (ugC). 0 = imaged-but-absent.",
      "data_type": "DOUBLE"
    },
    "zooscan_sample.sample_id": {
      "name_long": "Sample ID",
      "description_md": "Sequential primary key (one row per ZooScan station tow).",
      "data_type": "INTEGER"
    },
    "zooscan_sample.cruise_orig": {
      "name_long": "Cruise Orig",
      "units": null,
      "description_md": "Original ZooScan cruise code (YYYYMM + 2-letter ship code, e.g. '200507NH' = Jul 2005, R/V New Horizon); cruise_key + ship_key are parsed from it.",
      "data_type": "VARCHAR"
    },
    "zooscan_sample.cruise_key": {
      "name_long": "Cruise Key",
      "description_md": "CalCOFI cruise natural key (YYYY-MM-NODC), parsed as year-month (from the cruise code) + the NODC code of the resolved ship; NULL where unmatched to the cruise registry.",
      "data_type": "VARCHAR"
    },
    "zooscan_sample.ship_key": {
      "name_long": "Ship Key",
      "description_md": "NODC ship key parsed from the 2-letter suffix of the cruise code (e.g. NH=New Horizon, SR=Sally Ride).",
      "data_type": "VARCHAR"
    },
    "zooscan_sample.ship_name": {
      "name_long": "Ship Name",
      "description_md": "Vessel name from the ship registry.",
      "data_type": "VARCHAR"
    },
    "zooscan_sample.line": {
      "name_long": "Line",
      "units": null,
      "description_md": "Alongshore CalCOFI line (80, 87, or 90).",
      "data_type": "DOUBLE"
    },
    "zooscan_sample.station": {
      "name_long": "Station",
      "units": null,
      "description_md": "Offshore CalCOFI station.",
      "data_type": "DOUBLE"
    },
    "zooscan_sample.site_key": {
      "name_long": "Site Key",
      "description_md": "CalCOFI station key 'LLL.L SSS.S' from line + station.",
      "data_type": "VARCHAR"
    },
    "zooscan_sample.latitude": {
      "name_long": "Latitude",
      "units": "decimal_degrees",
      "description_md": "Latitude in decimal degrees, WGS84 (EPSG:4326).",
      "data_type": "DOUBLE"
    },
    "zooscan_sample.longitude": {
      "name_long": "Longitude",
      "units": "decimal_degrees",
      "description_md": "Longitude in decimal degrees, WGS84 (EPSG:4326).",
      "data_type": "DOUBLE"
    },
    "zooscan_sample.max_depth_m": {
      "name_long": "Max Depth M",
      "units": "m",
      "description_md": "Maximum tow depth in meters.",
      "data_type": "DOUBLE"
    },
    "zooscan_sample.min_depth_m": {
      "name_long": "Min Depth M",
      "units": "m",
      "description_md": "Minimum tow depth in meters.",
      "data_type": "DOUBLE"
    },
    "zooscan_sample.cruise_mid_date": {
      "name_long": "Cruise Mid Date",
      "units": null,
      "description_md": "Mid-date of the cruise.",
      "data_type": "DATE"
    },
    "zooscan_sample.station_date": {
      "name_long": "Station Date",
      "units": null,
      "description_md": "Date the station was sampled.",
      "data_type": "DATE"
    },
    "zooscan_sample.local_time_pst": {
      "name_long": "Local Time Pst",
      "units": null,
      "description_md": "Local (PST) clock time of the tow (HH:MM).",
      "data_type": "VARCHAR"
    },
    "zooscan_sample.datetime_local_pst": {
      "name_long": "Local Datetime (PST)",
      "description_md": "Station date + local PST time of the tow.",
      "data_type": "TIMESTAMP"
    },
    "zooscan_sample.day_night": {
      "name_long": "Day Night",
      "units": null,
      "description_md": "Day or Night tow (by nautical twilight).",
      "data_type": "VARCHAR"
    },
    "zooscan_sample.geom": {
      "name_long": "Geometry",
      "description_md": "Point geometry (EPSG:4326) from longitude/latitude.",
      "data_type": "GEOMETRY('OGC:CRS84')"
    },
    "zooscan_sample.grid_key": {
      "name_long": "Grid Key",
      "description_md": "CalCOFI grid-cell key assigned spatially.",
      "data_type": "VARCHAR"
    },
    "zooscan_taxon.taxon_id": {
      "name_long": "Taxon ID",
      "description_md": "Sequential primary key for the bioclass lookup.",
      "data_type": "INTEGER"
    },
    "zooscan_taxon.taxon_zooscan": {
      "name_long": "ZooScan Class",
      "description_md": "Verbatim ZooScan bioclass name (e.g. 'copepoda_eucalanids').",
      "data_type": "VARCHAR"
    },
    "zooscan_taxon.taxon_slug": {
      "name_long": "Taxon Slug",
      "units": null,
      "description_md": "Lower-cased ZooScan bioclass name; FK target from zooscan_measurement.",
      "data_type": "VARCHAR"
    },
    "zooscan_taxon.aphia_id": {
      "name_long": "WoRMS AphiaID",
      "description_md": "WoRMS AphiaID for the resolved taxon concept; NULL for non-taxonomic classes.",
      "data_type": "INTEGER"
    },
    "zooscan_taxon.scientific_name": {
      "name_long": "Scientific Name",
      "description_md": "WoRMS accepted scientific name.",
      "data_type": "VARCHAR"
    },
    "zooscan_taxon.rank": {
      "name_long": "Taxon Rank",
      "description_md": "WoRMS taxonomic rank.",
      "data_type": "VARCHAR"
    },
    "zooscan_taxon.taxon_status": {
      "name_long": "WoRMS Status",
      "description_md": "WoRMS status (accepted / unaccepted / non-taxonomic / not found).",
      "data_type": "VARCHAR"
    },
    "zooscan_taxon.taxon_note": {
      "name_long": "Note",
      "description_md": "Notes on combined or non-taxonomic operational ZooScan classes.",
      "data_type": "VARCHAR"
    },
    "zooscan_taxon.kingdom": {
      "name_long": "Kingdom",
      "description_md": "WoRMS kingdom.",
      "data_type": "VARCHAR"
    },
    "zooscan_taxon.phylum": {
      "name_long": "Phylum",
      "description_md": "WoRMS phylum.",
      "data_type": "VARCHAR"
    },
    "zooscan_taxon.class": {
      "name_long": "Class",
      "description_md": "WoRMS class.",
      "data_type": "VARCHAR"
    },
    "zooscan_taxon.order_taxon": {
      "name_long": "Order",
      "description_md": "WoRMS order (column named order_taxon; 'order' is a SQL reserved word).",
      "data_type": "VARCHAR"
    },
    "zooscan_taxon.family": {
      "name_long": "Family",
      "description_md": "WoRMS family.",
      "data_type": "VARCHAR"
    },
    "zooplankton_tow.expedition": {
      "name_long": "Expedition",
      "units": null,
      "description_md": "Expedition name.",
      "data_type": "VARCHAR"
    },
    "zooplankton_tow.expedition_code": {
      "name_long": "Expedition Code",
      "units": null,
      "description_md": "Expedition code.",
      "data_type": "VARCHAR"
    },
    "zooplankton_tow.expedition_type": {
      "name_long": "Expedition Type",
      "units": null,
      "description_md": "Expedition type.",
      "data_type": "VARCHAR"
    },
    "zooplankton_tow.ship_name": {
      "name_long": "Ship Name",
      "units": null,
      "description_md": "Name of ship used to collect the net-tow sample; resolved to ship_key.",
      "data_type": "VARCHAR"
    },
    "zooplankton_tow.order_occ": {
      "name_long": "Order Occ",
      "units": null,
      "description_md": "SWFSC order occupied (populated for CalCOFI cruises).",
      "data_type": "INTEGER"
    },
    "zooplankton_tow.line": {
      "name_long": "Line",
      "units": null,
      "description_md": "CalCOFI alongshore line (or Haul/Cycle for non-CalCOFI programs).",
      "data_type": "DOUBLE"
    },
    "zooplankton_tow.station": {
      "name_long": "Station",
      "units": null,
      "description_md": "CalCOFI offshore station (or Station/Net number for non-CalCOFI).",
      "data_type": "DOUBLE"
    },
    "zooplankton_tow.latitude": {
      "name_long": "Latitude",
      "units": "decimal_degrees",
      "description_md": "Latitude in decimal degrees, WGS84 (EPSG:4326).",
      "data_type": "DOUBLE"
    },
    "zooplankton_tow.longitude": {
      "name_long": "Longitude",
      "units": "decimal_degrees",
      "description_md": "Longitude in decimal degrees, WGS84 (EPSG:4326).",
      "data_type": "DOUBLE"
    },
    "zooplankton_tow.date": {
      "name_long": "Date",
      "units": null,
      "description_md": "Date the net-tow sample was collected.",
      "data_type": "DATE"
    },
    "zooplankton_tow.datetime_start_utc": {
      "name_long": "Datetime Start Utc",
      "units": null,
      "description_md": "Tow start date-time; canonical event timestamp.",
      "data_type": "TIMESTAMP"
    },
    "zooplankton_tow.datetime_end_utc": {
      "name_long": "Datetime End Utc",
      "units": null,
      "description_md": "Tow end date-time.",
      "data_type": "TIMESTAMP"
    },
    "zooplankton_tow.depth_min_m": {
      "name_long": "Depth Min M",
      "units": "m",
      "description_md": "Minimum depth the net reached.",
      "data_type": "DOUBLE"
    },
    "zooplankton_tow.depth_max_m": {
      "name_long": "Depth Max M",
      "units": "m",
      "description_md": "Maximum depth the net reached.",
      "data_type": "DOUBLE"
    },
    "zooplankton_tow.max_wire_out_m": {
      "name_long": "Max Wire Out M",
      "units": "m",
      "description_md": "Maximum meters of wire out for the net tow.",
      "data_type": "DOUBLE"
    },
    "zooplankton_tow.net_type": {
      "name_long": "Net Type",
      "units": null,
      "description_md": "Type of net used (e.g. CalBOBL, Cal1Mobl, Pairovet, Calvet, Manta, Neuston).",
      "data_type": "VARCHAR"
    },
    "zooplankton_tow.mesh_size_mm": {
      "name_long": "Mesh Size Mm",
      "units": "mm",
      "description_md": "Mesh size of the net.",
      "data_type": "DOUBLE"
    },
    "zooplankton_tow.tow_type": {
      "name_long": "Tow Type",
      "units": null,
      "description_md": "How the net was towed (e.g. Oblique, Horizontal, Vertical).",
      "data_type": "VARCHAR"
    },
    "zooplankton_tow.fixative": {
      "name_long": "Fixative",
      "units": null,
      "description_md": "Fixative used on the sample.",
      "data_type": "VARCHAR"
    },
    "zooplankton_tow.preservative": {
      "name_long": "Preservative",
      "units": null,
      "description_md": "Preservative used on the sample.",
      "data_type": "VARCHAR"
    },
    "zooplankton_tow.site_key": {
      "name_long": "Site Key",
      "description_md": "CalCOFI station key in 'line station' form where line and station are numeric.",
      "data_type": "VARCHAR"
    },
    "zooplankton_tow.tow_id": {
      "name_long": "Tow ID",
      "description_md": "Sequential primary key (one row per tow, after the CalCOFI-bounding-box filter).",
      "data_type": "INTEGER"
    },
    "zooplankton_tow.ship_key": {
      "name_long": "Ship Key",
      "description_md": "NODC ship key; FK to ship.",
      "data_type": "VARCHAR"
    },
    "zooplankton_tow.cruise_key": {
      "name_long": "Cruise Key",
      "description_md": "Cruise natural key (YYYY-MM-NODC); FK to cruise for CalCOFI tows.",
      "data_type": "VARCHAR"
    },
    "zooplankton_tow.geom": {
      "name_long": "Geometry",
      "description_md": "Point geometry in WGS84 (EPSG:4326) from longitude/latitude.",
      "data_type": "GEOMETRY('OGC:CRS84')"
    },
    "zooplankton_tow.grid_key": {
      "name_long": "Grid Key",
      "description_md": "CalCOFI grid-cell key; FK to grid.",
      "data_type": "VARCHAR"
    },
    "cufes_measurement.cufes_measurement_id": {
      "name_long": "CUFES Measurement ID",
      "description_md": "Sequential primary key.",
      "data_type": "INTEGER"
    },
    "cufes_measurement.sample_id": {
      "name_long": "Sample ID",
      "description_md": "FK to cufes_sample.",
      "data_type": "INTEGER"
    },
    "cufes_measurement.measurement_type": {
      "name_long": "Measurement Type",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "cufes_measurement.measurement_value": {
      "name_long": "Measurement Value",
      "units": null,
      "description_md": "",
      "data_type": "DOUBLE"
    },
    "cufes_measurement.measurement_qual": {
      "name_long": "Measurement Qual",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "cufes_sample.sample_id": {
      "name_long": "Sample Id",
      "units": null,
      "description_md": "",
      "data_type": "INTEGER"
    },
    "cufes_sample.cruise_orig": {
      "name_long": "Cruise Orig",
      "units": null,
      "description_md": "Source cruise label; cruise_key derived from it.",
      "data_type": "DOUBLE"
    },
    "cufes_sample.ship_name": {
      "name_long": "Ship Name",
      "units": null,
      "description_md": "Vessel name; resolved to ship_key.",
      "data_type": "VARCHAR"
    },
    "cufes_sample.ship_code": {
      "name_long": "Ship Code",
      "units": null,
      "description_md": "Source ship code.",
      "data_type": "VARCHAR"
    },
    "cufes_sample.sample_number": {
      "name_long": "Sample Number",
      "units": null,
      "description_md": "CUFES sample sequence number within the cruise.",
      "data_type": "INTEGER"
    },
    "cufes_sample.datetime_start_utc": {
      "name_long": "Datetime Start Utc",
      "units": null,
      "description_md": "Sample start date-time (UTC); canonical event timestamp.",
      "data_type": "TIMESTAMP"
    },
    "cufes_sample.datetime_end_utc": {
      "name_long": "Datetime End Utc",
      "units": null,
      "description_md": "Sample end date-time (UTC).",
      "data_type": "TIMESTAMP"
    },
    "cufes_sample.latitude": {
      "name_long": "Latitude",
      "units": "decimal_degrees",
      "description_md": "Sample start latitude, WGS84.",
      "data_type": "DOUBLE"
    },
    "cufes_sample.longitude": {
      "name_long": "Longitude",
      "units": "decimal_degrees",
      "description_md": "Sample start longitude, WGS84.",
      "data_type": "DOUBLE"
    },
    "cufes_sample.latitude_stop": {
      "name_long": "Latitude Stop",
      "units": "decimal_degrees",
      "description_md": "Sample end latitude.",
      "data_type": "DOUBLE"
    },
    "cufes_sample.longitude_stop": {
      "name_long": "Longitude Stop",
      "units": "decimal_degrees",
      "description_md": "Sample end longitude.",
      "data_type": "DOUBLE"
    },
    "cufes_sample.start_temperature": {
      "name_long": "Start Temperature",
      "units": "degC",
      "description_md": "Sea surface temperature at sample start.",
      "data_type": "DOUBLE"
    },
    "cufes_sample.start_salinity": {
      "name_long": "Start Salinity",
      "units": "PSS-78",
      "description_md": "Sea surface salinity at sample start.",
      "data_type": "DOUBLE"
    },
    "cufes_sample.start_wind_speed": {
      "name_long": "Start Wind Speed",
      "units": "m/s",
      "description_md": "Wind speed at sample start.",
      "data_type": "DOUBLE"
    },
    "cufes_sample.start_wind_direction": {
      "name_long": "Start Wind Direction",
      "units": "degrees",
      "description_md": "Wind direction at sample start.",
      "data_type": "DOUBLE"
    },
    "cufes_sample.start_pump_speed": {
      "name_long": "Start Pump Speed",
      "units": null,
      "description_md": "CUFES pump speed at sample start.",
      "data_type": "DOUBLE"
    },
    "cufes_sample.stop_temperature": {
      "name_long": "Stop Temperature",
      "units": "degC",
      "description_md": "Sea surface temperature at sample end.",
      "data_type": "DOUBLE"
    },
    "cufes_sample.stop_salinity": {
      "name_long": "Stop Salinity",
      "units": "PSS-78",
      "description_md": "Sea surface salinity at sample end.",
      "data_type": "DOUBLE"
    },
    "cufes_sample.stop_wind_speed": {
      "name_long": "Stop Wind Speed",
      "units": "m/s",
      "description_md": "Wind speed at sample end.",
      "data_type": "DOUBLE"
    },
    "cufes_sample.stop_wind_direction": {
      "name_long": "Stop Wind Direction",
      "units": "degrees",
      "description_md": "Wind direction at sample end.",
      "data_type": "DOUBLE"
    },
    "cufes_sample.stop_pump_speed": {
      "name_long": "Stop Pump Speed",
      "units": null,
      "description_md": "CUFES pump speed at sample end.",
      "data_type": "DOUBLE"
    },
    "cufes_sample.ship_key": {
      "name_long": "Ship Key",
      "description_md": "NODC ship key; FK to ship.",
      "data_type": "VARCHAR"
    },
    "cufes_sample.cruise_key": {
      "name_long": "Cruise Key",
      "description_md": "CalCOFI cruise natural key, derived from cruise_orig + ship + date.",
      "data_type": "VARCHAR"
    },
    "cufes_sample.geom": {
      "name_long": "Geometry",
      "description_md": "Sample-start point geometry (WGS84).",
      "data_type": "GEOMETRY('OGC:CRS84')"
    },
    "cufes_sample.grid_key": {
      "name_long": "Grid Key",
      "description_md": "CalCOFI grid cell from spatial join.",
      "data_type": "VARCHAR"
    },
    "cruise.cruise_uuid": {
      "name_long": "Cruise Uuid",
      "units": null,
      "description_md": "CalCOFI species identifier, primary key in species table",
      "data_type": "UUID"
    },
    "cruise.date_ym": {
      "name_long": "Date Ym",
      "units": null,
      "description_md": "",
      "data_type": "DATE"
    },
    "cruise.ship_key": {
      "name_long": "Ship Key",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "cruise._source_file": {
      "name_long": " Source File",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "cruise._source_row": {
      "name_long": " Source Row",
      "units": null,
      "description_md": "",
      "data_type": "INTEGER"
    },
    "cruise._ingested_at": {
      "name_long": " Ingested At",
      "units": null,
      "description_md": "",
      "data_type": "TIMESTAMP"
    },
    "cruise._source_uuid": {
      "name_long": " Source Uuid",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "cruise.cruise_key": {
      "name_long": "Cruise Key",
      "description_md": "Natural primary key in YYMMKK format (2-digit year + 2-digit month + ship_key)",
      "data_type": "VARCHAR"
    },
    "ichthyo.ichthyo_uuid": {
      "name_long": "Ichthyo UUID",
      "description_md": "Deterministic UUID v5 primary key derived from composite natural key (net_uuid, species_id, life_stage, measurement_type, measurement_value)",
      "data_type": "UUID"
    },
    "ichthyo.net_uuid": {
      "name_long": "Net UUID",
      "description_md": "Foreign key to net table (source UUID)",
      "data_type": "UUID"
    },
    "ichthyo.species_id": {
      "name_long": "Species ID",
      "description_md": "Foreign key to species table",
      "data_type": "SMALLINT"
    },
    "ichthyo.life_stage": {
      "name_long": "Life Stage",
      "description_md": "Life stage: 'egg' or 'larva'",
      "data_type": "VARCHAR"
    },
    "ichthyo.measurement_type": {
      "name_long": "Measurement Type",
      "description_md": "Type of measurement: 'stage', 'size', or NULL for total count",
      "data_type": "VARCHAR"
    },
    "ichthyo.measurement_value": {
      "name_long": "Measurement Value",
      "description_md": "Numeric value of measurement (stage number or length in mm)",
      "data_type": "DOUBLE"
    },
    "ichthyo.tally": {
      "name_long": "Tally",
      "units": "count",
      "description_md": "Raw count of individuals",
      "data_type": "INTEGER"
    },
    "ichthyo._source_file": {
      "name_long": " Source File",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "ichthyo._source_row": {
      "name_long": " Source Row",
      "units": null,
      "description_md": "",
      "data_type": "INTEGER"
    },
    "ichthyo._ingested_at": {
      "name_long": " Ingested At",
      "units": null,
      "description_md": "",
      "data_type": "TIMESTAMP"
    },
    "ichthyo._source_uuid": {
      "name_long": " Source Uuid",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "invert.net_uuid": {
      "name_long": "Net Uuid",
      "units": null,
      "description_md": "",
      "data_type": "UUID"
    },
    "invert.species_id": {
      "name_long": "Species Id",
      "units": null,
      "description_md": "CalCOFI species identifier, primary key in species table",
      "data_type": "SMALLINT"
    },
    "invert.tally": {
      "name_long": "Tally",
      "units": "count",
      "description_md": "Raw count of invertebrates",
      "data_type": "INTEGER"
    },
    "invert._source_file": {
      "name_long": " Source File",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "invert._source_row": {
      "name_long": " Source Row",
      "units": null,
      "description_md": "",
      "data_type": "INTEGER"
    },
    "invert._ingested_at": {
      "name_long": " Ingested At",
      "units": null,
      "description_md": "",
      "data_type": "TIMESTAMP"
    },
    "invert._source_uuid": {
      "name_long": " Source Uuid",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "lookup.lookup_id": {
      "name_long": "Lookup ID",
      "description_md": "Sequential integer primary key",
      "data_type": "INTEGER"
    },
    "lookup.lookup_type": {
      "name_long": "Lookup Type",
      "description_md": "Category: 'egg_stage', 'larva_stage', or 'tow_type'",
      "data_type": "VARCHAR"
    },
    "lookup.lookup_num": {
      "name_long": "Lookup Number",
      "description_md": "Numeric code for the lookup value",
      "data_type": "INTEGER"
    },
    "lookup.lookup_chr": {
      "name_long": "Lookup Character",
      "description_md": "Character code for the lookup value (e.g. YOLK, PREF)",
      "data_type": "VARCHAR"
    },
    "lookup.description": {
      "name_long": "Description",
      "description_md": "Human-readable description of the lookup value",
      "data_type": "VARCHAR"
    },
    "lookup._source_file": {
      "name_long": " Source File",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "lookup._source_row": {
      "name_long": " Source Row",
      "units": null,
      "description_md": "",
      "data_type": "INTEGER"
    },
    "lookup._ingested_at": {
      "name_long": " Ingested At",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "lookup._source_uuid": {
      "name_long": " Source Uuid",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "net.net_uuid": {
      "name_long": "Net Uuid",
      "units": null,
      "description_md": "",
      "data_type": "UUID"
    },
    "net.tow_uuid": {
      "name_long": "Tow Uuid",
      "units": null,
      "description_md": "",
      "data_type": "UUID"
    },
    "net.side": {
      "name_long": "Side",
      "units": null,
      "description_md": "Net location side",
      "data_type": "VARCHAR"
    },
    "net.standard_haul_factor": {
      "name_long": "Standard Haul Factor",
      "units": "dimensionless",
      "description_md": "Standard Haul Factor (SHF) used to adjust for variations in water volume filtered and tow depth, standardizing abundance to 10 m_ area integrated over the tow depth",
      "data_type": "DOUBLE"
    },
    "net.volume_sampled": {
      "name_long": "Volume Sampled",
      "units": "m3",
      "description_md": "Volume of water sampled by the net (m^3)",
      "data_type": "DOUBLE"
    },
    "net.prop_sorted": {
      "name_long": "Prop Sorted",
      "units": "proportion",
      "description_md": "Proportion of the net sample that was sorted in the laboratory",
      "data_type": "DOUBLE"
    },
    "net.smallplankton": {
      "name_long": "Smallplankton",
      "units": "mL",
      "description_md": "Small plankton (ml)",
      "data_type": "DOUBLE"
    },
    "net.totalplankton": {
      "name_long": "Totalplankton",
      "units": "mL",
      "description_md": "Total plankton (ml)",
      "data_type": "DOUBLE"
    },
    "net._source_file": {
      "name_long": " Source File",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "net._source_row": {
      "name_long": " Source Row",
      "units": null,
      "description_md": "",
      "data_type": "INTEGER"
    },
    "net._ingested_at": {
      "name_long": " Ingested At",
      "units": null,
      "description_md": "",
      "data_type": "TIMESTAMP"
    },
    "net._source_uuid": {
      "name_long": " Source Uuid",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "segment.cruise_key": {
      "name_long": "Cruise Key",
      "description_md": "Foreign key to cruise table",
      "data_type": "VARCHAR"
    },
    "segment.site_uuid_beg": {
      "name_long": "Site UUID Begin",
      "description_md": "Site UUID at segment start",
      "data_type": "UUID"
    },
    "segment.site_uuid_end": {
      "name_long": "Site UUID End",
      "description_md": "Site UUID at segment end",
      "data_type": "UUID"
    },
    "segment.lon_beg": {
      "name_long": "Longitude Begin",
      "units": "decimal_degrees",
      "description_md": "Longitude at segment start",
      "data_type": "DOUBLE"
    },
    "segment.lat_beg": {
      "name_long": "Latitude Begin",
      "units": "decimal_degrees",
      "description_md": "Latitude at segment start",
      "data_type": "DOUBLE"
    },
    "segment.lon_end": {
      "name_long": "Longitude End",
      "units": "decimal_degrees",
      "description_md": "Longitude at segment end",
      "data_type": "DOUBLE"
    },
    "segment.lat_end": {
      "name_long": "Latitude End",
      "units": "decimal_degrees",
      "description_md": "Latitude at segment end",
      "data_type": "DOUBLE"
    },
    "segment.time_beg": {
      "name_long": "Time Begin",
      "description_md": "Timestamp at segment start",
      "data_type": "TIMESTAMP"
    },
    "segment.time_end": {
      "name_long": "Time End",
      "description_md": "Timestamp at segment end",
      "data_type": "TIMESTAMP"
    },
    "segment.time_hr": {
      "name_long": "Time Duration",
      "units": "hours",
      "description_md": "Duration of segment transit",
      "data_type": "DOUBLE"
    },
    "segment.length_km": {
      "name_long": "Length",
      "units": "km",
      "description_md": "Distance of segment",
      "data_type": "DOUBLE"
    },
    "segment.km_per_hr": {
      "name_long": "Speed",
      "units": "km/hr",
      "description_md": "Average speed during segment transit",
      "data_type": "DOUBLE"
    },
    "segment.geom": {
      "name_long": "Geometry",
      "description_md": "LineString geometry (WGS84 EPSG:4326) of segment",
      "data_type": "GEOMETRY"
    },
    "segment.segment_id": {
      "name_long": "Segment ID",
      "description_md": "Sequential integer primary key (sorted by time_beg)",
      "data_type": "INTEGER"
    },
    "ship.ship_key": {
      "name_long": "Ship Key",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "ship.ship_name": {
      "name_long": "Ship Name",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "ship.ship_nodc": {
      "name_long": "Ship Nodc",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "ship._source_file": {
      "name_long": " Source File",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "ship._source_row": {
      "name_long": " Source Row",
      "units": null,
      "description_md": "",
      "data_type": "INTEGER"
    },
    "ship._ingested_at": {
      "name_long": " Ingested At",
      "units": null,
      "description_md": "",
      "data_type": "TIMESTAMP"
    },
    "ship._source_uuid": {
      "name_long": " Source Uuid",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "site.site_uuid": {
      "name_long": "Site Uuid",
      "units": null,
      "description_md": "",
      "data_type": "UUID"
    },
    "site.cruise_uuid": {
      "name_long": "Cruise Uuid",
      "units": null,
      "description_md": "",
      "data_type": "UUID"
    },
    "site.order_occ": {
      "name_long": "Order Occ",
      "units": null,
      "description_md": "Order of station occupation within the cruise",
      "data_type": "SMALLINT"
    },
    "site.longitude": {
      "name_long": "Longitude",
      "units": "decimal_degrees",
      "description_md": "Decimal degrees of longitude, in geographic coordinates (WGS84)",
      "data_type": "DOUBLE"
    },
    "site.latitude": {
      "name_long": "Latitude",
      "units": "decimal_degrees",
      "description_md": "Decimal degrees of latitude, in geographic coordinates (WGS84)",
      "data_type": "DOUBLE"
    },
    "site.line": {
      "name_long": "Line",
      "units": null,
      "description_md": "Alongshore component of CalCOFI coordinate system for survey sites (https://proj.org/en/stable/operations/projections/calcofi.html)",
      "data_type": "DOUBLE"
    },
    "site.station": {
      "name_long": "Station",
      "units": null,
      "description_md": "Offshore component of CalCOFI coordinate system for survey sites (https://proj.org/en/stable/operations/projections/calcofi.html)",
      "data_type": "DOUBLE"
    },
    "site._source_file": {
      "name_long": " Source File",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "site._source_row": {
      "name_long": " Source Row",
      "units": null,
      "description_md": "",
      "data_type": "INTEGER"
    },
    "site._ingested_at": {
      "name_long": " Ingested At",
      "units": null,
      "description_md": "",
      "data_type": "TIMESTAMP"
    },
    "site._source_uuid": {
      "name_long": " Source Uuid",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "site.cruise_key": {
      "name_long": "Cruise Key",
      "description_md": "Denormalized natural key (propagated from cruise via cruise_uuid) for convenience queries",
      "data_type": "VARCHAR"
    },
    "site.geom": {
      "name_long": "Geometry",
      "description_md": "Point geometry (WGS84 EPSG:4326) created from longitude and latitude",
      "data_type": "GEOMETRY"
    },
    "site.grid_key": {
      "name_long": "Grid Key",
      "description_md": "Foreign key to grid table (assigned via spatial intersection)",
      "data_type": "VARCHAR"
    },
    "site.site_key": {
      "name_long": "Site Key",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "species.species_id": {
      "name_long": "Species Id",
      "units": null,
      "description_md": "CalCOFI species identifier",
      "data_type": "SMALLINT"
    },
    "species.scientific_name": {
      "name_long": "Scientific Name",
      "units": null,
      "description_md": "Scientific (Latin) name of the taxon",
      "data_type": "VARCHAR"
    },
    "species.itis_id": {
      "name_long": "ITIS ID",
      "description_md": "ITIS Taxonomic Serial Number (TSN) for this species; derived via local spp.duckdb lookup",
      "data_type": "INTEGER"
    },
    "species.worms_id": {
      "name_long": "WoRMS ID",
      "description_md": "WoRMS AphiaID (accepted) for this species; derived via local spp.duckdb lookup",
      "data_type": "INTEGER"
    },
    "species.common_name": {
      "name_long": "Common Name",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "species._source_file": {
      "name_long": " Source File",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "species._source_row": {
      "name_long": " Source Row",
      "units": null,
      "description_md": "",
      "data_type": "INTEGER"
    },
    "species._ingested_at": {
      "name_long": " Ingested At",
      "units": null,
      "description_md": "",
      "data_type": "TIMESTAMP"
    },
    "species._source_uuid": {
      "name_long": " Source Uuid",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "species.gbif_id": {
      "name_long": "GBIF ID",
      "description_md": "GBIF Backbone Taxonomy key for this species; derived via local spp.duckdb lookup",
      "data_type": "INTEGER"
    },
    "taxa_rank.taxonRank": {
      "name_long": "Taxon Rank",
      "description_md": "Taxonomic rank name (e.g. Kingdom; Species). Primary key.",
      "data_type": "VARCHAR"
    },
    "taxa_rank.rank_order": {
      "name_long": "Rank Order",
      "description_md": "Integer sort order from broadest (1=Kingdom) to most specific",
      "data_type": "SMALLINT"
    },
    "taxon.authority": {
      "name_long": "Authority",
      "description_md": "Taxonomic authority source: 'WoRMS' or 'ITIS'",
      "data_type": "VARCHAR"
    },
    "taxon.taxonID": {
      "name_long": "Taxon ID",
      "description_md": "Integer identifier within the authority (AphiaID for WoRMS; TSN for ITIS). Compound PK with authority.",
      "data_type": "INTEGER"
    },
    "taxon.acceptedNameUsageID": {
      "name_long": "Accepted Name Usage ID",
      "description_md": "ID of the leaf (species-level) taxon this hierarchy row was built from",
      "data_type": "INTEGER"
    },
    "taxon.parentNameUsageID": {
      "name_long": "Parent Name Usage ID",
      "description_md": "ID of the immediate parent taxon in the hierarchy",
      "data_type": "INTEGER"
    },
    "taxon.scientificName": {
      "name_long": "Scientific Name",
      "description_md": "Scientific name at this taxonomic rank",
      "data_type": "VARCHAR"
    },
    "taxon.taxonRank": {
      "name_long": "Taxon Rank",
      "description_md": "Taxonomic rank (e.g. Kingdom; Phylum; Class; Order; Family; Genus; Species). FK to taxa_rank.",
      "data_type": "VARCHAR"
    },
    "taxon.taxonomicStatus": {
      "name_long": "Taxonomic Status",
      "description_md": "Taxonomic status (accepted)",
      "data_type": "VARCHAR"
    },
    "taxon.scientificNameAuthorship": {
      "name_long": "Scientific Name Authorship",
      "description_md": "Authority string for the scientific name",
      "data_type": "VARCHAR"
    },
    "tow.tow_uuid": {
      "name_long": "Tow Uuid",
      "units": null,
      "description_md": "",
      "data_type": "UUID"
    },
    "tow.site_uuid": {
      "name_long": "Site Uuid",
      "units": null,
      "description_md": "",
      "data_type": "UUID"
    },
    "tow.tow_type_key": {
      "name_long": "Tow Type Key",
      "units": null,
      "description_md": "See tow_type.description",
      "data_type": "VARCHAR"
    },
    "tow.tow_number": {
      "name_long": "Tow Number",
      "units": null,
      "description_md": "",
      "data_type": "SMALLINT"
    },
    "tow.datetime_start_utc": {
      "name_long": "Datetime Start Utc",
      "units": null,
      "description_md": "Tow start date-time (UTC)",
      "data_type": "TIMESTAMP"
    },
    "tow._source_file": {
      "name_long": " Source File",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "tow._source_row": {
      "name_long": " Source Row",
      "units": null,
      "description_md": "",
      "data_type": "INTEGER"
    },
    "tow._ingested_at": {
      "name_long": " Ingested At",
      "units": null,
      "description_md": "",
      "data_type": "TIMESTAMP"
    },
    "tow._source_uuid": {
      "name_long": " Source Uuid",
      "units": null,
      "description_md": "",
      "data_type": "VARCHAR"
    },
    "cruise_summary.cruise_key": {
      "name_long": "Cruise Key",
      "units": null,
      "description_md": "Natural key YYYY-MM-NODC (e.g. 1998-02-33JD).",
      "data_type": "VARCHAR"
    },
    "cruise_summary.year": {
      "name_long": "Year",
      "units": null,
      "description_md": "Cruise year extracted from date_ym.",
      "data_type": "INTEGER"
    },
    "cruise_summary.month": {
      "name_long": "Month",
      "units": null,
      "description_md": "Cruise month extracted from date_ym.",
      "data_type": "INTEGER"
    },
    "cruise_summary.ship_name": {
      "name_long": "Ship Name",
      "units": null,
      "description_md": "Ship name as resolved against NODC ship registry.",
      "data_type": "VARCHAR"
    },
    "cruise_summary.ship_nodc": {
      "name_long": "Ship NODC",
      "units": null,
      "description_md": "NODC ship code.",
      "data_type": "VARCHAR"
    },
    "cruise_summary.ichthyo": {
      "name_long": "Ichthyo Sites",
      "units": "count",
      "description_md": "Distinct sites sampled by SWFSC ichthyo on this cruise.",
      "data_type": "BIGINT"
    },
    "cruise_summary.bottle": {
      "name_long": "Bottle Sites",
      "units": "count",
      "description_md": "Distinct sites sampled by CalCOFI bottle casts on this cruise.",
      "data_type": "BIGINT"
    },
    "cruise_summary.ctd_cast": {
      "name_long": "CTD Sites",
      "units": "count",
      "description_md": "Distinct sites sampled by CTD casts on this cruise.",
      "data_type": "BIGINT"
    },
    "cruise_summary.dic": {
      "name_long": "DIC Sites",
      "units": "count",
      "description_md": "Distinct sites with NCEI DIC samples on this cruise.",
      "data_type": "BIGINT"
    },
    "_spatial.layer": {
      "name_long": "Layer",
      "units": null,
      "description_md": "Spatial layer slug from metadata/spatial_layers.csv (e.g. ca_county_boundaries).",
      "data_type": "VARCHAR"
    },
    "_spatial.feature_id": {
      "name_long": "Feature ID",
      "units": null,
      "description_md": "Stable feature identifier within the layer."
    },
    "_spatial.geom": {
      "name_long": "Geometry",
      "units": null,
      "description_md": "Feature geometry in WGS84 (EPSG:4326).",
      "data_type": "GEOMETRY"
    },
    "_spatial_attr.layer": {
      "name_long": "Layer",
      "units": null,
      "description_md": "Spatial layer slug matching _spatial.layer.",
      "data_type": "VARCHAR"
    },
    "_spatial_attr.feature_id": {
      "name_long": "Feature ID",
      "units": null,
      "description_md": "Feature identifier matching _spatial.feature_id."
    },
    "_spatial_attr.attr_name": {
      "name_long": "Attribute Name",
      "units": null,
      "description_md": "Source-attribute column name."
    },
    "_spatial_attr.attr_value": {
      "name_long": "Attribute Value",
      "units": null,
      "description_md": "Source-attribute value cast to text."
    },
    "casts.ship_key": {
      "data_type": "VARCHAR"
    },
    "casts.cruise_key": {
      "data_type": "VARCHAR"
    },
    "_spatial.id": {
      "data_type": "INTEGER"
    },
    "_spatial.name": {
      "data_type": "VARCHAR"
    },
    "_spatial_attr.id": {
      "data_type": "INTEGER"
    },
    "_spatial_attr.fld": {
      "data_type": "VARCHAR"
    },
    "_spatial_attr.val_dbl": {
      "data_type": "DOUBLE"
    },
    "_spatial_attr.val_int": {
      "data_type": "INTEGER"
    },
    "_spatial_attr.val_chr": {
      "data_type": "VARCHAR"
    },
    "_spatial_attr.val_date": {
      "data_type": "DATE"
    },
    "_spatial_attr.val_lgl": {
      "data_type": "BOOLEAN"
    }
  },
  "measurement_types": {
    "temperature": {
      "description": "Water temperature (QC'd)",
      "units": "degC",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "salinity": {
      "description": "Salinity - Practical Salinity Scale 1978 (QC'd)",
      "units": "PSS-78",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "oxygen_ml_l": {
      "description": "Dissolved oxygen (QC'd)",
      "units": "ml/L",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "sigma_theta": {
      "description": "Potential density (Sigma Theta)",
      "units": "kg/m3",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "oxygen_saturation": {
      "description": "Oxygen percent saturation",
      "units": "%",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "oxygen_umol_kg": {
      "description": "Dissolved oxygen (QC'd)",
      "units": "umol/kg",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "chlorophyll_a": {
      "description": "Chlorophyll-a measured fluorometrically",
      "units": "ug/L",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "phaeopigment": {
      "description": "Phaeopigment measured fluorometrically",
      "units": "ug/L",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "phosphate": {
      "description": "Phosphate concentration",
      "units": "umol/L",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "silicate": {
      "description": "Silicate concentration",
      "units": "umol/L",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "nitrite": {
      "description": "Nitrite concentration",
      "units": "umol/L",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "nitrate": {
      "description": "Nitrate concentration",
      "units": "umol/L",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "ammonia": {
      "description": "Ammonia concentration (QC'd)",
      "units": "umol/L",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "c14_rep1": {
      "description": "14C assimilation replicate 1",
      "units": "mgC/m3/hld",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "c14_rep2": {
      "description": "14C assimilation replicate 2",
      "units": "mgC/m3/hld",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "c14_dark": {
      "description": "14C assimilation dark/control bottle",
      "units": "mgC/m3/hld",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "c14_mean": {
      "description": "Mean 14C assimilation of replicates 1 and 2",
      "units": "mgC/m3/hld",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "light_pct": {
      "description": "Light intensity of incubation tubes",
      "units": "%",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "r_depth": {
      "description": "Reported depth from pressure (pre-QC)",
      "units": "m",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "r_temperature": {
      "description": "Reported potential temperature (pre-QC)",
      "units": "degC",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "r_salinity_sva": {
      "description": "Reported Specific Volume Anomaly (pre-QC); WARNING: different parameter/scale than salinity PSS-78",
      "units": "10^-8 m3/kg",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "r_dynamic_height": {
      "description": "Reported dynamic height (no QC'd counterpart)",
      "units": "dyn m",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "r_ammonium": {
      "description": "Reported ammonium concentration (pre-QC)",
      "units": "umol/L",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "r_oxygen_umol_kg": {
      "description": "Reported oxygen (pre-QC)",
      "units": "umol/kg",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "dic_rep1": {
      "description": "Dissolved inorganic carbon replicate 1",
      "units": "umol/kg",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "dic_rep2": {
      "description": "Dissolved inorganic carbon replicate 2",
      "units": "umol/kg",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "alkalinity_rep1": {
      "description": "Total alkalinity replicate 1",
      "units": "umol/kg",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "alkalinity_rep2": {
      "description": "Total alkalinity replicate 2",
      "units": "umol/kg",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "ph_rep1": {
      "description": "pH replicate 1",
      "units": "pH",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "ph_rep2": {
      "description": "pH replicate 2",
      "units": "pH",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "wave_direction": {
      "description": "Wave direction (abbreviated 360 degree azimuth)",
      "units": "degrees",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "wave_height": {
      "description": "Wave height",
      "units": "feet",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "wave_period": {
      "description": "Wave period",
      "units": "seconds",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "wind_direction": {
      "description": "Wind direction (abbreviated 360 degree azimuth)",
      "units": "degrees",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "wind_speed": {
      "description": "Wind speed",
      "units": "knots",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "barometric_pressure": {
      "description": "Barometric pressure",
      "units": "millibars",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "dry_air_temp": {
      "description": "Dry air temperature from sling psychrometer",
      "units": "degC",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "wet_air_temp": {
      "description": "Wet air temperature from sling psychrometer",
      "units": "degC",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "weather_code": {
      "description": "WMO weather code (WMO 4501)",
      "units": null,
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "cloud_type": {
      "description": "WMO cloud type code (WMO 0500)",
      "units": null,
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "cloud_amount": {
      "description": "Cloud amount in oktas (WMO 2700)",
      "units": "oktas",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "visibility": {
      "description": "WMO visibility code (WMO 4300)",
      "units": null,
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "secchi_depth": {
      "description": "Secchi disk depth",
      "units": "meters",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "water_color": {
      "description": "Water color on Forel-Ule scale",
      "units": "Forel-Ule",
      "is_canonical": true,
      "datasets": ["calcofi_bottle"]
    },
    "stage": {
      "description": "Egg or larva developmental stage",
      "units": null,
      "is_canonical": true,
      "datasets": ["swfsc_ichthyo"]
    },
    "size": {
      "description": "Larva size measurement",
      "units": "mm",
      "is_canonical": true,
      "datasets": ["swfsc_ichthyo"]
    },
    "tally": {
      "description": "Specimen count",
      "units": null,
      "is_canonical": true,
      "datasets": ["swfsc_ichthyo"]
    },
    "temperature_1": {
      "description": "Temperature sensor 1",
      "units": "degC",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "temperature_2": {
      "description": "Temperature sensor 2",
      "units": "degC",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "temperature_ave": {
      "description": "Average temperature",
      "units": "degC",
      "is_canonical": true,
      "datasets": ["calcofi_ctd-cast"]
    },
    "potential_temperature_1": {
      "description": "Potential temperature sensor 1",
      "units": "degC",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "potential_temperature_2": {
      "description": "Potential temperature sensor 2",
      "units": "degC",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "salinity_1": {
      "description": "Salinity sensor 1",
      "units": "PSU",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "salinity_1_corr": {
      "description": "Salinity sensor 1 cruise-corrected",
      "units": "PSU",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "salinity_2": {
      "description": "Salinity sensor 2",
      "units": "PSU",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "salinity_2_corr": {
      "description": "Salinity sensor 2 cruise-corrected",
      "units": "PSU",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "salinity_ave_corr": {
      "description": "Average salinity corrected",
      "units": "PSU",
      "is_canonical": true,
      "datasets": ["calcofi_ctd-cast"]
    },
    "salinity_btl": {
      "description": "Bottle salinity",
      "units": "PSU",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "oxygen_ml_l_1": {
      "description": "Dissolved oxygen sensor 1",
      "units": "ml/L",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "oxygen_ml_l_1_cruise_corr": {
      "description": "DO sensor 1 cruise-corrected",
      "units": "ml/L",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "oxygen_ml_l_1_sta_corr": {
      "description": "DO sensor 1 station-corrected",
      "units": "ml/L",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "oxygen_ml_l_2": {
      "description": "Dissolved oxygen sensor 2",
      "units": "ml/L",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "oxygen_ml_l_2_cruise_corr": {
      "description": "DO sensor 2 cruise-corrected",
      "units": "ml/L",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "oxygen_ml_l_2_sta_corr": {
      "description": "DO sensor 2 station-corrected",
      "units": "ml/L",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "oxygen_ml_l_ave_sta_corr": {
      "description": "DO average station-corrected",
      "units": "ml/L",
      "is_canonical": true,
      "datasets": ["calcofi_ctd-cast"]
    },
    "oxygen_umol_kg_1": {
      "description": "DO sensor 1",
      "units": "umol/kg",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "oxygen_umol_kg_1_cruise_corr": {
      "description": "DO sensor 1 cruise-corrected",
      "units": "umol/kg",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "oxygen_umol_kg_1_sta_corr": {
      "description": "DO sensor 1 station-corrected",
      "units": "umol/kg",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "oxygen_umol_kg_2": {
      "description": "DO sensor 2",
      "units": "umol/kg",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "oxygen_umol_kg_2_cruise_corr": {
      "description": "DO sensor 2 cruise-corrected",
      "units": "umol/kg",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "oxygen_umol_kg_2_sta_corr": {
      "description": "DO sensor 2 station-corrected",
      "units": "umol/kg",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "oxygen_umol_kg_ave_sta_corr": {
      "description": "DO average station-corrected",
      "units": "umol/kg",
      "is_canonical": true,
      "datasets": ["calcofi_ctd-cast"]
    },
    "oxygen_saturation_1": {
      "description": "Oxygen saturation sensor 1",
      "units": "%",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "oxygen_saturation_2": {
      "description": "Oxygen saturation sensor 2",
      "units": "%",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "oxygen_btl_ml_l": {
      "description": "Bottle dissolved oxygen",
      "units": "ml/L",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "oxygen_btl_umol_kg": {
      "description": "Bottle dissolved oxygen",
      "units": "umol/kg",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "fluorescence_v": {
      "description": "Fluorescence voltage",
      "units": "V",
      "is_canonical": true,
      "datasets": ["calcofi_ctd-cast"]
    },
    "est_chlorophyll_a_cruise_corr": {
      "description": "Est. chlorophyll-a cruise-corrected",
      "units": "ug/L",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "est_chlorophyll_a_sta_corr": {
      "description": "Est. chlorophyll-a station-corrected",
      "units": "ug/L",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "isus_v": {
      "description": "ISUS nitrate voltage",
      "units": "V",
      "is_canonical": true,
      "datasets": ["calcofi_ctd-cast"]
    },
    "est_nitrate_cruise_corr": {
      "description": "Est. nitrate cruise-corrected",
      "units": "umol/L",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "est_nitrate_sta_corr": {
      "description": "Est. nitrate station-corrected",
      "units": "umol/L",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "sigma_theta_1": {
      "description": "Potential density sensor 1",
      "units": "kg/m3",
      "is_canonical": true,
      "datasets": ["calcofi_ctd-cast"]
    },
    "sigma_theta_2": {
      "description": "Potential density sensor 2",
      "units": "kg/m3",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "dynamic_height": {
      "description": "Dynamic height",
      "units": "dyn m",
      "is_canonical": true,
      "datasets": ["calcofi_ctd-cast"]
    },
    "specific_volume_anomaly": {
      "description": "Specific volume anomaly",
      "units": "10^-8 m3/kg",
      "is_canonical": true,
      "datasets": ["calcofi_ctd-cast"]
    },
    "par": {
      "description": "Photosynthetically active radiation",
      "units": "uE/m2/s",
      "is_canonical": true,
      "datasets": ["calcofi_ctd-cast"]
    },
    "spar": {
      "description": "Surface PAR",
      "units": "uE/m2/s",
      "is_canonical": true,
      "datasets": ["calcofi_ctd-cast"]
    },
    "beam_attenuation": {
      "description": "Beam attenuation coefficient",
      "units": "1/m",
      "is_canonical": true,
      "datasets": ["calcofi_ctd-cast"]
    },
    "transmissometer": {
      "description": "Light transmissometer",
      "units": "%",
      "is_canonical": true,
      "datasets": ["calcofi_ctd-cast"]
    },
    "ph": {
      "description": "pH",
      "units": "pH",
      "is_canonical": true,
      "datasets": ["calcofi_ctd-cast"]
    },
    "btl_depth": {
      "description": "Bottle trip depth",
      "units": "m",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "btl_temperature": {
      "description": "Bottle temperature",
      "units": "degC",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "btl_chlorophyll_a": {
      "description": "Bottle chlorophyll-a",
      "units": "ug/L",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "btl_phaeopigment": {
      "description": "Bottle phaeopigment",
      "units": "ug/L",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "btl_nitrate": {
      "description": "Bottle nitrate",
      "units": "umol/L",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "btl_nitrite": {
      "description": "Bottle nitrite",
      "units": "umol/L",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "btl_ammonium": {
      "description": "Bottle ammonium",
      "units": "umol/L",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "btl_phosphate": {
      "description": "Bottle phosphate",
      "units": "umol/L",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "btl_silicate": {
      "description": "Bottle silicate",
      "units": "umol/L",
      "is_canonical": false,
      "datasets": ["calcofi_ctd-cast"]
    },
    "pressure": {
      "description": "Pressure",
      "units": "dbar",
      "is_canonical": true,
      "datasets": ["calcofi_ctd-cast"]
    },
    "dic": {
      "description": "Dissolved inorganic carbon",
      "units": "umol/kg",
      "is_canonical": true,
      "datasets": ["calcofi_dic"]
    },
    "alkalinity": {
      "description": "Total alkalinity",
      "units": "umol/kg",
      "is_canonical": true,
      "datasets": ["calcofi_dic"]
    },
    "ctdtemp_its90": {
      "description": "CTD temperature (ITS-90 scale)",
      "units": "degC",
      "is_canonical": true,
      "datasets": ["calcofi_dic"]
    },
    "salinity_pss78": {
      "description": "Practical salinity (PSS-78)",
      "units": "PSS-78",
      "is_canonical": true,
      "datasets": ["calcofi_dic"]
    },
    "euphausiid_abundance": {
      "description": "Euphausiid (krill) abundance per net tow. PROVISIONAL: units and taxonomic scope unconfirmed (see questions Q01, Q02).",
      "units": "count/1000m3",
      "is_canonical": false,
      "datasets": ["cce-lter_euphausiids"]
    },
    "sardine_eggs": {
      "description": "Sardine egg count",
      "units": "count",
      "is_canonical": false,
      "datasets": ["swfsc_cufes"]
    },
    "anchovy_eggs": {
      "description": "Northern anchovy egg count",
      "units": "count",
      "is_canonical": false,
      "datasets": ["swfsc_cufes"]
    },
    "jack_mackerel_eggs": {
      "description": "Jack mackerel egg count",
      "units": "count",
      "is_canonical": false,
      "datasets": ["swfsc_cufes"]
    },
    "hake_eggs": {
      "description": "Pacific hake egg count",
      "units": "count",
      "is_canonical": false,
      "datasets": ["swfsc_cufes"]
    },
    "squid_eggs": {
      "description": "Squid egg count",
      "units": "count",
      "is_canonical": false,
      "datasets": ["swfsc_cufes"]
    },
    "other_fish_eggs": {
      "description": "Other fish egg count",
      "units": "count",
      "is_canonical": false,
      "datasets": ["swfsc_cufes"]
    },
    "total_phyllosoma": {
      "description": "Total phyllosoma larvae count",
      "units": "count",
      "is_canonical": false,
      "datasets": ["calcofi_phyllosoma"]
    },
    "phyllosoma_stage_1": {
      "description": "Phyllosoma stage 1 count",
      "units": "count",
      "is_canonical": false,
      "datasets": ["calcofi_phyllosoma"]
    },
    "phyllosoma_stage_2": {
      "description": "Phyllosoma stage 2 count",
      "units": "count",
      "is_canonical": false,
      "datasets": ["calcofi_phyllosoma"]
    },
    "phyllosoma_stage_3": {
      "description": "Phyllosoma stage 3 count",
      "units": "count",
      "is_canonical": false,
      "datasets": ["calcofi_phyllosoma"]
    },
    "phyllosoma_stage_4": {
      "description": "Phyllosoma stage 4 count",
      "units": "count",
      "is_canonical": false,
      "datasets": ["calcofi_phyllosoma"]
    },
    "phyllosoma_stage_5": {
      "description": "Phyllosoma stage 5 count",
      "units": "count",
      "is_canonical": false,
      "datasets": ["calcofi_phyllosoma"]
    },
    "phyllosoma_stage_6": {
      "description": "Phyllosoma stage 6 count",
      "units": "count",
      "is_canonical": false,
      "datasets": ["calcofi_phyllosoma"]
    },
    "phyllosoma_stage_7": {
      "description": "Phyllosoma stage 7 count",
      "units": "count",
      "is_canonical": false,
      "datasets": ["calcofi_phyllosoma"]
    },
    "phyllosoma_stage_8": {
      "description": "Phyllosoma stage 8 count",
      "units": "count",
      "is_canonical": false,
      "datasets": ["calcofi_phyllosoma"]
    },
    "phyllosoma_stage_9": {
      "description": "Phyllosoma stage 9 count",
      "units": "count",
      "is_canonical": false,
      "datasets": ["calcofi_phyllosoma"]
    },
    "phyllosoma_stage_10": {
      "description": "Phyllosoma stage 10 count",
      "units": "count",
      "is_canonical": false,
      "datasets": ["calcofi_phyllosoma"]
    },
    "phyllosoma_stage_11": {
      "description": "Phyllosoma stage 11 count",
      "units": "count",
      "is_canonical": false,
      "datasets": ["calcofi_phyllosoma"]
    },
    "phytoplankton_abundance": {
      "description": "Phytoplankton abundance by inverted-microscope count (cells/L)",
      "units": "cells/L",
      "is_canonical": false,
      "datasets": ["calcofi_phytoplankton"]
    },
    "zooplankton_abundance": {
      "description": "Zooplankton numerical abundance (volumetric density) per net tow, by higher taxon. Raw (uncorrected for net type).",
      "units": "count/1000m3",
      "is_canonical": true,
      "datasets": ["cce-lter_zoodb"]
    },
    "zooplankton_abundance_areal": {
      "description": "Zooplankton areal abundance (depth-integrated density) per net tow, by higher taxon. Raw (uncorrected).",
      "units": "count/m2",
      "is_canonical": false,
      "datasets": ["cce-lter_zoodb"]
    },
    "zooplankton_biomass_carbon": {
      "description": "Zooplankton carbon biomass per net tow, by higher taxon. Raw (uncorrected for net type).",
      "units": "mgC/m2",
      "is_canonical": true,
      "datasets": ["cce-lter_zoodb"]
    },
    "zooscan_abundance": {
      "description": "Zooplankton areal abundance from ZooScan optical imaging, by image-classified bioclass.",
      "units": "count/m2",
      "is_canonical": true,
      "datasets": ["cce-lter_zooscan"]
    },
    "zooscan_biomass_carbon": {
      "description": "Estimated zooplankton carbon biomass from ZooScan optical imaging, by bioclass.",
      "units": "mgC/m2",
      "is_canonical": true,
      "datasets": ["cce-lter_zooscan"]
    },
    "zooscan_feret_diameter": {
      "description": "Mean Feret diameter (organism size) from ZooScan optical imaging, by bioclass.",
      "units": "mm",
      "is_canonical": false,
      "datasets": ["cce-lter_zooscan"]
    },
    "zooscan_carbon_individual": {
      "description": "Mean individual carbon content from ZooScan optical imaging, by bioclass.",
      "units": "ugC",
      "is_canonical": false,
      "datasets": ["cce-lter_zooscan"]
    }
  },
  "contributions": {
    "bird_mammal_transect": {
      "total_rows": 60715,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "calcofi_bird_mammal_census",
          "rows": 60715,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_calcofi_bird_mammal_census.html"
        }
      ]
    },
    "bird_mammal_observation": {
      "total_rows": 82418,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "calcofi_bird_mammal_census",
          "rows": 82418,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_calcofi_bird_mammal_census.html"
        }
      ]
    },
    "bird_mammal_species": {
      "total_rows": 200,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "calcofi_bird_mammal_census",
          "rows": 200,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_calcofi_bird_mammal_census.html"
        }
      ]
    },
    "bird_mammal_behavior": {
      "total_rows": 4,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "calcofi_bird_mammal_census",
          "rows": 4,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_calcofi_bird_mammal_census.html"
        }
      ]
    },
    "casts": {
      "total_rows": 35644,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "calcofi_bottle",
          "rows": 35644,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_calcofi_bottle.html"
        }
      ]
    },
    "bottle": {
      "total_rows": 895371,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "calcofi_bottle",
          "rows": 895371,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_calcofi_bottle.html"
        }
      ]
    },
    "bottle_measurement": {
      "total_rows": 11135600,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "calcofi_bottle",
          "rows": 11135600,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_calcofi_bottle.html"
        }
      ]
    },
    "cast_condition": {
      "total_rows": 235513,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "calcofi_bottle",
          "rows": 235513,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_calcofi_bottle.html"
        }
      ]
    },
    "measurement_type": {
      "total_rows": 106,
      "over_attributed": true,
      "by_dataset": [
        {
          "provider_dataset": "calcofi_bottle",
          "rows": 106,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_calcofi_bottle.html"
        },
        {
          "provider_dataset": "calcofi_ctd-cast",
          "rows": 106,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_calcofi_ctd-cast.html"
        },
        {
          "provider_dataset": "calcofi_dic",
          "rows": 106,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_calcofi_dic.html"
        },
        {
          "provider_dataset": "calcofi_phyllosoma",
          "rows": 124,
          "pct": 117,
          "workflow": "https://calcofi.io/workflows/ingest_calcofi_phyllosoma.html"
        },
        {
          "provider_dataset": "calcofi_phytoplankton",
          "rows": 125,
          "pct": 117.9,
          "workflow": "https://calcofi.io/workflows/ingest_calcofi_phytoplankton.html"
        },
        {
          "provider_dataset": "cce-lter_euphausiids",
          "rows": 106,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_cce-lter_euphausiids.html"
        },
        {
          "provider_dataset": "cce-lter_zoodb",
          "rows": 132,
          "pct": 124.5,
          "workflow": "https://calcofi.io/workflows/ingest_cce-lter_zoodb.html"
        },
        {
          "provider_dataset": "cce-lter_zooscan",
          "rows": 132,
          "pct": 124.5,
          "workflow": "https://calcofi.io/workflows/ingest_cce-lter_zooscan.html"
        },
        {
          "provider_dataset": "swfsc_cufes",
          "rows": 112,
          "pct": 105.7,
          "workflow": "https://calcofi.io/workflows/ingest_swfsc_cufes.html"
        }
      ]
    },
    "ctd_cast": {
      "total_rows": 5550014,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "calcofi_ctd-cast",
          "rows": 5550014,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_calcofi_ctd-cast.html"
        }
      ]
    },
    "ctd_thin": {
      "total_rows": 5551551,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "calcofi_ctd-cast",
          "rows": 5551551,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_calcofi_ctd-cast.html"
        }
      ]
    },
    "ctd_measurement": {
      "total_rows": 216427608,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "calcofi_ctd-cast",
          "rows": 216427608,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_calcofi_ctd-cast.html"
        }
      ]
    },
    "ctd_summary": {
      "total_rows": 108390249,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "calcofi_ctd-cast",
          "rows": 108390249,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_calcofi_ctd-cast.html"
        }
      ]
    },
    "ctd_wide": {
      "total_rows": 6249576,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "calcofi_ctd-cast",
          "rows": 6249576,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_calcofi_ctd-cast.html"
        }
      ]
    },
    "dic_sample": {
      "total_rows": 4391,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "calcofi_dic",
          "rows": 4391,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_calcofi_dic.html"
        }
      ]
    },
    "dic_measurement": {
      "total_rows": 16391,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "calcofi_dic",
          "rows": 16391,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_calcofi_dic.html"
        }
      ]
    },
    "dic_summary": {
      "total_rows": 15786,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "calcofi_dic",
          "rows": 15786,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_calcofi_dic.html"
        }
      ]
    },
    "phyllosoma_tow": {
      "total_rows": 1859,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "calcofi_phyllosoma",
          "rows": 1859,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_calcofi_phyllosoma.html"
        }
      ]
    },
    "phyllosoma_measurement": {
      "total_rows": 22308,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "calcofi_phyllosoma",
          "rows": 22308,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_calcofi_phyllosoma.html"
        }
      ]
    },
    "phyto_sample": {
      "total_rows": 409,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "calcofi_phytoplankton",
          "rows": 409,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_calcofi_phytoplankton.html"
        }
      ]
    },
    "phyto_measurement": {
      "total_rows": 159804,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "calcofi_phytoplankton",
          "rows": 159804,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_calcofi_phytoplankton.html"
        }
      ]
    },
    "phyto_taxon": {
      "total_rows": 399,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "calcofi_phytoplankton",
          "rows": 399,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_calcofi_phytoplankton.html"
        }
      ]
    },
    "region": {
      "total_rows": 4,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "calcofi_phytoplankton",
          "rows": 4,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_calcofi_phytoplankton.html"
        }
      ]
    },
    "euphausiids_tow": {
      "total_rows": 10150,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "cce-lter_euphausiids",
          "rows": 10150,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_cce-lter_euphausiids.html"
        }
      ]
    },
    "euphausiids_measurement": {
      "total_rows": 10150,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "cce-lter_euphausiids",
          "rows": 10150,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_cce-lter_euphausiids.html"
        }
      ]
    },
    "euphausiids_summary": {
      "total_rows": 10145,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "cce-lter_euphausiids",
          "rows": 10145,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_cce-lter_euphausiids.html"
        }
      ]
    },
    "zoodb_sample": {
      "total_rows": 506,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "cce-lter_zoodb",
          "rows": 506,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_cce-lter_zoodb.html"
        }
      ]
    },
    "zoodb_measurement": {
      "total_rows": 30948,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "cce-lter_zoodb",
          "rows": 30948,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_cce-lter_zoodb.html"
        }
      ]
    },
    "zoodb_taxon": {
      "total_rows": 33,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "cce-lter_zoodb",
          "rows": 33,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_cce-lter_zoodb.html"
        }
      ]
    },
    "zooscan_sample": {
      "total_rows": 1483,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "cce-lter_zooscan",
          "rows": 1483,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_cce-lter_zooscan.html"
        }
      ]
    },
    "zooscan_measurement": {
      "total_rows": 126692,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "cce-lter_zooscan",
          "rows": 126692,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_cce-lter_zooscan.html"
        }
      ]
    },
    "zooscan_taxon": {
      "total_rows": 23,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "cce-lter_zooscan",
          "rows": 23,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_cce-lter_zooscan.html"
        }
      ]
    },
    "zooplankton_tow": {
      "total_rows": 99530,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "pic_zooplankton",
          "rows": 99530,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_pic_zooplankton.html"
        }
      ]
    },
    "cufes_sample": {
      "total_rows": 49572,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "swfsc_cufes",
          "rows": 49572,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_swfsc_cufes.html"
        }
      ]
    },
    "cufes_measurement": {
      "total_rows": 284097,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "swfsc_cufes",
          "rows": 284097,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_swfsc_cufes.html"
        }
      ]
    },
    "cruise": {
      "total_rows": 691,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "swfsc_ichthyo",
          "rows": 691,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_swfsc_ichthyo.html"
        }
      ]
    },
    "ship": {
      "total_rows": 48,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "swfsc_ichthyo",
          "rows": 48,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_swfsc_ichthyo.html"
        }
      ]
    },
    "site": {
      "total_rows": 61104,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "swfsc_ichthyo",
          "rows": 61104,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_swfsc_ichthyo.html"
        }
      ]
    },
    "tow": {
      "total_rows": 75506,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "swfsc_ichthyo",
          "rows": 75506,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_swfsc_ichthyo.html"
        }
      ]
    },
    "net": {
      "total_rows": 76512,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "swfsc_ichthyo",
          "rows": 76512,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_swfsc_ichthyo.html"
        }
      ]
    },
    "ichthyo": {
      "total_rows": 852228,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "swfsc_ichthyo",
          "rows": 852228,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_swfsc_ichthyo.html"
        }
      ]
    },
    "species": {
      "total_rows": 1167,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "swfsc_ichthyo",
          "rows": 1167,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_swfsc_ichthyo.html"
        }
      ]
    },
    "taxon": {
      "total_rows": 3385,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "swfsc_ichthyo",
          "rows": 3385,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_swfsc_ichthyo.html"
        }
      ]
    },
    "taxa_rank": {
      "total_rows": 41,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "swfsc_ichthyo",
          "rows": 41,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_swfsc_ichthyo.html"
        }
      ]
    },
    "lookup": {
      "total_rows": 26,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "swfsc_ichthyo",
          "rows": 26,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_swfsc_ichthyo.html"
        }
      ]
    },
    "grid": {
      "total_rows": 218,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "swfsc_ichthyo",
          "rows": 218,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_swfsc_ichthyo.html"
        }
      ]
    },
    "segment": {
      "total_rows": 60413,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "swfsc_ichthyo",
          "rows": 60413,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_swfsc_ichthyo.html"
        }
      ]
    },
    "invert": {
      "total_rows": 9223,
      "over_attributed": false,
      "by_dataset": [
        {
          "provider_dataset": "swfsc_ichthyo",
          "rows": 9223,
          "pct": 100,
          "workflow": "https://calcofi.io/workflows/ingest_swfsc_ichthyo.html"
        }
      ]
    }
  },
  "erd_legend": [
    {
      "provider_dataset": "calcofi_bird_mammal_census",
      "color": "#f0d2e8"
    },
    {
      "provider_dataset": "calcofi_bottle",
      "color": "#f5cad9"
    },
    {
      "provider_dataset": "calcofi_ctd-cast",
      "color": "#e0ccf0"
    },
    {
      "provider_dataset": "calcofi_dic",
      "color": "#ffd2bb"
    },
    {
      "provider_dataset": "calcofi_phyllosoma",
      "color": "#e0bbf0"
    },
    {
      "provider_dataset": "calcofi_phytoplankton",
      "color": "#b5e8b0"
    },
    {
      "provider_dataset": "cce-lter_euphausiids",
      "color": "#d2f0bb"
    },
    {
      "provider_dataset": "cce-lter_zoodb",
      "color": "#d9c2f0"
    },
    {
      "provider_dataset": "cce-lter_zooscan",
      "color": "#c2e8f0"
    },
    {
      "provider_dataset": "pic_zooplankton",
      "color": "#bbe0f0"
    },
    {
      "provider_dataset": "swfsc_cufes",
      "color": "#f0e8bb"
    },
    {
      "provider_dataset": "swfsc_ichthyo",
      "color": "#cdebc6"
    }
  ]
}
