Skip to content
saref.ttl 118 KiB
Newer Older
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 ) ] ;
    skos:historyNote "V3.2.1: Introduced saref:isStateOf."@en .

## 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:isStateOfInterestOf) 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 #{S} where {S} 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 ;
    skos:historyNote "V3.2.1: Introduced saref:StateOfInterest, parallel to saref:PropertyOfInterest."@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 of interest"@en ;
    rdfs:domain saref:FeatureOfInterest ;
    rdfs:range saref:StateOfInterest ;
    skos:historyNote "V3.2.1: Introduced saref:hasStateOfInterest and saref:isStateOfInterestOf, parallel to saref:hasPropertyOfInterest and saref:isPropertyOfInterestOf."@en .

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 interest 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
        ] .
## A state of interest can be linked to its kind(s) using OP saref:hasStateKind.
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:hasStateKind
    owl:propertyChainAxiom ( saref:hasStateKind skos:broader ) .
## Features of interest inherit the state kinds of their state of interest.
saref:hasState
    owl:propertyChainAxiom ( saref:hasStateOfInterest saref:hasStateKind ) .
## 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.
## Deprecated 

saref:CloseState rdf:type owl:Class ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:CloseState is deprecated: will be defined as an instance of saref:State in the next major revision of SAREF"@en ;
    rdfs:subClassOf saref:OpenCloseState ;
    rdfs:comment "The state of a device that is CLOSE"@en ;
    rdfs:label "Close state"@en .

saref:MultiLevelState rdf:type owl:Class ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:MultiLevelState is deprecated: will be defined as an instance of saref:State in the next major revision of SAREF"@en ;
    rdfs:subClassOf saref:State ;
    rdfs:comment "A type of state"@en ;
    rdfs:label "Multi level state"@en .

saref:OffState rdf:type owl:Class ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:OffState is deprecated: will be defined as an instance of saref:State in the next major revision of SAREF"@en ;
    rdfs:subClassOf saref:OnOffState ;
    rdfs:comment "The state of a device that is Off"@en ;
    rdfs:label "Off state"@en .

saref:OnOffState rdf:type owl:Class ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:OnOffState is deprecated: will be defined as an instance of saref:State in the next major revision of SAREF"@en ;
    rdfs:subClassOf saref:State ;
    rdfs:comment "A type of state"@en ;
    rdfs:label "On off state"@en .

saref:OnState rdf:type owl:Class ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:OnState is deprecated: will be defined as an instance of saref:State in the next major revision of SAREF"@en ;
    rdfs:subClassOf saref:OnOffState ;
    rdfs:comment "The state of a device that is On"@en ;
    rdfs:label "On state"@en .

saref:OpenCloseState rdf:type owl:Class ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:OpenCloseState is deprecated: will be defined as an instance of saref:State in the next major revision of SAREF"@en ;
    rdfs:subClassOf saref:State ;
    rdfs:comment "A type of state"@en ;
    rdfs:label "Open close state"@en .

saref:OpenState rdf:type owl:Class ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:OpenState is deprecated: will be defined as an instance of saref:State in the next major revision of SAREF"@en ;
    rdfs:subClassOf saref:OpenCloseState ;
    rdfs:comment "The state of a device that is OPEN "@en ;
    rdfs:label "Open state"@en .

saref:StartState rdf:type owl:Class ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:StartState is deprecated: will be defined as an instance of saref:State in the next major revision of SAREF"@en ;
    rdfs:subClassOf saref:StartStopState ;
    rdfs:comment "The state of a device that is STARTED"@en ;
    rdfs:label "Start state"@en .

saref:StartStopState rdf:type owl:Class ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:StartStopState is deprecated: will be defined as an instance of saref:State in the next major revision of SAREF"@en ;
    rdfs:subClassOf saref:State ;
    rdfs:comment "A type of state"@en ;
    rdfs:label "Start stop state"@en .

saref:StopState rdf:type owl:Class ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:StopState is deprecated: will be defined as an instance of saref:State in the next major revision of SAREF"@en ;
    rdfs:subClassOf saref:StartStopState ;
    rdfs:comment "The state of a device that is STOPPED"@en ;
    rdfs:label "Stop state"@en .

# ETSI TS 103264 Clause 5.8: Functions and functions of interest
## In SAREF, functions are logical groups of commands that devices support to accomplish their tasks. Function can act upon (OP saref:actsUpon and its sub-properties) features, properties, or states. While functions are independent of any devices, functions of interest are functions actually supported by a device.
# ETSI TS 103264 Clause 5.8.2: Functions
## An instance of saref:Function can apply to different features of interest. 
saref:Function a owl:Class ;
    rdfs:label "Function"@en ;
    rdfs:comment "Logical groups of commands that devices support to accomplish their tasks. Function can act upon (OP saref:actsUpon and its sub-properties) features, properties, or states. An instance of saref:Function can apply to different devices."@en ;
    skos:example "To accomplish the task of controlling the light, a smart light switch may have a function for turning on and off the light, and another to set the luminosity of the light."@en ;
    skos:example "To accomplish the task of sensing the temperature, a temperature sensor should have a sensing function."@en ;
    skos:example "To accomplish the task of washing clothes, a washing machine should have a function for washing."@en ;
    skos:historyNote "V3.2.1: Simplified definition and axiomatization of saref:Function. Added examples."@en .
## Deprecated
saref:SensingFunction a owl:Class ;
    rdfs:subClassOf saref:Function ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:SensingFunction is deprecated: may be defined as an instance of saref:Function in the next major revision of SAREF"@en ;
    rdfs:comment "A function that allows to transmit data from sensors, such as measurement values (e.g., temperature) or sensing data (e.g., occupancy)"@en ;
    rdfs:label "Sensing function"@en .

saref:hasSensingRange a owl:ObjectProperty ;
    rdfs:comment "A relationship between a sensing function and a measurement identifying the range of a sensor detection"@en ;
    rdfs:domain saref:SensingFunction ;
    rdfs:range saref:Measurement ;
    rdfs:label "has sensing range"@en ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:hasSensingRange is deprecated together with saref:SensingFunction. And may be defined as an instance of saref:Property in the next major revision of SAREF"@en .

