PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX saref: <https://saref.etsi.org/core/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

saref:StopState a rdfs:Class ;
  rdfs:label "Stop state"@en ;
  rdfs:comment "The state of a device that is STOPPED"@en ;
  rdfs:subClassOf saref:StartStopState .

<http://www.w3.org/2004/02/skos/core#narrower> a rdf:Property ;
  rdfs:range saref:State , saref:Function , saref:Commodity , saref:Command , saref:FeatureKind , saref:Property , saref:Task .

<http://www.w3.org/2004/02/skos/core#broader> a rdf:Property ;
  rdfs:range saref:State , saref:Function , saref:Commodity , saref:Command , saref:FeatureKind , saref:Property , saref:Task .

saref:isActedUponBy a rdf:Property ;
  rdfs:label "is acted upon by"@en ;
  rdfs:comment "Links a feature, property, or state, to the device, function, command, or procedure execution, that acts on it."@en ;
  rdfs:range xsd:string .

saref:isStateOf a rdf:Property ;
  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 xsd:string .

saref:StartStopFunction a rdfs:Class ;
  rdfs:label "Start stop function"@en ;
  rdfs:comment "An actuating function that allows to start and stop a device"@en ;
  rdfs:subClassOf saref:ActuatingFunction .

saref:actsUpon a rdf:Property ;
  rdfs:label "acts upon"@en ;
  rdfs:comment "Links a device, function, command, or procedure execution, to the feature, property, or state, it acts upon."@en ;
  rdfs:range xsd:string .

saref:hasMandatoryCommand a rdf:Property ;
  rdfs:label "has mandatory command"@en ;
  rdfs:comment "Links a function and one of its mandatory commands"@en ;
  rdfs:domain saref:Function ;
  rdfs:range saref:Command ;
  rdfs:subPropertyOf saref:hasCommand .

saref:observes a rdf:Property ;
  rdfs:label "observes"@en ;
  rdfs:comment "Links a device, function, command, or procedure execution, to the feature, property, or state, it observes."@en ;
  rdfs:range xsd:string ;
  rdfs:subPropertyOf saref:actsUpon .

saref:hasCommand a rdf:Property ;
  rdfs:label "has command"@en ;
  rdfs:comment "Links a function or function of interest and the command it supports."@en ;
  rdfs:range saref:Command .

saref:isFunctionOf a rdf:Property ;
  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 ;
  rdfs:range xsd:string .

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

saref:controls a rdf:Property ;
  rdfs:label "controls"@en ;
  rdfs:comment "Links a device, function, command, or procedure execution, to the feature, property, or state, it controls."@en ;
  rdfs:range xsd:string ;
  rdfs:subPropertyOf saref:actsUpon .

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

saref:StartState a rdfs:Class ;
  rdfs:label "Start state"@en ;
  rdfs:comment "The state of a device that is STARTED"@en ;
  rdfs:subClassOf saref:StartStopState .

saref:EnergyCommodity a rdfs:Class ;
  rdfs:label "Energy Commodity"@en ;
  rdfs:comment "The class of energy commodities"@en ;
  rdfs:subClassOf saref:Commodity .

saref:LevelControlFunction a rdfs:Class ;
  rdfs:label "Level control function"@en ;
  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:subClassOf saref:ActuatingFunction .

saref:Electricity a rdfs:Class ;
  rdfs:label "Electricity"@en ;
  rdfs:comment "A type of energy commodity"@en ;
  rdfs:subClassOf saref:Commodity .

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

saref:Coal a rdfs:Class ;
  rdfs:label "Coal"@en ;
  rdfs:comment "A type of commodity"@en ;
  rdfs:subClassOf saref:Commodity .

saref:Actuator a rdfs:Class ;
  rdfs:label "Actuator"@en ;
  rdfs:comment "A device designed to control one or more properties or states of one or more features of interest."@en ;
  rdfs:subClassOf saref:Device .

