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:

  1. 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 geometry member as specified in the [GeoJSON] Standard. There MAY additionally be a where member with an identical value with the geometry member.
  2. Otherwise, the geometry SHALL be encoded as the value of the where member as specified in the [OGC FG-JSON] Standard. There SHALL additionally be a geometry member 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 value null.

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"