From a2af80d5f56bb56377b9c4a1bf6212ecab715d37 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aur=C3=A9lien=20Lamercerie?=
 <aurelien.lamercerie@tetras-libre.fr>
Date: Fri, 7 Apr 2023 18:59:33 +0200
Subject: [PATCH] Update AMR Rule to construct individual net in mod analyzer

---
 .../transduction/phenomena_mod_analyzer_1.py  | 33 +++++++--
 tenet/transduction/net/net.py                 |  2 +-
 .../mod-analyzer-devGraph-1.result.ttl        | 68 ++++++++++++-------
 ...or.py => test_rule_composite_extractor.py} |  0
 ...ty_class.py => test_rule_owl_generator.py} |  0
 ....py => test_rule_phenomena_or_analyzer.py} |  0
 6 files changed, 71 insertions(+), 32 deletions(-)
 rename tests/dev_tests/{test_rule_composite_class_extractor.py => test_rule_composite_extractor.py} (100%)
 rename tests/dev_tests/{test_rule_generation_property_class.py => test_rule_owl_generator.py} (100%)
 rename tests/dev_tests/{test_rule_phenomena_or.py => test_rule_phenomena_or_analyzer.py} (100%)

diff --git a/tenet/scheme/amr_rule/transduction/phenomena_mod_analyzer_1.py b/tenet/scheme/amr_rule/transduction/phenomena_mod_analyzer_1.py
index b51c5c45..900070f7 100644
--- a/tenet/scheme/amr_rule/transduction/phenomena_mod_analyzer_1.py
+++ b/tenet/scheme/amr_rule/transduction/phenomena_mod_analyzer_1.py
@@ -122,6 +122,28 @@ def __construct_composite_class_net(graph, class_net_1, class_net_2):
     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
 
   
     
@@ -140,18 +162,15 @@ def analyze_phenomena_mod_1(graph):
     # -- Selection Analyzing (1)
     rule_triple_list = []
     for pattern in pattern_set:
-        
-        # -- Net Selection
         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 (from 2 nets)