saref:consistsOf a rdf:Property ;
  rdfs:label "consists of"@en ;
  rdfs:comment "A relationship indicating a composite entity that consists of other entities (e.g., a temperature/humidity sensor that consists of a temperature sensor and a humidity sensor)"@en ;
  rdfs:range saref:FeatureOfInterest , saref:FeatureKind .

saref:hasModel a rdf:Property ;
  rdfs:label "has model"@en ;
  rdfs:comment "A relationship identifying the model of an entity (e.g., device). The value is expected to be a string or a string with language tag."@en ;
  rdfs:range <https://w3id.org/linkml/Any> .

saref:controlsProperty a rdf:Property ;
  rdfs:label "controls property"@en ;
  rdfs:comment "A relationship specifying the property that can be controlled by a certain device"@en ;
  rdfs:domain saref:Device ;
  rdfs:range saref:Property ;
  rdfs:subPropertyOf saref:controls .

saref:hasState a rdf:Property ;
  rdfs:label "has state"@en ;
  rdfs:comment "Links a feature kind or a feature of interest to one of its states."@en ;
  rdfs:range saref:State .

saref:hasFunction a rdf:Property ;
  rdfs:label "has function"@en ;
  rdfs:comment "Links a feature kind or a device to one of its functions."@en ;
  rdfs:range saref:Function .

saref:hasProfile a rdf:Property ;
  rdfs:label "has profile"@en ;
  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:actsUpon or its sub-properties."@en ;
  rdfs:range saref:Profile .

saref:measuresProperty a rdf:Property ;
  rdfs:label "measures property"@en ;
  rdfs:comment "A relationship specifying the property that can be measured by a certain device"@en ;
  rdfs:domain saref:Device ;
  rdfs:range saref:Property ;
  rdfs:subPropertyOf saref:observes .

saref:hasProperty a rdf:Property ;
  rdfs:label "has property"@en ;
  rdfs:comment "Links a feature kind or a feature of interest to one of its properties."@en ;
  rdfs:range saref:Property .

saref:isUsedFor a rdf:Property ;
  rdfs:label "is used for"@en ;
  rdfs:comment "Links a feature kind, feature of interest, or device, to the commodity it is used for"@en ;
  rdfs:range saref:Commodity .

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

saref:hasFeatureKind a rdf:Property ;
  rdfs:label "has feature kind"@en ;
  rdfs:comment "links a feature of interest to its kind, a feature kind"@en ;
  rdfs:domain saref:FeatureOfInterest ;
  rdfs:range saref:FeatureKind .

saref:madeExecution a rdf:Property ;
  rdfs:label "made execution"@en ;
  rdfs:comment "Links an entity (e.g., device) to the procedure execution it made."@en ;
  rdfs:domain saref:FeatureOfInterest ;
  rdfs:range saref:ProcedureExecution .

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

saref:hasDeviceKind a rdf:Property ;
  rdfs:label "has device kind"@en ;
  rdfs:comment "Links a device to its kind, a feature kind. Kinds of devices describe models of devices, with common properties having the same value, common states being the same, common functions, and common services."@en ;
  rdfs:domain saref:Device ;
  rdfs:range saref:FeatureKind ;
  rdfs:subPropertyOf saref:hasFeatureKind .

saref:hasManufacturer a rdf:Property ;
  rdfs:label "has manufacturer"@en ;
  rdfs:comment "A relationship identifying the manufacturer of an entity (e.g., device). The value is expected to be a string or a string with language tag."@en ;
  rdfs:range <https://w3id.org/linkml/Any> .

saref:makesMeasurement a rdf:Property ;
  rdfs:label "makes measurement"@en ;
  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 .

saref:hasMeasurement a rdf:Property ;
  rdfs:label "has measurement"@en ;
  rdfs:comment "A relationship between a feature of interest and a measurement about it"@en ;
  rdfs:domain saref:FeatureOfInterest ;
  rdfs:range saref:Measurement .

saref:offers a rdf:Property ;
  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 .

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

