@prefix : <https://w3id.org/ibp/CTRLont#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@base <https://w3id.org/ibp/CTRLont> .

<https://w3id.org/ibp/CTRLont> rdf:type owl:Ontology ;
                                owl:versionIRI <https://w3id.org/ibp/CTRLont-0.3.0> ;
                                <http://purl.org/dc/terms/creator> <https://orcid.org/0000-0002-2033-859X> ,
                                                                   <https://www.researchgate.net/profile/Georg_Schneider3> ,
                                                                   "Georg Ferdinand Schneider" ;
                                <http://purl.org/dc/terms/description> """The ontology and its use are described in [1]. The ontology is implemented using the free protege tool (protege.stanford.edu) [2].

[1] Schneider, G.F., Pauwels, P. and Steiger, S. (2017): \"Ontology-based Modelling of Control Logic in Building Automation Systems\" in IEEE Transactions on Industrial Informatics, vol. 13, no. 6, pp. 3350-3360, DOI: 10.1109/TII.2017.2743221.

[2] M. A. Musen (2015): The protege project: a look back and a look forward. AI matters, 1(4):4-12, doi: 10.1145/2757001.2757003."""@en ;
                                <http://purl.org/dc/terms/identifier> "https://w3id.org/ibp/CTRLont#" ;
                                <http://purl.org/dc/terms/issued> "2016-11-01"^^xsd:date ;
                                <http://purl.org/dc/terms/license> <http://creativecommons.org/licenses/by-sa/4.0> ;
                                <http://purl.org/dc/terms/modified> "2019-04-29"^^xsd:date ;
                                <http://purl.org/dc/terms/publisher> <https://www.ibp.fraunhofer.de> ;
                                <http://purl.org/dc/terms/rights> """Copyright (c) 2019 Georg Ferdinand Schneider/ Fraunhofer Institute for Building Physics IBP. This ontology is distributed under a Creative Commons Attribution 
Share Alike License (CC BY-SA 4.0) http://creativecommons.org/licenses/by-sa/4.0"""@en ;
                                <http://purl.org/dc/terms/title> "CTRLont - An ontology to formally specify the control domain."@en ;
                                <http://purl.org/vocab/vann/preferredNamespacePrefix> "ctrl" ;
                                <http://purl.org/vocab/vann/preferredNamespaceUri> : ;
                                rdfs:comment "CTRLont specifies concepts and relationships of control actors on a high level."@en ;
                                rdfs:label "CTRLont"@en ;
                                owl:priorVersion <https://w3id.org/ibp/CTRLont-0.0.1> ;
                                owl:versionInfo "v0.3.0" .

#################################################################
#    Annotation properties
#################################################################

###  http://purl.org/dc/terms/contributor
<http://purl.org/dc/terms/contributor> rdf:type owl:AnnotationProperty .


###  http://purl.org/dc/terms/creator
<http://purl.org/dc/terms/creator> rdf:type owl:AnnotationProperty .


###  http://purl.org/dc/terms/description
<http://purl.org/dc/terms/description> rdf:type owl:AnnotationProperty .


###  http://purl.org/dc/terms/identifier
<http://purl.org/dc/terms/identifier> rdf:type owl:AnnotationProperty .


###  http://purl.org/dc/terms/issued
<http://purl.org/dc/terms/issued> rdf:type owl:AnnotationProperty .


###  http://purl.org/dc/terms/license
<http://purl.org/dc/terms/license> rdf:type owl:AnnotationProperty .


###  http://purl.org/dc/terms/modified
<http://purl.org/dc/terms/modified> rdf:type owl:AnnotationProperty .


###  http://purl.org/dc/terms/publisher
<http://purl.org/dc/terms/publisher> rdf:type owl:AnnotationProperty .


###  http://purl.org/dc/terms/rights
<http://purl.org/dc/terms/rights> rdf:type owl:AnnotationProperty .


###  http://purl.org/dc/terms/title
<http://purl.org/dc/terms/title> rdf:type owl:AnnotationProperty .


###  http://purl.org/vocab/vann/preferredNamespacePrefix
<http://purl.org/vocab/vann/preferredNamespacePrefix> rdf:type owl:AnnotationProperty .


###  http://purl.org/vocab/vann/preferredNamespaceUri
<http://purl.org/vocab/vann/preferredNamespaceUri> rdf:type owl:AnnotationProperty .


###  http://www.w3.org/2000/01/rdf-schema#comment
rdfs:comment rdf:type owl:AnnotationProperty .


###  http://www.w3.org/2000/01/rdf-schema#isDefinedBy
rdfs:isDefinedBy rdf:type owl:AnnotationProperty .


