@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix dul: <http://www.loa.istc.cnr.it/ontologies/DUL.owl#> .
@prefix vs: <http://www.w3.org/2003/06/sw-vocab-status/ns#> .
@prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> .
@prefix qudt: <http://data.qudt.org/qudt/owl/1.0.0/unit.owl#> .
@prefix voaf: <http://purl.org/vocommons/voaf#> .
@prefix iottaxolite: <http://purl.org/iot/vocab/iot-taxonomy-lite#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix ssnsystems: <http://www.w3.org/ns/ssn/systems/> .
@prefix sosa: <http://www.w3.org/ns/sosa/> .
@prefix gdprtext: <https://w3id.org/GDPRtEXT#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix ns: <http://creativecommons.org/ns#> .
@prefix vann: <http://purl.org/vocab/vann/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix fiestapriv: <http://purl.org/iot/ontology/fiesta-priv#> .
@prefix schema: <http://schema.org/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix consent: <http://purl.org/adaptcentre/openscience/ontologies/consent#> .
@prefix iotlite: <http://purl.oclc.org/NET/UNIS/fiware/iot-lite#> .
@prefix time: <http://www.w3.org/2006/time#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix qu: <http://purl.oclc.org/NET/ssnx/qu/qu#> .
@prefix ssn: <http://www.w3.org/ns/ssn/> .
@prefix onemtom: <https://git.onem2m.org/MAS/BaseOntology/raw/master/base_ontology.owl#> .

iotlite:Circle
    a owl:Class ;
    rdfs:comment """
        Circle coverage it needs the location of the sensor as the centre of the circle and the radius as a DataProperty.
        """@en ;
    rdfs:label "Circle"@en ;
    rdfs:subClassOf iotlite:Coverage .

iotlite:Coverage
    a owl:Class ;
    rdfs:comment """
        The coverage of an IoT device (i.e. a temperature sensor inside a room has a coverage of that room).
        """@en ;
    rdfs:label "Coverage"@en ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:onClass geo:Point ;
        owl:onProperty geo:location ;
        owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
    ] .

iotlite:Metadata
    a owl:Class ;
    rdfs:comment """
        Class used to describe properties that cannot be described by QuantityKind and Units. i.e. the resolution of a sensor.
        """@en ;
    rdfs:label "Metadata"@en .

iotlite:Polygon
    a owl:Class ;
    rdfs:comment """
        The coverage is made up by linking several points by strait lines.
        """@en ;
    rdfs:label "Polygon"@en ;
    rdfs:subClassOf iotlite:Coverage .

iotlite:Rectangle
    a owl:Class ;
    rdfs:comment """
        The coverage is made up by giving two points which are the opposite corners of a rectangle.
        """@en ;
    rdfs:label "Rectangle"@en ;
    rdfs:subClassOf iotlite:Coverage .

iotlite:Service
    a owl:Class ;
    rdfs:comment "Service provided by an IoT Device"@en ;
    rdfs:label "Service"@en ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onClass ssn:System ;
        owl:onProperty iotlite:exposes
    ] .

iotlite:Tag
    a owl:Class ;
    rdfs:comment """
        Device that can redirect to a resource with information (i.e. RFID, NFC, QR-codes, bar-codes).
        """@en ;
    rdfs:label "Tagging Device"@en ;
    rdfs:subClassOf ssn:System .

iotlite:exposedBy
    a owl:ObjectProperty ;
    rdfs:comment "A device is exposed by a service."@en ;
    rdfs:domain iotlite:Service ;
    rdfs:label "Exposed By"@en ;
    rdfs:range [
        a owl:Restriction ;
        owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onClass ssn:System ;
        owl:onProperty iotlite:exposedBy
    ] ;
    owl:inverseOf iotlite:exposes .

iotlite:exposes
    a owl:ObjectProperty ;
    rdfs:comment """
        For service-oriented queries. The inverse of exposedBy.
        """@en ;
    rdfs:domain ssn:System ;
    rdfs:label "Exposes"@en ;
    rdfs:range [
        a owl:Restriction ;
        owl:onProperty iotlite:exposes ;
        owl:someValuesFrom iotlite:Service
    ] .

iotlite:hasCoverage
    a owl:ObjectProperty ;
    rdfs:comment "Links the devices with their coverages."@en ;
    rdfs:domain ssn:System ;
    rdfs:label "Has Coverage"@en ;
    rdfs:range [
        a owl:Restriction ;
        owl:onProperty iotlite:hasCoverage ;
        owl:someValuesFrom iotlite:Coverage
    ] .

iotlite:hasMetadata
    a owl:ObjectProperty ;
    rdfs:comment """
        Links any concept with metadata about that concept.
        """@en ;
    rdfs:label "Has Metadata"@en ;
    rdfs:range iotlite:Metadata .

iotlite:hasUnit
    schema:domainIncludes iottaxolite:Direction, sosa:Actuator, sosa:Result, sosa:Sensor, ssnsystems:SystemProperty ;
    a owl:ObjectProperty ;
    rdfs:comment """
        Links the sensor with the units of the quantity kind it measures (e.g. A sensor -sensor1- measures temperature in Celsius: senso1 hasUnit Celsius).
        """ ;
    rdfs:label "Has Unit"@en ;
    rdfs:range [
        a owl:Restriction ;
        owl:onClass qu:Unit ;
        owl:onProperty iotlite:hasUnit ;
        owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
    ] .

iotlite:id
    schema:domainIncludes sosa:Actuator, sosa:Sensor ;
    a owl:DatatypeProperty ;
    rdfs:comment "The ID of the Device or Entity."@en ;
    rdfs:label "ID"@en ;
    rdfs:range xsd:string .

iotlite:interfaceDescription
    a owl:DatatypeProperty ;
    rdfs:comment """
        Interface Description of the service, e.g. WADL, WSDL, NGSI9 etc.
        """ ;
    rdfs:domain iotlite:Service ;
    rdfs:label "Interface Description"@en ;
    rdfs:range xsd:anyURI .

iotlite:interfaceType
    a owl:DatatypeProperty ;
    rdfs:comment """
        Defines the type of interface of the service endpoint, e.g. RESTful, NGSI-9, MQTT, CoAP etc.
        """@en ;
    rdfs:domain iotlite:Service ;
    rdfs:label "Interface Type"@en ;
    rdfs:range xsd:string .

iotlite:isAssociatedWith
    a owl:ObjectProperty ;
    rdfs:comment """
        Defines the associations between objects and sensors (e.g. A table (object) has an attribute (temperature at the table) which is associated with a sensor (the temperature sensor of the room).
        """ ;
    rdfs:domain sosa:FeatureOfInterest ;
    rdfs:label "Is Associated With"@en ;
    rdfs:range [
        a owl:Restriction ;
        owl:onProperty iotlite:isAssociatedWith ;
        owl:someValuesFrom iotlite:Service
    ] .

iotlite:isMobile
    a owl:DatatypeProperty ;
    rdfs:comment """
        Is the Device mobile? This can be used by an IoT management platform to enable tracking of the device's location.
        """@en ;
    rdfs:domain sosa:Platform ;
    rdfs:label "Is Mobile"@en ;
    rdfs:range xsd:boolean .

iotlite:isOnline
    a owl:DatatypeProperty ;
    rdfs:comment "Identifies if the service is online or not."@en ;
    rdfs:domain iotlite:Service ;
    rdfs:label "is Online"@en ;
    rdfs:range xsd:boolean .

