diff --git a/tenet/scheme/amr_master_rule/__init__.py b/tenet/scheme/amr_master_rule/__init__.py
index c14bdebe370d638aba3499f7ff4c8c3d9fac6fee..b3b7be63a1f620598f1cc244163bb20336aa2165 100644
--- a/tenet/scheme/amr_master_rule/__init__.py
+++ b/tenet/scheme/amr_master_rule/__init__.py
@@ -1,15 +1,15 @@
 from scheme.amr_master_rule.preprocessing.amr_reification import *
 from scheme.amr_master_rule.preprocessing.amrld_correcting import * 
 
-from scheme.amr_master_rule.transduction.atom_class_extractor import * 
-from scheme.amr_master_rule.transduction.atom_individual_extractor import * 
-from scheme.amr_master_rule.transduction.atom_property_extractor import * 
-from scheme.amr_master_rule.transduction.atom_value_extractor import * 
-from scheme.amr_master_rule.transduction.atom_phenomena_extractor import * 
-from scheme.amr_master_rule.transduction.atom_relation_propagator import * 
+from scheme.amr_master_rule.transduction.extractor.atom_class_extractor import * 
+from scheme.amr_master_rule.transduction.extractor.atom_individual_extractor import * 
+from scheme.amr_master_rule.transduction.extractor.atom_property_extractor import * 
+from scheme.amr_master_rule.transduction.extractor.atom_value_extractor import * 
+from scheme.amr_master_rule.transduction.extractor.atom_phenomena_extractor import * 
+from scheme.amr_master_rule.transduction.extractor.atom_relation_propagator import * 
 
-from scheme.amr_master_rule.transduction.composite_class_extractor_1 import * 
-from scheme.amr_master_rule.transduction.composite_class_extractor_2 import * 
+from scheme.amr_master_rule.transduction.extractor.composite_class_extractor_1 import * 
+from scheme.amr_master_rule.transduction.extractor.composite_class_extractor_2 import * 
 
 from scheme.amr_master_rule.transduction.classifier.phenomena_modality_classifier import * 
 from scheme.amr_master_rule.transduction.classifier.property_class_classifier import *
@@ -19,18 +19,21 @@ from scheme.amr_master_rule.transduction.classifier.entity_classifier_3 import *
 from scheme.amr_master_rule.transduction.classifier.mother_classifier_1 import *    
 from scheme.amr_master_rule.transduction.classifier.individual_propagator import *  
 
-from scheme.amr_master_rule.transduction.phenomena_polarity_analyzer_1 import * 
-from scheme.amr_master_rule.transduction.phenomena_polarity_analyzer_2 import * 
-from scheme.amr_master_rule.transduction.phenomena_polarity_analyzer_3 import * 
-from scheme.amr_master_rule.transduction.phenomena_polarity_analyzer_4 import * 
-from scheme.amr_master_rule.transduction.phenomena_polarity_analyzer_5 import * 
-from scheme.amr_master_rule.transduction.phenomena_mod_analyzer_1 import * 
-from scheme.amr_master_rule.transduction.phenomena_or_analyzer_1 import * 
-from scheme.amr_master_rule.transduction.phenomena_or_analyzer_2 import * 
-from scheme.amr_master_rule.transduction.phenomena_and_analyzer_1 import * 
-from scheme.amr_master_rule.transduction.phenomena_and_analyzer_2 import * 
+from scheme.amr_master_rule.transduction.phenomena_analyzer.polarity_analyzer_1 import * 
+from scheme.amr_master_rule.transduction.phenomena_analyzer.polarity_analyzer_2 import * 
+from scheme.amr_master_rule.transduction.phenomena_analyzer.polarity_analyzer_3 import * 
+from scheme.amr_master_rule.transduction.phenomena_analyzer.polarity_analyzer_4 import * 
+from scheme.amr_master_rule.transduction.phenomena_analyzer.polarity_analyzer_5 import * 
+from scheme.amr_master_rule.transduction.phenomena_analyzer.mod_analyzer_1 import * 
+from scheme.amr_master_rule.transduction.phenomena_analyzer.or_analyzer_1 import * 
+from scheme.amr_master_rule.transduction.phenomena_analyzer.or_analyzer_2 import * 
+from scheme.amr_master_rule.transduction.phenomena_analyzer.and_analyzer_1 import * 
+from scheme.amr_master_rule.transduction.phenomena_analyzer.and_analyzer_2 import * 
 
 from scheme.amr_master_rule.owl_generation.owl_property_generator import *
 from scheme.amr_master_rule.owl_generation.owl_class_generator import *
 
 from scheme.amr_master_rule import *
+
+
+
diff --git a/tenet/scheme/amr_master_rule/transduction/extractor/__init__.py b/tenet/scheme/amr_master_rule/transduction/extractor/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/tenet/scheme/amr_master_rule/transduction/atom_class_extractor.py b/tenet/scheme/amr_master_rule/transduction/extractor/atom_class_extractor.py
similarity index 100%
rename from tenet/scheme/amr_master_rule/transduction/atom_class_extractor.py
rename to tenet/scheme/amr_master_rule/transduction/extractor/atom_class_extractor.py
diff --git a/tenet/scheme/amr_master_rule/transduction/atom_individual_extractor.py b/tenet/scheme/amr_master_rule/transduction/extractor/atom_individual_extractor.py
similarity index 100%
rename from tenet/scheme/amr_master_rule/transduction/atom_individual_extractor.py
rename to tenet/scheme/amr_master_rule/transduction/extractor/atom_individual_extractor.py
diff --git a/tenet/scheme/amr_master_rule/transduction/atom_phenomena_extractor.py b/tenet/scheme/amr_master_rule/transduction/extractor/atom_phenomena_extractor.py
similarity index 100%
rename from tenet/scheme/amr_master_rule/transduction/atom_phenomena_extractor.py
rename to tenet/scheme/amr_master_rule/transduction/extractor/atom_phenomena_extractor.py
diff --git a/tenet/scheme/amr_master_rule/transduction/atom_property_extractor.py b/tenet/scheme/amr_master_rule/transduction/extractor/atom_property_extractor.py
similarity index 100%
rename from tenet/scheme/amr_master_rule/transduction/atom_property_extractor.py
rename to tenet/scheme/amr_master_rule/transduction/extractor/atom_property_extractor.py
diff --git a/tenet/scheme/amr_master_rule/transduction/atom_relation_propagator.py b/tenet/scheme/amr_master_rule/transduction/extractor/atom_relation_propagator.py
similarity index 100%
rename from tenet/scheme/amr_master_rule/transduction/atom_relation_propagator.py
rename to tenet/scheme/amr_master_rule/transduction/extractor/atom_relation_propagator.py
diff --git a/tenet/scheme/amr_master_rule/transduction/atom_value_extractor.py b/tenet/scheme/amr_master_rule/transduction/extractor/atom_value_extractor.py
similarity index 100%
rename from tenet/scheme/amr_master_rule/transduction/atom_value_extractor.py
rename to tenet/scheme/amr_master_rule/transduction/extractor/atom_value_extractor.py
diff --git a/tenet/scheme/amr_master_rule/transduction/composite_class_extractor_1.py b/tenet/scheme/amr_master_rule/transduction/extractor/composite_class_extractor_1.py
similarity index 100%
rename from tenet/scheme/amr_master_rule/transduction/composite_class_extractor_1.py
rename to tenet/scheme/amr_master_rule/transduction/extractor/composite_class_extractor_1.py
diff --git a/tenet/scheme/amr_master_rule/transduction/composite_class_extractor_2.py b/tenet/scheme/amr_master_rule/transduction/extractor/composite_class_extractor_2.py
similarity index 100%
rename from tenet/scheme/amr_master_rule/transduction/composite_class_extractor_2.py
rename to tenet/scheme/amr_master_rule/transduction/extractor/composite_class_extractor_2.py
diff --git a/tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/__init__.py b/tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..8d1c8b69c3fce7bea45c73efd06983e3c419a92f
--- /dev/null
+++ b/tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/__init__.py
@@ -0,0 +1 @@
+ 
diff --git a/tenet/scheme/amr_master_rule/transduction/phenomena_and_analyzer_1.py b/tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/and_analyzer_1.py
similarity index 100%
rename from tenet/scheme/amr_master_rule/transduction/phenomena_and_analyzer_1.py
rename to tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/and_analyzer_1.py
diff --git a/tenet/scheme/amr_master_rule/transduction/phenomena_and_analyzer_2.py b/tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/and_analyzer_2.py
similarity index 100%
rename from tenet/scheme/amr_master_rule/transduction/phenomena_and_analyzer_2.py
rename to tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/and_analyzer_2.py
diff --git a/tenet/scheme/amr_master_rule/transduction/phenomena_mod_analyzer_1.py b/tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/mod_analyzer_1.py
similarity index 100%
rename from tenet/scheme/amr_master_rule/transduction/phenomena_mod_analyzer_1.py
rename to tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/mod_analyzer_1.py
diff --git a/tenet/scheme/amr_master_rule/transduction/phenomena_or_analyzer_1.py b/tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/or_analyzer_1.py
similarity index 100%
rename from tenet/scheme/amr_master_rule/transduction/phenomena_or_analyzer_1.py
rename to tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/or_analyzer_1.py
diff --git a/tenet/scheme/amr_master_rule/transduction/phenomena_or_analyzer_2.py b/tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/or_analyzer_2.py
similarity index 100%
rename from tenet/scheme/amr_master_rule/transduction/phenomena_or_analyzer_2.py
rename to tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/or_analyzer_2.py
diff --git a/tenet/scheme/amr_master_rule/transduction/phenomena_polarity_analyzer_1.py b/tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/polarity_analyzer_1.py
similarity index 100%
rename from tenet/scheme/amr_master_rule/transduction/phenomena_polarity_analyzer_1.py
rename to tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/polarity_analyzer_1.py
diff --git a/tenet/scheme/amr_master_rule/transduction/phenomena_polarity_analyzer_2.py b/tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/polarity_analyzer_2.py
similarity index 100%
rename from tenet/scheme/amr_master_rule/transduction/phenomena_polarity_analyzer_2.py
rename to tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/polarity_analyzer_2.py
diff --git a/tenet/scheme/amr_master_rule/transduction/phenomena_polarity_analyzer_3.py b/tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/polarity_analyzer_3.py
similarity index 100%
rename from tenet/scheme/amr_master_rule/transduction/phenomena_polarity_analyzer_3.py
rename to tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/polarity_analyzer_3.py
diff --git a/tenet/scheme/amr_master_rule/transduction/phenomena_polarity_analyzer_4.py b/tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/polarity_analyzer_4.py
similarity index 100%
rename from tenet/scheme/amr_master_rule/transduction/phenomena_polarity_analyzer_4.py
rename to tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/polarity_analyzer_4.py
diff --git a/tenet/scheme/amr_master_rule/transduction/phenomena_polarity_analyzer_5.py b/tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/polarity_analyzer_5.py
similarity index 100%
rename from tenet/scheme/amr_master_rule/transduction/phenomena_polarity_analyzer_5.py
rename to tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/polarity_analyzer_5.py
diff --git a/tenet/tenet.log b/tenet/tenet.log
index eda27af70f9d1b639d242d3926ebcb8131c3b474..cc4b2f7d1b41ca6b6f51752dfe33196e40c36cfb 100644
--- a/tenet/tenet.log
+++ b/tenet/tenet.log
@@ -71,25 +71,25 @@
 - DEBUG - ----- Total rule number: 87
 - INFO - -- Applying extraction step: preprocessing
 - INFO - --- *** November Transduction *** Sequence: amrld-correcting-sequence
-- INFO - ----- fix-amr-bug-about-system-solar-planet: 5/5 new triples (603, 0:00:00.038465)
+- INFO - ----- fix-amr-bug-about-system-solar-planet: 5/5 new triples (603, 0:00:00.039640)
 - INFO - --- *** November Transduction *** Sequence: amr-reification-sequence
-- INFO - ----- reclassify-concept-1: 10/10 new triples (613, 0:00:00.282426)
-- DEBUG - ----- reclassify-concept-2: 0/0 new triple (613, 0:00:00.066092)
-- INFO - ----- reclassify-concept-3: 12/12 new triples (625, 0:00:00.055373)
-- INFO - ----- reclassify-concept-4: 16/16 new triples (641, 0:00:00.077507)
-- INFO - ----- reclassify-concept-5: 2/4 new triples (643, 0:00:00.049211)
-- INFO - ----- reify-roles-as-concept: 10/10 new triples (653, 0:00:00.048264)
-- INFO - ----- reclassify-existing-variable: 45/45 new triples (698, 0:00:00.029960)
-- INFO - ----- add-new-variable-for-reified-concept: 8/8 new triples (706, 0:00:00.063811)
-- INFO - ----- add-amr-leaf-for-reclassified-concept: 33/33 new triples (739, 0:00:00.053221)
-- INFO - ----- add-amr-leaf-for-reified-concept: 8/8 new triples (747, 0:00:00.046700)
-- INFO - ----- add-amr-edge-for-core-relation: 27/27 new triples (774, 0:00:00.121552)
-- INFO - ----- add-amr-edge-for-reified-concept: 12/12 new triples (786, 0:00:00.147536)
-- INFO - ----- add-amr-edge-for-name-relation: 5/5 new triples (791, 0:00:00.073139)
-- DEBUG - ----- add-value-for-quant-relation: 0/0 new triple (791, 0:00:00.081215)
-- INFO - ----- add-amr-edge-for-polarity-relation: 5/5 new triples (796, 0:00:00.080029)
-- INFO - ----- update-amr-edge-role-1: 15/15 new triples (811, 0:00:00.094489)
-- INFO - ----- add-amr-root: 5/5 new triples (816, 0:00:00.026923)
+- INFO - ----- reclassify-concept-1: 10/10 new triples (613, 0:00:00.192898)
+- DEBUG - ----- reclassify-concept-2: 0/0 new triple (613, 0:00:00.067928)
+- INFO - ----- reclassify-concept-3: 12/12 new triples (625, 0:00:00.056336)
+- INFO - ----- reclassify-concept-4: 16/16 new triples (641, 0:00:00.069512)
+- INFO - ----- reclassify-concept-5: 2/4 new triples (643, 0:00:00.048901)
+- INFO - ----- reify-roles-as-concept: 10/10 new triples (653, 0:00:00.055242)
+- INFO - ----- reclassify-existing-variable: 45/45 new triples (698, 0:00:00.037881)
+- INFO - ----- add-new-variable-for-reified-concept: 8/8 new triples (706, 0:00:00.054377)
+- INFO - ----- add-amr-leaf-for-reclassified-concept: 33/33 new triples (739, 0:00:00.074481)
+- INFO - ----- add-amr-leaf-for-reified-concept: 8/8 new triples (747, 0:00:00.048664)
+- INFO - ----- add-amr-edge-for-core-relation: 27/27 new triples (774, 0:00:00.119393)
+- INFO - ----- add-amr-edge-for-reified-concept: 12/12 new triples (786, 0:00:00.150665)
+- INFO - ----- add-amr-edge-for-name-relation: 5/5 new triples (791, 0:00:00.074775)
+- DEBUG - ----- add-value-for-quant-relation: 0/0 new triple (791, 0:00:00.078568)
+- INFO - ----- add-amr-edge-for-polarity-relation: 5/5 new triples (796, 0:00:00.079529)
+- INFO - ----- update-amr-edge-role-1: 15/15 new triples (811, 0:00:00.183285)
+- INFO - ----- add-amr-root: 5/5 new triples (816, 0:00:00.027759)
 - DEBUG - --- Serializing graph to tenet.tetras-libre.fr_demo_01_preprocessing 
 - DEBUG - ----- step: preprocessing
 - DEBUG - ----- id: https://tenet.tetras-libre.fr/demo/01/
@@ -98,38 +98,38 @@
 - INFO - ----- 218 triples extracted during preprocessing step
 - INFO - -- Applying extraction step: transduction
 - INFO - --- *** February Transduction *** Sequence: atomic extraction sequence