saref:hasPropertyValue a rdf:Property ;
  rdfs:label "has property value"@en ;
  rdfs:comment "Links a feature kind, a feature of interest, or a property of interest, to a property value."@en ;
  rdfs:range saref:PropertyValue .

saref:Function a rdfs: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 .

saref:ToggleCommand a rdfs:Class ;
  rdfs:label "Toggle command"@en ;
  rdfs:comment "A type of command"@en ;
  rdfs:subClassOf saref:Command .

saref:isCommandOf a rdf:Property ;
  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 xsd:string .

saref:hasOutput a rdf:Property ;
  rdfs:label "has output"@en ;
  rdfs:comment "Links a command or operation to its outputs."@en ;
  rdfs:range <https://w3id.org/linkml/Any> .

saref:hasInput a rdf:Property ;
  rdfs:label "has input"@en ;
  rdfs:comment "Links a command, operation, or procedure execution, to its inputs."@en ;
  rdfs:range <https://w3id.org/linkml/Any> .

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

saref:StateOfInterest a rdfs: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 .

saref:hasStateKind a rdf:Property ;
  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 .

saref:isStateOfInterestOf a rdf:Property ;
  rdfs:label "is state of interest of"@en ;
  rdfs:comment "Links a state of interest to the feature of interest it is a state of."@en ;
  rdfs:domain saref:StateOfInterest ;
  rdfs:range saref:FeatureOfInterest .

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

saref:FeatureKind a rdfs:Class ;
  rdfs:label "Feature kinds"@en ;
  rdfs:comment "Feature kinds allow to describe kinds of features of interest, with common properties having the same value, and common states being the same. An instance of saref:FeatureKind represents an archetype of real world entities, for example to populate product catalogs."@en .

saref:PropertyValue a rdfs:Class ;
  rdfs:label "Property Value"@en ;
  rdfs:comment "Describes the value for a property. The property value is linked to its value expressed as an RDF literal (DP saref:hasValue), optionally to the unit of measurement (OP saref:isMeasuredIn), and optionally to the properties or properties of interest it is a value of (OP saref:isValueOfProperty)."@en .

saref:isValueOfProperty a rdf:Property ;
  rdfs:label "is value of property"@en ;
  rdfs:comment "Links a property value to the property or property of interest it is a value of."@en ;
  rdfs:domain saref:PropertyValue ;
  rdfs:range xsd:string .

saref:isMeasuredIn a rdf:Property ;
  rdfs:label "is measured in"@en ;
  rdfs:comment "A relationship identifying the unit of measure used for a certain entity."@en ;
  rdfs:range saref:UnitOfMeasure .

saref:hasValue a rdf:Property ;
  rdfs:label "has value"@en ;
  rdfs:comment "Value of a property value expressed as an RDF literal. Note that, even if decimal values are expected, values could use other datatypes."@en ;
  rdfs:range <https://w3id.org/linkml/Any> .

saref:OnOffFunction a rdfs:Class ;
  rdfs:label "On off function"@en ;
  rdfs:comment "An actuating function that allows to switch on and off an actuator"@en ;
  rdfs:subClassOf saref:ActuatingFunction .

saref:SensingFunction a rdfs:Class ;
  rdfs:label "Sensing function"@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:subClassOf saref:Function .

saref:hasSensingRange a rdf:Property ;
  rdfs:label "has sensing range"@en ;
  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 .

saref:hasSensorType a rdf:Property ;
  rdfs:label "has sensor type"@en ;
  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 .

saref:HVAC a rdfs:Class ;
  rdfs:label "HVAC"@en ;
  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:subClassOf saref:Device .

saref:Command a rdfs: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 .

saref:OperationExecution a rdfs:Class ;
  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 ;
  rdfs:subClassOf saref:ProcedureExecution .

saref:hasResultTime a rdf:Property ;
  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 .

saref:isExecutionOf a rdf:Property ;
  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 ;
  rdfs:domain saref:ProcedureExecution ;
  rdfs:range saref:Operation , xsd:string .