-        new_class, triple_list = __construct_composite_class_net(
-            graph, class_net_1, 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
-        # class_net_list.append(new_class)
-        rule_triple_list += triple_list
+        rule_triple_list += triple_list_1 + triple_list_2
         
         # -- Deprecation: Origin Class Net
         rule_triple_list += class_net_1.deprecate()
diff --git a/tenet/transduction/net/net.py b/tenet/transduction/net/net.py
index f5b2ddcd..f552c915 100644
--- a/tenet/transduction/net/net.py
+++ b/tenet/transduction/net/net.py
@@ -240,7 +240,7 @@ class Net:
         clause_list.append(('?in_net', '?in_rel', self.uri))
         # print(f' *** DEVTEST *** {clause_list}')
         query_code = generate_select_query(self.support_graph, select_data_list, clause_list)
-        # print(f' *** DEVTEST *** {query_code}')
+        print(f' *** DEVTEST *** {query_code}')
         query_result = self.support_graph.query(query_code)
         return query_result
     
diff --git a/tests/dev_tests/test_data/mod-analyzer-devGraph-1.result.ttl b/tests/dev_tests/test_data/mod-analyzer-devGraph-1.result.ttl
index 1d46b25c..7c763bbf 100644
--- a/tests/dev_tests/test_data/mod-analyzer-devGraph-1.result.ttl
+++ b/tests/dev_tests/test_data/mod-analyzer-devGraph-1.result.ttl
@@ -620,6 +620,26 @@ net:has_target a owl:AnnotationProperty ;
     rdfs:label "has target" ;
     rdfs:subPropertyOf net:has_relation_value .
 
+net:individual_dwarf_d2 a net:Individual_Net ;
+    net:composeFrom net:atomClass_dwarf_d2 ;
+    net:coverBaseNode :leaf_dwarf_d2 ;
+    net:coverNode :leaf_dwarf_d2 ;
+    net:hasBaseClassName "\"Feature\"" ;
+    net:hasIndividualLabel "dwarf" ;
+    net:hasMotherClassNet net:atomClass_dwarf_d2 ;
+    net:hasNaming "dwarf" ;
+    net:hasStructure "SSC-02-01" .
+
+net:individual_small_s3 a net:Individual_Net ;
+    net:composeFrom net:atomClass_small_s3 ;
+    net:coverBaseNode :leaf_small_s3 ;
+    net:coverNode :leaf_small_s3 ;
+    net:hasBaseClassName "\"Feature\"" ;
+    net:hasIndividualLabel "small" ;
+    net:hasMotherClassNet net:atomClass_small_s3 ;
+    net:hasNaming "small" ;
+    net:hasStructure "SSC-02-01" .
+
 net:inverse_direction a owl:NamedIndividual .
 
 net:listBy a owl:AnnotationProperty ;
@@ -908,9 +928,6 @@ net:Axiom_Net a owl:Class ;
 net:Feature a owl:Class ;
     rdfs:subClassOf net:Net_Structure .
 
-net:Individual_Net a owl:Class ;
-    rdfs:subClassOf net:Net .
-
 net:atomClass_large_l a net:Atom_Class_Net ;
     net:coverBaseNode :leaf_large_l ;
     net:coverNode :leaf_large_l ;
@@ -1360,12 +1377,8 @@ ns3:and a ns3:Concept ;
 :toReify a owl:AnnotationProperty ;
     rdfs:subPropertyOf :AMR_AnnotationProperty .
 
-net:atomClass_dwarf_d2 a net:Atom_Class_Net ;
-    net:coverBaseNode :leaf_dwarf_d2 ;
-    net:coverNode :leaf_dwarf_d2 ;
-    net:hasClassName "dwarf" ;
-    net:hasNaming "dwarf" ;
-    net:hasStructure "SSC-02-01" .
+net:Individual_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
 
 net:atomClass_object_o a net:Atom_Class_Net,
         net:Deprecated_Net ;
@@ -1384,13 +1397,6 @@ net:atomClass_planet_p2 a net:Atom_Class_Net,
     net:hasNaming "planet" ;
     net:hasStructure "SSC-02-01" .
 
-net:atomClass_small_s3 a net:Atom_Class_Net ;
-    net:coverBaseNode :leaf_small_s3 ;
-    net:coverNode :leaf_small_s3 ;
-    net:hasClassName "small" ;
-    net:hasNaming "small" ;
-    net:hasStructure "SSC-02-01" .
-
 net:atomClass_system_s4 a net:Atom_Class_Net,
         net:Deprecated_Net ;
     net:coverBaseNode :leaf_system_s4 ;
@@ -1441,18 +1447,10 @@ ns3:Frame a ns3:Concept,
     :hasConcept :concept_and ;
     :hasVariable :variable_a2 .
 
-:leaf_dwarf_d2 a :AMR_Leaf ;
-    :hasConcept :concept_dwarf ;
-    :hasVariable :variable_d2 .
-
 :leaf_object_o3 a :AMR_Leaf ;
     :hasConcept :concept_object ;
     :hasVariable :variable_o3 .
 
-:leaf_small_s3 a :AMR_Leaf ;
-    :hasConcept :concept_small ;
-    :hasVariable :variable_s3 .
-
 net:Deprecated_Net a owl:Class ;
     rdfs:subClassOf net:Net .
 
@@ -1506,6 +1504,20 @@ net:typeProperty a owl:AnnotationProperty ;
 sys:Out_Structure a owl:Class ;
     rdfs:label "Output Ontology Structure" .
 
+net:atomClass_dwarf_d2 a net:Atom_Class_Net ;
+    net:coverBaseNode :leaf_dwarf_d2 ;
+    net:coverNode :leaf_dwarf_d2 ;
+    net:hasClassName "dwarf" ;
+    net:hasNaming "dwarf" ;
+    net:hasStructure "SSC-02-01" .
+
+net:atomClass_small_s3 a net:Atom_Class_Net ;
+    net:coverBaseNode :leaf_small_s3 ;
+    net:coverNode :leaf_small_s3 ;
+    net:hasClassName "small" ;
+    net:hasNaming "small" ;
+    net:hasStructure "SSC-02-01" .
+
 net:netProperty a owl:AnnotationProperty ;
     rdfs:label "netProperty" .
 
@@ -1517,6 +1529,14 @@ net:netProperty a owl:AnnotationProperty ;
 
 :AMR_Structure a owl:Class .
 
+:leaf_dwarf_d2 a :AMR_Leaf ;
+    :hasConcept :concept_dwarf ;
+    :hasVariable :variable_d2 .
+
+:leaf_small_s3 a :AMR_Leaf ;
+    :hasConcept :concept_small ;
+    :hasVariable :variable_s3 .
+
 :leaf_sun_s a :AMR_Leaf ;
     :hasConcept :concept_sun ;
     :hasVariable :variable_s .
diff --git a/tests/dev_tests/test_rule_composite_class_extractor.py b/tests/dev_tests/test_rule_composite_extractor.py
similarity index 100%
rename from tests/dev_tests/test_rule_composite_class_extractor.py
rename to tests/dev_tests/test_rule_composite_extractor.py
diff --git a/tests/dev_tests/test_rule_generation_property_class.py b/tests/dev_tests/test_rule_owl_generator.py
similarity index 100%
rename from tests/dev_tests/test_rule_generation_property_class.py
rename to tests/dev_tests/test_rule_owl_generator.py
diff --git a/tests/dev_tests/test_rule_phenomena_or.py b/tests/dev_tests/test_rule_phenomena_or_analyzer.py
similarity index 100%
rename from tests/dev_tests/test_rule_phenomena_or.py
rename to tests/dev_tests/test_rule_phenomena_or_analyzer.py
-- 
GitLab