-- INFO - ----- extract atom classes: 30/30 new triples (846, 0:00:00.158094)
-- INFO - ----- extract atom individuals: 8/8 new triples (854, 0:00:00.047297)
-- INFO - ----- extract atomic properties: 75/75 new triples (929, 0:00:00.272437)
-- INFO - ----- extract atom values: 10/10 new triples (939, 0:00:00.064467)
-- INFO - ----- extract atom phenomena: 14/14 new triples (953, 0:00:00.074700)
-- INFO - ----- propagate atom relations: 24/68 new triples (977, 0:00:01.083079)
+- INFO - ----- extract atom classes: 30/30 new triples (846, 0:00:00.153952)
+- INFO - ----- extract atom individuals: 8/8 new triples (854, 0:00:00.051652)
+- INFO - ----- extract atomic properties: 75/75 new triples (929, 0:00:00.223038)
+- INFO - ----- extract atom values: 10/10 new triples (939, 0:00:00.056399)
+- INFO - ----- extract atom phenomena: 14/14 new triples (953, 0:00:00.068081)
+- INFO - ----- propagate atom relations: 24/68 new triples (977, 0:00:01.050067)
 - INFO - --- *** February Transduction *** Sequence: classification sequence (1)
-- DEBUG - ----- classify modality phenomena: 0/0 new triple (977, 0:00:00.024375)
-- INFO - ----- reclassify argument property to class: 11/14 new triples (988, 0:00:00.080458)
+- DEBUG - ----- classify modality phenomena: 0/0 new triple (977, 0:00:00.022399)
+- INFO - ----- reclassify argument property to class: 11/14 new triples (988, 0:00:00.073223)
 - INFO - --- *** February Transduction *** Sequence: phenomena analyze sequence (1)
-- INFO - ----- analyze "polarity" phenomena (1): 32/36 new triples (1020, 0:00:00.103165)
-- DEBUG - ----- analyze "polarity" phenomena (2): 0/0 new triple (1020, 0:00:00.018240)
-- DEBUG - ----- analyze "polarity" phenomena (3): 0/0 new triple (1020, 0:00:00.017097)
-- DEBUG - ----- analyze "polarity" phenomena (4): 0/0 new triple (1020, 0:00:00.035740)
-- DEBUG - ----- analyze "polarity" phenomena (5): 0/0 new triple (1020, 0:00:00.033599)
-- DEBUG - ----- analyze modifier phenomena (mod): 0/0 new triple (1020, 0:00:00.078896)
-- DEBUG - ----- classify modality phenomena: 0/0 new triple (1020, 0:00:00.017780)
+- INFO - ----- analyze "polarity" phenomena (1): 32/36 new triples (1020, 0:00:00.113775)
+- DEBUG - ----- analyze "polarity" phenomena (2): 0/0 new triple (1020, 0:00:00.016841)
+- DEBUG - ----- analyze "polarity" phenomena (3): 0/0 new triple (1020, 0:00:00.013444)
+- DEBUG - ----- analyze "polarity" phenomena (4): 0/0 new triple (1020, 0:00:00.031810)
+- DEBUG - ----- analyze "polarity" phenomena (5): 0/0 new triple (1020, 0:00:00.033551)
+- DEBUG - ----- analyze modifier phenomena (mod): 0/0 new triple (1020, 0:00:00.009921)
+- DEBUG - ----- classify modality phenomena: 0/0 new triple (1020, 0:00:00.018679)
 - INFO - --- *** February Transduction *** Sequence: phenomena analyze sequence (2)
-- INFO - ----- analyze "or" phenomena (1): 1/1 new triple (1021, 0:00:00.094118)
-- INFO - ----- analyze "or" phenomena (2): 55/82 new triples (1076, 0:00:00.314064)
-- INFO - ----- analyze "and" phenomena (1): 2/14 new triples (1078, 0:00:00.133441)
-- DEBUG - ----- analyze "and" phenomena (2): 0/0 new triple (1078, 0:00:00.010072)
+- INFO - ----- analyze "or" phenomena (1): 1/1 new triple (1021, 0:00:00.080789)
+- INFO - ----- analyze "or" phenomena (2): 55/82 new triples (1076, 0:00:00.267649)
+- INFO - ----- analyze "and" phenomena (1): 2/14 new triples (1078, 0:00:00.149071)
+- DEBUG - ----- analyze "and" phenomena (2): 0/0 new triple (1078, 0:00:00.012343)
 - INFO - --- *** February Transduction *** Sequence: composite class extraction sequence
-- INFO - ----- extract composite classes (1): 127/138 new triples (1205, 0:00:00.537571)
-- DEBUG - ----- extract composite classes (2): 0/0 new triple (1205, 0:00:00.028224)
+- INFO - ----- extract composite classes (1): 127/138 new triples (1205, 0:00:00.529373)
+- DEBUG - ----- extract composite classes (2): 0/0 new triple (1205, 0:00:00.025257)
 - INFO - --- *** February Transduction *** Sequence: classification sequence (2)
-- INFO - ----- classify class net as entity from core arguments: 10/181 new triples (1215, 0:00:00.307893)
-- DEBUG - ----- classify class net as entity from :part relation: 0/0 new triple (1215, 0:00:00.009309)
-- DEBUG - ----- classify class net as entity from degree arguments: 0/0 new triple (1215, 0:00:00.019820)
-- INFO - ----- Associate mother to class net from :domain relation: 5/34 new triples (1220, 0:00:00.087336)
-- DEBUG - ----- Propagate individuals to net with same base node: 0/10 new triple (1220, 0:00:00.030522)
-- INFO - ----- Propagate individuals to net with domain link: 3/60 new triples (1223, 0:00:00.182877)
+- INFO - ----- classify class net as entity from core arguments: 10/181 new triples (1215, 0:00:00.285318)
+- DEBUG - ----- classify class net as entity from :part relation: 0/0 new triple (1215, 0:00:00.032858)
+- DEBUG - ----- classify class net as entity from degree arguments: 0/0 new triple (1215, 0:00:00.014241)
+- INFO - ----- Associate mother to class net from :domain relation: 5/34 new triples (1220, 0:00:00.081235)
+- DEBUG - ----- Propagate individuals to net with same base node: 0/10 new triple (1220, 0:00:00.023326)
+- INFO - ----- Propagate individuals to net with domain link: 3/60 new triples (1223, 0:00:00.108165)
 - DEBUG - --- Serializing graph to tenet.tetras-libre.fr_demo_01_transduction 
 - DEBUG - ----- step: transduction
 - DEBUG - ----- id: https://tenet.tetras-libre.fr/demo/01/
@@ -138,23 +138,23 @@
 - INFO - ----- 407 triples extracted during transduction step
 - INFO - -- Applying extraction step: generation
 - INFO - --- *** February Transduction *** Sequence: class_generation_sequence
-- INFO - ----- generate OWL class: 32/35 new triples (1255, 0:00:00.410772)
+- INFO - ----- generate OWL class: 32/35 new triples (1255, 0:00:00.523008)
 - INFO - --- *** February Transduction *** Sequence: property_generation_sequence
-- INFO - ----- generate OWL property: 29/29 new triples (1284, 0:00:00.312209)
+- INFO - ----- generate OWL property: 29/29 new triples (1284, 0:00:00.379346)
 - INFO - --- *** November Transduction *** Sequence: main-generation-sequence
-- DEBUG - ----- generate-individual: 0/0 new triple (1284, 0:00:00.010674)
-- DEBUG - ----- classify-individual-1: 0/0 new triple (1284, 0:00:00.007916)
-- DEBUG - ----- classify-individual-2: 0/0 new triple (1284, 0:00:00.009813)
-- DEBUG - ----- generate-atom-property-1: 0/0 new triple (1284, 0:00:00.009952)
-- DEBUG - ----- generate-atom-property-12: 0/0 new triple (1284, 0:00:00.014522)
-- DEBUG - ----- generate-inverse-relation: 0/0 new triple (1284, 0:00:00.008621)
-- DEBUG - ----- generate-composite-class: 0/0 new triple (1284, 0:00:00.014036)
-- DEBUG - ----- add-restriction-to-class-1: 0/0 new triple (1284, 0:00:00.025526)
-- DEBUG - ----- add-restriction-to-class-2: 0/0 new triple (1284, 0:00:00.017040)
-- DEBUG - ----- add-restriction-to-class-3: 0/0 new triple (1284, 0:00:00.015579)
-- DEBUG - ----- add-restriction-to-class-4: 0/0 new triple (1284, 0:00:00.013332)
-- DEBUG - ----- add-restriction-to-class-5: 0/0 new triple (1284, 0:00:00.018855)
-- DEBUG - ----- add-restriction-to-class-6: 0/0 new triple (1284, 0:00:00.015815)
+- DEBUG - ----- generate-individual: 0/0 new triple (1284, 0:00:00.015632)
+- DEBUG - ----- classify-individual-1: 0/0 new triple (1284, 0:00:00.010806)
+- DEBUG - ----- classify-individual-2: 0/0 new triple (1284, 0:00:00.015326)
+- DEBUG - ----- generate-atom-property-1: 0/0 new triple (1284, 0:00:00.017602)
+- DEBUG - ----- generate-atom-property-12: 0/0 new triple (1284, 0:00:00.014531)
+- DEBUG - ----- generate-inverse-relation: 0/0 new triple (1284, 0:00:00.010692)
+- DEBUG - ----- generate-composite-class: 0/0 new triple (1284, 0:00:00.015239)
+- DEBUG - ----- add-restriction-to-class-1: 0/0 new triple (1284, 0:00:00.031440)
+- DEBUG - ----- add-restriction-to-class-2: 0/0 new triple (1284, 0:00:00.016106)
+- DEBUG - ----- add-restriction-to-class-3: 0/0 new triple (1284, 0:00:00.018612)
+- DEBUG - ----- add-restriction-to-class-4: 0/0 new triple (1284, 0:00:00.016749)
+- DEBUG - ----- add-restriction-to-class-5: 0/0 new triple (1284, 0:00:00.018862)
+- DEBUG - ----- add-restriction-to-class-6: 0/0 new triple (1284, 0:00:00.015577)
 - DEBUG - --- Serializing graph to tenet.tetras-libre.fr_demo_01_generation 
 - DEBUG - ----- step: generation
 - DEBUG - ----- id: https://tenet.tetras-libre.fr/demo/01/
@@ -177,6 +177,6 @@
 - INFO - 
   *** Execution Time *** 
 ----- Function: create_ontology_from_amrld_file (tenet.main)
------ Total Time: 0:00:06.738201
------ Process Time: 0:00:06.621823
+----- Total Time: 0:00:06.636527
+----- Process Time: 0:00:06.529145
   *** - *** 
