Property and Observable Property

From Spatial Data on the Web Working Group
Jump to: navigation, search

PLEASE NOTE THAT WE HAVE AGREED ON OPTION 6 DURING CALL 21/02

Requirements, questions

  • Backward compatibility: valid old SSN data must become valid sosa data
    • should we keep the old SSN definition
    • given old SSN data, `SELECT * WHERE {?x a sosa:ObservableProperty }` should return all of the instances of `oldssn:Property` ?
    • Old SSN users have used `oldssn:Property` knowing it's just for properties that are observable?
  • sosa takes into account Actuators
    • should we stick to only properties that are observable?
  • ssn takes into account other properties (in particular of sensors) that are not necessarily observable
    • ssn:MeasurementProeprty ssn:OperatingProperty, ssn:SurvivalProperty
  • a FeatureOfInterest may have properties may have non-observable properties
    • name, owner, scheduled-service-date, catalogue-number, lot-number
  • definitions of sosa are imported in ssn
    • should we avoid adding a new definition in snn for a term that is already defined in sosa?
    • should we avoid having definitions in sosa that become too specific or false in ssn?

votes and options

  • one or two concepts in the new namespace(s) ?
  • if one concept, "ObservableProperty" or "Property" ?
  • what is the alignment for the old term ?

Contributions

It would be good that the definitions are frozen after the votes. Please contribute to them here.

Option 1: Observable Property defined in sosa, no new term in SSN, old SSN Property equivalent with sosa:ObservableProperty

ssnx.ttl

oldssn:Property a owl:Class ;
  rdfs:label "Property"@en ; # added @en
  skos:definition """An observable Quality of an Event or Object.  That is, not a Quality of an abstract entity, but rather an aspect of an entity that is intrinsic to and cannot exist without the entity and that is observable by a sensor."""@en ; # changed for skos:definition, added @en, kept the content of old SSN
  dcterms:source """skos:exactMatch 'property' [O&M]
            http://www.opengeospatial.org/standards/om""" ; # kept the same as in old SSN
  rdfs:seeAlso "http://www.w3.org/2005/Incubator/ssn/wiki/SSN_Skeleton#Skeleton" ; # kept the same as in old SSN
  owl:deprecated true ; 
  owl:equivalentClass sosa:ObservableProperty ;
  rdfs:isDefinedBy <http://purl.oclc.org/NET/ssnx/ssn> . # kept the same as in old SSN

sosa.ttl

sosa:ObservableProperty a rdfs:Class , owl:Class ;
  rdfs:label "Observable Property"@en ;
  skos:definition """An observable quality of a FeatureOfInterest."""@en ;
  rdfs:isDefinedBy sosa: .

ssn.ttl

sosa:ObservableProperty 
  skos:definition """A Quality of a FeatureOfInterest that is observable, actuable, or ...  That is, not a Quality of an abstract entity, but rather an aspect of an entity that is intrinsic to and cannot exist without the entity."""@en ;
  rdfs:subClassOf [ owl:onProperty sosa:isPropertyOf ; owl:someValuesFrom sosa:FeatureOfInterest ] .

Pro

  • given old SSN data, `SELECT * WHERE {?x a sosa:ObservableProperty }` does return all of the instances of `oldssn:Property`

Cons

  • `sosa:ObservableProperty` does not take into account properties that are not observable, and does not appear to be a valid super-class for all of the current ssn:*Property classes
  • ssn imports sosa, hence two contradictory definitions of sosa:ObservableProperty

Option 2: Property defined in sosa, no new term in SSN, old SSN Property subclass of sosa:Property

ssnx.ttl

oldssn:Property a owl:Class ;
  rdfs:label "Property"@en ; # added @en
  skos:definition """An observable Quality of an Event or Object.  That is, not a Quality of an abstract entity, but rather an aspect of an entity that is intrinsic to and cannot exist without the entity and that is observable by a sensor."""@en ; # changed for skos:definition, added @en, kept the content of old SSN
  dcterms:source """skos:exactMatch 'property' [O&M]
            http://www.opengeospatial.org/standards/om""" ; # kept the same as in old SSN
  rdfs:seeAlso "http://www.w3.org/2005/Incubator/ssn/wiki/SSN_Skeleton#Skeleton" ; # kept the same as in old SSN
  owl:deprecated true ; 
  rdfs:subClassOf sosa:Property ;
  rdfs:isDefinedBy <http://purl.oclc.org/NET/ssnx/ssn> . # kept the same as in old SSN

