@prefix :      <https://w3id.org/ofo#> .
@prefix schema: <https://schema.org/> .
@prefix owl:   <http://www.w3.org/2002/07/owl#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix terms: <http://purl.org/dc/terms/> .
@prefix www:   <https://www.schema.org/> .
@prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .
@prefix skos:  <http://www.w3.org/2004/02/skos/core#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix vann:  <http://purl.org/vocab/vann/> .
@prefix foaf:  <http://xmlns.com/foaf/0.1/> .

:isExternalDatabaseOf
        a                  owl:ObjectProperty ;
        rdfs:comment       "Linking a database with the wearable which results are stored in this database."@en ;
        rdfs:domain        :Database ;
        rdfs:label         "is external database of"@en ;
        www:rangeIncludes  :Wearable .

:isMonitoredBy  a          owl:ObjectProperty ;
        rdfs:comment       "Relationship between feedback and the executor (e.g. a wearable) that monitored this feedback."@en ;
        rdfs:domain        :Feedback ;
        rdfs:label         "is monitored by"@en ;
        owl:inverseOf      :monitorsFeedback ;
        www:rangeIncludes  :Wearable .

:hasEvaluatedProperty
        a              owl:ObjectProperty ;
        rdfs:comment   "Relationship between feedback and the property it evaluates."@en ;
        rdfs:domain    :Feedback ;
        rdfs:label     "has evaluated property"@en ;
        rdfs:range     :Property ;
        owl:inverseOf  :hasFeedback .

<https://orcid.org/0000-0002-8809-3277>
        a             owl:NamedIndividual ;
        rdfs:comment  "Alex Donkers" ;
        rdfs:label    "Alex Donkers" ;
        foaf:name     "Alex Donkers" ;
        foaf:weblog   "https://linktr.ee/AlexDonkers" .

:isFeedbackOf  a                owl:ObjectProperty ;
        rdfs:comment            "Relationship between feedback and the person that gave this feedback."@en ;
        rdfs:domain             :Feedback ;
        rdfs:label              "is feedback of"@en ;
        rdfs:range              :Person ;
        owl:propertyChainAxiom  ( :isMonitoredBy :isWornBy ) .

:isLocationOf  a           owl:ObjectProperty ;
        rdfs:comment       "Relationship between a location and an entity, such as a person or a wearable."@en ;
        rdfs:domain        :Location ;
        rdfs:label         "is location of"@en ;
        www:rangeIncludes  :Wearable , :Person .

:hasSimpleProperty  a       owl:DatatypeProperty ;
        rdfs:comment        "Linking a feature of interest with a simple property value described as a literal."@en ;
        rdfs:domain         :FeatureOfInterest ;
        rdfs:label          "has simple property"@en ;
        rdfs:subPropertyOf  :hasSimpleResult .

:hasSimplePropertyState
        a                   owl:DatatypeProperty ;
        rdfs:comment        "Linking a property with a simple property state value described as a literal."@en ;
        rdfs:domain         :Property ;
        rdfs:label          "has simple property state"@en ;
        rdfs:subPropertyOf  :hasSimpleResult .

:Wearable  a          owl:Class ;
        rdfs:comment  "A smart electronic device that is worn close to or on the surface of a person’s skin. It can implement procedures to perform observations and actuations."@en ;
        rdfs:label    "Wearable"@en .

:Database  a          owl:Class ;
        rdfs:comment  "A collection of data.\n\nThe database class is used to describe an external database, storing results of executions, such as a time-series database."@en ;
        rdfs:label    "Database"@en .

:isFeedbackResultOf  a      owl:ObjectProperty ;
        rdfs:comment        "Linking a result with feedback."@en ;
        rdfs:domain         :Result ;
        rdfs:label          "is feedback result of"@en ;
        rdfs:range          :Feedback ;
        rdfs:subPropertyOf  :isResultOf .

:Property  a             owl:Class ;
        rdfs:comment     "A measurable and intrinsic characteristic of a feature of interest."@en ;
        rdfs:label       "Property"@en ;
        rdfs:subClassOf  [ a                            owl:Restriction ;
                           owl:minQualifiedCardinality  "1"^^xsd:nonNegativeInteger ;
                           owl:onClass                  :FeatureOfInterest ;
                           owl:onProperty               :isPropertyOf
                         ] .

:hasSimpleFeedbackState
        a                   owl:DatatypeProperty ;
        rdfs:comment        "Linking feedback with a simple result value described as a literal."@en ;
        rdfs:domain         :Feedback ;
        rdfs:label          "has simple feedback state"@en ;
        rdfs:subPropertyOf  :hasSimpleResult .