iotlite:metadataType
    a owl:DatatypeProperty ;
    rdfs:comment """
        Defines the type pf the metadata value (e.g. resolution of the sensor).
        """ ;
    rdfs:domain iotlite:Metadata ;
    rdfs:label "Metadata Type"@en ;
    rdfs:range xsd:string .

iotlite:metadataValue
    a owl:DatatypeProperty ;
    rdfs:comment "Value of the metadata" ;
    rdfs:domain iotlite:Metadata ;
    rdfs:label "Metadata Value"@en ;
    rdfs:range xsd:string .

iotlite:radius
    a owl:DatatypeProperty ;
    rdfs:comment """
        Specifies the radius of a circle coverage defined by a point -the centre of the circle- and its radius.
        """ ;
    rdfs:domain iotlite:Circle ;
    rdfs:label "Radius"@en ;
    rdfs:range xsd:double .

qu:Unit
    dc:source "skos:exactMatch 'Unit' [SysML 1.2-QUDV] http://www.omgwiki.org/OMGSysML/doku.php?id=sysml-qudv:quantities_units_dimensions_values_qudv" ;
    a owl:Class ;
    rdfs:comment "A Unit is an abstract classifier that represents the [VIM] concept of \"measurement unit\" that is defined as \"real scalar quantity, defined and adopted by convention, with which any other quantity of the same kind can be compared to express the ratio of the two quantities as a number.\"" ;
    rdfs:isDefinedBy "http://purl.oclc.org/NET/ssnx/qu" ;
    rdfs:label "Unit" ;
    rdfs:seeAlso "http://www.omgsysml.org/qudv#Unit" .

consent:Action
    a owl:Class ;
    rdfs:comment "'action' defines what action is permitted by the consent." ;
    rdfs:label "Action" .

consent:AllowedParty
    a owl:Class ;
    rdfs:comment "'Allowed party' defines the party (person or organisation) that is allowed (or denied )to perform certain action on the particular data by this consent.", "'Allowed party' is used to indicate who the party (person or organisation) is that is allowed (or denied )to perform certain action on the particular data by this consent." ;
    rdfs:label "AllowedParty" .

consent:Consent
    a owl:Class ;
    rdfs:comment "consent of the data subject means any freely given, specific, informed and unambiguous indication of the data subject's wishes by which he or she, by a statement or by a clear affirmative action, signifies agreement to the processing of personal data relating to him or her;" ;
    rdfs:label "Consent" .

consent:ConsentingParty
    a owl:Class ;
    rdfs:comment "'consenting party' is the person who is giving the consent." ;
    rdfs:label "ConsentingParty" .

consent:DataSubject
    a owl:Class ;
    rdfs:comment "'data subject' is the person who is identified by the personal data or the data is about that person." ;
    rdfs:label "DataSubject" ;
    rdfs:subClassOf consent:ConsentingParty .

consent:Permission
    a owl:Class ;
    rdfs:comment "'permission' defines the authorisation granted by the consent." ;
    rdfs:label "Permission" .

consent:Purpose
    a owl:Class ;
    rdfs:comment "'purpose' indicates for what purpose the action is allowed by the consent on the data" ;
    rdfs:label "Purpose" .

consent:activity_has_purpose
    a owl:ObjectProperty ;
    rdfs:comment "provides a relation between a given action (example discovery of sensors in a region) and its purpose. " ;
    rdfs:domain consent:Action ;
    rdfs:label "activity_has_purpose" ;
    rdfs:range [
        a owl:Restriction ;
        owl:onClass consent:Purpose ;
        owl:onProperty consent:activity_has_purpose ;
        owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
    ] .

consent:consent_given_by
    a owl:ObjectProperty ;
    rdfs:comment "Identifies the person which gives the consent." ;
    rdfs:domain consent:Consent ;
    rdfs:label "consent_given_by" ;
    rdfs:range [
        a owl:Restriction ;
        owl:onClass consent:ConsentingParty ;
        owl:onProperty consent:consent_given_by ;
        owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
    ] ;
    owl:inverseOf fiestapriv:givesConsent .

consent:consent_given_for
    a owl:ObjectProperty ;
    rdfs:comment "provides link between the consent and permisions for which consent is given." ;
    rdfs:domain consent:Consent ;
    rdfs:label "consent_given_for" ;
    rdfs:range [
        a owl:Restriction ;
        owl:onClass consent:Permission ;
        owl:onProperty consent:consent_given_for ;
        owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
    ] .

consent:permission_given_for_activity
    a owl:ObjectProperty ;
    rdfs:comment "provides a relation between a given action (example discovery of sensors in a region) and permissions needed to fulfil the action." ;
    rdfs:domain consent:Permission ;
    rdfs:label "permission_given_for_activity" ;
    rdfs:range [
        a owl:Restriction ;
        owl:onClass consent:Action ;
        owl:onProperty consent:permission_given_for_activity ;
        owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
    ] .

consent:permission_given_for_data
    schema:rangeIncludes [
        a owl:Restriction ;
        owl:onProperty consent:permission_given_for_data ;
        owl:someValuesFrom ssn:System
    ], [
        a owl:Restriction ;
        owl:onProperty consent:permission_given_for_data ;
        owl:someValuesFrom sosa:ObservableProperty
    ], [
        a owl:Restriction ;
        owl:onProperty consent:permission_given_for_data ;
        owl:someValuesFrom sosa:ActuatableProperty
    ], [
        a owl:Restriction ;
        owl:onProperty consent:permission_given_for_data ;
        owl:someValuesFrom iotlite:Service
    ] ;
    a owl:ObjectProperty ;
    rdfs:comment "Identifies the data for which permissions are granted." ;
    rdfs:domain consent:Permission ;
    rdfs:label "permission_given_for_data" .

consent:permission_given_to
    a owl:ObjectProperty ;
    rdfs:comment "Identifies the party/person to which permissions are granted." ;
    rdfs:domain consent:Permission ;
    rdfs:label "permission_given_to" ;
    rdfs:range [
        a owl:Restriction ;
        owl:onProperty consent:permission_given_to ;
        owl:someValuesFrom consent:AllowedParty
    ] ;
    owl:inverseOf fiestapriv:hasPermission .

dc:source
    a owl:AnnotationProperty .

dcterms:bibliographicCitation
    a owl:AnnotationProperty .

dcterms:created
    a owl:AnnotationProperty .

dcterms:creator
    a owl:AnnotationProperty .

dcterms:description
    a owl:AnnotationProperty .

dcterms:license
    a owl:AnnotationProperty .

dcterms:rights
    a owl:AnnotationProperty .

dcterms:title
    a owl:AnnotationProperty .

<http://purl.org/iot/ontology/fiesta-priv#>
    dc:contributor "Elias Tragos, UCD, Dublin"@en, "Rachit Agarwal, Inria, Paris"@en, "Tarek Elsaleh, UNIS, Surrey"@en ;
    dc:rights "Creative Commons Attribution 4.0 International" ;
    dc:title "FIESTA-Priv Ontology"@en ;
    dcterms:bibliographicCitation "R. Agarwal, D. G. Fernandez, T. Elsaleh, A. Gyrard, J. Lanza, L. Sanchez, N.Georgantas, and V. Issarny. 2016. Unified IoT Ontology to Enable Interoperability and Federation of Testbeds. In 3rd IEEE World Forum on Internet of Things. IEEE, Reston, USA, pp. 70-75"@en ;
    dcterms:modified "2019-10-07"^^xsd:date ;
    vann:preferredNamespacePrefix "fiesta-priv" ;
    vann:preferredNamespaceUri "http://purl.org/iot/ontology/fiesta-iot#" ;
    a owl:Ontology ;
    rdfs:comment "Please report any errors to rachit.agarwal@inria.fr"@en ;
    rdfs:label "FIESTA-Priv" ;
    owl:imports <http://purl.org/iot/vocab/iot-taxonomy-lite#> ;
    owl:versionInfo "1.0" .

