diff --git a/CHANGELOG b/CHANGELOG
index 029fdce916217331a7ea173927acb1cb55319f24..0831acebdad1e637d8f6a75b93fc76bb6c7d1181 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -5,19 +5,29 @@ All notable changes to this project will be documented in this file.
 
 -------------------------------------------------------------------------------
 
-## [0.2.0] - 2021-09-28            
+## [0.2.0] - 2021-10-19                 DGA Demo 1            
 
 ### Added
+- CTS to define URIs in net objects (net: Object) 
+- Generic CTS to generate atom classes and instances
+- Generic CTS to create mod list nets
+- Generic CTS to generate relation properties
 
 ### Changed
 - Fusion of CTS for atom elements (entity, feature, verb, ...)
 - Addition of seeds in system ontology
-- Abandonment of parameter ontology for frame ontologies 
+- Abandonment of parameter ontology for frame ontologies  
+- Shapes refactoring (preprocessing rules to dispatch shaclRule)
+- Update CTS to improve composition of atom and list 
+
+### Fix
+- Fix bug in state property generation
+- Patch for DGA demo in generation shapes
 
 
 -------------------------------------------------------------------------------
 
-## [0.1.3] - 2021-09-17                 Demo CS 2
+## [0.1.3] - 2021-09-17                 CS Demo 2
 
 ### Added
 - Relation between classes/instances and requirements 
@@ -29,7 +39,7 @@ All notable changes to this project will be documented in this file.
 - Order of CTS (Compositional Transduction Schemes)
 
 
-## [0.1.2] - 2021-09-08                 Demo CS 1
+## [0.1.2] - 2021-09-08                 CS Demo 1
 
 ### Added
 - Transduction Schemes to extract Entity classes and instances
diff --git a/config/semantic-net.ttl b/config/semantic-net.ttl
index f488ec67b13ed4ba25e078acbe1895cabae83593..accde6225417bc1624fbd36e7eed179a73d51740 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" ;
@@ -150,6 +145,11 @@ net:has_mother_class
   rdfs:label "has mother class" ;
   rdfs:subPropertyOf net:objectValue ;
 .
+net:has_mother_class_uri
+  rdf:type rdf:Property ;
+  rdfs:label "parent class uri" ;
+  rdfs:subPropertyOf net:objectValue ;
+.
 net:has_node
   rdf:type rdf:Property ;
   rdfs:label "UNL Node" ;
@@ -185,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)" ;
@@ -193,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 ;
@@ -248,6 +258,16 @@ net:objectValue
   rdfs:label "valuations"@fr ;
   rdfs:subPropertyOf net:objectProperty ;
 .
+net:relation
+  rdf:type owl:Class ;
+  rdfs:label "relation" ;
+  rdfs:subClassOf net:Type ;
+.
+net:relationOf
+  rdf:type rdf:Property ;
+  rdfs:label "relation of" ;
+  rdfs:subPropertyOf net:typeProperty ;
+.
 net:state_property
   rdf:type owl:Class ;
   rdfs:label "stateProperty" ;
diff --git a/config/transduction-schemes.ttl b/config/transduction-schemes.ttl
index 3a11d2048ea3fc42063341d425e9e4a151ae48e1..2999954d85c4f240e7b77ec3c2f44e7071c9cb33 100644
--- a/config/transduction-schemes.ttl
+++ b/config/transduction-schemes.ttl
@@ -24,13 +24,7 @@ cts:Transduction_Schemes
   rdfs:label "Transduction Schemes" ;
   rdfs:subClassOf owl:Thing ;
 .
-cts:abstraction_extraction
-  rdf:type owl:Class ;
-  rdf:type sh:NodeShape ;
-  rdfs:label "abstraction extension" ;
-  rdfs:subClassOf cts:net_extension ;
-.
-cts:add-conjunctive-entity-classes
+cts:add-conjunctive-classes-from-list-net
   rdf:type sh:SPARQLRule ;
   rdfs:label "add-conjunctive-entity-classes" ;
   sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
@@ -44,63 +38,51 @@ 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 Disjunctive Entity classes in System Ontology
+# -- Add disjunctive classes in Ontology
 CONSTRUCT { 
    # Classification
-   ?subEntity23Uri rdfs:subClassOf ?mainEntityUri.
-   ?subEntity23Uri rdfs:label ?subEntity23.
-   ?subEntity23Uri sys:from_structure ?req.
-   ?subEntity23Uri  
+   ?newClassUri rdfs:subClassOf ?parentUri.
+   ?newClassUri rdfs:label ?newClassLabel.
+   ?newClassUri sys:from_structure ?req.
+   ?newClassUri  
 		owl:equivalentClass [	a owl:Class ;
-                                owl:intersectionOf ( ?subEntity2Uri ?subEntity3Uri ) ] .
+                                owl:intersectionOf ( ?item1Uri ?item2Uri ) ] .
    # Instantiation (extension)