vann:preferredNamespaceUri
        a       owl:AnnotationProperty .

:isPartOfPropertySet  a  owl:ObjectProperty ;
        rdfs:comment  "Relationship between a property and the property set it is part of."@en ;
        rdfs:domain   :Property ;
        rdfs:label    "is part of property set"@en ;
        rdfs:range    :PropertySet .

:isExecutedBy  a           owl:ObjectProperty ;
        rdfs:comment       "Relationship between a property and the wearable which acts on the property."@en ;
        rdfs:domain        :Property ;
        rdfs:label         "is executed by"@en ;
        www:rangeIncludes  :Wearable .

:hasDataPoint  a       owl:ObjectProperty ;
        rdfs:comment   "Relationship between a database and its data points."@en ;
        rdfs:domain    :Database ;
        rdfs:label     "has data point"@en ;
        rdfs:range     :DataPoint ;
        owl:inverseOf  :isDataPointOf .

:Smartwatch  a           owl:Class ;
        rdfs:comment     "A wearable computer in the form of a watch. It can implement procedures to perform observations and actuations."@en ;
        rdfs:label       "Smartwatch"@en ;
        rdfs:subClassOf  :Wearable .

:Location  a          owl:Class ;
        rdfs:comment  "The area or space something is in.\n\nThe ofo:Location class could be used to describe both geographical locations (such as points) and topological locations (such as rooms)."@en ;
        rdfs:label    "Location"@en .

:monitorsFeedback  a        owl:ObjectProperty ;
        rdfs:comment        "Relationship between an executor (e.g. a wearable) and the feedback it monitors."@en ;
        rdfs:label          "monitors feedback"@en ;
        rdfs:range          :Feedback ;
        www:domainIncludes  :Wearable .

terms:creator  a  owl:AnnotationProperty .

terms:title  a  owl:AnnotationProperty .

:Feedback  a          owl:Class ;
        rdfs:comment  "An act of producing a statement of opinion on the state of a property."@en ;
        rdfs:label    "Feedback"@en .

:hasID  a                   owl:FunctionalProperty , owl:DatatypeProperty ;
        rdfs:comment        "The ID of a data point in an external database."@en ;
        rdfs:domain         :DataPoint ;
        rdfs:label          "has ID"@en ;
        rdfs:subPropertyOf  :hasValue .

:hasLocation  a                 owl:ObjectProperty ;
        rdfs:comment            "Relationship between an entity, such as a person or a wearable, and a location."@en ;
        rdfs:label              "has location"@en ;
        rdfs:range              :Location ;
        owl:inverseOf           :isLocationOf ;
        owl:propertyChainAxiom  ( :wears :hasLocation ) ;
        owl:propertyChainAxiom  ( :isWornBy :hasLocation ) ;
        www:domainIncludes      :Wearable , :Person .

:isWornBy  a           owl:ObjectProperty ;
        rdfs:comment   "Describing the relation between a wearable and the person wearing this wearable."@en ;
        rdfs:domain    :Wearable ;
        rdfs:label     "is worn by"@en ;
        rdfs:range     :Person ;
        owl:inverseOf  :wears .

:FeatureOfInterest  a    owl:Class ;
        rdfs:comment     "An abstraction of a real-world phenomenon which could be described in terms of its properties."@en ;
        rdfs:label       "Feature of interest"@en ;
        rdfs:subClassOf  [ a                            owl:Restriction ;
                           owl:minQualifiedCardinality  "1"^^xsd:nonNegativeInteger ;
                           owl:onClass                  :Property ;
                           owl:onProperty               :hasProperty
                         ] ;
        skos:example     "An object, part, zone, event etc.\nIn the context of the OFO ontology, an ofo:Person will usually also be an ofo:FeatureOfInterest."@en .

:hasResult  a          owl:ObjectProperty ;
        rdfs:comment   "A superproperty of multiple object properties with an ofo:Result as rdfs:Range. This superproperty can be used to simultaneously query multiple ways of describing property values and increases the freedom of the data modeler."@en ;
        rdfs:label     "has result"@en ;
        rdfs:range     :Result ;
        owl:inverseOf  :isResultOf .

terms:contributor  a  owl:AnnotationProperty .

schema:name  a  owl:AnnotationProperty .

:hasSimpleResult  a   owl:DatatypeProperty ;
        rdfs:comment  "A superproperty of multiple datatype properties that describe simple result values. This superproperty can be used to simultaneously query multiple ways of describing simple property values and increases the freedom of the data modeler."@en ;
        rdfs:label    "has simple result"@en .