fiestapriv:controls
    schema:rangeIncludes [
        a owl:Restriction ;
        owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onClass ssn:Deployment ;
        owl:onProperty fiestapriv:controls
    ], [
        a owl:Restriction ;
        owl:onProperty fiestapriv:controls ;
        owl:someValuesFrom ssn:System
    ], [
        a owl:Restriction ;
        owl:onProperty fiestapriv:controls ;
        owl:someValuesFrom sosa:Observation
    ], [
        a owl:Restriction ;
        owl:onProperty fiestapriv:controls ;
        owl:someValuesFrom sosa:Actuation
    ], [
        a owl:Restriction ;
        owl:onProperty fiestapriv:controls ;
        owl:someValuesFrom iotlite:Service
    ] ;
    a owl:ObjectProperty ;
    rdfs:comment "This property identies who controls what." ;
    rdfs:domain gdprtext:Controller ;
    rdfs:label "controls" .

fiestapriv:givesConsent
    a owl:ObjectProperty ;
    rdfs:comment "This property identifies who is has given the consent to certain permission." ;
    rdfs:domain consent:ConsentingParty ;
    rdfs:label "gives consent" ;
    rdfs:range [
        a owl:Restriction ;
        owl:onProperty fiestapriv:givesConsent ;
        owl:someValuesFrom consent:Consent
    ] .

fiestapriv:hasDirection
    a owl:ObjectProperty ;
    rdfs:comment "The observations made by the sensors are affected by the direction of the sensing device. This property allows observations of the sensor to be associated to the Direction concept." ;
    rdfs:domain sosa:Result ;
    rdfs:label "has Direction" ;
    rdfs:range [
        a owl:Restriction ;
        owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onClass iottaxolite:Direction ;
        owl:onProperty fiestapriv:hasDirection
    ] .

fiestapriv:hasDomainOfInterest
    schema:domainIncludes sosa:Actuator, sosa:Sensor ;
    a owl:ObjectProperty ;
    rdfs:comment "This property is used to classify devices by DomainOfInterest (e.g., blood pressure sensor is used in healthcare)." ;
    rdfs:label "has Domain Of Interest"@en ;
    rdfs:range [
        a owl:Restriction ;
        owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onClass iottaxolite:DomainOfInterest ;
        owl:onProperty fiestapriv:hasDomainOfInterest
    ] .

fiestapriv:hasMeasurementType
    a owl:ObjectProperty ;
    rdfs:comment "Each sensing device can have a different sensing mechanism which may result in different kinds of sensor data. This property links observation of the sensor to the associated MeasurementType."@en ;
    rdfs:domain sosa:Result ;
    rdfs:label "has Measurement Type"@en ;
    rdfs:range [
        a owl:Restriction ;
        owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onClass iottaxolite:MeasurementType ;
        owl:onProperty fiestapriv:hasMeasurementType
    ] .

fiestapriv:hasPermission
    a owl:ObjectProperty ;
    rdfs:comment "This property identifies who has permissions to access certain data"@en ;
    rdfs:domain consent:AllowedParty ;
    rdfs:label "has Permission"@en ;
    rdfs:range [
        a owl:Restriction ;
        owl:onProperty fiestapriv:hasPermission ;
        owl:someValuesFrom consent:Permission
    ] .

fiestapriv:hasSoundSource
    a owl:ObjectProperty ;
    rdfs:comment "This property links sound to its environmental source."@en ;
    rdfs:label "has Sound Source"@en ;
    rdfs:subPropertyOf fiestapriv:hasSource .

fiestapriv:hasSource
    a owl:ObjectProperty ;
    rdfs:comment "This property links sensed phenomena to its environmental source."@en ;
    rdfs:domain sosa:Result ;
    rdfs:label "has Source"@en ;
    rdfs:range [
        a owl:Restriction ;
        owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onClass iottaxolite:Source ;
        owl:onProperty fiestapriv:hasSource
    ] .

fiestapriv:ownedBy
    schema:domainIncludes iotlite:Service, sosa:Actuation, sosa:Observation, ssn:System ;
    a owl:ObjectProperty ;
    rdfs:comment "This property identifies the resources or observations are owned by whom"@en ;
    rdfs:label "owned By"@en ;
    rdfs:range [
        a owl:Restriction ;
        owl:onClass consent:ConsentingParty ;
        owl:onProperty fiestapriv:ownedBy ;
        owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
    ] ;
    owl:inverseOf fiestapriv:owns .

fiestapriv:owns
    schema:rangeIncludes [
        a owl:Restriction ;
        owl:onProperty fiestapriv:owns ;
        owl:someValuesFrom sosa:Observation
    ], [
        a owl:Restriction ;
        owl:onProperty fiestapriv:owns ;
        owl:someValuesFrom sosa:Actuation
    ], [
        a owl:Restriction ;
        owl:onProperty fiestapriv:owns ;
        owl:someValuesFrom iotlite:Service
    ], [
        a owl:Restriction ;
        owl:onProperty fiestapriv:owns ;
        owl:someValuesFrom ssn:System
    ] ;
    a owl:ObjectProperty ;
    rdfs:comment "This property identifies who own the resources or observations"@en ;
    rdfs:domain consent:ConsentingParty ;
    rdfs:label "owns"@en .

vann:preferredNamespacePrefix
    a owl:AnnotationProperty .

vann:preferredNamespaceUri
    a owl:AnnotationProperty .

schema:domainIncludes
    a owl:AnnotationProperty .

schema:maxValue
    schema:rangeIncludes xsd:double, xsd:int ;
    a owl:AnnotationProperty ;
    rdfs:domain ssnsystems:SystemProperty .

schema:minValue
    schema:rangeIncludes xsd:double, xsd:int ;
    a owl:AnnotationProperty ;
    rdfs:domain ssnsystems:SystemProperty .

schema:rangeIncludes
    a owl:AnnotationProperty .

dul:hasDataValue
    schema:domainIncludes consent:Permission, consent:Purpose, iottaxolite:Direction, sosa:Result, ssnsystems:SystemProperty ;
    schema:rangeIncludes xsd:boolean, xsd:dateTime, xsd:double, xsd:int, xsd:string ;
    a owl:DatatypeProperty ;
    rdfs:comment " A datatype property that encodes values from a datatype for an Entity. There are several ways to encode values in DOLCE (Ultralite): 1) Directly assert an xsd:_ value to an Entity by using hasDataValue 2) Assert a Region for an Entity by using hasRegion, and then assert an xsd:_ value to that Region, by using hasRegionDataValue 3) Assert a Quality for an Entity by using hasQuality, then assert a Region for that Quality, and assert an xsd:_ value to that Region, by using hasRegionDataValue 4) When the value is required, but not directly observed, assert a Parameter for an xsd:_ value by using hasParameterDataValue, and then associate the Parameter to an Entity by using isConstraintFor 5) When the value is required, but not directly observed, you can also assert a Parameter for a Region by using parametrizes, and then assert an xsd:_ value to that Region, by using hasRegionDataValue The five approaches obey different requirements. For example, a simple value can be easily asserted by using pattern (1), but if one needs to assert an interval between two values, a Region should be introduced to materialize that interval, as pattern (2) suggests. Furthermore, if one needs to distinguish the individual Quality of a value, e.g. the particular nature of the density of a substance, pattern (3) can be used. Patterns (4) and (5) should be used instead when a constraint or a selection is modelled, independently from the actual observation of values in the real world. " ;
    rdfs:label "Has Data Value"@en .

