Skip to content
saref.ttl 86.4 KiB
Newer Older
            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 "Measure property, control property, observe state, control state, invoke action, cancel action, turn on or off, change color, subscribe, publish, etc. are all commands."@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 .

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 .

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 to one of its input parameters."@en ;
    rdfs:domain [ a owl:Class ; owl:unionOf ( saref:Command saref:CommandOfInterest ) ] ;
    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 .

## 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 to one of its output parameters."@en ;
    rdfs:domain [ a owl:Class ; owl:unionOf ( saref:Command saref:CommandOfInterest ) ] ;
    skos:example "Different complementary commands can be defined for measuring and observing a smart home. Measure the temperature once will output the indoor temperature property; observe status of the entry door will output an open/close state."@en .


# 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 “measure temperature”, which measures the temperature of the fridge."@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 ;
    owl:deprecated true ;
    skos:note "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 ;
    owl:deprecated true ;
    skos:note "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 ;
    owl:deprecated true ;
    skos:note "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 ;
    owl:deprecated true ;
    skos:note "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:Command ;
    owl:deprecated true ;
    skos:note "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:Command ;
    owl:deprecated true ;
    skos:note "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:Command ;
    owl:deprecated true ;
    skos:note "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 ;
    owl:deprecated true ;
    skos:note "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:Command ;
    owl:deprecated true ;
    skos:note "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 ;
    owl:deprecated true ;
    skos:note "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 ;
    owl:deprecated true ;
    skos:note "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 ;
    owl:deprecated true ;
    skos:note "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 ;
    owl:deprecated true ;
    skos:note "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 ;
    owl:deprecated true ;
    skos:note "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 ;
    owl:deprecated true ;
    skos:note "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 ;
    owl:deprecated true ;
    skos:note "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 ;
    owl:deprecated true ;
    skos:note "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 ;
    owl:deprecated true ;
    skos:note "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 ;
    owl:deprecated true ;
    skos:note "DEPRECATED: may be defined as an instance of saref:Command in the next major revision of SAREF"@en .


saref:ProcedureExecution a owl:Class .
 

# # ETSI TS 103264 Clause 5.10: Services and Operations

# saref:Service a owl:Class ;
#     rdfs:subClassOf [ a owl:Restriction ;
#         owl:onProperty saref:isOfferedBy ;
#         owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
#         owl:onClass saref:Device
#         ] ,
#         [ a owl:Restriction ;
#         owl:onProperty saref:represents ;
#         owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
#         owl:onClass saref:Function
#         ] ;
#     rdfs:comment "A service is a representation of a function to a network that makes the function discoverable, registerable, remotely controllable by other devices in the network. A service can represent one or more functions. A Service is offered by a device that wants (a certain set of) its function(s) to be discoverable, registerable, remotely controllable by other devices in the network. A Service must specify the device that is offering the service and the function(s) to be represented."@en ;
#     rdfs:label "Service"@en .

# saref:offers a owl:ObjectProperty ;
#     rdfs:comment "Links a device and a service"@en ;
#     rdfs:domain saref:Device ;
#     rdfs:range saref:Service ;
#     rdfs:label "offers"@en .

# saref:isOfferedBy a owl:ObjectProperty ;
#     owl:inverseOf saref:offers ;
#     rdfs:comment "Links a service and a device that offers the service"@en ;
#     rdfs:domain saref:Service ;
#     rdfs:range saref:Device ;
#     rdfs:label "is offered by"@en .


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

# saref:offers # devices inherit the services of their kind
#     owl:propertyChainAxiom ( saref:hasDeviceKind saref:offers ) .

# saref:represents a owl:ObjectProperty ;
#     rdfs:comment "Links a service and a function."@en ;
#     rdfs:domain saref:Service ;
#     rdfs:range saref:Function ;
#     rdfs:label "represents"@en .

# # ETSI TS 103264 Clause 5.11: Procedure executions

# saref:FeatureOfInterest
#     rdfs:subClassOf [ a owl:Restriction ;
#         owl:onProperty saref:hasMeasurement ;
#         owl:allValuesFrom saref:Measurement 
#     ] .

# saref:hasTimestamp a owl:DatatypeProperty ;
#                    rdfs:comment "A relationship stating the timestamp of an entity (e.g. a measurement)."@en ;
#                    rdfs:label "has timestamp"@en .

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