###  http://www.w3.org/2000/01/rdf-schema#label
rdfs:label rdf:type owl:AnnotationProperty .


###  http://www.w3.org/2000/01/rdf-schema#seeAlso
rdfs:seeAlso rdf:type owl:AnnotationProperty .


###  http://www.w3.org/2003/06/sw-vocab-status/ns#term_status
<http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> rdf:type owl:AnnotationProperty .


#################################################################
#    Object Properties
#################################################################

###  https://w3id.org/ibp/CTRLont#hasApplicationLogic
:hasApplicationLogic rdf:type owl:ObjectProperty ;
                     rdfs:range :ApplicationLogic ;
                     rdfs:comment "Object property to relate a control actor to its specific application logic"@en ;
                     rdfs:isDefinedBy :ctrl ;
                     rdfs:label "hasApplicationLogic"@en ;
                     <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" .


###  https://w3id.org/ibp/CTRLont#hasDataType
:hasDataType rdf:type owl:ObjectProperty ;
             rdfs:domain :AnnotatedElement ;
             rdfs:range :DataType ;
             rdfs:comment "Object property to annotate a input, output or parameter with its data type."@en ;
             rdfs:isDefinedBy :ctrl ;
             rdfs:label "hasDataType"@en ;
             <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" .


###  https://w3id.org/ibp/CTRLont#hasInput
:hasInput rdf:type owl:ObjectProperty ;
          rdfs:domain :ControlActor ;
          rdfs:range :Input ;
          rdfs:comment "Object property to relate a control actor to its inputs."@en ;
          rdfs:isDefinedBy :ctrl ;
          rdfs:label "hasInput"@en ;
          <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" .


###  https://w3id.org/ibp/CTRLont#hasMedium
:hasMedium rdf:type owl:ObjectProperty ;
           rdfs:domain :AnnotatedElement ;
           rdfs:range :Medium ;
           rdfs:comment "Object property to annotate an input, output or parameter with its medium."@en ;
           rdfs:isDefinedBy :ctrl ;
           rdfs:label "hasMedium"@en ;
           <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" .


###  https://w3id.org/ibp/CTRLont#hasOutput
:hasOutput rdf:type owl:ObjectProperty ;
           rdfs:domain :ControlActor ;
           rdfs:range :Output ;
           rdfs:comment "Object property to relate a control actor to its outputs."@en ;
           rdfs:isDefinedBy :ctrl ;
           rdfs:label "hasOutput"@en ;
           <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" .


###  https://w3id.org/ibp/CTRLont#hasParameter
:hasParameter rdf:type owl:ObjectProperty ;
              rdfs:domain :ControlActor ;
              rdfs:range :Parameter ;
              rdfs:comment "Object property to relate a control actor to its parameter."@en ;
              rdfs:isDefinedBy :ctrl ;
              rdfs:label "hasParameter"@en ;
              <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" .


###  https://w3id.org/ibp/CTRLont#hasQuantity
:hasQuantity rdf:type owl:ObjectProperty ;
             rdfs:domain :AnnotatedElement ;
             rdfs:range :Quantity ;
             rdfs:comment "Object property to annotate an input, output or parameter with its quantity."@en ;
             rdfs:isDefinedBy :ctrl ;
             rdfs:label "hasQuantity"@en ;
             <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" .


###  https://w3id.org/ibp/CTRLont#hasSemanticType
:hasSemanticType rdf:type owl:ObjectProperty ;
                 rdfs:domain :AnnotatedElement ;
                 rdfs:range :SemanticType ;
                 rdfs:comment "Object property to relate an input, output or parameter with its semantic type."@en ;
                 rdfs:isDefinedBy :ctrl ;
                 rdfs:label "hasSemanticType"@en ;
                 <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" .


###  https://w3id.org/ibp/CTRLont#hasUnit
:hasUnit rdf:type owl:ObjectProperty ;
         rdfs:domain :AnnotatedElement ;
         rdfs:range :Unit ;
         rdfs:comment "Object property to relate an input, output or parameter with its unit."@en ;
         rdfs:isDefinedBy :ctrl ;
         rdfs:label "hasUnit"@en ;
         <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" .


###  https://w3id.org/ibp/CTRLont#isConnectedTo
:isConnectedTo rdf:type owl:ObjectProperty ;
               rdfs:domain :Output ;
               rdfs:range :Input ;
               rdfs:comment "Object property to describe the topological relationship between an input of one control actor and the output of another."@en ;
               rdfs:isDefinedBy :ctrl ;
               rdfs:label "isConnectedTo"@en ;
               <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" .


