diff --git a/config/transduction-schemes.ttl b/config/transduction-schemes.ttl
index 50420543329c864da32fc544297b8adb70251bae..f6ba5cf3e50ee7857b8ebf0d22471e2cdf0c4f8a 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
+cts:add-disjunctive-entity-classes-1
   rdf:type sh:SPARQLRule ;
   rdfs:label "add-disjunctive-entity-classes" ;
   sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
@@ -76,10 +76,113 @@ 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 }.
 }""" ;
-  sh:order "203"^^xsd:decimal ;
+  sh:order "204"^^xsd:decimal ;
+.
+cts:add-disjunctive-entity-classes-2
+  rdf:type sh:SPARQLRule ;
+  rdfs:label "add-disjunctive-entity-classes" ;
+  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 Disjunctive Entity classes in System Ontology
+CONSTRUCT { 
+   ?subEntity23Uri rdfs:subClassOf ?mainEntityUri.
+   ?subEntity23Uri rdfs:label ?subEntity23.
+   ?subEntity23Uri  
+		owl:equivalentClass [	a owl:Class ;
+                                owl:unionOf ( ?subEntity2Uri ?subEntity3Uri ) ] .
+}
+WHERE {
+   # net1: entity class list
+   ?net1 a net:Instance.
+   ?net1 net:type net:entity_class_list.
+   ?net1 net:node ?uw2.
+   ?net1 net:node ?uw3.
+   ?net1 net:class1 ?mainEntity1.			
+   # 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.	
+   # 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(?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, '_', ?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).
+  FILTER ( ?mainEntity1 = ?subEntityConcept2 ).
+  #FILTER NOT EXISTS  { ?subEntity23Uri owl:equivalentClass ?c }.
+}""" ;
+  sh:order "205"^^xsd:decimal ;
 .
 cts:add-entity-classes
+  rdf:type sh:SPARQLRule ;
+  rdfs:label "add-entity-classes" ;
+  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 Entity classes in System Ontology
+CONSTRUCT { 
+   ?mainEntityUri rdfs:subClassOf ?entityUri.
+   ?mainEntityUri rdfs:label ?mainEntity.
+}
+WHERE {
+   # net1: entity
+   ?net1 a net:Instance.
+   ?net1 net:type net:entity.
+   ?net1 net:entityClass ?entityClass.
+   ?net1 net:concept ?mainEntity.	
+   # Label(s) / URI
+   cprm:Config_Parameters cprm:baseURI ?baseURI.
+   fprm:System_Ontology fprm:frameURI ?frameURI.
+   fprm:System_Entity rdfs:label ?entityLabel.
+   BIND (concat( ?frameURI, ?entityClass) AS ?s1).
+   BIND (concat(?s1, '_', ?mainEntity) AS ?s2).
+   BIND (uri( ?s1) AS ?entityUri).
+   BIND (uri(?s2) AS ?mainEntityUri).
+   # Filter: entity not present in a class list
+   FILTER NOT EXISTS  { ?net2 (net:class1|net:class2) ?mainEntity}
+}""" ;
+  sh:order "201"^^xsd:decimal ;
+.
+cts:add-list-of-entity-classes
   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#>
@@ -119,7 +222,7 @@ WHERE {
    BIND (uri(?s3) AS ?subEntityUri).
   FILTER NOT EXISTS  { ?net2 net:class2 ?mainEntity}
 }""" ;
-  sh:order "201"^^xsd:decimal ;
+  sh:order "202"^^xsd:decimal ;
 .
 cts:bypass-reification
   rdf:type sh:SPARQLRule ;
@@ -341,7 +444,7 @@ cts:entity_extraction_1
   rdf:type cts:entity_extraction ;
   rdfs:label "entity extraction 1" ;
 .
-cts:extend-entity-classes
+cts:extend-list-of-entity-classes
   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#>
@@ -364,10 +467,16 @@ WHERE {
    ?net1 a net:Instance.
    ?net1 net:type net:entity_class_list.
    ?net1 net:entityClass ?entityClass.
-   ?net1 net:class1 ?mainEntity.	
-   ?net1 net:class2 ?concept2.		
+   ?net1 net:class1 ?mainEntity1.	
+   ?net1 net:class2 ?subEntityConcept1.	
+   # net2: entity class list
+   ?net2 a net:Instance.
+   ?net2 net:type net:entity_class_list.
+   ?net2 net:class1 ?mainEntity2.	
+   ?net2 net:class2 ?subEntityConcept2.	
    # Label(s) / URI
-   BIND (concat(?concept2, '_', ?mainEntity) AS ?subEntity).
+   BIND (concat(?mainEntity1, '_', ?mainEntity2) AS ?mainEntity).
+   BIND (concat(?subEntityConcept1, '_', ?mainEntity1) AS ?subEntity).
    cprm:Config_Parameters cprm:baseURI ?baseURI.
    fprm:System_Ontology fprm:frameURI ?frameURI.
    fprm:System_Entity rdfs:label ?entityLabel.
@@ -377,8 +486,9 @@ WHERE {
    BIND (uri( ?s1) AS ?entityUri).
    BIND (uri(?s2) AS ?mainEntityUri).
    BIND (uri(?s3) AS ?subEntityUri).
+  FILTER ( ?mainEntity1 = ?subEntityConcept2 ).
 }""" ;
-  sh:order "202"^^xsd:decimal ;
+  sh:order "203"^^xsd:decimal ;
 .
 cts:extend-mod-list
   rdf:type sh:SPARQLRule ;
@@ -424,9 +534,11 @@ cts:generation
   rdf:type sh:NodeShape ;
   rdfs:label "generation" ;
   rdfs:subClassOf cts:Transduction_Schemes ;
-  sh:rule cts:add-disjunctive-entity-classes ;
+  sh:rule cts:add-disjunctive-entity-classes-1 ;
+  sh:rule cts:add-disjunctive-entity-classes-2 ;
   sh:rule cts:add-entity-classes ;
-  sh:rule cts:extend-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 ;