saref:hasTimestamp a rdf:Property ;
  rdfs:label "has timestamp"@en ;
  rdfs:comment "Links a procedure execution or a profile to an instant."@en ;
  rdfs:range xsd:dateTime .

saref:hasResult a rdf:Property ;
  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 ;
  rdfs:range <https://w3id.org/linkml/Any> .

saref:madeBy a rdf:Property ;
  rdfs:label "made by"@en ;
  rdfs:comment "Links a procedure execution to the entity (e.g., device) that made it."@en ;
  rdfs:domain saref:ProcedureExecution ;
  rdfs:range saref:FeatureOfInterest , saref:Sensor , saref:Actuator .

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

saref:Device a rdfs:Class ;
  rdfs:label "Device"@en ;
  rdfs:comment "A tangible object designed to accomplish a particular task. In order to accomplish this task, the device performs one or more functions. An instance of saref:Device represents one specific real world entity."@en ;
  rdfs:subClassOf saref:FeatureOfInterest , <https://saref.etsi.org/saref4syst/System> .

saref:OpenCommand a rdfs:Class ;
  rdfs:label "Open command"@en ;
  rdfs:comment "A type of command"@en ;
  rdfs:subClassOf saref:Command .

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

saref:Water a rdfs:Class ;
  rdfs:label "Water"@en ;
  rdfs:comment "A type of commodity"@en ;
  rdfs:subClassOf saref:Commodity .

saref:Motion a rdfs:Class ;
  rdfs:label "Motion"@en ;
  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:subClassOf saref:Property .

saref:isMeasuredByDevice a rdf:Property ;
  rdfs:label "is measured by device"@en ;
  rdfs:comment "A relationship specifying the devices that can measure a certain property"@en ;
  rdfs:domain saref:Property ;
  rdfs:range saref:Device ;
  rdfs:subPropertyOf saref:isObservedBy .

saref:isControlledByDevice a rdf:Property ;
  rdfs:label "is controlled by device"@en ;
  rdfs:comment "A relationship specifying the devices that can control a certain property"@en ;
  rdfs:domain saref:Property ;
  rdfs:range saref:Device ;
  rdfs:subPropertyOf saref:isControlledBy .

saref:isPropertyOf a rdf:Property ;
  rdfs:label "is property of"@en ;
  rdfs:comment "Links a property to the feature kind or feature of interest it is a property of."@en ;
  rdfs:domain saref:Property ;
  rdfs:range xsd:string .

saref:relatesToMeasurement a rdf:Property ;
  rdfs:label "relates to measurement"@en ;
  rdfs:comment "A relationship between a property and the measurements it relates to"@en ;
  rdfs:domain saref:Property ;
  rdfs:range saref:Measurement .

saref:OnCommand a rdfs:Class ;
  rdfs:label "On command"@en ;
  rdfs:comment "A type of command"@en ;
  rdfs:subClassOf saref:Command .

saref:StartStopState a rdfs:Class ;
  rdfs:label "Start stop state"@en ;
  rdfs:comment "A type of state"@en ;
  rdfs:subClassOf saref:State .

saref:CommandOfInterest a rdfs: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 .

saref:isCommandOfInterestOf a rdf:Property ;
  rdfs:label "is command of interest of"@en ;
  rdfs:comment "Links a command of interest to the function of interest it is a command of."@en ;
  rdfs:domain saref:CommandOfInterest ;
  rdfs:range saref:FunctionOfInterest .

saref:hasCommandKind a rdf:Property ;
  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 .

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

saref:Appliance a rdfs:Class ;
  rdfs:label "Appliance"@en ;
  rdfs:comment "A device designed to accomplish a particular task for occupant use. It consumes, produces, or stores, some commodity."@en ;
  rdfs:subClassOf saref:Device .

saref:StartCommand a rdfs:Class ;
  rdfs:label "Start command"@en ;
  rdfs:comment "A type of command"@en ;
  rdfs:subClassOf saref:Command .