diff --git a/tests/dev_owl_rule_tests/phenomena_analyzer/__init__.py b/tests/dev_owl_rule_tests/phenomena_analyzer/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..8d1c8b69c3fce7bea45c73efd06983e3c419a92f
--- /dev/null
+++ b/tests/dev_owl_rule_tests/phenomena_analyzer/__init__.py
@@ -0,0 +1 @@
+ 
diff --git a/tests/dev_owl_rule_tests/phenomena_analyzer/and_analyzer_1.py b/tests/dev_owl_rule_tests/phenomena_analyzer/and_analyzer_1.py
new file mode 100644
index 0000000000000000000000000000000000000000..c2dc0da604d872fa0001309e9d47fdefc875f5ea
--- /dev/null
+++ b/tests/dev_owl_rule_tests/phenomena_analyzer/and_analyzer_1.py
@@ -0,0 +1,138 @@
+#!/usr/bin/python3.10
+# -*-coding:Utf-8 -*
+
+#==============================================================================
+# TENET: Rule to conjunctive phenomena and (rule 1)
+#------------------------------------------------------------------------------
+# Net Expansion AMR rule to analyse conjunctive phenomena (and)
+# Rule: property(_, and_phenomena) => relation(property, argument)
+#==============================================================================
+
+from rdflib import Graph
+
+import transduction
+from transduction import net
+from transduction.query_builder import generate_select_query
+from transduction.rdfterm_computer import produce_uriref, produce_literal
+
+
+#==============================================================================
+# Pattern Search: property(_, and_phenomena)
+#==============================================================================
+
+CONJUNCTION_PHENOMENA_URI = 'amr:phenomena_conjunction_and'  
+       
+def __search_pattern(graph):
+    select_data_list = ['?property_net', '?net_relation', '?phenomena_net']
+    clause_list = [f'?property_net a [rdfs:subClassOf* net:Property_Net].',
+                   f'?phenomena_net a [rdfs:subClassOf* net:Phenomena_Net].',
+                   f'?phenomena_net net:hasPhenomenaType {CONJUNCTION_PHENOMENA_URI}.',
+                   f'?net_relation a [rdfs:subClassOf* net:Relation].',
+                   f'?property_net ?net_relation ?phenomena_net.']
+    query_code = generate_select_query(graph, select_data_list, clause_list)
+    result_set = graph.query(query_code) 
+    return query_code, result_set
+
+
+
+#==============================================================================
+# Useful Additional Search
+#==============================================================================
+
+def __search_op_class_pattern(graph, phenomena_net_uri, num):
+    assert 1 <= num <= 9, f'invalid number ({num})'
+    select_data_list = ['?class_net']
+    clause_list = [f'?class_net a [rdfs:subClassOf* net:Class_Net].',
+                   (phenomena_net_uri, f'amr:role_op{num}', '?class_net')]
+    query_code = generate_select_query(graph, select_data_list, clause_list)
+    result_set = graph.query(query_code) 
+    return query_code, result_set
+
+def __search_phenomena_operator_class(graph, phenomena_net_uri):
+    query_code = ''
+    op_set = []
+    for num in range(1, 9+1):
+        query_code, result_set = __search_op_class_pattern(graph, phenomena_net_uri, num)
+        op_set += result_set
+    return query_code, op_set
+
+    
+def __search_op_property_pattern(graph, phenomena_net_uri, num):
+    assert 1 <= num <= 9, f'invalid number ({num})'
+    select_data_list = ['?property_net']
+    clause_list = [f'?property_net a [rdfs:subClassOf* net:Property_Net].',
+                   (phenomena_net_uri, f'amr:role_op{num}', '?property_net')]
+    query_code = generate_select_query(graph, select_data_list, clause_list)
+    result_set = graph.query(query_code) 
+    return query_code, result_set
+
+def __search_phenomena_operator_property(graph, phenomena_net_uri):
+    query_code = ''
+    op_set = []
+    for num in range(1, 9+1):
+        query_code, result_set = __search_op_property_pattern(graph, phenomena_net_uri, num)
+        op_set += result_set
+    return query_code, op_set
+
+
+
+#==============================================================================
+# Useful Computation Method(s)
+#==============================================================================  
+
+def __propagate_relation(left_net, amr_relation_uri, right_net_uri):
+    new_relation = (left_net.uri, amr_relation_uri, right_net_uri)
+    up_relation_list = left_net.output_relation_list + [new_relation]
+    left_net.output_relation_list = up_relation_list
+    
+    
+    
+#==============================================================================
+# Construct Method(s)
+#==============================================================================
+
+# None
+  
+    
+#==============================================================================
+# Main Method
+#==============================================================================
+
+def analyze_phenomena_and_1(graph):
+    
+    # -- Rule Initialization 
+    rule_label = 'analyze "and" phenomena (1)' 
+    rule_triple_list = []
+    
+    # -- Search for patterns 
+    _, pattern_set = __search_pattern(graph)
+    
+    # -- Pattern Analysis
+    for pattern in pattern_set:
+        property_net = net.PropertyNet(graph, uri=pattern.property_net)
+        phenomena_net = net.PhenomenaNet(graph, uri=pattern.phenomena_net)
+        
+        # -- Search for phenomena operators
+        
+        # -- Relation Propagation for Operator Class Net
+        _, operator_class_set = __search_phenomena_operator_class(graph, phenomena_net.uri)
+        for operator in operator_class_set:
+            amr_relation_uri = produce_uriref(graph, pattern.net_relation)
+            right_net_uri = produce_uriref(graph, operator.class_net)
+            __propagate_relation(property_net, amr_relation_uri, right_net_uri)
+            rule_triple_list += property_net.generate_net_relation_triples()
+            
+        # -- Relation Propagation for Operator Class Net
+        _, operator_property_set = __search_phenomena_operator_property(graph, phenomena_net.uri)
+        for operator in operator_property_set:
+            amr_relation_uri = produce_uriref(graph, pattern.net_relation)
+            right_net_uri = produce_uriref(graph, operator.property_net)
+            __propagate_relation(property_net, amr_relation_uri, right_net_uri)
+            rule_triple_list += property_net.generate_net_relation_triples()
+        
+        
+        # -- New Net Construction (as union of properties)
+        # _, triple_list = __construct_class_union_net(graph, class_net_1, class_net_list)
+        # rule_triple_list += triple_list
+    
+    return rule_label, rule_triple_list
\ No newline at end of file
diff --git a/tests/dev_owl_rule_tests/phenomena_analyzer/and_analyzer_2.py b/tests/dev_owl_rule_tests/phenomena_analyzer/and_analyzer_2.py
new file mode 100644
index 0000000000000000000000000000000000000000..5c4fcb40eee9f3781438d8fc966c096cad40ea83
--- /dev/null
+++ b/tests/dev_owl_rule_tests/phenomena_analyzer/and_analyzer_2.py
@@ -0,0 +1,138 @@
+#!/usr/bin/python3.10
+# -*-coding:Utf-8 -*
+
+#==============================================================================
+# TENET: Rule to conjunctive phenomena and (rule 2)
+#------------------------------------------------------------------------------
+# Net Expansion AMR rule to analyse conjunctive phenomena (and)
+# Rule: phenomena(_, and_phenomena) => relation(phenomena, argument)
+#==============================================================================
+
+from rdflib import Graph
+
+import transduction
+from transduction import net
+from transduction.query_builder import generate_select_query
+from transduction.rdfterm_computer import produce_uriref, produce_literal
+
+
+#==============================================================================
+# Pattern Search: modality(_, and_phenomena)
+#==============================================================================
+
+CONJUNCTION_PHENOMENA_URI = 'amr:phenomena_conjunction_and'  
+       
+def __search_pattern(graph):
+    select_data_list = ['?left_phenomena_net', '?net_relation', '?right_phenomena_net']
+    clause_list = [f'?left_phenomena_net a [rdfs:subClassOf* net:Phenomena_Net].',
+                   f'?right_phenomena_net a [rdfs:subClassOf* net:Phenomena_Net].',
+                   f'?right_phenomena_net net:hasPhenomenaType {CONJUNCTION_PHENOMENA_URI}.',
+                   f'?net_relation a [rdfs:subClassOf* net:Relation].',
+                   f'?left_phenomena_net ?net_relation ?right_phenomena_net.']
+    query_code = generate_select_query(graph, select_data_list, clause_list)
+    result_set = graph.query(query_code) 
+    return query_code, result_set
+
+
+
+#==============================================================================
+# Useful Additional Search
+#==============================================================================
+
+def __search_op_class_pattern(graph, phenomena_net_uri, num):
+    assert 1 <= num <= 9, f'invalid number ({num})'
+    select_data_list = ['?class_net']
+    clause_list = [f'?class_net a [rdfs:subClassOf* net:Class_Net].',
+                   (phenomena_net_uri, f'amr:role_op{num}', '?class_net')]
+    query_code = generate_select_query(graph, select_data_list, clause_list)
+    result_set = graph.query(query_code) 
+    return query_code, result_set
+
+def __search_phenomena_operator_class(graph, phenomena_net_uri):
+    query_code = ''
+    op_set = []
+    for num in range(1, 9+1):
+        query_code, result_set = __search_op_class_pattern(graph, phenomena_net_uri, num)
+        op_set += result_set
+    return query_code, op_set
+
+    
+def __search_op_property_pattern(graph, phenomena_net_uri, num):
+    assert 1 <= num <= 9, f'invalid number ({num})'
+    select_data_list = ['?property_net']
+    clause_list = [f'?property_net a [rdfs:subClassOf* net:Property_Net].',
+                   (phenomena_net_uri, f'amr:role_op{num}', '?property_net')]
+    query_code = generate_select_query(graph, select_data_list, clause_list)
+    result_set = graph.query(query_code) 
+    return query_code, result_set
+
+def __search_phenomena_operator_property(graph, phenomena_net_uri):
+    query_code = ''
+    op_set = []
+    for num in range(1, 9+1):
+        query_code, result_set = __search_op_property_pattern(graph, phenomena_net_uri, num)
+        op_set += result_set
+    return query_code, op_set
+
+
+
+#==============================================================================
+# Useful Computation Method(s)
+#==============================================================================  
+
+def __propagate_relation(left_net, amr_relation_uri, right_net_uri):
+    new_relation = (left_net.uri, amr_relation_uri, right_net_uri)
+    up_relation_list = left_net.output_relation_list + [new_relation]
+    left_net.output_relation_list = up_relation_list
+    
+    
+    
+#==============================================================================
+# Construct Method(s)
+#==============================================================================
+
+# None
+  
+    
+#==============================================================================
+# Main Method
+#==============================================================================
+
+def analyze_phenomena_and_2(graph):
+    
+    # -- Rule Initialization 
+    rule_label = 'analyze "and" phenomena (2)' 
+    rule_triple_list = []
+    
+    # -- Search for patterns 
+    _, pattern_set = __search_pattern(graph)
+    
+    # -- Pattern Analysis
+    for pattern in pattern_set:
+        property_net = net.PhenomenaNet(graph, uri=pattern.left_phenomena_net)
+        phenomena_net = net.PhenomenaNet(graph, uri=pattern.right_phenomena_net)
+        
+        # -- Search for phenomena operators
+        
+        # -- Relation Propagation for Operator Class Net
+        _, operator_class_set = __search_phenomena_operator_class(graph, phenomena_net.uri)
+        for operator in operator_class_set:
+            amr_relation_uri = produce_uriref(graph, pattern.net_relation)
+            right_net_uri = produce_uriref(graph, operator.class_net)
+            __propagate_relation(property_net, amr_relation_uri, right_net_uri)
+            rule_triple_list += property_net.generate_net_relation_triples()
+            
+        # -- Relation Propagation for Operator Class Net
+        _, operator_property_set = __search_phenomena_operator_property(graph, phenomena_net.uri)
+        for operator in operator_property_set:
+            amr_relation_uri = produce_uriref(graph, pattern.net_relation)
+            right_net_uri = produce_uriref(graph, operator.property_net)
+            __propagate_relation(property_net, amr_relation_uri, right_net_uri)
+            rule_triple_list += property_net.generate_net_relation_triples()
+        
+        
+        # -- New Net Construction (as union of properties)
+        # _, triple_list = __construct_class_union_net(graph, class_net_1, class_net_list)
+        # rule_triple_list += triple_list
+    
+    return rule_label, rule_triple_list
\ No newline at end of file
diff --git a/tests/dev_owl_rule_tests/phenomena_analyzer/mod_analyzer_1.py b/tests/dev_owl_rule_tests/phenomena_analyzer/mod_analyzer_1.py
new file mode 100644
index 0000000000000000000000000000000000000000..dd2090e6ffd4a1775e2a028ec1e39fafbfbfbe32
--- /dev/null
+++ b/tests/dev_owl_rule_tests/phenomena_analyzer/mod_analyzer_1.py
@@ -0,0 +1,182 @@
+#!/usr/bin/python3.10
+# -*-coding:Utf-8 -*
+
+#==============================================================================
+# TENET: Rule to analyze phenomena mod (rule 1)
+#------------------------------------------------------------------------------
+# Net Expansion AMR rule to analyse modifier phenomena (mod)
+# Rule: mod(class, class) => compositeClass
+#==============================================================================
+
+import rdflib
+from rdflib import Graph
+
+import transduction
+from transduction import net
+from transduction.query_builder import generate_select_query
+from transduction.naming_computer import define_axiom_naming
+from transduction.naming_computer import define_composite_naming_2
+
+
+#==============================================================================
+# Pattern Search: mod(class, class)
+#==============================================================================
+
+MOD_RELATION = 'amr:role_mod' 
+
+def __search_pattern(graph):
+    select_data_list = ['?class_net_1', '?class_net_2']
+    clause_list = [f'?class_net_1 a [rdfs:subClassOf* net:Class_Net].',
+                   f'?class_net_2 a [rdfs:subClassOf* net:Class_Net].',
+                   f'?class_net_1 {MOD_RELATION} ?class_net_2.']
+    query_code = generate_select_query(graph, select_data_list, clause_list)
+    result_set = graph.query(query_code) 
+    return query_code, result_set
+
+    
+
+#==============================================================================
+# Useful Computation Method(s)
+#============================================================================== 
+  
+def __extract_naming(net, default='none'):
+    naming = f'{default}'
+    naming_list = net.naming
+    if len(naming_list) > 0:
+        assert len(naming_list) == 1, f'Houston, we have a problem: too many naming'
+        naming = naming_list[0]
+    return naming
+
+def __define_feature_restriction_naming(class_net):
+    name = __extract_naming(class_net, default='something')
+    return f'{name}-feature'
+
+def __define_composite_naming(class_net_1, class_net_2):
+    name_1 = __extract_naming(class_net_1, default='something')
+    name_2 = __extract_naming(class_net_2, default='something')
+    return f'{name_2}-{name_1}'
+
+
+def __filter_relation(relation_list):
+    result_list = []
+    for relation in relation_list:
+        check = True
+        (s, p, o) = relation
+        if s == o: check = False
+        if p == MOD_RELATION: check = False
+        if check: result_list.append(relation)
+    return result_list
+
+def __propagate_relation(target_net, base_net):
+    target_net.input_relation_list = base_net.input_relation_list
+    out_relation_list = __filter_relation(base_net.output_relation_list)
+    target_net.output_relation_list = out_relation_list
+    
+    
+    
+#==============================================================================
+# Construct Method(s)
+#============================================================================== 
+
+def __construct_feature_restriction_net(graph, class_net): # TODO
+    
+    restriction_net = net.RestrictionNet(graph)
+    restriction_net.compose(class_net)
+    
+    # -- Data Computation
+    restriction_net.restriction_property = '--hasFeature--' # TODO
+    restriction_net.restriction_net_value = class_net.uri
+
+    # -- Relation Propagation: None
+
+    # -- Net Naming
+    restriction_net.naming = __define_feature_restriction_naming(class_net)
+    
+    # -- Finalization
+    restriction_net.finalize()
+    triple_list = restriction_net.generate_triple_definition()
+    
+    return restriction_net, triple_list
+    
+    
+
+def __construct_composite_class_net(graph, class_net_1, class_net_2):
+
+    # -- Net Composition
+    composite_class_net = net.CompositeClassNet(graph)
+    composite_class_net.compose(class_net_1, class_net_2)
+    
+    # -- Data Computation
+    composite_class_net.mother_class_net = class_net_1.uri
+
+    # -- Restriction Computation
+    triple_list_1 = []
+    # restriction_net, triple_list_1 = __construct_feature_restriction_net(graph, class_net)
+    # composite_class_net.restriction = restriction_net.uri 
+
+    # -- Net Naming
+    composite_class_net.naming = __define_composite_naming(class_net_1, class_net_2)
+    
+    # -- Relation Propagation
+    __propagate_relation(composite_class_net, class_net_1)
+    
+    # -- Finalization
+    composite_class_net.finalize()
+    triple_list_2 = composite_class_net.generate_triple_definition()
+    result_triple_list = triple_list_1 + triple_list_2
+    
+    return composite_class_net, result_triple_list
+    
+    
+
+def __construct_individual_net(graph, class_net):
+
+    # -- Net Composition
+    individual_net = net.IndividualNet(graph)
+    individual_net.compose(class_net)
+    
+    # -- Data Computation
+    individual_net.base_class_name = f'Feature'
+    individual_net.mother_class_net = class_net.uri
+
+    # -- Net Naming
+    individual_net.naming = f'{__extract_naming(class_net, default="something")}'
+    individual_net.individual_label = f'{__extract_naming(class_net, default="something")}'
+    
+    # -- Finalization
+    individual_net.finalize()
+    result_triple_list = individual_net.generate_triple_definition()
+    
+    return individual_net, result_triple_list
+
+  
+    
+#==============================================================================
+# Main Method: analyze_phenomena_or_1
+#==============================================================================
+
+def analyze_phenomena_mod_1(graph):
+    
+    # -- Rule Initialization 
+    rule_label = 'analyze modifier phenomena (mod)' 
+
+    # -- Search for patterns 
+    _, pattern_set = __search_pattern(graph)
+    
+    # -- Selection Analyzing (1)
+    rule_triple_list = []
+    for pattern in pattern_set:
+        class_net_1 = net.ClassNet(graph, uri=pattern.class_net_1)
+        class_net_2 = net.ClassNet(graph, uri=pattern.class_net_2)
+        
+        # -- New Net Construction(s)
+        _, triple_list_1 = __construct_composite_class_net(graph, class_net_1, class_net_2)  
+        _, triple_list_2 = __construct_individual_net(graph, class_net_2)
+        
+        # -- Resulting List Update
+        rule_triple_list += triple_list_1 + triple_list_2
+        
+        # -- Deprecation: Origin Class Net
+        rule_triple_list += class_net_1.deprecate()
+    
+    return rule_label, rule_triple_list
\ No newline at end of file
diff --git a/tests/dev_owl_rule_tests/phenomena_analyzer/or_analyzer_1.py b/tests/dev_owl_rule_tests/phenomena_analyzer/or_analyzer_1.py
new file mode 100644
index 0000000000000000000000000000000000000000..8283ee1d45006df0a62b820e009b374dc02e8159
--- /dev/null
+++ b/tests/dev_owl_rule_tests/phenomena_analyzer/or_analyzer_1.py
@@ -0,0 +1,212 @@
+#!/usr/bin/python3.10
+# -*-coding:Utf-8 -*
+
+#==============================================================================
+# TENET: Rule to conjunctive phenomena or (rule 1)
+#------------------------------------------------------------------------------
+# Net Expansion AMR rule to analyse conjunctive phenomena (or)
+# Rule: property(class, or_phenomena) => compositeClass
+#==============================================================================
+
+from rdflib import Graph
+
+import transduction
+from transduction import net
+from transduction.query_builder import generate_select_query
+from transduction.naming_computer import define_composite_naming_1, define_restriction_naming
+
+
+#==============================================================================
+# Pattern Search: property(class, or_phenomena)
+#==============================================================================
+
+def __rule_pattern_query_code(graph):
+    select_data_list = ['?property_net', '?class_net', '?phenomena_net']
+    clause_list = []
+    clause_list.append(f'?property_net a [rdfs:subClassOf* net:Property_Net].')
+    clause_list.append(f'?class_net a [rdfs:subClassOf* net:Class_Net].')
+    clause_list.append(f'?phenomena_net a [rdfs:subClassOf* net:Phenomena_Net].')
+    clause_list.append(f'?phenomena_net net:hasPhenomenaType amr:phenomena_conjunction_or.')
+    clause_list.append(f'?property_net amr:role_ARG0 ?class_net.')
+    clause_list.append(f'?property_net amr:role_ARG1 ?phenomena_net.')
+    query_code = generate_select_query(graph, select_data_list, clause_list)
+    return query_code
+    
+       
+def __search_pattern(graph):
+    query_code = __rule_pattern_query_code(graph)
+    rule_pattern_set = graph.query(query_code) 
+    return rule_pattern_set
+
+
+
+#==============================================================================
+# Useful Additional Search
+#==============================================================================
+
+def __class_op_pattern_query_code(graph, phenomena_net_uri, num):
+    assert 1 <= num <= 9, f'invalid number ({num})'
+    select_data_list = ['?class_net']
+    clause_list = [f'?class_net a [rdfs:subClassOf* net:Class_Net].']
+    clause_list.append((phenomena_net_uri, f'amr:role_op{num}', '?class_net'))
+    query_code = generate_select_query(graph, select_data_list, clause_list)
+    return query_code
+
+
+def __search_class_phenomena_operator(graph, phenomena_net_uri):
+    op_set = []
+    for num in range(1, 9+1):
+        query_code = __class_op_pattern_query_code(graph, phenomena_net_uri, num)
+        op_set += graph.query(query_code) 
+    return op_set
+
+    
+
+#==============================================================================
+# Useful Computation Method(s)
+#==============================================================================  
+
+def __filter_relation(relation_list):
+    result_list = []
+    for relation in relation_list:
+        check = True
+        (s, p, o) = relation
+        if s == o: check = False
+        if check: result_list.append(relation)
+    return result_list
+
+
+def __propagate_relation(target_net, base_net):
+    # -- target_net.input_relation_list = base_net.input_relation_list
+    out_relation_list = __filter_relation(base_net.output_relation_list)
+    target_net.output_relation_list = out_relation_list
+    
+    
+    
+#==============================================================================
+# Construct Method(s)
+#==============================================================================
+
+def __construct_restriction_net(graph, property_net_1, property_net_2):
+    
+    restriction_net = net.RestrictionNet(graph)
+    restriction_net.compose(property_net_1, property_net_2)
+    
+    # -- Data Computation
+    restriction_net.restriction_property = property_net_1.uri
+    restriction_net.restriction_net_value = property_net_2.uri
+
+    # -- Relation Propagation: None
+
+    # -- Net Naming
+    restriction_net.naming = define_restriction_naming(property_net_1, property_net_2)
+    
+    # -- Finalization
+    restriction_net.finalize()
+    triple_list = restriction_net.generate_triple_definition()
+    
+    return restriction_net, triple_list
+    
+    
+
+def __construct_composite_class_net_from_3_nets(
+        graph, base_class_net, core_property_net, target_class_net):
+
+    # -- Net Composition
+    composite_class_net = net.CompositePropertyNet(graph)
+    composite_class_net.compose(base_class_net, core_property_net, target_class_net)
+    
+    # -- Data Computation
+    composite_class_net.mother_class_net = base_class_net.uri
+
+    # -- Restriction Computation
+    restriction_net, triple_list_1 = __construct_restriction_net(graph, core_property_net, target_class_net)
+    composite_class_net.restriction = restriction_net.uri
+    
+    # -- Relation Propagation
+    __propagate_relation(composite_class_net, base_class_net) 
+
+    # -- Net Naming
+    composite_class_net.naming = define_composite_naming_1(
+        base_class_net, core_property_net, target_class_net)
+    
+    # -- Finalization
+    composite_class_net.finalize()
+    triple_list_2 = composite_class_net.generate_triple_definition()
+    result_triple_list = triple_list_1 + triple_list_2
+    
+    return composite_class_net, result_triple_list
+
+
+
+def __construct_class_union_net(graph, base_class_net, class_net_list):
+
+    # -- Net Composition
+    class_union_net = net.PropertyUnionNet(graph)
+    class_union_net.compose(base_class_net, class_net_list)
+    
+    # -- Data Computation: None
+
+    # -- Restriction Computation: None
+    
+    # -- Relation Propagation
+    __propagate_relation(class_union_net, base_class_net) 
+
+    # -- Net Naming
+    class_union_net.naming = define_union_naming(base_class_net)
+    
+    # -- Finalization
+    class_union_net.finalize()
+    triple_list = class_union_net.generate_triple_definition()
+    
+    return class_union_net, triple_list
+  
+    
+#==============================================================================
+# Main Method: analyze_phenomena_or_1
+#==============================================================================
+
+def analyze_phenomena_or_1(graph):
+    
+    # -- Rule Initialization 
+    rule_label = 'analyze "or" phenomena (1)' 
+
+    # -- Search for patterns 
+    rule_pattern_set = __search_pattern(graph)
+    
+    # -- Selection Analyzing (1)
+    rule_triple_list = []
+    for selection_1 in rule_pattern_set:
+        
+        # -- Net Selection
+        class_net_1 = net.ClassNet(graph, uri=selection_1.class_net)
+        property_net = net.PropertyNet(graph, uri=selection_1.property_net)
+        phenomena_net = net.PhenomenaNet(graph, uri=selection_1.phenomena_net)
+        
+        # -- Search for phenomena operators
+        class_operator_set = __search_class_phenomena_operator(graph, phenomena_net.uri)
+        
+        # -- Selection Analyzing (2)
+        class_net_list = []
+        for selection_2 in class_operator_set:
+            # print(f' *** DEVTEST *** {selection_2.class_net}')
+            
+            # -- Net Selection
+            class_net_2 = net.ClassNet(graph, uri=selection_2.class_net)
+            
+            # -- New Net Construction (from 3 nets)
+            new_class, triple_list = __construct_composite_class_net_from_3_nets(
+                graph, class_net_1, property_net, class_net_2)
+            
+            # -- Resulting List Update
+            class_net_list.append(new_class)
+            rule_triple_list += triple_list
+        
+        # -- Deprecation: Origin Class Net
+        rule_triple_list += class_net_1.deprecate()
+        
+        # -- New Net Construction (as union of properties)
+        # _, triple_list = __construct_class_union_net(graph, class_net_1, class_net_list)
+        # rule_triple_list += triple_list
+    
+    return rule_label, rule_triple_list
\ No newline at end of file
diff --git a/tests/dev_owl_rule_tests/phenomena_analyzer/or_analyzer_2.py b/tests/dev_owl_rule_tests/phenomena_analyzer/or_analyzer_2.py
new file mode 100644
index 0000000000000000000000000000000000000000..88955c5a726895760ed8c56c8b4bb58842ca973c
--- /dev/null
+++ b/tests/dev_owl_rule_tests/phenomena_analyzer/or_analyzer_2.py
@@ -0,0 +1,217 @@
+#!/usr/bin/python3.10
+# -*-coding:Utf-8 -*
+
+#==============================================================================
+# TENET: Rule to conjunctive phenomena or (rule 2)
+#------------------------------------------------------------------------------
+# Net Expansion AMR rule to analyse conjunctive phenomena (or)
+# Rule: property(property, or_phenomena) => compositeProperty
+#==============================================================================
+
+from rdflib import Graph
+
+import transduction
+from transduction import net
+from transduction.query_builder import generate_select_query
+from transduction.naming_computer import define_composite_naming_1, define_restriction_naming
+
+
+#==============================================================================
+# Search for patterns: property(property, or_phenomena)
+#==============================================================================
+
+def __rule_pattern_query_code(graph):
+    select_data_list = ['?property_net_core', '?property_net_arg0', '?phenomena_net']
+    clause_list = []
+    clause_list.append(f'?property_net_core a [rdfs:subClassOf* net:Property_Net].')
+    clause_list.append(f'?property_net_arg0 a [rdfs:subClassOf* net:Property_Net].')
+    clause_list.append(f'?phenomena_net a [rdfs:subClassOf* net:Phenomena_Net].')
+    clause_list.append(f'?phenomena_net net:hasPhenomenaType amr:phenomena_conjunction_or.')
+    clause_list.append(f'?property_net_core amr:role_ARG0 ?property_net_arg0.')
+    clause_list.append(f'?property_net_core amr:role_ARG1 ?phenomena_net.')
+    query_code = generate_select_query(graph, select_data_list, clause_list)
+    return query_code
+
+
+def __search_pattern(graph):
+    query_code = __rule_pattern_query_code(graph)
+    rule_pattern_set = graph.query(query_code) 
+    return rule_pattern_set
+
+
+
+#==============================================================================
+# Search for phenomena operators: 
+#==============================================================================
+
+def __property_op_pattern_query_code(graph, phenomena_net_uri, num):
+    assert 1 <= num <= 9, f'invalid number ({num})'
+    select_data_list = ['?property_net']
+    clause_list = [f'?property_net a [rdfs:subClassOf* net:Property_Net].']
+    clause_list.append((phenomena_net_uri, f'amr:role_op{num}', '?property_net'))
+    query_code = generate_select_query(graph, select_data_list, clause_list)
+    return query_code
+
+
+def __search_property_phenomena_operator(graph, phenomena_net_uri):
+    op_set = []
+    for num in range(1, 9+1):
+        query_code = __property_op_pattern_query_code(graph, phenomena_net_uri, num)
+        op_set += graph.query(query_code) 
+    return op_set
+
+
+
+#==============================================================================
+# Relation Propagation
+#==============================================================================
+
+def __filter_relation(relation_list):
+    result_list = []
+    for relation in relation_list:
+        check = True
+        (s, p, o) = relation
+        if s == o: check = False
+        if check: result_list.append(relation)
+    return result_list
+
+
+def __propagate_relation(target_net, base_net):
+    # -- target_net.input_relation_list = base_net.input_relation_list
+    out_relation_list = __filter_relation(base_net.output_relation_list)
+    target_net.output_relation_list = out_relation_list
+  
+    
+       
+#==============================================================================
+# Construct Methods: construction of composite property net
+#==============================================================================
+
+def __construct_restriction_net(graph, property_net_1, property_net_2):
+    
+    restriction_net = net.RestrictionNet(graph)
+    restriction_net.compose(property_net_1, property_net_2)
+    
+    # -- Data Computation
+    restriction_net.restriction_property = property_net_1.uri
+    restriction_net.restriction_net_value = property_net_2.uri
+
+    # -- Relation Propagation: None
+
+    # -- Net Naming
+    restriction_net.naming = define_restriction_naming(property_net_1, property_net_2)
+    
+    # -- Finalization
+    restriction_net.finalize()
+    triple_list = restriction_net.generate_triple_definition()
+    
+    return restriction_net, triple_list
+    
+    
+
+def __construct_composite_property_net_from_3_properties(
+        graph, base_property_net, core_property_net, target_property_net):
+
+    # -- Net Composition
+    composite_property_net = net.CompositePropertyNet(graph)
+    composite_property_net.compose(base_property_net, core_property_net, target_property_net)
+    
+    # -- Data Computation
+    composite_property_net.mother_property_net = base_property_net.uri
+    composite_property_net.property_type = 'owl:ObjectProperty'
+
+    # -- Restriction Computation
+    restriction_net, triple_list_1 = __construct_restriction_net(graph, core_property_net, target_property_net)
+    composite_property_net.restriction = restriction_net.uri
+    
+    # -- Relation Propagation
+    __propagate_relation(composite_property_net, base_property_net) 
+
+    # -- Net Naming
+    composite_property_net.naming = define_composite_naming_1(
+        base_property_net, core_property_net, target_property_net)
+    
+    # -- Finalization
+    composite_property_net.finalize()
+    triple_list_2 = composite_property_net.generate_triple_definition()
+    result_triple_list = triple_list_1 + triple_list_2
+    
+    return composite_property_net, result_triple_list
+
+
+
+def __construct_property_union_net(graph, base_property_net, property_net_list):
+
+    # -- Net Composition
+    property_union_net = net.PropertyUnionNet(graph)
+    property_union_net.compose(base_property_net, property_net_list)
+    
+    # -- Data Computation: None
+
+    # -- Restriction Computation: None
+    
+    # -- Relation Propagation
+    __propagate_relation(property_union_net, base_property_net) 
+
+    # -- Net Naming
+    property_union_net.naming = define_union_naming(base_property_net)
+    
+    # -- Finalization
+    property_union_net.finalize()
+    triple_list = property_union_net.generate_triple_definition()
+    
+    return property_union_net, triple_list
+    
+
+
+#==============================================================================
+# Main Method: analyze_phenomena_or_2
+#==============================================================================
+
+def analyze_phenomena_or_2(graph):
+    
+    # -- Rule Initialization 
+    rule_label = 'analyze "or" phenomena (2)'
+    # print(f"--- *** February Transduction *** Sequence: {rule_label}")  
+
+    # -- Search for patterns 
+    rule_pattern_set = __search_pattern(graph)
+    
+    # -- Selection Analyzing (1)
+    rule_triple_list = []
+    for selection_1 in rule_pattern_set:
+        
+        # -- Net Selection
+        property_net_1 = net.PropertyNet(graph, uri=selection_1.property_net_arg0)
+        property_net_2 = net.PropertyNet(graph, uri=selection_1.property_net_core)
+        phenomena_net = net.PhenomenaNet(graph, uri=selection_1.phenomena_net)
+        
+        # -- Search for phenomena operators
+        property_operator_set = __search_property_phenomena_operator(graph, phenomena_net.uri)
+        
+        # -- Selection Analyzing (2)
+        property_net_list = []
+        for selection_2 in property_operator_set:
+            # print(f' *** DEVTEST *** {selection_2.property_net}')
+            
+            # -- Net Selection
+            property_net_3 = net.PropertyNet(graph, uri=selection_2.property_net)
+            
+            # -- New Net Construction (from 3 property nets)
+            new_property, triple_list = __construct_composite_property_net_from_3_properties(
+                graph, property_net_1, property_net_2, property_net_3)
+            
+            # -- Resulting List Update
+            property_net_list.append(new_property)
+            rule_triple_list += triple_list
+        
+        # -- Deprecation: Origin Property Net
+        rule_triple_list += property_net_1.deprecate()
+        
+        # -- New Net Construction (as union of properties)
+        # _, triple_list = __construct_property_union_net(graph, property_net_1, property_net_list)
+        # rule_triple_list += triple_list
+    
+    return rule_label, rule_triple_list
+
+    
\ No newline at end of file
diff --git a/tests/dev_owl_rule_tests/phenomena_analyzer/polarity_analyzer_1.py b/tests/dev_owl_rule_tests/phenomena_analyzer/polarity_analyzer_1.py
new file mode 100644
index 0000000000000000000000000000000000000000..364ad348888513e6f09514dca64d923175b370e3
--- /dev/null
+++ b/tests/dev_owl_rule_tests/phenomena_analyzer/polarity_analyzer_1.py
@@ -0,0 +1,149 @@
+#!/usr/bin/python3.10
+# -*-coding:Utf-8 -*
+
+#==============================================================================
+# TENET: Rule to negative polarity phenomena (rule 1)
+#------------------------------------------------------------------------------
+# Net Expansion AMR rule to analyse negative polarity phenomena 
+# Rule: polarity(property, 'negative') => compositeClass
+#==============================================================================
+
+import rdflib
+from rdflib import Graph
+
+import transduction
+from transduction import net
+from transduction.query_builder import generate_select_query
+from transduction.naming_computer import define_axiom_naming
+from transduction.naming_computer import define_composite_naming_2
+
+
+#==============================================================================
+# Pattern Search: polarity(property, 'negative')
+#==============================================================================
+
+POLARITY_RELATION = 'amr:role_polarity' 
+
+def __search_pattern(graph):
+    select_data_list = ['?property_net']
+    clause_list = [f'?property_net a [rdfs:subClassOf* net:Property_Net].',
+                   f'?property_net {POLARITY_RELATION} ?value_net.',
+                   ('?value_net', 'net:hasValueLabel', rdflib.term.Literal('negative'))]
+    query_code = generate_select_query(graph, select_data_list, clause_list)
+    result_set = graph.query(query_code) 
+    return query_code, result_set
+    
+
+
+#==============================================================================
+# Relation Propagation
+#==============================================================================
+
+def __filter_relation(relation_list):
+    result_list = []
+    for relation in relation_list:
+        check = True
+        (s, p, o) = relation
+        if s == o: check = False
+        if p == POLARITY_RELATION: check = False
+        if check: result_list.append(relation)
+    return result_list
+
+
+def __propagate_relation(target_net, base_net):
+    target_net.input_relation_list = base_net.input_relation_list
+    out_relation_list = __filter_relation(base_net.output_relation_list)
+    target_net.output_relation_list = out_relation_list
+    
+    
+    
+#==============================================================================
+# Construct Methods: construction of composite class net
+#==============================================================================
+
+def __construct_disjoint_axiom_net(graph, property_net_1, property_net_2):
+    
+    axiom_net = net.AxiomNet(graph)
+    axiom_net.compose(property_net_1, property_net_2)
+    
+    # -- Data Computation
+    axiom_net.axiom_name = 'disjointProperty'
+    axiom_net.axiom_uri = 'owl:propertyDisjointWith'
+    axiom_net.axiom_net_argument = [property_net_1.uri, property_net_2.uri]
+
+    # -- Relation Propagation: None
+
+    # -- Net Naming
+    arg_net_list = [property_net_1, property_net_2]
+    axiom_net.naming = define_axiom_naming(axiom_net, arg_net_list)
+    
+    # -- Finalization
+    axiom_net.finalize()
+    triple_list = axiom_net.generate_triple_definition()
+    
+    return axiom_net, triple_list
+    
+    
+
+def __construct_negative_property_net(graph, property_net_1):
+
+    # -- Net Composition
+    composite_property_net = net.CompositePropertyNet(graph)
+    composite_property_net.compose(property_net_1)
+    
+    # -- Data Computation
+    composite_property_net.property_type = 'owl:ObjectProperty'
+
+    # -- Restriction Computation
+    triple_list_1 = []
+    # restriction_net, triple_list_1 = __construct_restriction_net(graph, property_net_1)
+    # composite_class_net.restriction = restriction_net.uri
+
+    # -- Net Naming
+    composite_property_net.naming = define_composite_naming_2('not', property_net_1)
+    
+    # -- Relation Propagation
+    __propagate_relation(composite_property_net, property_net_1) 
+    
+    # -- Finalization
+    composite_property_net.finalize()
+    triple_list_2 = composite_property_net.generate_triple_definition()
+    result_triple_list = triple_list_1 + triple_list_2
+    
+    return composite_property_net, result_triple_list
+
+  
+    
+#==============================================================================
+# Main Method
+#==============================================================================
+
+def analyze_phenomena_polarity_1(graph):
+    
+    # -- Rule Initialization 
+    rule_label = 'analyze "polarity" phenomena (1)' 
+    rule_triple_list = []
+
+    # -- Search for patterns 
+    _, pattern_set = __search_pattern(graph)
+    
+    # -- Pattern Analysis
+    for pattern in pattern_set:
+        
+        # -- Net Selection
+        property_net = net.PropertyNet(graph, uri=pattern.property_net)
+        
+        # -- New Negative Property Net
+        negative_property_net, triple_list_1 = __construct_negative_property_net(graph, property_net)
+        
+        # -- New Axiom Net
+        _, triple_list_2 = __construct_disjoint_axiom_net(graph, property_net, negative_property_net)
+        _, triple_list_3 = __construct_disjoint_axiom_net(graph, negative_property_net, property_net)
+        
+        # -- Update Rule Triple List
+        rule_triple_list += triple_list_1 + triple_list_2 + triple_list_3
+        
+        # -- Deprecation: Origin Class Net
+        rule_triple_list += property_net.deprecate()
+    
+    return rule_label, rule_triple_list
\ No newline at end of file
diff --git a/tests/dev_owl_rule_tests/phenomena_analyzer/polarity_analyzer_2.py b/tests/dev_owl_rule_tests/phenomena_analyzer/polarity_analyzer_2.py
new file mode 100644
index 0000000000000000000000000000000000000000..57358c28384afd9cb7ae498db8464dd8d28d095b
--- /dev/null
+++ b/tests/dev_owl_rule_tests/phenomena_analyzer/polarity_analyzer_2.py
@@ -0,0 +1,119 @@
+#!/usr/bin/python3.10
+# -*-coding:Utf-8 -*
+
+#==============================================================================
+# TENET: Rule to negative polarity phenomena (rule 2)
+#------------------------------------------------------------------------------
+# Net Expansion AMR rule to analyse negative polarity phenomena 
+# Rule: polarity(phenomena, 'negative') => phenomena
+#==============================================================================
+
+import rdflib
+from rdflib import Graph
+
+import transduction
+from transduction import net
+from transduction.query_builder import generate_select_query
+from transduction.naming_computer import define_axiom_naming
+from transduction.naming_computer import define_composite_naming_2
+
+
+#==============================================================================
+# Pattern Search: polarity(phenomena, 'negative')
+#==============================================================================
+
+POLARITY_RELATION = 'amr:role_polarity' 
+PHENOMENA_TYPE_RELATION = 'net:hasPhenomenaType' 
+POSSIBLE_PHENOMENA_URI = 'amr:phenomena_modality_possible'
+
+def __search_pattern(graph):
+    select_data_list = ['?phenomena_net', '?value_net']
+    clause_list = [f'?phenomena_net a [rdfs:subClassOf* net:Phenomena_Net].',
+                   f'FILTER NOT EXISTS {{ ?phenomena_net a net:Deprecated_Net. }}',
+                   f'?phenomena_net {PHENOMENA_TYPE_RELATION} {POSSIBLE_PHENOMENA_URI}.',
+                   f'?phenomena_net {POLARITY_RELATION} ?value_net.',
+                   f'FILTER NOT EXISTS {{ ?value_net a net:Deprecated_Net. }}',
+                   ('?value_net', 'net:hasValueLabel', rdflib.term.Literal('negative'))]
+    query_code = generate_select_query(graph, select_data_list, clause_list)
+    result_set = graph.query(query_code) 
+    return query_code, result_set
+
+    
+
+#==============================================================================
+# Useful Computation Method(s)
+#==============================================================================  
+
+def __filter_relation(relation_list):
+    result_list = []
+    for relation in relation_list:
+        check = True
+        (s, p, o) = relation
+        if s == o: check = False
+        if p == POLARITY_RELATION: check = False
+        if check: result_list.append(relation)
+    return result_list
+
+
+def __propagate_relation(target_net, base_net):
+    target_net.input_relation_list = base_net.input_relation_list
+    out_relation_list = __filter_relation(base_net.output_relation_list)
+    target_net.output_relation_list = out_relation_list
+
+
+
+#==============================================================================
+# Construct Method(s)
+#============================================================================== 
+
+def __construct_phenomena_net(graph, origin_phenomena_net, value_net):
+
+    # -- Net Composition
+    new_phenomena_net = net.PhenomenaNet(graph)
+    new_phenomena_net.compose(origin_phenomena_net, value_net)
+    
+    # -- Data Computation
+    new_phenomena_net.phenomena_type = 'amr:phenomena_modality_prohibition'
+    new_phenomena_net.phenomena_ref = f'not-{origin_phenomena_net.phenomena_ref}'
+
+    # -- Net Naming
+    new_phenomena_net.naming = 'prohibition-modality'
+    
+    # -- Relation Propagation
+    __propagate_relation(new_phenomena_net, origin_phenomena_net) 
+    
+    # -- Finalization
+    new_phenomena_net.finalize()
+    triple_definition = new_phenomena_net.generate_triple_definition()
+    
+    return new_phenomena_net, triple_definition
+
+  
+    
+#==============================================================================
+# Main Method
+#==============================================================================
+
+def analyze_phenomena_polarity_2(graph):
+    
+    # -- Rule Initialization 
+    rule_label = 'analyze "polarity" phenomena (2)' 
+    rule_triple_list = []
+
+    # -- Search for patterns 
+    _, pattern_set = __search_pattern(graph)
+    
+    # -- Pattern Analysis
+    for pattern in pattern_set:
+        origin_phenomena_net = net.PhenomenaNet(graph, uri=pattern.phenomena_net)
+        value_net = net.ValueNet(graph, uri=pattern.value_net)
+        
+        # -- New Negative Property Net
+        _, triple_list_1 = __construct_phenomena_net(graph, origin_phenomena_net, value_net)
+        rule_triple_list += triple_list_1
+        
+        # -- Deprecation: Origin Class Net and Value Net
+        rule_triple_list += origin_phenomena_net.deprecate()
+        rule_triple_list += value_net.deprecate()
+    
+    return rule_label, rule_triple_list
\ No newline at end of file
diff --git a/tests/dev_owl_rule_tests/phenomena_analyzer/polarity_analyzer_3.py b/tests/dev_owl_rule_tests/phenomena_analyzer/polarity_analyzer_3.py
new file mode 100644
index 0000000000000000000000000000000000000000..4ec13bcb58f95a7303e297696de6b38aecda5370
--- /dev/null
+++ b/tests/dev_owl_rule_tests/phenomena_analyzer/polarity_analyzer_3.py
@@ -0,0 +1,119 @@
+#!/usr/bin/python3.10
+# -*-coding:Utf-8 -*
+
+#==============================================================================
+# TENET: Rule to negative polarity phenomena (rule 3)
+#------------------------------------------------------------------------------
+# Net Expansion AMR rule to analyse negative polarity phenomena 
+# Rule: polarity(phenomena, 'negative') => phenomena
+#==============================================================================
+
+import rdflib
+from rdflib import Graph
+
+import transduction
+from transduction import net
+from transduction.query_builder import generate_select_query
+from transduction.naming_computer import define_axiom_naming
+from transduction.naming_computer import define_composite_naming_2
+
+
+#==============================================================================
+# Pattern Search: polarity(phenomena, 'negative')
+#==============================================================================
+
+POLARITY_RELATION = 'amr:role_polarity' 
+PHENOMENA_TYPE_RELATION = 'net:hasPhenomenaType' 
+POSSIBLE_PHENOMENA_URI = 'amr:phenomena_modality_prohibition'
+
+def __search_pattern(graph):
+    select_data_list = ['?phenomena_net', '?value_net']
+    clause_list = [f'?phenomena_net a [rdfs:subClassOf* net:Phenomena_Net].',
+                   f'FILTER NOT EXISTS {{ ?phenomena_net a net:Deprecated_Net. }}',
+                   f'?phenomena_net {PHENOMENA_TYPE_RELATION} {POSSIBLE_PHENOMENA_URI}.',
+                   f'?phenomena_net {POLARITY_RELATION} ?value_net.',
+                   f'FILTER NOT EXISTS {{ ?value_net a net:Deprecated_Net. }}',
+                   ('?value_net', 'net:hasValueLabel', rdflib.term.Literal('negative'))]
+    query_code = generate_select_query(graph, select_data_list, clause_list)
+    result_set = graph.query(query_code) 
+    return query_code, result_set
+
+    
+
+#==============================================================================
+# Useful Computation Method(s)
+#==============================================================================  
+
+def __filter_relation(relation_list):
+    result_list = []
+    for relation in relation_list:
+        check = True
+        (s, p, o) = relation
+        if s == o: check = False
+        if p == POLARITY_RELATION: check = False
+        if check: result_list.append(relation)
+    return result_list
+
+
+def __propagate_relation(target_net, base_net):
+    target_net.input_relation_list = base_net.input_relation_list
+    out_relation_list = __filter_relation(base_net.output_relation_list)
+    target_net.output_relation_list = out_relation_list
+
+
+
+#==============================================================================
+# Construct Method(s)
+#============================================================================== 
+
+def __construct_phenomena_net(graph, origin_phenomena_net, value_net):
+
+    # -- Net Composition
+    new_phenomena_net = net.PhenomenaNet(graph)
+    new_phenomena_net.compose(origin_phenomena_net, value_net)
+    
+    # -- Data Computation
+    new_phenomena_net.phenomena_type = 'amr:phenomena_modality_possible'
+    new_phenomena_net.phenomena_ref = f'not-{origin_phenomena_net.phenomena_ref}'
+
+    # -- Net Naming
+    new_phenomena_net.naming = 'possible-modality'
+    
+    # -- Relation Propagation
+    __propagate_relation(new_phenomena_net, origin_phenomena_net) 
+    
+    # -- Finalization
+    new_phenomena_net.finalize()
+    triple_definition = new_phenomena_net.generate_triple_definition()
+    
+    return new_phenomena_net, triple_definition
+
+  
+    
+#==============================================================================
+# Main Method
+#==============================================================================
+
+def analyze_phenomena_polarity_3(graph):
+    
+    # -- Rule Initialization 
+    rule_label = 'analyze "polarity" phenomena (3)' 
+    rule_triple_list = []
+
+    # -- Search for patterns 
+    _, pattern_set = __search_pattern(graph)
+    
+    # -- Pattern Analysis
+    for pattern in pattern_set:
+        origin_phenomena_net = net.PhenomenaNet(graph, uri=pattern.phenomena_net)
+        value_net = net.ValueNet(graph, uri=pattern.value_net)
+        
+        # -- New Negative Property Net
+        _, triple_list_1 = __construct_phenomena_net(graph, origin_phenomena_net, value_net)
+        rule_triple_list += triple_list_1
+        
+        # -- Deprecation: Origin Class Net and Value Net
+        rule_triple_list += origin_phenomena_net.deprecate()
+        rule_triple_list += value_net.deprecate()
+    
+    return rule_label, rule_triple_list
\ No newline at end of file
diff --git a/tests/dev_owl_rule_tests/phenomena_analyzer/polarity_analyzer_4.py b/tests/dev_owl_rule_tests/phenomena_analyzer/polarity_analyzer_4.py
new file mode 100644
index 0000000000000000000000000000000000000000..74408944a81b96acb6e7136fceb2d997ab3c2fa5
--- /dev/null
+++ b/tests/dev_owl_rule_tests/phenomena_analyzer/polarity_analyzer_4.py
@@ -0,0 +1,125 @@
+#!/usr/bin/python3.10
+# -*-coding:Utf-8 -*
+
+#==============================================================================
+# TENET: Rule to negative polarity phenomena (rule 3)
+#------------------------------------------------------------------------------
+# Net Expansion AMR rule to analyse negative polarity phenomena 
+# Rule: polarity(phenomena, 'negative') => phenomena
+#==============================================================================
+
+import rdflib
+from rdflib import Graph
+
+import transduction
+from transduction import net
+from transduction.query_builder import generate_select_query
+from transduction.naming_computer import define_axiom_naming
+from transduction.naming_computer import define_composite_naming_2
+
+
+#==============================================================================
+# Pattern Search: polarity(phenomena, 'negative')
+#==============================================================================
+
+POLARITY_RELATION = 'amr:role_polarity' 
+PHENOMENA_TYPE_RELATION = 'net:hasPhenomenaType' 
+POSSIBLE_PHENOMENA_URI = 'amr:phenomena_modality_prohibition'
+
+def __search_pattern(graph):
+    query_code = ''
+    result_set = []
+    for arg_relation in ['amr:role_ARG1', 'amr:role_ARG2']:
+        select_data_list = ['?phenomena_net', '?value_net']
+        clause_list = [f'?phenomena_net a [rdfs:subClassOf* net:Phenomena_Net].',
+                        f'FILTER NOT EXISTS {{ ?phenomena_net a net:Deprecated_Net. }}',
+                        f'?phenomena_net {PHENOMENA_TYPE_RELATION} {POSSIBLE_PHENOMENA_URI}.',
+                        f'?property_net a [rdfs:subClassOf* net:Atom_Property_Net].',
+                        f'?phenomena_net {arg_relation} ?property_net.',
+                        f'?property_net {POLARITY_RELATION} ?value_net.',
+                        f'FILTER NOT EXISTS {{ ?value_net a net:Deprecated_Net. }}',
+                        ('?value_net', 'net:hasValueLabel', rdflib.term.Literal('negative'))
+                       ]
+        query_code = generate_select_query(graph, select_data_list, clause_list)
+        result_set += graph.query(query_code) 
+    return query_code, result_set
+
+    
+
+#==============================================================================
+# Useful Computation Method(s)
+#==============================================================================  
+
+def __filter_relation(relation_list):
+    result_list = []
+    for relation in relation_list:
+        check = True
+        (s, p, o) = relation
+        if s == o: check = False
+        if p == POLARITY_RELATION: check = False
+        if check: result_list.append(relation)
+    return result_list
+
+
+def __propagate_relation(target_net, base_net):
+    target_net.input_relation_list = base_net.input_relation_list
+    out_relation_list = __filter_relation(base_net.output_relation_list)
+    target_net.output_relation_list = out_relation_list
+
+
+
+#==============================================================================
+# Construct Method(s)
+#============================================================================== 
+
+def __construct_phenomena_net(graph, origin_phenomena_net, value_net):
+
+    # -- Net Composition
+    new_phenomena_net = net.PhenomenaNet(graph)
+    new_phenomena_net.compose(origin_phenomena_net, value_net)
+    
+    # -- Data Computation
+    new_phenomena_net.phenomena_type = 'amr:phenomena_modality_obligation'
+    new_phenomena_net.phenomena_ref = f'not-{origin_phenomena_net.phenomena_ref}'
+
+    # -- Net Naming
+    new_phenomena_net.naming = 'obligation-modality'
+    
+    # -- Relation Propagation
+    __propagate_relation(new_phenomena_net, origin_phenomena_net) 
+    
+    # -- Finalization
+    new_phenomena_net.finalize()
+    triple_definition = new_phenomena_net.generate_triple_definition()
+    
+    return new_phenomena_net, triple_definition
+
+  
+    
+#==============================================================================
+# Main Method
+#==============================================================================
+
+def analyze_phenomena_polarity_4(graph):
+    
+    # -- Rule Initialization 
+    rule_label = 'analyze "polarity" phenomena (4)' 
+    rule_triple_list = []
+
+    # -- Search for patterns 
+    _, pattern_set = __search_pattern(graph)
+    
+    # -- Pattern Analysis
+    for pattern in pattern_set:
+        origin_phenomena_net = net.PhenomenaNet(graph, uri=pattern.phenomena_net)
+        value_net = net.ValueNet(graph, uri=pattern.value_net)
+        
+        # -- New Negative Property Net
+        _, triple_list_1 = __construct_phenomena_net(graph, origin_phenomena_net, value_net)
+        rule_triple_list += triple_list_1
+        
+        # -- Deprecation: Origin Class Net and Value Net
+        rule_triple_list += origin_phenomena_net.deprecate()
+        rule_triple_list += value_net.deprecate()
+    
+    return rule_label, rule_triple_list
\ No newline at end of file
diff --git a/tests/dev_owl_rule_tests/phenomena_analyzer/polarity_analyzer_5.py b/tests/dev_owl_rule_tests/phenomena_analyzer/polarity_analyzer_5.py
new file mode 100644
index 0000000000000000000000000000000000000000..2a1a04f674358ef62e2aada049211e5e4b220385
--- /dev/null
+++ b/tests/dev_owl_rule_tests/phenomena_analyzer/polarity_analyzer_5.py
@@ -0,0 +1,125 @@
+#!/usr/bin/python3.10
+# -*-coding:Utf-8 -*
+
+#==============================================================================
+# TENET: Rule to negative polarity phenomena (rule 3)
+#------------------------------------------------------------------------------
+# Net Expansion AMR rule to analyse negative polarity phenomena 
+# Rule: polarity(phenomena, 'negative') => phenomena
+#==============================================================================
+
+import rdflib
+from rdflib import Graph
+
+import transduction
+from transduction import net
+from transduction.query_builder import generate_select_query
+from transduction.naming_computer import define_axiom_naming
+from transduction.naming_computer import define_composite_naming_2
+
+
+#==============================================================================
+# Pattern Search: polarity(phenomena, 'negative')
+#==============================================================================
+
+POLARITY_RELATION = 'amr:role_polarity' 
+PHENOMENA_TYPE_RELATION = 'net:hasPhenomenaType' 
+POSSIBLE_PHENOMENA_URI = 'amr:phenomena_modality_obligation'
+
+def __search_pattern(graph):
+    query_code = ''
+    result_set = []
+    for arg_relation in ['amr:role_ARG1', 'amr:role_ARG2']:
+        select_data_list = ['?phenomena_net', '?value_net']
+        clause_list = [f'?phenomena_net a [rdfs:subClassOf* net:Phenomena_Net].',
+                        f'FILTER NOT EXISTS {{ ?phenomena_net a net:Deprecated_Net. }}',
+                        f'?phenomena_net {PHENOMENA_TYPE_RELATION} {POSSIBLE_PHENOMENA_URI}.',
+                        f'?property_net a [rdfs:subClassOf* net:Atom_Property_Net].',
+                        f'?phenomena_net {arg_relation} ?property_net.',
+                        f'?property_net {POLARITY_RELATION} ?value_net.',
+                        f'FILTER NOT EXISTS {{ ?value_net a net:Deprecated_Net. }}',
+                        ('?value_net', 'net:hasValueLabel', rdflib.term.Literal('negative'))
+                       ]
+        query_code = generate_select_query(graph, select_data_list, clause_list)
+        result_set += graph.query(query_code) 
+    return query_code, result_set
+
+    
+
+#==============================================================================
+# Useful Computation Method(s)
+#==============================================================================  
+
+def __filter_relation(relation_list):
+    result_list = []
+    for relation in relation_list:
+        check = True
+        (s, p, o) = relation
+        if s == o: check = False
+        if p == POLARITY_RELATION: check = False
+        if check: result_list.append(relation)
+    return result_list
+
+
+def __propagate_relation(target_net, base_net):
+    target_net.input_relation_list = base_net.input_relation_list
+    out_relation_list = __filter_relation(base_net.output_relation_list)
+    target_net.output_relation_list = out_relation_list
+
+
+
+#==============================================================================
+# Construct Method(s)
+#============================================================================== 
+
+def __construct_phenomena_net(graph, origin_phenomena_net, value_net):
+
+    # -- Net Composition
+    new_phenomena_net = net.PhenomenaNet(graph)
+    new_phenomena_net.compose(origin_phenomena_net, value_net)
+    
+    # -- Data Computation
+    new_phenomena_net.phenomena_type = 'amr:phenomena_modality_prohibition'
+    new_phenomena_net.phenomena_ref = f'not-{origin_phenomena_net.phenomena_ref}'
+
+    # -- Net Naming
+    new_phenomena_net.naming = 'prohibition-modality'
+    
+    # -- Relation Propagation
+    __propagate_relation(new_phenomena_net, origin_phenomena_net) 
+    
+    # -- Finalization
+    new_phenomena_net.finalize()
+    triple_definition = new_phenomena_net.generate_triple_definition()
+    
+    return new_phenomena_net, triple_definition
+
+  
+    
+#==============================================================================
+# Main Method
+#==============================================================================
+
+def analyze_phenomena_polarity_5(graph):
+    
+    # -- Rule Initialization 
+    rule_label = 'analyze "polarity" phenomena (5)' 
+    rule_triple_list = []
+
+    # -- Search for patterns 
+    _, pattern_set = __search_pattern(graph)
+    
+    # -- Pattern Analysis
+    for pattern in pattern_set:
+        origin_phenomena_net = net.PhenomenaNet(graph, uri=pattern.phenomena_net)
+        value_net = net.ValueNet(graph, uri=pattern.value_net)
+        
+        # -- New Negative Property Net
+        _, triple_list_1 = __construct_phenomena_net(graph, origin_phenomena_net, value_net)
+        rule_triple_list += triple_list_1
+        
+        # -- Deprecation: Origin Class Net and Value Net
+        rule_triple_list += origin_phenomena_net.deprecate()
+        rule_triple_list += value_net.deprecate()
+    
+    return rule_label, rule_triple_list
\ No newline at end of file
diff --git a/tests/dev_owl_rule_tests/test_data/entity-classifier-devGraph-1.result.ttl b/tests/dev_owl_rule_tests/test_data/entity-classifier-devGraph-1.result.ttl
index ee0610c67ffeaf34ab7a953484147cf5ee74b5ab..40abbc892ea6133ec8c2c09514b1ebcd1da009b9 100644
--- a/tests/dev_owl_rule_tests/test_data/entity-classifier-devGraph-1.result.ttl
+++ b/tests/dev_owl_rule_tests/test_data/entity-classifier-devGraph-1.result.ttl
@@ -516,6 +516,36 @@ net:compositeClass_object-orbit-hasManner-not-direct-sun_o a net:Composite_Class
     net:hasRestriction net:restriction_orbit-hasManner-not-direct-sun_o2 ;
     net:hasStructure "SSC-01-01" .
 
