@prefix :      <https://w3id.org/CPSWatch#> .
@prefix schema: <https://schema.org/> .
@prefix org:   <http://www.w3.org/ns/org#> .
@prefix owl:   <http://www.w3.org/2002/07/owl#> .
@prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix skos1: <http://www.w3.org/2008/05/skos#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix terms: <http://purl.org/dc/terms/> .
@prefix bibo:  <http://purl.org/ontology/bibo/> .
@prefix vann:  <http://purl.org/vocab/vann/> .
@prefix foaf:  <http://xmlns.com/foaf/0.1/> .
@prefix dc:    <http://purl.org/dc/elements/1.1/> .

:hasUnit  a              owl:ObjectProperty ;
        rdfs:comment     "The unit the observations of a CPSWatch#ContinuousMonitoringSensor or CPSWatch#EventMonitoringSensor monitoring sensor are made in." ;
        rdfs:domain      :NumericMonitoringSensor ;
        rdfs:label       "hasUnit" ;
        rdfs:range       <http://qudt.org/schema/qudt/Unit> ;
        owl:cardinality  "1"^^xsd:nonNegativeInteger .

:hasInfluence  a      owl:ObjectProperty ;
        rdfs:comment  "Connection between two CPSWatch:MonitoringSensor to state that the observations of these sensors are connected."@en ;
        rdfs:domain   :MonitoringSensor ;
        rdfs:label    "hasInfluence"@en ;
        rdfs:range    :MonitoringSensor .

<http://www.w3.org/ns/sosa/madeBySensor>
        a             owl:ObjectProperty ;
        rdfs:comment  "Connection between a CPSWatch#Observation and a CPSWatch#MonitoringSensor. "@en ;
        rdfs:domain   :Observation ;
        rdfs:label    "madeBySensor"@en ;
        rdfs:range    :MonitoringSensor .

:hasSystemID  a       owl:DatatypeProperty ;
        rdfs:comment  "The unique ID of a CPSWatch#MonitoredSystem."@en ;
        rdfs:domain   :MonitoredSystem ;
        rdfs:label    "hasID"@en ;
        rdfs:range    xsd:unsignedInt .

:StatusObservation  a    owl:Class ;
        rdfs:comment     "A CPSWatch#StatusObservation is an observation made by an CPSWatch#StatusMonitoringSensor monitoring sensor." ;
        rdfs:label       "StatusObservation " ;
        rdfs:subClassOf  :Observation ;
        rdfs:subClassOf  [ a                         owl:Restriction ;
                           owl:onClass               :Status ;
                           owl:onProperty            :hasStatus ;
                           owl:qualifiedCardinality  "1"^^xsd:nonNegativeInteger
                         ] .

schema:logo  a  owl:AnnotationProperty .

:hasSampleRate  a        owl:DatatypeProperty ;
        rdfs:comment     "Update rate in seconds (s) that the data is stored." ;
        rdfs:domain      :ContinuousMonitoringSensor ;
        rdfs:label       "hasSampleRate" ;
        rdfs:range       xsd:float ;
        owl:cardinality  "1"^^xsd:nonNegativeInteger .

:On     a       :Status , owl:NamedIndividual .

terms:license  a  owl:AnnotationProperty .

:hasMonitoringSensor  a  owl:ObjectProperty ;
        rdfs:comment  "Connection from a CPSWatch:MonitoredSystem to a CPSWatch#MonitoringSensor"@en ;
        rdfs:domain   :MonitoredSystem ;
        rdfs:label    "hasMonitoringSensor"@en ;
        rdfs:range    :MonitoringSensor .

vann:preferredNamespaceUri
        a       owl:AnnotationProperty .

:hasPositiveCorrelation
        a                   owl:ObjectProperty ;
        rdfs:comment        "Connection between two CPSWatch:MonitoringSensor to state that the observations of these sensors are with a positive correlation."@en ;
        rdfs:domain         :MonitoringSensor ;
        rdfs:label          "hasPositiveCorrelation"@en ;
        rdfs:range          :MonitoringSensor ;
        rdfs:subPropertyOf  :hasInfluence .

:hasStatus  a            owl:ObjectProperty ;
        rdfs:comment     "The Status of the observations of a CPSWatch#StatusMonitoringSensor." ;
        rdfs:domain      :StatusObservation ;
        rdfs:label       "hasStatus" ;
        rdfs:range       :Status ;
        owl:cardinality  "1"^^xsd:nonNegativeInteger .

