From 69aec6dc80fd147ad5912d717919f9a4a301ee44 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aur=C3=A9lien=20Lamercerie?=
 <aurelien.lamercerie@laposte.net>
Date: Wed, 17 Nov 2021 18:41:55 +0100
Subject: [PATCH] CTS update: structural revision of sys:Property

---
 config/semantic-net.ttl         |   27 +-
 config/transduction-schemes.ttl | 1027 ++++++++++++++++++++-----------
 frame/system-ontology.ttl       |   71 +--
 prepare_work_data.py            |   35 +-
 4 files changed, 747 insertions(+), 413 deletions(-)

diff --git a/config/semantic-net.ttl b/config/semantic-net.ttl
index a141868d..accde622 100644
--- a/config/semantic-net.ttl
+++ b/config/semantic-net.ttl
@@ -95,11 +95,6 @@ net:featureClass
   rdfs:label "feature class" ;
   rdfs:subPropertyOf net:objectValue ;
 .
-net:has_actor
-  rdf:type rdf:Property ;
-  rdfs:label "has actor" ;
-  rdfs:subPropertyOf net:has_atom ;
-.
 net:has_atom
   rdf:type rdf:Property ;
   rdfs:label "has atom" ;
@@ -190,6 +185,21 @@ net:has_possible_range
   rdfs:label "has possible range" ;
   rdfs:subPropertyOf net:has_object ;
 .
+net:has_relation
+  rdf:type rdf:Property ;
+  rdfs:label "has relation" ;
+  rdfs:subPropertyOf net:has_relation_value ;
+.
+net:has_relation_value
+  rdf:type rdf:Property ;
+  rdfs:label "has relation value" ;
+  rdfs:subPropertyOf net:has_object ;
+.
+net:has_source
+  rdf:type rdf:Property ;
+  rdfs:label "has source" ;
+  rdfs:subPropertyOf net:has_relation_value ;
+.
 net:has_structure
   rdf:type rdf:Property ;
   rdfs:label "Linguistic Structure (in UNL Document)" ;
@@ -198,12 +208,7 @@ net:has_structure
 net:has_target
   rdf:type rdf:Property ;
   rdfs:label "has target" ;
-  rdfs:subPropertyOf net:has_atom ;
-.
-net:has_verb
-  rdf:type rdf:Property ;
-  rdfs:label "has verb" ;
-  rdfs:subPropertyOf net:has_atom ;
+  rdfs:subPropertyOf net:has_relation_value ;
 .
 net:list
   rdf:type owl:Class ;
diff --git a/config/transduction-schemes.ttl b/config/transduction-schemes.ttl
index b4694ce2..de74c6e4 100644
--- a/config/transduction-schemes.ttl
+++ b/config/transduction-schemes.ttl
@@ -146,9 +146,8 @@ WHERE {
 }""" ;
   sh:order 3.23 ;
 .
-cts:add-event
+cts:append-domain-to-relation-net
   rdf:type sh:SPARQLRule ;
-  rdfs:label "add-event" ;
   sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
 PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
 PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -160,60 +159,36 @@ PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
 PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
 PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
 
-# -- Add Verb class / instance in System Ontology
-CONSTRUCT { 
-   # Classification
-   ?newEventUri rdfs:subClassOf ?eventClassUri.
-   ?newEventUri rdfs:label ?eventLabel.
-   ?newEventUri sys:from_structure ?req.
-   # Object Property
-   ?newEventObjectPropertyUri a owl:ObjectProperty.
-   ?newEventObjectPropertyUri rdfs:subPropertyOf ?eventObjectPropertyUri.
-   ?newEventObjectPropertyUri rdfs:label ?verbConcept.
-   ?newEventObjectPropertyUri sys:from_structure ?req.
-   ?actorInstanceUri ?newEventObjectPropertyUri ?targetInstanceUri.
+# -- Append possible domain, actor to relation nets 
+CONSTRUCT {
+   # update: Relation Net (net1)
+   ?net1 net:has_node ?uw1, ?uw2.
+   ?net1 net:has_source ?sourceObject.	
+   ?net1 net:has_possible_domain ?domainClass.	
 }
 WHERE {
-   # net1: entity
+   # Relation Net (net1)
    ?net1 a net:Instance.
-   ?net1 net:type net:atom.
-   ?net1 net:atomOf sys:Event.
+   ?net1 net:type net:relation.
    ?net1 net:has_structure ?req.
-   ?net1 net:has_verb ?verbObject1.
-   ?verbObject1 net:has_parent_class ?verbClass.	
-   ?verbObject1 net:has_concept ?verbConcept.
-   ?net1 net:has_actor ?actorObject1.
-   ?actorObject1 net:has_parent_class ?actorClass.	
-   ?actorObject1 net:has_concept ?actorConcept.
-   ?actorObject1 net:has_instance ?actorInstance.
-   ?actorObject1 net:has_instance_uri ?actorInstanceUri.  
-   ?net1 net:has_target ?targetObject1.
-   ?targetObject1 net:has_parent_class ?targetClass.	
-   ?targetObject1 net:has_concept ?targetConcept.
-   ?targetObject1 net:has_instance ?targetInstance. 
-   ?targetObject1 net:has_instance_uri ?targetInstanceUri. 
-   # Label: event
-   BIND (concat(?actorConcept, '-', ?verbConcept) AS ?e1).
-   BIND (concat(?e1, '-', ?targetConcept) AS ?eventLabel).
-   # URI (for classes)
-   sys:Structure sys:has_frame_uri ?frameURI.
-   sys:Event sys:is_class ?eventClass.
-   BIND (concat( ?frameURI, ?eventClass) AS ?c1).
-   BIND (concat(?c1, '_', ?eventLabel) AS ?c2).
-   BIND (uri( ?c1) AS ?eventClassUri).
-   BIND (uri(?c2) AS ?newEventUri).
-   # URI (for object property)
-   sys:Event sys:has_object_property ?eventObjectProperty.
-   BIND (concat( ?frameURI, ?eventObjectProperty) AS ?o1).
-   BIND (concat(?o1, '#', ?verbConcept) AS ?o2).
-   BIND (uri( ?o1) AS ?eventObjectPropertyUri).
-   BIND (uri( ?o2) AS ?newEventObjectPropertyUri).
+   ?net1 net:has_node ?uw1.
+   # Atom Net (net2): actor of net1
+   ?net2 a net:Instance.
+   ?net2 net:type net:atom.
+   ?net2 net:has_structure ?req.
+   ?net2 net:has_node ?uw2.
+   ?net2 net:has_atom ?sourceObject.
+   # condition: agt(net1, net2)
+   ?uw1 unl:agt ?uw2.
+   # Possible Domain
+   ?sourceObject net:has_instance ?sourceInstance.
+   ?anySourceObject net:has_instance ?sourceInstance.
+   ?anySourceObject net:has_concept ?domainClass.	
 }""" ;
-  sh:order 3.31 ;
+  sh:order 2.42 ;
 .
-cts:add-state-property
+cts:append-range-to-relation-net
   rdf:type sh:SPARQLRule ;
-  rdfs:label "add-event" ;
   sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
 PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
 PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -225,56 +200,33 @@ PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
 PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
 PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
 