sosa.ttl

sosa:Property a rdfs:Class , owl:Class ;
  rdfs:label "Observable Property"@en ;
  skos:definition """An aspect of an entity that is intrinsic to and cannot exist without the entity. It may be observable, actionable, forecasted, ..."""@en ;
  rdfs:isDefinedBy sosa: .

ssn.ttl

sosa:Property rdfs:subClassOf [ owl:onProperty sosa:isPropertyOf ; owl:someValuesFrom sosa:FeatureOfInterest ] .

Pro

  • given old SSN data, `SELECT * WHERE {?x a sosa:Property }` does return all of the instances of `oldssn:Property`
  • `sosa:Property` takes into account properties that are not observable, hence those that are actuable but not observable, and does not appear to be a valid super-class for all of the current ssn:*Property classes.

Cons

  • no specific concept for properties that are observable, mismatch with O&M ?

Option 3: Observable Property and Property both defined in sosa, old SSN Property equivalent with sosa:ObservableProperty

ssnx.ttl

oldssn:Property a owl:Class ;
  rdfs:label "Property"@en ; # added @en
  skos:definition """An observable Quality of an Event or Object.  That is, not a Quality of an abstract entity, but rather an aspect of an entity that is intrinsic to and cannot exist without the entity and that is observable by a sensor."""@en ; # changed for skos:definition, added @en, kept the content of old SSN
  dcterms:source """skos:exactMatch 'property' [O&M]
            http://www.opengeospatial.org/standards/om""" ; # kept the same as in old SSN
  rdfs:seeAlso "http://www.w3.org/2005/Incubator/ssn/wiki/SSN_Skeleton#Skeleton" ; # kept the same as in old SSN
  owl:deprecated true ; 
  owl:equivalentClass sosa:ObservableProperty ;
  rdfs:isDefinedBy <http://purl.oclc.org/NET/ssnx/ssn> . # kept the same as in old SSN

sosa.ttl

sosa:ObservableProperty a rdfs:Class , owl:Class ;
  rdfs:label "Observable Property"@en ;
  skos:definition """An observable quality of a FeatureOfInterest."""@en ;
  rdfs:isDefinedBy sosa: .

sosa:Property a owl:Class ;
  rdfs:label "Property"@en ;
  skos:definition """A Quality of a FeatureOfInterest that is observable, actuable, or ...  That is, not a Quality of an abstract entity, but rather an aspect of an entity that is intrinsic to and cannot exist without the entity."""@en ; # TODO: check, this is a proposal.
  rdfs:isDefinedBy sosa: .

ssn.ttl

sosa:ObservableProperty rdfs:subClassOf sosa:Property .

sosa:Property rdfs:subClassOf [ owl:onProperty sosa:isPropertyOf ; owl:someValuesFrom sosa:FeatureOfInterest ] .

Pro

  • `sosa:Property` now takes into account properties that are not observable, hence those that are actuable but not observable.
  • given old SSN data, `SELECT * WHERE {?x a sosa:ObservableProperty }` does return all of the instances of `oldssn:Property`

Cons

  • given old SSN data and SOSA entailment regime, `SELECT * WHERE {?x a sosa:Property }` *does not* return the instances of `oldssn:Property`
  • given old SSN data and SSN entailment regime, `SELECT * WHERE {?x a sosa:Property }` does return the instances of `oldssn:Property`


Option 4: Observable Property and Property both defined in sosa, old SSN Property equivalent with sosa:ObservableProperty

ssnx.ttl

oldssn:Property a owl:Class ;
  rdfs:label "Property"@en ; # added @en
  skos:definition """An observable Quality of an Event or Object.  That is, not a Quality of an abstract entity, but rather an aspect of an entity that is intrinsic to and cannot exist without the entity and that is observable by a sensor."""@en ; # changed for skos:definition, added @en, kept the content of old SSN
  dcterms:source """skos:exactMatch 'property' [O&M]
            http://www.opengeospatial.org/standards/om""" ; # kept the same as in old SSN
  rdfs:seeAlso "http://www.w3.org/2005/Incubator/ssn/wiki/SSN_Skeleton#Skeleton" ; # kept the same as in old SSN
  owl:deprecated true ; 
  owl:equivalentClass sosa:ObservableProperty ;
  rdfs:isDefinedBy <http://purl.oclc.org/NET/ssnx/ssn> . # kept the same as in old SSN

