OMS GeoJSON drafting - opengeospatial/om-swg GitHub Wiki
OMS GeoJSON Common
Requirement 1
An OMS GeoJSON Object is a GeoJSON Object implementing one of the Observations, Measurements and Samples concepts defined in the [OMS] Standard encoded as an OGC JSON Feature as specified in the [OGC FG-JSON] Standard.
Requirement 2:
Link Object is an JSON Object describing a Web Link according to [RFC 8288] between two resources as specified in the [OGC API Common] Standard.
Requirement 3:
If an OMS GeoJSON Object is a Located Object, it SHALL implement the "location" specifier defined by [OMS] Requirement http://www.opengis.net/spec/om/3.0/req/gen/location-sem. The "location" specifier SHALL be encoded using one of the following two options depending on the geometry type and the coordinate reference system used:
- If the "location" geometry can be represented as a valid GeoJSON geometry in the coordinate reference system WGS84, it SHALL be encoded as the value of the
geometrymember as specified in the [GeoJSON] Standard. There MAY additionally be awheremember with an identical value with thegeometrymember. - Otherwise, the geometry SHALL be encoded as the value of the
wheremember as specified in the [OGC FG-JSON] Standard. There SHALL additionally be ageometrymember as specified in the [GeoJSON] Standard, either with a valid GeoJSON geometry value representing an approximation of the "location" geometry in the coordinate reference system WGS84 if available, or valuenull.
Requirement 4
If the location of a Located Object is encoded using the where member, the identifier of the coordinate reference system used for the coordinates defining the geometry SHALL be provided using the coordRefSys member as specified in the [OGC FG-JSON] Standard.
Requirement 5
If an OMS GeoJSON Object is a Named Object, its name SHALL be encoded using the name sub-member of the properties member with a value of type JSON string. Providing more than one name for Named Object is not allowed.
Recommendation 1
A human-readable name SHOULD be made available for a Named Object to help identifying it and distinguishing between it and other Named Objects.
Requirement 6
If an OMS GeoJSON Object is a Described Object, its textual description SHALL be encoded using the description sub-member of the properties member with value of type JSON string. Providing more than one description for a Described Object is not allowed.
Requirement 7:
If an an OMS GeoJSON Object is an Externally Linked Object, it SHALL implement the "link" specifier providing an additional resource describing it further detail, as defined by [OMS] Requirement http://www.opengis.net/spec/om/3.0/req/gen/link-sem. The "link" specifier SHALL be encoded using the an Link Object with relation type rel="alternate" included in the JSON Array value of the Externally Linked Object member links.
Requirement 8
If an OMS GeoJSON Object member is an Embedded Collection Member, it SHALL be encoded using an a member with the value of type JSON Array consisting of JSON Objects of type other than Link Object.
Requirement 9
If an OMS GeoJSON Object member is a Linked Collection Member, it SHALL be encoded using a member either with value of type
- JSON Array consisting of Link Objects pointing to individual remote resources, or
- Link Object with relation type
rel="items"pointing to items of a collection of remote resources.
Requirements Class Observations Core
Conforms to:
- [OMS] Standard Requirements Class
http://www.opengis.net/spec/om/3.0/conf/obs-basic. - [OGC FG-JSON] Standard Requirements Class "Core"
- [OGC FG-JSON] Standard Requirements Class "Feature Types and Schemas"
Observer Object
Requirement 13:
Observer Object is a Located, Named, Described, and Externally Linked OMS GeoJSON Object as defined in Requirements 3, 5, 6 and 7. It implements the [OMS] concept defined by the Requirement http://www.opengis.net/spec/om/3.0/req/obs-cpt/Observer/Observer-sem and has a featureType member with value [oms-geojson:Observer].
[Drafting note: "[oms-geojson:Observer]" is a safe CURIE, a shorthand for http://www.opengis.net/oms-json/1.0:Observer that we might have to register through the OGC-NA, see https://github.com/opengeospatial/NamingAuthority/blob/fix-for-issue-92/policyAndProcedures/OGCNANameTypeSpecificationForDefinitions/clause_6_1_CURIEs.adoc]
Requirement 14
If the collection of Observations created by this Observer is made available, they SHALL be provided using the relatedObservations sub-member of the properties member. The relatedObservations is a Linked Collection Member as specified in Requirement 9.
Requirement 15
If the collection of Deployments of this Observer is made available, they SHALL be provided using the deployments sub-member of the properties member. The deployments is a Linked Collection Member as specified in Requirement 9.
Requirement 16
If the collection of ObservableProperties of this Observer is made available, they SHALL be provided using the observableProperties sub-member of the properties member. The observableProperties is a Linked Collection Member as specified in Requirement 9.
Requirement 17
If the collection of ObservingProcedures of this Observer is made available, they SHALL be provided using the observingProcedures sub-member of the properties member. The observingProcedures is a Linked Collection Member as specified in Requirement 9.
Requirement 18
If the additional metadata descriptions for this Observer are made available, they SHALL be provided using the metadata sub-member of the properties member. The metadata is a Linked Collection Member as specified in Requirement 9.
Example:
{
"@context": "http://schemas.opengis.net/oms-json/1.0/ld-context.json"
"type": "Feature",
"featureType": "[oms-json:Observer]",
"@type": "Observer",
"id": "https://acme.example/oms/observers/observer001",
"links": [
{
"href": "https://acme.example/oms/collections/observers/items/observer001?f=json",
"rel": "self",
"type": "application/vnd.ogc.fg+json",
"title": "This document"
},
{
"href": "https://acme.example/oms/collections/observers/f=json",
"rel": "collection",
"type": "application/json",
"title": "Collection this observer belongs to"
},
{
"href": "https://acme.example/oms/collections/observers/items/observer001?f=html",
"rel": "alternate",
"type": "text/html",
"title": "This document as HTML"
},
{
"href": "http://schemas.opengis.net/oms-json/1.0/json-schema/observer.json",
"rel": "describedby",
"type": "application/schema+json",
"title": "JSON Schema of this document"
}
],
"geometry": {
"type": "Point",
"coordinates": [60.202842463, 24.961141627]
},
"coordRefSys": "http://www.opengis.net/def/crs/EPSG/0/3067",
"where": {
"type": "Point",
"coordinates": [6675749, 386987]
},
"properties": {
"name": "Helsinki/Kumpula automatic weather station",
"description": "Integrated weather observation station device, fully compliant with World Meteorological Organization guidelines.",
"relatedObservations": {
"href": "https://acme.example/oms/collections/observations/items/?observer=observer001",
"rel": "items",
"type": "application/json",
"title": "Collection of observations made by this observer"
},
"deployments": {
"href": "https://acme.example/oms/collections/deployments/items/?observer=observer001",
"rel": "items",
"type": "application/json",
"title": "Collection of deployments of this observer"
},
"observableProperties": {
"href": "https://acme.example/oms/collections/observableProperties/items/?observer=observer001",
"rel": "items",
"type": "application/json",
"title": "Collection of observable properties available from this observer"
},
"observingProcedures": {
"href": "https://acme.example/oms/collections/observingProcedure/items/?observer=observer001",
"rel": "items",
"type": "application/json",
"title": "Collection of observing procedures supported by this observer"
},
"metadata": [
{
"href": "https://acme.example/meta/collections/OMSCatalog/items/observer001",
"type": "application/geo+json",
"title": "Metadata record for this observer"
}
]
}
}
Observation Object
Host Object
Deployment Object
ObservedProperty Object
ObservingProcedure Object
SpatialSample Object
GenericDomainFeature Object
ObservationCollection Object
ObservationCharacteristics Object
ObservingCapability Object
Requirements Class Samples Core
Sample Object
MaterialSample Object
SpatialSample Object
StatisticalSample Object
Sampling Object
Sampler Object
PreparationProcedure Object
PreparationStep Object
SamplingProcedure Object
SampleCollection Object
Requirements Class JSON-LD Support
Conforms to:
- [JSON-LD] Standard
Requirement 10
If a JSON-LD context is made available for an OMS GeoJSON Object, it SHALL be encoded using the @context member. Additionally the @type member SHALL be used to point to the implemented OMS Concept as specified in the Table x.
Recommendation 11
Unless a more specific or otherwise more suitable JSON-LD context is made available for the OMS GeoJSON Object, the @context member SHOULD have the value http://schemas.opengis.net/oms-json/1.0/ld-context.json.
Requirements Class 3D Geometry Support
Conforms to:
- [OGC FG-JSON] Standard Requirements Class "3D"