saref:hasSensorType a owl:ObjectProperty ;
    rdfs:comment "A relationship identifying the sensing type of a sensor detection (i.e., Temperature, Occupancy, Humidity, Motion , Smoke, Pressure, etc.) "@en ;
    rdfs:domain saref:SensingFunction ;
    rdfs:range saref:Property ; 
    rdfs:label "has sensor type"@en ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:hasSensingRange is deprecated together with saref:SensingFunction. Use saref:hasDeviceKind instead."@en .
saref:EventFunction a owl:Class ;
    rdfs:subClassOf saref:Function ;
    rdfs:comment "A function that allows to notify about some relevant activity; e.g., that a certain threshold value has been exceeded or that some object has moved."@en ;
    rdfs:label "Event function"@en ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:EventFunction is deprecated: may be defined as an instance of saref:Function in the next major revision of SAREF"@en .

saref:hasThresholdMeasurement a owl:ObjectProperty ;
    rdfs:comment "A relationship associated with an event function to notify that a certain threshold measurement has been exceeded"@en ;
    rdfs:domain saref:EventFunction ;
    rdfs:range saref:Measurement ;
    rdfs:label "has threshold measurement"@en ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:hasThresholdMeasurement is deprecated together with saref:EventFunction. And may be defined as an instance of saref:Property in the next major revision of SAREF"@en .
saref:MeteringFunction a owl:Class ;
    rdfs:subClassOf saref:Function ;
    rdfs:comment "A function that allows to get data from a meter, such as current meter reading or instantaneous demand"@en ;
    rdfs:label "Metering function"@en ;
Maxime Lefrançois's avatar
Maxime Lefrançois committed
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:MeteringFunction is deprecated: may be defined as an instance of saref:Function in the next major revision of SAREF"@en .

saref:hasMeterReading a owl:ObjectProperty ;
    rdfs:comment "A relationship between a metering function and the measurement of the reading"@en ;
    rdfs:domain saref:MeteringFunction ;
    rdfs:range saref:Measurement ;
    rdfs:label "has meter reading"@en ;
Maxime Lefrançois's avatar
Maxime Lefrançois committed
    owl:deprecated true ;
    skos:historyNote "V3.2.1: deprecated saref:hasMeterReading together with saref:Measurement and saref:MeteringFunction"@en .

saref:hasMeterReadingType a owl:ObjectProperty ;
    rdfs:comment "A relationship identifying the reading type of a metering function (e.g., Water, Gas, Pressure , Energy , Power, etc.)"@en ;
    rdfs:domain saref:MeteringFunction ;
    rdfs:range saref:Property ;
    rdfs:label "has meter reading type"@en ;
Maxime Lefrançois's avatar
Maxime Lefrançois committed
    owl:deprecated true ;
    skos:historyNote "V3.2.1: deprecated saref:hasMeterReadingType together with saref:MeteringFunction"@en .
saref:LevelControlFunction a owl:Class ;
    rdfs:subClassOf saref:ActuatingFunction ;
    rdfs:comment "An actuating function that allows to do level adjustments of a property in a certain range (e.g., 0%-100%), such as dimming a light in a room or setting the speed of an electric motor. "@en ;
    rdfs:label "Level control function"@en ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:LevelControlFunction is deprecated: may be defined as an instance of saref:Function in the next major revision of SAREF"@en .

saref:StartStopFunction a owl:Class ;
    rdfs:subClassOf saref:ActuatingFunction ;
    rdfs:comment "An actuating function that allows to start and stop a device"@en ;
    rdfs:label "Start stop function"@en ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:StartStopFunction is deprecated: may be defined as an instance of saref:Function in the next major revision of SAREF"@en .

saref:OpenCloseFunction a owl:Class ;
    rdfs:subClassOf saref:ActuatingFunction ;
    rdfs:comment "An actuating function that allows to open and close a device"@en ;
    rdfs:label "Open close function"@en ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:OpenCloseFunction is deprecated: may be defined as an instance of saref:Function in the next major revision of SAREF"@en .

saref:OnOffFunction a owl:Class ;
    rdfs:subClassOf saref:ActuatingFunction ;
    rdfs:comment "An actuating function that allows to switch on and off an actuator"@en ;
    rdfs:label "On off function"@en ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:OnOffFunction is deprecated: may be defined as an instance of saref:Function in the next major revision of SAREF"@en .

saref:ActuatingFunction a owl:Class ;
    rdfs:subClassOf saref:Function ;
    rdfs:comment "A function that allows to transmit data to actuators, such as level settings (e.g., temperature) or binary switching (e.g., open/close, on/off)"@en ;
    rdfs:label "Actuating function"@en ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:ActuatingFunction is deprecated: may be defined as an instance of saref:Function in the next major revision of SAREF"@en .

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

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

## The OP saref:hasFunction may be used to link a feature kind or device to its functions. Its inverse is saref:isFunctionOf.

saref:hasFunction a owl:ObjectProperty ;
    owl:inverseOf saref:isFunctionOf ;
    rdfs:label "has function"@en ;
    rdfs:comment "Links a feature kind or a device to one of its functions."@en ;
Maxime Lefrançois's avatar
Maxime Lefrançois committed
    rdfs:domain [ a owl:Class ; owl:unionOf ( saref:FeatureKind saref:FeatureOfInterest ) ] ;
    rdfs:range saref:Function ;
    skos:historyNote "V3.2.1: Domain of saref:hasFunction is relaxed."@en .

saref:isFunctionOf a owl:ObjectProperty ;
    owl:inverseOf saref:hasFunction ;
    rdfs:label "is function of"@en ;
    rdfs:comment "Links a function to the feature kind or device it is a function of."@en ;
    rdfs:domain saref:Function ;
