From 0526584640cd64a3759dddfc82a40cd11fe75c64 Mon Sep 17 00:00:00 2001 From: Anna Milan Date: Fri, 2 Aug 2024 13:30:22 +0200 Subject: [PATCH] #209 update with edits as submitted to LSP (#210) * Many refactors for WIS2 manual. Some editorial to consider adding into main branch. (and rebase) * embed link * add wcmp resources * (with rebase) Many refactors for WIS2 manual. Some editorial to consider adding into main branch. * supress sectnums for clause 7 and add hardcoded numberings to headers * change should, shall and may to all caps * add numbering to internal links and other editorial * add comments with req#, rec#, and per# * editorial changes * editorial * Apply suggestions from code review fix errant capitalizations * add sectnums to section 8 * Apply suggestions from code review remove appendix F from section name * fix alphabet bullets in req/core/themes * Apply suggestions from code review add number to internal link Co-authored-by: Tom Kralidis * add links to subsection in clause 8 * Update standard/sections/clause_7_normative_text.adoc missing period * Update PER_extent_temporal_service.adoc --------- Co-authored-by: Tom Kralidis --- .../core/PER_additional_properties.adoc | 1 + .../recommendations/core/PER_contacts.adoc | 1 + .../recommendations/core/PER_data_policy.adoc | 7 +- .../core/PER_extent_geospatial.adoc | 1 + .../core/PER_extent_temporal.adoc | 1 + .../core/PER_extent_temporal_service.adoc | 1 + .../recommendations/core/PER_identifier.adoc | 1 + standard/recommendations/core/PER_links.adoc | 3 +- standard/recommendations/core/PER_pids.adoc | 3 +- standard/recommendations/core/PER_themes.adoc | 1 + .../recommendations/core/PER_version.adoc | 1 + .../recommendations/core/REC_data_policy.adoc | 1 + .../core/REC_distribution.adoc | 1 + .../core/REC_extent_geospatial_point.adoc | 3 +- .../core/REC_extent_geospatial_precision.adoc | 3 +- ...extent_geospatial_wis2_global_service.adoc | 1 + .../core/REC_extent_temporal.adoc | 1 + .../recommendations/core/REC_granularity.adoc | 1 + .../recommendations/core/REC_keywords.adoc | 1 + standard/recommendations/core/REC_links.adoc | 3 +- .../recommendations/core/REC_media_type.adoc | 1 + standard/recommendations/core/REC_pids.adoc | 3 +- .../core/REC_record_update_date.adoc | 1 + standard/recommendations/core/REC_status.adoc | 1 + .../requirements/core/REQ_conformance.adoc | 3 +- standard/requirements/core/REQ_contacts.adoc | 1 + .../requirements/core/REQ_data_policy.adoc | 1 + .../requirements/core/REQ_description.adoc | 1 + .../core/REQ_extent_geospatial.adoc | 5 +- .../core/REQ_extent_temporal.adoc | 5 +- .../requirements/core/REQ_identifier.adoc | 6 +- standard/requirements/core/REQ_links.adoc | 9 +- .../core/REQ_record_creation_date.adoc | 1 + standard/requirements/core/REQ_themes.adoc | 10 +- .../core/REQ_themes_wis2_global_service.adoc | 5 +- standard/requirements/core/REQ_title.adoc | 1 + standard/requirements/core/REQ_type.adoc | 3 +- .../requirements/core/REQ_validation.adoc | 2 +- .../requirements/requirements_class_core.adoc | 19 +- .../clause_4_terms_and_definitions.adoc | 2 +- .../sections/clause_7_normative_text.adoc | 310 ++++++++++-------- standard/sections/clause_8_gdc.adoc | 7 +- 42 files changed, 242 insertions(+), 191 deletions(-) diff --git a/standard/recommendations/core/PER_additional_properties.adoc b/standard/recommendations/core/PER_additional_properties.adoc index 7f964b9a..ccb642cc 100644 --- a/standard/recommendations/core/PER_additional_properties.adoc +++ b/standard/recommendations/core/PER_additional_properties.adoc @@ -4,3 +4,4 @@ ^|*Permission {counter:per-id}* |*/per/core/additional_properties* ^|A |A WCMP record MAY provide additional properties of any type in any part of the document as needed. |=== +//per10 \ No newline at end of file diff --git a/standard/recommendations/core/PER_contacts.adoc b/standard/recommendations/core/PER_contacts.adoc index ba60741c..78ffb413 100644 --- a/standard/recommendations/core/PER_contacts.adoc +++ b/standard/recommendations/core/PER_contacts.adoc @@ -4,3 +4,4 @@ ^|*Permission {counter:per-id}* |*/per/core/contacts* ^|A |The `+properties.contacts+` property MAY provide more than one contact via multiple objects or a single contact object with multiple roles. |=== +//per5 \ No newline at end of file diff --git a/standard/recommendations/core/PER_data_policy.adoc b/standard/recommendations/core/PER_data_policy.adoc index 578b9de1..42d3bd15 100644 --- a/standard/recommendations/core/PER_data_policy.adoc +++ b/standard/recommendations/core/PER_data_policy.adoc @@ -3,7 +3,8 @@ |=== ^|*Permission {counter:per-id}* |*/per/core/data_policy* ^|A|For core data (when `+properties.wmo:dataPolicy+` property is `+core+`), attribution licensing MAY be provided as needed. -^|B|For core data (when `+properties.wmo:dataPolicy+` is `+core+`) or recommended data (when `+properties.wmo:dataPolicy+` is `+recommended+`, and the data is compatible with free and unrestricted principles), a license or public domain statement that is compatible with free and unrestricted principles (e.g., Creative Commons CC0footnote:[https://creativecommons.org/publicdomain/zero/1.0/]) MAY be expressed as a link object with the `license` link relation. -^|C|For core data (when `+properties.wmo:dataPolicy+` is `+core+`) or recommended data (when `+properties.wmo:dataPolicy+` is `+recommended+`, a copyright statement MAY be expressed in `+properties.rights+` -^|D|For core data (when `+properties.wmo:dataPolicy+` is `+core+`) or recommended data (when `+properties.wmo:dataPolicy+` is `+recommended+`, a link object MAY be expressed with `+rel=copyright+`. +^|B|For core data (when `+properties.wmo:dataPolicy+` is `+core+`) or recommended data (when `+properties.wmo:dataPolicy+` is `+recommended+`, and the data is compatible with free and unrestricted principles), a license or public domain statement that is compatible with free and unrestricted principles (such as, link:https://creativecommons.org/publicdomain/zero/1.0/[Creative Commons CC0]) MAY be expressed as a link object with the `license` link relation. +^|C|For core data (when `+properties.wmo:dataPolicy+` is `+core+`) or recommended data (when `+properties.wmo:dataPolicy+` is `+recommended+`), a copyright statement MAY be expressed in `+properties.rights+` +^|D|For core data (when `+properties.wmo:dataPolicy+` is `+core+`) or recommended data (when `+properties.wmo:dataPolicy+` is `+recommended+`), a link object MAY be expressed with `+rel=copyright+`. |=== +//per8 \ No newline at end of file diff --git a/standard/recommendations/core/PER_extent_geospatial.adoc b/standard/recommendations/core/PER_extent_geospatial.adoc index d264e38b..5c4a791f 100644 --- a/standard/recommendations/core/PER_extent_geospatial.adoc +++ b/standard/recommendations/core/PER_extent_geospatial.adoc @@ -5,3 +5,4 @@ ^|A |A WCMP record MAY provide multiple `+additionalExtents.spatial.bbox+` item properties to express additional geospatial extents in other coordinate reference systems. ^|B |The `+geometry+` property MAY provide a third element (height) as per clause 4 of the GeoJSON specification. |=== +//per3 \ No newline at end of file diff --git a/standard/recommendations/core/PER_extent_temporal.adoc b/standard/recommendations/core/PER_extent_temporal.adoc index c2f948e1..119994ff 100644 --- a/standard/recommendations/core/PER_extent_temporal.adoc +++ b/standard/recommendations/core/PER_extent_temporal.adoc @@ -4,3 +4,4 @@ ^|*Permission {counter:per-id}* |*/per/core/extent_temporal* ^|A |A WCMP record MAY provide multiple `+additionalExtents.temporal+` item properties to express additional temporal extents in other temporal reference systems. |=== +//per4 \ No newline at end of file diff --git a/standard/recommendations/core/PER_extent_temporal_service.adoc b/standard/recommendations/core/PER_extent_temporal_service.adoc index 72be9357..603e2b18 100644 --- a/standard/recommendations/core/PER_extent_temporal_service.adoc +++ b/standard/recommendations/core/PER_extent_temporal_service.adoc @@ -4,3 +4,4 @@ ^|*Permission {counter:per-id}* |*/per/core/extent_service* ^|A |For WCMP records describing a service or API, a `+time+` value of `+null+` MAY be provided. |=== +//rec8 diff --git a/standard/recommendations/core/PER_identifier.adoc b/standard/recommendations/core/PER_identifier.adoc index 6e4fb38a..0413e981 100644 --- a/standard/recommendations/core/PER_identifier.adoc +++ b/standard/recommendations/core/PER_identifier.adoc @@ -4,3 +4,4 @@ ^|*Permission {counter:per-id}* |*/rec/core/identifier* ^|A |The local identifier MAY also have colons (`+:+`) as required by the data publisher. |=== +//per1 \ No newline at end of file diff --git a/standard/recommendations/core/PER_links.adoc b/standard/recommendations/core/PER_links.adoc index 85b5d512..ea3af91e 100644 --- a/standard/recommendations/core/PER_links.adoc +++ b/standard/recommendations/core/PER_links.adoc @@ -2,5 +2,6 @@ [width="90%",cols="2,6a"] |=== ^|*Permission {counter:per-id}* |*/per/core/links* -^|A |The `+links+` property MAY contain a Web Accessible Folder (WAF) OR an API link for real-time data. +^|A |The `+links+` property MAY contain a Web Accessible Folder (WAF) or an API link for real-time data. |=== +//per9 \ No newline at end of file diff --git a/standard/recommendations/core/PER_pids.adoc b/standard/recommendations/core/PER_pids.adoc index 3a58db36..385fe485 100644 --- a/standard/recommendations/core/PER_pids.adoc +++ b/standard/recommendations/core/PER_pids.adoc @@ -2,6 +2,7 @@ [width="90%",cols="2,6a"] |=== ^|*Permission {counter:per-id}* |*/per/core/pids* -^|A |A WCMP record MAY provide a persistent identifier as a means to cite research or resource identification using a persistent identifier scheme/framework. +^|A |A WCMP record MAY provide a persistent identifier to cite research or resource identification using a persistent identifier scheme/framework. ^|B |A WCMP record MAY provide a persistent identifier as a link object with `+rel=cite-as+` if there is an online citation or reference. |=== +//per7 \ No newline at end of file diff --git a/standard/recommendations/core/PER_themes.adoc b/standard/recommendations/core/PER_themes.adoc index 1b16b1af..12c2f716 100644 --- a/standard/recommendations/core/PER_themes.adoc +++ b/standard/recommendations/core/PER_themes.adoc @@ -4,3 +4,4 @@ ^|*Permission {counter:per-id}* |*/per/core/themes* ^|A |A WCMP record MAY provide as many themes/concepts as applicable to describe the themes of a given dataset. |=== +//per2 \ No newline at end of file diff --git a/standard/recommendations/core/PER_version.adoc b/standard/recommendations/core/PER_version.adoc index e3ab2a77..7433ed2f 100644 --- a/standard/recommendations/core/PER_version.adoc +++ b/standard/recommendations/core/PER_version.adoc @@ -4,3 +4,4 @@ ^|*Permission {counter:per-id}* |*/per/core/version* ^|A |A WCMP record MAY provide a `+properties.version+` property to describe the version of a given dataset. |=== +//per6 \ No newline at end of file diff --git a/standard/recommendations/core/REC_data_policy.adoc b/standard/recommendations/core/REC_data_policy.adoc index 00702f1e..c5a9a59e 100644 --- a/standard/recommendations/core/REC_data_policy.adoc +++ b/standard/recommendations/core/REC_data_policy.adoc @@ -9,3 +9,4 @@ Users are granted free and unrestricted access to this data, without charge and with no conditions on use. Users are requested to attribute the producer of this data. WMO Unified Data Policy (Resolution 1 (Cg-Ext 2021)) ^|D|For core or recommended data not in the public domain, a copyright statement SHOULD be expressed as either a `+properties.rights+` statement or a link object with `+rel=copyright+`. |=== +//rec12 \ No newline at end of file diff --git a/standard/recommendations/core/REC_distribution.adoc b/standard/recommendations/core/REC_distribution.adoc index bdf5d43c..66061fa4 100644 --- a/standard/recommendations/core/REC_distribution.adoc +++ b/standard/recommendations/core/REC_distribution.adoc @@ -12,3 +12,4 @@ ^|H |The `+links.distribution.availableFormats.documentation+` SHOULD be a `+link+` for accessing the documentation associated with the format. ^|I |The `+links.distribution.availableFormats.samples+` SHOULD be an array of direct links to representative samples of the data. |=== +//rec14 \ No newline at end of file diff --git a/standard/recommendations/core/REC_extent_geospatial_point.adoc b/standard/recommendations/core/REC_extent_geospatial_point.adoc index 2190df75..1cd39e24 100644 --- a/standard/recommendations/core/REC_extent_geospatial_point.adoc +++ b/standard/recommendations/core/REC_extent_geospatial_point.adoc @@ -2,5 +2,6 @@ [width="90%",cols="2,6a"] |=== ^|*Recommendation {counter:rec-id}* |*/rec/core/extent_geospatial_point* -^|A |For datasets based on a geometry without a calculated area (for example, single station point), a WCMP record SHOULD provide the GeoJSON geometry as a `+Point+` type. +^|A |For datasets based on a geometry without a calculated area (for example, a single station point), a WCMP record SHOULD provide the GeoJSON geometry as a `+Point+` type. |=== +//rec4 \ No newline at end of file diff --git a/standard/recommendations/core/REC_extent_geospatial_precision.adoc b/standard/recommendations/core/REC_extent_geospatial_precision.adoc index 808a59d7..c567a9a8 100644 --- a/standard/recommendations/core/REC_extent_geospatial_precision.adoc +++ b/standard/recommendations/core/REC_extent_geospatial_precision.adoc @@ -2,5 +2,6 @@ [width="90%",cols="2,6a"] |=== ^|*Recommendation {counter:rec-id}* |*/rec/core/extent_geospatial_precision* -^|A |Geometry coordinates SHOULD have a level of precision of 2 or more decimal places. +^|A |Geometry coordinates SHOULD have a level of precision of at least two or more decimal places. |=== +//rec5 \ No newline at end of file diff --git a/standard/recommendations/core/REC_extent_geospatial_wis2_global_service.adoc b/standard/recommendations/core/REC_extent_geospatial_wis2_global_service.adoc index dc9c6f89..68267abb 100644 --- a/standard/recommendations/core/REC_extent_geospatial_wis2_global_service.adoc +++ b/standard/recommendations/core/REC_extent_geospatial_wis2_global_service.adoc @@ -4,3 +4,4 @@ ^|*Recommendation {counter:rec-id}* |*/rec/core/extent_geospatial_wis_2_global_service* ^|A |For a WIS2 Global Service, a WCMP record SHOULD provide the GeoJSON geometry as a `+Polygon+` type with a WGS84 bounding geometry of `+-180+` (west longitude), `+-90+` (south latitude), `+180+` (east longitude), `+90+` (north latitude). |=== +//rec6 \ No newline at end of file diff --git a/standard/recommendations/core/REC_extent_temporal.adoc b/standard/recommendations/core/REC_extent_temporal.adoc index c92256a6..fe4772f6 100644 --- a/standard/recommendations/core/REC_extent_temporal.adoc +++ b/standard/recommendations/core/REC_extent_temporal.adoc @@ -6,3 +6,4 @@ ^|B |For complex temporal extents, a WCMP record SHOULD also provide a human-readable explanation in `+properties.description+` to promote clarification and unambiguity. ^|C |To distinguish maintenance or update frequency, those SHOULD be included in `+properties.themes+`. |=== +//rec7 \ No newline at end of file diff --git a/standard/recommendations/core/REC_granularity.adoc b/standard/recommendations/core/REC_granularity.adoc index f4510981..4ae8f165 100644 --- a/standard/recommendations/core/REC_granularity.adoc +++ b/standard/recommendations/core/REC_granularity.adoc @@ -4,3 +4,4 @@ ^|*Recommendation {counter:rec-id}* |*/rec/core/granularity* ^|A |A WCMP record SHOULD describe dataset parameters and variables as themes/concepts with an associated controlled vocabulary. |=== +//rec3 \ No newline at end of file diff --git a/standard/recommendations/core/REC_keywords.adoc b/standard/recommendations/core/REC_keywords.adoc index 7053d8d9..678477f0 100644 --- a/standard/recommendations/core/REC_keywords.adoc +++ b/standard/recommendations/core/REC_keywords.adoc @@ -4,3 +4,4 @@ ^|*Recommendation {counter:rec-id}* |*/rec/core/keywords* ^|A |A WCMP record SHOULD provide a `+properties.keywords+` property, as a list of freeform text or tags that are not based on a controlled vocabulary. |=== +//rec2 \ No newline at end of file diff --git a/standard/recommendations/core/REC_links.adoc b/standard/recommendations/core/REC_links.adoc index 8920a775..360b4456 100644 --- a/standard/recommendations/core/REC_links.adoc +++ b/standard/recommendations/core/REC_links.adoc @@ -2,6 +2,7 @@ [width="90%",cols="2,6a"] |=== ^|*Recommendation {counter:rec-id}* |*/rec/core/links* -^|A |A WCMP record's links SHOULD be provided using secure protocols (e.g. HTTPS, MQTTS, etc.). +^|A |A WCMP record's links SHOULD be provided using secure protocols (such as, HTTPS or MQTTS). ^|B |The `+links+` property SHOULD provide a `+type+` property with a valid media type from IANA or as designated by WMO. |=== +//rec13 \ No newline at end of file diff --git a/standard/recommendations/core/REC_media_type.adoc b/standard/recommendations/core/REC_media_type.adoc index ef84fc52..1a5c56be 100644 --- a/standard/recommendations/core/REC_media_type.adoc +++ b/standard/recommendations/core/REC_media_type.adoc @@ -4,3 +4,4 @@ ^|*Recommendation {counter:rec-id}* |*/rec/core/media_type* ^|A |The media type assigned to a WCMP record, when transported through a protocol that supports it, SHOULD be ``application/geo+json``. |=== +//rec1 \ No newline at end of file diff --git a/standard/recommendations/core/REC_pids.adoc b/standard/recommendations/core/REC_pids.adoc index 0d64bd84..3677427d 100644 --- a/standard/recommendations/core/REC_pids.adoc +++ b/standard/recommendations/core/REC_pids.adoc @@ -2,5 +2,6 @@ [width="90%",cols="2,6a"] |=== ^|*Recommendation {counter:rec-id}* |*/rec/core/pids* -^|A |A WCMP record SHOULD provide persistent identifier references via items in the `+properties.externalIds+` array property, where the value of `+scheme+` is based on an established persistent identifier scheme (such as `+https://doi.org+`, `+https://arks.org+`, `+https://handle.net+`, etc.), and the `+value+` property is the persistent identifier (for example, `https://dx.doi.org/10.14287/10000001`). +^|A |A WCMP record SHOULD provide persistent identifier references via items in the `+properties.externalIds+` array property, where the value of `+scheme+` is based on an established persistent identifier scheme (such as `+https://doi.org+`, `+https://arks.org+` or `+https://handle.net+`), and the `+value+` property is the persistent identifier (for example, `https://dx.doi.org/10.14287/10000001`). |=== +//rec9 \ No newline at end of file diff --git a/standard/recommendations/core/REC_record_update_date.adoc b/standard/recommendations/core/REC_record_update_date.adoc index 9ada357c..32c53017 100644 --- a/standard/recommendations/core/REC_record_update_date.adoc +++ b/standard/recommendations/core/REC_record_update_date.adoc @@ -5,3 +5,4 @@ ^|A |A WCMP record SHOULD provide a `+properties.updated+` property when a record has been updated since its initial creation. |=== +//rec10 \ No newline at end of file diff --git a/standard/recommendations/core/REC_status.adoc b/standard/recommendations/core/REC_status.adoc index a8aa6df6..39a28330 100644 --- a/standard/recommendations/core/REC_status.adoc +++ b/standard/recommendations/core/REC_status.adoc @@ -8,3 +8,4 @@ ^|D |A WCMP record SHOULD provide a `+properties.status.description+` property to provide a human readable description for the concept. ^|E |A WCMP record SHOULD provide a `+properties.status.url+` property to provide further description of the concept via the given URI. |=== +//rec11 \ No newline at end of file diff --git a/standard/requirements/core/REQ_conformance.adoc b/standard/requirements/core/REQ_conformance.adoc index ce864f77..0a0fd719 100644 --- a/standard/requirements/core/REQ_conformance.adoc +++ b/standard/requirements/core/REQ_conformance.adoc @@ -4,6 +4,5 @@ ^|*Requirement {counter:req-id}* |*/req/core/conformance* ^|A |A WCMP record SHALL provide information on conformance via the OARec record `+conformsTo+` property. ^|B |The `+conformsTo+` property SHALL advertise conformance to WCMP. - |=== - +//req3 diff --git a/standard/requirements/core/REQ_contacts.adoc b/standard/requirements/core/REQ_contacts.adoc index 8516ee70..983d5931 100644 --- a/standard/requirements/core/REQ_contacts.adoc +++ b/standard/requirements/core/REQ_contacts.adoc @@ -6,3 +6,4 @@ ^|B |The `+properties.contacts+` SHALL provide an `+organization+` property. ^|C |The `+roles+` property, when specified, SHALL provide a role type from the WCMP role type codelist. |=== +//req11 \ No newline at end of file diff --git a/standard/requirements/core/REQ_data_policy.adoc b/standard/requirements/core/REQ_data_policy.adoc index b737f8a1..1ec385eb 100644 --- a/standard/requirements/core/REQ_data_policy.adoc +++ b/standard/requirements/core/REQ_data_policy.adoc @@ -6,3 +6,4 @@ ^|B |The `+properties.wmo:dataPolicy+` property SHALL be `+core+` or `+recommended+`. ^|C |When the `+properties.wmo:dataPolicy+` property is `+recommended+`, data licensing SHALL be provided by at least one `+links+` item with link relations (`+rel+`) of `+license+`. |=== +//req13 \ No newline at end of file diff --git a/standard/requirements/core/REQ_description.adoc b/standard/requirements/core/REQ_description.adoc index bb5483fd..6c3b17ff 100644 --- a/standard/requirements/core/REQ_description.adoc +++ b/standard/requirements/core/REQ_description.adoc @@ -5,3 +5,4 @@ ^|A |A WCMP record SHALL provide a `+properties.description+` property. |=== +//req6 \ No newline at end of file diff --git a/standard/requirements/core/REQ_extent_geospatial.adoc b/standard/requirements/core/REQ_extent_geospatial.adoc index de74ff74..73dc4c6a 100644 --- a/standard/requirements/core/REQ_extent_geospatial.adoc +++ b/standard/requirements/core/REQ_extent_geospatial.adoc @@ -2,7 +2,8 @@ [width="90%",cols="2,6a"] |=== ^|*Requirement {counter:req-id}* |*/req/core/extent_geospatial* -^|A |A WCMP record SHALL provide ONE `+geometry+` property to convey the geospatial properties of a dataset using a geographic coordinate reference system (World Geodetic System 1984 [WGS 84]) and longitude and latitude decimal degree units. -^|B |The `+geometry+` values SHALL be integer or float data types. +^|A |A WCMP record SHALL provide one `+geometry+` property to convey the geospatial properties of a dataset using a geographic coordinate reference system (World Geodetic System 1984 [WGS 84]) and longitude and latitude decimal degree units. +^|B |The `+geometry+` coordinates SHALL be integer or float data types. ^|C |The `+geometry+` property SHALL provide the value of `+null+` when geometry cannot be derived. |=== +//req9 \ No newline at end of file diff --git a/standard/requirements/core/REQ_extent_temporal.adoc b/standard/requirements/core/REQ_extent_temporal.adoc index 6a825804..e0407d89 100644 --- a/standard/requirements/core/REQ_extent_temporal.adoc +++ b/standard/requirements/core/REQ_extent_temporal.adoc @@ -2,7 +2,8 @@ [width="90%",cols="2,6a"] |=== ^|*Requirement {counter:req-id}* |*/req/core/extent_temporal* -^|A |A WCMP record SHALL provide ONE `+time+` property using the Gregorian calendar. -^|B |The `+time+` property SHALL provide either ONE `+date+`, `+timestamp+`, `+interval+` or the value of `+null+` when a conformant time cannot be derived. +^|A |A WCMP record SHALL provide one `+time+` property using the Gregorian calendar. +^|B |The `+time+` property SHALL provide either one `+date+`, `+timestamp+`, `+interval+, or the value of `+null+` when a conformant time cannot be derived. ^|C |All non-null `+time+` values SHALL be valid ISO8601 representations or `+..+` for an open-ended extent. |=== +//req10 \ No newline at end of file diff --git a/standard/requirements/core/REQ_identifier.adoc b/standard/requirements/core/REQ_identifier.adoc index e77ae509..2b798037 100644 --- a/standard/requirements/core/REQ_identifier.adoc +++ b/standard/requirements/core/REQ_identifier.adoc @@ -4,7 +4,7 @@ ^|*Requirement {counter:req-id}* |*/req/core/identifier* ^|A |A WCMP record SHALL provide an identifier via the `+id+` property. ^|B |The `+id+` property SHALL have the following notation: `+urn:wmo:md:{centre_id}:{local_identifier}+`. -^|C |The ``centre_id`` SHALL be based on the associated vocabulary specified in the WIS <>. -^|D |The `+id+` property SHALL include a local identifier as defined by the data publisher. The local identifier SHALL NOT have spaces or special or accented characters. +^|C |The ``centre_id`` SHALL be based on the associated vocabulary specified in Appendix D: WIS2 Topic Hierarchy. +^|D |The `+id+` property SHALL include a local identifier as defined by the data publisher. The local identifier SHALL NOT have spaces or accented characters. |=== - +//req2 diff --git a/standard/requirements/core/REQ_links.adoc b/standard/requirements/core/REQ_links.adoc index a0a1c839..8e505e60 100644 --- a/standard/requirements/core/REQ_links.adoc +++ b/standard/requirements/core/REQ_links.adoc @@ -4,9 +4,10 @@ ^|*Requirement {counter:req-id}* |*/req/core/links* ^|A |A WCMP record SHALL provide a `+links+` property. ^|B |The `+links+` property SHALL contain at least one link to the data access service allowing users to download the data. -^|C |The `+links+` property SHALL contain a Web Accessible Folder (WAF) OR an API link for non-real-time data (such as climate records or hydrometric data archives). +^|C |The `+links+` property SHALL contain a Web Accessible Folder (WAF) or an API link for non-real-time data (such as climate records or hydrometric data archives). ^|D |The `+links+` property SHALL contain access control information for data, products, and services that require authentication or authorization. -^|E |For representing MQTT links, the URI scheme SHALL be `+mqtt+` (default port 1883) or `+mqtts+` (default port 8883) for secure TLS encrypted connections. -^|F |The `+links+` property SHALL provide the `channel` property of the MQTT topic for real-time data under which the data publication notifications will be accessible from the WIS2 Global Broker, following the WIS2 topic hierarchy. -^|G |The `+links+` property SHALL include a valid link relation from IANA footnote:[https://www.iana.org/assignments/link-relations/link-relations.xml] or the WCMP link type codelist footnote:[https://codes.wmo.int/wis/link-type]. +^|E |For representing MQTT links, the URI scheme SHALL be `+mqtt+` (default port 1883) or `+mqtts+` (default port 8883) for secure transport layer security (TLS) encrypted connections. +^|F |The `+links+` property SHALL provide the `channel` property of the MQTT topic for real-time data under which the data publication notifications will be accessible from the WIS2 Global Broker, following the WIS2 Topic Hierarchy. +^|G |The `+links+` property SHALL include a valid link:https://www.iana.org/assignments/link-relations/link-relations.xml[IANA] link relation or a link:https://codes.wmo.int/wis/link-type[WIS link type] code. |=== +//req14 \ No newline at end of file diff --git a/standard/requirements/core/REQ_record_creation_date.adoc b/standard/requirements/core/REQ_record_creation_date.adoc index ed618f91..c10cf9ba 100644 --- a/standard/requirements/core/REQ_record_creation_date.adoc +++ b/standard/requirements/core/REQ_record_creation_date.adoc @@ -5,3 +5,4 @@ ^|A |A WCMP record SHALL provide a single `+properties.created+` property. ^|B |The `+properties.created+` property SHALL NOT be repeated or used to document change history. |=== +//req12 \ No newline at end of file diff --git a/standard/requirements/core/REQ_themes.adoc b/standard/requirements/core/REQ_themes.adoc index b072a3bb..cad4a333 100644 --- a/standard/requirements/core/REQ_themes.adoc +++ b/standard/requirements/core/REQ_themes.adoc @@ -2,9 +2,9 @@ [width="90%",cols="2,6a"] |=== ^|*Requirement {counter:req-id}* |*/req/core/themes* -//^|A |A WCMP record SHALL provide themes and concepts when describing a dataset based on an associated controlled vocabulary. -^|B |A WCMP record SHALL provide at least one `+themes+` property. -^|C |Each `+themes+` property SHALL provide at least one `+concept+` property. -^|D |Each `+themes+` property SHALL provide a `+scheme+` property that refers to a controlled vocabulary or thesaurus. -^|E |A WCMP record describing a dataset SHALL provide a `+themes+` property identifying all applicable Earth system disciplines as defined in the WIS2 Topic Hierarchy. +^|A |A WCMP record SHALL provide at least one `+themes+` property. +^|B |Each `+themes+` property SHALL provide at least one `+concept+` property. +^|C |Each `+themes+` property SHALL provide a `+scheme+` property that refers to a controlled vocabulary or thesaurus. +^|D |A WCMP record describing a dataset SHALL provide a `+themes+` property identifying all applicable Earth system disciplines as defined in the WIS2 Topic Hierarchy. |=== +//req7 \ No newline at end of file diff --git a/standard/requirements/core/REQ_themes_wis2_global_service.adoc b/standard/requirements/core/REQ_themes_wis2_global_service.adoc index 43fbf7a8..e8aa7182 100644 --- a/standard/requirements/core/REQ_themes_wis2_global_service.adoc +++ b/standard/requirements/core/REQ_themes_wis2_global_service.adoc @@ -2,6 +2,7 @@ [width="90%",cols="2,6a"] |=== ^|*Requirement {counter:req-id}* |*/req/core/themes_wis2_global_service* -^|A |A WCMP record describing a WIS2 global service SHALL provide a `+themes+` property identifying all Earth system disciplines as defined in WCMP codelists. -^|B |A WCMP record describing a WIS2 global service SHALL provide a `+themes+` property identifying the service type provided. +^|A |A WCMP record describing a WIS2 Global Service SHALL provide a `+themes+` property identifying all Earth system disciplines as defined in WCMP codelists. +^|B |A WCMP record describing a WIS2 Global Service SHALL provide a `+themes+` property identifying the service type provided. |=== +//req8 \ No newline at end of file diff --git a/standard/requirements/core/REQ_title.adoc b/standard/requirements/core/REQ_title.adoc index 7504fa57..2790a10a 100644 --- a/standard/requirements/core/REQ_title.adoc +++ b/standard/requirements/core/REQ_title.adoc @@ -5,3 +5,4 @@ ^|A |A WCMP record SHALL provide a `+properties.title+` property. |=== +//req5 \ No newline at end of file diff --git a/standard/requirements/core/REQ_type.adoc b/standard/requirements/core/REQ_type.adoc index 79b0aeae..6ac15eb1 100644 --- a/standard/requirements/core/REQ_type.adoc +++ b/standard/requirements/core/REQ_type.adoc @@ -3,5 +3,6 @@ |=== ^|*Requirement {counter:req-id}* |*/req/core/type* ^|A |A WCMP record SHALL provide a `+properties.type+` property. -^|B |The `+properties.type+` property SHALL be a valid code from the WCMP resource type codelistfootnote:[https://codes.wmo.int/wis/resource-type]. +^|B |The `+properties.type+` property SHALL be a valid code from the link:https://codes.wmo.int/wis/resource-type[WIS resource type] codelist. |=== +//req4 \ No newline at end of file diff --git a/standard/requirements/core/REQ_validation.adoc b/standard/requirements/core/REQ_validation.adoc index f096806c..6a48b459 100644 --- a/standard/requirements/core/REQ_validation.adoc +++ b/standard/requirements/core/REQ_validation.adoc @@ -6,4 +6,4 @@ ^|B |Each WCMP record SHALL provide `+id+`, `+type+`, `+geometry+` and `+properties+` properties for GeoJSON compliance. ^|C |The `+type+` property SHALL be set to a fixed value of `+Feature+` for GeoJSON compliance. |=== - +//req1 diff --git a/standard/requirements/requirements_class_core.adoc b/standard/requirements/requirements_class_core.adoc index 324fc23e..44d281c6 100644 --- a/standard/requirements/requirements_class_core.adoc +++ b/standard/requirements/requirements_class_core.adoc @@ -1,14 +1,11 @@ [[rc_core]] [cols="1,4",width="90%"] |=== -2+|*Requirements Class* -2+|http://wis.wmo.int/spec/wcmp/2/req/core -|Target type |Discovery Metadata -|Dependency |<> -|Dependency |<> -|Dependency |<> -|Dependency |<> -|Dependency |<> -|Pre-conditions | -The record conforms to OGC API - Records - Core: Part 1: Requirements Class: Record Core -|=== +|URI |http://wis.wmo.int/spec/wcmp/2/req/core +|Target type|Discovery metadata +|Dependency | The JavaScript Object Notation (JSON) Data Interchange Format link:https://datatracker.ietf.org/doc/html/rfc8259[(IETF RFC8259 (2017))] +|Dependency |link:https://json-schema.org[JSON Schema] (2022) +|Dependency |The GeoJSON Format link:https://datatracker.ietf.org/doc/html/rfc7946[(IETF: RFC-7946 (2016))] +|Dependency |OGC API - Features - Part 1: Core corrigendum link:https://docs.opengeospatial.org/is/17-069r4/17-069r4.html[(OGC: OGC 17-069r)] +|Pre-conditions |The record conforms to OGC API - Records - Core: Part 1: Requirements Class: Record Core +|=== \ No newline at end of file diff --git a/standard/sections/clause_4_terms_and_definitions.adoc b/standard/sections/clause_4_terms_and_definitions.adoc index 13cd0dfa..07a9a98e 100644 --- a/standard/sections/clause_4_terms_and_definitions.adoc +++ b/standard/sections/clause_4_terms_and_definitions.adoc @@ -1,6 +1,6 @@ == Terms and definitions -This document uses the terms defined in https://portal.ogc.org/public_ogc/directives/directives.php[OGC Policy Directive 49], which is based on the ISO/IEC Directives, Part 2, Rules for the structure and drafting of International Standards. In particular, the word “shall” (not “must”) is the verb form used to indicate a requirement to be strictly followed to conform to this Standard and OGC documents do not use the equivalent phrases in the ISO/IEC Directives, Part 2. +This document uses the terms defined in https://portal.ogc.org/public_ogc/directives/directives.php[OGC Policy Directive 49], which is based on the ISO/IEC Directives, Part 2, Rules for the structure and drafting of International Standards. In particular, the word “SHALL” (not “must”) is the verb form used to indicate a requirement to be strictly followed to conform to this Standard and OGC documents do not use the equivalent phrases in the ISO/IEC Directives, Part 2. This document also uses terms defined in the OGC Standard for Modular specifications (https://portal.opengeospatial.org/files/?artifact_id=34762[OGC 08-131r3]), also known as the 'ModSpec'. The definitions of terms such as standard, specification, requirement, and conformance test are provided in the ModSpec. diff --git a/standard/sections/clause_7_normative_text.adoc b/standard/sections/clause_7_normative_text.adoc index 5a108945..1230b55a 100644 --- a/standard/sections/clause_7_normative_text.adoc +++ b/standard/sections/clause_7_normative_text.adoc @@ -1,129 +1,130 @@ -== The WMO Core Metadata Profile Record +== WMO Core Metadata Profile (Version 2) +Note: This section of working draft document is the same as Appendix F in the https://library.wmo.int/idurl/4/68731[_Manual on the WMO Information System_] (WMO-No. 1060), Volume II. -A WCMP record provides descriptive information about a dataset made available through WIS2. +WMO Core Metadata Profile (WCMP) is an extension of the OGC API – Features standard and shall be encoded in GeoJSON. The normative provisions in this standard are denoted by the base URI (``http://wis.wmo.int/spec/wcmp/2``) and requirements are denoted by partial URIs relative to this base. Property names, values and examples are represented with ``shaded text`` in this document. -=== Requirements Class "Core" - -==== Overview - -The WCMP Core Requirements Class provides requirements for a WCMP discovery metadata record. +:sectnums!: +=== 1. Requirements Class "Core" include::../requirements/requirements_class_core.adoc[] -The table below provides an overview of the set of properties that may be included in a WCMP record. +==== 1.1 Overview +The table below provides an overview of the set of properties that may be included in a WCMP record. -.WCMP record core properties +.Table. WCMP record core properties |=== |Property|Requirement|Description |``id`` -|**required** -|A unique identifier of the dataset (see <<_identifier>>) +|**Required** +|A unique identifier of the dataset (see <<_1_4_identifier>>) |``type`` -|**required** -|A fixed value denoting the WCMP record as a GeoJSON ``Feature`` (see <<_validation>>) +|**Required** +|A fixed value denoting the WCMP record as a GeoJSON ``Feature`` (see <<_1_3_validation>>) |``conformsTo`` -|**required** -|The version of WCMP associated that the record conforms to (see <<_conformance_2>>) +|**Required** +|The version of WCMP associated that the record conforms to (see <<_1_5_conformance>>) |``properties.type`` -|**required** -|The resource type described by the WCMP record (see <<_properties_type>>) +|**Required** +|The resource type described by the WCMP record (see <<_1_6_properties_type>>) |``properties.title`` -|**required** -|A human-readable name of the dataset (see <<_properties_title>>) +|**Required** +|A human-readable name of the dataset (see <<_1_7_properties_title>>) |``properties.description`` -|**required** -|A free-text summary description of the dataset (see <<_properties_description>>) +|**Required** +|A free-text summary description of the dataset (see <<_1_8_properties_description>>) |``properties.keywords`` -|optional -|Keywords, tags or key phrases (see <<_properties_keywords>>) +|Optional +|Keywords, tags or key phrases (see <<_1_9_properties_keywords>>) |``properties.themes`` -|**required** -|Classifiers, categories and controlled vocabularies (see <<_properties_themes>>) +|**Required** +|Classifiers, categories and controlled vocabularies (see <<_1_10_properties_themes>>) |``geometry`` -|**required** -|Geospatial location associated with the dataset, in a geographic coordinate reference system (see <<_geospatial_extent>>) +|**Required** +|Geospatial location associated with the dataset, in a geographic coordinate reference system (see <<_1_11_1_geospatial_extent>>) |``time`` -|**required** -|Temporal extent associated with the dataset (see <<_temporal_extent>>) +|**Required** +|Temporal extent associated with the dataset (see <<_1_11_3_temporal_extent>>) |``additionalExtents.spatial`` -|optional -|Additional geospatial extents in other coordinate reference systems (see <<_additional_geospatial_extents>>) +|Optional +|Additional geospatial extents in other coordinate reference systems (see <<_1_11_2_additional_geospatial_extents>>) |``additionalExtents.temporal`` -|optional -|Additional time instants or periods (see <<_additional_temporal_extents>>) +|Optional +|Additional time instants or periods (see <<_1_11_4_additional_temporal_extents>>) |``properties.contacts`` -|**required** -|Contact information for the dataset (see <<_properties_contacts>>) +|**Required** +|Contact information for the dataset (see <<_1_12_properties_contacts>>) |``properties.version`` -|optional -|Version or edition of the dataset (see <<_properties_version>>) +|Optional +|Version or edition of the dataset (see <<_1_13_properties_version>>) |``properties.externalIds`` -|optional -|Persistent identifiers or handles for the dataset (see <<_properties_persistent_identifiers>>) +|Optional +|Persistent identifiers or handles for the dataset (see <<_1_14_properties_persistent_identifiers>>) |``properties.created`` -|**required** -|The date that the WCMP record was created (see <<_properties_record_creation_date>>) +|**Required** +|The date that the WCMP record was created (see <<_1_15_properties_record_creation_date>>) |``properties.updated`` -|optional -|The date that the WCMP record was updated (see <<_properties_record_update_date>>) +|Optional +|The date that the WCMP record was updated (see <<_1_16_properties_record_update_date>>) |``properties.status`` -|optional -|The operational status of the dataset (see <<_properties_status>>) +|Optional +|The operational status of the dataset (see <<_1_17_properties_status>>) |``properties.wmo:dataPolicy`` -|**conditional** -|Classification code of ``core`` or ``recommended`` based on the WMO Unified Data Policyfootnote:[https://library.wmo.int/idurl/4/58009]. **Required** for datasets (see <<_properties_wmo_data_policy>>) +|**Conditional** +|Classification code of ``core`` or ``recommended`` based on the WMO Data Policy (Resolution 1 (Cg-Ext(2021)))footnote:[Resolution 1 (Cg-Ext(2021)) – WMO Unified Policy for the International Exchange of Earth System Data (World Meteorological Congress: Abridged Final Report of the Extraordinary Session (WMO-No. 1281))]. **Required** for datasets (see <<_1_18_properties_wmo_data_policy>>) |``properties.rights`` -|optional -|A statement that concerns all rights not addressed by the license such as a copyright statement. (see <<_properties_wmo_data_policy>>) +|Optional +|A statement that concerns all rights not addressed by the license such as a copyright statement +(see <<_1_18_properties_wmo_data_policy>>) |``links`` -|**required** -|Online linkages to data retrieval or additional resources associated with the dataset (see <>) +|**Required** +|Online linkages to data retrieval or additional resources associated with the dataset (see <<_1_19_links_and_distribution_information>>) + |``linkTemplates`` -|optional -|Online link templates for dynamic / API access (see <<_templated_links>>) +|Optional +|Online link templates for dynamic / API access (see <<_1_19_2_templated_links>>) |``properties.*`` -|optional -|Additional properties as needed (see <<_additional_properties>>) +|Optional +|Additional properties as needed (see <<_1_20_additional_properties>>) |=== -==== WCMP record representation +==== 1.2. WCMP record representation WCMP record can be represented in various ways internally, in WIS systems and software tools, but its external representation is GeoJSON. include::../recommendations/core/REC_media_type.adoc[] -==== Validation +==== 1.3 Validation The WCMP record schema is based on _OGC API - Records - Part 1: Core: Requirements Class: Record Core_ schema and the associated information model. WCMP records compliant with WCMP schema are therefore compliant with the _OGC API - Records_ record schema. include::../requirements/core/REQ_validation.adoc[] -==== Identifier +==== 1.4 Identifier The `+id+` property is a unique identifier of the dataset. A record identifier is essential for querying and identifying records within the GDC. @@ -138,7 +139,7 @@ of the dataset. A record identifier is essential for querying and identifying r include::../requirements/core/REQ_identifier.adoc[] include::../recommendations/core/PER_identifier.adoc[] -==== Conformance +==== 1.5 Conformance The `+conformsTo+` property to identifies the version of the WCMP standard that the metadata record conforms to. Conformance identification is valuable for version detection and handling of content. @@ -154,18 +155,18 @@ detection and handling of content. include::../requirements/core/REQ_conformance.adoc[] -==== Properties / Type +==== 1.6 Properties / Type The `+type+` property identifies the type of resource that the metadata record describes using values from the resource type codelist. While most metadata records will be set to `dataset`, WCMP can also describe additional resources, such as services and processes. A **dataset** is the primary granularity of a WCMP record describing a collection of data granules. -A **service** is an API or Web service providing a discovery, visualization, or access mechanism that operates on data. +A **service** is an API or web service providing a discovery, visualization, or access mechanism that operates on data. A **process** is a workflow or execution to provide custom functionality to calculate a given output or product. -.Example: +.Example. [source,json] ---- @@ -178,7 +179,7 @@ A **process** is a workflow or execution to provide custom functionality to calc include::../requirements/core/REQ_type.adoc[] -==== Properties / Title +==== 1.7 Properties / Title The `+title+` property is a human-readable name of the dataset. @@ -195,7 +196,7 @@ The `+title+` property is a human-readable name of the dataset. include::../requirements/core/REQ_title.adoc[] -==== Properties / Description +==== 1.8 Properties / Description The `+description+` property is a free-text summary of the dataset. @@ -212,7 +213,7 @@ The `+description+` property is a free-text summary of the dataset. include::../requirements/core/REQ_description.adoc[] -==== Properties / Keywords +==== 1.9 Properties / Keywords The `+keywords+` property is a list of keywords, tags or specific phrases associated with the resource, but are not referenced to a particular vocabulary or knowledge organization system. @@ -234,7 +235,7 @@ The `+keywords+` property is a list of keywords, tags or specific phrases associ include::../recommendations/core/REC_keywords.adoc[] -==== Properties / Themes +==== 1.10 Properties / Themes The `+themes+` property is a list of concepts that are referenced to a vocabulary or knowledge organization system used to classify the resource. @@ -246,7 +247,7 @@ A concept's optional `+url+` property can provide a remote reference to a given A WCMP metadata record can have one or more themes. -.Examples +.Example.Themes object with GRIB2 codes [source,json] ---- "properties": { @@ -281,6 +282,7 @@ A WCMP metadata record can have one or more themes. ... } ---- +.Example.Themes object with BUFR4 codes [source,json] ---- @@ -306,6 +308,7 @@ A WCMP metadata record can have one or more themes. ... } ---- +.Example.Themes object with of the earth-system-discipline from the WMO Topic Hierarchy [source,json] ---- @@ -330,9 +333,9 @@ include::../requirements/core/REQ_themes_wis2_global_service.adoc[] include::../recommendations/core/REC_granularity.adoc[] include::../recommendations/core/PER_themes.adoc[] -==== Geospatial and temporal extents +==== 1.11 Geospatial and temporal extents -===== Geospatial extent +===== 1.11.1 Geospatial extent The `+geometry+` property is the general bounding spatial extent of the dataset in the geographic coordinate system. Geospatial bounding extents provide a useful indicator of the location of the dataset to facilitate search and map displays in the GDC. @@ -371,7 +374,7 @@ include::../recommendations/core/REC_extent_geospatial_point.adoc[] include::../recommendations/core/REC_extent_geospatial_precision.adoc[] include::../recommendations/core/REC_extent_geospatial_wis2_global_service.adoc[] -===== Additional geospatial extents +===== 1.11.2 Additional geospatial extents The `+additionalExtents.spatial+` property is for other geospatial extents associated with the dataset. For example, it may be useful for non-geographic data or for describing multiple sub-areas of a dataset. The `+additionalExtents.spatial.bbox+` property @@ -386,7 +389,7 @@ signed number between -180 and 180, greater than or equal to the minimum longitu * The maximum latitude is the northernmost coordinate of the limit of the dataset extent, expressed in latitude decimal degrees as a signed number between -90 and 90, greater than or equal to the minimum latitude. -This property also facilitates catalogue searches with geospatial predicate (within extent, etc.). +This property also facilitates catalogue searches with geospatial predicate (such as, within extent). .Example @@ -404,15 +407,13 @@ This property also facilitates catalogue searches with geospatial predicate (wit include::../recommendations/core/PER_extent_geospatial.adoc[] -===== Temporal extent +===== 1.11.3 Temporal extent The `+time+` property describes the general bounding extent of the dataset and the temporal resolution. Temporal extents provide a useful indicator of the date and time period of the dataset and facilitates temporal searching in the GDC. -In addition the temporal resolution provides a useful indicator of the data update frequency (for example, for real-time datasets). If only times are given for the interval, it is implicitly assumed that those are recurring every day. - -In cases where no time indication can be derived, it is applicable to state the value of `+null+`. +In addition, the temporal resolution provides a useful indicator of the data update frequency (for example, for real-time datasets). If only times are given for the interval, it is implicitly assumed that those are recurring every day. In cases where no time indication can be derived, it is applicable to state the value of `+null+`. .Examples @@ -459,12 +460,12 @@ In cases where no time indication can be derived, it is applicable to state the ---- To ensure clarity, an additional human-readable explanation is given in the `+properties.description+`. -Further time-related characteristics (e.g. frequency of modifications, available data, etc.) should be added in `+properties.themes+`. +Further time-related characteristics (for example, frequency of modifications, available data, etc.) should be added in `+properties.themes+`. Some cases might be more complex due to the product's characteristics. -If necessary, further granularity can be indicated by the `+additionalExtents.temporal+` property (see <<_additional_temporal_extents>>). +If necessary, further granularity can be indicated by the `+additionalExtents.temporal+` property (see <<_1_11_4_additional_temporal_extents>>). -.Example: Complex time indication +.Example. Complex time indication [source,json] ---- @@ -487,7 +488,12 @@ If necessary, further granularity can be indicated by the `+additionalExtents.te "trs": "http://www.opengis.net/def/trs/ISO-8601" } } -... +---- + +.Example. Complex time indication further described with themes property + +[source,json] +---- "properties": { ... "description": "ICON-EPS 0.5 deg x 0.5 deg regular lat/lon grid, up to +180h every 6h, runs 00/12 UTC, various parameter, various level, various threshold", @@ -506,7 +512,7 @@ include::../requirements/core/REQ_extent_temporal.adoc[] include::../recommendations/core/REC_extent_temporal.adoc[] include::../recommendations/core/PER_extent_temporal_service.adoc[] -===== Additional temporal extents +===== 1.11.4 Additional temporal extents The `+additionalExtents.temporal+` property is for describing other temporal extents associated with the dataset. For example, it may be useful to represent multiple time instances or to identify other temporal reference systems. Temporal extents can be fully bound or open in either direction. An `+additionalExtents.temporal.resolution+` property is able express the temporal granularity at which a given dataset's data is measured, generated, or reported. @@ -535,11 +541,11 @@ Temporal extents can be fully bound or open in either direction. An `+additiona include::../recommendations/core/PER_extent_temporal.adoc[] -==== Properties / Contacts +==== 1.12 Properties / Contacts The `+contacts+` property is the information associated with one or more responsible parties of the resource. -.Examples +.Example. Contacts object with all contact details [source,json] ---- @@ -573,8 +579,7 @@ The `+contacts+` property is the information associated with one or more respons ... } ---- - -A contact can also be specified by using a URL. +.Example. Contacts object with URL to the relevant homepage [source,json] ---- @@ -595,7 +600,7 @@ A contact can also be specified by using a URL. include::../requirements/core/REQ_contacts.adoc[] include::../recommendations/core/PER_contacts.adoc[] -==== Properties / Version +==== 1.13 Properties / Version The `+version+` property is the version or edition of the dataset. Datasets may be versioned by an organization, for example, the version of an NWP model or a processing chain/workflow, and data providers can make this information available when there are multiple versions of a dataset over time. @@ -612,17 +617,17 @@ The `+version+` property is the version or edition of the dataset. Datasets may include::../recommendations/core/PER_version.adoc[] -==== Properties / Persistent identifiers +==== 1.14 Properties / Persistent identifiers The `+externalIds+` property is a persistent (or handle) identifier used to provide a long lasting reference to a digital resource. Persistent identifiers are commonly used for scientific publications and datasets. Examples of persistent identifiers include, but are not limited to: -* Digital Object Identifiers (DOI)footnote:[https://doi.org] -* Archival Resource Key (ARK)footnote:[https://arks.org] -* Handlefootnote:[https://handle.net] +* Digital Object Identifier (https://doi.org[DOI]) +* Archival Resource Key (https://arks.org[ARK]) +* https://handle.net[Handle] -.Example +.Example. Persistent identifiers [source,json] ---- @@ -642,14 +647,14 @@ Examples of persistent identifiers include, but are not limited to: } ---- -.Example: Online citation +.Example. Online citation [source,json] ---- "links": [ { "rel": "cite-as", - "title": "Cite as: WMO/GAW Ozone Monitoring Community, World Meteorological Organization-Global Atmosphere Watch Program (WMO-GAW)/World Ozone and Ultraviolet Radiation Data Centre (WOUDC) [Data]. Retrieved [YYYY-MM-DD], from https://woudc.org. A list of all contributors is available on the website. doi:10.14287/10000004", + "title": "Cite as: WMO/GAW Ozone Monitoring Community, World Meteorological Organization-Global Atmosphere Watch Programme (WMO-GAW)/World Ozone and Ultraviolet Radiation Data Centre (WOUDC) [Data]. Retrieved [YYYY-MM-DD], from https://woudc.org. A list of all contributors is available on the website. doi:10.14287/10000004", "type": "text/html", "href": "https://dx.doi.org/10.14287/10000004" } @@ -659,9 +664,9 @@ Examples of persistent identifiers include, but are not limited to: include::../recommendations/core/REC_pids.adoc[] include::../recommendations/core/PER_pids.adoc[] -==== Properties / Record creation date +==== 1.15 Properties / Record creation date -The `+created+` property is a single date that the WCMP metadata record was created. Note, that this date is not the start or end time of a given dataset. See <<_temporal_extent>> for more information on defining dataset temporal extents. +The `+created+` property is a single date that the WCMP metadata record was created. Note that this date is not the start or end time of a given dataset. See <<_1_11_3_temporal_extent>> for more information on defining dataset temporal extents. .Example @@ -676,9 +681,9 @@ The `+created+` property is a single date that the WCMP metadata record was crea include::../requirements/core/REQ_record_creation_date.adoc[] -==== Properties / Record update date +==== 1.16 Properties / Record update date -The `+updated+` property is the date that the WCMP metadata record was last updated. Note, that this date is not the start or end time of a given dataset. See <<_temporal_extent>> for more information on defining dataset temporal extents. +The `+updated+` property is the date that the WCMP metadata record was last updated. Note, that this date is not the start or end time of a given dataset. See <<_1_11_3_temporal_extent>> for more information on defining dataset temporal extents. .Example @@ -693,9 +698,9 @@ The `+updated+` property is the date that the WCMP metadata record was last upda include::../recommendations/core/REC_record_update_date.adoc[] -==== Properties / Status +==== 1.17 Properties / Status -The `+status+` property identifies the lifecycle of a given dataset. See Annex D for possible codelists to use when encoding this property. +The `+status+` property identifies the lifecycle of a given dataset. [source,json] ---- @@ -710,14 +715,13 @@ The `+status+` property identifies the lifecycle of a given dataset. See Annex include::../recommendations/core/REC_status.adoc[] -==== Properties / WMO data policy +==== 1.18 Properties / WMO data policy -The `+wmo:dataPolicy+` property is a codelist that identifies the classification of the dataset exchange as described by WMO Unified Data Policyfootnote:[https://library.wmo.int/idurl/4/58009] -for the international exchange of Earth system data. The codelist values are `+core+` or `+recommended+`. The `+wmo:dataPolicy+` property is required if the metadata record describes a dataset. +The `+wmo:dataPolicy+` property is a codelist that identifies the classification of the dataset exchange as described by the WMO Data Policy (Resolution 1 (Cg-Ext(2021)))footnote:[Resolution 1 (Cg-Ext(2021)) – WMO Unified Policy for the International Exchange of Earth System Data (World Meteorological Congress: Abridged Final Report of the Extraordinary Session (WMO-No. 1281))] for the international exchange of Earth system data. The codelist values are `+core+` or `+recommended+`. The `+wmo:dataPolicy+` property is required if the metadata record describes a dataset. -Licensing and copyright are expressed via the `+links+` property (see distribution section), providing access, license and attribution details as required. Conditions on use of the data should be indicated for transparency and clarification. +Licensing and copyright are expressed via the `+links+` property (see <<_1_19_links_and_distribution_information>>), providing access, license and attribution details as required. Conditions on use of the data should be indicated for transparency and clarification. -.Example: Core data +.Example. Core data [source,json] ---- @@ -728,7 +732,7 @@ Licensing and copyright are expressed via the `+links+` property (see distributi } ---- -.Example: Recommended data +.Example. Recommended data [source,json] ---- "properties": { @@ -740,7 +744,7 @@ Licensing and copyright are expressed via the `+links+` property (see distributi It is useful to add provider-specific details to have the most detailed information about data policy and additional conditions. -.Example: Recommended data with additional conditions and provider-specific details: +.Example. Recommended data with additional conditions and provider-specific details [source,json] ---- "properties": { @@ -756,7 +760,7 @@ It is useful to add provider-specific details to have the most detailed informat }] ---- -.Example: License for recommended data in the public domain +.Example. License for recommended data in the public domain [source,json] ---- "properties": { @@ -772,14 +776,14 @@ It is useful to add provider-specific details to have the most detailed informat }] ---- -To express rights not address by a license, the `+rights+` property can be used as follows: +To express rights not addressed by a license, the `+rights+` property can be used as follows: -.Example: Rights +.Example. Rights [source,json] ---- "properties": { ... - "rights": "Users are granted free and unrestricted access to this data, without charge and with no conditions on use. Users are requested to attribute the producer of this data. WMO Unified Data Policy (Resolution 1 (Cg-Ext 2021))" + "rights": "Users are granted free and unrestricted access to this data, without charge and with no conditions on use. Users are requested to attribute the producer of this data. WMO Unified Data Policy (Resolution 1 (Cg-Ext 2021))." ... } ---- @@ -788,61 +792,61 @@ include::../requirements/core/REQ_data_policy.adoc[] include::../recommendations/core/REC_data_policy.adoc[] include::../recommendations/core/PER_data_policy.adoc[] -==== Links and distribution information [[links-distribution]] +==== 1.19 Links and distribution information +//[[links-distribution]] -===== Overview +===== 1.19.1 Overview -The `+links+` property describes URLs and APIs for accessing the dataset or for subscribing to dataset notifications. Links are the primary mechanism for interacting with the data, and provide an "actionable" workflow to enhance and improve the user experience with "less clicks" for subscriptions and downloads. +The `+links+` property describes URLs and APIs for accessing the dataset or for subscribing to dataset notifications. Links are the primary mechanism for interacting with the data and provide an "actionable" workflow to enhance and improve the user experience with "less clicks" for subscriptions and downloads. The `+links+` property may also describe URLs for related documentation, related data, or visual images of the dataset. The table below provides an overview of the properties of a link object. -.Link properties +.Table. Link properties |=== |Property|Requirement|Description |``href`` -|**required** -|The link destination or target, or URL +|**Required** +|The link destination or target, or URL. |``rel`` -|optional +|Optional |The relationship that the link bears in the context of the WCMP record. This is a controlled vocabulary defined - by IANA link relationsfootnote:[https://www.iana.org/assignments/link-relations/link-relations.xhtml] or WCMP - defined extensionsfootnote:[https://codes.wmo.int/wis/link-type] (see <<_link_relation_selection>>) + by link:https://www.iana.org/assignments/link-relations/link-relations.xhtml[IANA link relations] or link:https://codes.wmo.int/wis/link-type[WIS link type] extensions. (see table <<_1_19_5_link_relation_selection>>) |``type`` -|optional +|Optional |The media (or MIME) type of the format of the link |``hreflang`` -|optional +|Optional |The language of the content in the link |``title`` -|optional +|Optional |A human-readable name for the link (can be used for display on search / discovery web portals) |``channel`` -|**conditional** +|**Conditional** |For data made available via MQTT, the topic to which a user may subscribe to for notifications and access |``security`` -|optional -|For access controlled data, a description of the access control mechanism applied (see <<_access_control>>) +|Optional +|For access controlled data, a description of the access control mechanism applied (see <<_1_19_4_access_control>>) |``distribution`` -|optional -|Value added information about the link to further assist the user (additional document, typical file size, etc.) (see <<_distribution_information>>) +|Optional +|Value added information about the link to further assist the user (additional document, typical file size, etc.) (see <<_1_19_links_and_distribution_information>>) |=== For recommended data, the ``links`` property may also provide links to services that implement access control in support of authentication and authorization. In secure data use cases, a user needs to be able to detect access-controlled data as part of data discovery and evaluation. -.Example a link object expressing access control using HTTP Basic Authentication for a given data access service +.Example. A link object expressing access control using HTTP Basic Authentication for a given data access service -.Example Access controlled link +.Example. Access controlled link [source,json] ---- @@ -861,7 +865,7 @@ For recommended data, the ``links`` property may also provide links to services }] ---- -.Example: two link objects providing both search and MQTT subscription information +.Example. Two link objects providing both search and MQTT subscription information [source,json] ---- @@ -882,7 +886,7 @@ For recommended data, the ``links`` property may also provide links to services ] ---- -.Example: a link object providing an API capability +.Example. A link object providing an API capability [source,json] ---- @@ -896,7 +900,7 @@ For recommended data, the ``links`` property may also provide links to services ] ---- -.Example: a link object providing a browse graphic +.Example. A link object providing a browse graphic [source,json] ---- @@ -910,11 +914,11 @@ For recommended data, the ``links`` property may also provide links to services ] ---- -===== Templated links +===== 1.19.2 Templated links Templated links allow for specifying a pattern of a link in support API interaction (where parameter values are variable). -.Example: a templated link object of a WMS service providing API access to images: +.Example. A templated link object of a WMS service providing API access to images [source,json] ---- "linkTemplates": [{ @@ -975,13 +979,13 @@ include::../requirements/core/REQ_links.adoc[] include::../recommendations/core/REC_links.adoc[] include::../recommendations/core/PER_links.adoc[] -===== Distribution information +===== 1.19.3 Distribution information The `+distribution+` property provides information about the format of the dataset, associated documentation and representative examples of the dataset. -Additional distribution information is added to allow more comprehensive discovery services. Below is an example of such distribution information. +Additional distribution information is added to allow more comprehensive discovery services. -.Example with the complete distribution information +.Example. Links object with the complete distribution information [source,json] ---- @@ -1013,11 +1017,11 @@ Additional distribution information is added to allow more comprehensive discove include::../recommendations/core/REC_distribution.adoc[] -===== Access control +===== 1.19.4 Access control WCMP record links may also provide links to services that implement access control in support of authentication and authorization. In -secure data use cases, a user needs to be able to detect access controlled data as part of data discovery and evaluation. The -example demonstrates how to express access control using HTTP Basic Authentication for a given data access service. +secure data use cases, a user needs to be able to detect access-controlled data as part of data discovery and evaluation. The +example demonstrates how to express access control using HTTP basic authentication for a given data access service. .Example @@ -1038,14 +1042,14 @@ example demonstrates how to express access control using HTTP Basic Authenticati }] ---- -===== Link relation selection +===== 1.19.5 Link relation selection Link relations are very important and provide valuable context to help clarify the semantics of a given link or URL. The table below provides guidance on which link relation to use to identify common types of links to data and services. -.Link relation selection +.Table. Link relation selection |=== |Link type|Link relation (`rel=`) @@ -1055,10 +1059,10 @@ links to data and services. |Online documentation |`about` -|OpenAPI endpoint (e.g. JSON or YAML) +|OpenAPI endpoint (such as, JSON or YAML) |`service-desc` -|OpenAPI endpoint in HTML (e.g. Swagger, ReDoc) +|OpenAPI endpoint in HTML (such as, Swagger, ReDoc) |`service-doc` |OGC WMS, WFS, WCS, CSW, WPS Capabilities @@ -1093,12 +1097,12 @@ links to data and services. |=== -==== Additional properties +==== 1.20 Additional properties A WCMP record can be extended as required for organizational purposes by adding properties (of any type) in the record. Additional properties do not break compliance to WCMP. -.Example +.Example. [source,json] ---- @@ -1116,3 +1120,19 @@ record. Additional properties do not break compliance to WCMP. ---- include::../recommendations/core/PER_additional_properties.adoc[] + +=== 2. WMO Core Metadata Profile resources + +==== 2.1 WMO Codes Registry + +• http://codes.wmo.int/wis/contact-role +• http://codes.wmo.int/wis/global-service-type +• http://codes.wmo.int/wis/link-type +• http://codes.wmo.int/wis/resource-type +• http://codes.wmo.int/wis/topic-hierarchy/centre-id +• http://codes.wmo.int/wis/topic-hierarchy/data-policy +• http://codes.wmo.int/wis/topic-hierarchy/earth-system-discipline +• http://codes.wmo.int/wis/topic-hierarchy/notification-type + +==== 2.2 WMO schemas server +Validation, examples and other resources are published at https://schemas.wmo.int/wcmp. diff --git a/standard/sections/clause_8_gdc.adoc b/standard/sections/clause_8_gdc.adoc index 63511b7f..ce15ad65 100644 --- a/standard/sections/clause_8_gdc.adoc +++ b/standard/sections/clause_8_gdc.adoc @@ -1,3 +1,4 @@ +:sectnums: == Cataloguing considerations In addition to documenting and describing WIS2 data holdings, WCMP discovery metadata will be @@ -11,6 +12,6 @@ The API of the GDC, in addition to allowing for spatial/temporal/attribute queri may choose to apply facets to WCMP records. Facets are effective when applied against controlled vocabularies and classifications. The following WCMP required properties would be subject to faceting by a GDC: -- ``centre-id`` as defined in <<_identifier>> -- <<_properties_type>> -- <<_properties_wmo_data_policy>> +- ``centre-id`` as defined in <<_1_4_identifier>> +- <<_1_6_properties_type>> +- <<_1_18_properties_wmo_data_policy>>