saref:Price a rdfs:Class ;
  rdfs:label "Price"@en ;
  rdfs:comment "A saref:Property crelated to some measurements that are characterized by a certain value that is measured using saref:Currency"@en ;
  rdfs:subClassOf saref:Property .

saref:PropertyOfInterest a rdfs:Class ;
  rdfs:label "Property of Interest"@en ;
  rdfs:comment "Identifiable qualities of features of interest that can be acted upon by devices, such as observed or controlled. An instance of saref:PropertyOfInterest is specific to a feature of interest. It is inherent to and cannot exist without that feature of interest."@en .

saref:isPropertyOfInterestOf a rdf:Property ;
  rdfs:label "is property of interest of"@en ;
  rdfs:comment "Links a property of interest to the feature of interest it is a property of."@en ;
  rdfs:domain saref:PropertyOfInterest ;
  rdfs:range saref:FeatureOfInterest .

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

saref:Humidity a rdfs:Class ;
  rdfs:label "Humidity"@en ;
  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:subClassOf saref:Property .

saref:OpenCloseFunction a rdfs:Class ;
  rdfs:label "Open close function"@en ;
  rdfs:comment "An actuating function that allows to open and close a device"@en ;
  rdfs:subClassOf saref:ActuatingFunction .

saref:Energy a rdfs:Class ;
  rdfs:label "Energy"@en ;
  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:subClassOf saref:Property .

saref:Observation a rdfs:Class ;
  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 saref:ProcedureExecution .

saref:DoorSwitch a rdfs:Class ;
  rdfs:label "Door switch"@en ;
  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:subClassOf saref:Switch .

saref:GetCommand a rdfs:Class ;
  rdfs:label "Get command"@en ;
  rdfs:comment "A type of command"@en ;
  rdfs:subClassOf saref:Command .

saref:Profile a rdfs: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 .

saref:isProfileOf a rdf:Property ;
  rdfs:label "is profile of"@en ;
  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:actsUpon or its sub-properties."@en ;
  rdfs:domain saref:Profile ;
  rdfs:range xsd:string .

saref:whenState a rdf:Property ;
  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 .

saref:whenPropertyValue a rdf:Property ;
  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 .

saref:profileHasPrice a rdf:Property ;
  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 .

saref:Service a rdfs: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 .

saref:represents a rdf:Property ;
  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:range xsd:string .

saref:hasOperation a rdf:Property ;
  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:isOfferedBy a rdf:Property ;
  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 .

saref:Operation a rdfs: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 .

saref:isOperationOf a rdf:Property ;
  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 .

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

saref:GetSensingDataCommand a rdfs:Class ;
  rdfs:label "Get sensing data command"@en ;
  rdfs:comment "A type of get command"@en ;
  rdfs:subClassOf saref:Command .

saref:SetAbsoluteLevelCommand a rdfs:Class ;
  rdfs:label "Set absolute level command"@en ;
  rdfs:comment "A type of set level command"@en ;
  rdfs:subClassOf saref:Command .

<http://www.w3.org/2006/time#TemporalPosition> a rdfs:Class .

saref:ActuatingFunction a rdfs:Class ;
  rdfs:label "Actuating function"@en ;
  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:subClassOf saref:Function .

<https://saref.etsi.org/saref4syst/System> a rdfs:Class .

saref:Gas a rdfs:Class ;
  rdfs:label "Gas"@en ;
  rdfs:comment "A type of energy commodity"@en ;
  rdfs:subClassOf saref:Commodity .

saref:Currency a rdfs:Class ;
  rdfs:label "Currency"@en ;
  rdfs:comment "The class of units of measure for price"@en ;
  rdfs:subClassOf saref:UnitOfMeasure .

saref:Meter a rdfs:Class ;
  rdfs:label "Meter"@en ;
  rdfs:comment "A device designed to observe and measure one or more properties of one or more features of interest."@en ;
  rdfs:subClassOf saref:Device .

saref:Sensor a rdfs:Class ;
  rdfs:label "Sensor"@en ;
  rdfs:comment "A device designed to observe one or more properties or states of one or more features of interest."@en ;
  rdfs:subClassOf saref:Device .