-   ?mainInstanceUri rdf:type ?subEntity23Uri.
+   ?instanceUri rdf:type ?newClassUri.
 }
 WHERE {
    # net1: Composite List
    ?net1 a net:Instance.
    ?net1 net:type net:list.
    ?net1 net:listOf net:composite.
-   # -- old --- ?net1 net:type net:entity_class_list.
    ?net1 net:has_structure ?req.
-   # -- old --- ?net1 net:entityClass ?entityClass.
-   ?net1 net:has_node ?uw2, ?uw3.
+   ?net1 net:has_node ?uw1, ?uw2.
    ?net1 net:has_parent ?parentObject.	
-   ?parentObject net:has_parent_class ?parentClass. # -- old --- ?entityClass
-   ?parentObject net:has_concept ?mainEntity.
-   ?net1 net:has_item ?subEntityObject2, ?subEntityObject3.	
-   ?subEntityObject2 net:concept ?subEntity2.
-   ?subEntityObject2 net:has_node ?uw2.
-   ?subEntityObject3 net:has_concept ?subEntity3.
-   ?subEntityObject3 net:has_node ?uw3.
-   ?subEntityObject3 net:has_instance ?mainInstance.	
+   ?parentObject net:has_class_uri ?parentUri.
+   ?parentObject net:has_instance_uri ?instanceUri.	
+   ?parentObject net:has_concept ?parentConcept.
+   ?net1 net:has_item ?itemObject1, ?itemObject2.	
+   ?itemObject1 net:has_class_uri ?item1Uri.
+   ?itemObject1 net:has_node ?uw1.
+   ?itemObject2 net:has_class_uri ?item2Uri.
+   ?itemObject2 net:has_node ?uw2.
    # extension: disjunction of UW
-   ?uw2 unl:and ?uw3.
+   ?uw1 unl:and ?uw2.
    # Label(s) / URI (for classes)
+   ?uw1 rdfs:label ?uw1Label.
    ?uw2 rdfs:label ?uw2Label.
-   ?uw3 rdfs:label ?uw3Label.
+   BIND (strbefore(?uw1Label, '(') AS ?concept1)
    BIND (strbefore(?uw2Label, '(') AS ?concept2)
-   BIND (strbefore(?uw3Label, '(') AS ?concept3)
-   BIND (concat(?concept2, '-or-', ?concept3) AS ?concept23)
-   BIND (concat(?concept23, '_', ?mainEntity) AS ?subEntity23).
+   BIND (concat(?concept1, '-or-', ?concept2) AS ?disjunctiveConcept)
+   BIND (concat(?disjunctiveConcept, '_', ?parentConcept) AS ?newClassLabel).
    # URI (for classes)
    sys:Structure sys:has_frame_uri ?frameURI.
-   BIND (concat( ?frameURI, ?parentClass) AS ?s1).
-   BIND (concat(?s1, '#', ?mainEntity) AS ?s2).
-   BIND (concat(?s1, '#', ?subEntity2) AS ?s3).
-   BIND (concat(?s1, '#', ?subEntity3) AS ?s4).
-   BIND (concat(?s1, '#', ?subEntity23) AS ?s5).
-   BIND (uri(?s2) AS ?mainEntityUri).
-   BIND (uri(?s3) AS ?subEntity2Uri).
-   BIND (uri(?s4) AS ?subEntity3Uri).
-   BIND (uri(?s5) AS ?subEntity23Uri).
-   # URI (for instance)
-   BIND (concat(?s1, '_', ?mainInstance) AS ?s6).
-   BIND (uri(?s6) AS ?mainInstanceUri).
+   BIND (concat(?frameURI, ?newClassLabel) AS ?s5).
+   BIND (uri(?s5) AS ?newClassUri).
 }""" ;
-  sh:order 3.4 ;
+  sh:order 3.23 ;
 .
-cts:add-disjunctive-entity-classes
+cts:add-disjunctive-classes-from-list-net
   rdf:type sh:SPARQLRule ;
   rdfs:label "add-disjunctive-entity-classes" ;
   sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
@@ -114,65 +96,52 @@ 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 Disjunctive Entity classes in System Ontology
+# -- Add disjunctive classes in Ontology
 CONSTRUCT { 
    # Classification
-   ?subEntity23Uri rdfs:subClassOf ?mainEntityUri.
-   ?subEntity23Uri rdfs:label ?subEntity23.
-   ?subEntity23Uri sys:from_structure ?req.
-   ?subEntity23Uri  
+   ?newClassUri rdfs:subClassOf ?parentUri.
+   ?newClassUri rdfs:label ?newClassLabel.
+   ?newClassUri sys:from_structure ?req.
+   ?newClassUri  
 		owl:equivalentClass [	a owl:Class ;
-                                owl:unionOf ( ?subEntity2Uri ?subEntity3Uri ) ] .
+                                owl:unionOf ( ?item1Uri ?item2Uri ) ] .
    # Instantiation (extension)
-   ?mainInstanceUri rdf:type ?subEntity23Uri.
+   ?instanceUri rdf:type ?newClassUri.
 }
 WHERE {
    # net1: Composite List
    ?net1 a net:Instance.
    ?net1 net:type net:list.
    ?net1 net:listOf net:composite.
-   # -- old --- ?net1 net:type net:entity_class_list.
    ?net1 net:has_structure ?req.
-   # -- old --- ?net1 net:entityClass ?entityClass.
-   ?net1 net:has_node ?uw2, ?uw3.
+   ?net1 net:has_node ?uw1, ?uw2.
    ?net1 net:has_parent ?parentObject.	
-   ?parentObject net:has_parent_class ?parentClass. # -- old --- ?entityClass
-   ?parentObject net:has_concept ?mainEntity.
-   ?net1 net:has_item ?subEntityObject2, ?subEntityObject3.	
-   ?subEntityObject2 net:has_concept ?subEntity2.
-   ?subEntityObject2 net:has_node ?uw2.
-   ?subEntityObject3 net:has_concept ?subEntity3.
-   ?subEntityObject3 net:has_node ?uw3.	
-   ?subEntityObject3 net:has_instance ?mainInstance.	
+   ?parentObject net:has_class_uri ?parentUri.
+   ?parentObject net:has_instance_uri ?instanceUri.	
+   ?parentObject net:has_concept ?parentConcept.
+   ?net1 net:has_item ?itemObject1, ?itemObject2.	
+   ?itemObject1 net:has_class_uri ?item1Uri.
+   ?itemObject1 net:has_node ?uw1.
+   ?itemObject2 net:has_class_uri ?item2Uri.
+   ?itemObject2 net:has_node ?uw2.
    # extension: disjunction of UW
-   ?uw2 unl:or ?uw3.
+   ?uw1 unl:or ?uw2.
    # Label(s) / URI (for classes)
+   ?uw1 rdfs:label ?uw1Label.
    ?uw2 rdfs:label ?uw2Label.
-   ?uw3 rdfs:label ?uw3Label.
+   BIND (strbefore(?uw1Label, '(') AS ?concept1)
    BIND (strbefore(?uw2Label, '(') AS ?concept2)
-   BIND (strbefore(?uw3Label, '(') AS ?concept3)
-   BIND (concat(?concept2, '-or-', ?concept3) AS ?concept23)
-   BIND (concat(?concept23, '_', ?mainEntity) AS ?subEntity23).
+   BIND (concat(?concept1, '-or-', ?concept2) AS ?disjunctiveConcept)
+   BIND (concat(?disjunctiveConcept, '_', ?parentConcept) AS ?newClassLabel).
    # URI (for classes)
    sys:Structure sys:has_frame_uri ?frameURI.
-   BIND (concat( ?frameURI, ?parentClass) AS ?s1).
-   BIND (concat(?s1, '#', ?mainEntity) AS ?s2).
-   BIND (concat(?s1, '#', ?subEntity2) AS ?s3).
-   BIND (concat(?s1, '#', ?subEntity3) AS ?s4).
-   BIND (concat(?s1, '#', ?subEntity23) AS ?s5).
-   BIND (uri(?s2) AS ?mainEntityUri).
-   BIND (uri(?s3) AS ?subEntity2Uri).
-   BIND (uri(?s4) AS ?subEntity3Uri).
-   BIND (uri(?s5) AS ?subEntity23Uri).
-   # URI (for instance)
-   BIND (concat(?s1, '_', ?mainInstance) AS ?s6).
-   BIND (uri(?s6) AS ?mainInstanceUri).
+   BIND (concat(?frameURI, ?newClassLabel) AS ?s5).
+   BIND (uri(?s5) AS ?newClassUri).
 }""" ;
-  sh:order 3.4 ;
+  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#>
@@ -184,66 +153,40 @@ 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.
-   # Instantiation !!! TODO !!!
-   # -- old --- ?mainInstanceUri a ?newEventUri.
-   # -- old --- ?mainInstanceUri rdfs:label ?mainInstance.
-   # -- old --- ?mainInstanceUri sys:from_structure ?req.
-   # Object Property
-   ?newEventObjectPropertyUri a owl:ObjectProperty.
-   ?newEventObjectPropertyUri rdfs:subPropertyOf ?eventObjectPropertyUri.
-   ?newEventObjectPropertyUri rdfs:label ?verbConcept.
-   # -- old --- ?newEventObjectPropertyUri rdfs:domain ?actorUri.
-   # -- old --- ?newEventObjectPropertyUri rdfs:range ?targetUri.
-   ?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).
+   # -- Relation Object
+   ?net1 net:has_relation ?relationObject.	
+   ?relationObject 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 | unl:aoj ) ?uw2.
+   # Possible Domain
+   { ?sourceObject net:has_concept ?domainClass. }
+   UNION
+   { ?sourceObject net:has_instance ?sourceInstance.
+   ?anySourceObject net:has_instance ?sourceInstance.
+   ?anySourceObject net:has_concept ?domainClass. }	
 }""" ;
-  sh:order 3.1 ;
+  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#>
@@ -255,118 +198,80 @@ 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.
-   # Instantiation !!! TODO !!!
-   # -- old --- ?mainInstanceUri a ?newStatePropertyUri.
-   # -- old --- ?mainInstanceUri rdfs:label ?mainInstance.
-   # -- old --- ?mainInstanceUri sys:from_structure ?req.
-   # Object Property
-   ?newStatePropertyObjectPropertyUri a owl:ObjectProperty.
-   ?newStatePropertyObjectPropertyUri rdfs:subPropertyOf ?statePropertyObjectPropertyUri.
-   ?newStatePropertyObjectPropertyUri rdfs:label ?verbConcept.
-   # -- old --- ?newStatePropertyObjectPropertyUri rdfs:domain ?actorUri.
-   # -- old --- ?newStatePropertyObjectPropertyUri rdfs:range ?targetUri.
-   ?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:instanceUri ?actorInstanceUri.  
-   ?net1 net:has_target ?targetObject1.
-   ?targetObject1 net:has_parent_class ?targetClass.	
-   ?targetObject1 net:has_concept ?targetConcept.
-   ?targetObject1 net:has_instance ?targetInstance. 
-   ?targetObject1 net:instanceUri ?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).
-   # URI (for instance)
-   # -- old --- BIND (concat( ?frameURI, ?eventClass) AS ?i1).
-   # -- old --- BIND (concat(?i1, '_', ?mainInstance) AS ?i2).
-   # -- old --- BIND (uri(?i2) AS ?mainInstanceUri).
-   # URI (for Entity classes)
-   # -- old --- fprm:System_Ontology fprm:frameURI ?frameURI.
-   # -- old --- BIND (concat( ?frameURI, ?actorClass) AS ?e1a).
-   # -- old --- BIND (concat(?e1a, '#', ?actorConcept) AS ?e1b).
-   # -- old --- BIND (concat(?e1a, '_', ?actorInstance) AS ?e1c).
-   # -- old --- BIND (uri(?e1a) AS ?actorClassUri).
-   # -- old --- BIND (uri(?e1b) AS ?actorUri).
-   # -- old --- BIND (uri(?e1c) AS ?actorInstanceUri).
-   # -- old --- BIND (concat( ?frameURI, ?targetClass) AS ?e2a).
-   # -- old --- BIND (concat(?e2a, '#', ?targetConcept) AS ?e2b).
-   # -- old --- BIND (concat(?e2a, '_', ?targetInstance) AS ?e2c).
-   # -- old --- BIND (uri(?e2a) AS ?targetClassUri).
-   # -- old --- BIND (uri(?e2b) AS ?targetUri).
-   # -- old --- BIND (uri(?e2c) AS ?targetInstanceUri).
+   # -- Relation Object
+   ?net1 net:has_relation ?relationObject.	
+   ?relationObject 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_concept ?rangeClass. }
+   UNION
+   { ?targetObject net:has_instance ?targetObjectInstance.
+   ?allTargetObject net:has_instance ?targetObjectInstance.
+   ?allTargetObject net:has_concept ?rangeClass. }	  
 }""" ;