geo:Point
    a owl:Class ;
    rdfs:comment """A point, typically described using a coordinate system relative to Earth, such as WGS84.
        Uniquely identified by lat/long/alt. i.e. spaciallyIntersects(P1, P2) :- lat(P1, LAT), long(P1, LONG), alt(P1, ALT), lat(P2, LAT), long(P2, LONG), alt(P2, ALT). sameThing(P1, P2) :- type(P1, Point), type(P2, Point), spaciallyIntersects(P1, P2).
        """ ;
    rdfs:label "point" ;
    rdfs:subClassOf geo:SpatialThing .

geo:SpatialThing
    a owl:Class ;
    rdfs:comment """Anything with spatial extent, i.e. size, shape, or position.
        e.g. people, places, bowling balls, as well as abstract areas like cubes.
        """ ;
    rdfs:label "SpatialThing" .

geo:alt
    a owl:DatatypeProperty ;
    rdfs:comment """The WGS84 altitude of a SpatialThing (decimal meters 
        above the local reference ellipsoid).""" ;
    rdfs:domain geo:SpatialThing ;
    rdfs:label "altitude" ;
    rdfs:range xsd:double .

geo:lat
    a owl:DatatypeProperty ;
    rdfs:comment "The WGS84 latitude of a SpatialThing (decimal degrees)." ;
    rdfs:domain geo:SpatialThing ;
    rdfs:label "latitude" ;
    rdfs:range xsd:double .

geo:location
    schema:domainIncludes sosa:Actuation, sosa:FeatureOfInterest, sosa:Observation, sosa:Platform ;
    a owl:ObjectProperty ;
    rdfs:comment """
            The relation between something and the point, 
            or other geometrical thing in space, where it is.  For example, the realtionship between
            a radio tower and a Point with a given lat and long.
            Or a relationship between a park and its outline as a closed arc of points, or a road and
            its location as a arc (a sequence of points).
            Clearly in practice there will be limit to the accuracy of any such statement, but one would expect
            an accuracy appropriate for the size of the object and uses such as mapping.
        """@en ;
    rdfs:label "location" ;
    rdfs:range [
        a owl:Restriction ;
        owl:onClass geo:SpatialThing ;
        owl:onProperty geo:location ;
        owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
    ] .

geo:long
    a owl:DatatypeProperty ;
    rdfs:comment "The WGS84 longitude of a SpatialThing (decimal degrees)." ;
    rdfs:domain geo:SpatialThing ;
    rdfs:label "longitude" ;
    rdfs:range xsd:double .

skos:definition
    a owl:AnnotationProperty .

skos:example
    a owl:AnnotationProperty .

skos:note
    a owl:AnnotationProperty .

sosa:ActuatableProperty
    a owl:Class ;
    rdfs:comment "An actuatable quality (property, characteristic) of a FeatureOfInterest."@en ;
    rdfs:isDefinedBy <http://www.w3.org/ns/sosa/> ;
    rdfs:label "Actuatable Property"@en ;
    rdfs:subClassOf ssn:Property ;
    skos:example "A window actuator acts by changing the state between a frame and a window. The ability of the window to be opened and closed is its ActuatableProperty."@en .

sosa:Actuation
    a owl:Class ;
    rdfs:comment "An Actuation carries out an (Actuation) Procedure to change the state of the world using an Actuator."@en ;
    rdfs:isDefinedBy <http://www.w3.org/ns/sosa/> ;
    rdfs:label "Actuation"@en ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:allValuesFrom sosa:FeatureOfInterest ;
        owl:onProperty sosa:hasFeatureOfInterest
    ], [
        a owl:Restriction ;
        owl:minCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty sosa:actsOnProperty
    ], [
        a owl:Restriction ;
        owl:allValuesFrom sosa:Actuator ;
        owl:onProperty sosa:madeByActuator
    ], [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty sosa:hasFeatureOfInterest
    ], [
        a owl:Restriction ;
        owl:allValuesFrom sosa:ActuatableProperty ;
        owl:onProperty sosa:actsOnProperty
    ], [
        a owl:Restriction ;
        owl:allValuesFrom sosa:Result ;
        owl:onProperty sosa:hasResult
    ], [
        a owl:Restriction ;
        owl:minCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty sosa:hasResult
    ], [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty sosa:resultTime
    ], [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty sosa:madeByActuator
    ] ;
    skos:example "The activity of automatically closing a window if the temperature in a room drops below 20 degree Celsius. The activity is the Actuation and the device that closes the window is the Actuator. The Procedure is the rule, plan, or specification that defines the conditions that triggers the Actuation, here a drop in temperature. "@en .

sosa:Actuator
    a owl:Class ;
    rdfs:comment "A device that is used by, or implements, an (Actuation) Procedure that changes the state of the world."@en ;
    rdfs:isDefinedBy <http://www.w3.org/ns/sosa/> ;
    rdfs:label "Actuator"@en ;
    rdfs:subClassOf ssn:System, [
        a owl:Restriction ;
        owl:allValuesFrom sosa:ActuatableProperty ;
        owl:onProperty ssn:forProperty
    ], [
        a owl:Restriction ;
        owl:allValuesFrom sosa:Actuation ;
        owl:onProperty sosa:madeActuation
    ] ;
    skos:example "A window actuator for automatic window control, i.e., opening or closing the window."@en .

sosa:FeatureOfInterest
    a owl:Class ;
    rdfs:comment "The thing whose property is being estimated or calculated in the course of an Observation to arrive at a Result or whose property is being manipulated by an Actuator, or which is being sampled or transformed in an act of Sampling."@en ;
    rdfs:isDefinedBy <http://www.w3.org/ns/sosa/> ;
    rdfs:label "Feature Of Interest"@en ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:minCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty ssn:hasProperty
    ], [
        a owl:Restriction ;
        owl:allValuesFrom ssn:Property ;
        owl:onProperty ssn:hasProperty
    ] ;
    skos:example "When measuring the height of a tree, the height is the observed ObservableProperty, 20m may be the Result of the Observation, and the tree is the FeatureOfInterest. A window is a FeatureOfInterest for an automatic window control Actuator."@en .

sosa:ObservableProperty
    a owl:Class ;
    rdfs:comment "An observable quality (property, characteristic) of a FeatureOfInterest."@en ;
    rdfs:isDefinedBy <http://www.w3.org/ns/sosa/> ;
    rdfs:label "Observable Property"@en ;
    rdfs:subClassOf ssn:Property, [
        a owl:Restriction ;
        owl:allValuesFrom sosa:Observation ;
        owl:onProperty [
            owl:inverseOf sosa:observedProperty
        ]
    ], [
        a owl:Restriction ;
        owl:allValuesFrom sosa:Sensor ;
        owl:onProperty sosa:isObservedBy
    ] ;
    skos:example "The height of a tree, the depth of a water body, or the temperature of a surface are examples of observable properties, while the value of a classic car is not (directly) observable but asserted."@en .