<http://www.w3.org/2006/time#TemporalEntity> a rdfs:Class .

saref:Commodity a rdfs:Class ;
  rdfs:label "Commodity"@en ;
  rdfs:comment "A marketable item which may be supplied without qualitative differentiation."@en .

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

saref:FunctionOfInterest a rdfs: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 .

saref:hasFunctionKind a rdf:Property ;
  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 .

saref:isFunctionOfInterestOf a rdf:Property ;
  rdfs:label "is function of interest of"@en ;
  rdfs:comment "Links a function of interest to the device it is a function of."@en ;
  rdfs:domain saref:FunctionOfInterest ;
  rdfs:range saref:Device .

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

saref:GetMeterDataCommand a rdfs:Class ;
  rdfs:label "Get meter data command"@en ;
  rdfs:comment "A type of get command"@en ;
  rdfs:subClassOf saref:GetCommand .

saref:ProcedureExecution a rdfs:Class ;
  rdfs:label "Procedure Execution"@en ;
  rdfs:comment "Represents the act of carrying out a procedure."@en .

saref:GetCurrentMeterValueCommand a rdfs:Class ;
  rdfs:label "Get current meter value command"@en ;
  rdfs:comment "A type of get command"@en ;
  rdfs:subClassOf saref:GetCommand .

saref:StepDownCommand a rdfs:Class ;
  rdfs:label "Step down command"@en ;
  rdfs:comment "A type of command"@en ;
  rdfs:subClassOf saref:Command .

saref:MeteringFunction a rdfs:Class ;
  rdfs:label "Metering function"@en ;
  rdfs:comment "A function that allows to get data from a meter, such as current meter reading or instantaneous demand"@en ;
  rdfs:subClassOf saref:Function .

saref:hasMeterReading a rdf:Property ;
  rdfs:label "has meter reading"@en ;
  rdfs:comment "A relationship between a metering function and the measurement of the reading"@en ;
  rdfs:domain saref:MeteringFunction ;
  rdfs:range saref:Measurement .

saref:hasMeterReadingType a rdf:Property ;
  rdfs:label "has meter reading type"@en ;
  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 .

saref:SetLevelCommand a rdfs:Class ;
  rdfs:label "Set level command"@en ;
  rdfs:comment "A type of command"@en ;
  rdfs:subClassOf saref:Command .

saref:CommandExecution a rdfs:Class ;
  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 ;
  rdfs:subClassOf saref:ProcedureExecution .

saref:Smoke a rdfs:Class ;
  rdfs:label "Smoke"@en ;
  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:subClassOf saref:Property .

saref:NotifyCommand a rdfs:Class ;
  rdfs:label "Notify command"@en ;
  rdfs:comment "A type of command"@en ;
  rdfs:subClassOf saref:Command .

saref:TemperatureSensor a rdfs:Class ;
  rdfs:label "Temperature sensor"@en ;
  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:subClassOf saref:Sensor .

saref:Light a rdfs:Class ;
  rdfs:label "Light"@en ;
  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:subClassOf saref:Property .

saref:Power a rdfs:Class ;
  rdfs:label "Power"@en ;
  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:subClassOf saref:Property .

saref:EventFunction a rdfs:Class ;
  rdfs:label "Event function"@en ;
  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:subClassOf saref:Function .

saref:hasThresholdMeasurement a rdf:Property ;
  rdfs:label "has threshold measurement"@en ;
  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 .

saref:SmokeSensor a rdfs:Class ;
  rdfs:label "Smoke sensor"@en ;
  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:subClassOf saref:Sensor .

saref:CloseCommand a rdfs:Class ;
  rdfs:label "Close command"@en ;
  rdfs:comment "A type of command"@en ;
  rdfs:subClassOf saref:Command .

saref:StepUpCommand a rdfs:Class ;
  rdfs:label "Step up command"@en ;
  rdfs:comment "A type of command"@en ;
  rdfs:subClassOf saref:Command .

