Skip to content

Commit 0176242

Browse files
committed
add recipe for WCMP2 Extensions
1 parent 7ebfb5a commit 0176242

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

cookbook/sections/earth-system-discipline-domain-experts.adoc

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,3 +143,65 @@ Reordering the levels of topics and potentially reducing the number of sublevels
143143
Notification messages are small pieces of information. MQTT[S] broker and clients are able to handle a very large number of messages. In that sense, receiving, potentially, too many messages is not a problem. However, downloading data, depending on the size of the data might be slower and less efficient. If, for a particular dataset, the geometry information available in the notification message is not sufficient to allow client-side filtering before download, it is suggested to provide additional information in the `properties` object of the notification message so that users can decide _before_ downloading if the data in this particular messsage is useful for them.
144144

145145
See <<_advertise_client_side_filters_for_data_subscriptions_in_wcmp2_and_wnm>> for more information on client side filtering
146+
147+
=== WCMP2 Extensions: creating Earth system discipline domain specific profiles of WCMP2
148+
149+
https://docs.ogc.org/is/20-004r1/20-004r1.html#clause-record-core[OGC API - Records - Part 1: Core: Requirements Class: Record Core] allows for extension and profiling of the metadata content model. In this context, WCMP2 itself is a domain profile, as WMO's discovery metadata standard for all Earth system disciplines.
150+
151+
As part of WIS2, Earth system discipline domain experts may choose to extend and profile WCMP2 to meet their specific needs. Typical examples of where extensions can be useful include, but are not limited to:
152+
153+
- further constraining specific WCMP2 properties (e.g. based on a controlled vocabulary)
154+
- enforcing optional WCMP2 properties to be required
155+
- adding new/additional properties/elements to a WCMP2 record
156+
157+
Profiling WCMP2 can enable domain communities achieve deeper interoperability (or tighter coupling) to meet their needs. For example, an NWP profile of WCMP2 may drive a user-focused NWP portal which leverages domain specific properties of a WCMP2 record for more meaningful search results and assessment for use.
158+
159+
==== Considerations for creating a WCMP2 Extension
160+
161+
Before creating an extension, domain experts need to give thought on the following aspects:
162+
163+
- gap analysis in WCMP2: can existing WCMP2 properties be used?
164+
- use cases: consider how the additional properties (or constraints on existing) would be used (as a queryable, returnable, etc.)
165+
- sustainability: while developing a WCMP2 extension can be worthwhile metadata modelling exercise, ensure that there is a team in place to help maintain the extension over time. This means having clear ownership of a WCMP2 extension that is subject to ongoing review, and supporting user questions, issues, enhancements and bug fixes
166+
167+
==== How to create a WCMP2 Extension
168+
169+
WCMP2 extensions can be defined on https://github.com/wmo-im/wcmp2-extensions[WMO's GitHub repository for WCMP2 Extensions]. Domains can identify and propose extensions as GitHub issues and Pull Requests, which are reviewed by https://github.com/wmo-im/tt-wismd[WMO TT-WISMD]:
170+
171+
The following elements are required for any WCMP2 extension:
172+
173+
* directory on GitHub repository, containing:
174+
** examples (directory `examples/`): a directory of example WCMP2 records exemplifying the extension
175+
** JSON Schema (directory `schema/`): a directory of the JSON Schema definition the extension, encoded as YAML. The JSON Schema definition should either refer to controlled vocabularies from existing online vocabularies or define inline as `enum` lists
176+
** README (file `README.md`): the WCMP2 Extension Specification, which includes:
177+
*** owner: clear, unambiguous ownership identification of the Extension
178+
*** prefix: prefix for all defined elements (i.e. `hydro:`, `nwp:`, etc.)
179+
*** conformance: URI for conformance identification and usage in WCMP2 documents (`conformsTo` member)
180+
*** maturity: level of maturity guideline for usage
181+
*** definitions: specification of additional elements and their requirements (required/optional)
182+
183+
.Example directory structure
184+
[source,bash]
185+
----
186+
|__hydro
187+
|____README.md
188+
|____schema
189+
| |____hydro-schema.yaml
190+
|____examples
191+
| |____example1.json
192+
| |____example2.json
193+
----
194+
=== Differences in WCMP2 records with Extensions
195+
196+
A WCMP2 record with a defined extension per above would provide the following in `conformsTo`:
197+
198+
.Example of identifying additional conformance for a WCMP2 Extension
199+
[source,json]
200+
----
201+
"conformsTo": [
202+
"http://wis.wmo.int/spec/wcmp/2/conf/core",
203+
"https://wmo-im.github.io/wcmp2-extensions/hydro" # TODO: clarify how to best identify
204+
]
205+
----
206+
207+
This will allow a WCMP2 parser to detect additional conformance to a given Extension and validate accordingly (in addition to validating WCMP2 Core).

0 commit comments

Comments
 (0)