###  https://w3id.org/ibp/CTRLont#isSupervisedBy
:isSupervisedBy rdf:type owl:ObjectProperty ;
                owl:inverseOf :supervises ;
                rdfs:domain :ControlActor ;
                rdfs:range :ControlActor ;
                rdfs:comment "Object property to describe hierarchical composition of control actors."@en ;
                rdfs:isDefinedBy :ctrl ;
                rdfs:label "isSupervisedBy"@en ;
                <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" .


###  https://w3id.org/ibp/CTRLont#logicInput
:logicInput rdf:type owl:ObjectProperty ;
            rdfs:range :Input ;
            rdfs:comment "Object property to express the relationship of some application logic concept to an input."@en ;
            rdfs:isDefinedBy :ctrl ;
            rdfs:label "logicInput"@en ;
            <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" .


###  https://w3id.org/ibp/CTRLont#logicOutput
:logicOutput rdf:type owl:ObjectProperty ;
             rdfs:range :Output ;
             rdfs:comment "Object property to express the relationship of some application logic concept to an output."@en ;
             rdfs:isDefinedBy :ctrl ;
             rdfs:label "logicOutput"@en ;
             <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" .


###  https://w3id.org/ibp/CTRLont#logicParameter
:logicParameter rdf:type owl:ObjectProperty ;
                rdfs:range :Parameter ;
                rdfs:comment "Object property to express the relationship of some application logic concept to an parameter."@en ;
                rdfs:isDefinedBy :ctrl ;
                rdfs:label "logicParameter"@en ;
                <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" .


###  https://w3id.org/ibp/CTRLont#supervises
:supervises rdf:type owl:ObjectProperty ;
            rdfs:domain :ControlActor ;
            rdfs:range :ControlActor ;
            rdfs:comment "Object property to describe if one control actor supervises another."@en ;
            rdfs:isDefinedBy :ctrl ;
            rdfs:label "supervises"@en ;
            <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" .


#################################################################
#    Classes
#################################################################

###  http://purl.org/vocommons/voaf#Vocabulary
<http://purl.org/vocommons/voaf#Vocabulary> rdf:type owl:Class .


###  http://www.w3.org/2002/07/owl#Thing
owl:Thing rdf:type owl:Class .


###  https://w3id.org/ibp/CTRLont#AnnotatedElement
:AnnotatedElement rdf:type owl:Class ;
                  rdfs:subClassOf [ rdf:type owl:Restriction ;
                                    owl:onProperty :hasDataType ;
                                    owl:allValuesFrom :DataType
                                  ] ,
                                  [ rdf:type owl:Restriction ;
                                    owl:onProperty :hasMedium ;
                                    owl:allValuesFrom :Medium
                                  ] ,
                                  [ rdf:type owl:Restriction ;
                                    owl:onProperty :hasQuantity ;
                                    owl:allValuesFrom :Quantity
                                  ] ,
                                  [ rdf:type owl:Restriction ;
                                    owl:onProperty :hasSemanticType ;
                                    owl:allValuesFrom :SemanticType
                                  ] ,
                                  [ rdf:type owl:Restriction ;
                                    owl:onProperty :hasUnit ;
                                    owl:allValuesFrom :Unit
                                  ] ;
                  rdfs:comment "An annotated element is a generic superclass for ctrl:Input, ctrl:Output and ctrl:Parameter"@en ;
                  rdfs:isDefinedBy :ctrl ;
                  rdfs:label "Annotated Element"@en ;
                  <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" .


###  https://w3id.org/ibp/CTRLont#ApplicationLogic
:ApplicationLogic rdf:type owl:Class ;
                  rdfs:comment "Concept to specify the application logic of a control actor. Seperate ontologies may be used to further specify this concept."@en ;
                  rdfs:isDefinedBy :ctrl ;
                  rdfs:label "Application Logic"@en ;
                  <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" .


###  https://w3id.org/ibp/CTRLont#ControlActor
:ControlActor rdf:type owl:Class ;
              rdfs:subClassOf [ rdf:type owl:Restriction ;
                                owl:onProperty :hasApplicationLogic ;
                                owl:someValuesFrom :ApplicationLogic
                              ] ,
                              [ rdf:type owl:Restriction ;
                                owl:onProperty :hasOutput ;
                                owl:someValuesFrom :Output
                              ] ,
                              [ rdf:type owl:Restriction ;
                                owl:onProperty :hasApplicationLogic ;
                                owl:allValuesFrom :ApplicationLogic
                              ] ,
                              [ rdf:type owl:Restriction ;
                                owl:onProperty :hasInput ;
                                owl:allValuesFrom :Input
                              ] ,
                              [ rdf:type owl:Restriction ;
                                owl:onProperty :hasOutput ;
                                owl:allValuesFrom :Output
                              ] ,
                              [ rdf:type owl:Restriction ;
                                owl:onProperty :hasParameter ;
                                owl:allValuesFrom :Parameter
                              ] ;
              rdfs:comment """Concept to describe the in general accepted Sense-Process-Actuate
pattern in automation systems, e.g. function blocks from IEC 61499."""@en ;
              rdfs:isDefinedBy :ctrl ;
              rdfs:label "Control Actor"@en ;
              <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" .