-  sh:order 3.1 ;
+  sh:order 2.42 ;
 .
 cts:batch_execution
   rdf:type owl:Class ;
   rdf:type sh:NodeShape ;
   rdfs:label "batch execution" ;
   rdfs:subClassOf cts:Transduction_Schemes ;
-  sh:rule cts:add-conjunctive-entity-classes ;
-  sh:rule cts:add-disjunctive-entity-classes ;
-  sh:rule cts:add-event ;
-  sh:rule cts:add-state-property ;
+  sh:rule cts:add-conjunctive-classes-from-list-net ;
+  sh:rule cts:add-disjunctive-classes-from-list-net ;
+  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-property-uri-of-relation-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 ;
   sh:rule cts:define-uw-id ;
   sh:rule cts:extend-atom-list-net ;
   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-instances-by-relation-property ;
   sh:rule cts:link-to-scope-entry ;
   sh:rule cts:specify-axis-of-atom-list-net ;
-.
-cts:batch_execution_1
-  rdf:type cts:batch_execution ;
-  rdfs:label "batch execution 1" ;
+  sh:rule cts:update-batch-execution-rules ;
+  sh:rule cts:update-generation-class-rules ;
+  sh:rule cts:update-generation-relation-rules ;
+  sh:rule cts:update-generation-rules ;
+  sh:rule cts:update-net-extension-rules ;
+  sh:rule cts:update-preprocessing-rules ;
 .
 cts:bypass-reification
   rdf:type sh:SPARQLRule ;
@@ -392,6 +297,18 @@ WHERE {
 } """ ;
   sh:order 1.1 ;
 .
+cts:class_generation
+  rdf:type owl:Class ;
+  rdf:type sh:NodeShape ;
+  rdfs:label "class 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:complement-composite-class ;
+  sh:rule cts:generate-atom-class ;
+  sh:rule cts:generate-atom-instance ;
+  sh:rule cts:generate-composite-class-from-list-net ;
+.
 cts:complement-composite-class
   rdf:type sh:SPARQLRule ;
   sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
@@ -405,41 +322,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#>
     
-# -- Complement Entity classes with feature relation
+# -- Complement composite classes with feature relation
 CONSTRUCT { 
    # Complement with feature relation
-   ?subEntityUri sys:has_feature ?featureUri.
+   ?compositeClassUri sys:has_feature ?featureUri.
 }
 WHERE {
-   # net1: entity class list
+   # net1: Composite List
    ?net1 a net:Instance.
    ?net1 net:type net:list.
    ?net1 net:listOf net:composite.
-   # -- old --- ?net1 net:entityClass ?entityClass.	
-   ?net1 net:has_parent ?parentObject. 
-   ?parentObject net:has_parent_class ?parentClass. # -- old --- ?entityClass
-   ?net1 net:has_item ?subEntityObject.	
-   ?subEntityObject net:has_concept ?subEntity.	
-   ?subEntityObject net:has_feature ?featureObject.	
-   # object: feature
+   # -- Item
+   ?net1 net:has_item ?itemObject.	
+   ?itemObject net:has_class_uri ?compositeClassUri.	
+   ?itemObject net:has_feature ?featureObject.	
+   # -- Feature
    ?featureObject a net:Object.
-   ?featureObject net:objectType sys:Feature.
-   ?featureObject net:has_node ?FeatureUW.
-   ?featureObject net:has_parent_class ?featureClass.
-   ?featureObject net:has_concept ?featureConcept.
-   # URI: entity class
-   sys:Structure sys:has_frame_uri ?frameURI.
-   BIND (concat( ?frameURI, ?parentClass) AS ?c1).
-   BIND (concat(?c1, '#', ?subEntity) AS ?c2).
-   BIND (uri(?c2) AS ?subEntityUri).
-   # URI: feature class
-   BIND (concat( ?frameURI, ?featureClass) AS ?f1).
-   BIND (concat(?f1, '#', ?featureConcept) AS ?f2).
-   BIND (uri(?f2) AS ?featureUri).
+   ?featureObject net:has_class_uri ?featureUri.	
 }""" ;
-  sh:order 3.3 ;
+  sh:order 3.22 ;
 .
-cts:compose-agt-verb-obj-as-simple-event
+cts:compose-atom-with-list-by-mod-1
   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#>
@@ -451,67 +354,79 @@ 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 Entity (agt), an action Verb and an object Entity (obj) to obtain an event    
-CONSTRUCT {
-   # Net: Event
+    
+# -- Compose an atom net and a list net (with distinct item classes)
+CONSTRUCT { 
+   # Object: Composite
+   ?newObject a net:Object.
+   ?newObject net:objectType net:composite.
+   ?newObject net:has_node ?uw1, ?uw3.
+   ?newObject net:has_mother_class ?net1Mother.
+   ?newObject net:has_parent_class ?net1Class.
+   ?newObject net:has_class ?subConcept.
+   ?newObject net:has_concept ?subConcept.
+   ?newObject net:has_feature ?net2Item.
+   # Net: Composite List
    ?newNet a net:Instance.
-   ?newNet net:type net:atom.
-   ?newNet net:atomOf sys:Event.
+   ?newNet net:type net:list.
+   ?newNet net:type ?listSubType.
+   ?newNet net:listOf net:composite.
    ?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.	
+   ?newNet net:entityClass ?net1ParentClass.
+   ?newNet net:has_parent ?net1Object.	
+   ?newNet net:has_item ?newObject.	
 }
 WHERE {
-   # net1: verb
+   # net1: atom
    ?net1 a net:Instance.
    ?net1 net:type net:atom.
-   ?net1 net:atomOf sys:Verb.
    ?net1 net:has_structure ?req.
    ?net1 net:has_node ?uw1.
-   ?net1 net:has_atom ?verbObject.
-   # net2: entity (actor)
+   ?net1 net:has_atom ?net1Object.
+   ?net1Object net:has_mother_class ?net1Mother.
+   ?net1Object net:has_parent_class ?net1ParentClass.	
+   ?net1Object net:has_class ?net1Class.
+   ?net1Object net:has_concept ?net1Concept.
+   # condition: mod(net1, net2)
+   ?uw1 unl:mod ?uw2.
+   # net2: list
    ?net2 a net:Instance.
-   ?net2 net:type net:atom.
-   ?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.
-   ?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
+   ?net2 net:type net:list.
+   ?net2 net:type ?listSubType.
+   ?net2 net:listOf net:atom.
+   ?net2 net:has_structure ?req. 
+   ?net2 net:has_node ?uw2, ?uw3.
+   ?net2 net:has_item ?net2Item.
+   ?net2Item net:has_node ?uw3.
+   ?net2Item net:has_parent_class ?net2ParentClass.	
+   ?net2Item net:has_concept ?net2Concept.
+   # Filter
+   FILTER NOT EXISTS { ?net2 net:has_node ?uw1 }.
+   FILTER ( ?net1ParentClass != ?net2ParentClass  ).
+   # Label: Id, concept
    ?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)
+   BIND (concat( ?net2Concept, '_', ?net1Concept) AS ?subConcept).
+   # URI (for Object)
    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).