Maxime Lefrançois's avatar
Maxime Lefrançois committed
    rdfs:range [ a owl:Class ; owl:unionOf ( saref:FeatureKind saref:FeatureOfInterest ) ] ;
    skos:historyNote "V3.2.1: Introduced saref:isFunctionOf."@en .

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

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

## Devices inherit the functions of their device kinds.

saref:hasFunction
    owl:propertyChainAxiom ( saref:hasDeviceKind saref:hasFunction ) .


# ETSI TS 103264 Clause 5.7.3: Functions of interest

## An instance of saref:FunctionOfInterest is supported by exactly one device.

saref:FunctionOfInterest a owl:Class ;
    rdfs:label "Function of Interest"@en ;
    rdfs:comment "Logical groups of commands that devices support to accomplish their tasks. Function can act upon (OP saref:actsUpon and its sub-properties) features, properties, or states. An instance of saref:FunctionOfInterest is supported by exactly one device."@en ;
    skos:note "A function of interest is the function of (OP saref:isFunctionOfInterestOf) exactly one device."@en ;
    skos:note """Functions of interest need not always be explicited. It depends on the use case. Typically, functions of interest are useful to specify which command is actually exposed, and which actual property of interest or state of interest it acts upon."""@en ;
    skos:historyNote "V3.2.1: Introduced saref:FunctionOfInterest, parallel to saref:PropertyOfInterest."@en .

## The OP saref:hasFunctionOfInterest may be used to link a feature of interest to its functions of interest. Its inverse is saref:isFunctionOfInterestOf and is functional.

saref:hasFunctionOfInterest a owl:ObjectProperty ;
    owl:inverseOf saref:isFunctionOfInterestOf ;
    rdfs:comment "Links a device to one of its functions of interest."@en ;
    rdfs:label "has function of interest"@en ;
    rdfs:domain saref:Device ;
    rdfs:range saref:FunctionOfInterest .

saref:isFunctionOfInterestOf a owl:ObjectProperty , owl:FunctionalProperty ;
    owl:inverseOf saref:hasFunctionOfInterest ;
    rdfs:comment "Links a function of interest to the device it is a function of."@en ;
    rdfs:label "is function of interest of"@en ;
    rdfs:domain saref:FunctionOfInterest ;
    rdfs:range saref:Device .

## A function of interest is the function of (OP saref:isFunctionOfInterestOf) exactly one device.

saref:FunctionOfInterest 
    rdfs:subClassOf 
        [   a owl:Restriction ;
            owl:onProperty saref:isFunctionOfInterestOf ;
            owl:cardinality 1
        ] .

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

saref:hasFunctionKind a owl:ObjectProperty ;
    rdfs:label "has function kind"@en ;
    rdfs:comment "links a function of interest to its kind, a function"@en ;
    rdfs:domain saref:FunctionOfInterest ;
    rdfs:range saref:Function .

## Functions of interest inherit broader functions.

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

## Devices inherit the function kinds of their function of interest.

saref:hasFunction
    owl:propertyChainAxiom ( saref:hasFunctionOfInterest saref:hasFunctionKind ) .


# ETSI TS 103264 Clause 5.9: Commands and device commands

## In SAREF, commands represent the lowest-level directives a device supports and exposes to some network. Commands can act upon (OP saref:actsUpon and its sub-properties) features, properties, or states. While commands are independent of any function, commands of interest are commands actually supported by a function of interest.

# ETSI TS 103264 Clause 5.9.2: Commands

## An instance of saref:Command is independent of any device.

saref:Command a owl:Class ;
    rdfs:label "Command"@en ;
    rdfs:comment "The lowest-level directives a function exposes to some network. Commands can act upon (OP saref:actsUpon and its sub-properties) features, properties, or states. An instance of saref:Command is independent of any device."@en ;
    skos:example "Observe property, control property, observe state, control state, invoke action, cancel action, turn on or off, change color, subscribe, publish, etc. are all commands."@en ;
    skos:historyNote "V3.2.1: Simplified definition and axiomatization of saref:Command. Added examples."@en .

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

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

## The OP saref:hasCommand may be used to link a function or function of interest to its commands. Its inverse is saref:isCommandOf. SAREF Core defines two sub-properties of saref:hasCommand:
## - saref:hasMandatoryCommand for when the command is mandatory to the function,  
## - saref:hasOptionalCommand for when the command is optional to the function.

saref:hasCommand a owl:ObjectProperty ;
    owl:inverseOf saref:isCommandOf ;
    rdfs:label "has command"@en ;
    rdfs:comment "Links a function or function of interest and the command it supports."@en ;
    rdfs:domain [ a owl:Class ; owl:unionOf ( saref:Function saref:FunctionOfInterest ) ] ;
    rdfs:range saref:Command ;
    skos:historyNote "V3.2.1: Domain of saref:hasCommand is relaxed to saref:Function or saref:FunctionOfInterest."@en .

saref:isCommandOf a owl:ObjectProperty ;
    owl:inverseOf saref:hasCommand ;
    rdfs:label "is command of"@en ;
    rdfs:comment "Links a command and a function or function of interest that supports it."@en ;
    rdfs:domain saref:Command ;
    rdfs:range [ a owl:Class ; owl:unionOf ( saref:Function saref:FunctionOfInterest ) ] .

saref:hasMandatoryCommand a owl:ObjectProperty ;
    owl:subPropertyOf saref:hasCommand ;
    rdfs:label "has mandatory command"@en ;
    rdfs:comment "Links a function and one of its mandatory commands"@en ;
    rdfs:domain saref:Function ;
    skos:historyNote "V3.2.1: Introduced mandatory and optional commands."@en .

saref:hasOptionalCommand a owl:ObjectProperty ;
    owl:subPropertyOf saref:hasCommand ;
    rdfs:label "has optional command"@en ;
    rdfs:comment "Links a function and one of its optional commands"@en ;
    rdfs:domain saref:Function .

## Functions inherit the mandatory commands of their broader functions.

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

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

saref:hasCommand
    owl:propertyChainAxiom ( saref:hasFeatureKind saref:hasMandatoryCommand ) .