saref:Measurement a rdfs:Class ;
  rdfs:label "Measurement"@en ;
  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 .

saref:relatesToProperty a rdf:Property ;
  rdfs:label "relates to property"@en ;
  rdfs:comment "A relationship between a measurement and the property it relates to"@en ;
  rdfs:domain saref:Measurement ;
  rdfs:range saref:Property .

saref:isMeasurementOf a rdf:Property ;
  rdfs:label "isMeasurementOf"@en ;
  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 .

saref:measurementMadeBy a rdf:Property ;
  rdfs:label "measurement made by"@en ;
  rdfs:comment "A relation between a measurement and the device that made it."@en ;
  rdfs:domain saref:Measurement ;
  rdfs:range saref:Device .

saref:PauseCommand a rdfs:Class ;
  rdfs:label "Pause command"@en ;
  rdfs:comment "A type of command"@en ;
  rdfs:subClassOf saref:Command .

saref:Actuation a rdfs:Class ;
  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 saref:ProcedureExecution .

saref:State a rdfs:Class ;
  rdfs:label "State"@en ;
  rdfs:comment "Identifiable conditions that features of interest are or may be in, and that can be acted upon by devices, such as observed and controlled. A state can apply to different features of interest."@en .

saref:Temperature a rdfs:Class ;
  rdfs:label "Temperature"@en ;
  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:subClassOf saref:Property .

saref:SetRelativeLevelCommand a rdfs:Class ;
  rdfs:label "Set relative level command"@en ;
  rdfs:comment "A type of set level command"@en ;
  rdfs:subClassOf saref:SetLevelCommand .

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

saref:Occupancy a rdfs:Class ;
  rdfs:label "Occupancy"@en ;
  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:subClassOf saref:Property .

saref:SwitchOnService a rdfs:Class ;
  rdfs:label "Switch on service"@en ;
  rdfs:comment "A type of service that represents an on/off function to the network"@en ;
  rdfs:subClassOf saref:Service .

saref:NaturalResourceCommodity a rdfs:Class ;
  rdfs:label "Natural Resource Commodity"@en ;
  rdfs:comment "The class of natural resource commodities"@en ;
  rdfs:subClassOf saref:Commodity .

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

saref:LightSwitch a rdfs:Class ;
  rdfs:label "Light switch"@en ;
  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:subClassOf saref:Switch .

saref:Pressure a rdfs:Class ;
  rdfs:label "Pressure"@en ;
  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:subClassOf saref:Property .

saref:UnitOfMeasure a rdfs:Class ;
  rdfs:label "Unit of measure"@en ;
  rdfs:comment "The unit of measure is a standard for measurement of a quantity, such as a Property."@en .

<https://w3id.org/linkml/Any> a rdfs:Class ;
  rdfs:comment "An unconstrained type or object"@en .

saref:Property a rdfs:Class ;
  rdfs:label "Property"@en ;
  rdfs:comment "Identifiable qualities of features of interest that can be acted upon by devices, such as observed or controlled. A property can apply to different features of interest."@en .

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

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

saref:GetMeterHistoryCommand a rdfs:Class ;
  rdfs:label "Get meter history command"@en ;
  rdfs:comment "A type of get command"@en ;
  rdfs:subClassOf saref:GetCommand .

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

saref:OffCommand a rdfs:Class ;
  rdfs:label "Off command"@en ;
  rdfs:comment "A type of command"@en ;
  rdfs:subClassOf saref:Command .

saref:Task a rdfs:Class ;
  rdfs:label "Task"@en ;
  rdfs:comment "The goal for which a device is designed, from a user perspective."@en .

saref:isAccomplishedBy a rdf:Property ;
  rdfs:label "is accomplished by"@en ;
  rdfs:comment "A relationship identifying an entity (e.g., a device) that can accomplish a task."@en ;
  rdfs:domain saref:Task ;
  rdfs:range <https://w3id.org/linkml/Any> .