+net:compositeClass_system-hasPart-object_s a net:Composite_Class_Net ;
+    :role_domain net:atomClass_system_p,
+        net:individual_SolarSystem_p ;
+    net:composeFrom net:atomClass_object_o,
+        net:atomClass_system_s,
+        net:atomProperty_hasPart_p9 ;
+    net:coverBaseNode :leaf_system_s ;
+    net:coverNode :leaf_hasPart_p9,
+        :leaf_object_o,
+        :leaf_system_s ;
+    net:hasMotherClassNet net:atomClass_system_s ;
+    net:hasNaming "system-hasPart-object" ;
+    net:hasRestriction net:restriction_hasPart-object_p9 ;
+    net:hasStructure "SSC-01-01" .
+
+net:compositeClass_system-hasPart-sun_s a net:Composite_Class_Net ;
+    :role_domain net:atomClass_system_p,
+        net:individual_SolarSystem_p ;
+    net:composeFrom net:atomClass_sun_s2,
+        net:atomClass_system_s,
+        net:atomProperty_hasPart_p9 ;
+    net:coverBaseNode :leaf_system_s ;
+    net:coverNode :leaf_hasPart_p9,
+        :leaf_sun_s2,
+        :leaf_system_s ;
+    net:hasMotherClassNet net:atomClass_system_s ;
+    net:hasNaming "system-hasPart-sun" ;
+    net:hasRestriction net:restriction_hasPart-sun_p9 ;
+    net:hasStructure "SSC-01-01" .
+
 net:entityClass a owl:AnnotationProperty ;
     rdfs:label "entity class" ;
     rdfs:subPropertyOf net:objectValue .
