Skip to content
saref.ttl 93.3 KiB
Newer Older

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

Maxime Lefrançois's avatar
Maxime Lefrançois committed
## In SAREF, commands represent the lowest-level directives a device supports and exposes to some network. Commands can target (OP saref:targets 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 ;
Maxime Lefrançois's avatar
Maxime Lefrançois committed
    rdfs:comment "The lowest-level directives a function exposes to some network. Commands can target (OP saref:targets 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 ;
Maxime Lefrançois's avatar
Maxime Lefrançois committed
    rdfs:comment "The lowest-level directives a device supports and exposes to some network. Commands can target (OP saref:targets 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 which properties or states they target."@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 targeted."@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 ) .
# 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
        ] .

## 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 .
## 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
        ] .


# ETSI TS 103264 Clause 5.12: Profiles

## A saref:Profile describes the money earned (negative values) or paied (positive values) for the use (production or consumption) of a commodity by a device in a certain context.

saref:Profile a owl:Class ;
    rdfs:label "Profile"@en ;
    rdfs:comment "A saref:Profile describes the money earned (negative values) or paied (positive values) for the use (production or consumption) of a commodity by a device in a certain context."@en ;
Maxime Lefrançois's avatar
Maxime Lefrançois committed
    skos:note "OP saref:hasProfile links a device to its profile. The device should be linked to a certain commodity using OP saref:isUsedFor or its sub-properties, and optionally to some property or state using OP saref:targets or its sub-properties."@en ;
    skos:note "The applicable context of a profile can be bound temporally using DP saref:hasTimestamp or its subproperties defined by SAREF extensions, or OP saref:hasApplicableTime which links to instant or interval or other compound temporal entity expressed using OWL Time."@en ;
    skos:note "The applicable context can be restricted to when the property of a feature of interest has some value (OPs saref:whenPropertyValue)"@en ;
    skos:note "The applicable context can be restricted to when a feature of interest has a certain state (OPs saref:whenState)."@en ;
    skos:note "OP saref:hasPrice links a profile to the money earned (negative values) or paid (positive values) for the use (production or consumption) of the commodity by the device."@en ;
    skos:historyNote "V3.2.1: Class saref:Profile has been re-specified, to take into account findings from SAREF4ENER V1.2.1."@en .

Maxime Lefrançois's avatar
Maxime Lefrançois committed
## OP saref:hasProfile links a device to its profile. The device should be linked to a certain commodity using OP saref:isUsedFor or its sub-properties, and optionally to some property or state using OP saref:targets or its sub-properties.

saref:hasProfile a owl:ObjectProperty ;
    owl:inverseOf saref:isProfileOf ;
    rdfs:label "has profile"@en ;
Maxime Lefrançois's avatar
Maxime Lefrançois committed
    rdfs:comment "Links a device to its profile. Its inverse is saref:isProfileOf. The device should be linked to a certain commodity using OP saref:isUsedFor or its sub-properties, and optionally to some property or state using OP saref:targets or its sub-properties."@en ;
    rdfs:domain [ a owl:Class ; owl:unionOf ( saref:DeviceKind saref:Device ) ] ;
    rdfs:range saref:Profile ;
    skos:historyNote "V3.2.1: Relaxed domain of saref:hasProfile to saref:FeatureKind or saref:Device"@en .

saref:isProfileOf a owl:ObjectProperty ;
    owl:inverseOf saref:hasProfile ;
    rdfs:label "is profile of"@en ;
Maxime Lefrançois's avatar
Maxime Lefrançois committed
    rdfs:comment "Links a profile to the device it describes. The device should be linked to a certain commodity using OP saref:isUsedFor or its sub-properties, and optionally to some property or state using OP saref:targets or its sub-properties."@en ;
    rdfs:domain saref:Profile ;
Maxime Lefrançois's avatar
Maxime Lefrançois committed
    rdfs:range [ a owl:Class ; owl:unionOf ( saref:DeviceKind saref:Device ) ] .

## The applicable context of a profile can be bound temporally using DP saref:hasTimestamp or its subproperties defined by SAREF extensions, or OP saref:hasApplicableTime which links to instant or interval or other compound temporal entity expressed using OWL Time.

saref:hasApplicableTime a owl:ObjectProperty ;
    rdfs:label "has applicable time"@en ;
    rdfs:comment "Links an entity (e.g., a profile) to an instant or interval or other compound temporal entity expressed using OWL Time, which bounds temporally the applicable context of that entity."@en ;
    rdfs:range [ a owl:Class ; owl:unionOf ( time:TemporalEntity time:TemporalPosition ) ] .

## The applicable context can be restricted to when the property of a feature of interest has some value (OPs saref:whenPropertyValue)

saref:whenPropertyValue a owl:ObjectProperty ;
    rdfs:label "when property value"@en ;
    rdfs:comment "Links a profile to a property value that contributes to restricting its applicable context."@en ;
    rdfs:domain saref:Profile ;
    rdfs:range saref:PropertyValue .

## The applicable context can be restricted to when a feature of interest has a certain state (OPs saref:whenState).

saref:whenState a owl:ObjectProperty ;
    rdfs:label "when state"@en ;
    rdfs:comment "Links a profile to a state that contributes to restricting its applicable context."@en ;
    rdfs:domain saref:Profile ;
    rdfs:range saref:State .

## OP saref:hasPrice links a profile to the money earned (negative values) or paid (positive values) for the use (production or consumption) of the commodity by the device.

saref:profileHasPrice a owl:ObjectProperty ;
    rdfs:label "has price"@en ;
    rdfs:comment "Links a profile to the money earned (negative values) or paid (positive values) for the use (production or consumption) of the commodity by the device"@en ;
    rdfs:domain saref:Profile ;
    rdfs:range saref:PropertyValue .


# New in V3.2.1

saref:hasIdentifier a owl:DatatypeProperty ;
    rdfs:label "has identifier"@en ;
    rdfs:comment "Links some entity to its identifier. Extensions of SAREF may define sub-properties such as s4abcd:hasUUID, s4abcd:hasGTIN12, etc."@en ;
    rdfs:seeAlso <https://labs.etsi.org/rep/saref/saref-portal/-/issues/2> .
Maxime Lefrançois's avatar
Maxime Lefrançois committed


# New in V4.1.1

saref:hasVersion a owl:DatatypeProperty ;
  rdfs:label "has version"@en ;
  rdfs:comment "Links some entity (e.g., a device) to its version."@en ;
  rdfs:range xsd:string ;
  rdfs:seeAlso <https://labs.etsi.org/rep/saref/saref-core/-/issues/53> .
  
saref:hasRevisionNumber a owl:DatatypeProperty ;
  rdfs:label "has revision number"@en ;
  rdfs:comment "Links some entity (e.g., a device) to its revision number."@en ;
  rdfs:range xsd:string ;
  rdfs:seeAlso <https://labs.etsi.org/rep/saref/saref-core/-/issues/53> .