+   cprm:Config_Parameters cprm:objectRef ?objectRef.
+   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)
+   cprm:Config_Parameters cprm:netURI ?netURI.
+   net:list rdfs:label ?listLabel.
+   net:composite rdfs:label ?compositeLabel.
+   BIND (concat( ?netURI, ?listLabel, '_', ?compositeLabel, '_') AS ?n1).
+   BIND (concat(?n1, ?uw1Id, '-', ?uw2Id) AS ?n2).
    BIND (uri(?n2) AS ?newNet).
 }""" ;
-  sh:order 2.41 ;
+  sh:order 2.32 ;
 .
-cts:compose-aoj-verb-obj-as-simple-state-property
+cts:compose-atom-with-list-by-mod-2
   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#>
@@ -523,189 +438,34 @@ 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 Entity (aoj), an action Verb and an object Entity (obj) / result Entity (res) to obtain a state property
-CONSTRUCT {
-   # Net: State Property
+    
+# -- Compose an atom net and an list net (with same item classes)
+CONSTRUCT { 
+   # Net: Composite List
    ?newNet a net:Instance.
-   ?newNet net:type net:atom.
-   ?newNet net:atomOf sys:State_Property.
+   ?newNet net:type net:list.
+   ?newNet net:type ?listSubType.
+   ?newNet net:listOf net:composite.
    ?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.	
+   ?newNet net:entityClass ?net1ParentClass.
+   ?newNet net:has_parent ?net1Object.	
+   ?newNet net:has_item ?net2Item.	
 }
 WHERE {
-   # net1: verb
+   # net1: atom
    ?net1 a net:Instance.
    ?net1 net:type net:atom.
-   ?net1 net:atomOf sys:Verb.
    ?net1 net:has_structure ?req.
    ?net1 net:has_node ?uw1.
-   ?net1 net:has_atom ?verbObject.
-   # net2: entity (actor)
+   ?net1 net:has_atom ?net1Object.
+   ?net1Object net:has_parent_class ?net1ParentClass.	
+   # condition: mod(net1, net2)
+   ?uw1 unl:mod ?uw2.
+   # net2: list
    ?net2 a net:Instance.
-   ?net2 net:type net:atom.
-   ?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.
-   ?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#>
-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 an atom net and a list net (with distinct item classes)
-CONSTRUCT { 
-   # Object: Composite
-   ?newObject a net:Object.
-   ?newObject net:objectType net:composite.
-   ?newObject net:has_node ?uw1, ?uw3.
-   ?newObject net:has_mother_class ?net1Mother.
-   ?newObject net:has_parent_class ?net1Class.
-   ?newObject net:has_class ?subConcept.
-   ?newObject net:has_concept ?subConcept.
-   ?newObject net:has_feature ?net2Item.
-   # Net: Composite List
-   ?newNet a net:Instance.
-   ?newNet net:type net:list.
-   ?newNet net:type ?listSubType.
-   ?newNet net:listOf net:composite.
-   ?newNet net:has_structure ?req.
-   ?newNet net:has_node ?uw1, ?uw2, ?uw3.
-   ?newNet net:entityClass ?net1ParentClass.
-   ?newNet net:has_parent ?net1Object.	
-   ?newNet net:has_item ?newObject.	
-}
-WHERE {
-   # net1: atom
-   ?net1 a net:Instance.
-   ?net1 net:type net:atom.
-   ?net1 net:has_structure ?req.
-   ?net1 net:has_node ?uw1.
-   ?net1 net:has_atom ?net1Object.
-   ?net1Object net:has_mother_class ?net1Mother.
-   ?net1Object net:has_parent_class ?net1ParentClass.	
-   ?net1Object net:has_class ?net1Class.
-   ?net1Object net:has_concept ?net1Concept.
-   # condition: mod(net1, net2)
-   ?uw1 unl:mod ?uw2.
-   # net2: list
-   ?net2 a net:Instance.
-   ?net2 net:type net:list.
-   ?net2 net:type ?listSubType.
-   ?net2 net:listOf net:atom.
-   ?net2 net:has_structure ?req. 
-   ?net2 net:has_node ?uw2, ?uw3.
-   ?net2 net:has_item ?net2Item.
-   ?net2Item net:has_node ?uw3.
-   ?net2Item net:has_parent_class ?net2ParentClass.	
-   ?net2Item net:has_concept ?net2Concept.
-   # Filter
-   FILTER NOT EXISTS { ?net2 net:has_node ?uw1 }.
-   FILTER ( ?net1ParentClass != ?net2ParentClass  ).
-   # Label: Id, concept
-   ?uw1 unl:has_id ?uw1Id.
-   ?uw2 unl:has_id ?uw2Id.
-   ?uw3 unl:has_id ?uw3Id.
-   BIND (concat( ?net2Concept, '_', ?net1Concept) AS ?subConcept).
-   # URI (for Object)
-   cprm:Config_Parameters cprm:netURI ?netURI.
-   cprm:Config_Parameters cprm:objectRef ?objectRef.
-   BIND (concat( ?netURI, ?objectRef) AS ?o1).
-   BIND (concat(?o1, ?uw1Id, '-', ?uw3Id) AS ?o2).
-   BIND (uri(?o2) AS ?newObject).
-   # URI (for List Net)
-   cprm:Config_Parameters cprm:netURI ?netURI.
-   net:list rdfs:label ?listLabel.
-   net:composite rdfs:label ?compositeLabel.
-   BIND (concat( ?netURI, ?listLabel, '_', ?compositeLabel, '_') AS ?n1).
-   BIND (concat(?n1, ?uw1Id, '-', ?uw2Id) AS ?n2).
-   BIND (uri(?n2) AS ?newNet).
-}""" ;
-  sh:order 2.32 ;
-.
-cts:compose-atom-with-list-by-mod-2
-  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 an atom net and an list net (with same item classes)
-CONSTRUCT { 
-   # Net: Composite List
-   ?newNet a net:Instance.
-   ?newNet net:type net:list.
-   ?newNet net:type ?listSubType.
-   ?newNet net:listOf net:composite.
-   ?newNet net:has_structure ?req.
-   ?newNet net:has_node ?uw1, ?uw2, ?uw3.
-   ?newNet net:entityClass ?net1ParentClass.
-   ?newNet net:has_parent ?net1Object.	
-   ?newNet net:has_item ?net2Item.	
-}
-WHERE {
-   # net1: atom
-   ?net1 a net:Instance.
-   ?net1 net:type net:atom.
-   ?net1 net:has_structure ?req.
-   ?net1 net:has_node ?uw1.
-   ?net1 net:has_atom ?net1Object.
-   ?net1Object net:has_parent_class ?net1ParentClass.	
-   # condition: mod(net1, net2)
-   ?uw1 unl:mod ?uw2.
-   # net2: list
-   ?net2 a net:Instance.
-   ?net2 net:type net:list.
-   ?net2 net:listOf net:atom.
+   ?net2 net:type net:list.
+   ?net2 net:listOf net:atom.
    ?net2 net:has_structure ?req.
    ?net2 net:has_node ?uw2, ?uw3.
    ?net2 net:has_item ?net2Item.
@@ -746,26 +506,36 @@ PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
 # -- Compute useful URI
 CONSTRUCT { 
    # Net Object URI
+   ?object net:has_mother_class_uri ?motherClassUri.
    ?object net:has_parent_class_uri ?parentClassUri.
    ?object net:has_class_uri ?objectClassUri.
 }
 WHERE {
    # object
    ?object a net:Object.
-   ?object net:has_parent_class ?objectParentClass.	
+   ?object net:objectType ?objectType.
+   ?object net:has_mother_class ?motherClass.	
+   ?object net:has_parent_class ?parentClass.	
    ?object net:has_class ?objectClass.
    # URI (for classes)
-   sys:Structure sys:has_frame_uri ?frameURI.
-   BIND (concat( ?frameURI, ?objectParentClass) AS ?s1).
-   BIND (concat(?s1, '#', ?objectClass) AS ?s2).
-   BIND (uri( ?s1) AS ?parentClassUri).
-   BIND (uri(?s2) AS ?objectClassUri).
+   sys:Structure sys:has_frame_uri ?frameURI. 
+   BIND (str(?motherClass) AS ?s1). # -- old --- BIND (concat( ?frameURI, ?parentClass) AS ?s1).
+   # TODO: BIND (concat( ?frameURI, ?motherClass) AS ?s1). 
+   BIND (concat(?frameURI, ?parentClass) AS ?s2). # -- old --- BIND (concat(?s1, '#', ?parentClass) AS ?s2).
+   BIND (concat(?frameURI, ?objectClass) AS ?s3). # -- old --- BIND (concat(?s1, '#', ?objectClass) AS ?s3).
+   BIND (uri( ?s1) AS ?motherClassUri).
+   BIND (uri( ?s2) AS ?parentClassUri).
+   BIND (uri(?s3) AS ?objectClassUri).
+}
+VALUES ?objectType { 
+   net:atom
+   net:composite 
 }""" ;
-  sh:order 3.01 ;
+  sh:order 2.91 ;
 .
-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#>
@@ -777,24 +547,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 ?domainClassUri.
 }
 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_property_uri ?newPropertyUri.
+   # -- Domain  
    ?net1 net:has_possible_domain ?possibleDomainLabel1.
-	?domainClass rdfs:label ?possibleDomainLabel1 .
+	?domainClass rdfs:label ?possibleDomainLabel1.
    FILTER (
 		NOT EXISTS {
 			?net1 net:has_possible_domain ?possibleDomainLabel2 .
@@ -802,28 +569,13 @@ 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).
+   BIND (uri( ?domainClass) AS ?domainClassUri).
 }""" ;
-  sh:order 3.5 ;
+  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#>
@@ -835,53 +587,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.5 ;
+  sh:order 2.92 ;
 .
-cts:compute-instance-uri-of-net-object
+cts:compute-property-uri-of-relation-object
   rdf:type sh:SPARQLRule ;
-  rdfs:label "compute-instance-uri-of-net-object" ;
+  rdfs:label "compute-property-uri-of-relation-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#>
@@ -896,23 +622,29 @@ PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
 # -- Compute useful URI
 CONSTRUCT { 
    # Net Object URI
-   ?object net:has_instance_uri ?objectInstanceUri.
+   ?object net:has_property_uri ?objectPropertyUri.
 }
 WHERE {
-   # object
+   # Object of type Relation
    ?object a net:Object.
-   ?object net:has_parent_class ?objectParentClass.	
-   ?object net:has_instance ?objectInstance. 
-   # URI (for classes and instance)
-   sys:Structure sys:has_frame_uri ?frameURI.
-   BIND (concat( ?frameURI, ?objectParentClass) AS ?s1).
-   BIND (concat(?s1, '_', ?objectInstance) AS ?s3).
-   BIND (uri(?s3) AS ?objectInstanceUri).
+   ?object net:objectType ?objectType.	
+   ?object net:has_parent_property ?parentProperty.
+   ?object net:has_concept ?objectConcept.
+   # URI (for object property)
+   sys:Relation sys:has_frame_uri ?frameURI. 
+   ?parentProperty sys:has_reference ?relationReference.
+   BIND (concat( ?frameURI, ?relationReference) AS ?o1).
+   BIND (concat(?o1, '_', ?objectConcept) AS ?o2).
+   BIND (uri( ?o2) AS ?objectPropertyUri).
+}
+VALUES ?objectType { 
+   net:relation
 }""" ;
-  sh:order 3.02 ;
+  sh:order 2.91 ;
 .
-cts:create-atom-net
+cts:compute-range-of-relation-property
   rdf:type sh:SPARQLRule ;
+  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#>
@@ -923,18 +655,57 @@ 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#>
-    
-# -- Create Atom Net (entity)
+
+# -- Compute Range of Relation Property
 CONSTRUCT { 
-   # Object
-   ?newObject a net:Object.
-   ?newObject net:objectType net:atom.
-   ?newObject net:has_node ?uw1.
-   ?newObject net:has_mother_class ?atomMother.
-   ?newObject net:has_parent_class ?atomClass.
-   ?newObject net:has_class ?concept1.
-   ?newObject net:has_concept ?concept1.
-   # Net
+   # update Relation Property: add range
+   ?newPropertyUri rdfs:range ?rangeClassUri.
+}
+WHERE {
+   # Relation Net (net1)
+   ?net1 a net:Instance.
+   ?net1 net:type net:relation.
+   ?net1 net:relationOf ?relationMother.
+   ?net1 net:has_relation ?relationObject.	
+   ?relationObject net:has_property_uri ?newPropertyUri.
+   # -- 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.
+		}
+   )
+   BIND (uri( ?rangeClass) AS ?rangeClassUri).
+}""" ;
+  sh:order 3.32 ;
+.
+cts:create-atom-net
+  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#>
+    
+# -- Create Atom Net (entity)
+CONSTRUCT { 
+   # Object
+   ?newObject a net:Object.
+   ?newObject net:objectType net:atom.
+   ?newObject net:has_node ?uw1.
+   ?newObject net:has_mother_class ?atomMother.
+   ?newObject net:has_parent_class ?atomClass.
+   ?newObject net:has_class ?concept1.
+   ?newObject net:has_concept ?concept1.
+   # Net
    ?newNet a net:Instance.
    ?newNet net:type net:atom.
    ?newNet net:atomOf ?atomMother.
@@ -944,10 +715,10 @@ CONSTRUCT {
 }
 WHERE {
    # Atom Description (from System Ontology)
-   ?targetClass rdfs:subClassOf* sys:Structure.
-   ?targetClass sys:has_mother_class ?atomMother.
-   ?targetClass sys:is_class ?atomClass.
-   ?targetClass sys:has_restriction ?restriction.
+   ?atomMother rdfs:subClassOf* sys:Structure.
+   # -- old --- ?targetClass sys:has_mother_class ?atomMother.
+   ?atomMother sys:is_class ?atomClass.
+   ?atomMother sys:has_restriction ?restriction.
    # UW: type UW-Occurrence and substructure of req sentence
    ?uw1 rdf:type unl:UW_Occurrence.
    ?uw1 unl:is_substructure_of ?req.
@@ -961,17 +732,83 @@ 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).
 }""" ;
   sh:order 2.11 ;
 .
+cts:create-relation-net
+  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#>
+
+# -- Create relation net
+CONSTRUCT {
+   # Object
+   ?newObject a net:Object.
+   ?newObject net:objectType net:relation.
+   ?newObject net:has_node ?uw1.
+   ?newObject net:has_parent_property ?relationMother.
+   ?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_relation ?newObject.	
+}
+WHERE {
+   # Relation Description (from System Ontology)
+   ?targetProperty rdfs:subPropertyOf* sys:Relation.
+   ?targetProperty sys:has_mother_property ?relationMother.
+   ?targetProperty sys:has_reference ?relationReference.
+   ?targetProperty sys:has_restriction_on_class ?classRestriction.
+   # Atom Net (net1): restricted net according to its atom category (atomOf) 
+   ?net1 a net:Instance.
+   ?net1 net:type net:atom.
+   ?net1 net:atomOf ?classRestriction.
+   ?net1 net:has_structure ?req.
+   ?net1 net:has_node ?uw1.
+   # -- Verb Actor
+   ?net1 net:has_atom ?verbObject.
+   ?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.
+   sys:Property sys:has_reference ?propertyReference.
+   BIND (concat( ?netURI, ?propertyReference, '-', ?relationReference, '_') AS ?n1).
+   BIND (concat(?n1, ?uw1Id) AS ?n2).
+   BIND (uri(?n2) AS ?newNet).
+}""" ;
+  sh:order 2.41 ;
+.
 cts:create-unary-atom-list-net
   rdf:type sh:SPARQLRule ;
   sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
@@ -1015,9 +852,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).
 }""" ;
@@ -1058,26 +896,12 @@ cts:dev_schemes
   rdf:type sh:NodeShape ;
   rdfs:label "dev schemes" ;
   rdfs:subClassOf cts:Transduction_Schemes ;
-.
-cts:entity_extraction
-  rdf:type owl:Class ;
-  rdf:type sh:NodeShape ;
-  rdfs:label "entity extraction" ;
-  rdfs:subClassOf cts:net_extension ;
-  sh:rule cts:compose-atom-with-list-by-mod-1 ;
-  sh:rule cts:compose-atom-with-list-by-mod-2 ;
-  sh:rule cts:create-atom-net ;
-  sh:rule cts:extend-atom-list-net ;
-  sh:rule cts:init-conjunctive-atom-list-net ;
-  sh:rule cts:instantiate-atom-net ;
-  sh:rule cts:instantiate-composite-in-list-by-extension-2 ;
-.
-cts:event_extraction
-  rdf:type owl:Class ;
-  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_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:extend-atom-list-net
   rdf:type sh:SPARQLRule ;
@@ -1116,12 +940,6 @@ WHERE {
 }""" ;
   sh:order 2.22 ;
 .