@@ -794,9 +824,6 @@ ns2:AMR a owl:Class ;
 sys:Degree a owl:Class ;
     rdfs:subClassOf sys:Out_Structure .
 
-sys:Entity a owl:Class ;
-    rdfs:subClassOf sys:Out_Structure .
-
 sys:Feature a owl:Class ;
     rdfs:subClassOf sys:Out_Structure .
 
@@ -809,6 +836,7 @@ net:Individual_Net a owl:Class ;
     rdfs:subClassOf net:Net .
 
 net:atomClass_orbit_o2 a net:Atom_Class_Net,
+        net:Class_Net,
         net:Deprecated_Net ;
     :role_ARG0 net:atomClass_object_o ;
     :role_ARG1 net:atomClass_sun_s2 ;
@@ -816,39 +844,10 @@ net:atomClass_orbit_o2 a net:Atom_Class_Net,
     net:coverBaseNode :leaf_orbit-01_o2 ;
     net:coverNode :leaf_orbit-01_o2 ;
     net:hasClassName "orbit" ;
+    net:hasClassType sys:Entity ;
     net:hasNaming "orbit" ;
     net:hasStructure "SSC-01-01" .
 
-net:compositeClass_system-hasPart-object_s a net:Composite_Class_Net ;
-    :role_domain net:atomClass_system_p,
-        net:individual_SolarSystem_p ;
-    net:composeFrom net:atomClass_object_o,
-        net:atomClass_system_s,
-        net:atomProperty_hasPart_p9 ;
-    net:coverBaseNode :leaf_system_s ;
-    net:coverNode :leaf_hasPart_p9,
-        :leaf_object_o,
-        :leaf_system_s ;
-    net:hasMotherClassNet net:atomClass_system_s ;
-    net:hasNaming "system-hasPart-object" ;
-    net:hasRestriction net:restriction_hasPart-object_p9 ;
-    net:hasStructure "SSC-01-01" .
-
-net:compositeClass_system-hasPart-sun_s a net:Composite_Class_Net ;
-    :role_domain net:atomClass_system_p,
-        net:individual_SolarSystem_p ;
-    net:composeFrom net:atomClass_sun_s2,
-        net:atomClass_system_s,
-        net:atomProperty_hasPart_p9 ;
-    net:coverBaseNode :leaf_system_s ;
-    net:coverNode :leaf_hasPart_p9,
-        :leaf_sun_s2,
-        :leaf_system_s ;
-    net:hasMotherClassNet net:atomClass_system_s ;
-    net:hasNaming "system-hasPart-sun" ;
-    net:hasRestriction net:restriction_hasPart-sun_p9 ;
-    net:hasStructure "SSC-01-01" .
-
 net:has_value a owl:AnnotationProperty ;
     rdfs:subPropertyOf net:netProperty .
 
