Difference between revisions of "Attribute Convention for Data Discovery 1-1"

From Earth Science Information Partners (ESIP)
(→‎Highly Recommended Variable Attributes: removed links in attribute names and augmented definitions where applicable.)
(Undo revision 47639 by Amilan (talk))
Line 460: Line 460:
 
=Highly Recommended Variable Attributes=
 
=Highly Recommended Variable Attributes=
 
<table width="95%" border="1" cellpadding="2" cellspacing="2">
 
<table width="95%" border="1" cellpadding="2" cellspacing="2">
            <tr>
+
    <tr>
                <th valign="top" width="200px">Attribute</th>
+
      <th valign="top">Attribute</th>
                <th valign="top">Description</th>
+
      <th valign="top">Description</th>
            </tr>
+
      <th valign="top">THREDDS</th>
            <tr>
+
      <th valign="top">ISO 19115-2</th>
                <td valign="top">long_name</td>
+
    </tr>  
                <td valign="top">A long descriptive name for the variable (not necessarily from a controlled vocabulary). <font color="green">If a "standard_name" attribute is not given (and a "standard_name_vocabulary" is given), the "long_name" attribute value will be used by THREDDS as the variable's name in the variable mapping. The "long_name" attribute is recommended by the "NetCDF Users Guide", the COARDS convention, and the CF convention.</font></td>
+
    <tr>
            </tr>