# saref:hasMeasurement a owl:ObjectProperty ;
#     rdfs:comment "Links a feature of interest and a measurement about it"@en ;
#     rdfs:domain saref:FeatureOfInterest ;
#     rdfs:range saref:Measurement ;
#     rdfs:label "has measurement"@en .

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

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

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

# saref:relatesToMeasurement a owl:ObjectProperty ;
#     rdfs:comment "Links a property and the measurements it relates to"@en ;
#     rdfs:domain saref:Property ;
#     rdfs:range saref:Measurement ;
#     rdfs:label "relates to measurement"@en .

# saref:relatesToProperty a owl:ObjectProperty ;
#     owl:inverseOf saref:relatesToMeasurement ;
#     rdfs:comment "Links a measurement and the property it relates to"@en ;
#     rdfs:domain saref:Measurement ;
#     rdfs:range saref:Property ;
#     rdfs:label "relates to property"@en .


# # ETSI TS 103264 Clause 5.12: Profiles

# saref:Profile a owl:Class ;
#     rdfs:subClassOf [ a owl:Restriction ;
#         owl:onProperty saref:consistsOf ;
#         owl:allValuesFrom saref:Profile
#         ] ,
#         [ a owl:Restriction ;
#         owl:onProperty saref:hasPrice ;
#         owl:allValuesFrom saref:Price
#         ] ,
#         [ a owl:Restriction ;
#         owl:onProperty saref:hasTime ;
#         owl:allValuesFrom saref:Time
#         ] ,
#         [ a owl:Restriction ;
#         owl:onProperty saref:isAbout ;
#         owl:allValuesFrom [ a owl:Class ; owl:unionOf ( saref:Commodity saref:Property ) ]
#         ] ;
#     rdfs:comment "A specification associated to a device to collect information about a certain Property (e.g., Energy) for optimizing its usage in the home, office or building in which the device is located. This specification is about a certain Property (saref:isAbout), can be calculated over a time span (saref:hasTime) and can be associated to some costs (saref:hasPrice). An example is the Power Profile defined in the SAREF4ENER extension that can be associated to a device for optimizing the Energy efficiency in the home, office or building in which the device is located."@en ;
#     rdfs:label "Profile"@en .

# saref:hasProfile a owl:ObjectProperty ;
#     rdfs:comment "A relationship associating a profile to a certain device"@en ;
#     rdfs:domain saref:Device ;
#     rdfs:range saref:Profile ;
#     rdfs:label "has profile"@en .

# saref:isAbout a owl:ObjectProperty ;
#     rdfs:comment "A relationship identifying what an entity, such as a profile, is about"@en ;
#     rdfs:label "isAbout"@en .


# # Deprecated

# saref:hasSensingRange a owl:ObjectProperty ;
#     rdfs:comment "Links 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 .

# 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 .
# saref:hasTypicalConsumption a owl:ObjectProperty ;
#     rdfs:comment "A relationship identifying the typical (energy or power) consumption of a device"@en ;
#     rdfs:label "has typical consumption"@en .

# saref:hasTime a owl:ObjectProperty ;
#     rdfs:comment "A relationship to associate time information to an entity"@en ;
#     rdfs:range saref:Time ;
#     rdfs:label "has time"@en .

# saref:Time a owl:Class ;
#     owl:deprecated true ;
#     rdfs:comment "A class that allows to specify the time concept."@en ;
#     rdfs:label "Time"@en .


# # Example related to sensors

# saref:Sensor a owl:Class ;
#     rdfs:subClassOf saref:Device ,
#         [ a owl:Restriction ;
#         owl:onProperty saref:hasFunction ;
#         owl:someValuesFrom saref:SensingFunction
#         ] ;
#     rdfs:comment "A device that detects and responds to events or changes in the physical environment such as light, motion, or temperature changes. Further, a device of category saref:Sensor that performs a saref:SensingFunction."@en ;
#     rdfs:label "Sensor"@en .

# # Example related to events



# # Example related to meters