@@ -1078,9 +1077,6 @@ ns2:or a ns2:Concept ;
 
 sys:Out_ObjectProperty a owl:ObjectProperty .
 
-net:Class_Net a owl:Class ;
-    rdfs:subClassOf net:Net .
-
 net:Phenomena_Net a owl:Class ;
     rdfs:subClassOf net:Net .
 
@@ -1164,10 +1160,12 @@ net:Net_Structure a owl:Class ;
     rdfs:comment "A semantic net captures a set of nodes, and associates this set with type(s) and value(s)." .
 
 net:atomClass_gravitation_g a net:Atom_Class_Net,
+        net:Class_Net,
         net:Deprecated_Net ;
     net:coverBaseNode :leaf_gravitation_g ;
     net:coverNode :leaf_gravitation_g ;
     net:hasClassName "gravitation" ;
+    net:hasClassType sys:Entity ;
     net:hasNaming "gravitation" ;
     net:hasStructure "SSC-01-01" .
 
@@ -1230,10 +1228,7 @@ net:individual_SolarSystem_p a net:Individual_Net ;
     net:coverBaseNode :leaf_system_p ;
     net:coverNode :leaf_system_p ;
     net:hasIndividualLabel "Solar System" ;
-    net:hasMotherClassNet net:atomClass_system_p,
-        net:atomClass_system_s,
-        net:compositeClass_system-hasPart-object_s,
-        net:compositeClass_system-hasPart-sun_s ;
+    net:hasMotherClassNet net:atomClass_system_p ;
     net:hasNaming "SolarSystem" ;
     net:hasStructure "SSC-01-01" .
 
@@ -1333,6 +1328,9 @@ net:netProperty a owl:AnnotationProperty ;
     :hasConcept :concept_gravitation ;
     :hasVariable :variable_g .
 
+sys:Entity a owl:Class ;
+    rdfs:subClassOf sys:Out_Structure .
+
 cprm:configParamProperty a rdf:Property ;
     rdfs:label "Config Parameter Property" .
 
@@ -1403,6 +1401,9 @@ rdf:Property a owl:Class .
     :hasConcept :concept_direct-02 ;
     :hasVariable :variable_d .
 
+net:Class_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
 net:Deprecated_Net a owl:Class ;
     rdfs:subClassOf net:Net .
 
@@ -1438,6 +1439,18 @@ net:has_object a owl:AnnotationProperty ;
 net:Net a owl:Class ;
     rdfs:subClassOf net:Net_Structure .
 
+net:atomClass_system_s a net:Atom_Class_Net,
+        net:Class_Net,
+        net:Deprecated_Net ;
+    :role_domain net:atomClass_system_p,
+        net:individual_SolarSystem_p ;
+    net:coverBaseNode :leaf_system_s ;
+    net:coverNode :leaf_system_s ;
+    net:hasClassName "system" ;
+    net:hasClassType sys:Entity ;
+    net:hasNaming "system" ;
+    net:hasStructure "SSC-01-01" .
+
 net:atomProperty_direct_d2 a net:Atom_Property_Net,
         net:Deprecated_Net ;
     :role_polarity net:value_negative_blankNode ;
@@ -1458,16 +1471,6 @@ net:atomProperty_direct_d2 a net:Atom_Property_Net,
 :AMR_Core_Role a owl:Class ;
     rdfs:subClassOf :AMR_Role .
 
-net:atomClass_system_s a net:Atom_Class_Net,
-        net:Deprecated_Net ;
-    :role_domain net:atomClass_system_p,
-        net:individual_SolarSystem_p ;
-    net:coverBaseNode :leaf_system_s ;
-    net:coverNode :leaf_system_s ;
-    net:hasClassName "system" ;
-    net:hasNaming "system" ;
-    net:hasStructure "SSC-01-01" .
-
 :leaf_object_o a :AMR_Leaf ;
     :hasConcept :concept_object ;
     :hasVariable :variable_o .
@@ -1492,20 +1495,24 @@ net:atomClass_system_s a net:Atom_Class_Net,
     :hasVariable :variable_s .
 
 net:atomClass_object_o a net:Atom_Class_Net,
+        net:Class_Net,
         net:Deprecated_Net ;
     net:coverBaseNode :leaf_object_o ;
     net:coverNode :leaf_object_o ;
     net:hasClassName "object" ;
+    net:hasClassType sys:Entity ;
     net:hasNaming "object" ;
     net:hasStructure "SSC-01-01" .
 
 :AMR_Leaf a owl:Class ;
     rdfs:subClassOf :AMR_Structure .
 
-net:atomClass_sun_s2 a net:Atom_Class_Net ;
+net:atomClass_sun_s2 a net:Atom_Class_Net,
+        net:Class_Net ;
     net:coverBaseNode :leaf_sun_s2 ;
     net:coverNode :leaf_sun_s2 ;
     net:hasClassName "sun" ;
+    net:hasClassType sys:Entity ;
     net:hasNaming "sun" ;
     net:hasStructure "SSC-01-01" .
 