+
      <td valign="top">[http://www.unidata.ucar.edu/software/netcdf-java/formats/DataDiscoveryAttConvention.html#long_name_Attribute long_name]</td>
            <tr>
+
      <td valign="top">A long descriptive name for the variable (not necessarily from a controlled vocabulary).</td>
                <td valign="top">standard_name</td>
+
      <td valign="top">metadata/variables/variable@vocabulary_name</td>
                <td>A long descriptive name for the variable taken from a controlled vocabulary of variable names.<font color="green">We recommend using the CF convention and the variable names from the CF standard name table. Use of this attribute is highly recommended and its value will be used by THREDDS as the variable's name in the variable mapping. (For THREDDS use, this attribute takes precedence over the "long_name" attribute.) This attribute is recommended by the CF convention.</font></td>
+
      <td rowspan="2" valign="top">At present the ISO 19115-2 Standard supports only one name for a variable. Standard names can be provided as keywords with the appropriate thesaurus.</td>
            </tr>
+
    </tr>
            <tr>
+
    <tr>
                <td valign="top">units</td>
+
      <td valign="top">[http://www.unidata.ucar.edu/software/netcdf-java/formats/DataDiscoveryAttConvention.html#standard_name_Attribute standard_name]<br></td>
                <td valign="top">The units of the variables data values. This attributes value should be a valid [[http://www.unidata.ucar.edu/software/udunits/ | udunits]] string. <font color="green"> Its value will be used by THREDDS as the variable's units in the variable mapping. The "units" attribute is recommended by the "NetCDF Users Guide", the COARDS convention, and the CF convention.</font></td>
+
      <td valign="top">A long descriptive name for the variable taken from a controlled vocabulary of variable names.</td>
            </tr>
+
      <td valign="top">metadata/variables/variable@vocabulary_name</td>
            <tr>
+
    </tr>
                <td valign="top">coverage_content_type</td>
+
    <tr>
                <td valign="top">An ISO 19115-1 code to indicate the source of the data <font color="green">(image, thematicClassification, physicalMeasurement, auxiliaryInformation, qualityInformation, referenceInformation, modelResult, or coordinate)</font>.</td>
+
      <td valign="top">[http://www.unidata.ucar.edu/software/netcdf-java/formats/DataDiscoveryAttConvention.html#units_Attribute units]</td>
            </tr>
+
      <td valign="top">The units of the variables data values. This attributes value should be a valid udunits string.</td>
        </table>
+
      <td valign="top">metadata/variables/variable@units</td>
 +
      <td valign="top">/gmi:MI_Metadata/gmd:contentInfo/gmi:MI_CoverageDescription/gmd:dimension/gmd:MD_Band/gmd:units</td>
 +
    </tr>
 +
    <tr>
 +
      <td valign="top">coverage_content_type</td>
 +
      <td valign="top">An ISO 19115-1 code to indicate the source of the data.</td>
 +
      <td valign="top"></td>
 +
      <td valign="top">The valid values in the MD_CoverageContentTypeCode list are image, thematicClassification, physicalMeasurement, auxiliaryInformation, qualityInformation, referenceInformation, modelResult, coordinate</td>
 +
    </tr>
 +
</table>
  
 
=Conformance Test=
 
=Conformance Test=

Revision as of 11:33, September 17, 2014

Version and Status

This version is designated as Version 1.1.

This page always has the current version of the Attribute Convention for Data Discovery (ACDD). As it is updated, the version number at the top of the page will be updated.

See the [category page] for information on the history of this convention.

Development

Any development version of the ACDD definitions is maintained at Attribute_Convention_for_Data_Discovery_(ACDD)_Working.


The netCDF Group at Unidata has recommended netCDF attributes for data discovery. Many of these attributes correspond to general discovery metadata content, so they are available in many metadata standards. This page includes the Unidata crosswalk to THREDDS and adds the crosswalk to ISO 19115-2. Note that the attribute names link to the Unidata definitions. Many of these elements are included in the ISO 19115 Core specification. They are indicated in this Table by an M, O, or C in parentheses. An “M” indicates that the element is mandatory. An “O” indicates that the element is optional. A “C” indicates that the element is mandatory under certain conditions.

A Conformance Test is available for this convention.

Metadata Link

The netCDF metadata model is focused on providing "use metadata" for the data included in the file (or granule). Other metadata dialects (i.e. ISO 19115) can provide information about collections and more details about the dataset. In order to make users aware of that additional metadata we recommend adding a global attribute named "Metadata_Link" to the netCDF file. The value of this attribute is a URL that gives the location of the more complete metadata. This element is not included in the current version of the NetCDF Attribute Convention for Dataset Discovery.

Highly Recommended

Attribute Description THREDDS ISO 19115-2 OGC CSW Rubric Category
title
A short description of the dataset.
dataset@name
/gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:title/gco:CharacterString (M)
Title Text Search
summary
A paragraph describing the dataset.
metadata/documentation[@type="summary"]
/gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:abstract/gco:CharacterString (M)
Abstract Text Search
keywords
A comma separated list of key words and phrases.
metadata/keyword
/gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:descriptiveKeywords/gmd:MD_Keywords/gmd:keyword/gco:CharacterString
Subject Text Search

Recommended

Attribute Description THREDDS ISO 19115-2 OGC CSW Rubric Category
id
The

combination of the "naming authority" and the "id" should be a globally unique identifier for the dataset.

dataset@id
/gmi:MI_Metadata/gmd:fileIdentifier/gco:CharacterString (O)
Identifier Identifier
naming_authority
keywords_vocabulary
If you are following a guideline for the words/phrases in your "keywords" attribute, put the name of that guideline here.
metadata/keyword@vocabulary /gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:descriptiveKeywords/gmd:MD_Keywords/gmd:thesaurusName/gmd:CI_Citation/gmd:title/gco:CharacterString
Text Search
cdm_data_type
The THREDDS data type appropriate for this dataset. metadata/dataType /gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:spatialRepresentationType/gmd:MD_SpatialRepresentationTypeCode
May need some extensions to this codelist. Current values: vector, grid, textTable, tin, stereoModel, video.
Other
history
Provides an audit trail for modifications to the original data. metadata/documentation[@type="history"] /gmi:MI_Metadata/gmd:dataQualityInfo/gmd:DQ_DataQuality/gmd:lineage/gmd:LI_Lineage/gmd:statement/gco:CharacterString (O) Text Search
comment
Miscellaneous information about the data. metadata/documentation
/gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:supplementalInformation
Text Search
date_created The date on which the data was created.
metadata/date[@type="created"] /gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:date/gmd:CI_Date/gmd:date/gco:Date (M)
/gmd:dateType/gmd:CI_DateTypeCode="creation"
Responsible Party
creator_name
The data creator's name, URL, and email. The "institution" attribute will be used if the "creator_name" attribute does not exist.
metadata/creator/name
/gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:citedResponsibleParty/gmd:CI_ResponsibleParty/gmd:individualName/gco:CharacterString
CI_RoleCode="originator" (O)
Responsible Party
creator_url
metadata/creator/contact@url
/gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:citedResponsibleParty/gmd:CI_ResponsibleParty/gmd:contactInfo/gmd:CI_Contact/gmd:onlineResource/gmd:CI_OnlineResource/gmd:linkage/gmd:URL
Responsible Party
creator_email
metadata/creator/contact@email /gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:citedResponsibleParty/gmd:CI_ResponsibleParty/gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:electronicMailAddress/gco:CharacterString Responsible Party
institution
metadata/creator/name /gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:citedResponsibleParty/gmd:CI_ResponsibleParty/gmd:organisationName/gco:CharacterString Responsible Party
project
The scientific project that produced the data.
metadata/project
/gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:descriptiveKeywords/gmd:MD_Keywords/gmd:keyword/gco:CharacterString
and/or
/gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:aggregationInfo/gmd:MD_AggregateInformation/gmd:aggregateDataSetName/gmd:CI_Citation/gmd:title/gco:CharacterString
DS_AssociationTypeCode="largerWorkCitation" and DS_InitiativeTypeCode="project"
and/or

/gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:descriptiveKeywords/gmd:MD_Keywords/gmd:keyword/gco:CharacterString with gmd:MD_KeywordTypeCode="project"

Responsible Party
processing_level A textual description of the processing (or quality control) level of the data.
metadata/documentation[@type="processing_level"]
acknowledgementA place to acknowledge various type of support for the project that produced this data.
metadata/documentation[@type="funding"] /gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:credit/gco:CharacterString Responsible Party
geospatial_bounds Describes geospatial extent using any of the geometric objects (2D or 3D) supported by the Well-Known Text (WKT) format. BoundingPolygon Extent
geospatial_lat_min
Describes a simple latitude/longitude bounding box. geospatial_lat_min specifies the southernmost latitude; geospatial_lat_max specifies the northernmost latitude; geospatial_lon_min specifies the westernmost longitude; geospatial_lon_max specifies the easternmost longitude of the bounding box.
The values of geospatial_lon_min and geospatial_lon_max reflect the actual longitude data values. Cases where geospatial_lon_min is greater than geospatial_lon_max indicate the bounding box extends from geospatial_lon_max, through the longitude range discontinuity meridian (either the antimeridian or Prime Meridian), to geospatial_lon_min.
For a more detailed geospatial coverage, see the suggested geospatial attributes.
metadata/geospatialCoverage/northsouth/start
/gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:southBoundLatitude/gco:Decimal
BoundingBox Extent
geospatial_lat_max metadata/geospatialCoverage/northsouth/size /gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:northBoundLatitude/gco:Decimal
BoundingBox Extent
geospatial_lon_min metadata/geospatialCoverage/eastwest/start /gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:westBoundLongitude/gco:Decimal
BoundingBox Extent
geospatial_lon_max metadata/geospatialCoverage/eastwest/size /gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:eastBoundLongitude/gco:Decimal
BoundingBox Extent
geospatial_vertical_min
Describes a simple vertical bounding box. For a more detailed geospatial coverage, see the suggested geospatial attributes. metadata/geospatialCoverage/updown/start /gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:verticalElement/gmd:EX_VerticalExtent/gmd:minimumValue/gco:Real Extent
geospatial_vertical_max metadata/geospatialCoverage/updown/size /gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:verticalElement/gmd:EX_VerticalExtent/gmd:maximumValue/gco:Real Extent
time_coverage_start Describes the temporal coverage of the data as a time range. metadata/timeCoverage/start /gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod/gml:beginPosition Extent
time_coverage_end metadata/timeCoverage/end /gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod/gml:endPosition Extent
time_coverage_duration metadata/timeCoverage/duration /gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod/gml:beginPosition provides an ISO8601 compliant description of the time period covered by the dataset. This standard supports descriptions of durations. Extent
time_coverage_resolution metadata/timeCoverage/resolution Extent
standard_name_vocabulary
The name of the controlled vocabulary from which variable standard names are taken.
metadata/variables@vocabulary /gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:descriptiveKeywords/gmd:MD_Keywords/gmd:thesaurusName/gmd:CI_Citation/gmd:title/gco:CharacterString
Text Search
license Describe the restrictions to data access and distribution. metadata/documentation[@type="rights"] /gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:resourceConstraints/gmd:MD_LegalConstraints/gmd:useLimitation/gco:CharacterString

Suggested

Attribute Description THREDDS ISO 19115-2 OGC CSW Rubric Category
contributor_name
The name and role of any individuals or institutions that contributed to the creation of this data.
metadata/contributor
/gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:citedResponsibleParty/gmd:CI_ResponsibleParty/gmd:individualName/gco:CharacterString
Responsible Party
contributor_role
metadata/contributor@role /gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:citedResponsibleParty/gmd:CI_ResponsibleParty/gmd:role/gmd:CI_RoleCode
="principalInvestigator" | "author"
Responsible Party
publisher_name
The data publisher's name, URL, and email. The publisher may be an individual or an institution. metadata/publisher/name
/gmi:MI_Metadata/gmd:distributionInfo/gmd:MD_Distribution/gmd:distributor/gmd:MD_Distributor/gmd:distributorContact/gmd:CI_ResponsibleParty/gmd:organisationName/gco:CharacterString
and/or
/gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:citedResponsibleParty/gmd:CI_ResponsibleParty/gmd:individualName/gco:CharacterString
CI_RoleCode="publisher"
and/or
/gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:descriptiveKeywords/gmd:MD_Keywords/gmd:keyword/gco:CharacterString with gmd:MD_KeywordTypeCode="dataCenter"
Responsible Party
publisher_url
metadata/publisher/contact@url
/gmi:MI_Metadata/gmd:distributionInfo/gmd:MD_Distribution/gmd:distributor/gmd:MD_Distributor/gmd:distributorContact/gmd:CI_ResponsibleParty/gmd:contactInfo/gmd:CI_Contact/gmd:onlineResource/gmd:CI_OnlineResource/gmd:linkage/gmd:URL
and/or
/gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:citedResponsibleParty/gmd:CI_ResponsibleParty/gmd:contactInfo/gmd:CI_Contact/gmd:onlineResource/gmd:CI_OnlineResource/gmd:linkage/gmd:URL
CI_RoleCode="publisher"
Responsible Party
publisher_email
metadata/publisher/contact@email /gmi:MI_Metadata/gmd:distributionInfo/gmd:MD_Distribution/gmd:distributor/gmd:MD_Distributor/gmd:distributorContact/gmd:CI_ResponsibleParty/gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:electronicMailAddress/gco:CharacterString
and/or
/gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:citedResponsibleParty/gmd:CI_ResponsibleParty/gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:electronicMailAddress/gco:CharacterString
CI_RoleCode="publisher"
Responsible Party
date_modified
The date on which this data was last modified.
metadata/date[@type="modified"] /gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:date/gmd:CI_Date/gmd:date/gco:Date
/gmd:dateType/gmd:CI_DateTypeCode="revision"
ModifiedResponsible Party
date_issued
The date on which this data was formally issued.
metadata/date[@type="issued"] /gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:date/gmd:CI_Date/gmd:date/gco:Date
/gmd:dateType/gmd:CI_DateTypeCode="publication"
Responsible Party
geospatial_lat_units
Further refinement of the geospatial bounding box can be provided by using these units and resolution attributes.
metadata/geospatialCoverage/northsouth/units /gmi:MI_Metadata/gmd:spatialRepresentationInfo/gmd:MD_Georectified/gmd:axisDimensionProperties/gmd:MD_Dimension/gmd:resolution/gco:Measure/@uom Extent
geospatial_lat_resolution metadata/geospatialCoverage/northsouth/resolution /gmi:MI_Metadata/gmd:spatialRepresentationInfo/gmd:MD_Georectified/gmd:axisDimensionProperties/gmd:MD_Dimension/gmd:resolution/gco:Measure Extent
geospatial_lon_units
metadata/geospatialCoverage/eastwest/units /gmi:MI_Metadata/gmd:spatialRepresentationInfo/gmd:MD_Georectified/gmd:axisDimensionProperties/gmd:MD_Dimension/gmd:resolution/gco:Measure/@uom Extent
geospatial_lon_resolution metadata/geospatialCoverage/eastwest/resolution /gmi:MI_Metadata/gmd:spatialRepresentationInfo/gmd:MD_Georectified/gmd:axisDimensionProperties/gmd:MD_Dimension/gmd:resolution/gco:Measure Extent
geospatial_vertical_units
metadata/geospatialCoverage/updown/units /gmi:MI_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:verticalElement/gmd:EX_VerticalExtent/gmd:verticalCRS Extent
geospatial_vertical_resolution
metadata/geospatialCoverage/updown/resolution
Extent
geospatial_vertical_positive
metadata/geospatialCoverage@zpositive
Extent

Highly Recommended Variable Attributes

Attribute Description THREDDS ISO 19115-2
long_name A long descriptive name for the variable (not necessarily from a controlled vocabulary). metadata/variables/variable@vocabulary_name At present the ISO 19115-2 Standard supports only one name for a variable. Standard names can be provided as keywords with the appropriate thesaurus.
standard_name
A long descriptive name for the variable taken from a controlled vocabulary of variable names. metadata/variables/variable@vocabulary_name
units The units of the variables data values. This attributes value should be a valid udunits string. metadata/variables/variable@units /gmi:MI_Metadata/gmd:contentInfo/gmi:MI_CoverageDescription/gmd:dimension/gmd:MD_Band/gmd:units
coverage_content_type An ISO 19115-1 code to indicate the source of the data. The valid values in the MD_CoverageContentTypeCode list are image, thematicClassification, physicalMeasurement, auxiliaryInformation, qualityInformation, referenceInformation, modelResult, coordinate

Conformance Test

A Conformance Test is available for this convention.

Examples

Attribute Names

This sample includes the attribute names as the values. It can be used to test transforms.

<?xml version='1.0' encoding='UTF-8'?>
<netcdf xmlns="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2">
  <!-- Identifier / Metadata Reference -->
  <attribute name="id" value="UnidataDataDiscoveryAttributes"/>
  <attribute name="naming_authority" value="naming_authority"/>
  <attribute name="Metadata_Conventions" value="Unidata Dataset Discovery v1.0"/>
  <attribute name="Metadata_Link" value="URL for full metadata record"/>
  <!-- Service Endpoints -->
  <attribute name="thredds_netcdfsubset_service" value="thredds_netcdfsubset_service" />
  <attribute name="thredds_opendap_service" value="thredds_opendap_service" />
  <attribute name="thredds_wms_service" value="thredds_wms_service"/>
  <attribute name="thredds_wcs_service" value="thredds_wcs_service"/>
  <!-- Text Search -->
  <attribute name="title" value="title"/>
  <attribute name="summary" value="summary"/>
  <attribute name="keywords" value="keywords"/>
  <attribute name="keywords_vocabulary" value="keyword_vocabulary"/>
  <attribute name="standard_name_vocabulary" value="standard_name_vocabulary"/>
  <attribute name="history" value="history"/>
  <attribute name="comment" value="comment"/>
  <!-- Extent Search -->
  <attribute name="geospatial_lat_min" value="-89.999 " type="float"/>
  <attribute name="geospatial_lat_max" value="89.999 " type="float"/>
  <attribute name="geospatial_lon_min" value="-99.999 " type="float"/>
  <attribute name="geospatial_lon_max" value="99.999 " type="float"/>
  <attribute name="geospatial_vertical_min" value="-99.99 " type="float"/>
  <attribute name="geospatial_vertical_max" value="99.99 " type="float"/>
  <attribute name="time_coverage_start" value="1888-08-08T08:08:08Z"/>
  <attribute name="time_coverage_end" value="1777-07-07T07:07:07Z"/>
  <!-- Other Extent Information -->
  <attribute name="geospatial_lat_units" value="geospatial_lat_units"/>
  <attribute name="geospatial_lat_resolution" value="8.888" type="float"/>
  <attribute name="geospatial_lon_units" value="geospatial_lon_units"/>
  <attribute name="geospatial_lon_resolution" value="9.999" type="float"/>
  <attribute name="geospatial_vertical_units" value="geospatial_vertical_units"/>
  <attribute name="geospatial_vertical_resolution" value="999.0" type="float"/>
  <attribute name="geospatial_vertical_positive" value="geospatial_vertical_positive"/>
  <attribute name="time_coverage_duration" value="P2Y2M2D"/>
  <attribute name="time_coverage_resolution" value="P1Y1M1D"/>
  <!-- Creator Search -->
  <attribute name="acknowledgment" value="acknowledgment"/>
  <attribute name="creator_email" value="creator_email"/>
  <attribute name="creator_name" value="creator_name"/>
  <attribute name="creator_url" value="creator_url"/>
  <attribute name="date_created" value="1666-06-06T06:06:06Z"/>
  <attribute name="date_modified" value="1999-09-09T09:09:09Z"/>
  <attribute name="date_issued" value="2111-01-01T01:01:01Z"/>
  <attribute name="institution" value="institution"/>
  <attribute name="project" value="project"/>
  <!-- Contributor Search -->
  <attribute name="contributor_name" value="contributor_name"/>
  <attribute name="contributor_role" value="contributor_role"/>
  <!-- Publisher Search -->
  <attribute name="publisher_name" value="publisher_name"/>
  <attribute name="publisher_url" value="publisher_url"/>
  <attribute name="publisher_email" value="publisher_email"/>
  <!-- Other Attributes -->
  <attribute name="processing_level" value="processing_level"/>
  <attribute name="license" value="license"/>
  <attribute name="cdm_data_type" value="cdm_data_type"/>
  <variable name="tv" type="float" shape="depdp">
    <attribute name="units" value="units"/>
    <attribute name="name" value="testVariable"/>
    <attribute name="long_name" value="Test Variable - long name"/>
    <attribute name="standard_name" value="test_variable_standard_name"/>
  </variable>
</netcdf>

XPaths

Sometimes an example with XPaths is useful. Note that this example includes service endpoints in the Service Endpoints section that are added by the ncISO capability in the THREDDS Data Server. These are not typically included in the netCDF file:

<netcdf xmlns="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2">
  <!-- Identifier / Metadata Reference -->
  <attribute name="id" value="netcdf/attribute/@name=id"/>
  <attribute name="naming_authority" value="netcdf/attribute/@name=naming_authority"/>
  <attribute name="Metadata_Conventions" value="netcdf/attribute/@name=Metadata_Conventions"/>
  <attribute name="Metadata_Link" value="netcdf/attribute/@name=Metadata_Link"/>
  <!-- Service Endpoints -->
  <attribute name="thredds_netcdfsubset_service" value="netcdf/attribute/@name=thredds_netcdfsubset_service" />
  <attribute name="thredds_opendap_service" value="netcdf/attribute/@name=thredds_opendap_service" />
  <attribute name="thredds_wms_service" value="netcdf/attribute/@name=thredds_wms_service"/>
  <attribute name="thredds_wcs_service" value="netcdf/attribute/@name=thredds_wcs_service"/>
  <!-- Text Search -->
  <attribute name="title" value="netcdf/attribute/@name=title"/>
  <attribute name="summary" value="netcdf/attribute/@name=summary"/>
  <attribute name="keywords" value="netcdf/attribute/@name=keywords"/>
  <attribute name="keywords_vocabulary" value="netcdf/attribute/@name=keyword_vocabulary"/>
  <attribute name="standard_name_vocabulary" value="netcdf/attribute/@name=standard_name_vocabulary"/>
  <attribute name="history" value="netcdf/attribute/@name=history"/>
  <attribute name="comment" value="netcdf/attribute/@name=comment"/>
  <!-- Extent Search -->
  <attribute name="geospatial_lat_min" value="netcdf/attribute/@name=geospatial_lat_min" type="float"/>
  <attribute name="geospatial_lat_max" value="netcdf/attribute/@name=geospatial_lat_max" type="float"/>
  <attribute name="geospatial_lon_min" value="netcdf/attribute/@name=geospatial_lon_min" type="float"/>
  <attribute name="geospatial_lon_max" value="netcdf/attribute/@name=geospatial_lon_max " type="float"/>
  <attribute name="geospatial_vertical_min" value="netcdf/attribute/@name=geospatial_vertical_min" type="float"/>
  <attribute name="geospatial_vertical_max" value="netcdf/attribute/@name=geospatial_vertical_min" type="float"/>
  <attribute name="time_coverage_start" value="netcdf/attribute/@name=time_coverage_start"/>
  <attribute name="time_coverage_end" value="netcdf/attribute/@name=time_coverage_end"/>
  <!-- Other Extent Information -->
  <attribute name="geospatial_lat_units" value="netcdf/attribute/@name=geospatial_lat_units"/>
  <attribute name="geospatial_lat_resolution" value="netcdf/attribute/@name=geospatial_lat_resolution" type="float"/>
  <attribute name="geospatial_lon_units" value="netcdf/attribute/@name=geospatial_lon_units"/>
  <attribute name="geospatial_lon_resolution" value="netcdf/attribute/@name=geospatial_lon_resolution" type="float"/>
  <attribute name="geospatial_vertical_units" value="netcdf/attribute/@name=geospatial_vertical_units"/>
  <attribute name="geospatial_vertical_resolution" value="netcdf/attribute/@name=geospatial_vertical_resolution" type="float"/>
  <attribute name="geospatial_vertical_positive" value="netcdf/attribute/@name=geospatial_vertical_positive"/>
  <attribute name="time_coverage_duration" value="netcdf/attribute/@name=time_coverage_duration"/>
  <attribute name="time_coverage_resolution" value="netcdf/attribute/@name=time_coverage_resolution"/>
  <!-- Creator Search -->
  <attribute name="acknowledgment" value="netcdf/attribute/@name=acknowledgment"/>
  <attribute name="creator_email" value="netcdf/attribute/@name=creator_email"/>
  <attribute name="creator_name" value="netcdf/attribute/@name=creator_name"/>
  <attribute name="creator_url" value="netcdf/attribute/@name=creator_url"/>
  <attribute name="date_created" value="netcdf/attribute/@name=date_created"/>
  <attribute name="date_modified" value="netcdf/attribute/@name=date_modified"/>
  <attribute name="date_issued" value="netcdf/attribute/@name=date_issued"/>
  <attribute name="institution" value="netcdf/attribute/@name=institution"/>
  <attribute name="project" value="netcdf/attribute/@name=project"/>
  <!-- Contributor Search -->
  <attribute name="contributor_name" value="netcdf/attribute/@name=contributor_name"/>
  <attribute name="contributor_role" value="netcdf/attribute/@name=contributor_role"/>
  <!-- Publisher Search -->
  <attribute name="publisher_name" value="netcdf/attribute/@name=publisher_name"/>
  <attribute name="publisher_url" value="netcdf/attribute/@name=publisher_url"/>
  <attribute name="publisher_email" value="netcdf/attribute/@name=publisher_email"/>
  <!-- Other Attributes -->
  <attribute name="processing_level" value="netcdf/attribute/@name=processing_level"/>
  <attribute name="license" value="netcdf/attribute/@name=license"/>
  <attribute name="cdm_data_type" value="netcdf/attribute/@name=cdm_data_type"/>
  <variable name="netcdf/variable/@name" type="netcdf/variable/@type" shape="netcdf/variable/@shape">
    <attribute name="units" value="netcdf/variable/attribute/@name=units"/>
    <attribute name="long_name" value="netcdf/variable/attribute/@name=long_name"/>
    <attribute name="standard_name" value="netcdf/variable/attribute/@name=standard_name"/>
  </variable>
  <variable name="netcdf/variable2/@name" type="netcdf/variable2/@type" shape="netcdf/variable2/@shape">
    <attribute name="units" value="netcdf/variable2/attribute/@name=units"/>
    <attribute name="long_name" value="netcdf/variable2/attribute/@name=long_name"/>
    <attribute name="standard_name" value="netcdf/variable2/attribute/@name=standard_name"/>
  </variable>
</netcdf>

Real-World Example

This NcML, taken from a very well documented CoastWatch file, includes real-world examples for all of the recommended attributes:

<netcdf xmlns="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2">
  <!-- Identifier / Metadata Reference -->
  <attribute name="id" value="LMHchlaS8day_20100129000000"/>
  <attribute name="naming_authority" value="gov.noaa.pfel.coastwatch"/>
  <attribute name="Metadata_Conventions" value="Unidata Dataset Discovery v1.0"/>
  <attribute name="Metadata_Link" value="URL for full metadata record"/>
  <!-- Text Search -->
  <attribute name="title" value="Chlorophyll-a, Aqua MODIS, NPP, 0.05 degrees, Global, Science Quality"/>
  <attribute name="summary"
    value="NOAA CoastWatch distributes chlorophyll-a concentration data from NASA's Aqua Spacecraft.  
    Measurements are gathered by the Moderate Resolution Imaging Spectroradiometer (MODIS) carried aboard the spacecraft.
    This is Science Quality data."/>
  <attribute name="keywords" value="EARTH SCIENCE > Oceans > Ocean Chemistry > Chlorophyll"/>
  <attribute name="keywords_vocabulary" value="GCMD Science Keywords"/>
  <attribute name="standard_name_vocabulary" value="CF-1.0"/>
  <attribute name="history" value="NASA GSFC (G. Feldman): 2010-02-22T22:48:46Z NOAA CoastWatch (West Coast Node) and NOAA SFSC ERD"/>
  <attribute name="comment" value="Text comment"/>
  <!-- Extent Search -->
  <attribute name="geospatial_lat_min" value="-90.0 " type="double"/>
  <attribute name="geospatial_lat_max" value="90.0 " type="double"/>
  <attribute name="geospatial_lon_min" value="0.0 " type="double"/>
  <attribute name="geospatial_lon_max" value="360.0 " type="double"/>
  <attribute name="geospatial_vertical_min" value="0.0 " type="double"/>
  <attribute name="geospatial_vertical_max" value="0.0 " type="double"/>
  <attribute name="geospatial_vertical_positive" value="up"/>
  <attribute name="time_coverage_end" value="2010-02-02T00:00:00Z"/>
  <attribute name="time_coverage_start" value="2010-01-25T00:00:00Z"/>
  <!-- Other Extent Information -->
  <attribute name="geospatial_lat_units" value="degrees_north"/>
  <attribute name="geospatial_lat_resolution" value="0.041676313961565174" type="double"/>
  <attribute name="geospatial_lon_units" value="degrees_east"/>
  <attribute name="geospatial_lon_resolution" value="0.04167148975575877" type="double"/>
  <attribute name="geospatial_vertical_units" value="m"/>
  <attribute name="geospatial_vertical_resolution" value="1.0" type="double"/>
  <attribute name="time_coverage_duration" value="P1D"/>
  <attribute name="time_coverage_resolution" value="PT1M"/>
  <!-- Creator Search -->
  <attribute name="acknowledgment" value="NOAA NESDIS COASTWATCH, NOAA SWFSC ERD"/>
  <attribute name="creator_email" value="dave.foley@noaa.gov"/>
  <attribute name="creator_name" value="NOAA CoastWatch, West Coast Node"/>
  <attribute name="creator_url" value="http://coastwatch.pfel.noaa.gov"/>
  <attribute name="date_created" value="2010-02-22Z"/>
  <attribute name="date_modified" value="2010-03-22Z"/>
  <attribute name="date_issued" value="2010-02-22Z"/>
  <attribute name="institution" value="NOAA CoastWatch, West Coast Node"/>
  <attribute name="project" value="CoastWatch (http://coastwatch.noaa.gov/)"/>
  <!-- Contributor Search -->
  <attribute name="contributor_name" value="NASA GSFC (G. Feldman)"/>
  <attribute name="contributor_role" value="Source of level 2 data."/>
  <!-- Publisher Search -->
  <attribute name="publisher_email" value="dave.foley@noaa.gov"/>
  <attribute name="publisher_name" value="NOAA CoastWatch, West Coast Node"/>
  <attribute name="publisher_url" value="http://coastwatch.pfel.noaa.gov"/>
  <!-- Other Attributes -->
  <attribute name="processing_level" value="3"/>
  <attribute name="license"
    value="The data may be used and redistributed for free but is not intended for legal use, since it may contain inaccuracies. Neither the data Contributor, CoastWatch, NOAA, nor the United States Government, nor any of their employees or contractors, makes any warranty, express or implied, including warranties of merchantability and fitness for a particular purpose, or assumes any legal liability for the accuracy, completeness, or usefulness, of this information."/>
  <attribute name="cdm_data_type" value="Grid"/>
</netcdf>

NetCDF Climate and Forecast (CF) Metadata Conventions

The NetCDF Climate and Forecast (CF) Metadata Conventions are designed to promote the interoperable processing and sharing of data from netCDF files. They are focused on data use while the NetCDF Attribute Conventions are focused on data discovery. Many of the discovery attributes that are related to extents can be calculated from the CF information:
geospatial_lat_min, geospatial_lat_max, geospatial_lat_units, geospatial_lat_res
geospatial_lon_min, geospatial_lon_max, geospatial_lon_units, geospatial_lon_res
geospatial_vertical_min, geospatial_vertical_max, geospatial_vertical_units, geospatial_vertical_res, geospatial_vertical_pos
time_coverage_start, time_coverage_end, time_coverage_units, time_coverage_duration, time_coverage_res

Note: We recommend explicitly listing these attributes in the file even though they can be calculated from the CF information in order to facilitate direct access to this information by tools that do not understand the CF Conventions.

Open Geospatial Consortium Catalog Service for the Web (CSW)

The OGC CSW Service includes ten core queryable elements that must be supported in all instances. CSW Profiles map these queryables to elements in various standards. The ISO Mappings are described in Section 7.2.3.1,Table 6 of OpenGIS® Catalogue Services Specification 2.0.2 - ISO Metadata Application Profile (OGC 07-045). The core queryables mapping is included in the Table above. An additional "any text" queryable covers all text in a record. Two core queryables are not covered by the NetCDF Attribute Convention for Dataset Discovery: Format and CRS.

ISO Translation Notes

The translation between the Attribute Conventions for Data Discovery is subject to a number of assumptions or conventions described here.

People

The ACDD includes several types of people:

ACDD Attributes ISO Locations
creator_name, creator_email, creator_url, institution citation/citedResponsibleParty role=originator, point of contact, and metadata contact
contributor_name, contributor_role citation/citedResponsibleParty role=originator (may need adjustment)
publisher_name, publisher_email, publisher_url distributor and Data Center keyword
project Project keyword, aggregation information (initiative type = project)

Keywords

The ACDD includes several attributes that make sense as keywords in ISO:

ACDD Attributes ISO Locations
keywords theme keywords with thesaurus given by the keywords_vocabulary attribute
project Project keyword with unknown thesaurus and aggregation information (initiative type = project)
publisher_name Data Center keyword with unknown thesaurus
standard_names for parameters theme keywords with thesaurus = standard_name_vocabulary
publisher_name, publisher_email, publisher_url distributor and Data Center keyword

Translation Revisions

Several changes were introduced into Version 2.0.2 of the stylesheet for transforming NcML to ISO in order to improve the rubric score for the resulting ISO metadata. The changes included:

  1. Including netcdf/@location in transform as distribution onlineResource
  2. Added tagname to writeResponsibleParty so that responsibleParties with

different UML roles could be supported (i.e. contact vs. distributor)

  1. Added urlName and urlDescription to writeResponsibleParty to add

content to the onlineResource

  1. Moved publisher from citation to distributor and included publisher_name as a dataCenter keyword.
  2. Added project as a keyword with type=project
  3. Added distributionInfo section to ISO if publisher or location exist.

Determining an Order of Precedence

There can be conflicting information available from different sources within the THREDDS and CDM data models. The diagram below seeks to determine an order of precedence for what is recorded in the ncISO metadata when those attributes conflict. Metadataprecedence.png

A key part of this discussion is the ability to see identify potentially conflicting metdata between the differenc sources within THREDDS and NetCDF. Below we propose using groups to identify in the NCML what sources contain the relevant metadata that will be used in the ISO translation.

<?xml version="1.0" encoding="UTF-8"?>
<netcdf xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2 ../XSD/ncml-2.2.xsd"
 xmlns="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2"
 location="http://localhost:8080/thredds/dodsC/test/crm_v1.nc">
    
    <!-- Metadata from the netCDF or NCML file global attributes -->    
    <attribute name="Conventions" value="CF-1.4" />
    <attribute name="title" value="crm_v1.grd" />
    <attribute name="history" value="xyz2grd -R-80/-64/40/48 -I3c -Gcrm_v1.grd" />
    <attribute name="GMT_version" value="4.5.1 [64-bit]" />
    <attribute name="creator_name" value="David Neufeld"/>
    <attribute name="creator_email" value="David.Neufeld@noaa.gov"/>    
    <attribute name="geospatial_lon_units" value="degrees_east" />
    <attribute name="geospatial_lat_units" value="degrees_north" />
    <attribute name="geospatial_lon_min" type="float" value="-80.0" />
    <attribute name="geospatial_lon_max" type="float" value="-64.0" />    
    <attribute name="geospatial_lat_max" type="float" value="48.0" />
    <attribute name="geospatial_lat_min" type="float" value="40.0" />
    <attribute name="geospatial_lon_resolution" type="double" value="8.33E-4" />
    <attribute name="geospatial_lat_resolution" type="double" value="8.33E-4" />
    
    <!-- Metadata calculated from the netCDF file axes based on CF conventions -->
    <group name="CFMetadata">
      <attribute name="geospatial_lon_min" value="-80.0" type="float" />
      <attribute name="geospatial_lat_min" value="40.0" type="float" />
      <attribute name="geospatial_lon_max" value="-64.0" type="float" />
      <attribute name="geospatial_lat_max" value="48.0" type="float" />
      <attribute name="geospatial_lon_units" value="degrees_east" />    
      <attribute name="geospatial_lat_units" value="degrees_north" />
      <attribute name="geospatial_lon_resolution" value="8.332899328159992E-4" />
      <attribute name="geospatial_lat_resolution" value="8.332465368190813E-4" />
    </group>
    
    <!-- Metadata from the THREDDS catalog dataset -->
    <group name="THREDDSMetadata">
        <attribute name="id" value="crm_v1" />
        <attribute name="creator_name" value="David Neufeld"/>
        <attribute name="creator_email" value="David.Neufeld@noaa.gov"/>    
        <attribute name="data_distribution" value="http://localhost:8080/thredds/dodsC/test/crm_v1.nc" />
        <attribute name="wms_service" value="http://localhost:8080//thredds/wms/crm/crm_vol9.nc" />
        <attribute name="wcs_service" value="http://localhost:8080//thredds/wcs/crm/crm_vol9.nc" />
    </group>    
        
    <!-- Metadata from the ncISO service -->
    <group name="NCISOMetadata">
      <attribute name="metadata_creation" value="2011-04-19" />
    </group>
    
    <dimension name="x" length="19201" />
    <dimension name="y" length="9601" />
    
    <variable name="z" shape="y x" type="float">
        <attribute name="long_name" value="z" />
        
        <attribute name="_FillValue" type="float" value="NaN" />
        <attribute name="actual_range" type="double" value="-2754.39990234375 1903.0" />
        <attribute name="units" value="meters" />
        <attribute name="positive" value="up" />
    </variable>
    <variable name="x" shape="x" type="double">
        <attribute name="long_name" value="x" />
        <attribute name="actual_range" type="double" value="-80.0 -64.0" />
        <attribute name="units" value="degrees_east" />
        
        <attribute name="_CoordinateAxisType" value="Lon" />
    </variable>
    <variable name="y" shape="y" type="double">
        <attribute name="long_name" value="y" />
        <attribute name="actual_range" type="double" value="40.0 48.0" />
        <attribute name="units" value="degrees_north" />
        <attribute name="_CoordinateAxisType" value="Lat" />
    </variable>
</netcdf>