# saref:Meter a owl:Class ;
#     rdfs:subClassOf saref:Device ,
#         [ a owl:Restriction ;
#             owl:onProperty saref:hasFunction ;
#             owl:someValuesFrom saref:MeteringFunction
#         ] ;
#     rdfs:comment "A device built to accurately detect and display a quantity in a form readable by a human being. Further, a device of category saref:Meter that performs a saref:MeteringFunction."@en ;
#     rdfs:label "Meter"@en .
# saref:hasMeterReading a owl:ObjectProperty ;
#     rdfs:comment "Links a metering function and the measurement of the reading"@en ;
#     rdfs:domain saref:MeteringFunction ;
#     rdfs:range saref:Measurement ;
#     rdfs:label "has meter reading"@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 .

# # Example related to level control

# saref:MultiLevelState a owl:Class ;
#     rdfs:subClassOf saref:State ;
#     rdfs:comment "A type of state"@en ;
#     rdfs:label "Multi level state"@en .

# # Example related to smoke

# saref:Smoke a owl:Class ;
#     rdfs:subClassOf saref:Property ;
#     rdfs:comment "A saref:Property related to some measurements that are characterized by a certain value that is measured in a unit of measure for smoke"@en ;
#     rdfs:label "Smoke"@en .

# saref:SmokeSensor a owl:Class ;
#     rdfs:subClassOf saref:Sensor ,
#         [ a owl:Restriction ;
#         owl:onProperty saref:hasFunction ;
#         owl:someValuesFrom saref:EventFunction
#         ] ,
#         [ a owl:Restriction ;
#         owl:onProperty saref:hasFunction ;
#         owl:someValuesFrom saref:SensingFunction
#         ] ,
#         [ a owl:Restriction ;
#         owl:onProperty saref:measuresProperty ;
#         owl:someValuesFrom saref:Smoke
#         ] ;
#     rdfs:comment "A sensor that performs the saref:SensingFunction and the saref:EventFunction, and is used for the purpose of sensing a property of type saref:Smoke. A saref:SmokeSensor is typically used to saref:accomplish saref:Safety."@en ;
#     rdfs:label "Smoke sensor"@en .


# # Example related to start/stop/pause

# saref:StartState a owl:Class ;
#     rdfs:subClassOf saref:StartStopState ;
#     rdfs:comment "The state of a device that is STARTED"@en ;
#     rdfs:label "Start state"@en .
# saref:StartStopState a owl:Class ;
#     rdfs:subClassOf saref:State ;
#     rdfs:comment "A type of state"@en ;
#     rdfs:label "Start stop state"@en .
# saref:StopState a owl:Class ;
#     rdfs:subClassOf saref:StartStopState ;
#     rdfs:comment "The state of a device that is STOPPED"@en ;
#     rdfs:label "Stop state"@en .

# # Example related to open/close

# saref:CloseState a owl:Class ;
#     rdfs:subClassOf saref:OpenCloseState ;
#     rdfs:comment "The state of a device that is CLOSE"@en ;
#     rdfs:label "Close state"@en .

# saref:OpenCloseState a owl:Class ;
#     rdfs:subClassOf saref:State ;
#     rdfs:comment "A type of state"@en ;
#     rdfs:label "Open close state"@en .

# saref:OpenState a owl:Class ;
#     rdfs:subClassOf saref:OpenCloseState ;
#     rdfs:comment "The state of a device that is OPEN "@en ;
#     rdfs:label "Open state"@en .

# # Example related to on/off

# saref:OffState a owl:Class ;
#     rdfs:subClassOf saref:OnOffState ;
#     rdfs:comment "The state of a device that is Off"@en ;
#     rdfs:label "Off state"@en .

# saref:OnOffState a owl:Class ;
#     rdfs:subClassOf saref:State ;
#     rdfs:comment "A type of state"@en ;
#     rdfs:label "On off state"@en .

# saref:OnState a owl:Class ;
#     rdfs:subClassOf saref:OnOffState ;
#     rdfs:comment "The state of a device that is On"@en ;
#     rdfs:label "On state"@en .

# # Example related to motion

# saref:Motion a owl:Class ;
#     rdfs:subClassOf saref:Property ;
#     rdfs:comment "A saref:Property related to some measurements that are characterized by a certain value that is measured in a unit of measure for motion"@en ;
#     rdfs:label "Motion"@en .

# # Example related to occupancy

# saref:Occupancy a owl:Class ;
#     rdfs:subClassOf saref:Property ;
#     rdfs:comment "A saref:Property related to some measurements that are characterized by a certain value (saref:hasValue property) that is measured in a unit of measure for occupancy"@en ;
#     rdfs:label "Occupancy"@en .



