<?xml version="1.0"?>
<cd:ProductClass xmlns:cd="http://www.stcorp.nl/coda/definition/2008/07" name="ESACCI_OZONE" last-modified="2016-09-19">
  <cd:Description>ESA Ozone CCI products</cd:Description>
  <cd:ProductType name="L2_LP">
    <cd:Description>CCI L2 O3 limb profile</cd:Description>
    <cd:ProductDefinition id="L2_LP_nc3" format="netcdf" version="3">
      <cd:Description>The format definition for this product is taken from the netcdf file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0, 12, filename()) == "ESACCI-OZONE"</cd:MatchExpression>
        <cd:MatchExpression>substr(13, 5, filename()) == "L2-LP"</cd:MatchExpression>
        <cd:MatchExpression>exists(/mole_concentration_of_ozone_in_air)</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
    <cd:ProductDefinition id="L2_LP_nc4" format="hdf5" version="4">
      <cd:Description>The format definition for this product is taken from the hdf file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0, 12, filename()) == "ESACCI-OZONE"</cd:MatchExpression>
        <cd:MatchExpression>substr(13, 5, filename()) == "L2-LP"</cd:MatchExpression>
        <cd:MatchExpression>exists(/mole_concentration_of_ozone_in_air)</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L2_NP">
    <cd:Description>CCI L2 O3 nadir profile</cd:Description>
    <cd:ProductDefinition id="L2_NP_nc3" format="netcdf" version="3">
      <cd:Description>The format definition for this product is taken from the netcdf file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0, 12, filename()) == "ESACCI-OZONE"</cd:MatchExpression>
        <cd:MatchExpression>substr(13, 6, filename()) == "L2P-NP"</cd:MatchExpression>
        <cd:MatchExpression>exists(/o3_nd)</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
    <cd:ProductDefinition id="L2_NP_nc4" format="hdf5" version="4">
      <cd:Description>The format definition for this product is taken from the hdf file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0, 12, filename()) == "ESACCI-OZONE"</cd:MatchExpression>
        <cd:MatchExpression>substr(13, 6, filename()) == "L2P-NP"</cd:MatchExpression>
        <cd:MatchExpression>exists(/o3_nd)</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L2_TC">
    <cd:Description>CCI L2 O3 total column</cd:Description>
    <cd:ProductDefinition id="L2_TC_nc3" format="netcdf" version="3">
      <cd:Description>The format definition for this product is taken from the netcdf file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0, 12, filename()) == "ESACCI-OZONE"</cd:MatchExpression>
        <cd:MatchExpression>substr(13, 6, filename()) == "L2P-TC"</cd:MatchExpression>
        <cd:MatchExpression>exists(/total_ozone_column)</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
    <cd:ProductDefinition id="L2_TC_nc4" format="hdf5" version="4">
      <cd:Description>The format definition for this product is taken from the hdf file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0, 12, filename()) == "ESACCI-OZONE"</cd:MatchExpression>
        <cd:MatchExpression>substr(13, 6, filename()) == "L2P-TC"</cd:MatchExpression>
        <cd:MatchExpression>exists(/total_ozone_column)</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L3_LP_MMZM">
    <cd:Description>CCI O3 merged monthly zonal mean limb profile on a 10 degree latitude grid</cd:Description>
    <cd:ProductDefinition id="L3_LP_MMZM_nc3" format="netcdf" version="3">
      <cd:Description>The format definition for this product is taken from the netcdf file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0, 12, filename()) == "ESACCI-OZONE"</cd:MatchExpression>
        <cd:MatchExpression>substr(13, 5, filename()) == "L3-LP"</cd:MatchExpression>
        <cd:MatchExpression>regex("MZM", filename())</cd:MatchExpression>
        <cd:MatchExpression>regex("MERGED", filename())</cd:MatchExpression>
        <cd:MatchExpression>exists(/merged_ozone_concentration)</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
    <cd:ProductDefinition id="L3_LP_MMZM_nc4" format="hdf5" version="4">
      <cd:Description>The format definition for this product is taken from the hdf file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0, 12, filename()) == "ESACCI-OZONE"</cd:MatchExpression>
        <cd:MatchExpression>substr(13, 5, filename()) == "L3-LP"</cd:MatchExpression>
        <cd:MatchExpression>regex("MZM", filename())</cd:MatchExpression>
        <cd:MatchExpression>regex("MERGED", filename())</cd:MatchExpression>
        <cd:MatchExpression>exists(/merged_ozone_concentration)</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L3_LP_MSMM">
    <cd:Description>CCI O3 merged semi-monthly zonal mean limb profile on a 10x20 degree grid</cd:Description>
    <cd:ProductDefinition id="L3_LP_MSMM_nc3" format="netcdf" version="3">
      <cd:Description>The format definition for this product is taken from the netcdf file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0, 12, filename()) == "ESACCI-OZONE"</cd:MatchExpression>
        <cd:MatchExpression>substr(13, 5, filename()) == "L3-LP"</cd:MatchExpression>
        <cd:MatchExpression>regex("SMM", filename())</cd:MatchExpression>
        <cd:MatchExpression>exists(/merged_ozone_concentration)</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
    <cd:ProductDefinition id="L3_LP_MSMM_nc4" format="hdf5" version="4">
      <cd:Description>The format definition for this product is taken from the hdf file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0, 12, filename()) == "ESACCI-OZONE"</cd:MatchExpression>
        <cd:MatchExpression>substr(13, 5, filename()) == "L3-LP"</cd:MatchExpression>
        <cd:MatchExpression>regex("SMM", filename())</cd:MatchExpression>
        <cd:MatchExpression>exists(/merged_ozone_concentration)</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L3_LP_MZM">
    <cd:Description>CCI O3 monthly zonal mean limb profile on a 10 degree latitude grid</cd:Description>
    <cd:ProductDefinition id="L3_LP_MZM_nc3" format="netcdf" version="3">
      <cd:Description>The format definition for this product is taken from the netcdf file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0, 12, filename()) == "ESACCI-OZONE"</cd:MatchExpression>
        <cd:MatchExpression>substr(13, 5, filename()) == "L3-LP"</cd:MatchExpression>
        <cd:MatchExpression>regex("MZM", filename())</cd:MatchExpression>
        <cd:MatchExpression>exists(/ozone_mole_concentation)</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
    <cd:ProductDefinition id="L3_LP_MZM_nc4" format="hdf5" version="4">
      <cd:Description>The format definition for this product is taken from the hdf file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0, 12, filename()) == "ESACCI-OZONE"</cd:MatchExpression>
        <cd:MatchExpression>substr(13, 5, filename()) == "L3-LP"</cd:MatchExpression>
        <cd:MatchExpression>regex("MZM", filename())</cd:MatchExpression>
        <cd:MatchExpression>exists(/ozone_mole_concentation)</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L3_NP">
    <cd:Description>CCI L3 O3 nadir profile products</cd:Description>
    <cd:ProductDefinition id="L3_NP_nc3" format="netcdf" version="3">
      <cd:Description>The format definition for this product is taken from the netcdf file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0, 12, filename()) == "ESACCI-OZONE"</cd:MatchExpression>
        <cd:MatchExpression>substr(13, 5, filename()) == "L3-NP"</cd:MatchExpression>
        <cd:MatchExpression>exists(/O3_ndens)</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
    <cd:ProductDefinition id="L3_NP_nc4" format="hdf5" version="4">
      <cd:Description>The format definition for this product is taken from the hdf file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0, 12, filename()) == "ESACCI-OZONE"</cd:MatchExpression>
        <cd:MatchExpression>substr(13, 5, filename()) == "L3-NP"</cd:MatchExpression>
        <cd:MatchExpression>exists(/O3_ndens)</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L3_TC">
    <cd:Description>CCI L3 O3 total column</cd:Description>
    <cd:ProductDefinition id="L3_TC_nc3" format="netcdf" version="3">
      <cd:Description>The format definition for this product is taken from the netcdf file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0, 12, filename()) == "ESACCI-OZONE"</cd:MatchExpression>
        <cd:MatchExpression>substr(13, 6, filename()) == "L3S-TC"</cd:MatchExpression>
        <cd:MatchExpression>exists(/atmosphere_mole_content_of_ozone)</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
    <cd:ProductDefinition id="L3_TC_nc4" format="hdf5" version="4">
      <cd:Description>The format definition for this product is taken from the hdf file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0, 12, filename()) == "ESACCI-OZONE"</cd:MatchExpression>
        <cd:MatchExpression>substr(13, 6, filename()) == "L3S-TC"</cd:MatchExpression>
        <cd:MatchExpression>exists(/atmosphere_mole_content_of_ozone)</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L3_LNTOC">
    <cd:Description>CCI L3 O3 limb nadir tropospheric columns</cd:Description>
    <cd:ProductDefinition id="L3_LNTOC_nc3" format="netcdf" version="3">
      <cd:Description>The format definition for this product is taken from the netcdf file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0, 12, filename()) == "ESACCI-OZONE"</cd:MatchExpression>
        <cd:MatchExpression>substr(13, 8, filename()) == "L3-LNTOC"</cd:MatchExpression>
        <cd:MatchExpression>exists(/tropospheric_ozone_column)</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
    <cd:ProductDefinition id="L3_LNTOC_nc4" format="hdf5" version="4">
      <cd:Description>The format definition for this product is taken from the hdf file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0, 12, filename()) == "ESACCI-OZONE"</cd:MatchExpression>
        <cd:MatchExpression>substr(13, 8, filename()) == "L3-LNTOC"</cd:MatchExpression>
        <cd:MatchExpression>exists(/tropospheric_ozone_column)</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L3_TTOC">
    <cd:Description>CCI L3 O3 tropical tropospheric ozone column</cd:Description>
    <cd:ProductDefinition id="L3_TTOC_nc3" format="netcdf" version="3">
      <cd:Description>The format definition for this product is taken from the netcdf file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0, 12, filename()) == "ESACCI-OZONE"</cd:MatchExpression>
        <cd:MatchExpression>substr(13, 8, filename()) == "L3C-TTOC"</cd:MatchExpression>
        <cd:MatchExpression>exists(/PRODUCT/tropospheric_ozone_column)</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
    <cd:ProductDefinition id="L3_TTOC_nc4" format="hdf5" version="4">
      <cd:Description>The format definition for this product is taken from the hdf file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0, 12, filename()) == "ESACCI-OZONE"</cd:MatchExpression>
        <cd:MatchExpression>substr(13, 8, filename()) == "L3C-TTOC"</cd:MatchExpression>
        <cd:MatchExpression>exists(/PRODUCT/tropospheric_ozone_column)</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L4_NP">
    <cd:Description>CCI L4 O3 nadir profile</cd:Description>
    <cd:ProductDefinition id="L4_NP_nc3" format="netcdf" version="3">
      <cd:Description>The format definition for this product is taken from the netcdf file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0, 12, filename()) == "ESACCI-OZONE"</cd:MatchExpression>
        <cd:MatchExpression>substr(13, 5, filename()) == "L4-NP"</cd:MatchExpression>
        <cd:MatchExpression>exists(/O3_dens)</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
    <cd:ProductDefinition id="L4_NP_nc4" format="hdf5" version="4">
      <cd:Description>The format definition for this product is taken from the hdf file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0, 12, filename()) == "ESACCI-OZONE"</cd:MatchExpression>
        <cd:MatchExpression>substr(13, 5, filename()) == "L4-NP"</cd:MatchExpression>
        <cd:MatchExpression>exists(/O3_dens)</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
</cd:ProductClass>