sosa.ttl

sosa:ObservableProperty a rdfs:Class , owl:Class ;
  rdfs:label "Observable Property"@en ;
  skos:definition """An observable quality of a FeatureOfInterest."""@en ;
  sosa:ObservableProperty rdfs:subClassOf sosa:Property .
  rdfs:isDefinedBy sosa: .

sosa:Property a owl:Class ;
  rdfs:label "Property"@en ;
  skos:definition """A Quality of a FeatureOfInterest that is observable, actuable, or ...  That is, not a Quality of an abstract entity, but rather an aspect of an entity that is intrinsic to and cannot exist without the entity."""@en ; # TODO: check, this is a proposal.
  rdfs:isDefinedBy sosa: .

ssn.ttl

sosa:Property rdfs:subClassOf [ owl:onProperty sosa:isPropertyOf ; owl:someValuesFrom sosa:FeatureOfInterest ] .

Pro

  • `sosa:Property` now takes into account properties that are not observable, hence those that are actuable but not observable.
  • given old SSN data, `SELECT * WHERE {?x a sosa:ObservableProperty }` does return all of the instances of `oldssn:Property`
  • given old SSN data and SOSA entailment regime, `SELECT * WHERE {?x a sosa:Property }` does return the instances of `oldssn:Property`
  • given old SSN data and SSN entailment regime, `SELECT * WHERE {?x a sosa:Property }` does return the instances of `oldssn:Property`

Cons

Option 5: Observable Property in sosa, Property in ssn, old SSN Property equivalent with sosa:ObservableProperty

ssnx.ttl

oldssn:Property a owl:Class ;
  rdfs:label "Property"@en ; # added @en
  skos:definition """An observable Quality of an Event or Object.  That is, not a Quality of an abstract entity, but rather an aspect of an entity that is intrinsic to and cannot exist without the entity and that is observable by a sensor."""@en ; # changed for skos:definition, added @en, kept the content of old SSN
  dcterms:source """skos:exactMatch 'property' [O&M]
            http://www.opengeospatial.org/standards/om""" ; # kept the same as in old SSN
  rdfs:seeAlso "http://www.w3.org/2005/Incubator/ssn/wiki/SSN_Skeleton#Skeleton" ; # kept the same as in old SSN
  owl:deprecated true ; 
  owl:equivalentClass sosa:ObservableProperty ;
  rdfs:isDefinedBy <http://purl.oclc.org/NET/ssnx/ssn> . # kept the same as in old SSN

sosa.ttl

sosa:ObservableProperty a rdfs:Class , owl:Class ;
  rdfs:label "Observable Property"@en ;
  skos:definition """An observable quality of a FeatureOfInterest."""@en ;
  rdfs:isDefinedBy sosa: .

ssn.ttl

sosa:ObservableProperty rdfs:subClassOf ssn:Property .

ssn:Property a owl:Class ;
  rdfs:label "Property"@en ;
  skos:definition """A Quality of a FeatureOfInterest that is observable, actuable, or ...  That is, not a Quality of an abstract entity, but rather an aspect of an entity that is intrinsic to and cannot exist without the entity."""@en ; # TODO: check, this is a proposal.
  skos:definition """A Quality of a FeatureOfInterest. An aspect of an entity that is intrinsic to and cannot exist without the entity."""@en ; # TODO: check, this is a proposal, modified by Simon Cox (talk) 23:05, 12 February 2017 (UTC) .
  rdfs:subClassOf [ owl:onProperty sosa:isPropertyOf ; owl:someValuesFrom sosa:FeatureOfInterest ] ;
  rdfs:isDefinedBy ssn: .

Pro

  • still a concept called `ssn:Property`
  • `ssn:Property` now takes into account properties that are not observable, including those that are actuable but not observable. # minor tweak by Simon Cox (talk) 23:05, 12 February 2017 (UTC)
  • given old SSN data, `SELECT * WHERE {?x a sosa:ObservableProperty }` does return all of the instances of `oldssn:Property`
  • given old SSN data, `SELECT * WHERE {?x a ssn:Property }` does return all of the instances of `oldssn:Property`

Cons

  • this solution makes oldssn:MeasurementProperty, oldssn:OperatingProperty, oldssn:SurvivalProperty observable, among other.

Question

Did the old SSN also include the ssnx:*Property classes? Are they all valid subclasses of sosa:ObservableProperty?