# # Example related to switch

# saref:Switch a owl:Class ;
#     rdfs:subClassOf saref:Actuator ;
#     rdfs:comment "A device of category saref:Actuator that performs an actuating function of type saref:OnOffFunction or saref:OpenCloseFunction"@en ;
#     rdfs:label "Switch"@en .

# saref:SwitchOnService a owl:Class ;
#     rdfs:subClassOf saref:Service ,
#         [ a owl:Restriction ;
#         owl:onProperty saref:isOfferedBy ;
#         owl:someValuesFrom saref:LightSwitch
#         ] ,
#         [ a owl:Restriction ;
#         owl:onProperty saref:represents ;
#         owl:someValuesFrom saref:OnOffFunction
#         ] ;
#     rdfs:comment "A type of service that represents an on/off function to the network"@en ;
#     rdfs:label "Switch on service"@en .

# # Example related to energy and power

# saref:Energy a owl:Class ;
#     rdfs:subClassOf saref:Property ;
#     rdfs:comment "A saref:Property related to some measurements that are characterized by a certain value measured in an energy unit (such as Kilowatt_Hour or Watt_hour). Furter specializations of the saref:Energy class can be found in the SAREF4ENER extension, where classes such as EnergyMax, EnergyMin and EnergyExpected are defined. "@en ;
#     rdfs:label "Energy"@en .

# saref:EnergyUnit a owl:Class ;
#     rdfs:subClassOf saref:UnitOfMeasure ;
#     rdfs:comment "The unit of measure for energy"@en ;
#     rdfs:label "Energy unit"@en .

# saref:Power a owl:Class ;
#     rdfs:subClassOf saref:Property ;
#     rdfs:comment "A saref:Property related to some measurements that are characterized by a certain value that is measured in a power unit (such as watt or kilowatt).  Further specializations of the saref:Power class can be found in the SAREF4ENER extension, where classes such as PowerMax, PowerMin and PowerExpected are defined."@en ;
#     rdfs:label "Power"@en .

# saref:PowerUnit a owl:Class ;
#     rdfs:subClassOf saref:UnitOfMeasure ;
#     rdfs:comment "The unit of measure for power"@en ;
#     rdfs:label "Power unit"@en .

# # Example related to pressure

# saref:Pressure a owl:Class ;
#     rdfs:subClassOf saref:Property ;
#     rdfs:comment "A saref:Property related to some measurements that are characterized by a certain value that is measured in a pressure unit (bar or pascal)"@en ;
#     rdfs:label "Pressure"@en .

# saref:PressureUnit a owl:Class ;
#     rdfs:subClassOf saref:UnitOfMeasure ;
#     rdfs:comment "The unit of measure for pressure"@en ;
#     rdfs:label "Pressure unit"@en .


# # Example related to price

# saref:hasPrice a owl:ObjectProperty ;
#     rdfs:comment "A relationship indentifying the price associated to an entity"@en ;
#     rdfs:range saref:Price ;
#     rdfs:label "has price"@en .

# saref:Price a owl:Class ;
#     rdfs:subClassOf saref:Property ;
#     rdfs:comment "A saref:Property crelated to some measurements that are characterized by a certain value that is measured using saref:Currency"@en ;
#     rdfs:label "Price"@en .
# saref:Currency a owl:Class ;
#     rdfs:subClassOf saref:UnitOfMeasure ;
#     rdfs:comment "The class of units of measure for price"@en ;
#     rdfs:label "Currency"@en .

# # Example related to temperature

# saref:Temperature a owl:Class ;
#     owl:deprecated true ;
#     skos:note "In future major revision of SAREF, this entity will be a named individual, instance of saref:Property."@en ;
#     rdfs:subClassOf saref:Property ;
#     rdfs:comment "A saref:Property related to some measurements that are characterized by a certain value that is measured in a temperature unit (degree_Celsius, degree_Fahrenheit, or degree_kelvin)"@en ;
#     rdfs:label "Temperature"@en .