:StatusMonitoringSensor
        a                owl:Class ;
        rdfs:comment     "A CPSWatch#StatusMonitoringSensor is a sensor that can write specific states." ;
        rdfs:label       "StatusMonitoringSensor" ;
        rdfs:subClassOf  :MonitoringSensor .

foaf:homepage  a  owl:AnnotationProperty .

:Open   a       :Status , owl:NamedIndividual .

:Critical  a    :Status , owl:NamedIndividual .

terms:created  a  owl:AnnotationProperty .

:Observation  a          owl:Class ;
        rdfs:comment     "A CPSWatch#Observation is the parent class of CPSWatch#NumericObservation and CPSWatch#StatusObservation that describe the observation made by a CPSWatch#ContinuousMonitoringSensor, CPSWatch#EventMonitoringSensor, or CPSWatch#StatusMonitoringSensor." ;
        rdfs:label       "Observation" ;
        rdfs:subClassOf  [ a                owl:Restriction ;
                           owl:cardinality  "1"^^xsd:nonNegativeInteger ;
                           owl:onProperty   <http://www.w3.org/ns/sosa/resultTime>
                         ] ;
        rdfs:subClassOf  [ a                         owl:Restriction ;
                           owl:onClass               :MonitoringSensor ;
                           owl:onProperty            <http://www.w3.org/ns/sosa/madeBySensor> ;
                           owl:qualifiedCardinality  "1"^^xsd:nonNegativeInteger
                         ] .

terms:creator  a  owl:AnnotationProperty .

:hasSensorID  a       owl:DatatypeProperty ;
        rdfs:comment  "The unique ID of a CPSWatch#MonitoringSensor."@en ;
        rdfs:domain   :MonitoringSensor ;
        rdfs:label    "hasID"@en ;
        rdfs:range    xsd:unsignedInt .

org:memberOf  a  owl:AnnotationProperty .

:ContinuousMonitoringSensor
        a                owl:Class ;
        rdfs:comment     "A CPSWatch#ContinuousMonitoringSensor is a sensor that writes data with a fixed sample rate." ;
        rdfs:label       "ContinuousMonitoringSensor" ;
        rdfs:subClassOf  :NumericMonitoringSensor ;
        rdfs:subClassOf  [ a                owl:Restriction ;
                           owl:cardinality  "1"^^xsd:nonNegativeInteger ;
                           owl:onProperty   :hasSampleRate
                         ] .

:hasNegativeCorrelation
        a                   owl:ObjectProperty ;
        rdfs:comment        "Connection between two CPSWatch:MonitoringSensor to state that the observations of these sensors are with a negative correlation."@en ;
        rdfs:domain         :MonitoringSensor ;
        rdfs:label          "hasNegativeCorrelation"@en ;
        rdfs:range          :MonitoringSensor ;
        rdfs:subPropertyOf  :hasInfluence .

:NumericObservation  a   owl:Class ;
        rdfs:comment     "A CPSWatch#NumericObservation is an observation made by an CPSWatch#NumericMonitoringSensor." ;
        rdfs:label       "NumericObservation " ;
        rdfs:subClassOf  :Observation ;
        rdfs:subClassOf  [ a                owl:Restriction ;
                           owl:cardinality  "1"^^xsd:nonNegativeInteger ;
                           owl:onProperty   <http://www.w3.org/ns/sosa/hasSimpleResult>
                         ] .

<https://orcid.org/0009-0003-2548-8225>
        org:memberOf  <https://www.hsu-hh.de#this> ;
        foaf:name     "Björn Ludwig"@en .

dc:description  a  owl:AnnotationProperty .

schema:image  a  owl:AnnotationProperty .

terms:abstract  a  owl:AnnotationProperty .

dc:publisher  a           owl:ObjectProperty ;
        rdfs:comment      "An entity responsible for making the resource available."@en ;
        rdfs:isDefinedBy  dc: ;
        rdfs:label        "publisher"@en .

:ShuttingDown  a  :Status , owl:NamedIndividual .

terms:publisher  a  owl:AnnotationProperty .

:hasStates  a         owl:ObjectProperty ;
        rdfs:comment  "The possible states that a CPSWatch#StatusMonitoringSensor can have." ;
        rdfs:domain   :StatusMonitoringSensor ;
        rdfs:label    "hasStates" ;
        rdfs:range    :Status .