## A command may be described in terms of its input parameters using OP saref:hasInput. Typically, input parameters are feature kinds, properties, or states.

saref:hasInput a owl:ObjectProperty ;
    rdfs:label "has input"@en ;
    rdfs:comment "Links a command, operation, or procedure execution, to its inputs."@en ;
    rdfs:domain [ a owl:Class ; owl:unionOf ( saref:Command saref:CommandOfInterest saref:Operation saref:ProcedureExecution ) ] ;
    skos:example "Different complementary commands can be defined for controlling a light. Turn on or off the light based on a desired state, toggle the light status of a specific light, set the luminosity level with a transition time, set the default transition time, start comfort."@en ;
    skos:historyNote "V3.2.1: Introduced saref:hasInput and saref:hasOutput."@en .

## A command may be described in terms of its outputs using OP saref:hasOutput. Typically, outputs are properties or states.

saref:hasOutput a owl:ObjectProperty ;
    rdfs:label "has output"@en ;
    rdfs:comment "Links a command or operation to its outputs."@en ;
    rdfs:domain [ a owl:Class ; owl:unionOf ( saref:Command saref:CommandOfInterest saref:Operation ) ] ;
    skos:example "Different complementary commands can be defined for observing a smart home. Observe the temperature once will output the indoor temperature property; observe status of the entry door will output an open/close state."@en .
## A command may be described in terms of the properties or states it acts upon, such as observe, or control.

# ETSI TS 103264 Clause 5.9.3: Commands of Interest

## A saref:CommandOfInterest is a directives actually exposed by a device function. 

saref:CommandOfInterest a owl:Class ;
    rdfs:label "Command Of Interest"@en ;
    rdfs:comment "The lowest-level directives a device supports and exposes to some network. Commands can act upon (OP saref:actsUpon and its sub-properties) features, properties, or states. A saref:CommandOfInterest is a directives actually supported by a device and exposed to some network."@en ;
    skos:note "Like for commands, commands of interest may be described in terms of their input parameters, outputs, and of which properties or states they act upon."@en ;
    skos:note "Commands of interest need not always be explicited. It depends on the use case. Typically, commands of interest are useful to specify the actual property of interest or state of interest that is expected as input parameter, output, or that will be acted upon."@en ;
    skos:example "The corridor smart light switch supports a command of kind “turn on/off”, which controls the state of the outdoor light."@en ;
    skos:example "The smart fridge supports a command of kind “observe temperature”, which observes the temperature of the fridge."@en ;
    skos:historyNote "V3.2.1: Introduced saref:CommandOfInterest, parallel to saref:PropertyOfInterest."@en .



## The OP saref:hasCommandOfInterest may be used to link a function of interest to its command of interest. Its inverse is saref:isCommandOfInterestOf and is functional.

saref:hasCommandOfInterest a owl:ObjectProperty ;
    owl:inverseOf saref:isCommandOfInterestOf ;
    rdfs:comment "Links a function of interest to one of its commands of interest."@en ;
    rdfs:label "has command of interest"@en ;
    rdfs:domain saref:FunctionOfInterest ;
    rdfs:range saref:CommandOfInterest .

saref:isCommandOfInterestOf a owl:ObjectProperty , owl:FunctionalProperty ;
    owl:inverseOf saref:hasCommandOfInterest ;
    rdfs:comment "Links a command of interest to the function of interest it is a command of."@en ;
    rdfs:label "is command of interest of"@en ;
    rdfs:domain saref:CommandOfInterest ;
    rdfs:range saref:FeatureOfInterest .

## A command of interest is the command of (OP saref:isCommandOfInterestOf) exactly one function of interest.

saref:CommandOfInterest 
    rdfs:subClassOf 
        [   a owl:Restriction ;
            owl:onProperty saref:isCommandOfInterestOf ;
            owl:cardinality 1
        ] .

## A command of interest is the command of (OP saref:isCommandOfInterestOf) exactly one function.

saref:CommandOfInterest 
    rdfs:subClassOf 
        [   a owl:Restriction ;
            owl:onProperty saref:isCommandOfInterestOf ;
            owl:cardinality 1
        ] .

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

saref:hasCommandKind a owl:ObjectProperty ;
    rdfs:label "has command kind"@en ;
    rdfs:comment "links a command of interest to its kind, a command."@en ;
    rdfs:domain saref:CommandOfInterest ;
    rdfs:range saref:Command .

## Commands of interests inherit broader commands.

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

## Functions inherit the command kinds of their command of interest.

saref:hasCommand
    owl:propertyChainAxiom ( saref:hasCommandOfInterest saref:hasCommandKind ) .
## Deprecated 

saref:ToggleCommand a owl:Class ;
    rdfs:subClassOf saref:Command ;
    rdfs:comment "A type of command"@en ;
    rdfs:label "Toggle command"@en ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:ToggleCommand is deprecated: may be defined as an instance of saref:Command in the next major revision of SAREF"@en .

saref:GetCommand a owl:Class ;
    rdfs:subClassOf saref:Command ;
    rdfs:comment "A type of command"@en ;
    rdfs:label "Get command"@en ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:GetCommand is deprecated: may be defined as an instance of saref:Command in the next major revision of SAREF"@en .

saref:NotifyCommand a owl:Class ;
    rdfs:subClassOf saref:Command ;
    rdfs:comment "A type of command"@en ;
    rdfs:label "Notify command"@en ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:NotifyCommand is deprecated: may be defined as an instance of saref:Command in the next major revision of SAREF"@en .

saref:GetSensingDataCommand a owl:Class ;
    rdfs:subClassOf saref:Command ;
    rdfs:comment "A type of get command"@en ;
    rdfs:label "Get sensing data command"@en ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:GetSensingDataCommand is deprecated: may be defined as an instance of saref:Command in the next major revision of SAREF"@en .

