<?xml version="1.0" encoding="UTF-8"?>
<eml:eml xmlns:eml="https://eml.ecoinformatics.org/eml-2.2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:stmml="http://www.xml-cml.org/schema/stmml-1.2" packageId="cce-lter_zoodb.v2026.10.21" system="calcofi.io" xsi:schemaLocation="https://eml.ecoinformatics.org/eml-2.2.0 https://eml.ecoinformatics.org/eml-2.2.0/eml.xsd">
  <dataset>
    <alternateIdentifier>https://calcofi.io/datasets/cce-lter_zoodb/</alternateIdentifier>
    <shortName>ZooDB (Holoplankton Community)</shortName>
    <title>ZooDB Holoplankton Community</title>
    <creator>
      <individualName>
        <givenName>Mark D.</givenName>
        <surName>Ohman</surName>
      </individualName>
      <organizationName>UCSD SIO</organizationName>
      <electronicMailAddress>mohman@ucsd.edu</electronicMailAddress>
    </creator>
    <creator>
      <individualName>
        <givenName>Moira</givenName>
        <surName>Decima</surName>
      </individualName>
      <organizationName>UCSD SIO</organizationName>
    </creator>
    <pubDate>2026-10-21</pubDate>
    <language>eng</language>
    <abstract>
      <para>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.</para>
    </abstract>
    <keywordSet>
      <keyword>EARTH SCIENCE &gt; BIOSPHERE &gt; ECOSYSTEMS &gt; AQUATIC ECOSYSTEMS &gt; PLANKTON &gt; ZOOPLANKTON</keyword>
      <keyword>EARTH SCIENCE &gt; BIOLOGICAL CLASSIFICATION &gt; ANIMALS/INVERTEBRATES &gt; ARTHROPODS &gt; CRUSTACEANS</keyword>
      <keyword>EARTH SCIENCE &gt; BIOLOGICAL CLASSIFICATION &gt; ANIMALS/INVERTEBRATES &gt; ARTHROPODS &gt; CRUSTACEANS &gt; COPEPODS</keyword>
      <keywordThesaurus>GCMD Science Keywords</keywordThesaurus>
    </keywordSet>
    <keywordSet>
      <keyword>Zooplankton Biomass and Diversity</keyword>
      <keyword>Zooplankton</keyword>
      <keyword>zooplankton_abundance</keyword>
      <keyword>count/1000m3</keyword>
      <keyword>zooplankton_abundance_areal</keyword>
      <keyword>count/m2</keyword>
      <keyword>zooplankton_biomass_carbon</keyword>
      <keyword>mgC/m2</keyword>
    </keywordSet>
    <intellectualRights>
      <para>This work is licensed under a <ulink url="https://oceaninformatics.ucsd.edu/zoodb/"><citetitle>Custom terms stated by the provider</citetitle></ulink>.</para>
    </intellectualRights>
    <distribution scope="document">
      <online>
        <url function="information">https://calcofi.io/datasets/cce-lter_zoodb/</url>
      </online>
    </distribution>
    <coverage>
      <geographicCoverage>
        <geographicDescription>30.8–37.6°N, 125.8–117.3°W</geographicDescription>
        <boundingCoordinates>
          <westBoundingCoordinate>-125.78</westBoundingCoordinate>
          <eastBoundingCoordinate>-117.3</eastBoundingCoordinate>
          <northBoundingCoordinate>37.62</northBoundingCoordinate>
          <southBoundingCoordinate>30.75</southBoundingCoordinate>
        </boundingCoordinates>
      </geographicCoverage>
      <temporalCoverage>
        <rangeOfDates>
          <beginDate>
            <calendarDate>1951</calendarDate>
          </beginDate>
          <endDate>
            <calendarDate>2015</calendarDate>
          </endDate>
        </rangeOfDates>
      </temporalCoverage>
      <taxonomicCoverage>
        <generalTaxonomicCoverage>Zooplankton</generalTaxonomicCoverage>
        <taxonomicClassification>
          <taxonRankName>family</taxonRankName>
          <taxonRankValue>Aetideidae</taxonRankValue>
          <commonName>COPEPODA CALANOIDA AETIDEIDAE</commonName>
          <taxonId provider="https://www.marinespecies.org">104075</taxonId>
        </taxonomicClassification>
        <taxonomicClassification>
          <taxonRankName>class</taxonRankName>
          <taxonRankValue>Appendicularia</taxonRankValue>
          <commonName>APPENDICULARIA</commonName>
          <taxonId provider="https://www.marinespecies.org">146421</taxonId>
        </taxonomicClassification>
        <taxonomicClassification>
          <taxonRankName>family</taxonRankName>
          <taxonRankValue>Atlantidae</taxonRankValue>
          <commonName>atlantas</commonName>
          <taxonId provider="https://www.marinespecies.org">22990</taxonId>
        </taxonomicClassification>
        <taxonomicClassification>
          <taxonRankName>family</taxonRankName>
          <taxonRankValue>Calanidae</taxonRankValue>
          <commonName>COPEPODA CALANOIDA CALANIDAE</commonName>
          <taxonId provider="https://www.marinespecies.org">104079</taxonId>
        </taxonomicClassification>
        <taxonomicClassification>
          <taxonRankName>order</taxonRankName>
          <taxonRankValue>Calanoida</taxonRankValue>
          <commonName>COPEPODA OTHER CALANOIDS</commonName>
          <taxonId provider="https://www.marinespecies.org">1100</taxonId>
        </taxonomicClassification>
        <taxonomicClassification>
          <taxonRankName>family</taxonRankName>
          <taxonRankValue>Candaciidae</taxonRankValue>
          <commonName>COPEPODA CALANOIDA CANDACIIDAE</commonName>
          <taxonId provider="https://www.marinespecies.org">104080</taxonId>
        </taxonomicClassification>
        <taxonomicClassification>
          <taxonRankName>phylum</taxonRankName>
          <taxonRankValue>Chaetognatha</taxonRankValue>
          <commonName>arrow worms</commonName>
          <taxonId provider="https://www.marinespecies.org">2081</taxonId>
        </taxonomicClassification>
        <taxonomicClassification>
          <taxonRankName>class</taxonRankName>
          <taxonRankValue>Copepoda</taxonRankValue>
          <commonName>copepods</commonName>
          <taxonId provider="https://www.marinespecies.org">1080</taxonId>
        </taxonomicClassification>
        <taxonomicClassification>
          <taxonRankName>phylum</taxonRankName>
          <taxonRankValue>Ctenophora</taxonRankValue>
          <commonName>Comb jelly</commonName>
          <taxonId provider="https://www.marinespecies.org">1248</taxonId>
        </taxonomicClassification>
        <taxonomicClassification>
          <taxonRankName>order</taxonRankName>
          <taxonRankValue>Doliolida</taxonRankValue>
          <commonName>DOLIOLIDA</commonName>
          <taxonId provider="https://www.marinespecies.org">137212</taxonId>
        </taxonomicClassification>
        <taxonomicClassification>
          <taxonRankName>family</taxonRankName>
          <taxonRankValue>Eucalanidae</taxonRankValue>
          <commonName>COPEPODA CALANOIDA EUCALANIDAE</commonName>
          <taxonId provider="https://www.marinespecies.org">104085</taxonId>
        </taxonomicClassification>
        <taxonomicClassification>
          <taxonRankName>family</taxonRankName>
          <taxonRankValue>Euchaetidae</taxonRankValue>
          <commonName>COPEPODA CALANOIDA EUCHAETIDAE</commonName>
          <taxonId provider="https://www.marinespecies.org">104086</taxonId>
        </taxonomicClassification>
        <taxonomicClassification>
          <taxonRankName>suborder</taxonRankName>
          <taxonRankValue>Euthecosomata</taxonRankValue>
          <commonName>MOLLUSCA EUTHECOSOMATA</commonName>
          <taxonId provider="https://www.marinespecies.org">23020</taxonId>
        </taxonomicClassification>
        <taxonomicClassification>
          <taxonRankName>phylum</taxonRankName>
          <taxonRankValue>Foraminifera</taxonRankValue>
          <commonName>foraminiferans</commonName>
          <taxonId provider="https://www.marinespecies.org">1410</taxonId>
        </taxonomicClassification>
        <taxonomicClassification>
          <taxonRankName>family</taxonRankName>
          <taxonRankValue>Galatheidae</taxonRankValue>
          <commonName>squat lobsters</commonName>
          <taxonId provider="https://www.marinespecies.org">106733</taxonId>
        </taxonomicClassification>
        <taxonomicClassification>
          <taxonRankName>suborder</taxonRankName>
          <taxonRankValue>Gammaridea</taxonRankValue>
          <commonName>AMPHIPODA GAMMARIDEA</commonName>
          <taxonId provider="https://www.marinespecies.org">1207</taxonId>
        </taxonomicClassification>
        <taxonomicClassification>
          <taxonRankName>suborder</taxonRankName>
          <taxonRankValue>Gymnosomata</taxonRankValue>
          <commonName>naked pteropods</commonName>
          <taxonId provider="https://www.marinespecies.org">164</taxonId>
        </taxonomicClassification>
        <taxonomicClassification>
          <taxonRankName>family</taxonRankName>
          <taxonRankValue>Heterorhabdidae</taxonRankValue>
          <commonName>COPEPODA CALANOIDA HETERORHABDIDAE</commonName>
          <taxonId provider="https://www.marinespecies.org">104087</taxonId>
        </taxonomicClassification>
        <taxonomicClassification>
          <taxonRankName>class</taxonRankName>
          <taxonRankValue>Hydrozoa</taxonRankValue>
          <commonName>hydrozoans</commonName>
          <taxonId provider="https://www.marinespecies.org">1337</taxonId>
        </taxonomicClassification>
        <taxonomicClassification>
          <taxonRankName>suborder</taxonRankName>
          <taxonRankValue>Hyperiidea</taxonRankValue>
          <commonName>AMPHIPODA HYPERIIDEA</commonName>
          <taxonId provider="https://www.marinespecies.org">1205</taxonId>
        </taxonomicClassification>
        <taxonomicClassification>
          <taxonRankName>family</taxonRankName>
          <taxonRankValue>Lucicutiidae</taxonRankValue>
          <commonName>COPEPODA CALANOIDA LUCICUTIIDAE</commonName>
          <taxonId provider="https://www.marinespecies.org">104088</taxonId>
        </taxonomicClassification>
        <taxonomicClassification>
          <taxonRankName>family</taxonRankName>
          <taxonRankValue>Metridinidae</taxonRankValue>
          <commonName>COPEPODA CALANOIDA METRIDINIDAE</commonName>
          <taxonId provider="https://www.marinespecies.org">104092</taxonId>
        </taxonomicClassification>
        <taxonomicClassification>
          <taxonRankName>class</taxonRankName>
          <taxonRankValue>Ostracoda</taxonRankValue>
          <commonName>ostracods</commonName>
          <taxonId provider="https://www.marinespecies.org">1078</taxonId>
        </taxonomicClassification>
        <taxonomicClassification>
          <taxonRankName>family</taxonRankName>
          <taxonRankValue>Pasiphaeidae</taxonRankValue>
          <commonName>glass shrimps</commonName>
          <taxonId provider="https://www.marinespecies.org">106790</taxonId>
        </taxonomicClassification>
        <taxonomicClassification>
          <taxonRankName>family</taxonRankName>
          <taxonRankValue>Pontellidae</taxonRankValue>
          <commonName>COPEPODA CALANOIDA PONTELLIDAE</commonName>
          <taxonId provider="https://www.marinespecies.org">104097</taxonId>
        </taxonomicClassification>
        <taxonomicClassification>
          <taxonRankName>suborder</taxonRankName>
          <taxonRankValue>Pseudothecosomata</taxonRankValue>
          <commonName>MOLLUSCA PSEUDOTHECOSOMATA</commonName>
          <taxonId provider="https://www.marinespecies.org">23021</taxonId>
        </taxonomicClassification>
        <taxonomicClassification>
          <taxonRankName>order</taxonRankName>
          <taxonRankValue>Pyrosomatida</taxonRankValue>
          <commonName>PYROSOMA</commonName>
          <taxonId provider="https://www.marinespecies.org">137213</taxonId>
        </taxonomicClassification>
        <taxonomicClassification>
          <taxonRankName>phylum</taxonRankName>
          <taxonRankValue>Radiozoa</taxonRankValue>
          <commonName>radiolarians</commonName>
          <taxonId provider="https://www.marinespecies.org">582421</taxonId>
        </taxonomicClassification>
        <taxonomicClassification>
          <taxonRankName>order</taxonRankName>
          <taxonRankValue>Salpida</taxonRankValue>
          <commonName>Salp</commonName>
          <taxonId provider="https://www.marinespecies.org">137214</taxonId>
        </taxonomicClassification>
        <taxonomicClassification>
          <taxonRankName>family</taxonRankName>
          <taxonRankValue>Scolecitrichidae</taxonRankValue>
          <commonName>COPEPODA CALANOIDA SCOLECITRICHIDAE</commonName>
          <taxonId provider="https://www.marinespecies.org">104103</taxonId>
        </taxonomicClassification>
        <taxonomicClassification>
          <taxonRankName>superfamily</taxonRankName>
          <taxonRankValue>Sergestoidea</taxonRankValue>
          <commonName>DECAPODA SERGESTOIDEA</commonName>
          <taxonId provider="https://www.marinespecies.org">106684</taxonId>
        </taxonomicClassification>
        <taxonomicClassification>
          <taxonRankName>order</taxonRankName>
          <taxonRankValue>Siphonophorae</taxonRankValue>
          <commonName>Siphonophore</commonName>
          <taxonId provider="https://www.marinespecies.org">1371</taxonId>
        </taxonomicClassification>
        <taxonomicClassification>
          <taxonRankName>family</taxonRankName>
          <taxonRankValue>Tomopteridae</taxonRankValue>
          <commonName>POLYCHAETA TOMOPTERIDAE</commonName>
          <taxonId provider="https://www.marinespecies.org">958</taxonId>
        </taxonomicClassification>
      </taxonomicCoverage>
    </coverage>
    <maintenance>
      <description>
        <para>Irregular; ongoing</para>
      </description>
    </maintenance>
    <contact>
      <organizationName>California Current Ecosystem Long Term Ecological Research</organizationName>
      <electronicMailAddress>mohman@ucsd.edu</electronicMailAddress>
    </contact>
    <methods>
      <methodStep>
        <description>
          <para>QC flags present: No.</para>
        </description>
      </methodStep>
    </methods>
    <project>
      <title>ZooDB Holoplankton Community</title>
      <personnel>
        <individualName>
          <givenName>Mark D.</givenName>
          <surName>Ohman</surName>
        </individualName>
        <organizationName>UCSD SIO</organizationName>
        <electronicMailAddress>mohman@ucsd.edu</electronicMailAddress>
        <role>lead</role>
      </personnel>
      <personnel>
        <individualName>
          <givenName>Moira</givenName>
          <surName>Decima</surName>
        </individualName>
        <organizationName>UCSD SIO</organizationName>
        <role>lead</role>
      </personnel>
      <funding>
        <para>NSF</para>
      </funding>
    </project>
    <dataTable>
      <entityName>sample</entityName>
      <entityDescription>One row per physical sampling event at its native grain (site, tow, net, subsample, cast, bottle, water, filter, underway, transect, sighting, deployment, scan, region pool). An adjacency list: parent_sample_key points at the containing event and root_sample_key at the top of the chain, so counting distinct events at any level is a single GROUP BY.</entityDescription>
      <attributeList>
        <attribute>
          <attributeName>sample_key</attributeName>
          <attributeLabel>Sample Key</attributeLabel>
          <attributeDefinition>Globally unique event key, namespaced dataset_key:sample_type:id so the same integer id in two datasets — or at two event levels in one dataset — never collides.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Globally unique event key, namespaced dataset_key:sample_type:id so the same integer id in two datasets — or at two event levels in one dataset — never collides.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>sample_type</attributeName>
          <attributeLabel>Sample Type</attributeLabel>
          <attributeDefinition>Event grain: site, tow, net, subsample, cast, bottle, water (an eDNA water sample), filter (an eDNA water filter), underway, transect (a visual-survey effort segment), sighting, deployment (a sonobuoy), scan (one analysed hour of a recording) or region_pool.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Event grain: site, tow, net, subsample, cast, bottle, water (an eDNA water sample), filter (an eDNA water filter), underway, transect (a visual-survey effort segment), sighting, deployment (a sonobuoy), scan (one analysed hour of a recording) or region_pool.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>parent_sample_key</attributeName>
          <attributeLabel>Parent Sample Key</attributeLabel>
          <attributeDefinition>The containing event (net → tow → site; bottle → cast; sighting → transect; scan → deployment). NULL at the top of the chain. Flat adjacency list: attributes are not inherited.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>The containing event (net → tow → site; bottle → cast; sighting → transect; scan → deployment). NULL at the top of the chain. Flat adjacency list: attributes are not inherited.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>root_sample_key</attributeName>
          <attributeLabel>Root Sample Key</attributeLabel>
          <attributeDefinition>Top of this event's containment chain; equals sample_key for single-level datasets. Use count(DISTINCT root_sample_key) to count stations/casts irrespective of grain.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Top of this event's containment chain; equals sample_key for single-level datasets. Use count(DISTINCT root_sample_key) to count stations/casts irrespective of grain.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>dataset_key</attributeName>
          <attributeLabel>Dataset Key</attributeLabel>
          <attributeDefinition>Provenance stamp: provider_dataset.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Provenance stamp: provider_dataset.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>grid_key</attributeName>
          <attributeLabel>Grid Key</attributeLabel>
          <attributeDefinition>CalCOFI station grid cell. NULL where the dataset has no station assignment (region-pooled phytoplankton).</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>CalCOFI station grid cell. NULL where the dataset has no station assignment (region-pooled phytoplankton).</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>site_key</attributeName>
          <attributeLabel>Site Key</attributeLabel>
          <attributeDefinition>CalCOFI station natural key as the source records it (line/station, e.g. 090.0 060.0). Present on 13 of the 18 source event tables, so it is carried on the event dimension rather than lost to consolidation; grid_key is the derived grid cell, this is the source's own station id.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>CalCOFI station natural key as the source records it (line/station, e.g. 090.0 060.0). Present on 13 of the 18 source event tables, so it is carried on the event dimension rather than lost to consolidation; grid_key is the derived grid cell, this is the source's own station id.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>cruise_key</attributeName>
          <attributeLabel>Cruise Key</attributeLabel>
          <attributeDefinition>CalCOFI cruise natural key YYYY-MM-NODC.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>CalCOFI cruise natural key YYYY-MM-NODC.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>order_occ</attributeName>
          <attributeLabel>Order of Occupation</attributeLabel>
          <attributeDefinition>Order in which the station was occupied on the cruise. Source spelling varies (order_occ, ord_occ) and CTD stores it as text; normalised to an integer here.</attributeDefinition>
          <storageType>INTEGER</storageType>
          <measurementScale>
            <ratio>
              <unit>
                <standardUnit>dimensionless</standardUnit>
              </unit>
              <numericDomain>
                <numberType>integer</numberType>
              </numericDomain>
            </ratio>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>latitude</attributeName>
          <attributeLabel>Latitude</attributeLabel>
          <attributeDefinition>Event latitude (WGS84).</attributeDefinition>
          <storageType>DOUBLE</storageType>
          <measurementScale>
            <ratio>
              <unit>
                <standardUnit>degree</standardUnit>
              </unit>
              <numericDomain>
                <numberType>real</numberType>
              </numericDomain>
            </ratio>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>longitude</attributeName>
          <attributeLabel>Longitude</attributeLabel>
          <attributeDefinition>Event longitude (WGS84).</attributeDefinition>
          <storageType>DOUBLE</storageType>
          <measurementScale>
            <ratio>
              <unit>
                <standardUnit>degree</standardUnit>
              </unit>
              <numericDomain>
                <numberType>real</numberType>
              </numericDomain>
            </ratio>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>datetime</attributeName>
          <attributeLabel>Datetime</attributeLabel>
          <attributeDefinition>Event start time (UTC).</attributeDefinition>
          <storageType>TIMESTAMP</storageType>
          <measurementScale>
            <dateTime>
              <formatString>YYYY-MM-DDThh:mm:ss</formatString>
            </dateTime>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>depth_min_m</attributeName>
          <attributeLabel>Depth Min</attributeLabel>
          <attributeDefinition>Shallowest depth sampled by this event.</attributeDefinition>
          <storageType>DOUBLE</storageType>
          <measurementScale>
            <ratio>
              <unit>
                <standardUnit>meter</standardUnit>
              </unit>
              <numericDomain>
                <numberType>real</numberType>
              </numericDomain>
            </ratio>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>depth_max_m</attributeName>
          <attributeLabel>Depth Max</attributeLabel>
          <attributeDefinition>Deepest depth sampled by this event; for swfsc_ichthyo tows and nets the maximum possible depth of the net (SWFSC Net.NetDepth, nominal: over a shallower sea floor the net did not reach it).</attributeDefinition>
          <storageType>DOUBLE</storageType>
          <measurementScale>
            <ratio>
              <unit>
                <standardUnit>meter</standardUnit>
              </unit>
              <numericDomain>
                <numberType>real</numberType>
              </numericDomain>
            </ratio>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>tow_type</attributeName>
          <attributeLabel>Tow Type</attributeLabel>
          <attributeDefinition>Net gear code where the dataset records one (C1/CB/CV/PV oblique or vertical, MT manta); NULL for gears and datasets without one. Needed to compute gear-appropriate CPUE.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Net gear code where the dataset records one (C1/CB/CV/PV oblique or vertical, MT manta); NULL for gears and datasets without one. Needed to compute gear-appropriate CPUE.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>data_stage</attributeName>
          <attributeLabel>Data Stage</attributeLabel>
          <attributeDefinition>The source's own processing state for this event: final (post-cruise calibrations applied) or preliminary (not for publication — the source warns that oxygen, nitrate and chlorophyll may change significantly once calibrated). Populated by calcofi_ctd-cast; NULL where the dataset draws no such distinction, which is not a claim that the data are final.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>The source's own processing state for this event: final (post-cruise calibrations applied) or preliminary (not for publication — the source warns that oxygen, nitrate and chlorophyll may change significantly once calibrated). Populated by calcofi_ctd-cast; NULL where the dataset draws no such distinction, which is not a claim that the data are final.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>geom</attributeName>
          <attributeLabel>Geometry</attributeLabel>
          <attributeDefinition>Point geometry minted from longitude/latitude (OGC:CRS84).</attributeDefinition>
          <storageType>GEOMETRY('EPSG:4326')</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Point geometry minted from longitude/latitude (OGC:CRS84).</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>source_uuid</attributeName>
          <attributeLabel>Source Uuid</attributeLabel>
          <attributeDefinition>Source Uuid</attributeDefinition>
          <storageType>UUID</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Source Uuid</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>hex7</attributeName>
          <attributeLabel>H3 Cell (res 7)</attributeLabel>
          <attributeDefinition>One UBIGINT H3 cell at resolution 7: the parent of the resolution-10 cell of this event's own latitude / longitude (not the resolution-7 cell the position falls in), defined exactly as obs_bio.hex7 / obs_env.hex7; NULL without a finite position. Lets a per-sample value in sample_measurement be drawn in hexagons. An observation carries its own position, so a CTD scan can sit in another cell than its cast.</attributeDefinition>
          <storageType>UBIGINT</storageType>
          <measurementScale>
            <ratio>
              <unit>
                <standardUnit>dimensionless</standardUnit>
              </unit>
              <numericDomain>
                <numberType>whole</numberType>
              </numericDomain>
            </ratio>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>seafloor_depth_m</attributeName>
          <attributeDefinition>seafloor_depth_m</attributeDefinition>
          <storageType>DOUBLE</storageType>
          <measurementScale>
            <ratio>
              <unit>
                <standardUnit>dimensionless</standardUnit>
              </unit>
              <numericDomain>
                <numberType>real</numberType>
              </numericDomain>
            </ratio>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>station_uuid</attributeName>
          <attributeDefinition>station_uuid</attributeDefinition>
          <storageType>UUID</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>station_uuid</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>station_uuid_method</attributeName>
          <attributeDefinition>station_uuid_method</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>station_uuid_method</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
      </attributeList>
    </dataTable>
    <dataTable>
      <entityName>obs</entityName>
      <entityDescription>The occurrence-headline long table: one scalar measurement per row, environmental (realm = 'env') and biological (realm = 'bio') together. Biological taxon is the global taxon_key; sub-occurrence detail (length/stage bins, behavior) lives in obs_attribute, and event-level effort in sample_measurement.</entityDescription>
      <physical>
        <objectName>data_0.parquet</objectName>
        <size unit="bytes">158393</size>
        <authentication method="SHA-256">aa02a816aeb7110dd96e9299250f8a9ba910cf4058b574e8dfe4ff54de8b7c2e</authentication>
        <dataFormat>
          <externallyDefinedFormat>
            <formatName>Apache Parquet</formatName>
          </externallyDefinedFormat>
        </dataFormat>
        <distribution>
          <online>
            <url function="download">https://storage.googleapis.com/calcofi-db/ducklake/tables/obs/dataset_key=cce-lter_zoodb/ec8222662276a4d489f21c97/data_0.parquet</url>
          </online>
        </distribution>
      </physical>
      <attributeList>
        <attribute>
          <attributeName>obs_id</attributeName>
          <attributeLabel>Observation ID</attributeLabel>
          <attributeDefinition>Surrogate key, renumbered globally when the release concatenates the per-dataset shards.</attributeDefinition>
          <storageType>BIGINT</storageType>
          <measurementScale>
            <ratio>
              <unit>
                <standardUnit>dimensionless</standardUnit>
              </unit>
              <numericDomain>
                <numberType>integer</numberType>
              </numericDomain>
            </ratio>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>realm</attributeName>
          <attributeLabel>Realm</attributeLabel>
          <attributeDefinition>env for physical/chemical measurements, bio for organism observations.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>env for physical/chemical measurements, bio for organism observations.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>dataset_key</attributeName>
          <attributeLabel>Dataset Key</attributeLabel>
          <attributeDefinition>Provenance stamp: provider_dataset.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Provenance stamp: provider_dataset.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>sample_key</attributeName>
          <attributeLabel>Sample Key</attributeLabel>
          <attributeDefinition>The sampling event this observation came from; joins sample.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>The sampling event this observation came from; joins sample.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>grid_key</attributeName>
          <attributeLabel>Grid Key</attributeLabel>
          <attributeDefinition>CalCOFI station grid cell, denormalized from sample so rollups need no join. NULL for region-pooled data.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>CalCOFI station grid cell, denormalized from sample so rollups need no join. NULL for region-pooled data.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>cruise_key</attributeName>
          <attributeLabel>Cruise Key</attributeLabel>
          <attributeDefinition>Cruise, denormalized from sample so rollups need no join.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Cruise, denormalized from sample so rollups need no join.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>latitude</attributeName>
          <attributeLabel>Latitude</attributeLabel>
          <attributeDefinition>Observation latitude (WGS84).</attributeDefinition>
          <storageType>DOUBLE</storageType>
          <measurementScale>
            <ratio>
              <unit>
                <standardUnit>degree</standardUnit>
              </unit>
              <numericDomain>
                <numberType>real</numberType>
              </numericDomain>
            </ratio>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>longitude</attributeName>
          <attributeLabel>Longitude</attributeLabel>
          <attributeDefinition>Observation longitude (WGS84).</attributeDefinition>
          <storageType>DOUBLE</storageType>
          <measurementScale>
            <ratio>
              <unit>
                <standardUnit>degree</standardUnit>
              </unit>
              <numericDomain>
                <numberType>real</numberType>
              </numericDomain>
            </ratio>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>datetime</attributeName>
          <attributeLabel>Datetime</attributeLabel>
          <attributeDefinition>Observation time (UTC). NULL for region-pooled data with no event time.</attributeDefinition>
          <storageType>TIMESTAMP</storageType>
          <measurementScale>
            <dateTime>
              <formatString>YYYY-MM-DDThh:mm:ss</formatString>
            </dateTime>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>depth_min_m</attributeName>
          <attributeLabel>Depth Min</attributeLabel>
          <attributeDefinition>Shallowest depth this observation represents.</attributeDefinition>
          <storageType>DOUBLE</storageType>
          <measurementScale>
            <ratio>
              <unit>
                <standardUnit>meter</standardUnit>
              </unit>
              <numericDomain>
                <numberType>real</numberType>
              </numericDomain>
            </ratio>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>depth_max_m</attributeName>
          <attributeLabel>Depth Max</attributeLabel>
          <attributeDefinition>Deepest depth this observation represents; equal to depth_min_m for point measurements (bottle, CTD scan).</attributeDefinition>
          <storageType>DOUBLE</storageType>
          <measurementScale>
            <ratio>
              <unit>
                <standardUnit>meter</standardUnit>
              </unit>
              <numericDomain>
                <numberType>real</numberType>
              </numericDomain>
            </ratio>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>taxon_key</attributeName>
          <attributeLabel>Taxon Key</attributeLabel>
          <attributeDefinition>Global taxon key, worms:&lt;AphiaID&gt; or itis:&lt;TSN&gt; for birds. NULL for env rows. Joins taxon.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Global taxon key, worms:&lt;AphiaID&gt; or itis:&lt;TSN&gt; for birds. NULL for env rows. Joins taxon.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>life_stage</attributeName>
          <attributeLabel>Life Stage</attributeLabel>
          <attributeDefinition>Life stage where the source resolves one (larva, adult, juvenile, egg, phyllosoma).</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Life stage where the source resolves one (larva, adult, juvenile, egg, phyllosoma).</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>measurement_type</attributeName>
          <attributeLabel>Measurement Type</attributeLabel>
          <attributeDefinition>Measured quantity; joins the measurement_type vocabulary.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Measured quantity; joins the measurement_type vocabulary.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>measurement_value</attributeName>
          <attributeLabel>Measurement Value</attributeLabel>
          <attributeDefinition>The measured value, in the units measurement_type declares.</attributeDefinition>
          <storageType>DOUBLE</storageType>
          <measurementScale>
            <ratio>
              <unit>
                <standardUnit>dimensionless</standardUnit>
              </unit>
              <numericDomain>
                <numberType>real</numberType>
              </numericDomain>
            </ratio>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>measurement_qual</attributeName>
          <attributeLabel>Measurement Qualifier</attributeLabel>
          <attributeDefinition>Source quality flag, verbatim.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Source quality flag, verbatim.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>measurement_prec</attributeName>
          <attributeLabel>Measurement Precision</attributeLabel>
          <attributeDefinition>Source-reported precision where available.</attributeDefinition>
          <storageType>DOUBLE</storageType>
          <measurementScale>
            <ratio>
              <unit>
                <standardUnit>dimensionless</standardUnit>
              </unit>
              <numericDomain>
                <numberType>real</numberType>
              </numericDomain>
            </ratio>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>hex_id</attributeName>
          <attributeLabel>Hex ID</attributeLabel>
          <attributeDefinition>H3 cell at resolution 10, stored as UBIGINT. Aggregate coarser at query time with h3_cell_to_parent(hex_id, res) — there is no per-resolution column ladder.</attributeDefinition>
          <storageType>UBIGINT</storageType>
          <measurementScale>
            <ratio>
              <unit>
                <standardUnit>dimensionless</standardUnit>
              </unit>
              <numericDomain>
                <numberType>whole</numberType>
              </numericDomain>
            </ratio>
          </measurementScale>
        </attribute>
      </attributeList>
    </dataTable>
    <dataTable>
      <entityName>taxon</entityName>
      <entityDescription>Taxonomic hierarchy for species via WoRMS and ITIS authorities (built from spp.duckdb via recursive CTEs)</entityDescription>
      <attributeList>
        <attribute>
          <attributeName>taxon_key</attributeName>
          <attributeLabel>Taxon Key</attributeLabel>
          <attributeDefinition>Global taxon key: lowercase authority prefix plus id, worms:127023 or itis:176754.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Global taxon key: lowercase authority prefix plus id, worms:127023 or itis:176754.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>worms_id</attributeName>
          <attributeLabel>WoRMS ID</attributeLabel>
          <attributeDefinition>WoRMS AphiaID.</attributeDefinition>
          <storageType>INTEGER</storageType>
          <measurementScale>
            <ratio>
              <unit>
                <standardUnit>dimensionless</standardUnit>
              </unit>
              <numericDomain>
                <numberType>integer</numberType>
              </numericDomain>
            </ratio>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>itis_id</attributeName>
          <attributeLabel>ITIS ID</attributeLabel>
          <attributeDefinition>ITIS Taxonomic Serial Number.</attributeDefinition>
          <storageType>INTEGER</storageType>
          <measurementScale>
            <ratio>
              <unit>
                <standardUnit>dimensionless</standardUnit>
              </unit>
              <numericDomain>
                <numberType>integer</numberType>
              </numericDomain>
            </ratio>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>gbif_id</attributeName>
          <attributeLabel>GBIF ID</attributeLabel>
          <attributeDefinition>GBIF backbone taxon key.</attributeDefinition>
          <storageType>INTEGER</storageType>
          <measurementScale>
            <ratio>
              <unit>
                <standardUnit>dimensionless</standardUnit>
              </unit>
              <numericDomain>
                <numberType>integer</numberType>
              </numericDomain>
            </ratio>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>ncbi_id</attributeName>
          <attributeLabel>NCBI ID</attributeLabel>
          <attributeDefinition>NCBI Taxonomy id.</attributeDefinition>
          <storageType>INTEGER</storageType>
          <measurementScale>
            <ratio>
              <unit>
                <standardUnit>dimensionless</standardUnit>
              </unit>
              <numericDomain>
                <numberType>integer</numberType>
              </numericDomain>
            </ratio>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>inat_id</attributeName>
          <attributeLabel>iNaturalist ID</attributeLabel>
          <attributeDefinition>iNaturalist taxon id.</attributeDefinition>
          <storageType>INTEGER</storageType>
          <measurementScale>
            <ratio>
              <unit>
                <standardUnit>dimensionless</standardUnit>
              </unit>
              <numericDomain>
                <numberType>integer</numberType>
              </numericDomain>
            </ratio>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>scientific_name</attributeName>
          <attributeLabel>Scientific Name</attributeLabel>
          <attributeDefinition>Accepted scientific name.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Accepted scientific name.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>common_name</attributeName>
          <attributeLabel>Common Name</attributeLabel>
          <attributeDefinition>Common name where one is recorded.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Common name where one is recorded.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>rank</attributeName>
          <attributeLabel>Rank</attributeLabel>
          <attributeDefinition>Taxonomic rank.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Taxonomic rank.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>rank_order</attributeName>
          <attributeLabel>Rank Order</attributeLabel>
          <attributeDefinition>Ordinal for sorting ranks from kingdom down.</attributeDefinition>
          <storageType>INTEGER</storageType>
          <measurementScale>
            <ratio>
              <unit>
                <standardUnit>dimensionless</standardUnit>
              </unit>
              <numericDomain>
                <numberType>integer</numberType>
              </numericDomain>
            </ratio>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>taxonomic_status</attributeName>
          <attributeLabel>Taxonomic Status</attributeLabel>
          <attributeDefinition>Status as fetched from the keying authority (accepted, unaccepted, superseded combination, ...). Read it with status_checked — before v2026.08.05 this column was the literal string "accepted" on every row, stamped rather than fetched.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Status as fetched from the keying authority (accepted, unaccepted, superseded combination, ...). Read it with status_checked — before v2026.08.05 this column was the literal string "accepted" on every row, stamped rather than fetched.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>status_checked</attributeName>
          <attributeLabel>Status Checked</attributeLabel>
          <attributeDefinition>Date taxonomic_status was last confirmed against the authority. A status with no check date is not a fact.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Date taxonomic_status was last confirmed against the authority. A status with no check date is not a fact.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>parent_taxon_key</attributeName>
          <attributeLabel>Parent Taxon Key</attributeLabel>
          <attributeDefinition>Lineage parent; walk this to expand a taxon to its descendants.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Lineage parent; walk this to expand a taxon to its descendants.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>kingdom</attributeName>
          <attributeLabel>Kingdom</attributeLabel>
          <attributeDefinition>Kingdom.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Kingdom.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>phylum</attributeName>
          <attributeLabel>Phylum</attributeLabel>
          <attributeDefinition>Phylum.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Phylum.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>class</attributeName>
          <attributeLabel>Class</attributeLabel>
          <attributeDefinition>Class.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Class.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>order_taxon</attributeName>
          <attributeLabel>Order</attributeLabel>
          <attributeDefinition>Order (named order_taxon because order is a SQL keyword).</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Order (named order_taxon because order is a SQL keyword).</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>family</attributeName>
          <attributeLabel>Family</attributeLabel>
          <attributeDefinition>Family.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Family.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>notes</attributeName>
          <attributeLabel>Notes</attributeLabel>
          <attributeDefinition>Append-only provenance log, one datestamped line per entry: how each id was resolved and any re-key onto an authority-accepted id (e.g. itis:174553 Puffinus griseus -&gt; itis:1255050 Ardenna grisea). The dataset's own original code and name stay in dataset_taxon.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Append-only provenance log, one datestamped line per entry: how each id was resolved and any re-key onto an authority-accepted id (e.g. itis:174553 Puffinus griseus -&gt; itis:1255050 Ardenna grisea). The dataset's own original code and name stay in dataset_taxon.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
      </attributeList>
    </dataTable>
    <dataTable>
      <entityName>dataset_taxon</entityName>
      <entityDescription>Crosswalk from each dataset's own taxon vocabulary to the global taxon_key. obs resolves its taxon by joining this on (dataset_key, ds_taxa_code), so a dataset can keep its local codes without leaking them into the shared model.</entityDescription>
      <attributeList>
        <attribute>
          <attributeName>ds_taxon_key</attributeName>
          <attributeLabel>Dataset Taxon Key</attributeLabel>
          <attributeDefinition>Key of this crosswalk row, &lt;dataset-or-known-list&gt;:&lt;local code&gt;.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Key of this crosswalk row, &lt;dataset-or-known-list&gt;:&lt;local code&gt;.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>dataset_key</attributeName>
          <attributeLabel>Dataset Key</attributeLabel>
          <attributeDefinition>The dataset whose vocabulary this row belongs to.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>The dataset whose vocabulary this row belongs to.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>taxon_key</attributeName>
          <attributeLabel>Taxon Key</attributeLabel>
          <attributeDefinition>The global taxon it resolves to; joins taxon.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>The global taxon it resolves to; joins taxon.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>ds_scientific_name</attributeName>
          <attributeLabel>Dataset Scientific Name</attributeLabel>
          <attributeDefinition>Scientific name as the source dataset spells it.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Scientific name as the source dataset spells it.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>ds_common_name</attributeName>
          <attributeLabel>Dataset Common Name</attributeLabel>
          <attributeDefinition>Common name as the source dataset spells it.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Common name as the source dataset spells it.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>ds_taxa_code</attributeName>
          <attributeLabel>Dataset Taxa Code</attributeLabel>
          <attributeDefinition>The dataset's own code, as stored on its measurement rows.</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>The dataset's own code, as stored on its measurement rows.</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>ds_source_json</attributeName>
          <attributeLabel>Ds Source Json</attributeLabel>
          <attributeDefinition>Ds Source Json</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Ds Source Json</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
      </attributeList>
    </dataTable>
    <dataTable>
      <entityName>measurement_type</entityName>
      <attributeList>
        <attribute>
          <attributeName>measurement_type</attributeName>
          <attributeLabel>Measurement Type</attributeLabel>
          <attributeDefinition>Measurement Type</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Measurement Type</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>description</attributeName>
          <attributeLabel>Description</attributeLabel>
          <attributeDefinition>Description</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Description</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>units</attributeName>
          <attributeLabel>Units</attributeLabel>
          <attributeDefinition>Units</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Units</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>valid_min</attributeName>
          <attributeLabel>Valid Min</attributeLabel>
          <attributeDefinition>Valid Min</attributeDefinition>
          <storageType>DOUBLE</storageType>
          <measurementScale>
            <ratio>
              <unit>
                <standardUnit>dimensionless</standardUnit>
              </unit>
              <numericDomain>
                <numberType>real</numberType>
              </numericDomain>
            </ratio>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>valid_max</attributeName>
          <attributeLabel>Valid Max</attributeLabel>
          <attributeDefinition>Valid Max</attributeDefinition>
          <storageType>DOUBLE</storageType>
          <measurementScale>
            <ratio>
              <unit>
                <standardUnit>dimensionless</standardUnit>
              </unit>
              <numericDomain>
                <numberType>real</numberType>
              </numericDomain>
            </ratio>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>valid_depth_min_m</attributeName>
          <attributeLabel>Valid Depth Min M</attributeLabel>
          <attributeDefinition>Valid Depth Min M</attributeDefinition>
          <storageType>DOUBLE</storageType>
          <measurementScale>
            <ratio>
              <unit>
                <standardUnit>dimensionless</standardUnit>
              </unit>
              <numericDomain>
                <numberType>real</numberType>
              </numericDomain>
            </ratio>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>valid_depth_max_m</attributeName>
          <attributeLabel>Valid Depth Max M</attributeLabel>
          <attributeDefinition>Valid Depth Max M</attributeDefinition>
          <storageType>DOUBLE</storageType>
          <measurementScale>
            <ratio>
              <unit>
                <standardUnit>dimensionless</standardUnit>
              </unit>
              <numericDomain>
                <numberType>real</numberType>
              </numericDomain>
            </ratio>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>derivation</attributeName>
          <attributeLabel>Derivation</attributeLabel>
          <attributeDefinition>Derivation</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Derivation</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>is_canonical</attributeName>
          <attributeLabel>Is Canonical</attributeLabel>
          <attributeDefinition>Is Canonical</attributeDefinition>
          <storageType>BOOLEAN</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Is Canonical</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>_source_column</attributeName>
          <attributeLabel> Source Column</attributeLabel>
          <attributeDefinition>Source Column</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Source Column</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>_source_table</attributeName>
          <attributeLabel> Source Table</attributeLabel>
          <attributeDefinition>Source Table</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Source Table</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>_source_datasets</attributeName>
          <attributeLabel> Source Datasets</attributeLabel>
          <attributeDefinition>Source Datasets</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Source Datasets</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>_qual_column</attributeName>
          <attributeLabel> Qual Column</attributeLabel>
          <attributeDefinition>Qual Column</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Qual Column</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>_prec_column</attributeName>
          <attributeLabel> Prec Column</attributeLabel>
          <attributeDefinition>Prec Column</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Prec Column</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>grain</attributeName>
          <attributeLabel>Grain</attributeLabel>
          <attributeDefinition>Grain</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Grain</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>denominator</attributeName>
          <attributeLabel>Denominator</attributeLabel>
          <attributeDefinition>Denominator</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Denominator</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>category</attributeName>
          <attributeLabel>Category</attributeLabel>
          <attributeDefinition>Category</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Category</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>variable</attributeName>
          <attributeLabel>Variable</attributeLabel>
          <attributeDefinition>Variable</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Variable</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>nerc_p01</attributeName>
          <attributeLabel>Nerc P01</attributeLabel>
          <attributeDefinition>Nerc P01</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Nerc P01</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>units_nerc_p06</attributeName>
          <attributeLabel>Units Nerc P06</attributeLabel>
          <attributeDefinition>Units Nerc P06</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Units Nerc P06</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>provider</attributeName>
          <attributeLabel>Provider</attributeLabel>
          <attributeDefinition>Provider</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Provider</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
        <attribute>
          <attributeName>dataset</attributeName>
          <attributeLabel>Dataset</attributeLabel>
          <attributeDefinition>Dataset</attributeDefinition>
          <storageType>VARCHAR</storageType>
          <measurementScale>
            <nominal>
              <nonNumericDomain>
                <textDomain>
                  <definition>Dataset</definition>
                </textDomain>
              </nonNumericDomain>
            </nominal>
          </measurementScale>
        </attribute>
      </attributeList>
    </dataTable>
  </dataset>
  <additionalMetadata>
    <metadata>
      <calcofi>
        <acknowledgement>Plankton sample analysis supported by NSF grants to M.D. Ohman and the CCE-LTER site, and by the SIO Pelagic Invertebrate Collection.</acknowledgement>
        <datasetKey>cce-lter_zoodb</datasetKey>
        <datasetPage>https://calcofi.io/datasets/cce-lter_zoodb/</datasetPage>
        <release>v2026.10.21</release>
        <releaseCitation>CalCOFI (2026). CalCOFI Integrated Database, release v2026.10.21 [Data set]. Scripps Institution of Oceanography, NOAA Fisheries, and California Department of Fish and Wildlife. https://calcofi.io/db-schema/?v=v2026.10.21</releaseCitation>
        <sourceAccessed>2026-10-21</sourceAccessed>
      </calcofi>
    </metadata>
  </additionalMetadata>
</eml:eml>