sosa:Observation
    a owl:Class ;
    rdfs:comment "Act of carrying out an (Observation) Procedure to estimate or calculate a value of a property of a FeatureOfInterest. Links to a Sensor to describe what made the Observation and how; links to an ObservableProperty to describe what the result is an estimate of, and to a FeatureOfInterest to detail what that property was associated with."@en ;
    rdfs:isDefinedBy <http://www.w3.org/ns/sosa/> ;
    rdfs:label "Observation"@en ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty sosa:observedProperty
    ], [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty sosa:madeBySensor
    ], [
        a owl:Restriction ;
        owl:cardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty sosa:hasFeatureOfInterest
    ], [
        a owl:Restriction ;
        owl:allValuesFrom sosa:ObservableProperty ;
        owl:onProperty sosa:observedProperty
    ], [
        a owl:Restriction ;
        owl:allValuesFrom sosa:FeatureOfInterest ;
        owl:onProperty sosa:hasFeatureOfInterest
    ], [
        a owl:Restriction ;
        owl:allValuesFrom sosa:Result ;
        owl:onProperty sosa:hasResult
    ], [
        a owl:Restriction ;
        owl:allValuesFrom sosa:Sensor ;
        owl:onProperty sosa:madeBySensor
    ] ;
    skos:example "The activity of estimating the intensity of an Earthquake using the Mercalli intensity scale is an Observation as is measuring the moment magnitude, i.e., the energy released by said earthquake."@en .

sosa:Platform
    a owl:Class ;
    rdfs:comment "A Platform is an entity that hosts other entities, particularly Sensors, Actuators, Samplers, and other Platforms."@en ;
    rdfs:isDefinedBy <http://www.w3.org/ns/sosa/> ;
    rdfs:label "Platform"@en ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:allValuesFrom ssn:System ;
        owl:onProperty sosa:hosts
    ] ;
    skos:example "A post, buoy, vehicle, ship, aircraft, satellite, cell-phone, human or animal may act as platforms for (technical or biological) sensors or actuators."@en .

sosa:Result
    a owl:Class ;
    rdfs:comment "The Result of an Observation, Actuation, or act of Sampling. To store an observation's simple result value one can use the hasSimpleResult property."@en ;
    rdfs:isDefinedBy <http://www.w3.org/ns/sosa/> ;
    rdfs:label "Result"@en ;
    skos:example "The value 20 as the height of a certain tree together with the unit, e.g., Meter."@en .

sosa:Sensor
    a owl:Class ;
    rdfs:comment "Device, agent (including humans), or software (simulation) involved in, or implementing, a Procedure. Sensors respond to a stimulus, e.g., a change in the environment, or input data composed from the results of prior Observations, and generate a Result. Sensors can be hosted by Platforms."@en ;
    rdfs:isDefinedBy <http://www.w3.org/ns/sosa/> ;
    rdfs:label "Sensor"@en ;
    rdfs:subClassOf ssn:System, [
        a owl:Restriction ;
        owl:allValuesFrom sosa:ObservableProperty ;
        owl:onProperty sosa:observes
    ], [
        a owl:Restriction ;
        owl:allValuesFrom sosa:Observation ;
        owl:onProperty sosa:madeObservation
    ] ;
    skos:example "Accelerometers, gyroscopes, barometers, magnetometers, and so forth are Sensors that are typically mounted on a modern smart phone (which acts as Platform). Other examples of sensors include the human eyes."@en .

sosa:actsOnProperty
    a owl:ObjectProperty ;
    rdfs:comment "Relation between an Actuation and the property of a FeatureOfInterest it is acting upon."@en ;
    rdfs:domain sosa:Actuation ;
    rdfs:isDefinedBy <http://www.w3.org/ns/sosa/> ;
    rdfs:label "acts on property"@en ;
    rdfs:range [
        a owl:Restriction ;
        owl:onClass sosa:ActuatableProperty ;
        owl:onProperty sosa:actsOnProperty ;
        owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
    ] ;
    skos:example "In the activity (Actuation) of automatically closing a window if the temperature in a room drops below 20 degrees Celsius, the property on which the Actuator acts upon is the state of the window as it changes from being open to being closed. "@en .

sosa:hasFeatureOfInterest
    schema:domainIncludes iotlite:Service, sosa:Actuation, sosa:Observation ;
    a owl:ObjectProperty ;
    rdfs:comment "A relation between an Observation and the entity whose quality was observed, or between an Actuation and the entity whose property was modified, or between an act of Sampling and the entity that was sampled."@en ;
    rdfs:isDefinedBy <http://www.w3.org/ns/sosa/> ;
    rdfs:label "has feature of interest"@en ;
    rdfs:range [
        a owl:Restriction ;
        owl:onProperty sosa:hasFeatureOfInterest ;
        owl:someValuesFrom sosa:FeatureOfInterest
    ] ;
    owl:inverseOf iotlite:isAssociatedWith ;
    skos:example "For example, in an Observation of the weight of a person, the FeatureOfInterest is the person and the property is its weight."@en .

sosa:hasResult
    schema:domainIncludes sosa:Actuation, sosa:Observation ;
    a owl:ObjectProperty ;
    rdfs:comment "Relation linking an Observation or Actuation or act of Sampling and a Result or Sample."@en ;
    rdfs:isDefinedBy <http://www.w3.org/ns/sosa/> ;
    rdfs:label "has result"@en ;
    rdfs:range [
        a owl:Restriction ;
        owl:onClass sosa:Result ;
        owl:onProperty sosa:hasResult ;
        owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
    ] .

sosa:hosts
    a owl:ObjectProperty ;
    rdfs:comment "Relation between a Platform and a Sensor, Actuator, Sampler, or Platform, hosted or mounted on it."@en ;
    rdfs:domain sosa:Platform ;
    rdfs:isDefinedBy <http://www.w3.org/ns/sosa/> ;
    rdfs:label "hosts"@en ;
    rdfs:range [
        a owl:Restriction ;
        owl:onProperty sosa:hosts ;
        owl:someValuesFrom ssn:System
    ] ;
    owl:inverseOf sosa:isHostedBy .

sosa:isHostedBy
    a owl:ObjectProperty ;
    rdfs:comment "Relation between a Sensor, Actuator, Sampler, or Platform, and the Platform that it is mounted on or hosted by."@en ;
    rdfs:domain ssn:System ;
    rdfs:isDefinedBy <http://www.w3.org/ns/sosa/> ;
    rdfs:label "is hosted by"@en ;
    rdfs:range [
        a owl:Restriction ;
        owl:onClass sosa:Platform ;
        owl:onProperty sosa:isHostedBy ;
        owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
    ] .

sosa:isObservedBy
    a owl:ObjectProperty ;
    rdfs:comment "Relation between an ObservableProperty and the Sensor able to observe it."@en ;
    rdfs:domain sosa:ObservableProperty ;
    rdfs:isDefinedBy <http://www.w3.org/ns/sosa/> ;
    rdfs:label "is observed by"@en ;
    rdfs:range [
        a owl:Restriction ;
        owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onClass sosa:Sensor ;
        owl:onProperty sosa:isObservedBy
    ] ;
    owl:inverseOf sosa:observes .

sosa:madeActuation
    a owl:ObjectProperty ;
    rdfs:comment "Relation between an Actuator and the Actuation it has made."@en ;
    rdfs:domain sosa:Actuator ;
    rdfs:isDefinedBy <http://www.w3.org/ns/sosa/> ;
    rdfs:label "made actuation"@en ;
    rdfs:range [
        a owl:Restriction ;
        owl:onProperty sosa:madeActuation ;
        owl:someValuesFrom sosa:Actuation
    ] ;
    owl:inverseOf sosa:madeByActuator .

sosa:madeByActuator
    a owl:ObjectProperty ;
    rdfs:comment "Relation linking an Actuation to the Actuator that made that Actuation."@en ;
    rdfs:domain sosa:Actuation ;
    rdfs:isDefinedBy <http://www.w3.org/ns/sosa/> ;
    rdfs:label "made by actuator"@en ;
    rdfs:range [
        a owl:Restriction ;
        owl:onClass sosa:Actuator ;
        owl:onProperty sosa:madeByActuator ;
        owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
    ] .

