diff --git a/tenet/febTransduction/naming_computer.py b/tenet/febTransduction/naming_computer.py
index 7daa0939c98f110513b552d8901f76107dfd1f60..3d3e46bc52022c701e7d45541a9ff5623bbe807c 100644
--- a/tenet/febTransduction/naming_computer.py
+++ b/tenet/febTransduction/naming_computer.py
@@ -23,7 +23,7 @@ PROPERTY_NAMING_3 = '-of'
 
 
 #==============================================================================
-# Method to compute names
+# Method to compute naming
 #==============================================================================
 
 def define_composite_naming_1(net_1, net_2, net_3, 
@@ -34,15 +34,4 @@ def define_composite_naming_1(net_1, net_2, net_3,
     name_3 = f'{net_3.naming}'
     
     return f'{name_1}_{name_2}_{name_3}'
-
-
-#==============================================================================
-# Method to compute URI
-#==============================================================================
-
-def define_net_uri_1(target_net):    
-    uri = None
-    if target_net.naming is not None:
-        uri = URIRef(f'net:{target_net.type_name}_{target_net.naming}')
-    return uri
     
\ No newline at end of file
diff --git a/tenet/febTransduction/net/net.py b/tenet/febTransduction/net/net.py
index 6c8d455287fee532b0b6460496c1313604129563..78b76a69a1582976260c2a012de217549c5d8e51 100644
--- a/tenet/febTransduction/net/net.py
+++ b/tenet/febTransduction/net/net.py
@@ -9,6 +9,7 @@
 
 import rdflib
 from rdflib import URIRef
+from rdflib.namespace import NamespaceManager
 
 from febTransduction.net import SemanticNetReferenceHandle
 from febTransduction.query_builder import generate_select_query
@@ -39,6 +40,11 @@ class Net:
         
         # -- Net URI
         self._uri = uri
+        if isinstance(uri, rdflib.term.URIRef):
+            self._uri = uri.n3(self.support_graph.namespace_manager)
+        elif isinstance(uri, str):
+            self._uri = URIRef(uri).n3(self.support_graph.namespace_manager)
+        
            
         # -- Net Attributes
         self._node = []
@@ -99,10 +105,8 @@ class Net:
         for attr_key, attr_value in attr.items():
             if isinstance(attr_key, list):
                 self.attr_key.append(attr_value)
-                print(f'{attr_key} | {attr_value} | {self.attr_key} | {self._base_node}')
             else:
                 self.attr_key = attr_value
-                print(f'{attr_key} | {attr_value} | {self.attr_key} | {self._base_node}')
     
 
     #--------------------------------------------------------------------------
@@ -120,9 +124,9 @@ class Net:
         assert control, f'new_value does not a string or URIRef ({type(new_value)})'
         
         if isinstance(new_value, rdflib.term.URIRef):
-            self._uri = new_value
+            self._uri = new_value.n3(self.support_graph.namespace_manager)
         else:
-            self._uri = URIRef(new_value)
+            self._uri = URIRef(new_value).n3(self.support_graph.namespace_manager)
   
     
         
@@ -194,4 +198,40 @@ class Net:
         
         # -- Node(s) Setting
         for n in nets:
-            self.node = n.node
\ No newline at end of file
+            self.node = n.node
+        
+        
+        
+    #--------------------------------------------------------------------------
+    # Consolidation Method (finalize)
+    #--------------------------------------------------------------------------
+    
+    def __consolidate_uri(self):
+        if self.uri is None:
+            if self.naming is not None:
+                self.uri = URIRef(f'net:{self.type_name}_{self.naming}')
+    
+    def finalize(self):
+        self.__consolidate_uri()
+        
+        
+        
+    #--------------------------------------------------------------------------
+    # Triple Generation Method
+    #--------------------------------------------------------------------------
+    
+    def __generation_attribute_triple_definition(self):
+        triple_definition = []
+        pass # TODO
+        return triple_definition
+    
+    
+    def generate_triple_definition(self):
+        
+        triple_definition = []
+        
+        if self.uri is not None:
+            triple_definition.append(f'{self.uri} a {self.type_uri}.')
+            triple_definition += self.__generation_attribute_triple_definition()
+            
+        return triple_definition
\ No newline at end of file
diff --git a/tenet/febTransduction/phenomena_application_or.py b/tenet/febTransduction/phenomena_application_or.py
index 023653228065beeda6e2f28e1b6bb970c11ed04f..9c4d881fb19972f2436ffbb2d7325f5780360ce7 100644
--- a/tenet/febTransduction/phenomena_application_or.py
+++ b/tenet/febTransduction/phenomena_application_or.py
@@ -20,8 +20,9 @@ if __name__ == '__main__':
     print(sys.path[0])
 
 import febTransduction as transduction
+from febTransduction import net
 from febTransduction.query_builder import generate_select_query
-from febTransduction.naming_computer import *
+from febTransduction.naming_computer import define_composite_naming_1
 
 
 #==============================================================================
@@ -81,7 +82,7 @@ def __define_restriction(net, op_set): # TODO
 def analyze_phenomena_or_1(graph):
     
     # -- Rule Initialization 
-    rule_label = '"or" phenomena analysis 1 (targetting class)'
+    rule_label = '"or" phenomena analysis 1 [ property(class, or_phenomena) ]'
     print(f"--- *** February Transduction *** Sequence: {rule_label}")
     #logger.info(f"--- *** February Transduction *** Sequence: {rule_label}")   
 
@@ -105,22 +106,22 @@ def analyze_phenomena_or_1(graph):
         # etc
     
         # -- Restriction Computation
-        for num in range(1, 9+1):
-            query_code = __op_pattern_1(selection.phenomena_net, num)
-            op_set = graph.query(query_code) 
-            composite_class_net = __define_restriction(composite_class_net, op_set)
+        pass # TODO
+        # for num in range(1, 9+1):
+        #     query_code = __op_pattern_1(selection.phenomena_net, num)
+        #     op_set = graph.query(query_code) 
+        #     composite_class_net = __define_restriction(composite_class_net, op_set)
     
         # -- Relation Propagation
-        for (n1, rel, _) in class_net.input_relation_list:
-            composite_class_net.add_input_relation(n1, rel)
+        pass # TODO
+        # for (n1, rel, _) in class_net.input_relation_list:
+        #     composite_class_net.add_input_relation(n1, rel)
             # TODO: à voir si on veut d'autres relations
     
+        # -- Net Naming
+        composite_class_net.naming = define_composite_naming_1(class_net, property_net, phenomena_net)
+        
         # -- Finalization
-        composite_class_net.uri = naming_computer.define_composite_uri_1(
-            composite_class_net,
-            class_net, property_net, phenomena_net,
-            naming_computer.PROPERTY_NAMING_1
-            )
         composite_class_net.finalize()
         new_triples = composite_class_net.generate_triple_definition()
         new_triple_list.append(new_triples)
@@ -135,7 +136,7 @@ def analyze_phenomena_or_1(graph):
 def __select_pattern_2():
     
     # -- Select Data List
-    select_data_list = ['?property_net_0', '?property_net', '?phenomena_net']
+    select_data_list = ['?property_net', '?property_net_0', '?phenomena_net']
     
     # -- Clause List
     clause_list = []
@@ -152,10 +153,10 @@ def __select_pattern_2():
     return query_code
 
 
-def analyze_phenomena_or_2():
+def analyze_phenomena_or_2(graph):
     
     # -- Rule Initialization 
-    rule_label = '"or" phenomena analysis 2 (targetting class)'
+    rule_label = '"or" phenomena analysis 2 [ property(property, or_phenomena) ]'
     print(f"--- *** February Transduction *** Sequence: {rule_label}")  
 
     # -- Selection Pattern Application  
@@ -166,7 +167,37 @@ def analyze_phenomena_or_2():
     new_triple_list = []
     for selection in pattern_set:
         
-        pass
+        # -- Net Composition
+        property_net_0 = net.PropertyNet(graph, uri=selection.property_net_0) 
+        property_net = net.PropertyNet(graph, uri=selection.property_net)
+        phenomena_net = net.PhenomenaNet(graph, uri=selection.phenomena_net)
+        composite_class_net = net.CompositeClassNet(graph)
+        composite_class_net.compose(property_net_0, property_net, phenomena_net)
+    
+        # -- Data Computation
+        composite_class_net.mother_class_net = property_net_0.uri
+        # etc
+    
+        # -- Restriction Computation
+        pass # TODO
+        # for num in range(1, 9+1):
+        #     query_code = __op_pattern_1(selection.phenomena_net, num)
+        #     op_set = graph.query(query_code) 
+        #     composite_class_net = __define_restriction(composite_class_net, op_set)
+    
+        # -- Relation Propagation
+        pass # TODO
+        # for (n1, rel, _) in class_net.input_relation_list:
+        #     composite_class_net.add_input_relation(n1, rel)
+            # TODO: à voir si on veut d'autres relations
+    
+        # -- Net Naming
+        composite_class_net.naming = define_composite_naming_1(property_net_0, property_net, phenomena_net)
+        
+        # -- Finalization
+        composite_class_net.finalize()
+        new_triples = composite_class_net.generate_triple_definition()
+        new_triple_list += new_triples
     
     return rule_label, new_triple_list
             
@@ -212,8 +243,13 @@ if __name__ == '__main__':
         result_str += f' {selection.phenomena_net.n3(graph.namespace_manager)}'
         print(result_str) 
         
-    print('\n -- Rule')
-    # rule = analyze_phenomena_or_1()
+    print('\n -- Rule Test')
+    rule_label, new_triple_list = analyze_phenomena_or_2(graph)
+    print(f' ----- label: {rule_label}')
+    print(f' ----- new_triple_list: {len(new_triple_list)}')
+    for new_triple in new_triple_list:
+        print(f'        | {new_triple}')
+        
     
     # num = 0
     # for query_label, query in rule.query_list:
diff --git a/tenet/tenet.log b/tenet/tenet.log
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..12fc6b538f40b1e5eef897860c1dfe31746b9fb1 100644
--- a/tenet/tenet.log
+++ b/tenet/tenet.log
@@ -0,0 +1 @@
+- DEBUG - handle_close[691355e6ad1411ed842d14abc581ea52]({'header': {'msg_id': '92e4b518-67db9b9669f0b8d6c0247971_4398_201', 'msg_type': 'comm_close', 'username': 'lamenji', 'session': '92e4b518-67db9b9669f0b8d6c0247971', 'date': datetime.datetime(2023, 2, 15, 23, 15, 46, 180154, tzinfo=tzutc()), 'version': '5.3'}, 'msg_id': '92e4b518-67db9b9669f0b8d6c0247971_4398_201', 'msg_type': 'comm_close', 'parent_header': {}, 'metadata': {}, 'content': {'comm_id': '691355e6ad1411ed842d14abc581ea52', 'data': {}}, 'buffers': []})
diff --git a/tests/test_naming_computer.py b/tests/test_naming_computer.py
index 4577318e768d4e706dd27096fa0280916bfbc516..15170c9b304f5620a33cc20f01f3296913bb124f 100644
--- a/tests/test_naming_computer.py
+++ b/tests/test_naming_computer.py
@@ -88,7 +88,7 @@ print(f' ----- Naming (3)): {naming_3}')
 
 print('\n -- Update composite net (with naming_1)')
 composite_net_1.naming = naming_1
-composite_net_1.uri = naming_computer.define_net_uri_1(composite_net_1)
+composite_net_1.finalize()
 test_attribute_access(composite_net_1, 'net.uri', 
                       'net.node', 'net.base_node', 'net.structure', 'net.naming',
                       'net.class_name',
@@ -100,7 +100,7 @@ print('\n -- Advanced Test(s)')
 composite_net_2 = CompositeClassNet(graph)
 composite_net_2.compose(net_1, net_2, net_4)
 composite_net_2.naming = naming_computer.define_composite_naming_1(net_1, net_2, net_4)
-composite_net_2.uri = naming_computer.define_net_uri_1(composite_net_2)
+composite_net_2.finalize()
 test_attribute_access(composite_net_2, 'net.uri', 
                       'net.node', 'net.base_node', 'net.structure', 'net.naming',
                       'net.class_name',
diff --git a/tests/test_semantic_net_1.py b/tests/test_semantic_net_1.py
index a8a77f3b6dabc3b87078e9ca5539c04b7b20d4aa..1bdc45a87cb969b7d42eb2a1cfc4ace02dd84bc0 100644
--- a/tests/test_semantic_net_1.py
+++ b/tests/test_semantic_net_1.py
@@ -64,7 +64,8 @@ graph.parse(TEST_GRAPH)
 print(f" ----- Graph Loaded ({len(graph)})")
 
 print('\n -- Net')
-net = Net(graph, uri='net:atomClass_sun_s2')
+net_uri = 'https://tenet.tetras-libre.fr/semantic-net#atomClass_sun_s2'
+net = Net(graph, uri=net_uri)
 test_attribute_access(net, 'net.uri', 
                       'net.node', 'net.base_node', 'net.structure', 'net.naming')