diff --git a/tenet/scheme/amr_rule/transduction/atomic_class_extractor.py b/tenet/scheme/amr_rule/transduction/atomic_class_extractor.py
index fafe16712ead3ed012e0876ada3912f66a9eb0e0..b6f44e65b1ef098eafb12ebabfab909b05305d00 100644
--- a/tenet/scheme/amr_rule/transduction/atomic_class_extractor.py
+++ b/tenet/scheme/amr_rule/transduction/atomic_class_extractor.py
@@ -37,6 +37,25 @@ def __search_pattern(graph):
     return rule_pattern_set
 
 
+#==============================================================================
+# Useful Additional Search
+#==============================================================================
+
+def __structure_query_code(graph):
+    select_data_list = ['?sentenceId']
+    clause_list = []
+    clause_list.append(f'?root a amr:AMR_Root.')
+    clause_list.append(f'?root amr:hasSentenceID ?sentenceId.')
+    query_code = generate_select_query(graph, select_data_list, clause_list)
+    return query_code 
+    
+
+def __search_structure(graph):
+    query_code = __structure_query_code(graph)  
+    result_set = graph.query(query_code) 
+    return result_set
+
+
 
 #==============================================================================
 # Relation Propagation
@@ -63,6 +82,14 @@ def __propagate_relation(target_net, leaf):
 # Construct Method(s)
 #==============================================================================    
 
+def __get_structure(graph):
+    structure = 'unknown'
+    structure_set = __search_structure(graph)
+    for row in structure_set: 
+        structure = row.sentenceId
+    return structure
+
+
 def __define_naming(todo):
     pass
 
@@ -76,14 +103,14 @@ def __construct_atom_class_net(graph, leaf, concept_name):
     atom_class_net.base_node = leaf
     atom_class_net.node = leaf
     atom_class_net.class_name = concept_name
-    # TODO: atom_class_net.class_name = get_structure(graph)
-    
-    # -- Relation Propagation
-    __propagate_relation(atom_class_net, leaf) 
+    atom_class_net.structure = __get_structure(graph)
 
     # -- Net Naming
     atom_class_net.naming = concept_name
     
+    # -- Relation Propagation
+    __propagate_relation(atom_class_net, leaf) 
+    
     # -- Finalization
     atom_class_net.finalize()
     triple_definition = atom_class_net.generate_triple_definition()
diff --git a/tenet/scheme/amr_rule/transduction/atomic_individual_extractor.py b/tenet/scheme/amr_rule/transduction/atomic_individual_extractor.py
index d67bf67b98735e75bebd544fbf6d74766e505e3b..2d4a579df2d6093a801ceb2dfd4573afb8a5422e 100644
--- a/tenet/scheme/amr_rule/transduction/atomic_individual_extractor.py
+++ b/tenet/scheme/amr_rule/transduction/atomic_individual_extractor.py
@@ -43,6 +43,25 @@ def __search_pattern(graph):
     return rule_pattern_set
 
 
+#==============================================================================
+# Useful Additional Search
+#==============================================================================
+
+def __structure_query_code(graph):
+    select_data_list = ['?sentenceId']
+    clause_list = []
+    clause_list.append(f'?root a amr:AMR_Root.')
+    clause_list.append(f'?root amr:hasSentenceID ?sentenceId.')
+    query_code = generate_select_query(graph, select_data_list, clause_list)
+    return query_code 
+    
+
+def __search_structure(graph):
+    query_code = __structure_query_code(graph)  
+    result_set = graph.query(query_code) 
+    return result_set
+
+
 
 #==============================================================================
 # Relation Propagation
@@ -67,7 +86,15 @@ def __propagate_relation(target_net, leaf):
     
 #==============================================================================
 # Construct Method(s)
-#==============================================================================    
+#==============================================================================  
+
+def __get_structure(graph):
+    structure = 'unknown'
+    structure_set = __search_structure(graph)
+    for row in structure_set: 
+        structure = row.sentenceId
+    return structure
+  
 
 def __define_naming(todo):
     pass
