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: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 , <https://w3id.org/linkml/Any> , saref:FeatureKind .

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

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

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:consumes, saref:produces, or saref:stores, and optionally to some property or state using OP saref:targets or its sub-properties."@en ;
  rdfs:range saref:Profile .

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 saref:Commodity .

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: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: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 saref:Commodity .

saref:isTargetOf a rdf:Property ;
  rdfs:label "is target of"@en ;
  rdfs:comment "Links a feature, property, or state, to the device, function, command, or procedure execution, that targets it."@en ;
  rdfs:range xsd:string .

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: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:targets .

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:targets a rdf:Property ;
  rdfs:label "targets"@en ;
  rdfs:comment "Links a device, function, command, or procedure execution, to the feature, property, or state, it targets."@en ;
  rdfs:range xsd:string .

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 saref:Commodity .

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: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: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 target (OP saref:targets and its sub-properties) features, properties, or states. An instance of saref:Function can apply to different devices."@en .

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

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

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:targets .

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: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 target of 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: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: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:Command a rdfs:Class ;
  rdfs:label "Command"@en ;
  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 .

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:PropertyOfInterest a rdfs:Class ;
  rdfs:label "Property of Interest"@en ;
  rdfs:comment "Identifiable qualities of features of interest that can be target of 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: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: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 xsd:string , saref:Operation .

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:Sensor , saref:FeatureOfInterest , saref:Actuator .

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

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

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:StateValue a rdfs:Class ;
  rdfs:label "State Value"@en ;
  rdfs:comment "Describes the value for a state. The state value is optionally linked the states or states of interest it is a value of (OP saref:isValueOfState)."@en .

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

saref:PropertyValue a rdfs:Class ;
  rdfs:label "Property Value"@en ;
  rdfs:comment "Describes the value for a property. The property value is optionally 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: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: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: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 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 .

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: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: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:consumes, saref:produces, or saref:stores, and optionally to some property or state using OP saref:targets 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:DeviceKind a rdfs:Class ;
  rdfs:label "Device kinds"@en ;
  rdfs:comment "Device kinds allow to describe kinds of devices, with common properties and common states having the same value, targeting the same properties and states, common functions, and common services. Devices kinds may be used to describe models of devices in online catalogues."@en ;
  rdfs:subClassOf saref:FeatureKind .

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

saref:Meter a rdfs:Class ;
  rdfs:label "Meter"@en ;
  rdfs:comment "A device designed to observe and additionally do some computation and/or display 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 and measure 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: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:domain saref:Commodity ;
  rdfs:range xsd:string .

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:domain saref:Commodity ;
  rdfs:range xsd:string .

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:domain saref:Commodity ;
  rdfs:range xsd:string .

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 target (OP saref:targets 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:ProcedureExecution a rdfs:Class ;
  rdfs:label "Procedure Execution"@en ;
  rdfs:comment "Represents the act of carrying out a procedure."@en .

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 target of devices, such as observed and controlled. A state can apply to different features of interest."@en .

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 .

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

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:Property a rdfs:Class ;
  rdfs:label "Property"@en ;
  rdfs:comment "Identifiable qualities of features of interest that can be target of devices, such as observed or controlled. A property can apply to different features of interest."@en .

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: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 targeted, 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: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: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:hasRevisionNumber a rdf:Property ;
  rdfs:label "has revision number"@en ;
  rdfs:comment "Links some entity (e.g., a device) to its revision number."@en ;
  rdfs:seeAlso <https://labs.etsi.org/rep/saref/saref-core/-/issues/53> ;
  rdfs:range xsd:string .

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

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:isTargetOf .

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:isTargetOf .
