diff --git a/config/semantic-net.ttl b/config/semantic-net.ttl
index e7aa02f3456c1565b6cf231d8194394f5a9592dc..4f0439dae919a7a87f01899245bbfcbe0c8cc45d 100644
--- a/config/semantic-net.ttl
+++ b/config/semantic-net.ttl
@@ -85,6 +85,21 @@ net:featureClass
   rdfs:label "feature class" ;
   rdfs:subPropertyOf net:value ;
 .
+net:listGuiding
+  rdf:type rdf:Property ;
+  rdfs:label "Guiding connector of a list (or, and)" ;
+  rdfs:subPropertyOf net:value ;
+.
+net:modCat1
+  rdf:type rdf:Property ;
+  rdfs:label "Modality Category (level 1)" ;
+  rdfs:subPropertyOf net:value ;
+.
+net:modCat2
+  rdf:type rdf:Property ;
+  rdfs:label "Modality Category (level 2)" ;
+  rdfs:subPropertyOf net:value ;
+.
 net:mod_list
   rdf:type owl:Class ;
   rdfs:label "modList" ;
diff --git a/config/transduction-schemes.ttl b/config/transduction-schemes.ttl
index e10260796d889b2b967b072d0529ae5547073336..b4656373a34c5acbcf7d711b182267eadbcb7336 100644
--- a/config/transduction-schemes.ttl
+++ b/config/transduction-schemes.ttl
@@ -24,7 +24,7 @@ cts:Transduction_Schemes
   rdfs:label "Transduction Schemes" ;
   rdfs:subClassOf owl:Thing ;
 .
-cts:add-disjunctive-entity-classes-1
+cts:add-disjunctive-entity-classes
   rdf:type sh:SPARQLRule ;
   rdfs:label "add-disjunctive-entity-classes" ;
   sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
