diff --git a/tenet/scheme/amr_rule/transduction/atomic_class_extractor.py b/tenet/scheme/amr_rule/transduction/atomic_class_extractor.py
index b6f44e65b1ef098eafb12ebabfab909b05305d00..b5b52f205df6eb19eafb4a8869f359bafbea65a3 100644
--- a/tenet/scheme/amr_rule/transduction/atomic_class_extractor.py
+++ b/tenet/scheme/amr_rule/transduction/atomic_class_extractor.py
@@ -54,33 +54,34 @@ def __search_structure(graph):
     query_code = __structure_query_code(graph)  
     result_set = graph.query(query_code) 
     return result_set
+  
 
+def __search_leaf_in_relation(graph, base_leaf_uri):
+    select_data_list = ['?inRelationRole', '?inNet']
+    clause_list = [f'?inNet a [rdfs:subClassOf* net:Net].',
+                   f'?inNet net:coverBaseNode ?inLeaf.', 
+                   ('?inLeaf', '?relation', base_leaf_uri),
+                   f'?relation amr:hasAmrRole ?inRelationRole.']
+    query_code = generate_select_query(graph, select_data_list, clause_list) 
+    result_set = graph.query(query_code) 
+    return query_code, result_set
+  
 
+def __search_leaf_out_relation(graph, base_leaf_uri):
+    select_data_list = ['?outRelationRole', '?outNet']
+    clause_list = [f'?outNet a [rdfs:subClassOf* net:Net].',
+                   f'?outNet net:coverBaseNode ?outLeaf.', 
+                   (base_leaf_uri, '?relation', '?outLeaf'),
+                   f'?relation amr:hasAmrRole ?outRelationRole.']
+    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 check: result_list.append(relation)
-    return result_list
 
 
-def __propagate_relation(target_net, leaf):
-    # TODO
-    #target_net.output_relation_list = None
-    pass
-    
-    
-    
 #==============================================================================
-# Construct Method(s)
-#==============================================================================    
+# Useful Computation Method(s)
+#==============================================================================  
 
 def __get_structure(graph):
     structure = 'unknown'
@@ -90,9 +91,19 @@ def __get_structure(graph):
     return structure
 
 
-def __define_naming(todo):
-    pass
-
+def __propagate_relation(graph, target_net, base_leaf):
+    _, in_relation_set = __search_leaf_in_relation(graph, base_leaf)
+    for row in in_relation_set:
+        target_net.input_relation_list += [(row.inNet, row.inRelationRole, _)]    
+    _, out_relation_set = __search_leaf_out_relation(graph, base_leaf)
+    for row in out_relation_set:
+        target_net.output_relation_list += [(_, row.outRelationRole, row.outNet)] 
+    
+    
+    
+#==============================================================================
+# Construct Method(s)
+#==============================================================================    
 
 def __construct_atom_class_net(graph, leaf, concept_name):
 
@@ -109,7 +120,7 @@ def __construct_atom_class_net(graph, leaf, concept_name):
     atom_class_net.naming = concept_name
     
     # -- Relation Propagation
-    __propagate_relation(atom_class_net, leaf) 
+    __propagate_relation(graph, atom_class_net, leaf) 
     
     # -- Finalization
     atom_class_net.finalize()
diff --git a/tenet/scheme/amr_rule/transduction/atomic_individual_extractor.py b/tenet/scheme/amr_rule/transduction/atomic_individual_extractor.py
index 2d4a579df2d6093a801ceb2dfd4573afb8a5422e..d8e85e1d16cb5f75c9d217d35690a2f1a3750069 100644
--- a/tenet/scheme/amr_rule/transduction/atomic_individual_extractor.py
+++ b/tenet/scheme/amr_rule/transduction/atomic_individual_extractor.py
@@ -60,32 +60,33 @@ def __search_structure(graph):
     query_code = __structure_query_code(graph)  
     result_set = graph.query(query_code) 
     return result_set
+  
 
+def __search_leaf_in_relation(graph, base_leaf_uri):
+    select_data_list = ['?inRelationRole', '?inNet']
+    clause_list = [f'?inNet a [rdfs:subClassOf* net:Net].',
+                   f'?inNet net:coverBaseNode ?inLeaf.', 
+                   ('?inLeaf', '?relation', base_leaf_uri),
+                   f'?relation amr:hasAmrRole ?inRelationRole.']
+    query_code = generate_select_query(graph, select_data_list, clause_list) 
+    result_set = graph.query(query_code) 
+    return query_code, result_set
+  
 
