The Semantic Sensor Network (SSN) ontology is an ontology for describing sensors and their observations, the procedures used, the features of interest and observed properties that are the subject of observation, samples used in the course of observations, as well as actuators. This document describes some extensions to the SSN ontology to enable:
The namespace for SSN terms is http://www.w3.org/ns/ssn/
The namespace for SOSA terms is
http://www.w3.org/ns/sosa/
The suggested prefix for the SSN namespace
is ssn
The suggested prefix for the SOSA namespace is sosa
The SSN ontology is available at http://www.w3.org/ns/ssn/.
The SOSA ontology is available at http://www.w3.org/ns/sosa/.
The SSN-Extensions ontology is available at https://github.com/w3c/sdw/tree/gh-pages/ssn-extensions/rdf.
For OGC - This is a Public Draft of a document prepared by the Spatial Data on the Web Interest Group (SDWIG) — a joint W3C-OGC project (see charter). The document is prepared following W3C conventions. This document is not an OGC Standard. This document is distributed for review and comment. This document is subject to change without notice and may not be referred to as an OGC Standard. Recipients of this document are invited to submit, with their comments, notification of any relevant patent rights of which they are aware and to provide supporting documentation.
New classes and properties are introduced in this extension to SSN. The new elements primarily relate to additional requirements for describing observations and collections of observations. The ontology document <owl:imports> the SSN ontology, and adds the new elements and axioms in a new RDF namespace.
The Semantic Sensor Network (SSN) ontology is an ontology for describing sensors and their observations, the involved procedures, the studied features of interest, the samples used to do so, and the observed properties, as well as actuators [[vocab-ssn]]. The elements of the ontology are defined in two modules:
However, a number of requirements for describing observations that have been described in the research literature ([[?OM-Lite]], [[?OBOE]]) are not supported directly by SSN. In particular:
This document describes solutions these requirements.
The classes and properties described in this document are denoted using Compact URIs [[curie]].
These classes and properties are put into the RDF namespace for SOSA, i.e. http://www.w3.org/ns/sosa/
which is used for the core elements of SSN [[vocab-ssn]], since the new classes and properties are expected to be used in the same context.
However, these extensions to SOSA/SSN are packaged in a separate graph (ontology file) which is denoted http://www.w3.org/ns/ssn/ext/
, and is currently available from the GitHub repository.
The table below indicates the full list of namespaces and prefixes used in this document.
Prefix | Namespace |
---|---|
owl |
http://www.w3.org/2002/07/owl# |
rdf |
http://www.w3.org/1999/02/22-rdf-syntax-ns# |
rdfs |
http://www.w3.org/2000/01/rdf-schema# |
sosa |
http://www.w3.org/ns/sosa/ |
ssn |
http://www.w3.org/ns/ssn/ |
xsd |
http://www.w3.org/2001/XMLSchema# |
Where class descriptions include local restrictions on properties, these are described using the OWL 2 Manchester Syntax [[owl2-manchester-syntax]].
Examples and other code fragments are serialized using RDF 1.1 Turtle notation [[turtle]]. All examples and tests are available from the GitHub repository.
The object of the original hasFeatureOfInterest property of an act of observation, sampling, or actuation is the immediate or proximate FeatureOfInterest.
In some cases this is not the the ultimate thing that the act of observation, sampling, or actuation is concerned with, but is an intermediate thing, often a sample of the ultimate feature of interest, or perhaps a sample of a sample, etc.
There will often be a specifiable relationship between the proximate and ultimate feature of interest, such as a sampling-chain.
If this relationship is recorded, then an ultimate feature of interest might be inferred.
Nevertheless, particularly for discovery purposes, it is usually the ultimate feature of interest that really matters to the data user.
This requirement is satisfied by an object property called hasUltimateFeatureOfInterest
.
Some patterns for the relationship of the ultimate feature of interest to observations () and acts of sampling (), and within sampling-chains, are illustrated below.
This requirement was described in OM-Lite [[?OM-Lite]], but was addressed there using a different pattern in which the property oml:featureOfInterest
always links to the ultimate feature-of-interest, and an additional property oml:samplingStrategy
links to the sample or some other description of the sampling arrangements.
However, that approach allowed multiple possible interpretations of ‘featureOfInterest’, and only representated chains of sampling or observation events indirectly.
The solution described here is explicit, and also applies to acts of sampling and actuation.
Many observation workflows rely on a chain of samples, each making a sub-sample of the predecessor sample.
Knowing either the original sample or the initial feature of interest at the base of the chain is often useful for both discovery and management purposes.
For example, shows a scenario from geology involving many samples derived from an initial one, with some relationships that may be useful in processing and discovery of subsequent observations, the intention of which will be to characterize various aspects of the original sample which is representative of an ultimate feature of interest.
This is supported by two further object properties for relationships between samples and features of interest, called hasOriginalSample
and hasSampledFeature
.
Having a direct indication of an original sample allows multiple results to be combined to describe the sample. Having a direct indication of the ultimate feature being sampled allows discovery of many samples that are intended to be representative of that feature.
Note that the scenario in is simplified from real-life scenarios, and also that the diagram only shows a subset of the full set of resources and relationships.
A collection of observations may share a common value for one or more of the characteristic observation properties. For example:
These patterns can be accommodated with the class ObservationCollection
individuals of which may hold one or more of the essential properties of an atomic observation, except for the result.
Where present, the value of the property(s) of the collection are shared by all member observations.
Of the essential properties of an observation, only the value of each actual hasResult is not potentially shared by all member observations, though at least one of the other properties would be expected to vary between members in a typical collection.
For example, describes a collection of remote sensing observations using the same sensor on different scenes, while is a series of the same scene on different days.
Collections may be nested. For example, an outer observation-collection might share the observed-property, procedure and sensor, and contain inner observation-collections at different phenomenon-times, each of which contain a set of observations on different features-of-interest ().
Observations can be factored into collections in more than one way, so more than one set of nested observation-collections can collect the same set of atomic results. For example, the same outer collection may contain inner collections concerning different features-of-interests, each containing a set of observations at different phenomenon-times ().
Effectively, the results of each observation-collection correspond to a slice in a data-cube which is composed of the results of the complete set of observations.
This requirement was addressed in OM-Lite [[?OM-Lite]] following the pattern described here.
This feature might also apply to collections of Actuations but this application has not yet been explored.
In this vocabulary specification, Manchester syntax [[owl2-manchester-syntax]] is used where the value of a field is not a simple term denoted by a URI or cURI [[curie]].
An ObservationCollection has at least one member, and may have one of any of the other seven properties mentioned in restrictions ().
Class: | sosa:ObservationCollection |
---|---|
IRI: |
http://www.w3.org/ns/sosa/ObservationCollection
|
Definition: | Collection of one or more observations, which may be nested in further collections, whose members share a common value for one or more property |
Restrictions: |
sosa:hasMember min 1
sosa:hasFeatureOfInterest max 1
sosa:hasUltimateFeatureOfInterest max 1
sosa:madeBySensor max 1
sosa:observedProperty max 1
sosa:phenomenonTime max 1
sosa:resultTime max 1
sosa:usedProcedure max 1
|
If present, the value of any of sosa:hasFeatureOfInterest
,
sosa:hasUltimateFeatureOfInterest
,
sosa:madeBySensor
,
sosa:observedProperty
,
sosa:phenomenonTime
,
sosa:resultTime
, or
sosa:usedProcedure
applies to all member observations.
See Inheriting observation properties from a collection for a formal definition of the rule.
:hasMember
|
:hasOriginalSample
|
:hasUltimateFeatureOfInterest
|
:hasSampledFeature
Property: | sosa:hasMember |
---|---|
IRI: |
http://www.w3.org/ns/sosa/hasMember
|
Definition: | Links an Observation or ObservationCollection that shares the same value for one or more of the characteristic properties to an ObservationCollection. |
Instance of: | owl:ObjectProperty |
Sub-property of: | rdfs:member |
Domain: | sosa:ObservationCollection |
Range: | sosa:Observation or sosa:ObservationCollection |
The global domain and range constraints mean that any appearance of sosa:hasMember
in a dataset entails that the subject of the statement is a sosa:ObservationCollection
and the object of the statement is a sosa:Observation
or sosa:ObservationCollection
.
Property: | sosa:hasOriginalSample |
---|---|
IRI: |
http://www.w3.org/ns/sosa/hasOriginalSample
|
Definition: | link to the original sample that is related to the context sample through a chain of isSampleOf relations |
Instance of: | owl:ObjectProperty |
Domain: | sosa:Sample |
Range: | sosa:Sample |
The following guarded constraint applies to the sosa:Sample
class:
Class: | sosa:Sample |
---|---|
Restrictions: |
sosa:hasOriginalSample max 1
|
This constraint says that no more than one original-sample is expected for each individual sample.
Property: | sosa:hasUltimateFeatureOfInterest |
---|---|
IRI: |
http://www.w3.org/ns/sosa/hasUltimateFeatureOfInterest
|
Definition: | link to the ultimate feature of interest of an observation or act of sampling. This is useful when the proximate feature of interest is a sample of the ultimate feature of interest, directly or transitively. |
Instance of: | owl:ObjectProperty |
Domain: | sosa:Observation or sosa:Sampling or sosa:Actuation |
Range: | sosa:FeatureOfInterest |
The following guarded constraint applies to the sosa:Observation
class:
Class: | sosa:Observation |
---|---|
Restrictions: |
sosa:hasUltimateFeatureOfInterest min 1
|
This constraint says that at least one ultimate-feature-of-interest is expected for each individual observation. Typically an observation concerns one ultimate feature-of-interest but in some cases the proximate feature-of-interest is a sample of more than one ultimate feature of interest. The explanation of relationships between multiple ultimate features of interest are beyond the scope of this vocabulary.
Property: | sosa:hasSampledFeature |
---|---|
IRI: |
http://www.w3.org/ns/sosa/hasSampledFeature
|
Definition: | link to the ultimate feature of interest of the context sample - i.e. the end of a chain of isSampleOf relations |
Instance of: | owl:ObjectProperty |
Domain: | sosa:Sample |
Range: | sosa:FeatureOfInterest |
The following guarded constraint applies to the sosa:Sample
class:
Class: | sosa:Sample |
---|---|
Restrictions: |
sosa:hasSampledFeature min 1
|
This constraint says that at least one sampled feature is expected for each individual sample. More than one sampled feature may apply when a single sample proxies for different ultimate features when used in multiple investigations.
If the ultimate feature-of-interest of an Observation, Sampling or Actuation, or ObservationCollection is not specified,
and the feature-of-interest is a Sample,
then the ultimate-feature-of-interest can be found by following a path from the feature-of-interest
to the end of a sequence of sosa:isSampleOf
relations (see Figure 1, Figure 2).
The rule can be expressed formally as a SPARQL query expression [[sparql11-query]] as follows:
Property | Rule |
---|---|
sosa:hasUltimateFeatureOfInterest
|
CONSTRUCT { ?this sosa:hasUltimateFeatureOfInterest ?f . } WHERE { { ?this a sosa:Observation } UNION { ?this a sosa:ObservationCollection } UNION { ?this a sosa:Sampling } UNION { ?this a sosa:Actuation } NOT EXISTS { ?this sosa:hasUltimateFeatureOfInterest ?x . } . ?this sosa:hasFeatureOfInterest/(sosa:isSampleOf)+ ?f . NOT EXISTS { ?f sosa:isSampleOf ?y . } . } |
Sometimes it is useful to know what is the actual feature-of-interest that a sample represents.
If this is not asserted with a sosa:hasSampledFeature then a candidate feature may be found by following a path from the sample to the end of a sequence of sosa:isSampleOf
relations (see Figure 2).
This rule can be expressed formally as a SPARQL query expression [[?sparql11-query]] as follows:
Property | Rule |
---|---|
sosa:hasSampledFeature
|
CONSTRUCT { ?this sosa:hasSampledFeature ?f . } WHERE { ?this a sosa:Sample NOT EXISTS { ?this sosa:hasSampledFeature ?x . } . ?this (sosa:isSampleOf)+ ?f . NOT EXISTS { ?f sosa:isSampleOf ?y . } . } |
Note that a sample might represent more than one feature of interest, different by scale or some other defining property.
Sometimes it is useful to know what was the original sample taken from the ultimate feature-of-interest that a sample represents.
If this is not asserted with a sosa:hasOriginalSample then a candidate sample may be found by following a path from the sample through a sequence of sosa:isSampleOf
relations until the last sample (see Figure 2).
This rule can be expressed formally as a SPARQL query expression [[?sparql11-query]] as follows:
Property | Rule |
---|---|
sosa:hasOriginalSample
|
CONSTRUCT { ?this sosa:hasOriginalSample ?os . } WHERE { ?this a sosa:Sample NOT EXISTS { ?this sosa:hasOriginalSample ?x . } . ?this (sosa:isSampleOf)+ ?f . NOT EXISTS { ?f sosa:isSampleOf ?y . } . ?os sosa:isSampleOf ?f . ?this (sosa:isSampleOf)+ ?os . } |
Note that most important original sample might not be the one closest to the domain feature. For example, in for many practical scenarios it will be a sample retrieved from the field that is of interest, and not the outcrop which is also modeled as a sample of the geologic unit. In such a case an explicit assertion of the original sample will be more relevant than the computed one.
If a sosa:Observation
or sosa:ObservationCollection
is a member of an sosa:ObservationCollection
,
the properties of the collection as a whole are associated with all member observations or collections.
Assigning properties to a collection provides for efficiencies in both discovery and encoding.
The rules may be defined formally as SPARQL query expressions [[?sparql11-query]] as follows:
Property | Rule |
---|---|
sosa:hasFeatureOfInterest
sosa:hasUltimateFeatureOfInterest
sosa:madeBySensor
sosa:observedProperty
sosa:phenomenonTime
sosa:resultTime
sosa:usedProcedure
|
CONSTRUCT { ?this $property ?foi . } WHERE { ?this a sosa:Observation . NOT EXISTS { ?this $property ?x . } . ?oc sosa:hasMember+ ?this . ?oc $property ?foi . } In the above expression, $property is replaced by any one of the seven properties listed
|
The W3C RDF Data Cube vocabulary [[?vocab-data-cube]] provides a means to describe multi-dimensional data according to a 'data cube' model inspired by SDMX, from which a 'slice' represents a collection of observations that is homogeneous in some property or dimension.
Hence, for a collection of observations the datacube (qb:
) model may be used to express aspects of homogeneity - such as whether a set of observations are all related to the same ultimate feature of interest, or the same type of feature of interest etc. Feature of interest, phenomenon time, observation procedure will typically correspond to qb:dimension
sub-properties, qb:measures
will be the observed properties and qb:ComponentDescriptions
for qb:measures
may indicate result types. qb:attribute
sub-properties may be used for qualifying and annotating information.
In future a general model for the inter-relation of dimensions, sensors, observed properties, phenomena, units of measure, sampling precision, procedures, etc. could use qb:dimension concepts to describe observation and sampling strategies.
If the value of any of the properties such as the sosa:hasFeatureOfInterest
, sosa:hasUltimateFeatureOfInterest
, or sosa:phenomenonTime
is locally specified, and is different to the value on the containing sosa:ObservationCollection, the results of the collection do not correspond with a slice from a data cube.
The OBOE alignment module in SSN [[vocab-ssn]] provided an alignment for the atomic oboe:Measurement
to sosa:Observation, but not for oboe:Observation
.
The ObservationCollection
supports the full encoding of an oboe:Observation
, which is a collection of oboe:Measurements
concerning a common oboe:Entity
, with each oboe:Measurement
reporting the value of a different oboe:Characteristic
, as shown in .
This work was partly supported by TERN.
The editor would like to thank the members of the W3C/OGC Spatial Data on the Web Interest Group for their contributions during the development of this document.