diff --git a/tests/dev_owl_rule_tests/test_rule_atomic_extractor.py b/tests/dev_owl_rule_tests/test_rule_extractor_atom_net.py
similarity index 81%
rename from tests/dev_owl_rule_tests/test_rule_atomic_extractor.py
rename to tests/dev_owl_rule_tests/test_rule_extractor_atom_net.py
index 059faa4045aea371c761c66137010b8696fcfb29..0783d70bad5e424a67a78c26dea163f153774b53 100644
--- a/tests/dev_owl_rule_tests/test_rule_atomic_extractor.py
+++ b/tests/dev_owl_rule_tests/test_rule_extractor_atom_net.py
@@ -21,16 +21,17 @@ TEST_FILE_NAME_2 = 'atom-extraction-devGraph-2'
 TEST_FILE_NAME_3 = 'atom-extraction-devGraph-3'
 
 from context import tenet
+from tenet.scheme.amr_master_rule.transduction.extractor import atom_class_extractor as test_rule_1
+from tenet.scheme.amr_master_rule.transduction.extractor import atom_individual_extractor as test_rule_2
+from tenet.scheme.amr_master_rule.transduction.extractor import atom_property_extractor as test_rule_3
+from tenet.scheme.amr_master_rule.transduction.extractor import atom_value_extractor as test_rule_4
+from tenet.scheme.amr_master_rule.transduction.extractor import atom_phenomena_extractor as test_rule_5
+from tenet.scheme.amr_master_rule.transduction.extractor import atom_relation_propagator as test_rule_6
+from tenet.scheme import amr_master_rule
+
 from tenet.transduction.rdfterm_computer import __update_uri_with_prefix
 from tenet.transduction import rdfterm_computer, prefix_handle
 from tenet.transduction import net
-from tenet.scheme.amr_master_rule.transduction import atom_class_extractor as rule_1
-from tenet.scheme.amr_master_rule.transduction import atom_individual_extractor as rule_2
-from tenet.scheme.amr_master_rule.transduction import atom_property_extractor as rule_3
-from tenet.scheme.amr_master_rule.transduction import atom_value_extractor as rule_4
-from tenet.scheme.amr_master_rule.transduction import atom_phenomena_extractor as rule_5
-from tenet.scheme.amr_master_rule.transduction import atom_relation_propagator as rule_6
-from tenet.scheme import amr_master_rule
 
 
 
@@ -88,7 +89,7 @@ def add_triples_in_graph(test_file_name, graph, triple_list):
 #==============================================================================
         
 def test_search_pattern_1(graph):
-    _, pattern_set = rule_1.__search_pattern(graph)
+    _, pattern_set = test_rule_1.__search_pattern(graph)
     print(f'\n ----- number of selection found: {len(pattern_set)}')
     for row in pattern_set: 
         result_str = f'>>> '
@@ -99,7 +100,7 @@ def test_search_pattern_1(graph):
 
         
 def test_search_pattern_2(graph):
-    _, pattern_set = rule_2.__search_pattern(graph)
+    _, pattern_set = test_rule_2.__search_pattern(graph)
     print(f'\n ----- number of selection found: {len(pattern_set)}')
     for row in pattern_set: 
         result_str = f'>>> '
@@ -111,7 +112,7 @@ def test_search_pattern_2(graph):
 
         
 def test_search_pattern_3(graph):
-    _, pattern_set = rule_3.__search_pattern(graph)
+    _, pattern_set = test_rule_3.__search_pattern(graph)
     print(f'\n ----- number of selection found: {len(pattern_set)}')
     for row in pattern_set: 
         result_str = f'>>> '
@@ -122,7 +123,7 @@ def test_search_pattern_3(graph):
 
         
 def test_search_pattern_4(graph):
-    _, pattern_set = rule_4.__search_pattern(graph)
+    _, pattern_set = test_rule_4.__search_pattern(graph)
     print(f'\n ----- number of selection found: {len(pattern_set)}')
     for row in pattern_set: 
         result_str = f'>>> '
@@ -132,7 +133,7 @@ def test_search_pattern_4(graph):
 
         
 def test_search_pattern_5(graph):
-    _, pattern_set = rule_5.__search_pattern(graph)
+    _, pattern_set = test_rule_5.__search_pattern(graph)
     print(f'\n ----- number of selection found: {len(pattern_set)}')
     for row in pattern_set: 
         result_str = f'>>> '
@@ -145,7 +146,7 @@ def test_search_pattern_5(graph):
 
         
 def test_search_pattern_6(graph):
-    _, pattern_set = rule_6.__search_pattern(graph)
+    _, pattern_set = test_rule_6.__search_pattern(graph)
     print(f'\n ----- search 1 result: {len(pattern_set)}')
     for row in pattern_set: 
         result_str = f'>>> '
@@ -159,7 +160,7 @@ def test_search_pattern_6(graph):
         if len(target_net.base_node) > 0:
             base_leaf = target_net.base_node[0]
             
-            _, result_set = rule_6.__search_leaf_in_leaf_relation(graph, base_leaf) 
+            _, result_set = test_rule_6.__search_leaf_in_leaf_relation(graph, base_leaf) 
             print(f'\n ----- search 2 result: {len(result_set)}')
             for row in result_set: 
                 result_str = f'>>> '
@@ -167,7 +168,7 @@ def test_search_pattern_6(graph):
                 result_str += f', {row.inRelationRole.n3(graph.namespace_manager)} )'
                 print(result_str) 
                 
-            _, result_set = rule_6.__search_leaf_in_value_relation(graph, base_leaf) 
+            _, result_set = test_rule_6.__search_leaf_in_value_relation(graph, base_leaf) 
             print(f'\n ----- search 3 result: {len(result_set)}')
             for row in result_set: 
                 result_str = f'>>> '
@@ -175,7 +176,7 @@ def test_search_pattern_6(graph):
                 result_str += f', {row.inRelationRole.n3(graph.namespace_manager)} )'
                 print(result_str)
                 
-            _, result_set = rule_6.__search_leaf_out_leaf_relation(graph, base_leaf) 
+            _, result_set = test_rule_6.__search_leaf_out_leaf_relation(graph, base_leaf) 
             print(f'\n ----- search 4 result: {len(result_set)}')
             for row in result_set: 
                 result_str = f'>>> '
@@ -183,7 +184,7 @@ def test_search_pattern_6(graph):
                 result_str += f', {row.outNet.n3(graph.namespace_manager)} )'
                 print(result_str)
                 
-            _, result_set = rule_6.__search_leaf_out_value_relation(graph, base_leaf) 
+            _, result_set = test_rule_6.__search_leaf_out_value_relation(graph, base_leaf) 
             print(f'\n ----- search 5 result: {len(result_set)}')
             for row in result_set: 
                 result_str = f'>>> '
@@ -195,7 +196,7 @@ def test_search_pattern_6(graph):
 
         
 def test_search_structure(graph):
-    result_set = rule_3.__search_structure(graph)
+    result_set = test_rule_3.__search_structure(graph)
     print(f'\n ----- number of selection found: {len(result_set)}')
     for row in result_set: 
         result_str = f'>>> '
@@ -239,7 +240,7 @@ if __name__ == '__main__':
     print('\n \n')
     
     print('\n *** Unit Test ***')
-    test_rule_application(TEST_FILE_NAME_1, graph_1, rule_1.extract_atom_class)
+    test_rule_application(TEST_FILE_NAME_1, graph_1, test_rule_1.extract_atom_class)
     print('\n \n')
     
     print('\n ///////////////////// Extraction Rule 2')
@@ -250,7 +251,7 @@ if __name__ == '__main__':
     print('\n \n')
     
     print('\n *** Unit Test ***')
-    test_rule_application(TEST_FILE_NAME_1, graph_1, rule_2.extract_atom_individual)
+    test_rule_application(TEST_FILE_NAME_1, graph_1, test_rule_2.extract_atom_individual)
     print('\n \n')
     
     print('\n ///////////////////// Extraction Rule 3')
@@ -261,7 +262,7 @@ if __name__ == '__main__':
     print('\n \n')
     
     print('\n *** Unit Test ***')
-    test_rule_application(TEST_FILE_NAME_1, graph_1, rule_3.extract_atom_property)
+    test_rule_application(TEST_FILE_NAME_1, graph_1, test_rule_3.extract_atom_property)
     print('\n \n')
     
     print('\n ///////////////////// Extraction Rule 4')
@@ -272,7 +273,7 @@ if __name__ == '__main__':
     print('\n \n')
     
     print('\n *** Unit Test ***')
-    test_rule_application(TEST_FILE_NAME_1, graph_1, rule_4.extract_atom_value)
+    test_rule_application(TEST_FILE_NAME_1, graph_1, test_rule_4.extract_atom_value)
     print('\n \n')
     
     print('\n ///////////////////// Extraction Rule 5')
@@ -283,7 +284,7 @@ if __name__ == '__main__':
     print('\n \n')
     
     print('\n *** Unit Test ***')
-    test_rule_application(TEST_FILE_NAME_1, graph_1, rule_5.extract_atom_phenomena)
+    test_rule_application(TEST_FILE_NAME_1, graph_1, test_rule_5.extract_atom_phenomena)
     print('\n \n')
     
     print('\n ///////////////////// Extraction Rule 6')
@@ -294,16 +295,16 @@ if __name__ == '__main__':
     print('\n \n')
     
     print('\n *** Unit Test ***')
-    test_rule_application(TEST_FILE_NAME_3, graph_3, rule_6.propagate_atom_relation)
+    test_rule_application(TEST_FILE_NAME_3, graph_3, test_rule_6.propagate_atom_relation)
     print('\n \n')
     print('\n \n')
     
     print('\n ///////////////////// Additional Tests')
     print('\n *** Unit Test ***')
-    # test_rule_application(graph_1, rule_1.extract_atom_class)
-    # test_rule_application(graph_1, rule_3.extract_atom_property)
-    test_rule_application(TEST_FILE_NAME_1, graph_1, rule_6.propagate_atom_relation)
-    test_rule_application(TEST_FILE_NAME_2, graph_2, rule_6.propagate_atom_relation)
+    # test_rule_application(graph_1, test_rule_1.extract_atom_class)
+    # test_rule_application(graph_1, test_rule_3.extract_atom_property)
+    test_rule_application(TEST_FILE_NAME_1, graph_1, test_rule_6.propagate_atom_relation)
+    test_rule_application(TEST_FILE_NAME_2, graph_2, test_rule_6.propagate_atom_relation)
     print('\n \n')
 
     print('\n *** - ***')
\ No newline at end of file
diff --git a/tests/dev_owl_rule_tests/test_rule_composite_class_extractor.py b/tests/dev_owl_rule_tests/test_rule_extractor_composite_net.py
similarity index 96%
rename from tests/dev_owl_rule_tests/test_rule_composite_class_extractor.py
rename to tests/dev_owl_rule_tests/test_rule_extractor_composite_net.py
index b2e65837209ca2bfd8d0d43ef5c6c54fbc8c9735..2166b65d99f744ef84c38d0f6f6c75fe68131acb 100644
--- a/tests/dev_owl_rule_tests/test_rule_composite_class_extractor.py
+++ b/tests/dev_owl_rule_tests/test_rule_extractor_composite_net.py
@@ -23,8 +23,8 @@ from context import tenet
 from tenet.transduction.rdfterm_computer import __update_uri_with_prefix
 from tenet.transduction import rdfterm_computer, prefix_handle
 from tenet.transduction import net
-from tenet.scheme.amr_master_rule.transduction import composite_class_extractor_1 as rule_1
-from tenet.scheme.amr_master_rule.transduction import composite_class_extractor_2 as rule_2
+from tenet.scheme.amr_master_rule.transduction.extractor import composite_class_extractor_1 as rule_1
+from tenet.scheme.amr_master_rule.transduction.extractor import composite_class_extractor_2 as rule_2
 from tenet.scheme import amr_master_rule as amr_rule
 
 
diff --git a/tests/dev_owl_rule_tests/test_rule_owl_class_generator.py b/tests/dev_owl_rule_tests/test_rule_owl_generator_class.py
similarity index 100%
rename from tests/dev_owl_rule_tests/test_rule_owl_class_generator.py
rename to tests/dev_owl_rule_tests/test_rule_owl_generator_class.py
diff --git a/tests/dev_owl_rule_tests/test_rule_owl_property_generator.py b/tests/dev_owl_rule_tests/test_rule_owl_generator_property.py
similarity index 100%
rename from tests/dev_owl_rule_tests/test_rule_owl_property_generator.py
rename to tests/dev_owl_rule_tests/test_rule_owl_generator_property.py
diff --git a/tests/dev_owl_rule_tests/test_rule_phenomena_and_analyzer.py b/tests/dev_owl_rule_tests/test_rule_phenomena_analyzer_and.py
similarity index 97%
rename from tests/dev_owl_rule_tests/test_rule_phenomena_and_analyzer.py
rename to tests/dev_owl_rule_tests/test_rule_phenomena_analyzer_and.py
index 882003ee5796b108a9d79797c48f7fe8b7719e06..2e4376d17ea011ccc0e1fca5d5d5f0ad5ebb0fda 100644
--- a/tests/dev_owl_rule_tests/test_rule_phenomena_and_analyzer.py
+++ b/tests/dev_owl_rule_tests/test_rule_phenomena_analyzer_and.py
@@ -20,17 +20,14 @@ TEST_FILE_NAME_1 = 'and-devGraph-1'
 TEST_FILE_NAME_2 = 'and-devGraph-2'
 
 from context import tenet
-from tenet.scheme.amr_master_rule.transduction import phenomena_and_analyzer_1 as rule_1
-from tenet.scheme.amr_master_rule.transduction import phenomena_and_analyzer_2 as rule_2
+from tenet.scheme.amr_master_rule.transduction.phenomena_analyzer import and_analyzer_1 as rule_1
+from tenet.scheme.amr_master_rule.transduction.phenomena_analyzer import and_analyzer_2 as rule_2
 from tenet.scheme import amr_master_rule as rule
 
 from tenet.transduction.rdfterm_computer import __update_uri_with_prefix
 from tenet.transduction import query_builder
 from tenet.transduction import prefix_handle
 
-INDENT_STR = '            '
-
-
 
 #==============================================================================
 # Useful Methods
diff --git a/tests/dev_owl_rule_tests/test_rule_phenomena_mod_analyzer.py b/tests/dev_owl_rule_tests/test_rule_phenomena_analyzer_mod.py
similarity index 97%
rename from tests/dev_owl_rule_tests/test_rule_phenomena_mod_analyzer.py
rename to tests/dev_owl_rule_tests/test_rule_phenomena_analyzer_mod.py
index f368176f9f2c699f4fa81af82638341e9467955a..9d710f7a5a4d0fd8ac0685e4e29169e05513aa49 100644
--- a/tests/dev_owl_rule_tests/test_rule_phenomena_mod_analyzer.py
+++ b/tests/dev_owl_rule_tests/test_rule_phenomena_analyzer_mod.py
@@ -20,11 +20,12 @@ TEST_FILE_NAME_1 = 'mod-analyzer-devGraph-1'
 TEST_FILE_NAME_2 = 'mod-analyzer-devGraph-2'
 
 from context import tenet
+from tenet.scheme.amr_master_rule.transduction.phenomena_analyzer import mod_analyzer_1 as rule_1
+from tenet.scheme import amr_master_rule as amr_rule
+
 from tenet.transduction.rdfterm_computer import __update_uri_with_prefix
 from tenet.transduction import rdfterm_computer, prefix_handle
 from tenet.transduction import net
-from tenet.scheme.amr_master_rule.transduction import phenomena_mod_analyzer_1 as rule_1
-from tenet.scheme import amr_master_rule as amr_rule
 
 
 
diff --git a/tests/dev_owl_rule_tests/test_rule_phenomena_or_analyzer.py b/tests/dev_owl_rule_tests/test_rule_phenomena_analyzer_or.py
similarity index 97%
rename from tests/dev_owl_rule_tests/test_rule_phenomena_or_analyzer.py
rename to tests/dev_owl_rule_tests/test_rule_phenomena_analyzer_or.py
index 22b540903ef5cc0db079bb232c0996f204dd2d38..db467c34f73c8311b99a6abbfb2ba4b6612e09df 100644
--- a/tests/dev_owl_rule_tests/test_rule_phenomena_or_analyzer.py
+++ b/tests/dev_owl_rule_tests/test_rule_phenomena_analyzer_or.py
@@ -20,8 +20,8 @@ OUTPUT_GRAPH_PATH = f'{OUTPUT_DIR_PATH}devGraph1.result.ttl'
 OUTPUT_GRAPH_URI = f'https://amr.tetras-libre.fr/rdf/devGraph1/result'
 
 from context import tenet