sosa:madeBySensor
    a owl:ObjectProperty ;
    rdfs:comment "Relation between an Observation and the Sensor which made the Observation."@en ;
    rdfs:domain sosa:Observation ;
    rdfs:isDefinedBy <http://www.w3.org/ns/sosa/> ;
    rdfs:label "made by sensor"@en ;
    rdfs:range [
        a owl:Restriction ;
        owl:onClass sosa:Sensor ;
        owl:onProperty sosa:madeBySensor ;
        owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
    ] ;
    owl:inverseOf sosa:madeObservation .

sosa:madeObservation
    a owl:ObjectProperty ;
    rdfs:comment "Relation between a Sensor and an Observation made by the Sensor."@en ;
    rdfs:domain sosa:Sensor ;
    rdfs:isDefinedBy <http://www.w3.org/ns/sosa/> ;
    rdfs:label "made observation"@en ;
    rdfs:range [
        a owl:Restriction ;
        owl:onProperty sosa:madeObservation ;
        owl:someValuesFrom sosa:Observation
    ] .

sosa:observedProperty
    a owl:ObjectProperty ;
    rdfs:comment "Relation linking an Observation to the property that was observed. The ObservableProperty should be a property of the FeatureOfInterest (linked by hasFeatureOfInterest) of this Observation."@en ;
    rdfs:domain sosa:Observation ;
    rdfs:isDefinedBy <http://www.w3.org/ns/sosa/> ;
    rdfs:label "observed property"@en ;
    rdfs:range [
        a owl:Restriction ;
        owl:onClass sosa:ObservableProperty ;
        owl:onProperty sosa:observedProperty ;
        owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
    ] .

sosa:observes
    a owl:ObjectProperty ;
    rdfs:comment "Relation between a Sensor and an ObservableProperty that it is capable of sensing."@en ;
    rdfs:domain sosa:Sensor ;
    rdfs:isDefinedBy <http://www.w3.org/ns/sosa/> ;
    rdfs:label "observes"@en ;
    rdfs:range [
        a owl:Restriction ;
        owl:onClass sosa:ObservableProperty ;
        owl:onProperty sosa:observes ;
        owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
    ] .

sosa:resultTime
    schema:domainIncludes sosa:Actuation, sosa:Observation ;
    a owl:DatatypeProperty ;
    rdfs:comment "The result time is the instant of time when the Observation, Actuation or Sampling activity was completed."@en ;
    rdfs:isDefinedBy <http://www.w3.org/ns/sosa/> ;
    rdfs:label "result time"@en ;
    rdfs:range xsd:dateTime .

ssn:Deployment
    a owl:Class ;
    rdfs:comment "Describes the Deployment of one or more Systems for a particular purpose. Deployment may be done on a Platform."@en ;
    rdfs:isDefinedBy <http://www.w3.org/ns/ssn/> ;
    rdfs:label "Deployment"@en ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:allValuesFrom ssn:Property ;
        owl:onProperty ssn:forProperty
    ] ;
    skos:example "For example, a temperature Sensor deployed on a wall, or a whole network of Sensors deployed for an Observation campaign."@en .

ssn:Property
    a owl:Class ;
    rdfs:comment "A quality of an entity. An aspect of an entity that is intrinsic to and cannot exist without the entity."@en ;
    rdfs:isDefinedBy <http://www.w3.org/ns/ssn/> ;
    rdfs:label "Property"@en ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:allValuesFrom sosa:FeatureOfInterest ;
        owl:onProperty ssn:isPropertyOf
    ] .

ssn:System
    a owl:Class ;
    rdfs:comment "System is a unit of abstraction for pieces of infrastructure that implement Procedures. A System may have components, its subsystems, which are other systems."@en ;
    rdfs:isDefinedBy <http://www.w3.org/ns/ssn/> ;
    rdfs:label "System"@en ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:allValuesFrom ssn:System ;
        owl:onProperty [
            owl:inverseOf ssn:hasSubSystem
        ]
    ], [
        a owl:Restriction ;
        owl:allValuesFrom ssnsystems:SystemCapability ;
        owl:onProperty ssnsystems:hasSystemCapability
    ], [
        a owl:Restriction ;
        owl:allValuesFrom ssn:System ;
        owl:onProperty ssn:hasSubSystem
    ], [
        a owl:Restriction ;
        owl:allValuesFrom ssn:Deployment ;
        owl:onProperty ssn:hasDeployment
    ], [
        a owl:Restriction ;
        owl:allValuesFrom sosa:Platform ;
        owl:onProperty sosa:isHostedBy
    ] .

ssn:forProperty
    a owl:ObjectProperty ;
    rdfs:comment "A relation between some aspect of an entity and a Property."@en ;
    rdfs:domain sosa:Actuator ;
    rdfs:isDefinedBy <http://www.w3.org/ns/ssn/> ;
    rdfs:label "for property"@en ;
    rdfs:range [
        a owl:Restriction ;
        owl:onClass sosa:ActuatableProperty ;
        owl:onProperty ssn:forProperty ;
        owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
    ] ;
    skos:example "For example, from a Sensor to the properties it can observe; from an Actuator to the properties it can act on; from a Deployment to the properties it was installed to observe or act on; from a SystemCapability to the Property the capability is described for."@en .

ssn:hasDeployment
    a owl:ObjectProperty ;
    rdfs:comment "Relation between a System and a Deployment, recording that the System is deployed in that Deployment."@en ;
    rdfs:domain ssn:System ;
    rdfs:isDefinedBy <http://www.w3.org/ns/ssn/> ;
    rdfs:label "has deployment"@en ;
    rdfs:range [
        a owl:Restriction ;
        owl:onClass ssn:Deployment ;
        owl:onProperty ssn:hasDeployment ;
        owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
    ] .

ssn:hasProperty
    schema:rangeIncludes [
        a owl:Restriction ;
        owl:onProperty ssn:hasProperty ;
        owl:someValuesFrom sosa:ObservableProperty
    ], [
        a owl:Restriction ;
        owl:onProperty ssn:hasProperty ;
        owl:someValuesFrom sosa:ActuatableProperty
    ] ;
    a owl:ObjectProperty ;
    rdfs:comment "Relation between an entity and a Property of that entity."@en ;
    rdfs:domain sosa:FeatureOfInterest ;
    rdfs:isDefinedBy <http://www.w3.org/ns/ssn/> ;
    rdfs:label "has property"@en ;
    owl:inverseOf ssn:isPropertyOf .

ssn:hasSubSystem
    a owl:ObjectProperty ;
    rdfs:comment "Relation between a System and its component parts."@en ;
    rdfs:domain ssn:System ;
    rdfs:isDefinedBy <http://www.w3.org/ns/ssn/> ;
    rdfs:label "has subsystem"@en ;
    rdfs:range [
        a owl:Restriction ;
        owl:onProperty ssn:hasSubSystem ;
        owl:someValuesFrom ssnsystems:SystemProperty
    ] .

ssn:isPropertyOf
    schema:domainIncludes sosa:ActuatableProperty, sosa:ObservableProperty ;
    a owl:ObjectProperty ;
    rdfs:comment "Relation between a Property and the entity it belongs to."@en ;
    rdfs:isDefinedBy <http://www.w3.org/ns/ssn/> ;
    rdfs:label "is property of"@en ;
    rdfs:range [
        a owl:Restriction ;
        owl:onProperty ssn:isPropertyOf ;
        owl:someValuesFrom sosa:FeatureOfInterest
    ] .