###  https://w3id.org/ibp/CTRLont#DataType
:DataType rdf:type owl:Class ;
          rdfs:comment "Placeholder class for the specification of basic data types such as, e.g. integer, boolean or double."@en ;
          rdfs:isDefinedBy :ctrl ;
          rdfs:label "Data type"@en ;
          rdfs:seeAlso "https://www.w3.org/TR/xmlschema-2/#built-in-datatypes"^^xsd:anyURI ;
          <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" .


###  https://w3id.org/ibp/CTRLont#Input
:Input rdf:type owl:Class ;
       rdfs:subClassOf :AnnotatedElement ;
       owl:disjointWith :Parameter ;
       rdfs:comment "An input allow flows of information to enter a control actor. Inputs are processed by the respective application logic of the control actor to compute the outputs."@en ;
       rdfs:isDefinedBy :ctrl ;
       rdfs:label "Input"@en ;
       <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" .


###  https://w3id.org/ibp/CTRLont#Medium
:Medium rdf:type owl:Class ;
        rdfs:comment "Placeholder concept to stipulate reuse of existing ontologies such as dbpedia or  	http://www.productontology.org/id/"@en ;
        rdfs:isDefinedBy :ctrl ;
        rdfs:label "Medium"@en ;
        rdfs:seeAlso <http://wiki.dbpedia.org/> ,
                     <http://www.productontology.org/id/> ;
        <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" .


###  https://w3id.org/ibp/CTRLont#Output
:Output rdf:type owl:Class ;
        rdfs:subClassOf :AnnotatedElement ;
        owl:disjointWith :Parameter ;
        rdfs:comment "An output allows compute results by the application logic of an control actor to be fowarded to outside entities such as actuators or other control actors."@en ;
        rdfs:isDefinedBy :ctrl ;
        rdfs:label "Output"@en ;
        <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" .


###  https://w3id.org/ibp/CTRLont#Parameter
:Parameter rdf:type owl:Class ;
           rdfs:subClassOf :AnnotatedElement ;
           rdfs:comment "Parameter describe time-invariant values and settings of the respective control actor. Thus thay can be added dependent on the respective application logic."@en ;
           rdfs:isDefinedBy :ctrl ;
           rdfs:label "Parameter"@en ;
           <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" .


###  https://w3id.org/ibp/CTRLont#Quantity
:Quantity rdf:type owl:Class ;
          rdfs:comment "Placeholder concept to stipulate reuse of existing ontologies such as Ontology for Units and Measures (OM) or QUDT."@en ;
          rdfs:isDefinedBy :ctrl ;
          rdfs:label "Quantity"@en ;
          rdfs:seeAlso <http://qudt.org/schema/qudt> ,
                       <http://www.ontology-of-units-of-measure.org/resource/om-2/> ;
          <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" .


###  https://w3id.org/ibp/CTRLont#SemanticType
:SemanticType rdf:type owl:Class ;
              rdfs:comment "It may be required to further annotate an Input, Output or Parameter with a specific Semantic Type. For example in building automation to differ between room air temperature or outdoor air temperature."@en ;
              rdfs:isDefinedBy :ctrl ;
              rdfs:label "Semantic Type"@en ;
              <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" .


###  https://w3id.org/ibp/CTRLont#Unit
:Unit rdf:type owl:Class ;
      rdfs:comment "Placeholder concept to stipulate reuse of existing ontologies such as Ontology for Units and Measures (OM) or QUDT."@en ;
      rdfs:isDefinedBy :ctrl ;
      rdfs:label "Unit"@en ;
      <http://www.w3.org/2003/06/sw-vocab-status/ns#term_status> "stable" .


#################################################################
#    Individuals
#################################################################

###  https://w3id.org/ibp/CTRLont
<https://w3id.org/ibp/CTRLont> rdf:type owl:NamedIndividual ,
                                        <http://purl.org/vocommons/voaf#Vocabulary> .


###  Generated by the OWL API (version 5.1.9) https://github.com/owlcs/owlapi/