@@ -84,14 +111,14 @@ def __construct_individual_net(
     individual_net.node = base_leaf
     individual_net.individual_label = value_label
     individual_net.mother_class_net = mother_class_net
-    # TODO: individual_net.class_name = get_structure(graph)
-    
-    # -- Relation Propagation
-    __propagate_relation(individual_net, base_leaf) 
+    individual_net.structure = __get_structure(graph)
 
     # -- Net Naming
     individual_net.naming = concept_name
     
+    # -- Relation Propagation
+    __propagate_relation(individual_net, base_leaf) 
+    
     # -- Finalization
     individual_net.finalize()
     triple_definition = individual_net.generate_triple_definition()
diff --git a/tenet/scheme/amr_rule/transduction/atomic_property_extractor.py b/tenet/scheme/amr_rule/transduction/atomic_property_extractor.py
index b658a3a9b52ddaaccb73105ccf6ecf39fa2d3a8c..48162b57fa39e2d13b836ca3b70d429fb47ddfcb 100644
--- a/tenet/scheme/amr_rule/transduction/atomic_property_extractor.py
+++ b/tenet/scheme/amr_rule/transduction/atomic_property_extractor.py
@@ -42,7 +42,19 @@ def __search_pattern(graph):
 # Useful Additional Search
 #==============================================================================
 
+def __structure_query_code(graph):
+    select_data_list = ['?sentenceId']
+    clause_list = []
+    clause_list.append(f'?root a amr:AMR_Root.')
+    clause_list.append(f'?root amr:hasSentenceID ?sentenceId.')
+    query_code = generate_select_query(graph, select_data_list, clause_list)
+    return query_code 
+    
 
+def __search_structure(graph):
+    query_code = __structure_query_code(graph)  
+    result_set = graph.query(query_code) 
+    return result_set
 
 
 def __target_argument_pattern_query_code(graph, base_leaf_uri):
@@ -85,8 +97,13 @@ def __propagate_relation(target_net, leaf):
 # Construct Method(s)
 #==============================================================================    
 
+def __get_structure(graph):
+    structure = 'unknown'
+    structure_set = __search_structure(graph)
+    for row in structure_set: 
+        structure = row.sentenceId
+    return structure
 
-    
 
 def __define_naming(predicate_label):
     naming = predicate_label.split('-')[0]
@@ -103,15 +120,12 @@ def __construct_atom_property_net(graph, base_leaf, predicate_label):
     atom_property_net.node = base_leaf
     atom_property_net.property_type = 'owl:ObjectProperty'
     atom_property_net.core_role = 'true'
-    # atom_property_net.structure = __get_structure(graph)
+    atom_property_net.structure = __get_structure(graph)
     
     # -- Target Argument
     target_argument_set = __search_target_argument(graph, base_leaf)
     for data in target_argument_set:
         atom_property_net.target_argument_node += [data.argLeaf]
-    
-    # -- Relation Propagation
-    __propagate_relation(atom_property_net, base_leaf) 
 
     # -- Net Naming
     naming = __define_naming(predicate_label)
@@ -121,6 +135,9 @@ def __construct_atom_property_net(graph, base_leaf, predicate_label):
     atom_property_net.property_name10 = f'{naming}-by'
     atom_property_net.property_name12 = f'{naming}-of'
     
+    # -- Relation Propagation
+    __propagate_relation(atom_property_net, base_leaf) 
+    
     # -- Finalization
     atom_property_net.finalize()
     triple_definition = atom_property_net.generate_triple_definition()
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 50faaa362a34b9f8f3c64f30e4b12230d92e4945..ccdb03d15d4fc0948c504a255c379855f60e31fa 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
@@ -458,25 +458,29 @@ 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: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: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: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:hasNaming "system" ;
+    net:hasStructure "SSC-01-01" .
 
 net:atomOf a owl:AnnotationProperty ;
     rdfs:label "atom of" ;
@@ -491,6 +495,7 @@ net:atomProperty_bind_b a net:Atom_Property_Net ;
     net:hasPropertyName10 "bind-by" ;
     net:hasPropertyName12 "bind-of" ;
     net:hasPropertyType owl:ObjectProperty ;
+    net:hasStructure "SSC-01-01" ;
     net:isCoreRoleLinked "true" ;
     net:targetArgumentNode :leaf_gravitation_g,
         :leaf_system_s .
@@ -504,6 +509,7 @@ net:atomProperty_direct_d a net:Atom_Property_Net ;
     net:hasPropertyName10 "direct-by" ;
     net:hasPropertyName12 "direct-of" ;
     net:hasPropertyType owl:ObjectProperty ;
+    net:hasStructure "SSC-01-01" ;
     net:isCoreRoleLinked "true" .
 
 net:atomProperty_direct_d2 a net:Atom_Property_Net ;
@@ -515,6 +521,7 @@ net:atomProperty_direct_d2 a net:Atom_Property_Net ;
     net:hasPropertyName10 "direct-by" ;
     net:hasPropertyName12 "direct-of" ;
     net:hasPropertyType owl:ObjectProperty ;
+    net:hasStructure "SSC-01-01" ;
     net:isCoreRoleLinked "true" ;
     net:targetArgumentNode :value_negative .
 
@@ -527,6 +534,7 @@ net:atomProperty_hasManner_m9 a net:Atom_Property_Net ;
     net:hasPropertyName10 "hasManner-by" ;
     net:hasPropertyName12 "hasManner-of" ;
     net:hasPropertyType owl:ObjectProperty ;
+    net:hasStructure "SSC-01-01" ;
     net:isCoreRoleLinked "true" ;
     net:targetArgumentNode :leaf_or_o3,
         :leaf_orbit-01_o2 .
@@ -540,6 +548,7 @@ net:atomProperty_hasPart_p9 a net:Atom_Property_Net ;
     net:hasPropertyName10 "hasPart-by" ;
     net:hasPropertyName12 "hasPart-of" ;
     net:hasPropertyType owl:ObjectProperty ;
+    net:hasStructure "SSC-01-01" ;
     net:isCoreRoleLinked "true" ;
     net:targetArgumentNode :leaf_and_a,
         :leaf_system_s .
@@ -553,6 +562,7 @@ net:atomProperty_orbit_o2 a net:Atom_Property_Net ;
     net:hasPropertyName10 "orbit-by" ;
     net:hasPropertyName12 "orbit-of" ;
     net:hasPropertyType owl:ObjectProperty ;
+    net:hasStructure "SSC-01-01" ;
     net:isCoreRoleLinked "true" ;
     net:targetArgumentNode :leaf_object_o,
         :leaf_sun_s2 .
@@ -685,7 +695,8 @@ net:individual_system_p a net:Individual_Net ;
     net:coverNode :leaf_system_p ;
     net:hasIndividualLabel "Solar System" ;
     net:hasMotherClassNet net:atomClass_system_p ;
-    net:hasNaming "system" .
+    net:hasNaming "system" ;
+    net:hasStructure "SSC-01-01" .
 
 net:inverse_direction a owl:NamedIndividual .
 
@@ -913,7 +924,8 @@ net:atomClass_system_p a net:Atom_Class_Net ;
     net:coverBaseNode :leaf_system_p ;
     net:coverNode :leaf_system_p ;
     net:hasClassName "system" ;
-    net:hasNaming "system" .
+    net:hasNaming "system" ;
+    net:hasStructure "SSC-01-01" .
 
 net:class_list a owl:Class ;
     rdfs:label "classList" ;
diff --git a/tests/dev_tests/test_rule_atomic_extractor.py b/tests/dev_tests/test_rule_atomic_extractor.py
index ae661dd47dba420b39b26fe92d3ce563e6e76942..46c56859f664ae1f0cda4badb6fbb807e2a43850 100644
--- a/tests/dev_tests/test_rule_atomic_extractor.py
+++ b/tests/dev_tests/test_rule_atomic_extractor.py
@@ -112,6 +112,16 @@ def test_search_pattern_3(graph):
         result_str += f' {selection.predicateLabel.n3(graph.namespace_manager)}'
         print(result_str) 
     return pattern_result_set
+
+        
+def test_search_structure(graph):
+    result_set = rule_3.__search_structure(graph)
+    print(f'\n ----- number of selection found: {len(result_set)}')
+    for selection in result_set: 
+        result_str = f'>>> '
+        result_str += f'{selection.sentenceId.n3(graph.namespace_manager)}'
+        print(result_str) 
+    return result_set
     
 
 #==============================================================================
@@ -169,6 +179,7 @@ if __name__ == '__main__':
     
     print('\n -- Step 1: Search Pattern')
     pattern_set = test_search_pattern_3(graph)
+    test_search_structure(graph)
     
     print('\n \n')