ssnsystems:Accuracy
    a owl:Class ;
    rdfs:comment "The closeness of agreement between the Result of an Observation (resp. the command of an Actuation) and the true value of the observed ObservableProperty (resp. of the acted on ActuatableProperty) under the defined Conditions."@en ;
    rdfs:isDefinedBy <http://www.w3.org/ns/ssn/systems/> ;
    rdfs:label "Accuracy"@en ;
    rdfs:subClassOf ssnsystems:SystemProperty .

ssnsystems:DetectionLimit
    a owl:Class ;
    rdfs:comment "An observed value for which the probability of falsely claiming the absence of a component in a material is beta, given a probability alpha of falsely claiming its presence."@en ;
    rdfs:isDefinedBy <http://www.w3.org/ns/ssn/systems/> ;
    rdfs:label "Detection Limit"@en ;
    rdfs:subClassOf ssnsystems:SystemProperty, [
        a owl:Restriction ;
        owl:allValuesFrom [
            a owl:Restriction ;
            owl:allValuesFrom sosa:Sensor ;
            owl:onProperty [
                owl:inverseOf ssnsystems:hasSystemCapability
            ]
        ] ;
        owl:onProperty [
            owl:inverseOf ssnsystems:hasSystemProperty
        ]
    ] .

ssnsystems:Drift
    a owl:Class ;
    rdfs:comment """As a Sensor Property: a continuous or incremental change in the reported values of Observations over time for an unchanging Property under the defined Conditions. 

      As an Actuator Property: a continuous or incremental change in the true value of the acted on ActuatableProperty over time for an unchanging command under the defined Conditions."""@en ;
    rdfs:isDefinedBy <http://www.w3.org/ns/ssn/systems/> ;
    rdfs:label "Drift"@en ;
    rdfs:subClassOf ssnsystems:SystemProperty .

ssnsystems:Frequency
    a owl:Class ;
    rdfs:comment "The smallest possible time between one Observation, Actuation, or Sampling and the next, under the defined Conditions."@en ;
    rdfs:isDefinedBy <http://www.w3.org/ns/ssn/systems/> ;
    rdfs:label "Frequency"@en ;
    rdfs:subClassOf ssnsystems:SystemProperty .

ssnsystems:Latency
    a owl:Class ;
    rdfs:comment "The time between a command for an Observation (resp. Actuation) and the Sensor providing a Result (resp. the Actuator operating the Actuation), under the defined Conditions."@en ;
    rdfs:isDefinedBy <http://www.w3.org/ns/ssn/systems/> ;
    rdfs:label "Latency"@en ;
    rdfs:subClassOf ssnsystems:SystemProperty .

ssnsystems:MeasurementRange
    a owl:Class ;
    rdfs:comment "The set of values that the Sensor can return as the Result of an Observation under the defined Conditions."@en ;
    rdfs:isDefinedBy <http://www.w3.org/ns/ssn/systems/> ;
    rdfs:label "Measurement Range"@en ;
    rdfs:subClassOf ssnsystems:SystemProperty, [
        a owl:Restriction ;
        owl:allValuesFrom [
            a owl:Restriction ;
            owl:allValuesFrom sosa:Sensor ;
            owl:onProperty [
                owl:inverseOf ssnsystems:hasSystemCapability
            ]
        ] ;
        owl:onProperty [
            owl:inverseOf ssnsystems:hasSystemProperty
        ]
    ] .

ssnsystems:Precision
    a owl:Class ;
    rdfs:comment """As a Sensor Property: the closeness of agreement between replicate Observations on an unchanged or similar Property value: i.e., a measure of a Sensor's ability to consistently reproduce an Observation, under the defined Conditions.

      As an Actuator Property: the closeness of agreement between replicate Actuations for an unchanged or similar command: i.e., a measure of an Actuator's ability to consistently reproduce an Actuation, under the defined Conditions."""@en ;
    rdfs:isDefinedBy <http://www.w3.org/ns/ssn/systems/> ;
    rdfs:label "Precision"@en ;
    rdfs:subClassOf ssnsystems:SystemProperty .

ssnsystems:Resolution
    a owl:Class ;
    rdfs:comment """As a Sensor Property: the smallest difference in the value of a ObservableProperty being observed that would result in perceptably different values of Observation Results, under the defined Conditions. 

      As an Actuator Property: the smallest difference in the value of an Actuation command that would result in a value change of the ActuatableProperty being acted on, under the defined Conditions."""@en ;
    rdfs:isDefinedBy <http://www.w3.org/ns/ssn/systems/> ;
    rdfs:label "Resolution"@en ;
    rdfs:subClassOf ssnsystems:SystemProperty .

ssnsystems:ResponseTime
    a owl:Class ;
    rdfs:comment """As a Sensor Property: the time between a (step) change in the value of an observed ObservableProperty and a Sensor (possibly with specified error) 'settling' on an observed value, under the defined Conditions.

      As an Actuator property: the time between a (step) change in the command of an Actuator and the 'settling' of the value of the acted on ActuatableProperty, under the defined Conditions."""@en ;
    rdfs:isDefinedBy <http://www.w3.org/ns/ssn/systems/> ;
    rdfs:label "Response Time"@en ;
    rdfs:subClassOf ssnsystems:SystemProperty .

ssnsystems:Selectivity
    a owl:Class ;
    rdfs:comment """As a Sensor Property: Selectivity is a Property of a Sensor whereby it provides observed values for one or more ObservableProperties such that the Results for each ObservableProperty are independent of other Properties in the FeatureOfInterest being investigated,  under the defined Conditions.

      As an Actuator Property: Selectivity is a Property of an Actuator whereby it acts on one or more ActuatableProperties such as the Results for each ActuatableProperty are independent of other Properties in the FeatureOfInterest being acted on, under the defined Conditions."""@en ;
    rdfs:isDefinedBy <http://www.w3.org/ns/ssn/systems/> ;
    rdfs:label "Selectivity"@en ;
    rdfs:subClassOf ssnsystems:SystemProperty .

ssnsystems:Sensitivity
    a owl:Class ;
    rdfs:comment """As a Sensor Property: Sensitivity is the quotient of the change in a Result of Observation and the corresponding change in a value of an ObservableProperty being observed, under the defined Conditions.

       As an Actuator Property: Sensitivity is the quotient of the change in a command of Actuation and the corresponding change in a value of an ActuatableProperty being acted on, under the defined Conditions."""@en ;
    rdfs:isDefinedBy <http://www.w3.org/ns/ssn/systems/> ;
    rdfs:label "Sensitivity"@en ;
    rdfs:subClassOf ssnsystems:SystemProperty .

ssnsystems:SystemCapability
    a owl:Class ;
    rdfs:comment """Describes normal measurement, actuation, sampling properties such as accuracy, range, precision, etc. of a System under some specified Conditions such as a temperature range.

    The capabilities specified here are those that affect the primary purpose of the System, while those in OperatingRange represent the system's normal operating environment, including conditions that don't affect the observations or the actuations."""@en ;
    rdfs:isDefinedBy <http://www.w3.org/ns/ssn/systems/> ;
    rdfs:label "System Capability"@en ;
    rdfs:subClassOf ssn:Property, [
        a owl:Restriction ;
        owl:allValuesFrom ssn:System ;
        owl:onProperty [
            owl:inverseOf ssnsystems:hasSystemCapability
        ]
    ], [
        a owl:Restriction ;
        owl:allValuesFrom ssnsystems:SystemProperty ;
        owl:onProperty ssnsystems:hasSystemProperty
    ], [
        a owl:Restriction ;
        owl:allValuesFrom ssn:Property ;
        owl:onProperty ssn:forProperty
    ] .

