Unverified Commit 7794b918 authored by Maxime Lefrançois's avatar Maxime Lefrançois
Browse files

solved OWL2DL incompatibility, added States

parent fa308199
Loading
Loading
Loading
Loading
+148 −72
Original line number Diff line number Diff line
@@ -577,6 +577,7 @@ saref:isStoredBy a owl:ObjectProperty ;
## An instance of saref:Property can apply to different features of interest. 

saref:Property a owl:Class ;
    rdfs:label "Property"@en ;
    rdfs:comment "Identifiable qualities of features of interest that can be acted upon by devices, such as measured or controlled. A property can apply to different features of interest."@en ;
    skos:note "Until SAREF V3.1.1, there was an ambiguity between whether properties should be specific or generic to features of interest. This ambiguity has been solved in SAREF V3.2.1, and the new modeling will be enforced in the next major revision of SAREF."@en ;
    skos:note "Concepts from existing code lists, vocabularies, and taxonomies, may be used as instances of saref:Property."@en ;
@@ -589,8 +590,7 @@ saref:Property a owl:Class ;

<http://vocab.nerc.ac.uk/collection/P01/current/CDTSZZ01/> a saref:Property ;
    skos:prefLabel "Absolute temperature standard deviation of the atmosphere by dry bulb thermometer"@en .
"""@en ;
    rdfs:label "Property"@en .
"""@en .

## Properties can be organized in a taxonomy using OPs skos:narrower and skos:broader.

@@ -602,33 +602,28 @@ saref:Property rdfs:subClassOf
            owl:onProperty skos:narrower ;
            owl:allValuesFrom saref:Property ] .

## The OP saref:hasProperty may be used to link a feature kind to its properties. Its inverse is saref:isPropertyOf. 
## The OP saref:hasProperty may be used to link a feature kind or feature of interest to its properties. Its inverse is saref:isPropertyOf.

saref:hasProperty a owl:ObjectProperty ;
    owl:inverseOf saref:isPropertyOf ;
    rdfs:comment "Links a feature kind or a feature of interest to one of its properties. Generically used to link feature kinds to properties, features of interest to properties, or features of interest to properties of interest."@en ;
    rdfs:label "has property"@en .
    rdfs:label "has property"@en ;
    rdfs:comment "Links a feature kind or a feature of interest to one of its properties."@en ;
    rdfs:domain [ a owl:Class ; owl:unionOf ( saref:FeatureKind saref:FeatureOfInterest ) ] ;
    rdfs:range saref:Property .

saref:isPropertyOf a owl:ObjectProperty ;
    owl:inverseOf saref:hasProperty ;
    rdfs:comment "Links a property to the feature kind or feature of interest it is a property of. Generically used to link properties to feature kinds, properties to features of interest, or properties of interest to features of interest."@en ;
    rdfs:label "is property of"@en .


## Feature kinds only have properties, not properties of interest.

saref:FeatureKind a owl:Class ;
    rdfs:subClassOf [ a owl:Restriction ;
        owl:onProperty saref:hasProperty ;
        owl:allValuesFrom saref:Property 
    ] .
    rdfs:label "is property of"@en ;
    rdfs:comment "Links a property to the feature kind or feature of interest it is a property of."@en ;
    rdfs:domain saref:Property ;
    rdfs:range [ a owl:Class ; owl:unionOf ( saref:FeatureKind saref:FeatureOfInterest ) ] .

## Feature kinds inherit the properties of their broader feature kinds.

saref:hasProperty
    owl:propertyChainAxiom ( skos:broader saref:hasProperty ) .

# ## Features of interest inherit the properties of their feature kinds.
## Features of interest inherit the properties of their feature kinds.

saref:hasProperty
    owl:propertyChainAxiom ( saref:hasFeatureKind saref:hasProperty ) .
@@ -639,15 +634,7 @@ saref:hasProperty
## An instance of saref:PropertyOfInterest is specific to a feature of interest. It is inherent to and cannot exist without that feature of interest. 

saref:PropertyOfInterest a owl:Class ;
    rdfs:subClassOf 
        [ a owl:Restriction ;
            owl:onProperty saref:isPropertyOf ;
            owl:allValuesFrom saref:FeatureOfInterest
        ] ,
        [ a owl:Restriction ;
            owl:onProperty saref:isPropertyOf ;
            owl:cardinality 1
        ] ;
    rdfs:label "Property of Interest"@en ;
    rdfs:comment "Identifiable qualities of features of interest that can be acted upon by devices, such as measured or controlled. An instance of saref:PropertyOfInterest is specific to a feature of interest. It is inherent to and cannot exist without that feature of interest."@en ;
    skos:note "Until SAREF V3.1.1, there was an ambiguity between whether properties should be specific or generic to features of interest. This ambiguity has been solved in SAREF V3.2.1, and the new modeling will be enforced in SAREF V4.1.1."@en ;
    skos:note "A property of interest is the property of (OP saref:isPropertyOf) exactly one feature of interest."@en ;
