From 9e369f624e8d6ae3b8213dffa93e3950bc5b8b20 Mon Sep 17 00:00:00 2001 From: Tom Kralidis Date: Mon, 22 Feb 2021 19:13:24 -0500 Subject: [PATCH] update keywords and themes --- core/examples/json/keywords-themes.json | 36 +++++++++++++++++++ core/examples/json/record.json | 8 ++--- core/openapi/schemas/recordGeoJSON.yaml | 12 +++---- core/standard/clause_6_overview.adoc | 1 + core/standard/clause_7_core.adoc | 21 ++++++++++- .../core/REC_record-keywords-themes.adoc | 7 ++++ 6 files changed, 74 insertions(+), 11 deletions(-) create mode 100644 core/examples/json/keywords-themes.json create mode 100644 core/standard/recommendations/core/REC_record-keywords-themes.adoc diff --git a/core/examples/json/keywords-themes.json b/core/examples/json/keywords-themes.json new file mode 100644 index 00000000..095007c6 --- /dev/null +++ b/core/examples/json/keywords-themes.json @@ -0,0 +1,36 @@ +{ + "keywords": [ + "total", + "ozone", + "level 1.0", + "column", + "dobson", + "brewer", + "saoz" + ], + "themes": [ + { + "concepts": [ + "dobson", + "brewer", + "vassey", + "pion", + "microtops", + "spectral", + "hoelper", + "saoz", + "filter" + ], + "scheme": "https://geo.woudc.org/codelists.xml#WOUDC_InstrumentCode" + }, + { + "concepts": [ + "atmosphericComposition", + "pollution", + "observationPlatform", + "rocketSounding" + ], + "scheme": "https://wis.wmo.int/2012/codelists/WMOCodeLists.xml#WMO_CategoryCode" + } + ] +} diff --git a/core/examples/json/record.json b/core/examples/json/record.json index e9d3e106..2671f3d6 100644 --- a/core/examples/json/record.json +++ b/core/examples/json/record.json @@ -50,7 +50,6 @@ "publisher": "https://woudc.org", "themes": [ { - "scheme": "https://geo.woudc.org/codelists.xml#WOUDC_InstrumentCode", "concepts": [ "dobson", "brewer", @@ -61,16 +60,17 @@ "hoelper", "saoz", "filter" - ] + ], + "scheme": "https://geo.woudc.org/codelists.xml#WOUDC_InstrumentCode" }, { - "scheme": "https://wis.wmo.int/2012/codelists/WMOCodeLists.xml#WMO_CategoryCode", "concepts": [ "atmosphericComposition", "pollution", "observationPlatform", "rocketSounding" - ] + ], + "scheme": "https://wis.wmo.int/2012/codelists/WMOCodeLists.xml#WMO_CategoryCode" } ], "formats": [ diff --git a/core/openapi/schemas/recordGeoJSON.yaml b/core/openapi/schemas/recordGeoJSON.yaml index 95d2784f..e9405c4a 100644 --- a/core/openapi/schemas/recordGeoJSON.yaml +++ b/core/openapi/schemas/recordGeoJSON.yaml @@ -78,12 +78,6 @@ properties: items: type: object properties: - scheme: - type: string - description: |- - An identifier for the knowledge organization - system used to classify the resource. It is recommended that the - identifier by a resolvable URI. concepts: type: array description: |- @@ -92,6 +86,12 @@ properties: for each entity/concept identifier. items: type: string + scheme: + type: string + description: |- + An identifier for the knowledge organization + system used to classify the resource. It is recommended that the + identifier by a resolvable URI. formats: type: array description: A list of available distributions of the resource. diff --git a/core/standard/clause_6_overview.adoc b/core/standard/clause_6_overview.adoc index 0973bacf..eb5845a5 100644 --- a/core/standard/clause_6_overview.adoc +++ b/core/standard/clause_6_overview.adoc @@ -65,6 +65,7 @@ The Records API offers various levels of search capability of escalating complex * a bounding box * a time instant or time period * keywords +* free text * equality predicates based on a subset of core queryables (e.g. by resource type, by external identifier) This specification also includes a conformance class that allows a catalogue to be searched using https://portal.opengeospatial.org/files/?artifact_id=56866[OpenSearch Geo]. OpenSearch Geo gives the user more control over the kinds of geometries, beyond a bounding box, that can be used to define an area of interest. diff --git a/core/standard/clause_7_core.adoc b/core/standard/clause_7_core.adoc index 15f307e0..1e111674 100644 --- a/core/standard/clause_7_core.adoc +++ b/core/standard/clause_7_core.adoc @@ -418,7 +418,7 @@ include::recommendations/core/PER_additional-properties.adoc[] .Record Response Schema [source,yaml] ---- -include::../openapi/schemas/record.yaml[] +include::../openapi/schemas/recordGeoJSON.yaml[] ---- The following JSON is an example of a response to an OGC API - Records @@ -468,6 +468,25 @@ include::../examples/json/record.json[] |associations |O |A list of links for accessing the resource, links to other resources associated with this resource, etc. |properties.associations |=== +==== Keywords and Themes + +A record allows for one ``properties.keywords`` and 0..n ``properties.themes`` +properties. The following provides an example of using keywords for free +form terms (e.g. tags) as well as themes to articulate terms from formal +vocabularies. + +[#keywords-themes-example,reftext=`Keywords and themes Example`] +.Keywords and themes Example +[source,json] +---- +include::../examples/json/keywords-themes.json[] +---- + +The following recommendations provide clarification on where and how to use +these properties in a record. + +include::recommendations/core/REC_record-keywords-themes.adoc[] + ==== Associations and Links A record contains both `links` and `properties.associations` properties which diff --git a/core/standard/recommendations/core/REC_record-keywords-themes.adoc b/core/standard/recommendations/core/REC_record-keywords-themes.adoc new file mode 100644 index 00000000..0de0d103 --- /dev/null +++ b/core/standard/recommendations/core/REC_record-keywords-themes.adoc @@ -0,0 +1,7 @@ +[[rec_record-keywords-themes]] +[width="90%",cols="2,6a"] +|=== +^|*Recommendation {counter:rec-id}* |*/rec/core/record-associations* +^|A |Implementations SHOULD use the record `properties.keywords` property to provide free form keywords associated with the current record. +^|B |Implementations SHOULD use the record `properties.themes` property to enumerate 1..n objects of concepts and their respective knowledge organization system/controlled vocabulary associated with the current record. +|===