-cts:feature_extraction
-  rdf:type owl:Class ;
-  rdf:type sh:NodeShape ;
-  rdfs:label "feature extraction" ;
-  rdfs:subClassOf cts:net_extension ;
-.
 cts:generate-atom-class
   rdf:type sh:SPARQLRule ;
   rdfs:label "add-entity-classes" ;
@@ -1136,7 +954,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.
@@ -1158,12 +976,6 @@ WHERE {
       ?net2 net:listOf net:composite.
       ?net2 net:has_item ?atomObject1.
    }
-   # URI: class
-   # -- old --- sys:Structure sys:has_frame_uri ?frameURI.
-   # -- old --- BIND (concat( ?frameURI, ?atomParentClass) AS ?s1).
-   # -- old --- BIND (concat(?s1, '#', ?atomConcept) AS ?s2).
-   # -- old --- BIND (uri( ?s1) AS ?parentUri).
-   # -- old --- BIND (uri(?s2) AS ?newClassUri).
 }""" ;
   sh:order 3.1 ;
 .
@@ -1189,26 +1001,16 @@ CONSTRUCT {
    ?newInstanceUri sys:from_structure ?req.
 }
 WHERE {
-   # net1: entity
+   # net1: atom
    ?net1 a net:Instance.
    ?net1 net:type net:atom.
-   ?net1 net:atomOf sys:Entity.
    ?net1 net:has_structure ?req.
    ?net1 net:has_atom ?atomObject1.
-   ?atomObject1 net:has_parent_class ?atomParentClass.	
-   ?atomObject1 net:has_concept ?atomConcept.
+   ?atomObject1 net:has_class_uri ?classUri.	
    ?atomObject1 net:has_instance ?atomInstance. 
+   ?atomObject1 net:has_instance_uri ?newInstanceUri.
    # Filter: entity not present in a class list
    FILTER NOT EXISTS  { ?net2 net:has_subClass ?atomConcept}
-   # URI (for classes)
-   sys:Structure sys:has_frame_uri ?frameURI.
-   BIND (concat( ?frameURI, ?atomParentClass) AS ?s1).
-   BIND (concat(?s1, '#', ?atomConcept) AS ?s2).
-   BIND (uri( ?s1) AS ?parentUri).
-   BIND (uri(?s2) AS ?classUri).
-   # URI (for instance)
-   BIND (concat(?s1, '_', ?atomInstance) AS ?s3).
-   BIND (uri(?s3) AS ?newInstanceUri).
 }""" ;
   sh:order 3.1 ;
 .