+def __search_leaf_out_relation(graph, base_leaf_uri):
+    select_data_list = ['?outRelationRole', '?outNet']
+    clause_list = [f'?outNet a [rdfs:subClassOf* net:Net].',
+                   f'?outNet net:coverBaseNode ?outLeaf.', 
+                   (base_leaf_uri, '?relation', '?outLeaf'),
+                   f'?relation amr:hasAmrRole ?outRelationRole.']
+    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 check: result_list.append(relation)
-    return result_list
-
-
-def __propagate_relation(target_net, leaf):
-    # TODO
-    #target_net.output_relation_list = None
-    pass
-    
-    
+ 
     
 #==============================================================================
-# Construct Method(s)
+# Useful Computation Method(s)
 #==============================================================================  
 
 def __get_structure(graph):
@@ -96,10 +97,20 @@ def __get_structure(graph):
     return structure
   
 
-def __define_naming(todo):
-    pass
+def __propagate_relation(graph, target_net, base_leaf): 
+    _, in_relation_set = __search_leaf_in_relation(graph, base_leaf)
+    for row in in_relation_set:
+        target_net.input_relation_list += [(row.inNet, row.inRelationRole, _)]       
+    _, out_relation_set = __search_leaf_out_relation(graph, base_leaf)
+    for row in out_relation_set:
+        target_net.output_relation_list += [(_, row.outRelationRole, row.outNet)] 
 
 
+
+#==============================================================================
+# Construct Method(s)
+#============================================================================== 
+
 def __construct_individual_net(
         graph, base_leaf, concept_name, value_label, mother_class_net):
 
@@ -117,7 +128,7 @@ def __construct_individual_net(
     individual_net.naming = concept_name
     
     # -- Relation Propagation
-    __propagate_relation(individual_net, base_leaf) 
+    __propagate_relation(graph, individual_net, base_leaf) 
     
     # -- Finalization
     individual_net.finalize()
diff --git a/tenet/scheme/amr_rule/transduction/atomic_property_extractor.py b/tenet/scheme/amr_rule/transduction/atomic_property_extractor.py
index 48162b57fa39e2d13b836ca3b70d429fb47ddfcb..3304ed06cb86c0d7557f60b3376207ee47a6e2ff 100644
--- a/tenet/scheme/amr_rule/transduction/atomic_property_extractor.py
+++ b/tenet/scheme/amr_rule/transduction/atomic_property_extractor.py
@@ -70,32 +70,34 @@ def __search_target_argument(graph, base_leaf_uri):
     query_code = __target_argument_pattern_query_code(graph, base_leaf_uri)  
     result_set = graph.query(query_code) 
     return result_set
+  
 
+def __search_leaf_in_relation(graph, base_leaf_uri):
+    select_data_list = ['?inRelationRole', '?inNet']
+    clause_list = [f'?inNet a [rdfs:subClassOf* net:Net].',
+                   f'?inNet net:coverBaseNode ?inLeaf.', 
+                   ('?inLeaf', '?relation', base_leaf_uri),
+                   f'?relation amr:hasAmrRole ?inRelationRole.']
+    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 __search_leaf_out_relation(graph, base_leaf_uri):
+    select_data_list = ['?outRelationRole', '?outNet']
+    clause_list = [f'?outNet a [rdfs:subClassOf* net:Net].',
+                   f'?outNet net:coverBaseNode ?outLeaf.', 
+                   (base_leaf_uri, '?relation', '?outLeaf'),
+                   f'?relation amr:hasAmrRole ?outRelationRole.']
+    query_code = generate_select_query(graph, select_data_list, clause_list) 
+    result_set = graph.query(query_code) 
+    return query_code, result_set
 
-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, leaf):
-    # TODO
-    #target_net.output_relation_list = None
-    pass
-    
-    
-    
 #==============================================================================
-# Construct Method(s)
-#==============================================================================    
+# Useful Computation Method(s)
+#==============================================================================  
 
 def __get_structure(graph):
     structure = 'unknown'
@@ -110,6 +112,22 @@ def __define_naming(predicate_label):
     return naming
 
 
+def __propagate_relation(graph, target_net, base_leaf):
+    
+    _, in_relation_set = __search_leaf_in_relation(graph, base_leaf)
+    for row in in_relation_set:
+        target_net.input_relation_list += [(row.inNet, row.inRelationRole, _)] 
+        
+    _, out_relation_set = __search_leaf_out_relation(graph, base_leaf)
+    for row in out_relation_set:
+        target_net.output_relation_list += [(_, row.outRelationRole, row.outNet)] 
+    
+    
+    
+#==============================================================================
+# Construct Method(s)
+#==============================================================================    
+
 def __construct_atom_property_net(graph, base_leaf, predicate_label):
 
     # -- Net Composition
