PREFIX ctrl: <https://w3id.org/ibp/CTRLont#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

ctrl:Quantity a rdfs:Class ;
  rdfs:label "Quantity"@en ;
  rdfs:comment "Placeholder concept to stipulate reuse of existing ontologies such as Ontology for Units and Measures (OM) or QUDT."@en ;
  rdfs:seeAlso <http://www.ontology-of-units-of-measure.org/resource/om-2/> , <http://qudt.org/schema/qudt> .

ctrl:Parameter a rdfs:Class ;
  rdfs:label "Parameter"@en ;
  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:subClassOf ctrl:AnnotatedElement .

ctrl:hasQuantity a rdf:Property ;
  rdfs:label "hasQuantity"@en ;
  rdfs:comment "Object property to annotate an input, output or parameter with its quantity."@en ;
  rdfs:domain ctrl:AnnotatedElement ;
  rdfs:range ctrl:Quantity .

ctrl:hasSemanticType a rdf:Property ;
  rdfs:label "hasSemanticType"@en ;
  rdfs:comment "Object property to relate an input, output or parameter with its semantic type."@en ;
  rdfs:domain ctrl:AnnotatedElement ;
  rdfs:range ctrl:SemanticType .

ctrl:hasDataType a rdf:Property ;
  rdfs:label "hasDataType"@en ;
  rdfs:comment "Object property to annotate a input, output or parameter with its data type."@en ;
  rdfs:domain ctrl:AnnotatedElement ;
  rdfs:range ctrl:DataType .

ctrl:hasMedium a rdf:Property ;
  rdfs:label "hasMedium"@en ;
  rdfs:comment "Object property to annotate an input, output or parameter with its medium."@en ;
  rdfs:domain ctrl:AnnotatedElement ;
  rdfs:range ctrl:Medium .

ctrl:hasUnit a rdf:Property ;
  rdfs:label "hasUnit"@en ;
  rdfs:comment "Object property to relate an input, output or parameter with its unit."@en ;
  rdfs:domain ctrl:AnnotatedElement ;
  rdfs:range ctrl:Unit .

ctrl:ApplicationLogic a rdfs:Class ;
  rdfs:label "Application Logic"@en ;
  rdfs:comment "Concept to specify the application logic of a control actor. Seperate ontologies may be used to further specify this concept."@en .

<http://purl.org/vocommons/voaf#Vocabulary> a rdfs:Class .

ctrl:Output a rdfs:Class ;
  rdfs:label "Output"@en ;
  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:subClassOf ctrl:AnnotatedElement .

ctrl:isConnectedTo a rdf:Property ;
  rdfs:label "isConnectedTo"@en ;
  rdfs:comment "Object property to describe the topological relationship between an input of one control actor and the output of another."@en ;
  rdfs:domain ctrl:Output ;
  rdfs:range ctrl:Input .

ctrl:DataType a rdfs:Class ;
  rdfs:label "Data type"@en ;
  rdfs:comment "Placeholder class for the specification of basic data types such as, e.g. integer, boolean or double."@en ;
  rdfs:seeAlso <https://www.w3.org/TR/xmlschema-2/#built-in-datatypes> .

ctrl:SemanticType a rdfs:Class ;
  rdfs:label "Semantic Type"@en ;
  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 .

ctrl:Medium a rdfs:Class ;
  rdfs:label "Medium"@en ;
  rdfs:comment "Placeholder concept to stipulate reuse of existing ontologies such as dbpedia or  \thttp://www.productontology.org/id/"@en ;
  rdfs:seeAlso <http://wiki.dbpedia.org/> , <http://www.productontology.org/id/> .

ctrl:Input a rdfs:Class ;
  rdfs:label "Input"@en ;
  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:subClassOf ctrl:AnnotatedElement .

ctrl:AnnotatedElement a rdfs:Class ;
  rdfs:label "Annotated Element"@en ;
  rdfs:comment "An annotated element is a generic superclass for ctrl:Input, ctrl:Output and ctrl:Parameter"@en .

ctrl:ControlActor a rdfs:Class ;
  rdfs:label "Control Actor"@en ;
  rdfs:comment """Concept to describe the in general accepted Sense-Process-Actuate
pattern in automation systems, e.g. function blocks from IEC 61499."""@en .

ctrl:supervises a rdf:Property ;
  rdfs:label "supervises"@en ;
  rdfs:comment "Object property to describe if one control actor supervises another."@en ;
  rdfs:domain ctrl:ControlActor ;
  rdfs:range ctrl:ControlActor .

ctrl:hasOutput a rdf:Property ;
  rdfs:label "hasOutput"@en ;
  rdfs:comment "Object property to relate a control actor to its outputs."@en ;
  rdfs:domain ctrl:ControlActor ;
  rdfs:range ctrl:Output .

ctrl:isSupervisedBy a rdf:Property ;
  rdfs:label "isSupervisedBy"@en ;
  rdfs:comment "Object property to describe hierarchical composition of control actors."@en ;
  rdfs:domain ctrl:ControlActor ;
  rdfs:range ctrl:ControlActor .

ctrl:hasApplicationLogic a rdf:Property ;
  rdfs:label "hasApplicationLogic"@en ;
  rdfs:comment "Object property to relate a control actor to its specific application logic"@en ;
  rdfs:range ctrl:ApplicationLogic .

ctrl:hasInput a rdf:Property ;
  rdfs:label "hasInput"@en ;
  rdfs:comment "Object property to relate a control actor to its inputs."@en ;
  rdfs:domain ctrl:ControlActor ;
  rdfs:range ctrl:Input .

ctrl:hasParameter a rdf:Property ;
  rdfs:label "hasParameter"@en ;
  rdfs:comment "Object property to relate a control actor to its parameter."@en ;
  rdfs:domain ctrl:ControlActor ;
  rdfs:range ctrl:Parameter .

ctrl:Unit a rdfs:Class ;
  rdfs:label "Unit"@en ;
  rdfs:comment "Placeholder concept to stipulate reuse of existing ontologies such as Ontology for Units and Measures (OM) or QUDT."@en .

ctrl:logicInput a rdf:Property ;
  rdfs:label "logicInput"@en ;
  rdfs:comment "Object property to express the relationship of some application logic concept to an input."@en ;
  rdfs:range ctrl:Input .

ctrl:logicOutput a rdf:Property ;
  rdfs:label "logicOutput"@en ;
  rdfs:comment "Object property to express the relationship of some application logic concept to an output."@en ;
  rdfs:range ctrl:Output .

ctrl:logicParameter a rdf:Property ;
  rdfs:label "logicParameter"@en ;
  rdfs:comment "Object property to express the relationship of some application logic concept to an parameter."@en ;
  rdfs:range ctrl:Parameter .