saref:StopCommand a rdfs:Class ;
  rdfs:label "Stop command"@en ;
  rdfs:comment "A type of command"@en ;
  rdfs:subClassOf saref:Command .

saref:FeatureOfInterest a rdfs:Class ;
  rdfs:label "Feature of interest"@en ;
  rdfs:comment "A feature of interest represents any real world entity from which a property or a state may be acted upon, such as observed and controlled. An instance of saref:FeatureOfInterest represents one specific real world entity."@en .

saref:accomplishes a rdf:Property ;
  rdfs:label "accomplishes"@en ;
  rdfs:comment "Links a certain entity (e.g., a device) to the task it accomplishes."@en ;
  rdfs:range saref:Task .

saref:consumes a rdf:Property ;
  rdfs:label "consumes"@en ;
  rdfs:comment "Links a feature kind, feature of interest, or device, to the commodity it consumes"@en ;
  rdfs:range xsd:string ;
  rdfs:subPropertyOf saref:isUsedFor .

saref:hasApplicableTime a rdf:Property ;
  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 xsd:string .

saref:hasDescription a rdf:Property ;
  rdfs:label "has description"@en ;
  rdfs:comment "A relationship providing a description of an entity (e.g., device). The value is expected to be a string or a string with language tag."@en ;
  rdfs:range <https://w3id.org/linkml/Any> .

saref:hasIdentifier a rdf:Property ;
  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> ;
  rdfs:range <https://w3id.org/linkml/Any> .

saref:hasPhenomenonTime a rdf:Property ;
  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 <http://www.w3.org/2006/time#TemporalEntity> .

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

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

saref:hasTypicalConsumption a rdf:Property ;
  rdfs:label "has typical consumption"@en ;
  rdfs:comment "A relationship identifying the typical (energy or power) consumption of a device"@en ;
  rdfs:range <https://w3id.org/linkml/Any> .

saref:isAbout a rdf:Property ;
  rdfs:label "isAbout"@en ;
  rdfs:comment "A relationship identifying what an entity, such as a profile, is about"@en ;
  rdfs:range <https://w3id.org/linkml/Any> .

saref:isConsumedBy a rdf:Property ;
  rdfs:label "is consumed by"@en ;
  rdfs:comment "Links a commodity to the feature kind, feature of interest, or device, that consumes it"@en ;
  rdfs:range <https://w3id.org/linkml/Any> .

saref:isControlledBy a rdf:Property ;
  rdfs:label "is controlled by"@en ;
  rdfs:comment "Links a feature, property, or state, to the device, function, command, or procedure execution, that controls it."@en ;
  rdfs:range xsd:string ;
  rdfs:subPropertyOf saref:isActedUponBy .

saref:isObservedBy a rdf:Property ;
  rdfs:label "is observed by"@en ;
  rdfs:comment "Links a feature, property, or state, to the device, function, command, or procedure execution, that observes it."@en ;
  rdfs:range xsd:string ;
  rdfs:subPropertyOf saref:isActedUponBy .

saref:isProducedBy a rdf:Property ;
  rdfs:label "is produced by"@en ;
  rdfs:comment "Links a commodity to the feature kind, feature of interest, or device, that produces it"@en ;
  rdfs:range <https://w3id.org/linkml/Any> .

saref:isStoredBy a rdf:Property ;
  rdfs:label "is stored by"@en ;
  rdfs:comment "Links a commodity to the feature kind, feature of interest, or device, that stores it"@en ;
  rdfs:range <https://w3id.org/linkml/Any> .

saref:produces a rdf:Property ;
  rdfs:label "produces"@en ;
  rdfs:comment "Links a feature kind, feature of interest, or device, to the commodity it produces"@en ;
  rdfs:range xsd:string ;
  rdfs:subPropertyOf saref:isUsedFor .

saref:stores a rdf:Property ;
  rdfs:label "stores"@en ;
  rdfs:comment "Links a feature kind, feature of interest, or device, to the commodity it stores"@en ;
  rdfs:range xsd:string ;
  rdfs:subPropertyOf saref:isUsedFor .