-from tenet.scheme.amr_master_rule.transduction import phenomena_or_analyzer_1 as rule_1
-from tenet.scheme.amr_master_rule.transduction import phenomena_or_analyzer_2 as rule_2
+from tenet.scheme.amr_master_rule.transduction.phenomena_analyzer import or_analyzer_1 as rule_1
+from tenet.scheme.amr_master_rule.transduction.phenomena_analyzer import or_analyzer_2 as rule_2
 from tenet.scheme import amr_master_rule as rule
 
 from tenet.transduction.rdfterm_computer import __update_uri_with_prefix
diff --git a/tests/main_tests/test_owl_output/SolarSystemDev01-20230531/technical-data/tenet.log b/tests/main_tests/test_owl_output/SolarSystemDev01-20230531/technical-data/tenet.log
index 0bf58845fd124561f04091ae6b760542fc05ba49..9f7c16b303a4dc62f8ae1276965df47a410b0ce9 100644
--- a/tests/main_tests/test_owl_output/SolarSystemDev01-20230531/technical-data/tenet.log
+++ b/tests/main_tests/test_owl_output/SolarSystemDev01-20230531/technical-data/tenet.log
@@ -71,25 +71,25 @@
 - DEBUG - ----- Total rule number: 87
 - INFO - -- Applying extraction step: preprocessing
 - INFO - --- *** November Transduction *** Sequence: amrld-correcting-sequence
-- INFO - ----- fix-amr-bug-about-system-solar-planet: 5/5 new triples (603, 0:00:00.038465)
+- INFO - ----- fix-amr-bug-about-system-solar-planet: 5/5 new triples (603, 0:00:00.039640)
 - INFO - --- *** November Transduction *** Sequence: amr-reification-sequence
-- INFO - ----- reclassify-concept-1: 10/10 new triples (613, 0:00:00.282426)
-- DEBUG - ----- reclassify-concept-2: 0/0 new triple (613, 0:00:00.066092)
-- INFO - ----- reclassify-concept-3: 12/12 new triples (625, 0:00:00.055373)
-- INFO - ----- reclassify-concept-4: 16/16 new triples (641, 0:00:00.077507)
-- INFO - ----- reclassify-concept-5: 2/4 new triples (643, 0:00:00.049211)
-- INFO - ----- reify-roles-as-concept: 10/10 new triples (653, 0:00:00.048264)
-- INFO - ----- reclassify-existing-variable: 45/45 new triples (698, 0:00:00.029960)
-- INFO - ----- add-new-variable-for-reified-concept: 8/8 new triples (706, 0:00:00.063811)
-- INFO - ----- add-amr-leaf-for-reclassified-concept: 33/33 new triples (739, 0:00:00.053221)
-- INFO - ----- add-amr-leaf-for-reified-concept: 8/8 new triples (747, 0:00:00.046700)
-- INFO - ----- add-amr-edge-for-core-relation: 27/27 new triples (774, 0:00:00.121552)
-- INFO - ----- add-amr-edge-for-reified-concept: 12/12 new triples (786, 0:00:00.147536)
-- INFO - ----- add-amr-edge-for-name-relation: 5/5 new triples (791, 0:00:00.073139)
-- DEBUG - ----- add-value-for-quant-relation: 0/0 new triple (791, 0:00:00.081215)
-- INFO - ----- add-amr-edge-for-polarity-relation: 5/5 new triples (796, 0:00:00.080029)
-- INFO - ----- update-amr-edge-role-1: 15/15 new triples (811, 0:00:00.094489)
-- INFO - ----- add-amr-root: 5/5 new triples (816, 0:00:00.026923)
+- INFO - ----- reclassify-concept-1: 10/10 new triples (613, 0:00:00.192898)
+- DEBUG - ----- reclassify-concept-2: 0/0 new triple (613, 0:00:00.067928)
+- INFO - ----- reclassify-concept-3: 12/12 new triples (625, 0:00:00.056336)
+- INFO - ----- reclassify-concept-4: 16/16 new triples (641, 0:00:00.069512)
+- INFO - ----- reclassify-concept-5: 2/4 new triples (643, 0:00:00.048901)
+- INFO - ----- reify-roles-as-concept: 10/10 new triples (653, 0:00:00.055242)
+- INFO - ----- reclassify-existing-variable: 45/45 new triples (698, 0:00:00.037881)
+- INFO - ----- add-new-variable-for-reified-concept: 8/8 new triples (706, 0:00:00.054377)
+- INFO - ----- add-amr-leaf-for-reclassified-concept: 33/33 new triples (739, 0:00:00.074481)
+- INFO - ----- add-amr-leaf-for-reified-concept: 8/8 new triples (747, 0:00:00.048664)
+- INFO - ----- add-amr-edge-for-core-relation: 27/27 new triples (774, 0:00:00.119393)
+- INFO - ----- add-amr-edge-for-reified-concept: 12/12 new triples (786, 0:00:00.150665)
+- INFO - ----- add-amr-edge-for-name-relation: 5/5 new triples (791, 0:00:00.074775)
+- DEBUG - ----- add-value-for-quant-relation: 0/0 new triple (791, 0:00:00.078568)
+- INFO - ----- add-amr-edge-for-polarity-relation: 5/5 new triples (796, 0:00:00.079529)
+- INFO - ----- update-amr-edge-role-1: 15/15 new triples (811, 0:00:00.183285)
+- INFO - ----- add-amr-root: 5/5 new triples (816, 0:00:00.027759)
 - DEBUG - --- Serializing graph to tenet.tetras-libre.fr_demo_01_preprocessing 
 - DEBUG - ----- step: preprocessing
 - DEBUG - ----- id: https://tenet.tetras-libre.fr/demo/01/
@@ -98,38 +98,38 @@
 - INFO - ----- 218 triples extracted during preprocessing step
 - INFO - -- Applying extraction step: transduction
 - INFO - --- *** February Transduction *** Sequence: atomic extraction sequence
-- INFO - ----- extract atom classes: 30/30 new triples (846, 0:00:00.158094)
-- INFO - ----- extract atom individuals: 8/8 new triples (854, 0:00:00.047297)
-- INFO - ----- extract atomic properties: 75/75 new triples (929, 0:00:00.272437)
-- INFO - ----- extract atom values: 10/10 new triples (939, 0:00:00.064467)
-- INFO - ----- extract atom phenomena: 14/14 new triples (953, 0:00:00.074700)
-- INFO - ----- propagate atom relations: 24/68 new triples (977, 0:00:01.083079)
+- INFO - ----- extract atom classes: 30/30 new triples (846, 0:00:00.153952)
+- INFO - ----- extract atom individuals: 8/8 new triples (854, 0:00:00.051652)
+- INFO - ----- extract atomic properties: 75/75 new triples (929, 0:00:00.223038)
+- INFO - ----- extract atom values: 10/10 new triples (939, 0:00:00.056399)
+- INFO - ----- extract atom phenomena: 14/14 new triples (953, 0:00:00.068081)
+- INFO - ----- propagate atom relations: 24/68 new triples (977, 0:00:01.050067)
 - INFO - --- *** February Transduction *** Sequence: classification sequence (1)
-- DEBUG - ----- classify modality phenomena: 0/0 new triple (977, 0:00:00.024375)
-- INFO - ----- reclassify argument property to class: 11/14 new triples (988, 0:00:00.080458)
+- DEBUG - ----- classify modality phenomena: 0/0 new triple (977, 0:00:00.022399)
+- INFO - ----- reclassify argument property to class: 11/14 new triples (988, 0:00:00.073223)
 - INFO - --- *** February Transduction *** Sequence: phenomena analyze sequence (1)
-- INFO - ----- analyze "polarity" phenomena (1): 32/36 new triples (1020, 0:00:00.103165)
-- DEBUG - ----- analyze "polarity" phenomena (2): 0/0 new triple (1020, 0:00:00.018240)
-- DEBUG - ----- analyze "polarity" phenomena (3): 0/0 new triple (1020, 0:00:00.017097)
-- DEBUG - ----- analyze "polarity" phenomena (4): 0/0 new triple (1020, 0:00:00.035740)
-- DEBUG - ----- analyze "polarity" phenomena (5): 0/0 new triple (1020, 0:00:00.033599)
-- DEBUG - ----- analyze modifier phenomena (mod): 0/0 new triple (1020, 0:00:00.078896)
-- DEBUG - ----- classify modality phenomena: 0/0 new triple (1020, 0:00:00.017780)
+- INFO - ----- analyze "polarity" phenomena (1): 32/36 new triples (1020, 0:00:00.113775)
+- DEBUG - ----- analyze "polarity" phenomena (2): 0/0 new triple (1020, 0:00:00.016841)
+- DEBUG - ----- analyze "polarity" phenomena (3): 0/0 new triple (1020, 0:00:00.013444)
+- DEBUG - ----- analyze "polarity" phenomena (4): 0/0 new triple (1020, 0:00:00.031810)
+- DEBUG - ----- analyze "polarity" phenomena (5): 0/0 new triple (1020, 0:00:00.033551)
+- DEBUG - ----- analyze modifier phenomena (mod): 0/0 new triple (1020, 0:00:00.009921)
+- DEBUG - ----- classify modality phenomena: 0/0 new triple (1020, 0:00:00.018679)
 - INFO - --- *** February Transduction *** Sequence: phenomena analyze sequence (2)
-- INFO - ----- analyze "or" phenomena (1): 1/1 new triple (1021, 0:00:00.094118)
-- INFO - ----- analyze "or" phenomena (2): 55/82 new triples (1076, 0:00:00.314064)
-- INFO - ----- analyze "and" phenomena (1): 2/14 new triples (1078, 0:00:00.133441)
-- DEBUG - ----- analyze "and" phenomena (2): 0/0 new triple (1078, 0:00:00.010072)
+- INFO - ----- analyze "or" phenomena (1): 1/1 new triple (1021, 0:00:00.080789)
+- INFO - ----- analyze "or" phenomena (2): 55/82 new triples (1076, 0:00:00.267649)
+- INFO - ----- analyze "and" phenomena (1): 2/14 new triples (1078, 0:00:00.149071)
+- DEBUG - ----- analyze "and" phenomena (2): 0/0 new triple (1078, 0:00:00.012343)
 - INFO - --- *** February Transduction *** Sequence: composite class extraction sequence
-- INFO - ----- extract composite classes (1): 127/138 new triples (1205, 0:00:00.537571)
-- DEBUG - ----- extract composite classes (2): 0/0 new triple (1205, 0:00:00.028224)
+- INFO - ----- extract composite classes (1): 127/138 new triples (1205, 0:00:00.529373)
+- DEBUG - ----- extract composite classes (2): 0/0 new triple (1205, 0:00:00.025257)
 - INFO - --- *** February Transduction *** Sequence: classification sequence (2)
-- INFO - ----- classify class net as entity from core arguments: 10/181 new triples (1215, 0:00:00.307893)
-- DEBUG - ----- classify class net as entity from :part relation: 0/0 new triple (1215, 0:00:00.009309)
-- DEBUG - ----- classify class net as entity from degree arguments: 0/0 new triple (1215, 0:00:00.019820)
-- INFO - ----- Associate mother to class net from :domain relation: 5/34 new triples (1220, 0:00:00.087336)
-- DEBUG - ----- Propagate individuals to net with same base node: 0/10 new triple (1220, 0:00:00.030522)
-- INFO - ----- Propagate individuals to net with domain link: 3/60 new triples (1223, 0:00:00.182877)
+- INFO - ----- classify class net as entity from core arguments: 10/181 new triples (1215, 0:00:00.285318)
+- DEBUG - ----- classify class net as entity from :part relation: 0/0 new triple (1215, 0:00:00.032858)
+- DEBUG - ----- classify class net as entity from degree arguments: 0/0 new triple (1215, 0:00:00.014241)
+- INFO - ----- Associate mother to class net from :domain relation: 5/34 new triples (1220, 0:00:00.081235)
+- DEBUG - ----- Propagate individuals to net with same base node: 0/10 new triple (1220, 0:00:00.023326)
+- INFO - ----- Propagate individuals to net with domain link: 3/60 new triples (1223, 0:00:00.108165)
 - DEBUG - --- Serializing graph to tenet.tetras-libre.fr_demo_01_transduction 
 - DEBUG - ----- step: transduction
 - DEBUG - ----- id: https://tenet.tetras-libre.fr/demo/01/
@@ -138,23 +138,23 @@
 - INFO - ----- 407 triples extracted during transduction step
 - INFO - -- Applying extraction step: generation
 - INFO - --- *** February Transduction *** Sequence: class_generation_sequence
-- INFO - ----- generate OWL class: 32/35 new triples (1255, 0:00:00.410772)
+- INFO - ----- generate OWL class: 32/35 new triples (1255, 0:00:00.523008)
 - INFO - --- *** February Transduction *** Sequence: property_generation_sequence
-- INFO - ----- generate OWL property: 29/29 new triples (1284, 0:00:00.312209)
+- INFO - ----- generate OWL property: 29/29 new triples (1284, 0:00:00.379346)
 - INFO - --- *** November Transduction *** Sequence: main-generation-sequence
-- DEBUG - ----- generate-individual: 0/0 new triple (1284, 0:00:00.010674)
-- DEBUG - ----- classify-individual-1: 0/0 new triple (1284, 0:00:00.007916)
-- DEBUG - ----- classify-individual-2: 0/0 new triple (1284, 0:00:00.009813)
-- DEBUG - ----- generate-atom-property-1: 0/0 new triple (1284, 0:00:00.009952)
-- DEBUG - ----- generate-atom-property-12: 0/0 new triple (1284, 0:00:00.014522)
-- DEBUG - ----- generate-inverse-relation: 0/0 new triple (1284, 0:00:00.008621)
-- DEBUG - ----- generate-composite-class: 0/0 new triple (1284, 0:00:00.014036)
-- DEBUG - ----- add-restriction-to-class-1: 0/0 new triple (1284, 0:00:00.025526)
-- DEBUG - ----- add-restriction-to-class-2: 0/0 new triple (1284, 0:00:00.017040)
-- DEBUG - ----- add-restriction-to-class-3: 0/0 new triple (1284, 0:00:00.015579)
-- DEBUG - ----- add-restriction-to-class-4: 0/0 new triple (1284, 0:00:00.013332)
-- DEBUG - ----- add-restriction-to-class-5: 0/0 new triple (1284, 0:00:00.018855)
-- DEBUG - ----- add-restriction-to-class-6: 0/0 new triple (1284, 0:00:00.015815)
+- DEBUG - ----- generate-individual: 0/0 new triple (1284, 0:00:00.015632)
+- DEBUG - ----- classify-individual-1: 0/0 new triple (1284, 0:00:00.010806)
+- DEBUG - ----- classify-individual-2: 0/0 new triple (1284, 0:00:00.015326)
+- DEBUG - ----- generate-atom-property-1: 0/0 new triple (1284, 0:00:00.017602)
+- DEBUG - ----- generate-atom-property-12: 0/0 new triple (1284, 0:00:00.014531)
+- DEBUG - ----- generate-inverse-relation: 0/0 new triple (1284, 0:00:00.010692)
+- DEBUG - ----- generate-composite-class: 0/0 new triple (1284, 0:00:00.015239)
+- DEBUG - ----- add-restriction-to-class-1: 0/0 new triple (1284, 0:00:00.031440)
+- DEBUG - ----- add-restriction-to-class-2: 0/0 new triple (1284, 0:00:00.016106)
+- DEBUG - ----- add-restriction-to-class-3: 0/0 new triple (1284, 0:00:00.018612)
+- DEBUG - ----- add-restriction-to-class-4: 0/0 new triple (1284, 0:00:00.016749)
+- DEBUG - ----- add-restriction-to-class-5: 0/0 new triple (1284, 0:00:00.018862)
+- DEBUG - ----- add-restriction-to-class-6: 0/0 new triple (1284, 0:00:00.015577)
 - DEBUG - --- Serializing graph to tenet.tetras-libre.fr_demo_01_generation 
 - DEBUG - ----- step: generation
 - DEBUG - ----- id: https://tenet.tetras-libre.fr/demo/01/