:hasFeedback  a       owl:ObjectProperty ;
        rdfs:comment  "Relationship between a property and feedback evaluating this property."@en ;
        rdfs:domain   :Property ;
        rdfs:label    "has feedback"@en ;
        rdfs:range    :Feedback .

www:domainIncludes  a  owl:AnnotationProperty .

:hasProperty  a        owl:InverseFunctionalProperty , owl:ObjectProperty ;
        rdfs:comment   "Linking a feature of interest with its property. The property is intrinsic to this feature of interest, and cannot exist without this feature of interest."@en ;
        rdfs:domain    :FeatureOfInterest ;
        rdfs:label     "has property"@en ;
        rdfs:range     :Property ;
        owl:inverseOf  :isPropertyOf .

:containsProperty  a   owl:ObjectProperty ;
        rdfs:comment   "Relationship between a property set and a property which is part of this set."@en ;
        rdfs:domain    :PropertySet ;
        rdfs:label     "contains property"@en ;
        rdfs:range     :Property ;
        owl:inverseOf  :isPartOfPropertySet .

:isDataPointOf  a     owl:ObjectProperty ;
        rdfs:comment  "Linking a data point with the database it is part of."@en ;
        rdfs:domain   :DataPoint ;
        rdfs:label    "is data point of"@en ;
        rdfs:range    :Database .

:executesOn  a              owl:ObjectProperty ;
        rdfs:comment        "Relationship between a wearable and the property it executes on."@en ;
        rdfs:label          "executes on"@en ;
        rdfs:range          :Property ;
        owl:inverseOf       :isExecutedBy ;
        www:domainIncludes  :Wearable .

:hasComplexProperty  a      owl:ObjectProperty ;
        rdfs:comment        "Direct relationship between a feature of interest and a result."@en ;
        rdfs:domain         :FeatureOfInterest ;
        rdfs:label          "has complex property"@en ;
        rdfs:range          :Result ;
        rdfs:subPropertyOf  :hasResult ;
        owl:inverseOf       :isComplexPropertyOf .

foaf:name  a    owl:AnnotationProperty .

skos:example  a  owl:AnnotationProperty .

:isSubPropertyOf  a   owl:ObjectProperty ;
        rdfs:comment  "Relation between a sub-property and its parent property."@en ;
        rdfs:domain   :Property ;
        rdfs:label    "is sub-property of"@en ;
        rdfs:range    :Property ;
        skos:example  "The object property describes a typical whole-part relationship between a property and its sub-properties. It is used in cases where properties are so complex that it is desirable to decompose them into separate properties. The separate properties might also be individually linked to their own results."@en .

:Person  a            owl:Class ;
        rdfs:comment  "A member of the human race."@en ;
        rdfs:label    "Person"@en .

:isFeatureOfInterestOf
        a             owl:ObjectProperty ;
        rdfs:comment  "Linking a feature of interest with feedback that evaluates a property of this feature of interest."@en ;
        rdfs:domain   :FeatureOfInterest ;
        rdfs:label    "is feature of interest of"@en ;
        rdfs:range    :Feedback .

:isPropertyStateOf  a       owl:ObjectProperty ;
        rdfs:comment        "Linking a result with a property."@en ;
        rdfs:domain         :Result ;
        rdfs:label          "is property state of"@en ;
        rdfs:range          :Property ;
        rdfs:subPropertyOf  :isResultOf .

www:rangeIncludes  a  owl:AnnotationProperty .

:hasValue  a                owl:FunctionalProperty , owl:DatatypeProperty ;
        rdfs:comment        "The simple value of a result."@en ;
        rdfs:domain         :Result ;
        rdfs:label          "has value"@en ;
        rdfs:subPropertyOf  :hasSimpleResult .

:isComplexPropertyOf  a     owl:ObjectProperty ;
        rdfs:comment        "Linking a result with a feature of interest."@en ;
        rdfs:domain         :Result ;
        rdfs:label          "is complex property of"@en ;
        rdfs:range          :FeatureOfInterest ;
        rdfs:subPropertyOf  :isResultOf .

vann:preferredNamespacePrefix
        a       owl:AnnotationProperty .

foaf:weblog  a  owl:AnnotationProperty .

:hasPropertyState  a        owl:ObjectProperty ;
        rdfs:comment        "Linking a property with a result."@en ;
        rdfs:domain         :Property ;
        rdfs:label          "has property state"@en ;
        rdfs:range          :Result ;
        rdfs:subPropertyOf  :hasResult ;
        owl:inverseOf       :isPropertyStateOf .