- In Option 5 they would all be subclasses of ssn:Property. If they are all valid subclasses of ObservableProperty we can remove ssn:Property altogether. Maybe that is where you were going with, with your question?

Simon Cox (talk) 03:52, 10 February 2017 (UTC)

Kerry: I am worried about this. This makes all instances of (e.g. oldssn:MeasurementProperty)s become sosa:ObservableProperty, when they were only oldssn:Property before. And also when we have that newssn:MeasurementProperty is not necessarily sosa:ObservableProperty. If "observationProperty" means anything at all (and I am totally unconvinced that it does), then this must be wrong? e.g. any oldssn:Accuracy instance becomes a sosa:ObservableProperty. Having said that, by definition any newssn:Property, including Accuracy and SurvivalRange and BatteryPower has to be a proporty of a FeatureofInterest....(and the FoI would often be a sensor or a system).

Kerry: Is there something we can do in ssnx to say that instances of oldssn:Property only become instances of sosa:ObservableProperty when they are the oldssn:observedProperty of an oldssn:Observation? Can we be more careful in ssnx, say, "sosa:ObservableProperty \sqsubseteq \exists oldssn:observedProperty \union \exists observes"  ? Does that work?

Kerry: Doesn't the ssn:observation and ssn:Sensor definitions have to be rewritten to account for observableproperties too? not sure whether this might mess up hasMeasurementCapability and forProperty too.....

Kerry: the rdfs:comment for ssn:Property need to broaden to recognise all the other uses of Property. Arguably it was already too narrow in ssn as it seeed to describe only the observable subcase. How about "An observable Quality of an Event or Object. That is, not a Quality of an abstract entity, but rather an aspect of an entity that is intrinsic to and cannot exist without the entity."

Kerry: what is this doing in ssn.ttl here?: "sosa:Property rdfs:subClassOf ..." does sosa have a Property?

- Maxime: this was an error, I updated this.


Winning: Option 6: Observable Property in sosa, Property in ssn, old SSN Property equivalent with ssn:Property

ssnx.ttl

oldssn:Property a owl:Class ;
  rdfs:label "Property"@en ; # added @en
  skos:definition """An observable Quality of an Event or Object.  That is, not a Quality of an abstract entity, but rather an aspect of an entity that is intrinsic to and cannot exist without the entity and that is observable by a sensor."""@en ; # changed for skos:definition, added @en, kept the content of old SSN
  dcterms:source """skos:exactMatch 'property' [O&M]
            http://www.opengeospatial.org/standards/om""" ; # kept the same as in old SSN
  rdfs:seeAlso "http://www.w3.org/2005/Incubator/ssn/wiki/SSN_Skeleton#Skeleton" ; # kept the same as in old SSN
  owl:deprecated true ; 
  owl:equivalentClass ssn:Property ;
  rdfs:isDefinedBy <http://purl.oclc.org/NET/ssnx/ssn> . # kept the same as in old SSN

sosa.ttl

sosa:ObservableProperty a rdfs:Class , owl:Class ;
  rdfs:label "Observable Property"@en ;
  skos:definition """An observable quality of a FeatureOfInterest."""@en ;
  rdfs:isDefinedBy sosa: .

ssn.ttl

sosa:ObservableProperty rdfs:subClassOf ssn:Property .

ssn:Property a owl:Class ;
  rdfs:label "Property"@en ;
  skos:definition """A Quality of a FeatureOfInterest. An aspect of an entity that is intrinsic to and cannot exist without the entity."""@en ;
  rdfs:subClassOf [ owl:onProperty sosa:isPropertyOf ; owl:someValuesFrom sosa:FeatureOfInterest ] ;
  rdfs:isDefinedBy ssn: .

Pro

  • still a concept called `ssn:Property`
  • `ssn:Property` now takes into account properties that are not observable, including those that are actuable but not observable.
  • given old SSN data, `SELECT * WHERE {?x a ssn:Property }` does return all of the instances of `oldssn:Property`
  • this solution does not make oldssn:MeasurementProperty, oldssn:OperatingProperty, oldssn:SurvivalProperty observable.
  • given old SSN data and the SSN semantics, `SELECT * WHERE {?x a ssn:Property }` returns all of the instances of `oldssn:Property`

Cons

  • given old SSN data and the SOSA semantics, `SELECT * WHERE {?x a ssn:Property }` does not return all of the instances of `oldssn:Property`