@@ -136,7 +154,7 @@ def __construct_atom_property_net(graph, base_leaf, predicate_label):
     atom_property_net.property_name12 = f'{naming}-of'
     
     # -- Relation Propagation
-    __propagate_relation(atom_property_net, base_leaf) 
+    __propagate_relation(graph, atom_property_net, base_leaf) 
     
     # -- Finalization
     atom_property_net.finalize()
diff --git a/tenet/scheme/amr_rule/transduction/phenomena_or_analyzer_1.py b/tenet/scheme/amr_rule/transduction/phenomena_or_analyzer_1.py
index d9132ed2dbb2fc897ef0aa465dec9b0bf3f0b72c..6d8809d45f6ebb5bd9a5fb9774d4f8afc1f93452 100644
--- a/tenet/scheme/amr_rule/transduction/phenomena_or_analyzer_1.py
+++ b/tenet/scheme/amr_rule/transduction/phenomena_or_analyzer_1.py
@@ -17,7 +17,7 @@ from transduction.naming_computer import define_composite_naming_1, define_restr
 
 
 #==============================================================================
-# Select Pattern: property(class, or_phenomena)
+# Pattern Search: property(class, or_phenomena)
 #==============================================================================
 
 def __rule_pattern_query_code(graph):
@@ -41,7 +41,7 @@ def __search_pattern(graph):
 
 
 #==============================================================================
-# Search for phenomena operators
+# Useful Additional Search
 #==============================================================================
 
 def __class_op_pattern_query_code(graph, phenomena_net_uri, num):
@@ -63,8 +63,8 @@ def __search_class_phenomena_operator(graph, phenomena_net_uri):
     
 
 #==============================================================================
-# Relation Propagation
-#==============================================================================
+# Useful Computation Method(s)
+#==============================================================================  
 
 def __filter_relation(relation_list):
     result_list = []
@@ -84,7 +84,7 @@ def __propagate_relation(target_net, base_net):
     
     
 #==============================================================================
-# Construct Methods: construction of composite class net
+# Construct Method(s)
 #==============================================================================
 
 def __construct_restriction_net(graph, property_net_1, property_net_2):
diff --git a/tenet/transduction/net/net.py b/tenet/transduction/net/net.py
index 1010995ccce9b8f7acff52d19902fe6e9458f0ba..b1ab0264d6f796d6e16b28ad346cf1230b87d542 100644
--- a/tenet/transduction/net/net.py
+++ b/tenet/transduction/net/net.py
@@ -248,10 +248,11 @@ class Net:
     def input_relation_list(self):
         if self._input_relation_list is None: 
             self._input_relation_list = []
-            query_result = self.__find_input_relations_in_graph()
-            for row in query_result:
-                relation = (row.in_net, row.in_rel, self.uri)
-                self._input_relation_list.append(relation)
+            if self.uri is not None:
+                query_result = self.__find_input_relations_in_graph()
+                for row in query_result:
+                    relation = (row.in_net, row.in_rel, self.uri)
+                    self._input_relation_list.append(relation)
         return self._input_relation_list
     
     @input_relation_list.setter
@@ -279,10 +280,11 @@ class Net:
     def output_relation_list(self):
         if self._output_relation_list is None: 
             self._output_relation_list = []
-            query_result = self.__find_output_relations_in_graph()
-            for row in query_result:
-                relation = (self.uri, row.out_rel, row.out_net)
-                self._output_relation_list.append(relation)
+            if self.uri is not None:
+                query_result = self.__find_output_relations_in_graph()
+                for row in query_result:
+                    relation = (self.uri, row.out_rel, row.out_net)
+                    self._output_relation_list.append(relation)
         return self._output_relation_list
     
     @output_relation_list.setter
@@ -375,7 +377,24 @@ class Net:
         
     #--------------------------------------------------------------------------
     # Triple Generation Method
-    #--------------------------------------------------------------------------       
+    #-------------------------------------------------------------------------- 
+
+    # -- Net Declaration
+    
+    def __generate_net_declaration_triple(self):
+        
+        triple_list = []
+        
+        rdf_type_uri = produce_uriref(self.support_graph, RDF.type)
+        triple_list.append((self.uri, rdf_type_uri, self.type_uri))
+        
+        if self.is_deprecated():
+            triple_list.append(self.__define_deprecated_clause())
+        
+        return triple_list
+      
+        
+    # -- Net Attribute(s)  
             
     def __get_attr_value_list(self, attr_key):
         attr_value_list = []