# saref:TemperatureSensor a owl:Class ;
#     rdfs:subClassOf saref:Sensor ,
#         [ a owl:Restriction ;
#             owl:onProperty saref:hasFunction ;
#             owl:someValuesFrom saref:SensingFunction
#         ] ,
#         [ a owl:Restriction ;
#             owl:onProperty saref:measuresProperty ;
#             owl:someValuesFrom saref:Temperature
#         ] ;
#     rdfs:comment "A sensor that is used for the purpose of sensing a property of type saref:Temperature. A saref:TemperatureSensor is typically used to saref:accomplish saref:Comfort."@en ;
#     rdfs:label "Temperature sensor"@en .

# saref:TemperatureUnit a owl:Class ;
#     owl:deprecated true ;
#     rdfs:subClassOf saref:UnitOfMeasure ;
#     rdfs:comment "The unit of measure for temperature"@en ;
#     rdfs:label "Temperature unit"@en .


# # Example related to humidity

# saref:Humidity a owl:Class ;
#     rdfs:subClassOf saref:Property ;
#     rdfs:comment "A saref:Property related to some measurements that are characterized by a certain value that is measured in a humidity unit"@en ;
#     rdfs:label "Humidity"@en .


# # Example related to Actuator

# saref:Actuator a owl:Class ;
#     rdfs:subClassOf saref:Device ,
#         [ a owl:Restriction ;
#             owl:onProperty saref:hasFunction ;
#             owl:someValuesFrom saref:ActuatingFunction
#         ] ;
#     rdfs:comment "A device responsible for moving or controlling a mechanism or system by performing an actuating function"@en ;
#     rdfs:label "Actuator"@en .

# # Example related to Appliance

# # Example related to HVAC

# saref:HVAC a owl:Class ;
#     rdfs:subClassOf saref:Device ;
#     rdfs:comment "Heating, Ventilation and Air Conditioning (HVAC) device that provides indoor environmental comfort. A saref:HVAC is typically used to accomplish saref:Comfort."@en ;
#     rdfs:label "HVAC"@en .

# # Example related to light switch

# saref:IlluminanceUnit a owl:Class ;
#     rdfs:subClassOf saref:UnitOfMeasure ;
#     rdfs:comment "The unit of measure for light"@en ;
#     rdfs:label "Illuminance unit"@en .

# saref:Light a owl:Class ;
#     rdfs:subClassOf saref:Property ;
#     rdfs:comment "A saref:Property related to some measurements that are characterized by a certain value that is measured in a illuminance unit (lux)"@en ;
#     rdfs:label "Light"@en .

# saref:LightSwitch a owl:Class ;
#     rdfs:subClassOf saref:Switch ,
#         [ a owl:Restriction ;
#         owl:onProperty saref:hasFunction ;
#         owl:someValuesFrom saref:OnOffFunction
#         ] ,
#         [ a owl:Restriction ;
#         owl:onProperty saref:hasState ;
#         owl:someValuesFrom saref:OnOffState
#         ] ,
#         [ a owl:Restriction ;
#         owl:onProperty saref:controlsProperty ;
#         owl:someValuesFrom saref:Light
#         ] ,
#         [ a owl:Restriction ;
#         owl:onProperty saref:offers ;
#         owl:someValuesFrom saref:SwitchOnService
#         ] ;
# rdfs:comment "A switch that performs the saref:OnOffFunction, controls the property saref:Light, and can be found in the state saref:OnOffState. It can offer a switch on service. A saref:LightSwitch is typically used to accomplish saref:Lighting."@en ;
#     rdfs:label "Light switch"@en .

# # Example related to door switch

# saref:DoorSwitch a owl:Class ;
#     rdfs:subClassOf saref:Switch ,
#         [ a owl:Restriction ;
#         owl:onProperty saref:hasFunction ;
#         owl:someValuesFrom saref:OpenCloseFunction
#         ] ,
#         [ a owl:Restriction ;
#         owl:onProperty saref:hasState ;
#         owl:someValuesFrom saref:OpenCloseState
#         ] ;
#     rdfs:comment "A switch that performs the saref:OpenCloseFunction, is used for controlling a door, and can be found in the state saref:OpenCloseState. A saref:DoorSwitch is typically used to accomplish saref:Safety."@en ;
#     rdfs:label "Door switch"@en .




# # NEW

# saref:hasIdentifier a owl:DatatypeProperty ;
#   skos:note "See https://labs.etsi.org/rep/saref/saref-portal/-/issues/2" .