saref:GetCurrentMeterValueCommand a owl:Class ;
    rdfs:subClassOf saref:GetCommand ;
    rdfs:comment "A type of get command"@en ;
    rdfs:label "Get current meter value command"@en ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:GetCurrentMeterValueCommand is deprecated: may be defined as an instance of saref:Command in the next major revision of SAREF"@en .

saref:GetMeterDataCommand a owl:Class ;
    rdfs:subClassOf saref:GetCommand ;
    rdfs:comment "A type of get command"@en ;
    rdfs:label "Get meter data command"@en ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:GetMeterDataCommand is deprecated: may be defined as an instance of saref:Command in the next major revision of SAREF"@en .

saref:GetMeterHistoryCommand a owl:Class ;
    rdfs:subClassOf saref:GetCommand ;
    rdfs:comment "A type of get command"@en ;
    rdfs:label "Get meter history command"@en ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:GetMeterHistoryCommand is deprecated: may be defined as an instance of saref:Command in the next major revision of SAREF"@en .

saref:SetAbsoluteLevelCommand a owl:Class ;
    rdfs:subClassOf saref:Command ;
    rdfs:comment "A type of set level command"@en ;
    rdfs:label "Set absolute level command"@en ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:SetAbsoluteLevelCommand is deprecated: may be defined as an instance of saref:Command in the next major revision of SAREF"@en .

saref:SetRelativeLevelCommand a owl:Class ;
    rdfs:subClassOf saref:SetLevelCommand ;
    rdfs:comment "A type of set level command"@en ;
    rdfs:label "Set relative level command"@en ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:SetRelativeLevelCommand is deprecated: may be defined as an instance of saref:Command in the next major revision of SAREF"@en .

saref:SetLevelCommand a owl:Class ;
    rdfs:subClassOf saref:Command ;
    rdfs:comment "A type of command"@en ;
    rdfs:label "Set level command"@en ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:SetLevelCommand is deprecated: may be defined as an instance of saref:Command in the next major revision of SAREF"@en .

saref:StepDownCommand a owl:Class ;
    rdfs:subClassOf saref:Command ;
    rdfs:comment "A type of command"@en ;
    rdfs:label "Step down command"@en ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:StepDownCommand is deprecated: may be defined as an instance of saref:Command in the next major revision of SAREF"@en .

saref:StepUpCommand a owl:Class ;
    rdfs:subClassOf saref:Command ;
    rdfs:comment "A type of command"@en ;
    rdfs:label "Step up command"@en ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:StepUpCommand is deprecated: may be defined as an instance of saref:Command in the next major revision of SAREF"@en .

saref:PauseCommand a owl:Class ;
    rdfs:subClassOf saref:Command ;
    rdfs:comment "A type of command"@en ;
    rdfs:label "Pause command"@en ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:PauseCommand is deprecated: may be defined as an instance of saref:Command in the next major revision of SAREF"@en .

saref:StartCommand a owl:Class ;
    rdfs:subClassOf saref:Command ;
    rdfs:comment "A type of command"@en ;
    rdfs:label "Start command"@en ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:StartCommand is deprecated: may be defined as an instance of saref:Command in the next major revision of SAREF"@en .

saref:StopCommand a owl:Class ;
    rdfs:subClassOf saref:Command ;
    rdfs:comment "A type of command"@en ;
    rdfs:label "Stop command"@en ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:StopCommand is deprecated: may be defined as an instance of saref:Command in the next major revision of SAREF"@en .

saref:CloseCommand a owl:Class ;
    rdfs:subClassOf saref:Command ;
    rdfs:comment "A type of command"@en ;
    rdfs:label "Close command"@en ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:CloseCommand is deprecated: may be defined as an instance of saref:Command in the next major revision of SAREF"@en .

saref:OpenCommand a owl:Class ;
    rdfs:subClassOf saref:Command ;
    rdfs:comment "A type of command"@en ;
    rdfs:label "Open command"@en ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:OpenCommand is deprecated: may be defined as an instance of saref:Command in the next major revision of SAREF"@en .

saref:OnCommand a owl:Class ;
    rdfs:subClassOf saref:Command ;
    rdfs:comment "A type of command"@en ;
    rdfs:label "On command"@en ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:OnCommand is deprecated: may be defined as an instance of saref:Command in the next major revision of SAREF"@en .

saref:OffCommand a owl:Class ;
    rdfs:subClassOf saref:Command ;
    rdfs:comment "A type of command"@en ;
    rdfs:label "Off command"@en ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:OffCommand is deprecated: may be defined as an instance of saref:Command in the next major revision of SAREF"@en .
# ETSI TS 103264 Clause 5.10: Services and Operations

## A saref:Service is a digital representation of a function in a network, making it discoverable, registerable and remotely controllable in the network.

saref:Service a owl:Class ;
    rdfs:label "Service"@en ;
    rdfs:comment "A saref:Service is a digital representation of a function in a network, making it discoverable, registerable and remotely controllable in the network."@en ;
    skos:note "Typically, a device connected to a given network offers one service for each of its functions of interest."@en ;
    skos:example "For example, a light switch can offer the service of remotely switching the lights in a home through mobile phone devices that are connected to the local network (ex:SwitchOnService class). This \"remote switching\" service represents the ex:OnOffFunction."@en ;
    skos:historyNote "V3.2.1: Simplified definition of saref:Service. Added examples."@en .

    
## OP saref:represents links a service to some function or function of interest it exposes to the network.

saref:represents a owl:ObjectProperty ;
    rdfs:label "represents"@en ;
    rdfs:comment "Links a service to some function or function of interest it exposes to the network. Also links an operation to some command or command of interest it exposes to the network."@en ;
    rdfs:domain [ a owl:Class ; owl:unionOf ( saref:Service saref:Operation ) ] ;
    rdfs:range [ a owl:Class ; owl:unionOf ( saref:Function saref:FunctionOfInterest saref:Command saref:CommandOfInterest ) ] ;
    skos:historyNote "V3.2.1: Relaxed domain and range of saref:represents."@en .