@@ -413,23 +432,23 @@ class Net:
         return triple_list
     
     
-    def __generate_net_declaration_triple(self):
+    # -- Net Relation(s)
+    
+    def __generate_net_relation_triples(self): 
         
         triple_list = []
         
-        rdf_type_uri = produce_uriref(self.support_graph, RDF.type)
-        triple_list.append((self.uri, rdf_type_uri, self.type_uri))
-        
-        if self.is_deprecated():
-            triple_list.append(self.__define_deprecated_clause())
-        
+        rdf_type_uri = produce_uriref(self.support_graph, RDF.type) 
+        net_relation_uri = produce_uriref(self.support_graph, 'net:Relation')
+        for triple in self.input_relation_list + self.output_relation_list:
+            _, relation, _ = triple
+            triple_list.append((relation, rdf_type_uri, net_relation_uri))
+            triple_list.append(triple)
+            
         return triple_list
     
     
-    def __generate_net_relation_triples(self): 
-        triple_list = self.input_relation_list + self.output_relation_list
-        return triple_list
-    
+    # -- Generation Triple Definition
     
     def generate_triple_definition(self):
         
diff --git a/tests/dev_tests/test_data/atom-extraction-devGraph-1.result.ttl b/tests/dev_tests/test_data/atom-extraction-devGraph-1.result.ttl
index ccdb03d15d4fc0948c504a255c379855f60e31fa..fdb2da5df4db64c030398d6aaf834ddffe7de998 100644
--- a/tests/dev_tests/test_data/atom-extraction-devGraph-1.result.ttl
+++ b/tests/dev_tests/test_data/atom-extraction-devGraph-1.result.ttl
@@ -437,9 +437,6 @@ net:Property_Axiom_Net a owl:Class ;
 net:Property_Direction a owl:Class ;
     rdfs:subClassOf net:Feature .
 
-net:Relation a owl:Class ;
-    rdfs:subClassOf net:Net_Structure .
-
 net:Restriction_Net a owl:Class ;
     rdfs:subClassOf net:Net .
 
@@ -454,39 +451,13 @@ net:atom a owl:Class ;
     rdfs:label "atom" ;
     rdfs:subClassOf net:Type .
 
-net:atomClass_gravitation_g a net:Atom_Class_Net ;
-    net:coverBaseNode :leaf_gravitation_g ;
-    net:coverNode :leaf_gravitation_g ;
-    net:hasClassName "gravitation" ;
-    net:hasNaming "gravitation" ;
-    net:hasStructure "SSC-01-01" .
-
-net:atomClass_object_o a net:Atom_Class_Net ;
-    net:coverBaseNode :leaf_object_o ;
-    net:coverNode :leaf_object_o ;
-    net:hasClassName "object" ;
-    net:hasNaming "object" ;
-    net:hasStructure "SSC-01-01" .
-
-net:atomClass_sun_s2 a net:Atom_Class_Net ;
-    net:coverBaseNode :leaf_sun_s2 ;
-    net:coverNode :leaf_sun_s2 ;
-    net:hasClassName "sun" ;
-    net:hasNaming "sun" ;
-    net:hasStructure "SSC-01-01" .
-
-net:atomClass_system_s a net:Atom_Class_Net ;
-    net:coverBaseNode :leaf_system_s ;
-    net:coverNode :leaf_system_s ;
-    net:hasClassName "system" ;
-    net:hasNaming "system" ;
-    net:hasStructure "SSC-01-01" .
-
 net:atomOf a owl:AnnotationProperty ;
     rdfs:label "atom of" ;
     rdfs:subPropertyOf net:typeProperty .
 
 net:atomProperty_bind_b a net:Atom_Property_Net ;
+    :role_ARG0 net:atomClass_gravitation_g ;
+    :role_ARG1 net:atomClass_system_s ;
     net:coverBaseNode :leaf_bind-01_b ;
     net:coverNode :leaf_bind-01_b ;
     net:hasNaming "bind" ;
@@ -540,6 +511,7 @@ net:atomProperty_hasManner_m9 a net:Atom_Property_Net ;
         :leaf_orbit-01_o2 .
 
 net:atomProperty_hasPart_p9 a net:Atom_Property_Net ;
+    :role_ARG0 net:atomClass_system_s ;
     net:coverBaseNode :leaf_hasPart_p9 ;
     net:coverNode :leaf_hasPart_p9 ;
     net:hasNaming "hasPart" ;
@@ -554,6 +526,8 @@ net:atomProperty_hasPart_p9 a net:Atom_Property_Net ;
         :leaf_system_s .
 
 net:atomProperty_orbit_o2 a net:Atom_Property_Net ;