-# -- Add Verb class / instance in System Ontology
-CONSTRUCT { 
-   # Classification
-   ?newStatePropertyUri rdfs:subClassOf ?statePropertyClassUri.
-   ?newStatePropertyUri rdfs:label ?statePropertyLabel.
-   ?newStatePropertyUri sys:from_structure ?req.
-   # Object Property
-   ?newStatePropertyObjectPropertyUri a owl:ObjectProperty.
-   ?newStatePropertyObjectPropertyUri rdfs:subPropertyOf ?statePropertyObjectPropertyUri.
-   ?newStatePropertyObjectPropertyUri rdfs:label ?verbConcept.
-   ?newStatePropertyObjectPropertyUri sys:from_structure ?req.
-   ?actorInstanceUri ?newStatePropertyObjectPropertyUri ?targetInstanceUri.
+# -- Append possible range, target to relation nets 
+CONSTRUCT {
+   # update: Relation Net (net1)
+   ?net1 net:has_node ?uw1, ?uw2.
+   ?net1 net:has_target ?targetObject.	
+   ?net1 net:has_possible_range ?rangeClass.
 }
 WHERE {
-   # net1: state property
+   # Relation Net (net1)
    ?net1 a net:Instance.
-   ?net1 net:type net:atom.
-   ?net1 net:atomOf sys:State_Property.
+   ?net1 net:type net:relation.
    ?net1 net:has_structure ?req.
-   ?net1 net:has_verb ?verbObject1.
-   ?verbObject1 net:has_parent_class ?verbClass.	
-   ?verbObject1 net:has_concept ?verbConcept.
-   ?net1 net:has_actor ?actorObject1.
-   ?actorObject1 net:has_parent_class ?actorClass.	
-   ?actorObject1 net:has_concept ?actorConcept.
-   ?actorObject1 net:has_instance ?actorInstance.
-   ?actorObject1 net:has_instance_uri ?actorInstanceUri.  
-   ?net1 net:has_target ?targetObject1.
-   ?targetObject1 net:has_parent_class ?targetClass.	
-   ?targetObject1 net:has_concept ?targetConcept.
-   ?targetObject1 net:has_instance ?targetInstance. 
-   ?targetObject1 net:has_instance_uri ?targetInstanceUri. 
-   # Label: event
-   BIND (concat(?actorConcept, '-', ?verbConcept) AS ?e1).
-   BIND (concat(?e1, '-', ?targetConcept) AS ?statePropertyLabel).
-   # URI (for classes)
-   sys:Structure sys:has_frame_uri ?frameURI.
-   sys:State_Property sys:is_class ?statePropertyClass.
-   BIND (concat( ?frameURI, ?statePropertyClass) AS ?c1).
-   BIND (concat(?c1, '_', ?statePropertyLabel) AS ?c2).
-   BIND (uri( ?c1) AS ?statePropertyClassUri).
-   BIND (uri(?c2) AS ?newStatePropertyUri).
-   # URI (for object property)
-   sys:State_Property sys:has_object_property ?statePropertyObjectProperty.
-   BIND (concat( ?frameURI, ?statePropertyObjectProperty) AS ?o1).
-   BIND (concat(?o1, '#', ?verbConcept) AS ?o2).
-   BIND (uri( ?o1) AS ?statePropertyObjectPropertyUri).
-   BIND (uri( ?o2) AS ?newStatePropertyObjectPropertyUri).
+   ?net1 net:has_node ?uw1.
+   # Atom Net (net2): target of net1
+   ?net2 a net:Instance.
+   ?net2 net:type net:atom.
+   ?net2 net:has_structure ?req.
+   ?net2 net:has_node ?uw2.
+   ?net2 net:has_atom ?targetObject.
+   # condition: agt(net1, net2)
+   ?uw1 (unl:obj|unl:res) ?uw2.
+   # Possible Domain
+   ?targetObject net:has_instance ?targetObjectInstance.
+   ?allTargetObject net:has_instance ?targetObjectInstance.
+   ?allTargetObject net:has_concept ?rangeClass.	  
 }""" ;
-  sh:order 3.31 ;
+  sh:order 2.42 ;
 .
 cts:batch_execution
   rdf:type owl:Class ;
@@ -283,18 +235,16 @@ cts:batch_execution
   rdfs:subClassOf cts:Transduction_Schemes ;
   sh:rule cts:add-conjunctive-classes-from-list-net ;
   sh:rule cts:add-disjunctive-classes-from-list-net ;
-  sh:rule cts:add-event ;
-  sh:rule cts:add-state-property ;
+  sh:rule cts:append-domain-to-relation-net ;
+  sh:rule cts:append-range-to-relation-net ;
   sh:rule cts:bypass-reification ;
   sh:rule cts:complement-composite-class ;
-  sh:rule cts:compose-agt-verb-obj-as-simple-event ;
-  sh:rule cts:compose-aoj-verb-obj-as-simple-state-property ;
   sh:rule cts:compose-atom-with-list-by-mod-1 ;
   sh:rule cts:compose-atom-with-list-by-mod-2 ;
   sh:rule cts:compute-class-uri-of-net-object ;
-  sh:rule cts:compute-domain-range-of-event-object-properties ;
-  sh:rule cts:compute-domain-range-of-state-property-object-properties ;
+  sh:rule cts:compute-domain-of-relation-property ;
   sh:rule cts:compute-instance-uri-of-net-object ;
+  sh:rule cts:compute-range-of-relation-property ;
   sh:rule cts:create-atom-net ;
   sh:rule cts:create-relation-net ;
   sh:rule cts:create-unary-atom-list-net ;
@@ -303,11 +253,14 @@ cts:batch_execution
   sh:rule cts:generate-atom-class ;
   sh:rule cts:generate-atom-instance ;
   sh:rule cts:generate-composite-class-from-list-net ;
+  sh:rule cts:generate-event-class ;
+  sh:rule cts:generate-relation-property ;
   sh:rule cts:init-conjunctive-atom-list-net ;
   sh:rule cts:init-disjunctive-atom-list-net ;
   sh:rule cts:instantiate-atom-net ;
   sh:rule cts:instantiate-composite-in-list-by-extension-1 ;
   sh:rule cts:instantiate-composite-in-list-by-extension-2 ;
+  sh:rule cts:link-classes-by-relation-property ;
   sh:rule cts:link-to-scope-entry ;
   sh:rule cts:specify-axis-of-atom-list-net ;
 .
@@ -372,150 +325,6 @@ WHERE {
 }""" ;
   sh:order 3.22 ;
 .
-cts:compose-agt-verb-obj-as-simple-event
-  rdf:type sh:SPARQLRule ;
-  sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
-PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
-PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
-PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
-PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
-PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
-PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
-PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
-PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
-
-# -- Compose a subject (agt), an action Verb and an object (obj) to obtain an event    
-CONSTRUCT {
-   # Net: Event
-   ?newNet a net:Instance.
-   ?newNet net:type net:atom.
-   ?newNet net:atomOf sys:Event.
-   ?newNet net:has_structure ?req.
-   ?newNet net:has_node ?uw1, ?uw2, ?uw3.
-   ?newNet net:has_actor ?actorObject.	
-   ?newNet net:has_verb ?verbObject.	
-   ?newNet net:has_target ?targetObject.	
-   ?newNet net:has_possible_domain ?domainClass.	
-   ?newNet net:has_possible_range ?rangeClass.	
-}
-WHERE {
-   # net1: verb
-   ?net1 a net:Instance.
-   ?net1 net:type net:atom.
-   ?net1 net:atomOf sys:action_verb.
-   ?net1 net:has_structure ?req.
-   ?net1 net:has_node ?uw1.
-   ?net1 net:has_atom ?verbObject.
-   # net2: entity (actor)
-   ?net2 a net:Instance.
-   ?net2 net:type net:atom.
-   # -- old --- ?net2 net:atomOf sys:Entity.
-   ?net2 net:has_structure ?req.
-   ?net2 net:has_node ?uw2.
-   ?net2 net:has_atom ?actorObject.
-   # net3: entity (target)
-   ?net3 a net:Instance.
-   ?net3 net:type net:atom.
-   # -- old --- ?net3 net:atomOf sys:Entity.
-   ?net3 net:has_structure ?req.
-   ?net3 net:has_node ?uw3.
-   ?net3 net:has_atom ?targetObject.
-   # condition: agt(net1, net2) et obj(net1, net3)
-   ?uw1 unl:agt ?uw2.
-   ?uw1 (unl:obj|unl:res) ?uw3.	
-   # Label: Id
-   ?uw1 unl:has_id ?uw1Id.
-   ?uw2 unl:has_id ?uw2Id.
-   ?uw3 unl:has_id ?uw3Id.
-   # Possible domain/range
-   ?actorObject net:has_instance ?actorObjectInstance.
-   ?allActorObject net:has_instance ?actorObjectInstance.
-   ?allActorObject net:has_concept ?domainClass.	
-   ?targetObject net:has_instance ?targetObjectInstance.
-   ?allTargetObject net:has_instance ?targetObjectInstance.
-   ?allTargetObject net:has_concept ?rangeClass.	   
-   # URI (for Event Net)
-   cprm:Config_Parameters cprm:netURI ?netURI.
-   net:event rdfs:label ?eventLabel.
-   BIND (concat( ?netURI, ?eventLabel, '_') AS ?n1).
-   BIND (concat(?n1, ?uw1Id, '-', ?uw2Id, '-', ?uw3Id) AS ?n2).
-   BIND (uri(?n2) AS ?newNet).
-}""" ;
-  sh:order 2.41 ;
-.
-cts:compose-aoj-verb-obj-as-simple-state-property
-  rdf:type sh:SPARQLRule ;
-  sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
-PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
-PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
-PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
-PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
-PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
-PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
-PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
-PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
-
-# -- Compose a subject (aoj), an attributibe Verb and an object (obj) / result (res) to obtain a state property
-CONSTRUCT {
-   # Net: State Property
-   ?newNet a net:Instance.
-   ?newNet net:type net:atom.
-   ?newNet net:atomOf sys:State_Property.
-   ?newNet net:has_structure ?req.
-   ?newNet net:has_node ?uw1, ?uw2, ?uw3.
-   ?newNet net:has_actor ?actorObject.	
-   ?newNet net:has_verb ?verbObject.	
-   ?newNet net:has_target ?targetObject.	
-   ?newNet net:has_possible_domain ?domainClass.	
-   ?newNet net:has_possible_range ?rangeClass.	
-}
-WHERE {
-   # net1: verb
-   ?net1 a net:Instance.
-   ?net1 net:type net:atom.
-   ?net1 net:atomOf sys:attributive_verb.
-   ?net1 net:has_structure ?req.
-   ?net1 net:has_node ?uw1.
-   ?net1 net:has_atom ?verbObject.
-   # net2: entity (actor)
-   ?net2 a net:Instance.
-   ?net2 net:type net:atom.
-   # -- old --- ?net2 net:atomOf sys:Entity.
-   ?net2 net:has_structure ?req.
-   ?net2 net:has_node ?uw2.
-   ?net2 net:has_atom ?actorObject.
-   # net3: entity (target)
-   ?net3 a net:Instance.
-   ?net3 net:type net:atom.
-   # -- old --- ?net3 net:atomOf sys:Entity.
-   ?net3 net:has_structure ?req.
-   ?net3 net:has_node ?uw3.
-   ?net3 net:has_atom ?targetObject.
-   # condition: aoj(net1, net2) et obj(net1, net3)
-   ?uw1 unl:aoj ?uw2.
-   ?uw1 (unl:obj|unl:res) ?uw3.	
-   # Label: Id
-   ?uw1 unl:has_id ?uw1Id.
-   ?uw2 unl:has_id ?uw2Id.
-   ?uw3 unl:has_id ?uw3Id.
-   # Possible domain/range
-   ?actorObject net:has_instance ?actorObjectInstance.
-   ?allActorObject net:has_instance ?actorObjectInstance.
-   ?allActorObject net:has_concept ?domainClass.	
-   ?targetObject net:has_instance ?targetObjectInstance.
-   ?allTargetObject net:has_instance ?targetObjectInstance.
-   ?allTargetObject net:has_concept ?rangeClass.	   
-   # URI (for State Property Net)
-   cprm:Config_Parameters cprm:netURI ?netURI.
-   net:state_property rdfs:label ?statePropertyLabel.
-   BIND (concat( ?netURI, ?statePropertyLabel, '_') AS ?n1).
-   BIND (concat(?n1, ?uw1Id, '-', ?uw2Id, '-', ?uw3Id) AS ?n2).
-   BIND (uri(?n2) AS ?newNet).
-}""" ;
-  sh:order 2.41 ;
-.
 cts:compose-atom-with-list-by-mod-1
   rdf:type sh:SPARQLRule ;
   sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
@@ -586,7 +395,8 @@ WHERE {
    # URI (for Object)
    cprm:Config_Parameters cprm:netURI ?netURI.
    cprm:Config_Parameters cprm:objectRef ?objectRef.
-   BIND (concat( ?netURI, ?objectRef) AS ?o1).
+   net:composite rdfs:label ?compositeLabel.
+   BIND (concat( ?netURI, ?objectRef, ?compositeLabel, '_') AS ?o1).
    BIND (concat(?o1, ?uw1Id, '-', ?uw3Id) AS ?o2).
    BIND (uri(?o2) AS ?newObject).
    # URI (for List Net)
@@ -701,9 +511,9 @@ WHERE {
 }""" ;
   sh:order 3.01 ;
 .
-cts:compute-domain-range-of-event-object-properties
+cts:compute-domain-of-relation-property
   rdf:type sh:SPARQLRule ;
-  rdfs:label "compute-domain-range-of-object-properties" ;
+  rdfs:label "compute-domain-of-relation-property" ;
   sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
 PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
 PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -715,24 +525,21 @@ PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
 PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
 PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
 
-# -- Compute domain/range of object properties
+# -- Compute Domain of Relation Property
 CONSTRUCT { 
-   # Object Property: domain, range and relation between domain/range classes
-   ?newEventObjectPropertyUri rdfs:domain ?domainClass.
-   ?newEventObjectPropertyUri rdfs:range ?rangeClass.
-   ?domainClass ?newEventObjectPropertyUri ?rangeClass. # relation between domain/range classes
+   # update Relation Property: add domain
+   ?newPropertyUri rdfs:domain ?domainClass.
 }
 WHERE {
-   # net1: event
+   # Relation Net (net1)
    ?net1 a net:Instance.
-   ?net1 net:type net:atom.
-   ?net1 net:atomOf sys:Event.
-   ?net1 net:has_structure ?req.
-   ?net1 net:has_verb ?verbObject1.	
-   ?verbObject1 net:has_concept ?verbConcept.
-   # domain  
+   ?net1 net:type net:relation.
+   ?net1 net:relationOf ?relationMother.
+   ?net1 net:has_relation ?relationObject.	
+   ?relationObject net:has_concept ?relationConcept.
+   # -- Domain  
    ?net1 net:has_possible_domain ?possibleDomainLabel1.
-	?domainClass rdfs:label ?possibleDomainLabel1 .
+	?domainClass rdfs:label ?possibleDomainLabel1.
    FILTER (
 		NOT EXISTS {
 			?net1 net:has_possible_domain ?possibleDomainLabel2 .
@@ -740,28 +547,18 @@ WHERE {
 			?anotherDomainClass rdfs:subClassOf ?domainClass.
 		}
 	)
-   # range  
-   ?net1 net:has_possible_range ?possibleRangeLabel1.
-   ?rangeClass rdfs:label ?possibleRangeLabel1 .
-   FILTER (
-		NOT EXISTS {
-			?net1 net:has_possible_domain ?possibleRangeLabel2 .
-	        ?anotherRangeClass rdfs:label ?possibleRangeLabel2 .
-			?anotherRangeClass rdfs:subClassOf ?rangeClass.
-		}
-   )
    # URI (for object property)
-   sys:Structure sys:has_frame_uri ?frameURI.
-   sys:Event sys:has_object_property ?eventObjectProperty.
-   BIND (concat( ?frameURI, ?eventObjectProperty) AS ?o1).
-   BIND (concat(?o1, '#', ?verbConcept) AS ?o2).
-   BIND (uri( ?o2) AS ?newEventObjectPropertyUri).
+   sys:Relation sys:has_frame_uri ?frameURI. 
+   ?relationMother sys:has_reference ?relationReference.
+   BIND (concat( ?frameURI, ?relationReference) AS ?o1).
+   BIND (concat(?o1, '_', ?relationConcept) AS ?o2).
+   BIND (uri( ?o2) AS ?newPropertyUri).
 }""" ;
   sh:order 3.32 ;
 .
-cts:compute-domain-range-of-state-property-object-properties
+cts:compute-instance-uri-of-net-object
   rdf:type sh:SPARQLRule ;
-  rdfs:label "compute-domain-range-of-object-properties" ;
+  rdfs:label "compute-instance-uri-of-net-object" ;
   sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
 PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
 PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -773,53 +570,27 @@ PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
 PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
 PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
 
-# -- Compute domain/range of object properties
+# -- Compute useful URI
 CONSTRUCT { 
-   # Object Property: domain, range and relation between domain/range classes
-   ?objectPropertyUri rdfs:domain ?domainClass.
-   ?objectPropertyUri rdfs:range ?rangeClass.
-   ?domainClass ?objectPropertyUri ?rangeClass. # relation between domain/range classes
+   # Net Object URI
+   ?object net:has_instance_uri ?objectInstanceUri.
 }
 WHERE {
-   # net1: event
-   ?net1 a net:Instance.
-   ?net1 net:type net:atom.
-   ?net1 net:atomOf sys:State_Property.
-   ?net1 net:has_structure ?req.
-   ?net1 net:has_verb ?verbObject1.	
-   ?verbObject1 net:has_concept ?verbConcept.
-   # domain  
-   ?net1 net:has_possible_domain ?possibleDomainLabel1.
-	?domainClass rdfs:label ?possibleDomainLabel1 .
-   FILTER (
-		NOT EXISTS {
-			?net1 net:has_possible_domain ?possibleDomainLabel2 .
-	        ?anotherDomainClass rdfs:label ?possibleDomainLabel2 .
-			?anotherDomainClass rdfs:subClassOf ?domainClass.
-		}
-	)
-   # range  
-   ?net1 net:has_possible_range ?possibleRangeLabel1.
-   ?rangeClass rdfs:label ?possibleRangeLabel1 .
-   FILTER (
-		NOT EXISTS {
-			?net1 net:has_possible_domain ?possibleRangeLabel2 .
-	       ?anotherRangeClass rdfs:label ?possibleRangeLabel2 .
-			?anotherRangeClass rdfs:subClassOf ?rangeClass.
-		}
-   )
-   # URI (for object property)
+   # object
+   ?object a net:Object.
+   ?object net:has_parent_class ?parentClass.	
+   ?object net:has_instance ?objectInstance. 
+   # URI (for classes and instance)
    sys:Structure sys:has_frame_uri ?frameURI.
-   sys:State_Property sys:has_object_property ?objectPropertyRef.
-   BIND (concat( ?frameURI, ?objectPropertyRef) AS ?o1).
-   BIND (concat(?o1, '#', ?verbConcept) AS ?o2).
-   BIND (uri( ?o2) AS ?objectPropertyUri).
+   BIND (concat( ?frameURI, ?parentClass) AS ?s1).
+   BIND (concat(?s1, '#', ?objectInstance) AS ?s2).
+   BIND (uri(?s2) AS ?objectInstanceUri).
 }""" ;
-  sh:order 3.32 ;
+  sh:order 3.02 ;
 .
-cts:compute-instance-uri-of-net-object
+cts:compute-range-of-relation-property
   rdf:type sh:SPARQLRule ;
-  rdfs:label "compute-instance-uri-of-net-object" ;
+  rdfs:label "compute-range-of-relation-property" ;
   sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
 PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
 PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -831,23 +602,36 @@ PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
 PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
 PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
 
-# -- Compute useful URI
+# -- Compute Range of Relation Property
 CONSTRUCT { 
-   # Net Object URI
-   ?object net:has_instance_uri ?objectInstanceUri.
+   # update Relation Property: add range
+   ?newPropertyUri rdfs:range ?rangeClass.
 }
 WHERE {
-   # object
-   ?object a net:Object.
-   ?object net:has_parent_class ?parentClass.	
-   ?object net:has_instance ?objectInstance. 
-   # URI (for classes and instance)
-   sys:Structure sys:has_frame_uri ?frameURI.
-   BIND (concat( ?frameURI, ?parentClass) AS ?s1).
-   BIND (concat(?s1, '#', ?objectInstance) AS ?s2).
-   BIND (uri(?s2) AS ?objectInstanceUri).
+   # Relation Net (net1)
+   ?net1 a net:Instance.
+   ?net1 net:type net:relation.
+   ?net1 net:relationOf ?relationMother.
+   ?net1 net:has_relation ?relationObject.	
+   ?relationObject net:has_concept ?relationConcept.
+   # -- Range  
+   ?net1 net:has_possible_range ?possibleRangeLabel1.
+   ?rangeClass rdfs:label ?possibleRangeLabel1 .
+   FILTER (
+		NOT EXISTS {
+			?net1 net:has_possible_domain ?possibleRangeLabel2 .
+	       ?anotherRangeClass rdfs:label ?possibleRangeLabel2 .
+			?anotherRangeClass rdfs:subClassOf ?rangeClass.
+		}
+   )
+   # URI (for object property)
+   sys:Relation sys:has_frame_uri ?frameURI. 
+   ?relationMother sys:has_reference ?relationReference.
+   BIND (concat( ?frameURI, ?relationReference) AS ?o1).
+   BIND (concat(?o1, '_', ?relationConcept) AS ?o2).
+   BIND (uri( ?o2) AS ?newPropertyUri).
 }""" ;
-  sh:order 3.02 ;
+  sh:order 3.32 ;
 .
 cts:create-atom-net
   rdf:type sh:SPARQLRule ;
@@ -899,12 +683,14 @@ WHERE {
    # URI (for Atom Object)
    cprm:Config_Parameters cprm:netURI ?netURI.
    cprm:Config_Parameters cprm:objectRef ?objectRef.
-   BIND (concat( ?netURI, ?objectRef) AS ?o1).
+   net:atom rdfs:label ?atomLabel.
+   BIND (concat( ?netURI, ?objectRef, ?atomLabel, '_') AS ?o1).
    BIND (concat(?o1, ?uw1Id) AS ?o2).
    BIND (uri(?o2) AS ?newObject).
    # URI (for Atom Net)
    cprm:Config_Parameters cprm:netURI ?netURI.
-   BIND (concat( ?netURI, ?atomClass, '_') AS ?n1).
+   sys:Structure sys:has_reference ?classReference.
+   BIND (concat( ?netURI, ?classReference, '-', ?atomClass, '_') AS ?n1).
    BIND (concat(?n1, ?uw1Id) AS ?n2).
    BIND (uri(?n2) AS ?newNet).
 }""" ;
@@ -925,15 +711,21 @@ PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
 
 # -- Create relation net
 CONSTRUCT {
-   # Net: Relation
+   # Object
+   ?newObject a net:Object.
+   ?newObject net:objectType net:relation.
+   ?newObject net:has_node ?uw1.
+   ?newObject net:has_mother_class ?verbMother.
+   ?newObject net:has_parent_class ?verbParentClass.
+   ?newObject net:has_class ?verbConcept.
+   ?newObject net:has_concept ?verbConcept.
+   # create: Relation Net
    ?newNet a net:Instance.
    ?newNet net:type net:relation.
    ?newNet net:relationOf ?relationMother.
    ?newNet net:has_structure ?req.
    ?newNet net:has_node ?uw1.
-   ?newNet net:has_verb ?verbObject.	
-   # -- todo? --- ?newNet net:has_possible_domain ?domainClass.	
-   # -- todo? --- ?newNet net:has_possible_range ?rangeClass.	
+   ?newNet net:has_relation ?newObject.	
 }
 WHERE {
    # Relation Description (from System Ontology)
@@ -941,20 +733,30 @@ WHERE {
    ?targetProperty sys:has_mother_property ?relationMother.
    ?targetProperty sys:has_reference ?relationReference.
    ?targetProperty sys:has_restriction_on_class ?classRestriction.
-   # net1: atom of relation
+   # Atom Net (net1): restricted net according to its atom category (atomOf) 
    ?net1 a net:Instance.
    ?net1 net:type net:atom.
-   ?net1 net:atomOf ?atomCategory.
-   ?atomCategory rdfs:subClassOf* ?classRestriction.
+   ?net1 net:atomOf ?classRestriction.
    ?net1 net:has_structure ?req.
    ?net1 net:has_node ?uw1.
+   # -- Verb Actor
    ?net1 net:has_atom ?verbObject.
-   ?verbObject net:has_parent_class ?classRestriction.
+   ?verbObject net:has_mother_class ?verbMother.
+   ?verbObject net:has_parent_class ?verbParentClass.
+   ?verbObject net:has_concept ?verbConcept.
    # Label: Id
    ?uw1 unl:has_id ?uw1Id. 
+   # URI (for Atom Object)
+   cprm:Config_Parameters cprm:netURI ?netURI.
+   cprm:Config_Parameters cprm:objectRef ?objectRef.
+   net:relation rdfs:label ?relationLabel.
+   BIND (concat( ?netURI, ?objectRef, ?relationLabel, '_') AS ?o1).
+   BIND (concat(?o1, ?uw1Id) AS ?o2).
+   BIND (uri(?o2) AS ?newObject).
    # URI (for Event Net)
    cprm:Config_Parameters cprm:netURI ?netURI.
-   BIND (concat( ?netURI, ?relationReference, '_') AS ?n1).
+   sys:Property sys:has_reference ?propertyReference.
+   BIND (concat( ?netURI, ?propertyReference, '-', ?relationReference, '_') AS ?n1).
    BIND (concat(?n1, ?uw1Id) AS ?n2).
    BIND (uri(?n2) AS ?newNet).
 }""" ;
@@ -1003,9 +805,10 @@ WHERE {
    ?uw1 rdfs:label ?uw1Label.
    ?uw1 unl:has_id ?uw1Id.
    cprm:Config_Parameters cprm:netURI ?netURI.
+   sys:Structure sys:has_reference ?classReference.
    net:list rdfs:label ?listLabel.
    net:atom rdfs:label ?atomLabel.
-   BIND (concat( ?netURI, ?listLabel, '_', ?atomLabel, '_') AS ?s1).
+   BIND (concat( ?netURI, ?classReference, '-', ?listLabel, '-', ?atomLabel, '_') AS ?s1).
    BIND (concat(?s1, ?uw1Id) AS ?s2).
    BIND (uri(?s2) AS ?newNet).
 }""" ;
@@ -1046,6 +849,12 @@ cts:dev_schemes
   rdf:type sh:NodeShape ;
   rdfs:label "dev schemes" ;
   rdfs:subClassOf cts:Transduction_Schemes ;
+  sh:rule cts:old_add-event ;
+  sh:rule cts:old_add-state-property ;
+  sh:rule cts:old_compose-agt-verb-obj-as-simple-event ;
+  sh:rule cts:old_compose-aoj-verb-obj-as-simple-state-property ;
+  sh:rule cts:old_compute-domain-range-of-event-object-properties ;
+  sh:rule cts:old_compute-domain-range-of-state-property-object-properties ;
 .
 cts:entity_extraction
   rdf:type owl:Class ;
@@ -1065,7 +874,7 @@ cts:event_extraction
   rdf:type sh:NodeShape ;
   rdfs:label "event extraction" ;
   rdfs:subClassOf cts:net_extension ;
-  sh:rule cts:compose-agt-verb-obj-as-simple-event ;
+  sh:rule cts:old_compose-agt-verb-obj-as-simple-event ;
 .
 cts:extend-atom-list-net
   rdf:type sh:SPARQLRule ;
@@ -1124,7 +933,7 @@ PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
 PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
 PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
 
-# -- Generate atom class in System Ontology
+# -- Generate Atom Class in Target Ontology
 CONSTRUCT { 
    # Classification
    ?newClassUri rdfs:subClassOf ?parentUri.
@@ -1222,6 +1031,110 @@ WHERE {
 }""" ;
   sh:order 3.21 ;
 .
+cts:generate-event-class
+  rdf:type sh:SPARQLRule ;
+  rdfs:label "add-event" ;
+  sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
+PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
+PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
+PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
+PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
+PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
+PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
+PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
+PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
+
+# -- Add Event Class in Target Ontology
+CONSTRUCT { 
+   # Classification
+   ?newEventUri rdfs:subClassOf ?eventClassUri.
+   ?newEventUri rdfs:label ?eventLabel.
+   ?newEventUri sys:from_structure ?req.
+}
+WHERE {
+   # Relation Net (net1)
+   ?net1 a net:Instance.
+   ?net1 net:type net:relation.
+   ?net1 net:relationOf ?relationMother.
+   ?net1 net:has_structure ?req.
+   ?net1 net:has_node ?uw1.
+   # -- Relation Object
+   ?net1 net:has_relation ?relationObject.	
+   ?relationObject net:has_concept ?relationConcept.
+   # -- old --- ?relationObject net:has_parent_class ?relationParentClass.	
+   # -- Source Object
+   ?net1 net:has_source ?sourceObject.
+   ?sourceObject net:has_concept ?sourceConcept.
+   # -- old --- ?sourceObject net:has_instance ?sourceInstance.
+   # -- old --- ?sourceObject net:has_instance_uri ?sourceInstanceUri.  
+   # -- old --- ?sourceObject net:has_parent_class ?sourceParentClass.	
+   # -- Target Object
+   ?net1 net:has_target ?targetObject1.
+   ?targetObject1 net:has_concept ?targetConcept.
+   # -- old --- ?targetObject1 net:has_instance ?targetInstance. 
+   # -- old --- ?targetObject1 net:has_instance_uri ?targetInstanceUri. 
+   # -- old --- ?targetObject1 net:has_parent_class ?targetParentClass.	
+   # Label: event
+   BIND (concat(?sourceConcept, '-', ?relationConcept) AS ?e1).
+   BIND (concat(?e1, '-', ?targetConcept) AS ?eventLabel).
+   # URI (for classes)
+   sys:Structure sys:has_frame_uri ?frameURI.
+   sys:Event sys:is_class ?eventClass.
+   BIND (concat( ?frameURI, ?eventClass) AS ?c1).
+   BIND (concat(?c1, '_', ?eventLabel) AS ?c2).
+   BIND (uri( ?c1) AS ?eventClassUri).
+   BIND (uri(?c2) AS ?newEventUri).
+}""" ;
+  sh:order 3.31 ;
+.
+cts:generate-relation-property
+  rdf:type sh:SPARQLRule ;
+  rdfs:label "add-event" ;
+  sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
+PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
+PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
+PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
+PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
+PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
+PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
+PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
+PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
+
+# --  Generate Relation Property in Target Ontology
+CONSTRUCT { 
+   # update: Relation Property
+   ?newPropertyUri a owl:ObjectProperty.
+   ?newPropertyUri rdfs:subPropertyOf ?relationMother.
+   ?newPropertyUri rdfs:label ?relationConcept.
+   ?newPropertyUri sys:from_structure ?req.
+   ?sourceInstanceUri ?newPropertyUri ?targetInstanceUri.
+}
+WHERE {
+   # Relation Net (net1)
+   ?net1 a net:Instance.
+   ?net1 net:type net:relation.
+   ?net1 net:relationOf ?relationMother.
+   ?net1 net:has_structure ?req.
+   # -- Relation Object
+   ?net1 net:has_relation ?relationObject.	
+   ?relationObject net:has_concept ?relationConcept.
+   # -- Source Object
+   ?net1 net:has_source ?sourceObject.
+   ?sourceObject net:has_instance_uri ?sourceInstanceUri.  
+   # -- Target Object
+   ?net1 net:has_target ?targetObject.
+   ?targetObject net:has_instance_uri ?targetInstanceUri. 
+   # URI (for object property)
+   sys:Relation sys:has_frame_uri ?frameURI. 
+   ?relationMother sys:has_reference ?relationReference.
+   BIND (concat( ?frameURI, ?relationReference) AS ?o1).
+   BIND (concat(?o1, '_', ?relationConcept) AS ?o2).
+   BIND (uri( ?o2) AS ?newPropertyUri).
+}""" ;
+  sh:order 3.31 ;
+.
 cts:generation
   rdf:type owl:Class ;
   rdf:type sh:NodeShape ;
@@ -1229,14 +1142,14 @@ cts:generation
   rdfs:subClassOf cts:Transduction_Schemes ;
   sh:rule cts:add-conjunctive-classes-from-list-net ;
   sh:rule cts:add-disjunctive-classes-from-list-net ;
-  sh:rule cts:add-event ;
-  sh:rule cts:add-state-property ;
   sh:rule cts:complement-composite-class ;
-  sh:rule cts:compute-domain-range-of-event-object-properties ;
-  sh:rule cts:compute-domain-range-of-state-property-object-properties ;
   sh:rule cts:generate-atom-class ;
   sh:rule cts:generate-atom-instance ;
   sh:rule cts:generate-composite-class-from-list-net ;
+  sh:rule cts:old_add-event ;
+  sh:rule cts:old_add-state-property ;
+  sh:rule cts:old_compute-domain-range-of-event-object-properties ;
+  sh:rule cts:old_compute-domain-range-of-state-property-object-properties ;
 .
 cts:init-conjunctive-atom-list-net
   rdf:type sh:SPARQLRule ;
@@ -1444,6 +1357,32 @@ WHERE {
 }""" ;
   sh:order 2.342 ;
 .
+cts:link-classes-by-relation-property
+  rdf:type sh:SPARQLRule ;
+  rdfs:label "link-classes-by-relation-property" ;
+  sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
+PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
+PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
+PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
+PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
+PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
+PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
+PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
+PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
+
+# -- Link two classes by relation property (according existence of domain and range)
+CONSTRUCT { 
+   # relation between domain/range classes
+   ?domainClass ?propertyUri ?rangeClass.
+}
+WHERE {
+   # Relation Net (net1)
+   ?propertyUri rdfs:domain ?domainClass.
+   ?propertyUri rdfs:range ?rangeClass.
+}""" ;
+  sh:order 3.33 ;
+.
 cts:link-to-scope-entry
   rdf:type sh:SPARQLRule ;
   sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
@@ -1479,6 +1418,396 @@ cts:net_extension
   rdfs:label "net extension" ;
   rdfs:subClassOf cts:Transduction_Schemes ;
 .
+cts:old_add-event
+  rdf:type sh:SPARQLRule ;
+  rdfs:label "add-event" ;
+  sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
+PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
+PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
+PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
+PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
+PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
+PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
+PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
+PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
+
+# -- Add Verb class / instance in System Ontology
+CONSTRUCT { 
+   # Classification
+   ?newEventUri rdfs:subClassOf ?eventClassUri.
+   ?newEventUri rdfs:label ?eventLabel.
+   ?newEventUri sys:from_structure ?req.
+   # Object Property
+   ?newEventObjectPropertyUri a owl:ObjectProperty.
+   ?newEventObjectPropertyUri rdfs:subPropertyOf ?eventObjectPropertyUri.
+   ?newEventObjectPropertyUri rdfs:label ?verbConcept.
+   ?newEventObjectPropertyUri sys:from_structure ?req.
+   ?actorInstanceUri ?newEventObjectPropertyUri ?targetInstanceUri.
+}
+WHERE {
+   # net1: entity
+   ?net1 a net:Instance.
+   ?net1 net:type net:atom.
+   ?net1 net:atomOf sys:Event.
+   ?net1 net:has_structure ?req.
+   ?net1 net:has_verb ?verbObject1.
+   ?verbObject1 net:has_parent_class ?verbClass.	
+   ?verbObject1 net:has_concept ?verbConcept.
+   ?net1 net:has_actor ?actorObject1.
+   ?actorObject1 net:has_parent_class ?actorClass.	
+   ?actorObject1 net:has_concept ?actorConcept.
+   ?actorObject1 net:has_instance ?actorInstance.
+   ?actorObject1 net:has_instance_uri ?actorInstanceUri.  
+   ?net1 net:has_target ?targetObject1.
+   ?targetObject1 net:has_parent_class ?targetClass.	
+   ?targetObject1 net:has_concept ?targetConcept.
+   ?targetObject1 net:has_instance ?targetInstance. 
+   ?targetObject1 net:has_instance_uri ?targetInstanceUri. 
+   # Label: event
+   BIND (concat(?actorConcept, '-', ?verbConcept) AS ?e1).
+   BIND (concat(?e1, '-', ?targetConcept) AS ?eventLabel).
+   # URI (for classes)
+   sys:Structure sys:has_frame_uri ?frameURI.
+   sys:Event sys:is_class ?eventClass.
+   BIND (concat( ?frameURI, ?eventClass) AS ?c1).
+   BIND (concat(?c1, '_', ?eventLabel) AS ?c2).
+   BIND (uri( ?c1) AS ?eventClassUri).
+   BIND (uri(?c2) AS ?newEventUri).
+   # URI (for object property)
+   sys:Event sys:has_object_property ?eventObjectProperty.
+   BIND (concat( ?frameURI, ?eventObjectProperty) AS ?o1).
+   BIND (concat(?o1, '#', ?verbConcept) AS ?o2).
+   BIND (uri( ?o1) AS ?eventObjectPropertyUri).
+   BIND (uri( ?o2) AS ?newEventObjectPropertyUri).
+}""" ;
+  sh:order 0.331 ;
+.
+cts:old_add-state-property
+  rdf:type sh:SPARQLRule ;
+  rdfs:label "add-event" ;
+  sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
+PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
+PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
+PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
+PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
+PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
+PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
+PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
+PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
+
+# -- Add Verb class / instance in System Ontology
+CONSTRUCT { 
+   # Classification
+   ?newStatePropertyUri rdfs:subClassOf ?statePropertyClassUri.
+   ?newStatePropertyUri rdfs:label ?statePropertyLabel.
+   ?newStatePropertyUri sys:from_structure ?req.
+   # Object Property
+   ?newStatePropertyObjectPropertyUri a owl:ObjectProperty.
+   ?newStatePropertyObjectPropertyUri rdfs:subPropertyOf ?statePropertyObjectPropertyUri.
+   ?newStatePropertyObjectPropertyUri rdfs:label ?verbConcept.
+   ?newStatePropertyObjectPropertyUri sys:from_structure ?req.
+   ?actorInstanceUri ?newStatePropertyObjectPropertyUri ?targetInstanceUri.
+}
+WHERE {
+   # net1: state property
+   ?net1 a net:Instance.
+   ?net1 net:type net:atom.
+   ?net1 net:atomOf sys:State_Property.
+   ?net1 net:has_structure ?req.
+   ?net1 net:has_verb ?verbObject1.
+   ?verbObject1 net:has_parent_class ?verbClass.	
+   ?verbObject1 net:has_concept ?verbConcept.
+   ?net1 net:has_actor ?actorObject1.
+   ?actorObject1 net:has_parent_class ?actorClass.	
+   ?actorObject1 net:has_concept ?actorConcept.
+   ?actorObject1 net:has_instance ?actorInstance.
+   ?actorObject1 net:has_instance_uri ?actorInstanceUri.  
+   ?net1 net:has_target ?targetObject1.
+   ?targetObject1 net:has_parent_class ?targetClass.	
+   ?targetObject1 net:has_concept ?targetConcept.
+   ?targetObject1 net:has_instance ?targetInstance. 
+   ?targetObject1 net:has_instance_uri ?targetInstanceUri. 
+   # Label: event
+   BIND (concat(?actorConcept, '-', ?verbConcept) AS ?e1).
+   BIND (concat(?e1, '-', ?targetConcept) AS ?statePropertyLabel).
+   # URI (for classes)
+   sys:Structure sys:has_frame_uri ?frameURI.
+   sys:State_Property sys:is_class ?statePropertyClass.
+   BIND (concat( ?frameURI, ?statePropertyClass) AS ?c1).
+   BIND (concat(?c1, '_', ?statePropertyLabel) AS ?c2).
+   BIND (uri( ?c1) AS ?statePropertyClassUri).
+   BIND (uri(?c2) AS ?newStatePropertyUri).
+   # URI (for object property)
+   sys:State_Property sys:has_object_property ?statePropertyObjectProperty.
+   BIND (concat( ?frameURI, ?statePropertyObjectProperty) AS ?o1).
+   BIND (concat(?o1, '#', ?verbConcept) AS ?o2).
+   BIND (uri( ?o1) AS ?statePropertyObjectPropertyUri).
+   BIND (uri( ?o2) AS ?newStatePropertyObjectPropertyUri).
+}""" ;
+  sh:order 0.331 ;
+.
+cts:old_compose-agt-verb-obj-as-simple-event
+  rdf:type sh:SPARQLRule ;
+  sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
+PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
+PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
+PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
+PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
+PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
+PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
+PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
+PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
+
+# -- Compose a subject (agt), an action Verb and an object (obj) to obtain an event    
+CONSTRUCT {
+   # Net: Event
+   ?newNet a net:Instance.
+   ?newNet net:type net:atom.
+   ?newNet net:atomOf sys:Event.
+   ?newNet net:has_structure ?req.
+   ?newNet net:has_node ?uw1, ?uw2, ?uw3.
+   ?newNet net:has_actor ?actorObject.	
+   ?newNet net:has_verb ?verbObject.	
+   ?newNet net:has_target ?targetObject.	
+   ?newNet net:has_possible_domain ?domainClass.	
+   ?newNet net:has_possible_range ?rangeClass.	
+}
+WHERE {
+   # net1: verb
+   ?net1 a net:Instance.
+   ?net1 net:type net:atom.
+   ?net1 net:atomOf sys:action_verb.
+   ?net1 net:has_structure ?req.
+   ?net1 net:has_node ?uw1.
+   ?net1 net:has_atom ?verbObject.
+   # net2: entity (actor)
+   ?net2 a net:Instance.
+   ?net2 net:type net:atom.
+   # -- old --- ?net2 net:atomOf sys:Entity.
+   ?net2 net:has_structure ?req.
+   ?net2 net:has_node ?uw2.
+   ?net2 net:has_atom ?actorObject.
+   # net3: entity (target)
+   ?net3 a net:Instance.
+   ?net3 net:type net:atom.
+   # -- old --- ?net3 net:atomOf sys:Entity.
+   ?net3 net:has_structure ?req.
+   ?net3 net:has_node ?uw3.
+   ?net3 net:has_atom ?targetObject.
+   # condition: agt(net1, net2) et obj(net1, net3)
+   ?uw1 unl:agt ?uw2.
+   ?uw1 (unl:obj|unl:res) ?uw3.	
+   # Label: Id
+   ?uw1 unl:has_id ?uw1Id.
+   ?uw2 unl:has_id ?uw2Id.
+   ?uw3 unl:has_id ?uw3Id.
+   # Possible domain/range
+   ?actorObject net:has_instance ?actorObjectInstance.
+   ?allActorObject net:has_instance ?actorObjectInstance.
+   ?allActorObject net:has_concept ?domainClass.	
+   ?targetObject net:has_instance ?targetObjectInstance.
+   ?allTargetObject net:has_instance ?targetObjectInstance.
+   ?allTargetObject net:has_concept ?rangeClass.	   
+   # URI (for Event Net)
+   cprm:Config_Parameters cprm:netURI ?netURI.
+   net:event rdfs:label ?eventLabel.
+   BIND (concat( ?netURI, ?eventLabel, '_') AS ?n1).
+   BIND (concat(?n1, ?uw1Id, '-', ?uw2Id, '-', ?uw3Id) AS ?n2).
+   BIND (uri(?n2) AS ?newNet).
+}""" ;
+  sh:order 0.241 ;
+.
+cts:old_compose-aoj-verb-obj-as-simple-state-property
+  rdf:type sh:SPARQLRule ;
+  sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
+PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
+PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
+PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
+PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
+PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
+PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
+PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
+PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
+
+# -- Compose a subject (aoj), an attributibe Verb and an object (obj) / result (res) to obtain a state property
+CONSTRUCT {
+   # Net: State Property
+   ?newNet a net:Instance.
+   ?newNet net:type net:atom.
+   ?newNet net:atomOf sys:State_Property.
+   ?newNet net:has_structure ?req.
+   ?newNet net:has_node ?uw1, ?uw2, ?uw3.
+   ?newNet net:has_actor ?actorObject.	
+   ?newNet net:has_verb ?verbObject.	
+   ?newNet net:has_target ?targetObject.	
+   ?newNet net:has_possible_domain ?domainClass.	
+   ?newNet net:has_possible_range ?rangeClass.	
+}
+WHERE {
+   # net1: verb
+   ?net1 a net:Instance.
+   ?net1 net:type net:atom.
+   ?net1 net:atomOf sys:attributive_verb.
+   ?net1 net:has_structure ?req.
+   ?net1 net:has_node ?uw1.
+   ?net1 net:has_atom ?verbObject.
+   # net2: entity (actor)
+   ?net2 a net:Instance.
+   ?net2 net:type net:atom.
+   # -- old --- ?net2 net:atomOf sys:Entity.
+   ?net2 net:has_structure ?req.
+   ?net2 net:has_node ?uw2.
+   ?net2 net:has_atom ?actorObject.
+   # net3: entity (target)
+   ?net3 a net:Instance.
+   ?net3 net:type net:atom.
+   # -- old --- ?net3 net:atomOf sys:Entity.
+   ?net3 net:has_structure ?req.
+   ?net3 net:has_node ?uw3.
+   ?net3 net:has_atom ?targetObject.
+   # condition: aoj(net1, net2) et obj(net1, net3)
+   ?uw1 unl:aoj ?uw2.
+   ?uw1 (unl:obj|unl:res) ?uw3.	
+   # Label: Id
+   ?uw1 unl:has_id ?uw1Id.
+   ?uw2 unl:has_id ?uw2Id.
+   ?uw3 unl:has_id ?uw3Id.
+   # Possible domain/range
+   ?actorObject net:has_instance ?actorObjectInstance.
+   ?allActorObject net:has_instance ?actorObjectInstance.
+   ?allActorObject net:has_concept ?domainClass.	
+   ?targetObject net:has_instance ?targetObjectInstance.
+   ?allTargetObject net:has_instance ?targetObjectInstance.
+   ?allTargetObject net:has_concept ?rangeClass.	   
+   # URI (for State Property Net)
+   cprm:Config_Parameters cprm:netURI ?netURI.
+   net:state_property rdfs:label ?statePropertyLabel.
+   BIND (concat( ?netURI, ?statePropertyLabel, '_') AS ?n1).
+   BIND (concat(?n1, ?uw1Id, '-', ?uw2Id, '-', ?uw3Id) AS ?n2).
+   BIND (uri(?n2) AS ?newNet).
+}""" ;
+  sh:order 0.241 ;
+.
+cts:old_compute-domain-range-of-event-object-properties
+  rdf:type sh:SPARQLRule ;
+  rdfs:label "compute-domain-range-of-object-properties" ;
+  sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
+PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
+PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
+PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
+PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
+PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
+PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
+PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
+PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
+
+# -- Compute domain/range of object properties
+CONSTRUCT { 
+   # Object Property: domain, range and relation between domain/range classes
+   ?newEventObjectPropertyUri rdfs:domain ?domainClass.
+   ?newEventObjectPropertyUri rdfs:range ?rangeClass.
+   ?domainClass ?newEventObjectPropertyUri ?rangeClass. # relation between domain/range classes
+}
+WHERE {
+   # net1: event
+   ?net1 a net:Instance.
+   ?net1 net:type net:atom.
+   ?net1 net:atomOf sys:Event.
+   ?net1 net:has_structure ?req.
+   ?net1 net:has_verb ?verbObject1.	
+   ?verbObject1 net:has_concept ?verbConcept.
+   # domain  
+   ?net1 net:has_possible_domain ?possibleDomainLabel1.
+	?domainClass rdfs:label ?possibleDomainLabel1 .
+   FILTER (
+		NOT EXISTS {
+			?net1 net:has_possible_domain ?possibleDomainLabel2 .
+	        ?anotherDomainClass rdfs:label ?possibleDomainLabel2 .
+			?anotherDomainClass rdfs:subClassOf ?domainClass.
+		}
+	)
+   # range  
+   ?net1 net:has_possible_range ?possibleRangeLabel1.
+   ?rangeClass rdfs:label ?possibleRangeLabel1 .
+   FILTER (
+		NOT EXISTS {
+			?net1 net:has_possible_domain ?possibleRangeLabel2 .
+	        ?anotherRangeClass rdfs:label ?possibleRangeLabel2 .
+			?anotherRangeClass rdfs:subClassOf ?rangeClass.
+		}
+   )
+   # URI (for object property)
+   sys:Structure sys:has_frame_uri ?frameURI.
+   sys:Event sys:has_object_property ?eventObjectProperty.
+   BIND (concat( ?frameURI, ?eventObjectProperty) AS ?o1).
+   BIND (concat(?o1, '#', ?verbConcept) AS ?o2).
+   BIND (uri( ?o2) AS ?newEventObjectPropertyUri).
+}""" ;
+  sh:order 0.332 ;
+.
+cts:old_compute-domain-range-of-state-property-object-properties
+  rdf:type sh:SPARQLRule ;
+  rdfs:label "compute-domain-range-of-object-properties" ;
+  sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
+PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
+PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
+PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
+PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
+PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
+PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
+PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
+PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
+
+# -- Compute domain/range of object properties
+CONSTRUCT { 
+   # Object Property: domain, range and relation between domain/range classes
+   ?objectPropertyUri rdfs:domain ?domainClass.
+   ?objectPropertyUri rdfs:range ?rangeClass.
+   ?domainClass ?objectPropertyUri ?rangeClass. # relation between domain/range classes
+}
+WHERE {
+   # net1: event
+   ?net1 a net:Instance.
+   ?net1 net:type net:atom.
+   ?net1 net:atomOf sys:State_Property.
+   ?net1 net:has_structure ?req.
+   ?net1 net:has_verb ?verbObject1.	
+   ?verbObject1 net:has_concept ?verbConcept.
+   # domain  
+   ?net1 net:has_possible_domain ?possibleDomainLabel1.
+	?domainClass rdfs:label ?possibleDomainLabel1 .
+   FILTER (
+		NOT EXISTS {
+			?net1 net:has_possible_domain ?possibleDomainLabel2 .
+	        ?anotherDomainClass rdfs:label ?possibleDomainLabel2 .
+			?anotherDomainClass rdfs:subClassOf ?domainClass.
+		}
+	)
+   # range  
+   ?net1 net:has_possible_range ?possibleRangeLabel1.
+   ?rangeClass rdfs:label ?possibleRangeLabel1 .
+   FILTER (
+		NOT EXISTS {
+			?net1 net:has_possible_domain ?possibleRangeLabel2 .
+	       ?anotherRangeClass rdfs:label ?possibleRangeLabel2 .
+			?anotherRangeClass rdfs:subClassOf ?rangeClass.
+		}
+   )
+   # URI (for object property)
+   sys:Structure sys:has_frame_uri ?frameURI.
+   sys:State_Property sys:has_object_property ?objectPropertyRef.
+   BIND (concat( ?frameURI, ?objectPropertyRef) AS ?o1).
+   BIND (concat(?o1, '#', ?verbConcept) AS ?o2).
+   BIND (uri( ?o2) AS ?objectPropertyUri).
+}""" ;
+  sh:order 0.332 ;
+.
 cts:postprocessing
   rdf:type owl:Class ;
   rdf:type sh:NodeShape ;
@@ -1531,7 +1860,7 @@ cts:state_property_extraction
   rdf:type sh:NodeShape ;
   rdfs:label "state property extraction" ;
   rdfs:subClassOf cts:net_extension ;
-  sh:rule cts:compose-aoj-verb-obj-as-simple-state-property ;
+  sh:rule cts:old_compose-aoj-verb-obj-as-simple-state-property ;
 .
 cts:verb_extraction
   rdf:type owl:Class ;
diff --git a/frame/system-ontology.ttl b/frame/system-ontology.ttl
index 0e498b68..bb7664ac 100644
--- a/frame/system-ontology.ttl
+++ b/frame/system-ontology.ttl
@@ -13,6 +13,7 @@
 @prefix sys-component: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/component#> .
 @prefix sys-message: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/message#> .
 @prefix sys-place: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/place#> .
+@prefix sys-relation: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/relation/> .
 @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
 
 <https://unsel.tetras-libre.fr/tenet/frame/system-ontology>
@@ -25,6 +26,11 @@ sys:Abstraction
   rdfs:subClassOf sys:Structure ;
   sys:is_class "Abstraction" ;
 .
+sys:Annotation
+  rdf:type rdf:Property ;
+  rdfs:label "structure property" ;
+  rdfs:subPropertyOf sys:Property ;
+.
 sys:Entity
   rdf:type owl:Class ;
   rdfs:label "entity"@en ;
@@ -47,13 +53,26 @@ sys:Feature
   rdfs:subClassOf sys:Structure ;
   sys:is_class "Feature" ;
 .
+sys:ObjectProperty
+  rdf:type rdf:Property ;
+  rdfs:label "Object Property" ;
+  rdfs:subPropertyOf sys:Property ;
+.
+sys:Property
+  rdf:type rdf:Property ;
+  rdfs:label "Property" ;
+  sys:has_reference "property" ;
+.
 sys:Relation
   rdf:type rdf:Property ;
   rdfs:label "system property" ;
+  rdfs:subPropertyOf sys:Property ;
+  sys:has_frame_uri "https://unsel.tetras-libre.fr/tenet/frame/system-ontology/relation/" ;
 .
 sys:Seed
   rdf:type rdf:Property ;
   rdfs:label "seed property" ;
+  rdfs:subPropertyOf sys:Property ;
 .
 sys:State_Property
   rdf:type owl:Class ;
@@ -67,6 +86,7 @@ sys:Structure
   rdf:type owl:Class ;
   rdfs:label "System Ontology Structure" ;
   sys:has_frame_uri "https://unsel.tetras-libre.fr/tenet/frame/system-ontology/" ;
+  sys:has_reference "class" ;
 .
 sys:Verb
   rdf:type owl:Class ;
@@ -87,9 +107,9 @@ sys:action
   rdf:type rdf:Property ;
   rdfs:label "action" ;
   rdfs:subPropertyOf sys:Relation ;
-  sys:has_mother_property "sys:action" ;
-  sys:has_reference "relation_action" ;
-  sys:has_restriction_on_class "action_verb" ;
+  sys:has_mother_property sys:action ;
+  sys:has_reference "action" ;
+  sys:has_restriction_on_class sys:action_verb ;
 .
 sys:action_verb
   rdf:type owl:Class ;
@@ -118,10 +138,6 @@ sys:attributive_verb
   sys:has_restriction "icl>be" ;
   sys:is_class "attributive_verb" ;
 .
-sys:classProperty
-  rdf:type rdf:Property ;
-  rdfs:label "System Property" ;
-.
 sys:component
   rdf:type owl:Class ;
   rdfs:label "component"@en ;
@@ -139,22 +155,17 @@ sys:component
 sys:entityClassProperty
   rdf:type rdf:Property ;
   rdfs:label "entity property" ;
-  rdfs:subPropertyOf sys:classProperty ;
+  rdfs:subPropertyOf sys:ObjectProperty ;
 .
 sys:eventClassProperty
   rdf:type rdf:Property ;
   rdfs:label "event property" ;
-  rdfs:subPropertyOf sys:classProperty ;
-.
-sys:eventObjectProperty
-  rdf:type rdf:Property ;
-  rdfs:label "event object property" ;
-  rdfs:subPropertyOf sys:objectProperty ;
+  rdfs:subPropertyOf sys:ObjectProperty ;
 .
 sys:from_structure
   rdf:type rdf:Property ;
   rdfs:label "from structure" ;
-  rdfs:subPropertyOf sys:classProperty ;
+  rdfs:subPropertyOf sys:ObjectProperty ;
 .
 sys:has_actor
   rdf:type rdf:Property ;
@@ -175,22 +186,18 @@ sys:has_frame_base_uri
 sys:has_frame_uri
   rdf:type rdf:Property ;
   rdfs:label "has frame uri" ;
-  rdfs:subPropertyOf sys:structureProperty ;
+  rdfs:subPropertyOf sys:Annotation ;
 .
 sys:has_mother_class
   rdf:type rdf:Property ;
   rdfs:label "has mother class" ;
   rdfs:range owl:Thing ;
   rdfs:subPropertyOf sys:Seed ;
-  sys:has_mother_class "Entity" ;
-  sys:has_restriction "icl>administrator" ;
-  sys:has_restriction "icl>operator" ;
-  sys:has_restriction "icl>person" ;
-  sys:is_class "agent" ;
 .
 sys:has_mother_property
   rdf:type rdf:Property ;
   rdfs:label "has mother property" ;
+  rdfs:range rdf:Property ;
   rdfs:subPropertyOf sys:Seed ;
 .
 sys:has_object_property
@@ -213,6 +220,7 @@ sys:has_restriction
 sys:has_restriction_on_class
   rdf:type rdf:Property ;
   rdfs:label "has restriction on  class" ;
+  rdfs:range owl:Thing ;
   rdfs:subPropertyOf sys:Seed ;
 .
 sys:has_restriction_on_unl_relation_source
@@ -252,10 +260,6 @@ sys:message
   sys:has_restriction "icl>communication" ;
   sys:is_class "message" ;
 .
-sys:objectProperty
-  rdf:type rdf:Property ;
-  rdfs:label "object property" ;
-.
 sys:place
   rdf:type owl:Class ;
   rdfs:label "lieu"@fr ;
@@ -270,23 +274,14 @@ sys:stateProperty
   rdf:type rdf:Property ;
   rdfs:label "state property" ;
   rdfs:subPropertyOf sys:Relation ;
-  sys:has_mother_property "sys:stateProperty" ;
-  sys:has_reference "relation_stateProperty" ;
-  sys:has_restriction_on_class "attributive_verb" ;
-.
-sys:statePropertyObjectProperty
-  rdf:type rdf:Property ;
-  rdfs:label "state property object property" ;
-  rdfs:subPropertyOf sys:objectProperty ;
-.
-sys:structureProperty
-  rdf:type rdf:Property ;
-  rdfs:label "structure property" ;
+  sys:has_mother_property sys:stateProperty ;
+  sys:has_reference "stateProperty" ;
+  sys:has_restriction_on_class sys:attributive_verb ;
 .
 sys:verbClassProperty
   rdf:type rdf:Property ;
   rdfs:label "verb property" ;
-  rdfs:subPropertyOf sys:classProperty ;
+  rdfs:subPropertyOf sys:ObjectProperty ;
 .
 sys:verbType
   rdf:type rdf:Property ;
diff --git a/prepare_work_data.py b/prepare_work_data.py
index 95ec501c..3e914c96 100644
--- a/prepare_work_data.py
+++ b/prepare_work_data.py
@@ -152,18 +152,23 @@ def finalize_export_file(export_file):
     with open(export_file, "wt") as file:
         x = x.replace(
             "@prefix sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/> .",
-            """@prefix sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/> .
-@prefix sys-Event: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/Event#> .
-@prefix sys-event: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/eventObjectProperty#> .
-@prefix sys-State_Property: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/State_Property#> .
-@prefix sys-stateProperty: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/statePropertyObjectProperty#> .
-@prefix sys-abstract_thing: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/abstract_thing#> .
-@prefix sys-action_verb: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/action_verb#> .
-@prefix sys-agent: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/agent#> .
-@prefix sys-attributive_verb: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/attributive_verb#> .
-@prefix sys-component: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/component#> .
-@prefix sys-message: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/message#> .
-@prefix sys-place: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/place#> .""")
+            """
+            @prefix sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/> .
+            @prefix sys-class: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/class/> .
+            @prefix sys-property: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/property/> .
+            @prefix sys-relation: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/relation/> .
+            @prefix sys-Event: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/Event#> .
+            @prefix sys-event: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/eventObjectProperty#> .
+            @prefix sys-State_Property: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/State_Property#> .
+            @prefix sys-stateProperty: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/statePropertyObjectProperty#> .
+            @prefix sys-abstract_thing: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/abstract_thing#> .
+            @prefix sys-action_verb: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/action_verb#> .
+            @prefix sys-agent: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/agent#> .
+            @prefix sys-attributive_verb: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/attributive_verb#> .
+            @prefix sys-component: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/component#> .
+            @prefix sys-message: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/message#> .
+            @prefix sys-place: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/place#> .
+            """)
         file.write(x)
         
 #==============================================================================
@@ -204,9 +209,9 @@ def run(corpus, source_ref, target_ref):
 if __name__ == '__main__':
     target_ref = "system"
     #target_ref = "environment"
-    run(req_100, 'R100e', target_ref) 
-    run(req_200, 'R200e', target_ref)
-    run(req_300, 'R300e', target_ref) 
+    run(req_100, 'R100f', target_ref) 
+    run(req_200, 'R200f', target_ref)
+    run(req_300, 'R300f', target_ref) 
     #run(corpus_40, 'Corpus-CCTP-40e', target_ref)
     #run(corpus_ERTMS, 'Corpus-ERTMS', target_ref)
     #run(corpus_PEV, 'Corpus-PEV', target_ref)
-- 
GitLab