@prefix :      <http://www.w3.org/2002/07/owl#> .
@prefix dc:    <http://purl.org/dc/elements/1.1/> .
@prefix voaf:  <http://purl.org/vocommons/voaf#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix DUL:   <http://www.loa-cnr.it/ontologies/DUL.owl#> .
@prefix foaf:  <http://xmlns.com/foaf/0.1/> .
@prefix lifecycle: <http://purl.org/vocab/lifecycle/schema#> .
@prefix terms: <http://purl.org/dc/terms/> .
@prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .
@prefix owl:   <http://www.w3.org/2002/07/owl#> .
@prefix vann:  <http://purl.org/vocab/vann/> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix iot-lifecycle: <http://www.irit.fr/recherches/MELODI/ontologies/IoT-Lifecycle#> .
@prefix cc:    <http://creativecommons.org/ns#> .

iot-lifecycle:impactsState
        a             owl:ObjectProperty ;
        rdfs:comment  "This relationships links an entity that impacts a Ressource State and said State. For instance, if an Actuator is updated by an Actuation, this Actuation impacts the Actuator's State." ;
        rdfs:domain   DUL:Entity ;
        rdfs:label    "impacts state" ;
        rdfs:range    lifecycle:State .

iot-lifecycle:updatesState
        a                   owl:ObjectProperty ;
        rdfs:comment        "This Update regards the provided ParametrizedState" ;
        rdfs:domain         iot-lifecycle:Update ;
        rdfs:label          "updates state" ;
        rdfs:range          iot-lifecycle:ParametrizedState ;
        rdfs:subPropertyOf  lifecycle:possibleState .

iot-lifecycle:stateParametrizedBy
        a            owl:ObjectProperty ;
        rdfs:domain  iot-lifecycle:ParametrizedState ;
        rdfs:label   "state parametrized by" ;
        rdfs:range   DUL:Entity .

lifecycle:Action  rdfs:subClassOf  DUL:Action .

iot-lifecycle:isTriggeredBy
        a             owl:ObjectProperty ;
        rdfs:comment  "Relation between a Transition and whatever Entity can trigger it" ;
        rdfs:domain   lifecycle:Transition ;
        rdfs:label    "is triggered by" ;
        rdfs:range    DUL:Entity .

lifecycle:TaskGroup  rdfs:subClassOf  DUL:Set .

lifecycle:Lifecycle  rdfs:comment  "Plays the role of StateSet proposed in http://ontologydesignpatterns.org/wiki/Submissions:Object_with_states" ;
        rdfs:subClassOf  DUL:Set .

lifecycle:Task  owl:equivalentClass  DUL:Task .

<http://www.irit.fr/recherches/MELODI/ontologies/IoT-Lifecycle>
        a                              owl:Ontology , voaf:Vocabulary ;
        rdfs:comment                   "This ontology is a specialization of the lifecycle vocabulary (http://purl.org/vocab/lifecycle/schema) meant to be used in the context of IoT. It is used as a module in the IoT core domain ontology IoT-O (www.irit.fr/recherches/MELODI/ontologies/IoT-O). \n\nIoT-Lifecycle adds a specific state definition (ParametrizedState) and a specific transition (Update) that is useful to model actuators." ;
        cc:license                     <http://creativecommons.org/licenses/by/4.0/> ;
        dc:creator                     "Nicolas Seydoux, Khalil Drira, Nathalie Hernandez, Thierry Monteil" ;
        dc:creator                     <http://www.irit.fr/recherches/MELODI/ontologies/contributors#monteil> , <http://www.irit.fr/recherches/MELODI/ontologies/contributors#drira> , <http://www.irit.fr/recherches/MELODI/ontologies/contributors#seydoux> , <http://www.irit.fr/recherches/MELODI/ontologies/contributors#hernandez> ;
        dc:publisher                   "LAAS-CNRS (https://www.laas.fr)" , "IRIT (https://www.irit.fr/)" ;
        dc:title                       "IoT-Lifecycle" ;
        terms:issued                   "2015-02-20" ;
        terms:modified                 "2016-02-26" ;
        vann:preferredNamespacePrefix  "iot-lifecycle" ;
        vann:preferredNamespaceURI     "http://www.irit.fr/recherches/MELODI/ontologies/IoT-Lifecycle" ;
        voaf:extends                   lifecycle: ;
        owl:imports                    <http://vocab.org/lifecycle/schema-20080603.rdf> , <http://www.loa-cnr.it/ontologies/DUL.owl> ;
        owl:versionInfo                "2.0" ;
        foaf:primaryTopic              "State machines" .

iot-lifecycle:triggersTransition
        a             owl:ObjectProperty ;
        rdfs:comment  "Characterizes an entity able to trigger a transition : agent, software, condition..." ;
        rdfs:domain   DUL:Entity ;
        rdfs:label    "triggers transition" ;
        rdfs:range    lifecycle:Transition .

iot-lifecycle:ParametrizedState
        a                owl:Class ;
        rdfs:comment     "In the case of IoT, a continuous space will be associated with a numerical value and with a specific kind of Transition, an Update." ;
        rdfs:label       "Parametrized State" ;
        rdfs:subClassOf  lifecycle:State ;
        rdfs:subClassOf  [ a                   owl:Restriction ;
                           owl:onProperty      iot-lifecycle:stateParametrizedBy ;
                           owl:someValuesFrom  owl:Thing
                         ] .

lifecycle:State  rdfs:subClassOf  DUL:Situation .

iot-lifecycle:possibleUpdate
        a                   owl:ObjectProperty ;
        rdfs:comment        "Indicates that an update is acessible for a ParametrizedState" ;
        rdfs:domain         iot-lifecycle:ParametrizedState ;
        rdfs:label          "possible update" ;
        rdfs:range          iot-lifecycle:Update ;
        rdfs:subPropertyOf  lifecycle:possibleTransition .

iot-lifecycle:Update  a  owl:Class ;
        rdfs:comment     "This special kind of Transition concerns Continuous states, and marks an update of the state value without having a \"real\" change of state." ;
        rdfs:label       "Update" ;
        rdfs:subClassOf  lifecycle:Transition .

lifecycle:Transition  rdfs:subClassOf  DUL:Event .

lifecycle:TaskProgress
        rdfs:subClassOf  DUL:Situation .