+    :role_ARG0 net:atomClass_object_o ;
+    :role_ARG1 net:atomClass_sun_s2 ;
     net:coverBaseNode :leaf_orbit-01_o2 ;
     net:coverNode :leaf_orbit-01_o2 ;
     net:hasNaming "orbit" ;
@@ -690,14 +664,6 @@ net:has_target a owl:AnnotationProperty ;
     rdfs:label "has target" ;
     rdfs:subPropertyOf net:has_relation_value .
 
-net:individual_system_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:hasNaming "system" ;
-    net:hasStructure "SSC-01-01" .
-
 net:inverse_direction a owl:NamedIndividual .
 
 net:listBy a owl:AnnotationProperty ;
@@ -826,7 +792,8 @@ ns2:AMR a owl:Class ;
     :hasConceptLink "or" ;
     :label "conjunction-OR" .
 
-:role_domain a owl:Class ;
+:role_domain a owl:Class,
+        net:Relation ;
     rdfs:subClassOf :AMR_NonCore_Role ;
     :hasRelationName "domain" ;
     :label "domain" ;
@@ -920,6 +887,27 @@ net:Feature a owl:Class ;
 net:Individual_Net a owl:Class ;
     rdfs:subClassOf net:Net .
 
+net:atomClass_gravitation_g a net:Atom_Class_Net ;
+    net:coverBaseNode :leaf_gravitation_g ;
+    net:coverNode :leaf_gravitation_g ;
+    net:hasClassName "gravitation" ;
+    net:hasNaming "gravitation" ;
+    net:hasStructure "SSC-01-01" .
+
+net:atomClass_object_o a net:Atom_Class_Net ;
+    net:coverBaseNode :leaf_object_o ;
+    net:coverNode :leaf_object_o ;
+    net:hasClassName "object" ;
+    net:hasNaming "object" ;
+    net:hasStructure "SSC-01-01" .
+
+net:atomClass_sun_s2 a net:Atom_Class_Net ;
+    net:coverBaseNode :leaf_sun_s2 ;
+    net:coverNode :leaf_sun_s2 ;
+    net:hasClassName "sun" ;
+    net:hasNaming "sun" ;
+    net:hasStructure "SSC-01-01" .
+
 net:atomClass_system_p a net:Atom_Class_Net ;
     net:coverBaseNode :leaf_system_p ;
     net:coverNode :leaf_system_p ;
@@ -934,6 +922,14 @@ net:class_list a owl:Class ;
 net:has_value a owl:AnnotationProperty ;
     rdfs:subPropertyOf net:netProperty .
 
+net:individual_system_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:hasNaming "system" ;
+    net:hasStructure "SSC-01-01" .
+
 net:objectType a owl:AnnotationProperty ;
     rdfs:label "object type" ;
     rdfs:subPropertyOf net:objectProperty .
@@ -1083,6 +1079,14 @@ net:Class_Net a owl:Class ;
 net:Property_Net a owl:Class ;
     rdfs:subClassOf net:Net .
 
+net:atomClass_system_s a net:Atom_Class_Net ;
+    :role_domain net:individual_system_p ;
+    net:coverBaseNode :leaf_system_s ;
+    net:coverNode :leaf_system_s ;
+    net:hasClassName "system" ;
+    net:hasNaming "system" ;
+    net:hasStructure "SSC-01-01" .
+
 net:objectProperty a owl:AnnotationProperty ;
     rdfs:label "object attribute" .
 
@@ -1134,6 +1138,9 @@ ns2:Frame a ns2:Concept,
 :toReify a owl:AnnotationProperty ;
     rdfs:subPropertyOf :AMR_AnnotationProperty .
 
+net:Relation a owl:Class ;
+    rdfs:subClassOf net:Net_Structure .
+
 net:has_relation_value a owl:AnnotationProperty ;
     rdfs:label "has relation value" ;
     rdfs:subPropertyOf net:has_object .
@@ -1164,11 +1171,13 @@ ns3:FrameRole a ns2:Role,
     :hasConcept :concept_orbit-01 ;
     :hasVariable :variable_o2 .
 
-:role_ARG0 a owl:Class ;
+:role_ARG0 a owl:Class,
+        net:Relation ;
     rdfs:subClassOf :AMR_Core_Role ;
     :label "ARG0" .
 
-:role_ARG1 a owl:Class ;
+:role_ARG1 a owl:Class,
+        net:Relation ;
     rdfs:subClassOf :AMR_Core_Role ;
     :label "ARG1" .