@@ -53,7 +53,9 @@ WHERE {
    ?net1 net:entityClass ?entityClass.
    ?net1 net:node ?uw2.
    ?net1 net:node ?uw3.
-   ?net1 net:class1 ?mainEntity.			
+   ?net1 net:class1 ?mainEntity.		
+   ?net1 net:class2 ?subEntity2.	
+   ?net1 net:class2 ?subEntity3.		
    # extension: disjunction of UW
    ?uw2 unl:or ?uw3.
    # Label(s) / URI
@@ -62,8 +64,10 @@ WHERE {
    BIND (strbefore(?uw2Label, '(') AS ?concept2)
    BIND (strbefore(?uw3Label, '(') AS ?concept3)
    BIND (concat(?concept2, '-or-', ?concept3) AS ?concept23)
-   BIND (concat(?concept2, '_', ?mainEntity) AS ?subEntity2).
-   BIND (concat(?concept3, '_', ?mainEntity) AS ?subEntity3).
+   FILTER ( STRSTARTS(?subEntity2, ?concept2) ).
+   FILTER ( STRSTARTS(?subEntity3, ?concept3) ).
+   # -- old --- BIND (concat(?concept2, '_', ?mainEntity) AS ?subEntity2).
+   # -- old --- BIND (concat(?concept3, '_', ?mainEntity) AS ?subEntity3).
    BIND (concat(?concept23, '_', ?mainEntity) AS ?subEntity23).
    cprm:Config_Parameters cprm:baseURI ?baseURI.
    fprm:System_Ontology fprm:frameURI ?frameURI.
@@ -76,12 +80,12 @@ WHERE {
    BIND (uri(?s3) AS ?subEntity2Uri).
    BIND (uri(?s4) AS ?subEntity3Uri).
    BIND (uri(?s5) AS ?subEntity23Uri).
-  FILTER NOT EXISTS  { ?net2 net:class2 ?mainEntity }.
-  #FILTER NOT EXISTS  { ?subEntity23Uri owl:equivalentClass ?c }.
+  # --old --- FILTER NOT EXISTS  { ?net2 net:class2 ?mainEntity }.
+  # --old --- FILTER NOT EXISTS  { ?subEntity23Uri owl:equivalentClass ?c }.
 }""" ;
-  sh:order "204"^^xsd:decimal ;
+  sh:order "203"^^xsd:decimal ;
 .
-cts:add-disjunctive-entity-classes-2
+cts:add-disjunctive-entity-classes-2--old
   rdf:type sh:SPARQLRule ;
   rdfs:label "add-disjunctive-entity-classes" ;
   sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
@@ -109,29 +113,29 @@ WHERE {
    ?net1 net:type net:entity_class_list.
    ?net1 net:node ?uw2.
    ?net1 net:node ?uw3.
-   ?net1 net:class1 ?mainEntity1.			
+   ?net1 net:class1 ?mainEntity1.	
+   ?net1 net:class2 ?subEntity2.		
+   ?net1 net:class3 ?subEntity3.				
    # net2: entity class list
    ?net2 a net:Instance.
    ?net2 net:type net:entity_class_list.
    ?net2 net:entityClass ?entityClass.
    ?net2 net:class1 ?mainEntity2.	
-   ?net2 net:class2 ?subEntityConcept2.	
+   ?net2 net:class2 ?subEntityNet2.	
    # extension: disjunction of UW
    ?uw2 unl:or ?uw3.
    # Label(s) / URI
-   BIND (concat(?mainEntity1, '_', ?mainEntity2) AS ?mainEntity).
    ?uw2 rdfs:label ?uw2Label.
    ?uw3 rdfs:label ?uw3Label.
    BIND (strbefore(?uw2Label, '(') AS ?concept2)
    BIND (strbefore(?uw3Label, '(') AS ?concept3)
-   BIND (concat(?concept2, '-or-', ?concept3) AS ?concept23)
-   BIND (concat(?concept2, '_', ?mainEntity1) AS ?subEntity2).
-   BIND (concat(?concept3, '_', ?mainEntity1) AS ?subEntity3).
+   BIND (concat(?subEntity2, '-or-', ?subEntity3) AS ?concept23).
+   FILTER ( ?concept2 = ?subEntity2 )
+   FILTER ( ?concep3 = ?subEntity3 )
+   # -- old --- BIND (concat(?concept2, '_', ?mainEntity1) AS ?subEntity2).
+   # -- old --- BIND (concat(?concept3, '_', ?mainEntity1) AS ?subEntity3).
    BIND (concat(?concept23, '_', ?mainEntity1) AS ?subEntity23).
-   cprm:Config_Parameters cprm:baseURI ?baseURI.
-   fprm:System_Ontology fprm:frameURI ?frameURI.
-   BIND (concat( ?frameURI, ?entityClass) AS ?s1).
-   BIND (concat(?s1, '_', ?mainEntity) AS ?s2).
+   BIND (concat(?s1, '_', ?mainEntity1) AS ?s2).
    BIND (concat(?s1, '_', ?subEntity2) AS ?s3).
    BIND (concat(?s1, '_', ?subEntity3) AS ?s4).
    BIND (concat(?s1, '_', ?subEntity23) AS ?s5).
@@ -139,10 +143,9 @@ WHERE {
    BIND (uri(?s3) AS ?subEntity2Uri).
    BIND (uri(?s4) AS ?subEntity3Uri).
    BIND (uri(?s5) AS ?subEntity23Uri).
-  FILTER ( ?mainEntity1 = ?subEntityConcept2 ).
-  #FILTER NOT EXISTS  { ?subEntity23Uri owl:equivalentClass ?c }.
+  FILTER ( ?mainEntity1 = ?subEntityNet2).
 }""" ;
-  sh:order "205"^^xsd:decimal ;
+  sh:order "000"^^xsd:decimal ;
 .
 cts:add-entity-classes
   rdf:type sh:SPARQLRule ;
@@ -208,9 +211,9 @@ WHERE {
    ?net1 net:type net:entity_class_list.
    ?net1 net:entityClass ?entityClass.
    ?net1 net:class1 ?mainEntity.	
-   ?net1 net:class2 ?concept2.		
+   ?net1 net:class2 ?subEntity.		
    # Label(s) / URI
-   BIND (concat(?concept2, '_', ?mainEntity) AS ?subEntity).
+   # -- old --- BIND (concat(?concept2, '_', ?mainEntity) AS ?subEntity).
    cprm:Config_Parameters cprm:baseURI ?baseURI.
    fprm:System_Ontology fprm:frameURI ?frameURI.
    fprm:System_Entity rdfs:label ?entityLabel.
@@ -220,7 +223,7 @@ WHERE {
    BIND (uri( ?s1) AS ?entityUri).
    BIND (uri(?s2) AS ?mainEntityUri).
    BIND (uri(?s3) AS ?subEntityUri).
-  FILTER NOT EXISTS  { ?net2 net:class2 ?mainEntity}
+  # -- old --- FILTER NOT EXISTS  { ?net2 net:class2 ?mainEntity}
 }""" ;
   sh:order "202"^^xsd:decimal ;
 .
@@ -271,8 +274,8 @@ CONSTRUCT {
    ?newNet net:entityClass ?entityClass.
    ?newNet net:featureClass ?featureClass.
    ?newNet net:class1 ?mainEntity.	
-   ?newNet net:class2 ?concept2.	
-   ?newNet net:class2 ?concept3.	
+   ?newNet net:class2 ?subEntity2.	
+   ?newNet net:class2 ?subEntity3.	
 }
 WHERE {
    # net1: entity
@@ -286,26 +289,26 @@ WHERE {
    ?net2 net:type net:complement_mod_list.
    ?net2 net:node ?uw2.
    ?net2 net:node ?uw3.
-   ?net2 net:featureClass ?featureClass.
-   ?net2 net:concept ?subComplement.	
+   ?net2 net:modCat2 ?featureClass.
+   # --old --- ?net2 net:concept ?subConcept.	
    # Filter
    FILTER ( ?uw1 != ?uw3  ).
    # condition: mod(net1, net2)
    ?uw1 unl:mod ?uw2.
    # UW: type UW-Occurrence and substructure of req sentence
-   ?uw1 rdf:type unl:UW_Occurrence.
-   ?uw2 rdf:type unl:UW_Occurrence.
-   ?uw3 rdf:type unl:UW_Occurrence.
-   ?uw1 unl:is_substructure_of ?req.
-   ?uw2 unl:is_substructure_of ?req.
-   ?uw3 unl:is_substructure_of ?req.
+   # --old --- ?uw1 rdf:type unl:UW_Occurrence.
+   # --old --- ?uw2 rdf:type unl:UW_Occurrence.
+   # --old --- ?uw3 rdf:type unl:UW_Occurrence.
+   # --old --- ?uw1 unl:is_substructure_of ?req.
+   # --old --- ?uw2 unl:is_substructure_of ?req.
+   # --old --- ?uw3 unl:is_substructure_of ?req.
    # Label(s) / URI
    ?uw2 rdfs:label ?uw2Label.
    ?uw3 rdfs:label ?uw3Label.
    BIND (strbefore(?uw2Label, '(') AS ?concept2)
    BIND (strbefore(?uw3Label, '(') AS ?concept3)
-   #BIND (concat(?concept2, '_', ?mainEntity) AS ?subEntity2).
-   #BIND (concat(?concept3, '_', ?mainEntity) AS ?subEntity3).
+   BIND (concat(?concept2, '_', ?mainEntity) AS ?subEntity2).
+   BIND (concat(?concept3, '_', ?mainEntity) AS ?subEntity3).
    cprm:Config_Parameters cprm:netURI ?netURI.
    net:class_list rdfs:label ?classListLabel.
    BIND (concat( ?netURI, ?classListLabel, '_') AS ?s1).
@@ -327,7 +330,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#>
     
-# -- Compose an Entity net and an Entity ModList net
+# -- Compose an Entity net and an Entity ModList net (with distinct entity classes)
 CONSTRUCT { 
    ?newNet a net:Instance.
    ?newNet net:type net:entity_class_list.
@@ -335,9 +338,10 @@ CONSTRUCT {
    ?newNet net:node ?uw2.
    ?newNet net:node ?uw3.
    ?newNet net:entityClass ?entityClass1.
+   ?newNet net:featureClass ?entityClass2.
    ?newNet net:class1 ?mainEntity.	
-   ?newNet net:class2 ?concept2.	
-   ?newNet net:class2 ?concept3.	
+   ?newNet net:class2 ?subEntity2.	
+   ?newNet net:class2 ?subEntity3.	
 }
 WHERE {
    # net1: agent
@@ -346,38 +350,108 @@ WHERE {
    ?net1 net:node ?uw1.
    ?net1 net:entityClass ?entityClass1.
    ?net1 net:concept ?mainEntity.	
-   # net2: complement modList
+   # net2: entity modList
    ?net2 a net:Instance.
    ?net2 net:type net:entity_mod_list.
+   ?net2 net:modCat1 fprm:System_Entity.
+   ?net2 net:modCat2 ?entityClass2. 
    ?net2 net:node ?uw2.
    ?net2 net:node ?uw3.
-   ?net2 net:entityClass ?entityClass2.
+   # --old --- ?net2 net:concept ?subConcept.	
+   # -- old --- ?net2 net:entityClass ?entityClass2.
    # Filter
    FILTER ( ?uw1 != ?uw3  ).
+   FILTER ( ?entityClass1 != ?entityClass2  ).
    # condition: mod(net1, net2)
    ?uw1 unl:mod ?uw2.
    # UW: type UW-Occurrence and substructure of req sentence
-   ?uw1 rdf:type unl:UW_Occurrence.
-   ?uw2 rdf:type unl:UW_Occurrence.
-   ?uw3 rdf:type unl:UW_Occurrence.
-   ?uw1 unl:is_substructure_of ?req.
-   ?uw2 unl:is_substructure_of ?req.
-   ?uw3 unl:is_substructure_of ?req.
+   # --old --- ?uw1 rdf:type unl:UW_Occurrence.
+   # --old --- ?uw2 rdf:type unl:UW_Occurrence.
+   # --old --- ?uw3 rdf:type unl:UW_Occurrence.
+   # --old --- ?uw1 unl:is_substructure_of ?req.
+   # --old --- ?uw2 unl:is_substructure_of ?req.
+   # --old --- ?uw3 unl:is_substructure_of ?req.
    # Label(s) / URI
    ?uw2 rdfs:label ?uw2Label.
    ?uw3 rdfs:label ?uw3Label.
-   BIND (strbefore(?uw2Label, '(') AS ?concept2)
-   BIND (strbefore(?uw3Label, '(') AS ?concept3)
-   #BIND (concat(?concept2, '_', ?mainEntity) AS ?subEntity2).
-   #BIND (concat(?concept3, '_', ?mainEntity) AS ?subEntity3).
+   BIND (strbefore(?uw2Label, '(') AS ?concept2).
+   BIND (strbefore(?uw3Label, '(') AS ?concept3).
+   BIND (concat(?concept2, '_', ?mainEntity) AS ?subEntity2).
+   BIND (concat(?concept3, '_', ?mainEntity) AS ?subEntity3).
    cprm:Config_Parameters cprm:netURI ?netURI.
    net:class_list rdfs:label ?classListLabel.
    BIND (concat( ?netURI, ?classListLabel, '_') AS ?s1).
-   BIND (concat(?s1, ?mainEntity, '-', ?concept2) AS ?s2).
+   BIND (concat(?s1, ?mainEntity, '-', ?subEntity2) AS ?s2).
    BIND (uri(?s2) AS ?newNet).
 }""" ;
   sh:order "107"^^xsd:decimal ;
 .
+cts:compose-entity-modlist-3
+  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 Entity net and an Entity ModList net (with same entity classes)
+CONSTRUCT { 
+   ?newNet a net:Instance.
+   ?newNet net:type net:entity_class_list.
+   ?newNet net:node ?uw1.
+   ?newNet net:node ?uw2.
+   ?newNet net:node ?uw3.
+   ?newNet net:entityClass ?entityClass1.
+   ?newNet net:featureClass \"None\".
+   ?newNet net:class1 ?mainEntity.	
+   ?newNet net:class2 ?subEntity2.	
+   ?newNet net:class2 ?subEntity3.	
+}
+WHERE {
+   # net1: agent
+   ?net1 a net:Instance.
+   ?net1 net:type net:entity.
+   ?net1 net:node ?uw1.
+   ?net1 net:entityClass ?entityClass1.
+   ?net1 net:concept ?mainEntity.	
+   # net2: entity modList
+   ?net2 a net:Instance.
+   ?net2 net:type net:entity_mod_list.
+   ?net2 net:modCat1 fprm:System_Entity.
+   ?net2 net:modCat2 ?entityClass2.
+   ?net2 net:node ?uw2.
+   ?net2 net:node ?uw3.
+   # --old --- ?net2 net:concept ?subConcept.	
+   # Filter
+   FILTER ( ?uw1 != ?uw3  ).
+   FILTER ( ?entityClass1 = ?entityClass2  ).
+   # condition: mod(net1, net2)
+   ?uw1 unl:mod ?uw2.
+   # UW: type UW-Occurrence and substructure of req sentence
+   # --old --- ?uw1 rdf:type unl:UW_Occurrence.
+   # --old --- ?uw2 rdf:type unl:UW_Occurrence.
+   # --old --- ?uw3 rdf:type unl:UW_Occurrence.
+   # --old --- ?uw1 unl:is_substructure_of ?req.
+   # --old --- ?uw2 unl:is_substructure_of ?req.
+   # --old --- ?uw3 unl:is_substructure_of ?req.
+   # Label(s) / URI
+   ?uw2 rdfs:label ?uw2Label.
+   ?uw3 rdfs:label ?uw3Label.
+   BIND (strbefore(?uw2Label, '(') AS ?subEntity2)
+   BIND (strbefore(?uw3Label, '(') AS ?subEntity3)
+   cprm:Config_Parameters cprm:netURI ?netURI.
+   net:class_list rdfs:label ?classListLabel.
+   BIND (concat( ?netURI, ?classListLabel, '_') AS ?s1).
+   BIND (concat(?s1, ?mainEntity, '-', ?subEntity2) AS ?s2).
+   BIND (uri(?s2) AS ?newNet).
+}""" ;
+  sh:order "108"^^xsd:decimal ;
+.
 cts:create-entity-net
   rdf:type sh:SPARQLRule ;
   sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
@@ -425,7 +499,8 @@ cts:dev_schemes
   rdf:type sh:NodeShape ;
   rdfs:label "dev schemes" ;
   rdfs:subClassOf cts:Transduction_Schemes ;
-  sh:rule cts:test_1 ;
+  sh:rule cts:add-disjunctive-entity-classes-2--old ;
+  sh:rule cts:extend-list-of-entity-classes--old ;
 .
 cts:entity_extraction
   rdf:type owl:Class ;
@@ -434,6 +509,7 @@ cts:entity_extraction
   rdfs:subClassOf cts:net_extension ;
   sh:rule cts:compose-entity-modlist-1 ;
   sh:rule cts:compose-entity-modlist-2 ;
+  sh:rule cts:compose-entity-modlist-3 ;
   sh:rule cts:create-entity-net ;
   sh:rule cts:extend-mod-list ;
   sh:rule cts:init-mod-list ;
@@ -444,7 +520,7 @@ cts:entity_extraction_1
   rdf:type cts:entity_extraction ;
   rdfs:label "entity extraction 1" ;
 .
-cts:extend-list-of-entity-classes
+cts:extend-list-of-entity-classes--old
   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#>
@@ -468,12 +544,12 @@ WHERE {
    ?net1 net:type net:entity_class_list.
    ?net1 net:entityClass ?entityClass.
    ?net1 net:class1 ?mainEntity1.	
-   ?net1 net:class2 ?subEntityConcept1.	
+   ?net1 net:class2 ?subEntity1.	
    # net2: entity class list
    ?net2 a net:Instance.
    ?net2 net:type net:entity_class_list.
    ?net2 net:class1 ?mainEntity2.	
-   ?net2 net:class2 ?subEntityConcept2.	
+   ?net2 net:class2 ?subEntity2.	
    # Label(s) / URI
    BIND (concat(?mainEntity1, '_', ?mainEntity2) AS ?mainEntity).
    BIND (concat(?subEntityConcept1, '_', ?mainEntity1) AS ?subEntity).
@@ -486,9 +562,10 @@ WHERE {
    BIND (uri( ?s1) AS ?entityUri).
    BIND (uri(?s2) AS ?mainEntityUri).
    BIND (uri(?s3) AS ?subEntityUri).
-  FILTER ( ?mainEntity1 = ?subEntityConcept2 ).
+  # -- old --- FILTER ( ?mainEntity1 = ?subEntity2 ).
+  # -- old --- FILTER ( ?mainEntity1 != ?subEntity2 ).
 }""" ;
-  sh:order "203"^^xsd:decimal ;
+  sh:order "000"^^xsd:decimal ;
 .
 cts:extend-mod-list
   rdf:type sh:SPARQLRule ;
@@ -506,7 +583,6 @@ PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
 # -- Extend a ModList net
 CONSTRUCT { 
    ?semNet net:node ?uw2.
-   ?semNet net:concept ?concept1.
    ?semNet net:concept ?concept2.
 }
 WHERE {
@@ -534,11 +610,10 @@ cts:generation
   rdf:type sh:NodeShape ;
   rdfs:label "generation" ;
   rdfs:subClassOf cts:Transduction_Schemes ;
-  sh:rule cts:add-disjunctive-entity-classes-1 ;
-  sh:rule cts:add-disjunctive-entity-classes-2 ;
+  sh:rule cts:add-disjunctive-entity-classes ;
+  sh:rule cts:add-disjunctive-entity-classes-2--old ;
   sh:rule cts:add-entity-classes ;
   sh:rule cts:add-list-of-entity-classes ;
-  sh:rule cts:extend-list-of-entity-classes ;
 .
 cts:generation_1
   rdf:type cts:generation ;
@@ -562,6 +637,7 @@ CONSTRUCT {
    ?semNet a net:Instance.
    ?semNet net:type net:mod_list.
    ?semNet net:node ?uw1.
+   ?semNet net:concept ?concept1.
 }
 WHERE {
    # UW: type UW-Occurrence and substructure of req sentence
@@ -668,7 +744,8 @@ PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
 # -- Typify a ModList net as Entity ModList
 CONSTRUCT { 
    ?semNet net:type net:entity_mod_list.
-   ?semNet net:entityClass ?entityClass.
+   ?semNet net:modCat1 fprm:System_Entity.
+   ?semNet net:modCat2 ?entityClass.
 }
 WHERE {
    # Entity (from System Ontology)
@@ -705,7 +782,8 @@ PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
 # -- Typify a ModList net as Feature ModList
 CONSTRUCT { 
    ?semNet net:type net:complement_mod_list.
-   ?semNet net:featureClass ?featureClass.
+   ?semNet net:modCat1 fprm:System_Feature.
+   ?semNet net:modCat2 ?featureClass.
 }
 WHERE {
    # Entity Feature (from System Ontology)