bibo:status  a  owl:AnnotationProperty .

schema:includedInDataCatalog
        a       owl:AnnotationProperty .

<http://www.w3.org/ns/sosa/hasSimpleResult>
        a                owl:DatatypeProperty ;
        rdfs:comment     "The value of the observations of a CPSWatch#ContinuousMonitoringSensor or CPSWatch#EventMonitoringSensor monitoring sensor are made in." ;
        rdfs:domain      :NumericObservation ;
        rdfs:label       "hasSimpleResult" ;
        owl:cardinality  "1"^^xsd:nonNegativeInteger .

:hasDeviationThreshold
        a                owl:DatatypeProperty ;
        rdfs:comment     "Deviation threshold of a CPSWatch:EventMonitoringSensor that needs to be exceeded to save the current value." ;
        rdfs:domain      :EventMonitoringSensor ;
        rdfs:label       "hasDeviationThreshold" ;
        rdfs:range       xsd:float ;
        owl:cardinality  "1"^^xsd:nonNegativeInteger .

<http://www.w3.org/ns/sosa/resultTime>
        a                owl:DatatypeProperty ;
        rdfs:comment     "The dateTime of the observations of a CPSWatch#ContinuousMonitoringSensor or CPSWatch#EventMonitoringSensor monitoring sensor." ;
        rdfs:domain      :Observation ;
        rdfs:label       "resultTime" ;
        owl:cardinality  "1"^^xsd:nonNegativeInteger .

foaf:Organization  a  owl:Class .

owl:cardinality  a  owl:AnnotationProperty .

:MonitoringSensor  a     owl:Class ;
        rdfs:comment     "A CPSWatch#MonitoringSensor is a sensor used to monitor a CPSWatch#MonitoredSystem. It can be of type CPSWatch#ContinuousMonitoringSensor, CPSWatch#EventMonitoringSensor, CPSWatch#StatusMonitoringSensor." ;
        rdfs:label       "MonitoringSensor" ;
        rdfs:subClassOf  [ a                owl:Restriction ;
                           owl:cardinality  "1"^^xsd:nonNegativeInteger ;
                           owl:onProperty   :hasSensorID
                         ] .

:Ok     a       :Status , owl:NamedIndividual .

foaf:name  a    owl:AnnotationProperty .

:Status  a            owl:Class ;
        rdfs:comment  "The status values a CPSWatch#StatusMonitoringSensor can return." ;
        rdfs:label    "Status" .

<http://qudt.org/schema/qudt/Unit>
        a             owl:Class ;
        rdfs:comment  "A unit of measure, or unit, is a particular quantity value that has been chosen as a scale for measuring other quantities the same kind (more generally of equivalent dimension). For example, the meter is a quantity of length that has been rigorously defined and standardized by the BIPM (International Board of Weights and Measures). Any measurement of the length can be expressed as a number multiplied by the unit meter. More formally, the value of a physical quantity Q with respect to a unit (U) is expressed as the scalar multiple of a real number (n) and U, as  \\\\\\\\(Q = nU\\\\\\\\). " ;
        rdfs:label    "Unit" .

<http://www.w3.org/ns/sosa/observes>
        a             owl:ObjectProperty ;
        rdfs:comment  "Connection between a CPSWatch#MonitoringSensor and a sosa#ObservableProperty. "@en ;
        rdfs:domain   :MonitoringSensor ;
        rdfs:label    "observes"@en ;
        rdfs:range    <http://www.w3.org/ns/sosa/ObservableProperty> .

