@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix : <http://www.w3id.org/laas-iot/edr#> .
@prefix schema: <http://schema.org/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix ns: <http://creativecommons.org/ns#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix shacl: <http://www.w3.org/ns/shacl#> .
@prefix lmu: <http://www.w3id.org/laas-iot/lmu#> .
@prefix terms: <http://purl.org/dc/terms/> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix vann: <http://purl.org/vocab/vann/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .

<http://www.w3id.org/laas-iot/edr>
    a owl:Ontology ;
    owl:imports <http://www.w3.org/ns/shacl#>, <http://www.w3.org/ns/ssn/>, <http://www.w3id.org/laas-iot/lmu/1.0.0> ;
    owl:versionIRI <http://www.w3id.org/laas-iot/edr/1.0.0> .

:AllChildrenAnnouncedProperty
    a owl:Class ;
    rdfs:comment "Property that will be proxied toward all children of the current node."@en ;
    rdfs:label "All children announced property"@en ;
    rdfs:subClassOf :ChildrenAnnouncedProperty .

:ChildrenAnnouncedProperty
    a owl:Class ;
    rdfs:comment "Property that will be proxied toward at least some children of the current node"@en ;
    rdfs:label "Children announced property"@en .

:ChildrenProxiedProperty
    a owl:Class ;
    rdfs:comment "Property that will be proxied toward at least some children of the current node"@en ;
    rdfs:label "Children announced property"@en .

:OutdatedUpdate
    a owl:Class ;
    rdfs:label "Outdated update"@en ;
    rdfs:subClassOf :Update .

:ParentAnnouncedProperty
    a owl:Class ;
    rdfs:comment "Property that will be proxied toward the parent of the current node"@en ;
    rdfs:label "Parent announced property"@en .

:ParentProxiedProperty
    a owl:Class ;
    rdfs:comment "Property that will be proxied toward the parent of the current node"@en ;
    rdfs:label "Parent announced property"@en .

:Schedule
    a owl:Class ;
    rdfs:label "Schedule"@en .

:SomeChildrenAnnouncedProperty
    a owl:Class ;
    rdfs:comment "Property that will be proxied toward some children of the current node, but not all of them. In this case, the children toward which the proxying is performed are specified with the edr:announceTo property."@en ;
    rdfs:label "Some children announced property"@en ;
    rdfs:subClassOf :ChildrenAnnouncedProperty .

:Update
    a owl:Class ;
    rdfs:label "Update"@en .

:appliesRule
    a owl:ObjectProperty ;
    rdfs:domain lmu:Node ;
    rdfs:label "applies rule"@en ;
    rdfs:range shacl:SPARQLRule .

:hasRuleHead
    a owl:ObjectProperty ;
    rdfs:domain shacl:SPARQLRule ;
    rdfs:label "has rule head"@en ;
    rdfs:subPropertyOf <http://www.w3.org/ns/ssn/hasInput> .

:hasRuleTail
    a owl:ObjectProperty ;
    rdfs:domain shacl:SPARQLRule ;
    rdfs:label "has rule body"@en ;
    rdfs:subPropertyOf <http://www.w3.org/ns/ssn/hasOutput> .

:isAbout
    a owl:ObjectProperty ;
    rdfs:domain :Update ;
    rdfs:label "is about"@en ;
    rdfs:range [
        a owl:Class ;
        owl:unionOf (<http://www.w3.org/ns/sosa/FeatureOfInterest>
            <http://www.w3.org/ns/ssn/Property>
        )
    ] .

:isInterestedIn
    a owl:ObjectProperty ;
    rdfs:domain lmu:Node ;
    rdfs:label "is interested in"@en ;
    rdfs:subClassOf :SomeChildrenAnnouncedProperty .

:isRuleActive
    a owl:DatatypeProperty ;
    rdfs:domain shacl:SPARQLRule ;
    rdfs:label "is rule active"@en ;
    rdfs:range xsd:boolean .

:producesDataOn
    a owl:ObjectProperty ;
    rdfs:domain lmu:Node ;
    rdfs:label "produces data on"@en ;
    rdfs:subClassOf :ParentAnnouncedProperty .

:sentAtInstant
    a :ObjectProperty ;
    rdfs:domain :Update ;
    rdfs:label "sent at instant" ;
    rdfs:range <http://www.w3.org/2006/time#Instant> .

:sentBy
    a owl:ObjectProperty ;
    rdfs:domain lmu:Node ;
    rdfs:label "sent by"@en ;
    rdfs:range :Update .

:sentTo
    a owl:ObjectProperty ;
    rdfs:domain :Update ;
    rdfs:label "sent to"@en ;
    rdfs:range lmu:Node .

