From 4d0f1588bfc580c7e6b243e85d196e2bf8985013 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Lamercerie?= <aurelien.lamercerie@tetras-libre.fr> Date: Wed, 13 Sep 2023 16:19:01 +0200 Subject: [PATCH] Refine heuristic rule: relation_deducer_1 --- .../extractor/atom_class_extractor.py | 1 + .../extractor/composite_class_extractor_1.py | 1 + .../extractor/composite_class_extractor_2.py | 1 + .../heuristic_deducer/refine_restriction_1.py | 5 ++-- .../heuristic_deducer/relation_deducer_1.py | 14 ++++----- .../phenomena_analyzer/mod_analyzer_1.py | 3 +- .../phenomena_analyzer/or_analyzer_1.py | 29 ++++++++++--------- .../phenomena_analyzer/or_analyzer_2.py | 28 +++++++++--------- tenet/transduction/net/class_net.py | 15 ++++++++-- .../semantic_net_rdf_reference.py | 1 + 10 files changed, 58 insertions(+), 40 deletions(-) diff --git a/tenet/scheme/amr_master_rule/transduction/extractor/atom_class_extractor.py b/tenet/scheme/amr_master_rule/transduction/extractor/atom_class_extractor.py index 2c9356f1..d8522821 100644 --- a/tenet/scheme/amr_master_rule/transduction/extractor/atom_class_extractor.py +++ b/tenet/scheme/amr_master_rule/transduction/extractor/atom_class_extractor.py @@ -118,6 +118,7 @@ def __construct_atom_class_net(graph, leaf, concept_name): # -- Finalization atom_class_net.finalize() + atom_class_net.root_class_net = atom_class_net.uri triple_definition = atom_class_net.generate_triple_definition() return atom_class_net, triple_definition diff --git a/tenet/scheme/amr_master_rule/transduction/extractor/composite_class_extractor_1.py b/tenet/scheme/amr_master_rule/transduction/extractor/composite_class_extractor_1.py index c16dbee5..4b925695 100644 --- a/tenet/scheme/amr_master_rule/transduction/extractor/composite_class_extractor_1.py +++ b/tenet/scheme/amr_master_rule/transduction/extractor/composite_class_extractor_1.py @@ -106,6 +106,7 @@ def __construct_composite_class_net( # -- Data Computation composite_class_net.mother_class_net = base_class_net.uri + composite_class_net.root_class_net = base_class_net.root_class_net # -- Restriction Computation restriction_net, triple_list_1 = __construct_restriction_net(graph, core_property_net, target_class_net) diff --git a/tenet/scheme/amr_master_rule/transduction/extractor/composite_class_extractor_2.py b/tenet/scheme/amr_master_rule/transduction/extractor/composite_class_extractor_2.py index 216db854..8b974cfe 100644 --- a/tenet/scheme/amr_master_rule/transduction/extractor/composite_class_extractor_2.py +++ b/tenet/scheme/amr_master_rule/transduction/extractor/composite_class_extractor_2.py @@ -105,6 +105,7 @@ def __construct_composite_class_net( # -- Data Computation composite_class_net.mother_class_net = base_class_net.uri + composite_class_net.root_class_net = base_class_net.root_class_net # -- Restriction Computation restriction_net, triple_list_1 = __construct_restriction_net(graph, core_property_net, target_class_net) diff --git a/tenet/scheme/amr_master_rule/transduction/heuristic_deducer/refine_restriction_1.py b/tenet/scheme/amr_master_rule/transduction/heuristic_deducer/refine_restriction_1.py index a93d6e2c..d133e071 100644 --- a/tenet/scheme/amr_master_rule/transduction/heuristic_deducer/refine_restriction_1.py +++ b/tenet/scheme/amr_master_rule/transduction/heuristic_deducer/refine_restriction_1.py @@ -134,8 +134,9 @@ def __construct_composite_class_net( 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, mother_class_net.uri] - composite_class_net.mother_class_net = [mother_class_net.uri] + # composite_class_net.mother_class_net = [base_class_net.uri, mother_class_net.uri] + composite_class_net.mother_class_net = mother_class_net.uri + composite_class_net.root_class_net = base_class_net.root_class_net # -- Restriction Computation restriction_net, triple_list_1 = __construct_restriction_net(graph, core_property_net, target_class_net) diff --git a/tenet/scheme/amr_master_rule/transduction/heuristic_deducer/relation_deducer_1.py b/tenet/scheme/amr_master_rule/transduction/heuristic_deducer/relation_deducer_1.py index aafb2cad..3d3e8ab3 100644 --- a/tenet/scheme/amr_master_rule/transduction/heuristic_deducer/relation_deducer_1.py +++ b/tenet/scheme/amr_master_rule/transduction/heuristic_deducer/relation_deducer_1.py @@ -79,13 +79,13 @@ def __get_structure(graph): return structure -def __define_individual_label(net): +def __define_individual_label(net, reference): class_label = 'thing' naming_list = net.naming if len(naming_list) > 0: assert len(naming_list) == 1, 'Houston, we have a problem: too many naming' class_label = naming_list[0] - return f'any {class_label}' + return f'{class_label} ({reference})' @@ -99,15 +99,15 @@ def __construct_individual_net(graph, mother_class_net): individual_net = net.IndividualNet(graph) # -- Main mother class - main_mother_class_net = mother_class_net - if mother_class_net.mother_class_net: - main_mother_class_net = net.ClassNet(graph, uri=mother_class_net.mother_class_net[0]) + root_class_net = mother_class_net + if mother_class_net.root_class_net: + root_class_net = net.ClassNet(graph, uri=mother_class_net.root_class_net[0]) # -- Data Computation individual_net.base_node = mother_class_net.base_node individual_net.node = mother_class_net.node - individual_net.individual_label = __define_individual_label(main_mother_class_net) structure_ref = __get_structure(graph) + individual_net.individual_label = __define_individual_label(root_class_net, structure_ref) individual_net.structure = structure_ref # -- Mother classes @@ -118,7 +118,7 @@ def __construct_individual_net(graph, mother_class_net): individual_net.mother_class_net = mother_class_net_list # -- Net Naming - individual_net.naming = define_individual_naming(main_mother_class_net, structure_ref) + individual_net.naming = define_individual_naming(root_class_net, structure_ref) # -- Finalization individual_net.finalize() diff --git a/tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/mod_analyzer_1.py b/tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/mod_analyzer_1.py index dd2090e6..8cdecc38 100644 --- a/tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/mod_analyzer_1.py +++ b/tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/mod_analyzer_1.py @@ -108,6 +108,7 @@ def __construct_composite_class_net(graph, class_net_1, class_net_2): # -- Data Computation composite_class_net.mother_class_net = class_net_1.uri + composite_class_net.root_class_net = class_net_1.root_class_net # -- Restriction Computation triple_list_1 = [] @@ -136,7 +137,7 @@ def __construct_individual_net(graph, class_net): individual_net.compose(class_net) # -- Data Computation - individual_net.base_class_name = f'Feature' + individual_net.base_class_name = 'Feature' individual_net.mother_class_net = class_net.uri # -- Net Naming diff --git a/tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/or_analyzer_1.py b/tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/or_analyzer_1.py index 8283ee1d..9a10a7b1 100644 --- a/tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/or_analyzer_1.py +++ b/tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/or_analyzer_1.py @@ -118,6 +118,7 @@ def __construct_composite_class_net_from_3_nets( # -- Data Computation composite_class_net.mother_class_net = base_class_net.uri + composite_class_net.root_class_net = base_class_net.root_class_net # -- Restriction Computation restriction_net, triple_list_1 = __construct_restriction_net(graph, core_property_net, target_class_net) @@ -139,27 +140,27 @@ def __construct_composite_class_net_from_3_nets( -def __construct_class_union_net(graph, base_class_net, class_net_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) +# # -- Net Composition +# class_union_net = net.PropertyUnionNet(graph) +# class_union_net.compose(base_class_net, class_net_list) - # -- Data Computation: None +# # -- Data Computation: None - # -- Restriction Computation: None +# # -- Restriction Computation: None - # -- Relation Propagation - __propagate_relation(class_union_net, base_class_net) +# # -- Relation Propagation +# __propagate_relation(class_union_net, base_class_net) - # -- Net Naming - class_union_net.naming = define_union_naming(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() +# # -- Finalization +# class_union_net.finalize() +# triple_list = class_union_net.generate_triple_definition() - return class_union_net, triple_list +# return class_union_net, triple_list #============================================================================== diff --git a/tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/or_analyzer_2.py b/tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/or_analyzer_2.py index 88955c5a..eb401ad2 100644 --- a/tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/or_analyzer_2.py +++ b/tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/or_analyzer_2.py @@ -140,27 +140,27 @@ def __construct_composite_property_net_from_3_properties( -def __construct_property_union_net(graph, base_property_net, property_net_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) +# # -- Net Composition +# property_union_net = net.PropertyUnionNet(graph) +# property_union_net.compose(base_property_net, property_net_list) - # -- Data Computation: None +# # -- Data Computation: None - # -- Restriction Computation: None +# # -- Restriction Computation: None - # -- Relation Propagation - __propagate_relation(property_union_net, base_property_net) +# # -- Relation Propagation +# __propagate_relation(property_union_net, base_property_net) - # -- Net Naming - property_union_net.naming = define_union_naming(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() +# # -- Finalization +# property_union_net.finalize() +# triple_list = property_union_net.generate_triple_definition() - return property_union_net, triple_list +# return property_union_net, triple_list diff --git a/tenet/transduction/net/class_net.py b/tenet/transduction/net/class_net.py index b0d12fe2..30c4e3f5 100644 --- a/tenet/transduction/net/class_net.py +++ b/tenet/transduction/net/class_net.py @@ -34,11 +34,12 @@ class ClassNet(Net): self.type_uri = produce_uriref(self.support_graph, f'net:{self.type_id}') # -- Net Attributes - self.attr_list += ['class_name', 'class_uri', 'class_type', 'mother_class_net'] + self.attr_list += ['class_name', 'class_uri', 'class_type', 'mother_class_net', 'root_class_net'] self._class_name = None self._class_uri = None self._class_type = None self._mother_class_net = None + self._root_class_net = None #-------------------------------------------------------------------------- @@ -85,4 +86,14 @@ class ClassNet(Net): @mother_class_net.setter def mother_class_net(self, new_value): - self._mother_class_net = self.set_attribute_value_list(new_value, produce_uriref) \ No newline at end of file + self._mother_class_net = self.set_attribute_value_list(new_value, produce_uriref) + + @property + def root_class_net(self): + if self._root_class_net is None: + self._root_class_net = self.get_value_list_from_graph('root_class_net') + return self._root_class_net + + @root_class_net.setter + def root_class_net(self, new_value): + self._root_class_net = self.set_attribute_value_list(new_value, produce_uriref) \ No newline at end of file diff --git a/tenet/transduction/semantic_net_rdf_reference.py b/tenet/transduction/semantic_net_rdf_reference.py index abd5e63c..c603ee52 100644 --- a/tenet/transduction/semantic_net_rdf_reference.py +++ b/tenet/transduction/semantic_net_rdf_reference.py @@ -39,6 +39,7 @@ class SemanticNetReferenceHandle: # Class Net 'class_name': 'hasClassName', 'mother_class_net': 'hasMotherClassNet', + 'root_class_net': 'hasRootClassNet', 'class_type': 'hasClassType', # Property Net -- GitLab