-
Notifications
You must be signed in to change notification settings - Fork 29
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #179 from opengeospatial/23-019_HK
First draft, Core Sensing and OM Extension
- Loading branch information
Showing
12 changed files
with
1,252 additions
and
40 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -14,6 +14,7 @@ document.html | |
document.xml | ||
document.presentation.xml | ||
*~ | ||
.$* | ||
|
||
# Deploy key | ||
deploy_key |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,5 +2,5 @@ | |
metanorma: | ||
source: | ||
files: | ||
- document.adoc | ||
- 23-019.adoc | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,18 +1,153 @@ | ||
[obligation=informative] | ||
[[overview1]] | ||
== SensorThings API overview | ||
|
||
Clauses not Containing Normative Material | ||
|
||
Paragraph | ||
[[who-should-use]] | ||
=== Who should use the OGC SensorThings API | ||
|
||
=== Relation to Observations, Measurements and Samples | ||
|
||
Organizations that need web-based platforms to manage, store, share, and analyze IoT-based sensor observation data should use the OGC SensorThings API. | ||
The OGC SensorThings API simplifies and accelerates the development of IoT applications. | ||
Application developers can use this open Standard to connect to various IoT devices and create innovative applications without worrying the daunting heterogeneous protocols of the different IoT devices, gateways and services. | ||
IoT device manufacturers can also use OGC SensorThings API as the API can be embedded within various IoT hardware and software platforms, so that the various IoT devices can effortlessly connect with the OGC Standard-compliant servers around the world. | ||
In summary, the OGC SensorThings API is transforming the numerous disjointed IoT systems into a fully connected platform where complex tasks can be synchronized and performed. | ||
|
||
|
||
[[benefits]] | ||
=== Benefits of the OGC SensorThings API | ||
|
||
In today’s world, most IoT devices (e.g., sensors and actuators) have proprietary software interfaces defined by their manufacturers and used selectively. | ||
New APIs are often required and developed on an as-needed basis, often in an environment with resource limitations and associated risks. | ||
This situation requires significant investment on the part of developers for each new sensor or project involving multiple systems and on the part of the providers of sensors, gateways, and portals or services where observations and measurements are required. | ||
|
||
As a standardized data model and interface for sensors in the WoT and IoT<<footnote2>>, the OGC SensorThings API offers the following benefits: | ||
(1) it permits the proliferation of new high value services with lower overhead of development and wider reach, | ||
(2) it lowers the risks, time and cost across a full IoT product cycle, and | ||
(3) it simplifies the connections between devices-to-devices and devices-to-applications. | ||
|
||
|
||
[[overview2]] | ||
=== SensorThings API Overview | ||
|
||
The OGC SensorThings API data model consists of three main parts: | ||
(1) the Sensing part, | ||
(2) the Sampling part and | ||
(3) the Tasking part. | ||
Additionally, SensorThings API supports the following two extensions to the data model: | ||
(1) the Sensing Extension (Observations & Measurements) and | ||
(2) the Relations extension | ||
|
||
The Sensing part allows IoT devices and applications to CREATE, READ, UPDATE, and DELETE (__i.e.__, HTTP POST, GET, PATCH, and DELETE) IoT data and metadata in a SensorThings service. | ||
The Sensing part is designed based on the OGC/ISO Observation, Measurements and Samples (OMS) model [OGC 20-004r3 and ISO 19156:2023]. | ||
An Observation is modeled as an act that produces a result whose value is an estimate of a property of a given Feature. | ||
An Observation instance is characterized by its event time (e.g., resultTime and phenonmenonTime), Feature, ObservedProperty, and the procedure used (often a Sensor). | ||
Moreover, Things are also modeled in the SensorThings API. | ||
A Thing draws from the same concept as a Host in OMS where a Host is defined as a collection of Observers (defined as Sensor in SensorThings API). | ||
Formally, its definition follows the ITU-T definition: | ||
“__an object of the physical world (physical things) or the information world (virtual things) that is capable of being identified and integrated into communication networks__” [ITU-T Y.2060]. | ||
The geographical Locations of Things are useful in almost every application and as a result are included as well. | ||
For the Things whose location changed, the HistoricalLocations entities offer the history of the Thing’s locations. | ||
A Thing also can have multiple Datastreams. | ||
A Datastream is a collection of Observations grouped by the same ObservedProperty, Sensor and optionally by Feature and ObservingProcedure. | ||
An Observation is an event performed by a Sensor that produces a result whose value is an estimate of an ObservedProperty of any given Feature which may be a proximate or ultimate FeatureofInterest. | ||
Details of each above described entity are provided in <<sensing-entities1>>. | ||
|
||
The Sampling part is a new addition to the SensorThings API. | ||
As is often the case, an Observation may not be a true representation of the intended Feature's Property that an Observer may be trying to Observe. | ||
Sampling is a common strategy to understand the characteristics of an otherwise difficult-to-measure Property of any feature-of-interest. | ||
In order to generate Samplings, a Sampler, that may be any physical device or even a human being part of a survey campaign, must carefully select a SamplingProcedure. | ||
Samplings may be generated by a sequence of SamplingProcedures (and vice-versa), however a Sampler must employ a unique SamplingProcedure to maintain unique Sampling-Sampler-SamplingProcedure relationships. | ||
In scenarios where a Feature is not directly available for Sampling, a PreparationProcedure composed of multiple PreparationSteps may optionally be used to generate a PreparedFeature. | ||
The entities are explained in detail in <<sampling-entities>>. | ||
|
||
The Tasking part provides a standard way for parameterizing - also called tasking - of taskable IoT devices, such as individual sensors and actuators, composite consumer / commercial / industrial / smart cities in-situ platforms, mobile and wearable devices, or even unmanned systems platforms such as drones, satellites, connected and autonomous vehicles, etc. | ||
A Task defines a control action executed by an Actuator. | ||
Actuator is modeled to describe a device that is equipped with Tasking Capabilities. | ||
A TaskingCapability characterizes an Actuator's (or in some cases, a Thing's) ability to trigger a change in ActuableProperties of any FeatureOfInterest by executing the given Task. | ||
The Tasking Data Model thus mirrors the Sensing Data Model. | ||
Each of these entities are elaborated further in <<tasking-entities>>. | ||
|
||
The <<sensing-entities-om-extn>> and <<relations-extension>> are optional extensions to the data model that may be used for extended data modelling requirements. | ||
|
||
[[observations-measurements]] | ||
=== SensorThings API and Relation to ISO/OGC Observations, Measurements and Samples | ||
|
||
Managing and retrieving observations and metadata from IoT sensor systems is one of the most common use cases. | ||
As a result, SensorThings API’s sensing part is designed based on the OMS model. | ||
OMS defines models for the exchange of information describing observation acts, their results as well as the feature involved in sampling when making observations. | ||
|
||
|
||
SensorThings API defines nine entities for the IoT sensing applications and two additional entities in the OM extension. | ||
<<sensingentities,base>> lists each component and its relationship with OMS. | ||
SensorThings API uses the term of Sensor to describe the Observer that is used in generating an Observation, instead of using OMS’ term of Observer. | ||
|
||
|
||
[[tab-sensing-entities]] | ||
.SensorThings API Sensing entities and equivalent concepts in OMS 3.0 | ||
|=== | ||
|SensorThings API Entities |OMS 3.0 Concepts | ||
|
||
|Thing | ||
|Host | ||
|
||
|Datastream | ||
|- | ||
|
||
|Sensor | ||
|Observer | ||
|
||
|Deployment | ||
|Deployment | ||
|
||
|Observation | ||
|Observation | ||
|
||
|ObservingProcedure | ||
|Observing Procedure | ||
|
||
|ObservedProperty | ||
|Observed Property | ||
|
||
|Feature | ||
|Feature | ||
|=== | ||
|
||
|
||
[[revision-differences]] | ||
=== SensorThings API 2.0 changes from 1.1 | ||
[#sta-changes,reftext='{table-caption} {counter:table-num}'] | ||
.Changes in the SensorThings API 2.0 data model compared to v1.x | ||
[width="100%",cols="5,20a",options="header"] | ||
|==== | ||
| *Entity* | *Changes* | ||
| Sensor | description attribute is now optional and not mandatory | ||
| Thing | description attribute is now optional and not mandatory | ||
| Location | description attribute is now optional and not mandatory | ||
| Datastream | | ||
|
||
- description attribute is now optional and not mandatory | ||
- resultType replaces the observationType attribute, this eliminates MultiDatastream entity | ||
- unitOfMeasurement SHALL be embedded within the observedType attribute and does not exist as an independent attribute within the Datastream entity | ||
- A Datastream can link to multiple ObservedProperties which was only possible with MultiDatastream entity earlier. | ||
The SWE-Common based observationType attribute eliminates the need for having a separate MultiDatastream entity | ||
- A Datastream can now be partitioned by the Feature it observes as an optional link between Datastream and Feature is introduced | ||
|
||
| ObservedProperty | description attribute is now optional and not mandatory | ||
| Observation | | ||
|
||
- properties replaces the parameters attribute | ||
- An Observation may or may not link to any Feature in contrast to the mandatory link between Observation and FeatureOfInterest from v1.x | ||
|
||
| Feature | The Feature entity replaces the FeatureOfInterest entity from 1.x as it now takes the role of UltimateFeatureOfInterest or ProximateFeatureOfInterest depending upon the context and links with Observation and Datastream entities | ||
|==== | ||
|
||
|
||
=== Relation to OASIS-OData | ||
|
||
The OGC SensorThings API v2 interface is not an OData interface. It specifies a subset of the OData interface, and extends it at the same time. | ||
The OGC SensorThings API v2 interface is not an OData interface. | ||
It specifies a subset of the OData interface, and extends it at the same time. | ||
|
||
An SensorThings API Server implementation can implement the full OData specification. | ||
An OData client can access a SensorThings API service. | ||
|
||
EDIOR: Verify this is true. | ||
EDITOR: Check if this is true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.