:hasSubProperty  a     owl:ObjectProperty ;
        rdfs:comment   "Describing a whole-part relationship between a property and its sub-property."@en ;
        rdfs:domain    :Property ;
        rdfs:label     "has sub-property"@en ;
        rdfs:range     :Property ;
        owl:inverseOf  :isSubPropertyOf .

:hasFeatureOfInterest
        a                       owl:ObjectProperty ;
        rdfs:comment            "Linking feedback with its feature of interest."@en ;
        rdfs:domain             :Feedback ;
        rdfs:label              "has feature of interest"@en ;
        rdfs:range              :FeatureOfInterest ;
        owl:inverseOf           :isFeatureOfInterestOf ;
        owl:propertyChainAxiom  ( :hasEvaluatedProperty :isPropertyOf ) .

terms:description  a  owl:AnnotationProperty .

:givesFeedback  a               owl:ObjectProperty ;
        rdfs:comment            "Relationship between a person and the feedback given by this person."@en ;
        rdfs:domain             :Person ;
        rdfs:label              "gives feedback"@en ;
        rdfs:range              :Feedback ;
        owl:inverseOf           :isFeedbackOf ;
        owl:propertyChainAxiom  ( :wears :monitorsFeedback ) .

:DataPoint  a            owl:Class ;
        rdfs:comment     "A data element in a database representing the state of a property."@en ;
        rdfs:label       "Data point"@en ;
        rdfs:subClassOf  :Result ;
        skos:example     "The data point can be used in various types of databases. It corresponds to single data records in time-series databases, or rows in SQL database tables. It is also a common concept in BMS servers, representing for example a sensor reading, output value of an actuator or any other scalar value."@en .

:wears  a             owl:ObjectProperty ;
        rdfs:comment  "Relationship between a wearable and the person that wears this wearable."@en ;
        rdfs:domain   :Person ;
        rdfs:label    "wears"@en ;
        rdfs:range    :Wearable .

:PropertySet  a       owl:Class ;
        rdfs:comment  "A collection of properties. The collection could also be a singleton or a null set."@en ;
        rdfs:label    "Property set"@en .

:isResultOf  a        owl:ObjectProperty ;
        rdfs:comment  "A superproperty of multiple object properties with an ofo:Result as rdfs:Domain. This superproperty can be used to simultaneously query multiple ways of describing property values and increases the freedom of the data modeler."@en ;
        rdfs:domain   :Result ;
        rdfs:label    "is result of"@en .

:hasFeedbackResult  a       owl:ObjectProperty ;
        rdfs:comment        "Linking feedback to its result."@en ;
        rdfs:domain         :Feedback ;
        rdfs:label          "has feedback result"@en ;
        rdfs:range          :Result ;
        rdfs:subPropertyOf  :hasResult ;
        owl:inverseOf       :isFeedbackResultOf .

:isPropertyOf  a      owl:FunctionalProperty , owl:ObjectProperty ;
        rdfs:comment  "Linking a property with its feature of interest. The property is intrinsic to this feature of interest, and cannot exist without a feature of interest."@en ;
        rdfs:domain   :Property ;
        rdfs:label    "is property of"@en ;
        rdfs:range    :FeatureOfInterest .

:Result  a            owl:Class ;
        rdfs:comment  "The outcome of an execution."@en ;
        rdfs:label    "Result"@en ;
        skos:example  "The result may hold, for example, a value, a unit, a result time and other provenance data."@en .

:hasExternalDatabase  a    owl:ObjectProperty ;
        rdfs:comment       "Linking a wearable with the database its results are stored in."@en ;
        rdfs:label         "has external database"@en ;
        rdfs:range         :Database ;
        owl:inverseOf      :isExternalDatabaseOf ;
        www:rangeIncludes  :Wearable .

:       a                              owl:Ontology ;
        rdfs:label                     "Occupant Feedback Ontology"@en ;
        terms:contributor              "Dujuan Yang" , "Bauke de Vries" ;
        terms:creator                  <https://orcid.org/0000-0002-8809-3277> ;
        terms:description              "The aim of the Occupant Feedback Ontology is to semantically describe passive and active occupant feedback and to enable integration of this feedback with linked building data."@en ;
        terms:title                    "Occupant Feedback Ontology"@en ;
        vann:preferredNamespacePrefix  "ofo" ;
        vann:preferredNamespaceUri     "https://w3id.org/ofo#" ;
        owl:versionInfo                1.0 .