ssnsystems:SystemProperty
    a owl:Class ;
    rdfs:comment "An identifiable and observable characteristic that represents the System's ability to operate its primary purpose: a Sensor to make Observations, an Actuator to make Actuations, or a Sampler to make Samplings."@en ;
    rdfs:isDefinedBy <http://www.w3.org/ns/ssn/systems/> ;
    rdfs:label "System Property"@en ;
    rdfs:subClassOf ssn:Property, [
        a owl:Restriction ;
        owl:allValuesFrom ssnsystems:SystemCapability ;
        owl:onProperty [
            owl:inverseOf ssnsystems:hasSystemProperty
        ]
    ], [
        a owl:Restriction ;
        owl:minCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty [
            owl:inverseOf ssnsystems:hasSystemProperty
        ]
    ] .

ssnsystems:hasSystemCapability
    a owl:ObjectProperty ;
    rdfs:comment "Relation from a System to a SystemCapability describing the capabilities of the System under certain Conditions."@en ;
    rdfs:domain ssn:System ;
    rdfs:isDefinedBy <http://www.w3.org/ns/ssn/systems/> ;
    rdfs:label "has system capability"@en ;
    rdfs:range [
        a owl:Restriction ;
        owl:onProperty ssnsystems:hasSystemCapability ;
        owl:someValuesFrom ssnsystems:SystemCapability
    ] ;
    rdfs:subPropertyOf ssn:hasProperty .

ssnsystems:hasSystemProperty
    a owl:ObjectProperty ;
    rdfs:comment "Relation from an SystemCapability of a System to a SystemProperty describing the capabilities of the System."@en ;
    rdfs:domain ssnsystems:SystemCapability ;
    rdfs:isDefinedBy <http://www.w3.org/ns/ssn/systems/> ;
    rdfs:label "has system property"@en ;
    rdfs:range [
        a owl:Restriction ;
        owl:onProperty ssnsystems:hasSystemProperty ;
        owl:someValuesFrom ssnsystems:SystemProperty
    ] ;
    rdfs:subPropertyOf ssn:hasProperty .

ssnsystems:qualityOfObservation
    schema:domainIncludes sosa:Actuation, sosa:Observation ;
    a owl:ObjectProperty ;
    rdfs:comment "Relation linking an Observation to the adjudged quality of the Result. This is complimentary to the SystemCapability information recorded for the Sensor that made the Observation."@en ;
    rdfs:isDefinedBy <http://www.w3.org/ns/ssn/> ;
    rdfs:label "quality of observation"@en ;
    rdfs:range [
        a owl:Restriction ;
        owl:onProperty ssnsystems:qualityOfObservation ;
        owl:someValuesFrom iottaxolite:QualityOfObservation
    ] .

onemtom:Device
    a owl:Class ;
    rdfs:comment """
        A Device (Class: Device) is a object designed to accomplish a particular task. A Device contains some logic and is producer and/or consumer of data that are exchanged via its Services with other oneM2M entities (Devices, Things) in the network. A Device may be a physical or non-physical entity. In the context of oneM2M a Device is always assumed to be capable of communicating electronically via a network. - In order to accomplish its task, the device performs one or more functionalities - These functionalities are exposed in the network as Services of the Device. - A Device can be composed of several (sub-) Devices - Each Device (including sub-Devices) needs to be individually addressable in the network.
        """ ;
    rdfs:label "Device"@en ;
    owl:equivalentClass ssn:System .

onemtom:MetaData
    a owl:Class ;
    rdfs:comment """
        MetaData (Class: MetaData) contain data (like units, precision-ranges …) about a Variable or about an Aspect. E.g. the indoor temperature could have meta data: \"Degrees Celsius\"
        """ ;
    rdfs:label "MetaData"@en .

onemtom:OperationOutput
    a owl:Class ;
    rdfs:comment """
        OperationOutput (Class: OperationOutput) describes an output of an Operation. OperationOutput also describes the output of a Command. - An Operation/Command may have multiple OperationInputs and/or OperationOutputs
        """ ;
    rdfs:label "Operation Output"@en ;
    owl:equivalentClass sosa:Result .

onemtom:Service
    a owl:Class ;
    rdfs:comment """
        A Service (Class: Service) is a electronic representation of a Functionality in a network. The Service exposes the Functionality to the network and makes it discoverable, registerable and remotely controllable in the network. A Service is offered by a device that wants (a certain set of) its Functionalities to be discoverable, registerable, remotely controllable by other devices in the network. A Service can expose one or more Functionalities and a Functionality can be exposed by one or more Services. The Input- and Output DataPoints and Operations of a Service may have the same names as for a different Service, however the Service to which they belong differentiates how they are addressed in the Device (e.g. via a port specific to the Service). NOTE: While a Functionality describes the – human understandable – meaning of a Service of the device the Service is used to describe how such functionality is represented in a communication network and can be accessed by electronic means. The Service and its Operations is therefore dependent on the technology of the network, hard- and software of the device.
        """ ;
    rdfs:label "Service"@en ;
    owl:equivalentClass sosa:Observation .

onemtom:Thing
    a owl:Class ;
    rdfs:comment """
        A Thing in oneM2M (Class: Thing) is an entity that can be identified in the oneM2M System. A Thing that is not a Device is not able to communicate electronically with its environment. However, the sub-class of Thing that is able to interact electronically is called a \"Device\". A Thing may have ThingProperties (Object Property: hasThingProperty). A Thing can have relations to other things (Object Property: hasThingRelation). Since a Thing that is not a Device is not able to communicate electronically it cannot influence the value of its ThingProperties or being influenced by it. Similarly a Thing cannot document its - real-world - relationships (via hasThingRelation) to other Things. E.g. A room that is modelled in oneM2M would be a Thing that could have a room-temperature as a ThingProperty and could have a relationship \"isAdjacentTo\" to another room
        """ ;
    rdfs:label "Thing"@en ;
    owl:equivalentClass sosa:Sensor .

onemtom:ThingProperty
    a owl:Class ;
    rdfs:comment """
        A Value (Class: Value) denotes a property of a Thing. A Value can e.g. be observed or influenced by devices, or it constitutes static data about a Thing. E.g. the indoor temperature of the room could be a Value of a Thing \"room\". A Value of a thing can concern a certain Aspect, e.g. the indoor temperature concerns the Aspect \"Temperature\" that could be measured by a temperature sensor. A Value of a Thing can have meta data
        """ ;
    rdfs:label "Thing Property"@en .

onemtom:hasMetaData
    a owl:ObjectProperty ;
    rdfs:comment """
        A Value of a Thing can have MetaData (like units, precision-ranges).
        """ ;
    rdfs:label "Has MetaData" ;
    owl:equivalentProperty iotlite:hasUnit .

onemtom:hasService
    a owl:ObjectProperty ;
    rdfs:comment """
        The Functionalities of a Device are exposed in the network as Services of the Device
        """ ;
    rdfs:label "Has Service" ;
    owl:equivalentProperty sosa:madeObservation .

onemtom:hasThingProperty
    a owl:ObjectProperty ;
    rdfs:comment """
        A Thing may have properties that can be described by Values
        """ ;
    rdfs:label "Has Thing Property" ;
    owl:equivalentProperty sosa:observes .

gdprtext:Controller
    a owl:Class ;
    rdfs:comment """
        The natural or legal person, public authority, agency or other body which, alone or jointly with others, determines the purposes and means of the processing of personal data.
        """@en ;
    rdfs:isDefinedBy <https://w3id.org/GDPRtEXT/gdpr#article28-10>, <https://w3id.org/GDPRtEXT/gdpr#article4-7>, <https://w3id.org/GDPRtEXT/gdpr#article6-5> ;
    rdfs:label "Controller" .

