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 2c9356f14f4b803315ab6ef183b670318b7be0c9..d8522821582e1a055f4dd25ea471af8dd2a85a7a 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 c16dbee563eeece59af21d05b86d6d49bde956ad..4b9256954c04ea0421ecfb8eb270f48f3b264f0e 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 216db854abd7498c012ee5e320f9609db5b32252..8b974cfe88b55b39b033824e6c4d20ca919ff45f 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 a93d6e2c94dda2d807c2fbdd91feaceab13e2890..d133e0712ae3e363d4414384d03c123b006d05c4 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 aafb2cad705168b7a44934d56313e6ed455f2c94..3d3e8ab3f23496327aa71742018eb3ef27c6585a 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 dd2090e6ffd4a1775e2a028ec1e39fafbfbfbe32..8cdecc38ee78be8df2f11a11594bfbc0c04657de 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 8283ee1d45006df0a62b820e009b374dc02e8159..9a10a7b1a501eda75f902b076b88a7448bbce746 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 88955c5a726895760ed8c56c8b4bb58842ca973c..eb401ad24f39a36541bfea686f456303d07e56f7 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 b0d12fe219de5c6eb16e246c06c57901c832903b..30c4e3f5fbc08ab43a5784ae7f9564c1368e1b1b 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 abd5e63c8b2e70e70f1bf6aa7c3af9b662ef654c..c603ee52455429c8a4b571a4a71053ce769e66e8 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