saref:Service
    rdfs:subClassOf [
        a owl:Restriction ; 
        owl:onProperty saref:represents ;
        owl:allValuesFrom [ a owl:Class ; owl:unionOf ( saref:Function saref:FunctionOfInterest ) ]
        ] .    

## A service represents at least one function of interest.

saref:Service
    rdfs:subClassOf [
        a owl:Restriction ; 
        owl:onProperty saref:represents ;
        owl:onClass saref:FunctionOfInterest ;
        owl:minQualifiedCardinality 1
        ] .
## OP saref:offers links a device to a service it exposes to a network. Its inverse if saref:isOfferedBy.

saref:offers a owl:ObjectProperty ;
    owl:inverseOf saref:isOfferedBy ;
    rdfs:label "offers"@en ;
    rdfs:comment "Links a device to a service it exposes to a network."@en ;
    rdfs:domain saref:Device ;
    rdfs:range saref:Service ;
    skos:historyNote "V3.2.1: Clarified definition of saref:offers."@en .

saref:isOfferedBy a owl:ObjectProperty , owl:FunctionalProperty ;
    owl:inverseOf saref:offers ;
    rdfs:label "is offered by"@en ;
    rdfs:comment "Links a service to the device that exposes it to a network"@en ;
    rdfs:domain saref:Service ;
    rdfs:range saref:Device ;
    skos:historyNote "V3.2.1: Clarified definition of saref:isOfferedBy."@en .

## A service is offered by exactly one device. 

saref:Service
    rdfs:subClassOf [
        a owl:Restriction ; 
        owl:onProperty saref:isOfferedBy ;
        owl:cardinality 1
        ] .

## Deprecated

saref:SwitchOnService a owl:Class ;
    rdfs:subClassOf saref:Service ;
    rdfs:comment "A type of service that represents an on/off function to the network"@en ;
    rdfs:label "Switch on service"@en ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:SwitchOnService is deprecated for it is just an example. It may be deleted in the next major revision of SAREF"@en .


## A saref:Operation is the means of a service to communicate in a procedure-type manner over the network (i.e. transmit data to/from other devices). It is the –machine interpretable– exposure of a –human understandable– command to a network.

saref:Operation a owl:Class ;
    rdfs:label "Operation"@en ;
    rdfs:comment "A saref:Operation is the means of a service to communicate in a procedure-type manner over the network (i.e. transmit data to/from other devices). It is the –machine interpretable– exposure of a –human understandable– command to a network."@en ;
    skos:note "Typically, a device connected to a given network offers one service for each of its functions of interest, and each service has one operation per command of interest of the function of interest it represents."@en ;
    skos:note "An operation may be described in terms of its inputs and outputs using OP saref:hasInput and saref:hasOutput. Inputs and outputs of operations typically describe the expected schema or shape of network messages."@en ;
    skos:example "To turn on a light, send a CoAP PUT request with CBOR content 0xf5 (true)"@en ;
    skos:example "In the set of operations exposed by a smart light bulb on a given network, one may be dedicated to turn on and off the light and expect a boolean as input. Another one may be dedicated to set the luminosity status and expect a target luminosity level (a byte) and a transition time (encoded on two bytes)."@en ;
    skos:example "In the set of operations exposed by a smart washing machine on a given network, one may be dedicated to set the water temperature for the washing cycle, and expected as input a enumerated value. Another one may be dedicated to start, pause, or stop the washing cycle."@en ;
    skos:historyNote "V3.2.1: Introduced saref:Operation and associated properties from oneM2M base ontology."@en .

## OP saref:represents also links an operation to some command or command of interest it exposes to the network. 

saref:Operation
    rdfs:subClassOf [
        a owl:Restriction ; 
        owl:onProperty saref:represents ;
        owl:allValuesFrom [ a owl:Class ; owl:unionOf ( saref:Command saref:CommandOfInterest ) ]
        ] .    

## An operation represents at least one command of interest.

saref:Operation
    rdfs:subClassOf [
        a owl:Restriction ; 
        owl:onProperty saref:represents ;
        owl:onClass saref:CommandOfInterest ;
        owl:minQualifiedCardinality 1
        ] .

## OP saref:hasOperation links a service to its operations. Its inverse is saref:isOperationOf.

saref:hasOperation a owl:ObjectProperty ;
    owl:inverseOf saref:isOperationOf ;
    rdfs:label "has operation"@en ;
    rdfs:comment "Links a service to one of its operations."@en ;
    rdfs:domain saref:Service ;
    rdfs:range saref:Operation .

saref:isOperationOf a owl:ObjectProperty , owl:FunctionalProperty ;
    owl:inverseOf saref:hasOperation ;
    rdfs:label "is operation of"@en ;
    rdfs:comment "Links an operation to the service it belongs to."@en ;
    rdfs:domain saref:Operation ;
    rdfs:range saref:Service .

## An operation belongs to exactly one service. 

saref:Operation
    rdfs:subClassOf [
        a owl:Restriction ; 
        owl:onProperty saref:isOperationOf ;
        owl:cardinality 1
        ] .
# ETSI TS 103264 Clause 5.11: Procedure executions
# ETSI TS 103264 Clause 5.11.1:	Procedure executions
## A saref:ProcedureExecution represents the act of carrying out a procedure. 
saref:ProcedureExecution a owl:Class ;
    rdfs:label "Procedure Execution"@en ;
    rdfs:comment "Represents the act of carrying out a procedure."@en ;
    skos:historyNote "V3.2.1: Introduced saref:ProcedureExecution."@en .
## OP saref:madeBy links a procedure execution to the device that made it.
saref:madeBy a owl:ObjectProperty  ;
    owl:inverseOf saref:madeExecution ;
    rdfs:label "made by"@en ;
Maxime Lefrançois's avatar
Maxime Lefrançois committed
    rdfs:comment "Links a procedure execution to the entity (e.g., device) that made it."@en ;
    rdfs:domain saref:ProcedureExecution ;