@@ -659,31 +646,50 @@ saref:PropertyOfInterest a owl:Class ;
    saref:hasPropertyKind saref:Luminance ;
    rdfs:comment "The luminance of amphitheatre ATHENA"@en .
"""@en ;
    skos:note """Properties of interest need not always be explicited. It depends on the use case. Typically, properties of interest are useful in applications, where the association between a feature of interest and a property (i.e., the property of interest) needs to be identified and related to other properties of interest."""@en ;
    rdfs:label "Property of Interest"@en .
    skos:note """Properties of interest need not always be explicited. It depends on the use case. Typically, properties of interest are useful in applications, where the association between a feature of interest and a property (i.e., the property of interest) needs to be identified and related to other properties of interest."""@en .

## The OP saref:hasPropertyOfInterest may be used to link a feature of interest to its properties of interest. Its inverse is saref:isPropertyOfInterestOf and is functional.

saref:hasPropertyOfInterest a owl:ObjectProperty ;
    owl:inverseOf saref:isPropertyOfInterestOf ;
    rdfs:comment "Links a feature of interest to one of its properties of interest."@en ;
    rdfs:label "has property"@en ;
    rdfs:domain saref:FeatureOfInterest ;
    rdfs:range saref:PropertyOfInterest .

saref:isPropertyOfInterestOf a owl:ObjectProperty , owl:FunctionalProperty ;
    owl:inverseOf saref:hasPropertyOfInterest ;
    rdfs:comment "Links a property of interest to the feature of interest it is a property of."@en ;
    rdfs:label "is property of"@en ;
    rdfs:domain saref:PropertyOfInterest ;
    rdfs:range saref:FeatureOfInterest .

## A property of interest is the property of (OP saref:isPropertyOfInterestOf) exactly one feature of interest.

saref:PropertyOfInterest 
    rdfs:subClassOf 
        [   a owl:Restriction ;
            owl:onProperty saref:isPropertyOfInterestOf ;
            owl:cardinality 1
        ] .

## A property of interest can be linked to its kind(s) using OP saref:hasPropertyKind.

saref:hasPropertyKind a owl:ObjectProperty ;
    rdfs:label "has feature kind"@en ;
    rdfs:comment "links a feature of interest to its kind, a feature kind"@en ;
    rdfs:domain saref:FeatureOfInterest ;
    rdfs:range saref:FeatureKind .
    rdfs:comment "links a property of interest to its kind, a property."@en ;
    rdfs:domain saref:PropertyOfInterest ;
    rdfs:range saref:Property .

## Properties of interest inherit broader properties.

saref:hasPropertyKind
    owl:propertyChainAxiom ( saref:hasPropertyKind skos:broader ) .

## The OP saref:hasProperty links a feature kind or a feature of interest to one of its properties. This OP is generically used to link feature kinds to properties, features of interest to properties, or features of interest to properties of interest.
## Features of interest inherit the property kinds of their property of interest.

saref:hasProperty
    rdfs:domain [ a owl:Class ; owl:unionOf ( saref:FeatureKind saref:FeatureOfInterest ) ] ;
    rdfs:range [ a owl:Class ; owl:unionOf ( saref:Property saref:PropertyOfInterest ) ] .

saref:isPropertyOf
    rdfs:domain [ a owl:Class ; owl:unionOf ( saref:Property saref:PropertyOfInterest ) ] ;
    rdfs:range [ a owl:Class ; owl:unionOf ( saref:FeatureKind saref:FeatureOfInterest ) ] .
    owl:propertyChainAxiom ( saref:hasPropertyOfInterest saref:hasPropertyKind ) .


# ETSI TS 103264 Clause 5.6.4: Property values
@@ -719,7 +725,7 @@ saref:UnitOfMeasure a owl:Class ;
    skos:note "Our definition is based on the definition of unit of measure in the Ontology of units of Measure (OM)."@en ;
    skos:note "Concepts from existing code lists, vocabularies, and taxonomies, may be used as instances of saref:UnitOfMeasure. For example the QUDT Unit vocabulary"@en .

## The OP saref:hasPropertyValue links a feature kind, a feature of interest, or a property, to a property value.
## The OP saref:hasPropertyValue links a feature kind, a feature of interest, or a property of interest, to a property value.

saref:hasPropertyValue a owl:ObjectProperty ;
    rdfs:label "has property value"@en ;
@@ -742,51 +748,121 @@ saref:isValueOfProperty a owl:ObjectProperty ;
    rdfs:domain [ a owl:Class ; owl:unionOf ( saref:FeatureKind saref:FeatureOfInterest saref:PropertyOfInterest ) ] ;
    rdfs:range saref:PropertyValue .

## A property value about a property of interest is also a property value about the kind of that property of interest (and therefore, of its broader properties). 
## A property value about a property of interest is also a property value of its property kinds.

saref:isValueOfProperty
    owl:propertyChainAxiom ( saref:isValueOfProperty skos:broader ) .
    owl:propertyChainAxiom ( saref:isValueOfProperty saref:hasPropertyKind ) .

## A property value about a property of interest is also a property value about the kind of that property of interest (and therefore, of its broader properties). 
## Note that saref:hasPropertyValue and saref:isValueOfProperty are not inverse properties.

saref:isValueOfProperty
    owl:propertyChainAxiom ( saref:isValueOfProperty saref:hasPropertyKind ) .
# ETSI TS 103264 Clause 5.7: States and states of interest

## In SAREF, states refer to the identifiable conditions that features of interest are or may be in, and that can be acted upon by devices, such as observed and controlled.

# ETSI TS 103264 Clause 5.7.2: States

## An instance of saref:State can apply to different features of interest. 

saref:State a owl:Class ;
    rdfs:label "State"@en ;
    rdfs:comment "Identifiable conditions that features of interest are or may be in, and that can be acted upon by devices, such as observed and controlled. A state can apply to different features of interest."@en ;
    skos:example "A switch can be found in the saref:OnOffState, which is further specialized in saref:OnState and saref:OffState."@en ;
    skos:note "SAREF is not restricted to binary states such as the saref:OnOffState, but allows to define also n-ary states (see, for example, the saref:MultiLevelState class)."@en ;
    skos:note "Concepts from existing code lists, vocabularies, and taxonomies, may be used as instances of saref:State."@en .

## States can be organized in a taxonomy using OPs skos:narrower and skos:broader.

saref:State rdfs:subClassOf 
        [   a owl:Restriction ;
            owl:onProperty skos:broader ;
            owl:allValuesFrom saref:State ] ,
        [   a owl:Restriction ;
            owl:onProperty skos:narrower ;
            owl:allValuesFrom saref:State ] .

## The OP saref:hasState may be used to link a feature kind to its states. Its inverse is saref:isStateOf.

saref:hasState a owl:ObjectProperty ;
    owl:inverseOf saref:isStateOf ;
    rdfs:label "has state"@en ;
    rdfs:comment "Links a feature kind or a feature of interest to one of its states."@en ;
    rdfs:domain [ a owl:Class ; owl:unionOf ( saref:FeatureKind saref:FeatureOfInterest ) ] ;
    rdfs:range saref:State .

saref:isStateOf a owl:ObjectProperty ;
    owl:inverseOf saref:hasState ;
    rdfs:label "is state of"@en ;
    rdfs:comment "Links a state to the feature kind or feature of interest it is a state of."@en ;
    rdfs:domain saref:State ;
    rdfs:range [ a owl:Class ; owl:unionOf ( saref:FeatureKind saref:FeatureOfInterest ) ] .

## Feature kinds inherit the states of their broader feature kinds.

saref:hasState
    owl:propertyChainAxiom ( skos:broader saref:hasState ) .

## Features of interest inherit the states of their feature kinds.

saref:hasState
    owl:propertyChainAxiom ( saref:hasFeatureKind saref:hasState ) .


# ETSI TS 103264 Clause 5.7.3: States of interest

## An instance of saref:StateOfInterest is specific to a feature of interest. It is inherent to and cannot exist without that feature of interest. 

saref:StateOfInterest a owl:Class ;
    rdfs:label "State of Interest"@en ;
    rdfs:comment "Identifiable conditions that features of interest are or may be in, and that can be acted upon by devices, such as observed and controlled. An instance of saref:StateOfInterest is specific to a feature of interest. It is inherent to and cannot exist without that feature of interest."@en ;
    skos:note "A state of interest is the state of (OP saref:isStateOf) exactly one feature of interest."@en ;
    skos:note "Per convention, the IRI of states of interest should consist of the IRI of their feature of interest, suffixed with a fragment identifier #{P} where {P} refers to the name of the state."@en ;
    skos:note """States of interest need not always be explicited. It depends on the use case. Typically, states of interest are useful in applications, where the association between a feature of interest and a state (i.e., the state of interest) needs to be identified and related to other states of interest."""@en .

## The OP saref:hasStateOfInterest may be used to link a feature of interest to its states of interest. Its inverse is saref:isStateOfInterestOf and is functional.

saref:hasStateOfInterest a owl:ObjectProperty ;
    owl:inverseOf saref:isStateOfInterestOf ;
    rdfs:comment "Links a feature of interest to one of its states of interest."@en ;
    rdfs:label "has state"@en ;
    rdfs:domain saref:FeatureOfInterest ;
    rdfs:range saref:StateOfInterest .

saref:isStateOfInterestOf a owl:ObjectProperty , owl:FunctionalProperty ;
    owl:inverseOf saref:hasStateOfInterest ;
    rdfs:comment "Links a state of interest to the feature of interest it is a state of."@en ;
    rdfs:label "is state of"@en ;
    rdfs:domain saref:StateOfInterest ;
    rdfs:range saref:FeatureOfInterest .

## A state of interest is the state of (OP saref:isStateOfInterestOf) exactly one feature of interest.

saref:StateOfInterest 
    rdfs:subClassOf 
        [   a owl:Restriction ;
            owl:onProperty saref:isStateOfInterestOf ;
            owl:cardinality 1
        ] .

saref:Command a owl:Class .
saref:Function a owl:Class .
saref:ProcedureExecution a owl:Class .
saref:State a owl:Class .
saref:StateOfInterest a owl:Class
# # ETSI TS 103264 Clause 5.7: States and states of interest
## A state of interest can be linked to its kind(s) using OP saref:hasStateKind.

# saref:State a owl:Class ;
#     rdfs:comment "States are identifiable conditions that a feature or device is or may be in, and that can be acted upon by devices, such as observed and controlled. A state can apply to different features of interest."@en ;
#     rdfs:label "State"@en ;
#     skos:example "A switch can be found in the saref:OnOffState, which is further specialized in saref:OnState and saref:OffState."@en ;
#     skos:note "SAREF is not restricted to binary states such as the saref:OnOffState, but allows to define also n-ary states (see, for example, the saref:MultiLevelState class)."@en ;
#     skos:note "Concepts from existing code lists, vocabularies, and taxonomies, may be used as instances of saref:State."@en ;
saref:hasStateKind a owl:ObjectProperty ;
    rdfs:label "has state kind"@en ;
    rdfs:comment "links a state of interest to its kind, a state"@en ;
    rdfs:domain saref:StateOfInterest ;
    rdfs:range saref:State .

## States of interest inherit broader states.

# saref:hasState a owl:ObjectProperty ;
#     owl:inverseOf saref:isStateOf ;
#     rdfs:comment "Links a feature kind or a feature of interest to one of its states. Generically used to link feature kinds to states, features of interest to states, or features of interest to states of interest."@en ;
#     rdfs:domain [ a owl:Class ; owl:unionOf ( saref:FeatureKind saref:FeatureOfInterest ) ] ;
#     rdfs:range [ a owl:Class ; owl:unionOf ( saref:State saref:StateOfInterest ) ] ;
#     rdfs:label "has state"@en .
saref:hasStateKind
    owl:propertyChainAxiom ( saref:hasStateKind skos:broader ) .

# saref:isStateOf a owl:ObjectProperty ;
#     rdfs:comment "Links a state to the feature kind or feature of interest it is a state of. Generically used to link states to feature kinds, states to features of interest, or states of interest to features of interest."@en ;
#     rdfs:domain [ a owl:Class ; owl:unionOf ( saref:State saref:StateOfInterest ) ] ;
#     rdfs:range [ a owl:Class ; owl:unionOf ( saref:FeatureKind saref:FeatureOfInterest ) ] ;
#     rdfs:label "is state of"@en .
## Features of interest inherit the state kinds of their state of interest.

saref:hasState
    owl:propertyChainAxiom ( saref:hasStateOfInterest saref:hasStateKind ) .

# saref:hasState # feature kinds inherit the states of their broader feature kind
#     owl:propertyChainAxiom ( skos:broader saref:hasState ) .

# saref:hasState # features of interest inherit the states of their feature kind
#     owl:propertyChainAxiom ( saref:hasFeatureKind saref:hasState ) .
## As the narrowest states of the taxonomy of states can be thought of as the state values, it is possible to assign a stable value to a state.

# # ETSI TS 103264 Clause 5.8: Commands and device commands