@@ -1225,7 +1027,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#>
     
-# -- Add Composite Class in System Ontology (from Composite List net)
+# -- Add Composite Class in Ontology (from Composite List net)
 CONSTRUCT { 
    # Classification
    ?newClassUri rdfs:subClassOf ?parentUri.
@@ -1241,44 +1043,140 @@ WHERE {
    ?net1 net:type net:list.
    ?net1 net:listOf net:composite.
    ?net1 net:has_structure ?req.
-   # -- old --- ?net1 net:entityClass ?entityClass.
-   ?net1 net:has_parent ?parentObject. # -- old --- ?mainEntityObject.	
-   ?parentObject net:has_parent_class ?parentClass. # -- old --- ?entityClass.
-   ?parentObject net:has_concept ?parentConcept. # -- old --- ?mainEntity.
+   ?net1 net:has_parent ?parentObject.
+   ?parentObject net:has_class_uri ?parentUri.
+   ?parentObject net:has_instance_uri ?instanceUri.	
    ?net1 net:has_item ?compositeObject.	
-   ?compositeObject net:has_concept ?compositeConcept. #-- old --- ?subEntity
-   ?compositeObject net:has_instance ?compositeInstance.	
-   # Filter -- old --- FILTER NOT EXISTS  { ?net2 net:has_subClass ?mainEntity}	
+   ?compositeObject net:has_class_uri ?newClassUri.		
+   ?compositeObject net:has_concept ?compositeConcept.
+}""" ;
+  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.
+   # -- Source Object
+   ?net1 net:has_source ?sourceObject.
+   ?sourceObject net:has_concept ?sourceConcept.	
+   # -- Target Object
+   ?net1 net:has_target ?targetObject1.
+   ?targetObject1 net:has_concept ?targetConcept.
+   # Label: event
+   BIND (concat(?sourceConcept, '-', ?relationConcept) AS ?e1).
+   BIND (concat(?e1, '-', ?targetConcept) AS ?eventLabel).
    # URI (for classes)
    sys:Structure sys:has_frame_uri ?frameURI.
-   BIND (concat( ?frameURI, ?parentClass) AS ?s1).
-   BIND (concat(?s1, '#', ?parentConcept) AS ?s2).
-   BIND (concat(?s1, '#', ?compositeConcept) AS ?s3).
-   BIND (uri(?s2) AS ?parentUri). # -- old --- ?mainEntityUri).
-   BIND (uri(?s3) AS ?newClassUri). # -- old --- ?subEntityUri).
-   # URI (for instance)
-   BIND (concat(?s1, '_', ?compositeInstance) AS ?s4).
-   BIND (uri(?s4) AS ?instanceUri).
+   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 ?parentProperty.
+   ?newPropertyUri rdfs:label ?relationConcept.
+   ?newPropertyUri sys:from_structure ?req.
+   # -- old --- ?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_parent_property ?parentProperty.
+   ?relationObject net:has_property_uri ?newPropertyUri.
+   # -- Source Object
+   # -- old --- ?net1 net:has_source ?sourceObject.
+   # -- old --- ?sourceObject net:has_instance_uri ?sourceInstanceUri.  
+   # -- Target Object
+   # -- old --- ?net1 net:has_target ?targetObject.
+   # -- old --- ?targetObject net:has_instance_uri ?targetInstanceUri. 
 }""" ;
-  sh:order 3.2 ;
+  sh:order 3.31 ;
 .
 cts:generation
   rdf:type owl:Class ;
   rdf:type sh:NodeShape ;
   rdfs:label "generation" ;
   rdfs:subClassOf cts:Transduction_Schemes ;
-  sh:rule cts:add-conjunctive-entity-classes ;
-  sh:rule cts:add-disjunctive-entity-classes ;
-  sh:rule cts:add-event ;
-  sh:rule cts:add-state-property ;
+  sh:rule cts:add-conjunctive-classes-from-list-net ;
+  sh:rule cts:add-disjunctive-classes-from-list-net ;
   sh:rule cts:complement-composite-class ;
-  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-instance-uri-of-net-object ;
+  sh:rule cts:compute-domain-of-relation-property ;
+  sh:rule cts:compute-range-of-relation-property ;
+  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:link-instances-by-relation-property ;
+.
+cts:generation_dga_patch
+  rdf:type owl:Class ;
+  rdf:type sh:NodeShape ;
+  rdfs:label "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:complement-composite-class ;
+  sh:rule cts:compute-domain-of-relation-property ;
+  sh:rule cts:compute-range-of-relation-property ;
   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:link-instances-by-relation-property ;
 .
 cts:init-conjunctive-atom-list-net
   rdf:type sh:SPARQLRule ;
@@ -1486,6 +1384,42 @@ WHERE {
 }""" ;
   sh:order 2.342 ;
 .
+cts:link-instances-by-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#>
+
+CONSTRUCT { 
+   ?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_parent_property ?parentProperty.
+   ?relationObject net:has_property_uri ?newPropertyUri.
+   # -- 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. 
+}""" ;
+  sh:order 3.33 ;
+.
 cts:link-to-scope-entry
   rdf:type sh:SPARQLRule ;
   sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
@@ -1520,23 +1454,27 @@ cts:net_extension
   rdf:type sh:NodeShape ;
   rdfs:label "net extension" ;
   rdfs:subClassOf cts:Transduction_Schemes ;
+  sh:rule cts:append-domain-to-relation-net ;
+  sh:rule cts:append-range-to-relation-net ;
+  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-instance-uri-of-net-object ;
+  sh:rule cts:compute-property-uri-of-relation-object ;
+  sh:rule cts:create-atom-net ;
+  sh:rule cts:create-relation-net ;
+  sh:rule cts:create-unary-atom-list-net ;
+  sh:rule cts:extend-atom-list-net ;
+  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:specify-axis-of-atom-list-net ;
 .
-cts:postprocessing
-  rdf:type owl:Class ;
-  rdf:type sh:NodeShape ;
-  rdfs:subClassOf cts:Transduction_Schemes ;
-.
-cts:preprocessing
-  rdf:type owl:Class ;
-  rdf:type sh:NodeShape ;
-  rdfs:label "preprocessing" ;
-  rdfs:subClassOf cts:Transduction_Schemes ;
-  sh:rule cts:bypass-reification ;
-  sh:rule cts:define-uw-id ;
-  sh:rule cts:link-to-scope-entry ;
-.
-cts:specify-axis-of-atom-list-net
+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#>
@@ -1547,37 +1485,612 @@ 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#>
-    
-# -- Specify axis of Atom List net
+
+# -- Add Verb class / instance in System Ontology
 CONSTRUCT { 
-   # Update Atom List net (net1)
-   ?net1 net:listBy ?unlRel.
+   # 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 {
-   # UW: type UW-Occurrence and substructure of req sentence
-   ?uw0 rdf:type unl:UW_Occurrence.
-   ?uw0 unl:is_substructure_of ?req.
-   # Net: Atom List
+   # net1: entity
    ?net1 a net:Instance.
-   ?net1 net:type net:list.
-   ?net1 net:listOf net:atom.
-   ?net1 net:has_node ?uw1.
-   # selection: target UW of modifier (mod)
-   ?uw0 ?unlRel ?uw1.
-   FILTER NOT EXISTS { ?net1 net:has_node ?uw0 }.
-}""" ;
-  sh:order 2.23 ;
-.
-cts:state_property_extraction
-  rdf:type owl:Class ;
-  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 ;
-.
-cts:verb_extraction
-  rdf:type owl:Class ;
-  rdf:type sh:NodeShape ;
-  rdfs:label "verb extraction" ;
-  rdfs:subClassOf cts:net_extension ;
+   ?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:old_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
+   ?domainClassUri ?propertyUri ?rangeClassUri.
+}
+WHERE {
+   # Relation Net (net1)
+   ?propertyUri rdfs:domain ?domainClass.
+   ?propertyUri rdfs:range ?rangeClass.
+   BIND (uri( ?domainClass) AS ?domainClassUri).
+   BIND (uri( ?rangeClass) AS ?rangeClassUri).
+}""" ;
+  sh:order 0.33 ;
+.
+cts:preprocessing
+  rdf:type owl:Class ;
+  rdf:type sh:NodeShape ;
+  rdfs:label "preprocessing" ;
+  rdfs:subClassOf cts:Transduction_Schemes ;
+  sh:rule cts:bypass-reification ;
+  sh:rule cts:define-uw-id ;
+  sh:rule cts:link-to-scope-entry ;
+  sh:rule cts:update-batch-execution-rules ;
+  sh:rule cts:update-generation-class-rules ;
+  sh:rule cts:update-generation-relation-rules ;
+  sh:rule cts:update-generation-rules ;
+  sh:rule cts:update-net-extension-rules ;
+  sh:rule cts:update-preprocessing-rules ;
+.
+cts:relation_generation
+  rdf:type owl:Class ;
+  rdf:type sh:NodeShape ;
+  rdfs:label "relation generation" ;
+  rdfs:subClassOf cts:Transduction_Schemes ;
+  sh:rule cts:compute-domain-of-relation-property ;
+  sh:rule cts:compute-range-of-relation-property ;
+  sh:rule cts:generate-event-class ;
+  sh:rule cts:generate-relation-property ;
+  sh:rule cts:link-instances-by-relation-property ;
+  sh:rule cts:old_link-classes-by-relation-property ;
+.
+cts:relation_generation_1
+  rdf:type owl:Class ;
+  rdf:type sh:NodeShape ;
+  rdfs:label "relation generation 1" ;
+  rdfs:subClassOf cts:Transduction_Schemes ;
+  sh:rule cts:generate-event-class ;
+  sh:rule cts:generate-relation-property ;
+.
+cts:relation_generation_2
+  rdf:type owl:Class ;
+  rdf:type sh:NodeShape ;
+  rdfs:label "relation generation 2" ;
+  rdfs:subClassOf cts:Transduction_Schemes ;
+  sh:rule cts:compute-domain-of-relation-property ;
+  sh:rule cts:compute-range-of-relation-property ;
+.
+cts:relation_generation_3_1
+  rdf:type owl:Class ;
+  rdf:type sh:NodeShape ;
+  rdfs:label "relation generation 3 1" ;
+  rdfs:subClassOf cts:Transduction_Schemes ;
+  sh:rule cts:old_link-classes-by-relation-property ;
+.
+cts:relation_generation_3_2
+  rdf:type owl:Class ;
+  rdf:type sh:NodeShape ;
+  rdfs:label "relation generation 3 2" ;
+  rdfs:subClassOf cts:Transduction_Schemes ;
+  sh:rule cts:link-instances-by-relation-property ;
+.
+cts:relation_generation_dga_patch
+  rdf:type owl:Class ;
+  rdf:type sh:NodeShape ;
+  rdfs:label "relation generation" ;
+  rdfs:subClassOf cts:Transduction_Schemes ;
+  sh:rule cts:compute-domain-of-relation-property ;
+  sh:rule cts:compute-range-of-relation-property ;
+  sh:rule cts:generate-event-class ;
+  sh:rule cts:generate-relation-property ;
+  sh:rule cts:link-instances-by-relation-property ;
+.
+cts:specify-axis-of-atom-list-net
+  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#>
+    
+# -- Specify axis of Atom List net
+CONSTRUCT { 
+   # Update Atom List net (net1)
+   ?net1 net:listBy ?unlRel.
+}
+WHERE {
+   # UW: type UW-Occurrence and substructure of req sentence
+   ?uw0 rdf:type unl:UW_Occurrence.
+   ?uw0 unl:is_substructure_of ?req.
+   # Net: Atom List
+   ?net1 a net:Instance.
+   ?net1 net:type net:list.
+   ?net1 net:listOf net:atom.
+   ?net1 net:has_node ?uw1.
+   # selection: target UW of modifier (mod)
+   ?uw0 ?unlRel ?uw1.
+   FILTER NOT EXISTS { ?net1 net:has_node ?uw0 }.
+}""" ;
+  sh:order 2.23 ;
+.
+cts:update-batch-execution-rules
+  rdf:type sh:SPARQLRule ;
+  sh:construct """PREFIX cts: <https://unsel.tetras-libre.fr/tenet/transduction-schemes#>
+PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+PREFIX sh: <http://www.w3.org/ns/shacl#>
+
+CONSTRUCT {
+   cts:batch_execution sh:rule ?rule.
+}
+WHERE {
+   ?nodeShapes sh:rule ?rule.
+}
+VALUES ?nodeShapes {
+   cts:preprocessing
+   cts:net_extension
+   cts:generation
+}""" ;
+  sh:order 1.09 ;
+.
+cts:update-generation-class-rules
+  rdf:type sh:SPARQLRule ;
+  sh:construct """PREFIX cts: <https://unsel.tetras-libre.fr/tenet/transduction-schemes#>
+PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+PREFIX sh: <http://www.w3.org/ns/shacl#>
+
+CONSTRUCT {
+   cts:class_generation sh:rule ?rule.
+}
+WHERE {
+   { ?rule rdf:type sh:SPARQLRule.
+   ?rule sh:order ?order.
+   FILTER ( strStarts(str(?order),\"3.1\")  ). }
+   UNION
+   { ?rule rdf:type sh:SPARQLRule.
+   ?rule sh:order ?order.
+   FILTER ( strStarts(str(?order),\"3.2\")  ). }
+}""" ;
+  sh:order 1.031 ;
+.
+cts:update-generation-relation-rules
+  rdf:type sh:SPARQLRule ;
+  sh:construct """PREFIX cts: <https://unsel.tetras-libre.fr/tenet/transduction-schemes#>
+PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+PREFIX sh: <http://www.w3.org/ns/shacl#>
+
+CONSTRUCT {
+   cts:relation_generation sh:rule ?rule.
+}
+WHERE {
+   ?rule rdf:type sh:SPARQLRule.
+   ?rule sh:order ?order.
+   FILTER ( strStarts(str(?order),\"3.3\")  ).
+}""" ;
+  sh:order 1.032 ;
+.
+cts:update-generation-rules
+  rdf:type sh:SPARQLRule ;
+  sh:construct """PREFIX cts: <https://unsel.tetras-libre.fr/tenet/transduction-schemes#>
+PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+PREFIX sh: <http://www.w3.org/ns/shacl#>
+
+CONSTRUCT {
+   cts:generation sh:rule ?rule.
+}
+WHERE {
+   ?rule rdf:type sh:SPARQLRule.
+   ?rule sh:order ?order.
+   FILTER ( strStarts(str(?order),\"3.\")  ).
+}""" ;
+  sh:order 1.03 ;
+.
+cts:update-net-extension-rules
+  rdf:type sh:SPARQLRule ;
+  sh:construct """PREFIX cts: <https://unsel.tetras-libre.fr/tenet/transduction-schemes#>
+PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+PREFIX sh: <http://www.w3.org/ns/shacl#>
+
+CONSTRUCT {
+   cts:net_extension sh:rule ?rule.
+}
+WHERE {
+   ?rule rdf:type sh:SPARQLRule.
+   ?rule sh:order ?order.
+   FILTER ( strStarts(str(?order),\"2.\")  ).
+}""" ;
+  sh:order 1.02 ;
+.
+cts:update-preprocessing-rules
+  rdf:type sh:SPARQLRule ;
+  sh:construct """PREFIX cts: <https://unsel.tetras-libre.fr/tenet/transduction-schemes#>
+PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+PREFIX sh: <http://www.w3.org/ns/shacl#>
+
+CONSTRUCT {
+   cts:preprocessing sh:rule ?rule.
+}
+WHERE {
+   ?rule rdf:type sh:SPARQLRule.
+   ?rule sh:order ?order.
+   FILTER ( strStarts(str(?order),\"1.\")  ).
+}""" ;
+  sh:order 1.01 ;
 .
diff --git a/frame/system-ontology.ttl b/frame/system-ontology.ttl
index 98dd10d1a35ab786a7811beaae7fe102ada1ba74..38d1694bd0142fcdcd6757cde9fd64f3abe42ea1 100644
--- a/frame/system-ontology.ttl
+++ b/frame/system-ontology.ttl
@@ -13,6 +13,7 @@
 @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 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:Climate_Policy
   rdfs:subClassOf sys:Structure ;
   sys:is_class "Climate_Policy" ;
 .
+sys:Annotation
+  rdf:type rdf:Property ;
+  rdfs:label "structure property" ;
+  rdfs:subPropertyOf sys:Property ;
+.
 sys:Environmental_Actor
   rdf:type owl:Class ;
   rdfs:label "physical"@en ;
@@ -47,6 +53,27 @@ sys:Impact
   rdfs:subClassOf sys:Structure ;
   sys:is_class "Impact" ;
 .
+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:Physical
   rdf:type owl:Class ;
   rdfs:label "physical"@en ;
@@ -58,6 +85,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 ;
@@ -65,6 +93,23 @@ sys:Verb
   rdfs:subClassOf sys:Structure ;
   sys:is_class "Verb" ;
 .
+sys:abstract_thing
+  rdf:type owl:Class ;
+  rdfs:label "abstract thing"@en ;
+  rdfs:label "élément abstrait"@fr ;
+  rdfs:subClassOf sys:Abstraction ;
+  sys:has_mother_class sys:Abstraction ;
+  sys:has_restriction "icl>abstract_thing" ;
+  sys:is_class "abstract_thing" ;
+.
+sys:action
+  rdf:type rdf:Property ;
+  rdfs:label "action" ;
+  rdfs:subPropertyOf sys:Relation ;
+  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 ;
   rdfs:label "action verb" ;
@@ -121,22 +166,17 @@ sys:consumption
 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:green_capex
   rdf:type owl:Class ;
@@ -159,36 +199,58 @@ sys:has_feature
 sys:has_frame_base_uri
   rdf:type rdf:Property ;
   rdfs:label "has frame base uri" ;
-  rdfs:subPropertyOf sys:seedProperty ;
+  rdfs:subPropertyOf sys:Seed ;
   sys:has_frame_base_uri "https://unsel.tetras-libre.fr/tenet/frame/system-ontology/" ;
 .
 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:seedProperty ;
-  sys:has_mother_class "Entity" ;
-  sys:has_restriction "icl>administrator" ;
-  sys:has_restriction "icl>operator" ;
-  sys:has_restriction "icl>person" ;
-  sys:is_class "agent" ;
+  rdfs:subPropertyOf sys:Seed ;
+.
+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
   rdf:type rdf:Property ;
   rdfs:label "has object property" ;
-  rdfs:subPropertyOf sys:seedProperty ;
+  rdfs:subPropertyOf sys:Seed ;
   sys:has_object_property "eventObjectProperty" ;
   sys:is_class "Event" ;
 .
+sys:has_reference
+  rdf:type rdf:Property ;
+  rdfs:label "is property" ;
+  rdfs:subPropertyOf sys:Seed ;
+.
 sys:has_restriction
   rdf:type rdf:Property ;
   rdfs:label "has restriction" ;
-  rdfs:subPropertyOf sys:seedProperty ;
+  rdfs:subPropertyOf sys:Seed ;
+.
+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
+  rdf:type rdf:Property ;
+  rdfs:label "has restriction on unl relation source" ;
+  rdfs:subPropertyOf sys:Seed ;
+.
+sys:has_restriction_on_unl_relation_target
+  rdf:type rdf:Property ;
+  rdfs:label "has restriction on unl relation target" ;
+  rdfs:subPropertyOf sys:Seed ;
 .
 sys:has_target
   rdf:type rdf:Property ;
@@ -203,9 +265,7 @@ sys:has_verb
 sys:is_class
   rdf:type rdf:Property ;
   rdfs:label "is class" ;
-  rdfs:subPropertyOf sys:seedProperty ;
-  sys:has_object_property "statePropertyObjectProperty" ;
-  sys:is_class "State_Property" ;
+  rdfs:subPropertyOf sys:Seed ;
 .
 sys:matter
   rdf:type owl:Class ;
@@ -229,23 +289,18 @@ sys:phenomenon
   sys:has_restriction "icl>physical_phenomenon" ;
   sys:is_class "place" ;
 .
-sys:seedProperty
-  rdf:type rdf:Property ;
-  rdfs:label "seed property" ;
-.
-sys:statePropertyObjectProperty
-  rdf:type rdf:Property ;
-  rdfs:label "state property object property" ;
-  rdfs:subPropertyOf sys:objectProperty ;
-.
-sys:structureProperty
+sys:stateProperty
   rdf:type rdf:Property ;
-  rdfs:label "structure property" ;
+  rdfs:label "state property" ;
+  rdfs:subPropertyOf sys:Relation ;
+  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 27fb1f250ed706a0695ff15c479117d44165ff35..6b546ed4c65d8e3e9c2fbed1d84b0f0e3ad4a8b5 100644
--- a/prepare_work_data.py
+++ b/prepare_work_data.py
@@ -34,15 +34,13 @@ schema_file = "unl-rdf-schema.ttl"
 semantic_net_file = "semantic-net.ttl"
 cts_file = "transduction-schemes.ttl"
 c_param_file = "config-parameters.ttl"
-# -- old --- req_onto_file = "requirement" + ONTO_FILE
-# -- old --- sys_onto_file = "system" + ONTO_FILE
-# -- old --- f_param_file = "ontology-parameters.ttl"
 
 # Dev Tests
 base_uri = "https://unsel.tetras-libre.fr/tenet/working"
 req_100 = "CCTP-SRSA-IP-20210831-R100/"
 req_200 = "CCTP-SRSA-IP-20210831-R200/"
 req_300 = "CCTP-SRSA-IP-20210831-R300/"
+req_1100 = "CCTP-SRSA-IP-20210831-R1100/"
 corpus_40 = "CCTP-SRSA-IP-20210831/"
 corpus_ERTMS = "ERTMS/"
 corpus_PEV = "PEV-RSE-Approach/"
@@ -155,18 +153,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)
         
 #==============================================================================
@@ -207,12 +210,13 @@ def run(corpus, source_ref, target_ref):
 if __name__ == '__main__':
     target_ref = "system"
     #target_ref = "environment"
-    #run(req_100, 'R100b', target_ref) 
-    #run(req_200, 'R200b', target_ref)
-    #run(req_300, 'R300b', target_ref) 
-    #run(corpus_40, 'Corpus-CCTP-40c', target_ref)
+    run(req_100, 'R100f', target_ref) 
+    run(req_200, 'R200f', target_ref)
+    run(req_300, 'R300f', target_ref) 
+    run(req_1100, 'R1100f', target_ref) 
+    run(corpus_40, 'Corpus-CCTP-40f', target_ref)
     #run(corpus_ERTMS, 'Corpus-ERTMS', target_ref)
-    run(corpus_PEV, 'Corpus-PEV', target_ref)
+    #run(corpus_PEV, 'Corpus-PEV', target_ref)