Maxime Lefrançois's avatar
Maxime Lefrançois committed
    rdfs:range saref:FeatureOfInterest ;
    skos:historyNote "V3.2.1: Introduce saref:madeBy (resp. saref:madeExecution) as generalization of saref:measurementMadeBy (resp. saref:makesMeasurement)."@en .
saref:madeExecution a owl:ObjectProperty  ;
    owl:inverseOf saref:madeBy ;
    rdfs:label "made execution"@en ;
Maxime Lefrançois's avatar
Maxime Lefrançois committed
    rdfs:comment "Links an entity (e.g., device) to the procedure execution it made."@en ;
    rdfs:domain saref:FeatureOfInterest ;
    rdfs:range saref:ProcedureExecution .
## Deprecated 
saref:makesMeasurement a owl:ObjectProperty ;
    owl:inverseOf saref:measurementMadeBy ;
    rdfs:comment "A relation between a device and the measurements it makes. Such measurement will link together the value of the measurement, its unit of measure and the property to which it relates."@en ;
    rdfs:domain saref:Device ;
    rdfs:range saref:Measurement ;
    rdfs:label "makes measurement"@en ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:makesMeasurement is deprecated as one of the properties related to saref:Measurement. It may be deleted in the next major revision of SAREF"@en .
saref:measurementMadeBy a owl:ObjectProperty ;
    rdfs:comment "A relation between a measurement and the device that made it."@en ;
    rdfs:domain saref:Measurement ;
    rdfs:range saref:Device ;
    rdfs:label "measurement made by"@en ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: saref:makesMeasurement is deprecated as one of the properties related to saref:Measurement. It may be deleted in the next major revision of SAREF"@en .
## A procedure execution may be linked to its inputs using OP saref:hasInput .
## A procedure execution may be linked to its result using OP saref:hasResult. 
saref:hasResult a owl:ObjectProperty ;
    rdfs:label "has result"@en ;
    rdfs:comment "Links a procedure execution (e.g., an observation) to its result (e.g., a property value)."@en ;
    rdfs:domain saref:ProcedureExecution ;
    skos:historyNote "V3.2.1: Introduced saref:hasResult as part of general will to make SAREF and SOSA/SSN converge."@en .
## DP saref:hasResultTime links a procedure execution to the instant of time when the procedure is completed, expressed as an xsd:dateTime literal.
saref:hasResultTime a owl:DatatypeProperty ;
    rdfs:label "has result time"@en ;
    rdfs:comment "Links a procedure execution to the instant of time when the activity was completed, expressed as an xsd:dateTime literal."@en ;
    rdfs:domain saref:ProcedureExecution ;
    rdfs:range xsd:dateTime ;
    skos:historyNote "V3.2.1: Introduced saref:hasResultTime as part of general will to make SAREF and SOSA/SSN converge."@en .
## OP saref:hasPhenomenonTime links a procedure execution to the time that the result applies. It may be an interval or an instant, or some other compound temporal entity expressed using OWL Time.
saref:hasPhenomenonTime a owl:ObjectProperty ;
    rdfs:label "has phenomenon time"@en ;
    rdfs:comment "Links a procedure execution to the time that the result applies. It may be an interval or an instant, or some other compound temporal entity expressed using OWL Time."@en ;
    rdfs:range time:TemporalEntity ;
    skos:historyNote "V3.2.1: Introduced saref:hasPhenomenonTime as part of general will to make SAREF and SOSA/SSN converge."@en .
## When the execution time and the phenomenon time are the same time instants, then DP saref:hasTimestamp can be used to simply link a procedure execution to the time of these instants, expressed as an xsd:dateTime literal. 
saref:hasTimestamp a owl:DatatypeProperty ;
    rdfs:label "has timestamp"@en ;
    rdfs:comment "Links a procedure execution or a profile to an instant."@en ;
    skos:note "When the execution time and the phenomenon time are the same time instants, then DP saref:hasTimestamp can be used to simply link a procedure execution to the time of these instants, expressed as an xsd:dateTime literal."@en ;
    skos:note "Applied on a profile, it describes the applicable instant of that profile"@en ;
    rdfs:domain [ a owl:Class ; owl:unionOf ( saref:ProcedureExecution saref:Profile ) ] ;
    rdfs:range xsd:dateTime ;
    skos:historyNote "V3.2.1: Tried to clarify definition of saref:hasTimestamp. Still unclear."@en .
# ETSI TS 103264 Clause 5.11.2:	Command executions and operation executions
## A saref:CommandExecution describes the execution of a command. Typically, its inputs and outputs are human understandable and relate to some feature of interest, such as its state (e.g., s4abcd:On), or the value of its temperature (e.g., property value 21.0 °C). 
saref:CommandExecution a owl:Class ;
    rdfs:subClassOf saref:ProcedureExecution ;
    rdfs:label "Command Execution"@en ;
    rdfs:comment "Describes the execution of a command. Typically, its inputs and outputs are human understandable and relate to some feature of interest, such as its state (e.g., s4abcd:On), or the value of its temperature (e.g., property value 21.0 °C)."@en .
## A saref:OperationExecution describes the execution of an operation in a network: the–machine interpretable–  description of a communication between devices over the network. Typically, its input and result are network messages, that conform to the input and output of the executed operation.
saref:OperationExecution a owl:Class ;
    rdfs:subClassOf saref:ProcedureExecution ;
    rdfs:label "Operation Execution"@en ;
    rdfs:comment "Describes the execution of an operation in a network: the–machine interpretable–  description of a communication between devices over the network. Typically, its input and result are network messages, that conform to the input and output of the executed operation."@en .
## OP saref:isExecutionOf links a command execution to the command or command of interest that was executed. It also liks an operation execution to the operation that was executed.
saref:isExecutionOf a owl:ObjectProperty ;
    rdfs:label "is execution of"@en ;
    rdfs:comment "Links a command execution to the command or command of interest that was executed. Also liks an operation execution to the operation that was executed"@en ;