<https://w3id.org/CPSWatch>
        a                              owl:Ontology ;
        rdfs:comment                   "1.0.1 release of the CPSWatch Ontology"@en ;
        dc:description                 "This ontology defines a vocabulary for describing cyber physical systems for monitoring purpose. It contains two main concepts: CPSWatch#MonitoredSystem that is a top level description of a System that is modeled and CPSWatch#MonitoringSensor that is a top level description of a sensor used to monitor the CPSWatch#MonitoredSystem. "@en ;
        dc:title                       "The Cyber Physical System Watch Ontology"@en ;
        terms:abstract                 "Manufacturers and users want to monitore their cyber physical systems. In the Industry 4.0 this is done by observing data from sensors. The problem arises when looking at a system of systems, e.g. a production plant or a whole powertrain of a vessel. Multiple systems describe their data in multiple ways and create the problem of analysing these data together in one system. To tackle this problem and to make transferability of algorithms (ML methods) between different monitoring systems possible, the CPSWatch Ontology is defined to create a top level description of a CPS system. "@en ;
        terms:created                  "December 7th, 2023"@en ;
        terms:creator                  <https://orcid.org/0009-0003-2548-8225> ;
        terms:issued                   "December 7th, 2023"@en ;
        terms:license                  <https://creativecommons.org/licenses/by/4.0/> ;
        terms:modified                 "December 7th, 2023"@en ;
        terms:publisher                "CPSWatch on Github"@en ;
        bibo:status                    "CPSWatch (stable)"@en ;
        vann:preferredNamespacePrefix  "CPSWatch"@en ;
        vann:preferredNamespaceUri     "https://w3id.org/CPSWatch/1.0.1" ;
        owl:versionIRI                 <https://w3id.org/CPSWatch/1.0.1> ;
        owl:versionInfo                "1.0.1"@en ;
        schema:image                   <https://github.com/B-Ludwig/CPSWatch/blob/aa184a2003274995672a6dd3ca445b12a5286f52/assets/Logo.png> ;
        schema:logo                    <https://github.com/B-Ludwig/CPSWatch/blob/aa184a2003274995672a6dd3ca445b12a5286f52/assets/Logo.png> .

:Error  a       :Status , owl:NamedIndividual .

:NumericMonitoringSensor
        a                owl:Class ;
        rdfs:comment     "A CPSWatch#NumericMonitoringSensor is a sensor that writes numreric data." ;
        rdfs:label       "NumericMonitoringSensor" ;
        rdfs:subClassOf  :MonitoringSensor .

:hasSubSystem  a      owl:ObjectProperty ;
        rdfs:comment  "Connection between two CPSWatch:MonitoredSystem to state that a CPSWatch:MonitoredSystem has a sub system."@en ;
        rdfs:domain   :MonitoredSystem ;
        rdfs:label    "hasSubSystem"@en ;
        rdfs:range    :MonitoredSystem .

terms:modified  a  owl:AnnotationProperty .

:hasSystemConnection  a     owl:ObjectProperty ;
        rdfs:comment        "Connection between two CPSWatch:MonitoredSystem to state that system B is dependent on system A, e.g. CPSWatch:MonitoredSystem A hasSystemConnection CPSWatch:MonitoredSystem B."@en ;
        rdfs:domain         :MonitoredSystem ;
        rdfs:label          "hasSystemConnection"@en ;
        rdfs:range          :MonitoredSystem ;
        rdfs:subPropertyOf  :hasSystemConnection .

:MonitoredSystem  a      owl:Class ;
        rdfs:comment     "A CPSWatch#MonitoredSystem is a system that is monitored by CPSWatch#MonitoringSensor." ;
        rdfs:label       "MonitoredSystem" ;
        rdfs:subClassOf  [ a                owl:Restriction ;
                           owl:cardinality  "1"^^xsd:nonNegativeInteger ;
                           owl:onProperty   :hasSystemID
                         ] .

vann:preferredNamespacePrefix
        a       owl:AnnotationProperty .

terms:issued  a  owl:AnnotationProperty .

:Off    a       :Status , owl:NamedIndividual .

skos1:prefLabel  a          owl:AnnotationProperty ;
        rdfs:subPropertyOf  rdfs:label .

terms:description  a  owl:AnnotationProperty .

<https://www.hsu-hh.de#this>
        a              foaf:Organization , owl:NamedIndividual ;
        foaf:homepage  "https://www.hsu-hh.de/en/" ;
        foaf:name      "Helmut Schmidt University" .

:Closed  a      :Status , owl:NamedIndividual .

:EventMonitoringSensor
        a                owl:Class ;
        rdfs:comment     "A CPSWatch#EventMonitoringSensor is a sensor that writes data if a threshold is surpassed." ;
        rdfs:label       "EventMonitoringSensor" ;
        rdfs:subClassOf  :NumericMonitoringSensor ;
        rdfs:subClassOf  [ a                owl:Restriction ;
                           owl:cardinality  "1"^^xsd:nonNegativeInteger ;
                           owl:onProperty   :hasDeviationThreshold
                         ] .

<http://www.w3.org/ns/sosa/ObservableProperty>
        a       owl:Class .

dc:title  a     owl:AnnotationProperty .

:Starting  a    :Status , owl:NamedIndividual .
