@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
@prefix vann: <http://purl.org/vocab/vann/> .
@prefix voaf: <http://purl.org/vocommons/voaf#> .
@prefix dul: <http://www.ontologydesignpatterns.org/ont/dul/DUL.owl#> .

@prefix sosa: <http://www.w3.org/ns/sosa/> .
@prefix ssn: <http://www.w3.org/ns/ssn/> .
@prefix old-ssn: <http://purl.oclc.org/NET/ssnx/ssn#> .
@prefix sr: <http://www.w3.org/ns/sosa/sampling/> .



<http://www.w3.org/ns/ssn/dul> rdf:type owl:Ontology ;
  owl:imports <http://www.ontologydesignpatterns.org/ont/dul/DUL.owl> ;
  owl:imports <http://www.w3.org/ns/sosa/sampling> .


## Features of interest and observable property

sosa:FeatureOfInterest
  rdfs:subClassOf dul:Entity ;
  rdfs:isDefinedBy sosa: .

ssn:Property 
  rdfs:subClassOf dul:Quality ;
  rdfs:isDefinedBy ssn: .

  ssn:hasProperty 
    rdfs:subPropertyOf dul:hasQuality ;
    rdfs:isDefinedBy ssn: .

  ssn:isPropertyOf 
    rdfs:subPropertyOf dul:isQualityOf ;
    rdfs:isDefinedBy ssn: .

sr:RelationshipNature
  rdfs:subClassOf dul:Concept ;
  rdfs:isDefinedBy sr: .

sr:SampleRelationship
  rdfs:subClassOf dul:Relation ;
  rdfs:isDefinedBy sr: .

## Platform

sosa:Platform
  rdfs:subClassOf dul:Object ;
  rdfs:isDefinedBy sosa: .

  sosa:hosts
    rdfs:subPropertyOf dul:isLocationOf ;
    rdfs:isDefinedBy sosa: .

sosa:isHostedBy
  rdfs:subPropertyOf dul:hasLocation ;
  rdfs:isDefinedBy sosa: .


## Procedures

sosa:Procedure
  rdfs:subClassOf dul:Method ;
  rdfs:isDefinedBy sosa: .


## ProcedureExecutors

ssn:implements
  rdfs:subPropertyOf dul:isDescribedBy ;
  rdfs:isDefinedBy ssn: .

ssn:implementedBy
  rdfs:subPropertyOf dul:describes ;
  rdfs:isDefinedBy ssn: .

sosa:Sensor
  rdfs:subClassOf dul:Object ;
  rdfs:isDefinedBy sosa: .


## ProcedureExecutions

sosa:usedProcedure
  rdfs:subPropertyOf dul:hasParticipant ;
  rdfs:isDefinedBy sosa: .

sosa:Observation
  rdfs:subClassOf dul:Event ;
  rdfs:isDefinedBy sosa: .

 [ owl:intersectionOf  ( 
    [ owl:complementOf old-ssn:Observation ]
    [
      rdf:type            owl:Restriction ;
      owl:onProperty      old-ssn:observationResult ;
      owl:someValuesFrom  owl:Thing
    ] ) ] rdfs:subClassOf sosa:Observation.

sosa:madeObservation
  rdfs:subPropertyOf dul:associatedWith ;
  rdfs:isDefinedBy sosa: .

sosa:madeBySensor
  rdfs:subPropertyOf dul:associatedWith ;
  rdfs:isDefinedBy sosa: .

sosa:observedProperty
  rdfs:subPropertyOf dul:associatedWith ;
  rdfs:isDefinedBy sosa: .


# Stimulus

ssn:Stimulus 
  rdfs:subClassOf dul:Event ;
  rdfs:isDefinedBy ssn: .

sosa:Result
  rdfs:subClassOf [ owl:unionOf ( dul:Region dul:Object ) ] ;
  rdfs:isDefinedBy sosa: .

sosa:hasResult
  rdfs:subPropertyOf dul:associatedWith ;
  rdfs:isDefinedBy sosa: .

sosa:phenomenonTime
  rdfs:subPropertyOf dul:hasRegion ;
  rdfs:isDefinedBy sosa: .


## System 
ssn:System
  rdfs:subClassOf dul:Object ;
  rdfs:isDefinedBy ssn: .

ssn:hasSubSystem
  rdfs:subPropertyOf dul:hasPart ;
  rdfs:isDefinedBy ssn: .

sosa:Platform 
  rdfs:subClassOf dul:Object ;
  rdfs:isDefinedBy sosa: .


## Deployment

ssn:Deployment
  rdfs:subClassOf dul:Event ;
  rdfs:isDefinedBy ssn: .

ssn:deployedOnPlatform
  rdfs:subPropertyOf dul:associatedWith ;
  rdfs:isDefinedBy sosa: .

ssn:deployedSystem 
  rdfs:subPropertyOf dul:associatedWith ;
  rdfs:isDefinedBy sosa: .

ssn:hasDeployment 
  rdfs:subPropertyOf dul:associatedWith ;
  rdfs:isDefinedBy sosa: .

ssn:inDeployment 
  rdfs:subPropertyOf dul:associatedWith ;
  rdfs:isDefinedBy sosa: .