Maxime Lefrançois's avatar
Maxime Lefrançois committed
    rdfs:domain saref:ProcedureExecution ;
    rdfs:range [ a owl:Class ; owl:unionOf ( saref:Command saref:CommandOfInterest saref:Operation ) ] .
saref:CommandExecution
    rdfs:subClassOf
        [   a owl:Restriction ;
            owl:onProperty saref:isExecutionOf ;
            owl:allValuesFrom [ a owl:Class ; owl:unionOf ( saref:Command saref:CommandOfInterest ) ]
        ] .
saref:OperationExecution
    rdfs:subClassOf
        [   a owl:Restriction ;
            owl:onProperty saref:isExecutionOf ;
            owl:allValuesFrom saref:Operation
        ] .
## If a command execution is an execution of a command, it is also the execution of its broader commands.
saref:isExecutionOf
    owl:propertyChainAxiom ( saref:isExecutionOf skos:broader ) .
## If a command execution is an execution of a command of interest, it is also the execution of the command kind of that command of interest.
saref:isExecutionOf
    owl:propertyChainAxiom ( saref:isExecutionOf saref:hasCommandKind ) .
# ETSI TS 103264 Clause 5.11.3:	Observations, Measurements, and Actuations
## A saref:Observation is the act of carrying out a procedure to estimate or calculate a value of a property of a feature of interest, or a state of a feature of interest. It links to a sensor to describe what made the observation, and to the observed feature, property, property of interest, state, or state of interest. Typically, its result is a property value or a state. An observation of a state (OP saref:observes) should have a state as a result (OP saref:hasResult). Respectively, an observation of a property should have a property value as a result.
saref:Observation a owl:Class ;
    rdfs:subClassOf saref:ProcedureExecution ;
    rdfs:label "Observation"@en ;
    rdfs:comment "A saref:Observation is the act of carrying out a procedure to estimate or calculate a value of a property of a feature of interest, or a state of a feature of interest. It links to a sensor to describe what made the observation, and to the observed feature, property, property of interest, state, or state of interest. Typically, its result is a property value or a state. An observation of a state (OP saref:observes) should have a state as a result (OP saref:hasResult). Respectively, an observation of a property should have a property value as a result."@en ;
    rdfs:subClassOf 
        [   a owl:Restriction ;
            owl:onProperty saref:madeBy ;
            owl:allValuesFrom saref:Sensor
        ] ,
        [   a owl:Restriction ;
            owl:onProperty saref:observes ;
            owl:minCardinality 1
        ] .
## It links to a sensor to describe what made the observation

## A saref:Actuation is the act of carrying out a procedure to control the state of the world using an actuator. It links to an actuator to describe what made the actuation, and to the controlled feature, property, property of interest, state, or state of interest. Typically, its input is a property value or a state. An actuation of a state (OP saref:controls) should have a state as input (OP saref:hasInput). Respectively, an actuation of a property should have a property value as input.

saref:Actuation a owl:Class ;
    rdfs:subClassOf saref:ProcedureExecution ;
    rdfs:label "Actuation"@en ;
    rdfs:comment "A saref:Actuation is the act of carrying out a procedure to control the state of the world using an actuator. It links to an actuator to describe what made the actuation, and to the controlled feature, property, property of interest, state, or state of interest. Typically, its input is a property value or a state. An actuation of a state (OP saref:controls) should have a state as input (OP saref:hasInput). Respectively, an actuation of a property should have a property value as input."@en ;
    rdfs:subClassOf 
        [   a owl:Restriction ;
            owl:onProperty saref:madeBy ;
            owl:allValuesFrom saref:Actuator
        ] ,
        [   a owl:Restriction ;
            owl:onProperty saref:controls ;
            owl:minCardinality 1
        ] .

## Deprecated 

saref:Measurement a owl:Class ;
    rdfs:subClassOf [ a owl:Restriction ;
    owl:onProperty saref:isMeasurementOf ;
    owl:allValuesFrom saref:FeatureOfInterest
    ] ,
    [ a owl:Restriction ;
    owl:onProperty saref:isMeasuredIn ;
    owl:allValuesFrom saref:UnitOfMeasure
    ] ,
    [ a owl:Restriction ;
    owl:onProperty saref:relatesToProperty ;
    owl:allValuesFrom saref:Property
    ] ,
    [ a owl:Restriction ;
    owl:onProperty saref:isMeasuredIn ;
    owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
    owl:onClass saref:UnitOfMeasure
    ] ,
    [ a owl:Restriction ;
    owl:onProperty saref:relatesToProperty ;
    owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
    owl:onClass saref:Property
    ] ,
    [ a owl:Restriction ;
    owl:onProperty saref:hasTimestamp ;
    owl:allValuesFrom xsd:dateTime
    ] ,
    [ a owl:Restriction ;
    owl:onProperty saref:hasValue ;
    owl:cardinality "1"^^xsd:nonNegativeInteger
    ] ;
    rdfs:comment "Represents the measured value made over a property. It is also linked to the unit of measure in which the value is expressed and the timestamp of the measurement."@en ;
    rdfs:label "Measurement"@en ;
    owl:deprecated true ;
    skos:historyNote "V3.2.1: Deprecated saref:Measurement in favour of saref:Observation, to generalize to observation of states and convergence with SOSA/SSN."@en .

saref:hasMeasurement a owl:ObjectProperty ;
    rdfs:comment "A relationship between a feature of interest and a measurement about it"@en ;
    rdfs:domain saref:FeatureOfInterest ;
    rdfs:range saref:Measurement ;
    rdfs:label "has measurement"@en ;
    owl:deprecated true ;
Maxime Lefrançois's avatar
Maxime Lefrançois committed
    skos:historyNote "V3.2.1: Deprecated saref:hasMeasurement together with saref:Measurement."@en .

saref:isMeasurementOf a owl:ObjectProperty ;
    owl:inverseOf saref:hasMeasurement ;
    rdfs:comment "A relationship between a measurement and the feature of interest whose quality was measured"@en ;
    rdfs:domain saref:Measurement ;
    rdfs:range saref:FeatureOfInterest ;