From 33e673f0fa683b6346c2739ad70594e6dabd43fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Lamercerie?= <aurelien.lamercerie@tetras-libre.fr> Date: Fri, 26 May 2023 18:54:47 +0200 Subject: [PATCH] New Transduction Rule: Entity Classifier 2 and Mother Classifier 1 --- tenet/scheme/amr_master_rule/__init__.py | 3 + .../transduction/entity_classifier_1.py | 23 ++- .../transduction/entity_classifier_2.py | 73 +++++++++ .../transduction/entity_classifier_3.py | 71 +++++++++ .../transduction/mother_classifier_1.py | 74 +++++++++ tenet/scheme/owl_amr_scheme_1.py | 5 +- tenet/tenet.log | 125 +++++++-------- tenet/transduction/net/class_net.py | 13 +- .../entity-classifier-devGraph-1.result.ttl | 54 +++---- .../test_rule_entity_classifier.py | 41 ++++- .../test_rule_mother_classifier.py | 144 ++++++++++++++++++ .../SolarSystemDev01_factoid.ttl | 3 +- .../technical-data/tenet.log | 121 ++++++++------- .../tenet.tetras-libre.fr_demo_01_factoid.ttl | 3 +- ...net.tetras-libre.fr_demo_01_generation.ttl | 46 +++--- ...t.tetras-libre.fr_demo_01_transduction.ttl | 37 +++-- 16 files changed, 634 insertions(+), 202 deletions(-) create mode 100644 tenet/scheme/amr_master_rule/transduction/entity_classifier_2.py create mode 100644 tenet/scheme/amr_master_rule/transduction/entity_classifier_3.py create mode 100644 tenet/scheme/amr_master_rule/transduction/mother_classifier_1.py create mode 100644 tests/dev_owl_rule_tests/test_rule_mother_classifier.py diff --git a/tenet/scheme/amr_master_rule/__init__.py b/tenet/scheme/amr_master_rule/__init__.py index 69af7294..86687158 100644 --- a/tenet/scheme/amr_master_rule/__init__.py +++ b/tenet/scheme/amr_master_rule/__init__.py @@ -14,6 +14,9 @@ from scheme.amr_master_rule.transduction.composite_class_extractor_2 import * from scheme.amr_master_rule.transduction.phenomena_modality_classifier import * from scheme.amr_master_rule.transduction.property_class_classifier import * from scheme.amr_master_rule.transduction.entity_classifier_1 import * +from scheme.amr_master_rule.transduction.entity_classifier_2 import * +from scheme.amr_master_rule.transduction.entity_classifier_3 import * +from scheme.amr_master_rule.transduction.mother_classifier_1 import * from scheme.amr_master_rule.transduction.phenomena_polarity_analyzer_1 import * from scheme.amr_master_rule.transduction.phenomena_polarity_analyzer_2 import * diff --git a/tenet/scheme/amr_master_rule/transduction/entity_classifier_1.py b/tenet/scheme/amr_master_rule/transduction/entity_classifier_1.py index f087eb7f..f509432a 100644 --- a/tenet/scheme/amr_master_rule/transduction/entity_classifier_1.py +++ b/tenet/scheme/amr_master_rule/transduction/entity_classifier_1.py @@ -2,10 +2,9 @@ # -*-coding:Utf-8 -* #============================================================================== -# TENET: Rule to entity classification +# TENET: Rule to entity classification (1) #------------------------------------------------------------------------------ -# AMR rule to classify a class as entity -# Rule: modality_phenomena classification +# AMR rule to classify classes as entities from core arguments #============================================================================== from rdflib import Graph @@ -37,26 +36,27 @@ def __search_pattern(graph): # Useful Computation Method(s) #============================================================================== -def __propagate_relation(target_net, base_net): - target_net.input_relation_list = base_net.input_relation_list - target_net.output_relation_list = base_net.output_relation_list +# None #============================================================================== # Construct Method(s) #============================================================================== -# None +def __classify_net_as_entity(graph, net_uri): + class_net = net.ClassNet(graph, uri=net_uri) + class_net.class_type = ENTITY_CLASS_TYPE + return class_net.generate_triple_definition() #============================================================================== # Main Method #============================================================================== -def classify_class_as_entity_1(graph): +def classify_entity_from_core_arguments(graph): # -- Rule Initialization - rule_label = 'classify class net as entity (1)' + rule_label = 'classify class net as entity from core arguments' rule_triple_list = [] # -- Search for patterns @@ -64,8 +64,7 @@ def classify_class_as_entity_1(graph): # -- Pattern Analysis for pattern in pattern_set: - class_net = net.ClassNet(graph, uri=pattern.class_net) - class_net.class_type = ENTITY_CLASS_TYPE - rule_triple_list += class_net.generate_triple_definition() + new_triple = __classify_net_as_entity(graph, pattern.class_net) + rule_triple_list += new_triple return rule_label, rule_triple_list \ No newline at end of file diff --git a/tenet/scheme/amr_master_rule/transduction/entity_classifier_2.py b/tenet/scheme/amr_master_rule/transduction/entity_classifier_2.py new file mode 100644 index 00000000..8e6e577b --- /dev/null +++ b/tenet/scheme/amr_master_rule/transduction/entity_classifier_2.py @@ -0,0 +1,73 @@ +#!/usr/bin/python3.10 +# -*-coding:Utf-8 -* + +#============================================================================== +# TENET: Rule to entity classification (2) +#------------------------------------------------------------------------------ +# AMR rule to classify classes as entities from part relation +#============================================================================== + +from rdflib import Graph + +import transduction +from transduction import net +from transduction.query_builder import generate_select_query +from transduction.rdfterm_computer import produce_uriref, produce_literal + +ENTITY_CLASS_TYPE = 'base-out:Entity' + + +#============================================================================== +# Pattern Search: modality_phenomena +#============================================================================== + +def __search_pattern(graph): + query_code = '' + result_set = [] + for arg_relation in ['amr:role_part']: + select_data_list = ['?class_net_1', '?class_net_2'] + clause_list = [f'?class_net_1 a [rdfs:subClassOf* net:Class_Net].', + f'?class_net_2 a [rdfs:subClassOf* net:Class_Net].', + f'?class_net_1 {arg_relation} ?class_net_2.'] + query_code = generate_select_query(graph, select_data_list, clause_list) + result_set += graph.query(query_code) + return query_code, result_set + + +#============================================================================== +# Useful Computation Method(s) +#============================================================================== + +# None + + +#============================================================================== +# Construct Method(s) +#============================================================================== + +def __classify_net_as_entity(graph, net_uri): + class_net = net.ClassNet(graph, uri=net_uri) + class_net.class_type = ENTITY_CLASS_TYPE + return class_net.generate_triple_definition() + + +#============================================================================== +# Main Method +#============================================================================== + +def classify_entity_from_part_relation(graph): + + # -- Rule Initialization + rule_label = 'classify class net as entity from part relation' + rule_triple_list = [] + + # -- Search for patterns + _, pattern_set = __search_pattern(graph) + + # -- Pattern Analysis + for pattern in pattern_set: + new_triple_1 = __classify_net_as_entity(graph, pattern.class_net_1) + new_triple_2 = __classify_net_as_entity(graph, pattern.class_net_2) + rule_triple_list += (new_triple_1 + new_triple_2) + + return rule_label, rule_triple_list \ No newline at end of file diff --git a/tenet/scheme/amr_master_rule/transduction/entity_classifier_3.py b/tenet/scheme/amr_master_rule/transduction/entity_classifier_3.py new file mode 100644 index 00000000..27f4e709 --- /dev/null +++ b/tenet/scheme/amr_master_rule/transduction/entity_classifier_3.py @@ -0,0 +1,71 @@ +#!/usr/bin/python3.10 +# -*-coding:Utf-8 -* + +#============================================================================== +# TENET: Rule to entity classification (4) +#------------------------------------------------------------------------------ +# AMR rule to classify classes as entities from degree arguments +#============================================================================== + +from rdflib import Graph + +import transduction +from transduction import net +from transduction.query_builder import generate_select_query +from transduction.rdfterm_computer import produce_uriref, produce_literal + +ENTITY_CLASS_TYPE = 'base-out:Entity' + + +#============================================================================== +# Pattern Search: modality_phenomena +#============================================================================== + +def __search_pattern(graph): + query_code = '' + result_set = [] + for arg_relation in ['amr:role_ARG0', 'amr:role_ARG1', 'amr:role_ARG2']: + select_data_list = ['?class_net'] + clause_list = [f'?class_net a [rdfs:subClassOf* net:Class_Net].', + f'?left_net {arg_relation} ?class_net.'] + query_code = generate_select_query(graph, select_data_list, clause_list) + result_set += graph.query(query_code) + return query_code, result_set + + +#============================================================================== +# Useful Computation Method(s) +#============================================================================== + +# None + + +#============================================================================== +# Construct Method(s) +#============================================================================== + +def __classify_net_as_entity(graph, net_uri): + class_net = net.ClassNet(graph, uri=net_uri) + class_net.class_type = ENTITY_CLASS_TYPE + return class_net.generate_triple_definition() + + +#============================================================================== +# Main Method +#============================================================================== + +def classify_entity_from_degree_arguments(graph): + + # -- Rule Initialization + rule_label = 'classify class net as entity from degree arguments' + rule_triple_list = [] + + # -- Search for patterns + _, pattern_set = __search_pattern(graph) + + # -- Pattern Analysis + for pattern in pattern_set: + new_triple = __classify_net_as_entity(graph, pattern.class_net) + rule_triple_list += new_triple + + return rule_label, rule_triple_list \ No newline at end of file diff --git a/tenet/scheme/amr_master_rule/transduction/mother_classifier_1.py b/tenet/scheme/amr_master_rule/transduction/mother_classifier_1.py new file mode 100644 index 00000000..5f89e3b5 --- /dev/null +++ b/tenet/scheme/amr_master_rule/transduction/mother_classifier_1.py @@ -0,0 +1,74 @@ +#!/usr/bin/python3.10 +# -*-coding:Utf-8 -* + +#============================================================================== +# TENET: Rule to entity classification (3) +#------------------------------------------------------------------------------ +# AMR rule to classify classes as entities from domain relation +#============================================================================== + +from rdflib import Graph + +import transduction +from transduction import net +from transduction.query_builder import generate_select_query +from transduction.rdfterm_computer import produce_uriref, produce_literal + +ENTITY_CLASS_TYPE = 'base-out:Entity' + + +#============================================================================== +# Pattern Search: modality_phenomena +#============================================================================== + +def __search_pattern(graph): + query_code = '' + result_set = [] + for arg_relation in ['amr:role_domain']: + select_data_list = ['?class_net_1', '?class_net_2'] + clause_list = [f'?class_net_1 a [rdfs:subClassOf* net:Class_Net].', + f'?class_net_2 a [rdfs:subClassOf* net:Class_Net].', + f'?class_net_1 {arg_relation} ?class_net_2.'] + query_code = generate_select_query(graph, select_data_list, clause_list) + result_set += graph.query(query_code) + return query_code, result_set + + +#============================================================================== +# Useful Computation Method(s) +#============================================================================== + +# None + + +#============================================================================== +# Construct Method(s) +#============================================================================== + +def __classify_net_as_mother(graph, base_net_uri, mother_net_uri): + base_class_net = net.ClassNet(graph, uri=base_net_uri) + base_class_net.mother_class_net = mother_net_uri + return base_class_net.generate_triple_definition() + + +#============================================================================== +# Main Method +#============================================================================== + +def classify_mother_relation_from_domain_relation(graph): + + # -- Rule Initialization + rule_label = 'classify class net as mother from domain argument' + rule_triple_list = [] + + # -- Search for patterns + _, pattern_set = __search_pattern(graph) + + # -- Pattern Analysis + for pattern in pattern_set: + new_triple = __classify_net_as_mother(graph, + pattern.class_net_1, + pattern.class_net_2) + rule_triple_list += new_triple + + return rule_label, rule_triple_list \ No newline at end of file diff --git a/tenet/scheme/owl_amr_scheme_1.py b/tenet/scheme/owl_amr_scheme_1.py index 4ab95b89..aa433423 100644 --- a/tenet/scheme/owl_amr_scheme_1.py +++ b/tenet/scheme/owl_amr_scheme_1.py @@ -206,7 +206,10 @@ composite_class_extraction_sequence = ['composite class extraction sequence', rule.extract_composite_class_2] classification_sequence_2 = ['classification sequence (2)', - rule.classify_class_as_entity_1, + rule.classify_entity_from_core_arguments, + rule.classify_entity_from_part_relation, + rule.classify_entity_from_degree_arguments, + rule.classify_mother_relation_from_domain_relation, ] diff --git a/tenet/tenet.log b/tenet/tenet.log index dbe0ae61..7f727025 100644 --- a/tenet/tenet.log +++ b/tenet/tenet.log @@ -71,25 +71,25 @@ - DEBUG - ----- Total rule number: 87 - INFO - -- Applying extraction step: preprocessing - INFO - --- *** November Transduction *** Sequence: amrld-correcting-sequence -- INFO - ----- fix-amr-bug-about-system-solar-planet: 5/5 new triples (603, 0:00:00.031752) +- INFO - ----- fix-amr-bug-about-system-solar-planet: 5/5 new triples (603, 0:00:00.031473) - INFO - --- *** November Transduction *** Sequence: amr-reification-sequence -- INFO - ----- reclassify-concept-1: 10/10 new triples (613, 0:00:00.167954) -- DEBUG - ----- reclassify-concept-2: 0/0 new triple (613, 0:00:00.059882) -- INFO - ----- reclassify-concept-3: 12/12 new triples (625, 0:00:00.051650) -- INFO - ----- reclassify-concept-4: 16/16 new triples (641, 0:00:00.081932) -- INFO - ----- reclassify-concept-5: 2/4 new triples (643, 0:00:00.049265) -- INFO - ----- reify-roles-as-concept: 10/10 new triples (653, 0:00:00.059204) -- INFO - ----- reclassify-existing-variable: 45/45 new triples (698, 0:00:00.045842) -- INFO - ----- add-new-variable-for-reified-concept: 8/8 new triples (706, 0:00:00.090942) -- INFO - ----- add-amr-leaf-for-reclassified-concept: 33/33 new triples (739, 0:00:00.098016) -- INFO - ----- add-amr-leaf-for-reified-concept: 8/8 new triples (747, 0:00:00.058809) -- INFO - ----- add-amr-edge-for-core-relation: 27/27 new triples (774, 0:00:00.203281) -- INFO - ----- add-amr-edge-for-reified-concept: 12/12 new triples (786, 0:00:00.195518) -- INFO - ----- add-amr-edge-for-name-relation: 5/5 new triples (791, 0:00:00.113609) -- DEBUG - ----- add-value-for-quant-relation: 0/0 new triple (791, 0:00:00.089987) -- INFO - ----- add-amr-edge-for-polarity-relation: 5/5 new triples (796, 0:00:00.083162) -- INFO - ----- update-amr-edge-role-1: 15/15 new triples (811, 0:00:00.102568) -- INFO - ----- add-amr-root: 5/5 new triples (816, 0:00:00.031240) +- INFO - ----- reclassify-concept-1: 10/10 new triples (613, 0:00:00.160563) +- DEBUG - ----- reclassify-concept-2: 0/0 new triple (613, 0:00:00.060243) +- INFO - ----- reclassify-concept-3: 12/12 new triples (625, 0:00:00.044155) +- INFO - ----- reclassify-concept-4: 16/16 new triples (641, 0:00:00.056944) +- INFO - ----- reclassify-concept-5: 2/4 new triples (643, 0:00:00.045606) +- INFO - ----- reify-roles-as-concept: 10/10 new triples (653, 0:00:00.051651) +- INFO - ----- reclassify-existing-variable: 45/45 new triples (698, 0:00:00.036240) +- INFO - ----- add-new-variable-for-reified-concept: 8/8 new triples (706, 0:00:00.067767) +- INFO - ----- add-amr-leaf-for-reclassified-concept: 33/33 new triples (739, 0:00:00.047631) +- INFO - ----- add-amr-leaf-for-reified-concept: 8/8 new triples (747, 0:00:00.034005) +- INFO - ----- add-amr-edge-for-core-relation: 27/27 new triples (774, 0:00:00.116606) +- INFO - ----- add-amr-edge-for-reified-concept: 12/12 new triples (786, 0:00:00.142827) +- INFO - ----- add-amr-edge-for-name-relation: 5/5 new triples (791, 0:00:00.080437) +- DEBUG - ----- add-value-for-quant-relation: 0/0 new triple (791, 0:00:00.168916) +- INFO - ----- add-amr-edge-for-polarity-relation: 5/5 new triples (796, 0:00:00.085452) +- INFO - ----- update-amr-edge-role-1: 15/15 new triples (811, 0:00:00.093294) +- INFO - ----- add-amr-root: 5/5 new triples (816, 0:00:00.025947) - DEBUG - --- Serializing graph to tenet.tetras-libre.fr_demo_01_preprocessing - DEBUG - ----- step: preprocessing - DEBUG - ----- id: https://tenet.tetras-libre.fr/demo/01/ @@ -98,71 +98,74 @@ - INFO - ----- 218 triples extracted during preprocessing step - INFO - -- Applying extraction step: transduction - INFO - --- *** February Transduction *** Sequence: atomic extraction sequence -- INFO - ----- extract atom classes: 30/30 new triples (846, 0:00:00.216496) -- INFO - ----- extract atom individuals: 8/8 new triples (854, 0:00:00.066344) -- INFO - ----- extract atomic properties: 75/75 new triples (929, 0:00:00.298111) -- INFO - ----- extract atom values: 10/10 new triples (939, 0:00:00.071351) -- INFO - ----- extract atom phenomena: 14/14 new triples (953, 0:00:00.100322) -- INFO - ----- propagate atom relations: 24/68 new triples (977, 0:00:01.445146) +- INFO - ----- extract atom classes: 30/30 new triples (846, 0:00:00.169751) +- INFO - ----- extract atom individuals: 8/8 new triples (854, 0:00:00.045202) +- INFO - ----- extract atomic properties: 75/75 new triples (929, 0:00:00.220864) +- INFO - ----- extract atom values: 10/10 new triples (939, 0:00:00.053945) +- INFO - ----- extract atom phenomena: 14/14 new triples (953, 0:00:00.077999) +- INFO - ----- propagate atom relations: 24/68 new triples (977, 0:00:01.051146) - INFO - --- *** February Transduction *** Sequence: classification sequence (1) -- DEBUG - ----- classify modality phenomena: 0/0 new triple (977, 0:00:00.024688) -- INFO - ----- reclassify argument property to class: 11/14 new triples (988, 0:00:00.073941) +- DEBUG - ----- classify modality phenomena: 0/0 new triple (977, 0:00:00.022915) +- INFO - ----- reclassify argument property to class: 11/14 new triples (988, 0:00:00.072621) - INFO - --- *** February Transduction *** Sequence: phenomena analyze sequence (1) -- INFO - ----- analyze "polarity" phenomena (1): 32/36 new triples (1020, 0:00:00.103744) -- DEBUG - ----- analyze "polarity" phenomena (2): 0/0 new triple (1020, 0:00:00.012976) -- DEBUG - ----- analyze "polarity" phenomena (3): 0/0 new triple (1020, 0:00:00.013348) -- DEBUG - ----- analyze "polarity" phenomena (4): 0/0 new triple (1020, 0:00:00.029727) -- DEBUG - ----- analyze "polarity" phenomena (5): 0/0 new triple (1020, 0:00:00.037221) -- DEBUG - ----- analyze modifier phenomena (mod): 0/0 new triple (1020, 0:00:00.008403) -- DEBUG - ----- classify modality phenomena: 0/0 new triple (1020, 0:00:00.019072) +- INFO - ----- analyze "polarity" phenomena (1): 32/36 new triples (1020, 0:00:00.105395) +- DEBUG - ----- analyze "polarity" phenomena (2): 0/0 new triple (1020, 0:00:00.014670) +- DEBUG - ----- analyze "polarity" phenomena (3): 0/0 new triple (1020, 0:00:00.019251) +- DEBUG - ----- analyze "polarity" phenomena (4): 0/0 new triple (1020, 0:00:00.031005) +- DEBUG - ----- analyze "polarity" phenomena (5): 0/0 new triple (1020, 0:00:00.029724) +- DEBUG - ----- analyze modifier phenomena (mod): 0/0 new triple (1020, 0:00:00.009488) +- DEBUG - ----- classify modality phenomena: 0/0 new triple (1020, 0:00:00.018402) - INFO - --- *** February Transduction *** Sequence: phenomena analyze sequence (2) -- INFO - ----- analyze "or" phenomena (1): 1/1 new triple (1021, 0:00:00.082001) -- INFO - ----- analyze "or" phenomena (2): 55/82 new triples (1076, 0:00:00.266848) -- INFO - ----- analyze "and" phenomena (1): 2/14 new triples (1078, 0:00:00.205857) -- DEBUG - ----- analyze "and" phenomena (2): 0/0 new triple (1078, 0:00:00.015402) +- INFO - ----- analyze "or" phenomena (1): 1/1 new triple (1021, 0:00:00.081188) +- INFO - ----- analyze "or" phenomena (2): 55/82 new triples (1076, 0:00:00.293218) +- INFO - ----- analyze "and" phenomena (1): 2/14 new triples (1078, 0:00:00.170594) +- DEBUG - ----- analyze "and" phenomena (2): 0/0 new triple (1078, 0:00:00.010628) - INFO - --- *** February Transduction *** Sequence: composite class extraction sequence -- INFO - ----- extract composite classes (1): 127/133 new triples (1205, 0:00:00.490823) -- DEBUG - ----- extract composite classes (2): 0/0 new triple (1205, 0:00:00.024752) +- INFO - ----- extract composite classes (1): 127/138 new triples (1205, 0:00:00.529900) +- DEBUG - ----- extract composite classes (2): 0/0 new triple (1205, 0:00:00.033513) - INFO - --- *** February Transduction *** Sequence: classification sequence (2) -- INFO - ----- classify class net as entity (1): 10/181 new triples (1215, 0:00:00.340942) +- INFO - ----- classify class net as entity from core arguments: 10/181 new triples (1215, 0:00:00.315279) +- DEBUG - ----- classify class net as entity from part relation: 0/0 new triple (1215, 0:00:00.010186) +- DEBUG - ----- classify class net as entity from degree arguments: 0/362 new triple (1215, 0:00:00.515378) +- INFO - ----- classify class net as mother from domain argument: 5/34 new triples (1220, 0:00:00.083868) - DEBUG - --- Serializing graph to tenet.tetras-libre.fr_demo_01_transduction - DEBUG - ----- step: transduction - DEBUG - ----- id: https://tenet.tetras-libre.fr/demo/01/ - DEBUG - ----- work_file: /home/lamenji/Workspace/Tetras/tenet/tests/main_tests/test_owl_output/SolarSystemDev01-20230526/technical-data/tenet.tetras-libre.fr_demo_01-0/tenet.tetras-libre.fr_demo_01_transduction.ttl - DEBUG - ----- base: http://https://tenet.tetras-libre.fr/demo/01//transduction -- INFO - ----- 399 triples extracted during transduction step +- INFO - ----- 404 triples extracted during transduction step - INFO - -- Applying extraction step: generation - INFO - --- *** February Transduction *** Sequence: class_generation_sequence -- INFO - ----- generate OWL class: 31/31 new triples (1246, 0:00:00.455186) +- INFO - ----- generate OWL class: 32/35 new triples (1252, 0:00:00.374151) - INFO - --- *** February Transduction *** Sequence: property_generation_sequence -- INFO - ----- generate OWL property: 29/29 new triples (1275, 0:00:00.387736) +- INFO - ----- generate OWL property: 29/29 new triples (1281, 0:00:00.344631) - INFO - --- *** November Transduction *** Sequence: main-generation-sequence -- DEBUG - ----- generate-individual: 0/0 new triple (1275, 0:00:00.012749) -- DEBUG - ----- classify-individual-1: 0/0 new triple (1275, 0:00:00.009065) -- DEBUG - ----- classify-individual-2: 0/0 new triple (1275, 0:00:00.012780) -- DEBUG - ----- generate-atom-property-1: 0/0 new triple (1275, 0:00:00.011774) -- DEBUG - ----- generate-atom-property-12: 0/0 new triple (1275, 0:00:00.012191) -- DEBUG - ----- generate-inverse-relation: 0/0 new triple (1275, 0:00:00.009183) -- DEBUG - ----- generate-composite-class: 0/0 new triple (1275, 0:00:00.016291) -- DEBUG - ----- add-restriction-to-class-1: 0/0 new triple (1275, 0:00:00.031258) -- DEBUG - ----- add-restriction-to-class-2: 0/0 new triple (1275, 0:00:00.017814) -- DEBUG - ----- add-restriction-to-class-3: 0/0 new triple (1275, 0:00:00.022112) -- DEBUG - ----- add-restriction-to-class-4: 0/0 new triple (1275, 0:00:00.019879) -- DEBUG - ----- add-restriction-to-class-5: 0/0 new triple (1275, 0:00:00.021348) -- DEBUG - ----- add-restriction-to-class-6: 0/0 new triple (1275, 0:00:00.017861) +- DEBUG - ----- generate-individual: 0/0 new triple (1281, 0:00:00.010164) +- DEBUG - ----- classify-individual-1: 0/0 new triple (1281, 0:00:00.009970) +- DEBUG - ----- classify-individual-2: 0/0 new triple (1281, 0:00:00.009374) +- DEBUG - ----- generate-atom-property-1: 0/0 new triple (1281, 0:00:00.013099) +- DEBUG - ----- generate-atom-property-12: 0/0 new triple (1281, 0:00:00.007817) +- DEBUG - ----- generate-inverse-relation: 0/0 new triple (1281, 0:00:00.006800) +- DEBUG - ----- generate-composite-class: 0/0 new triple (1281, 0:00:00.010417) +- DEBUG - ----- add-restriction-to-class-1: 0/0 new triple (1281, 0:00:00.018832) +- DEBUG - ----- add-restriction-to-class-2: 0/0 new triple (1281, 0:00:00.014955) +- DEBUG - ----- add-restriction-to-class-3: 0/0 new triple (1281, 0:00:00.015434) +- DEBUG - ----- add-restriction-to-class-4: 0/0 new triple (1281, 0:00:00.012755) +- DEBUG - ----- add-restriction-to-class-5: 0/0 new triple (1281, 0:00:00.015014) +- DEBUG - ----- add-restriction-to-class-6: 0/0 new triple (1281, 0:00:00.015334) - DEBUG - --- Serializing graph to tenet.tetras-libre.fr_demo_01_generation - DEBUG - ----- step: generation - DEBUG - ----- id: https://tenet.tetras-libre.fr/demo/01/ - DEBUG - ----- work_file: /home/lamenji/Workspace/Tetras/tenet/tests/main_tests/test_owl_output/SolarSystemDev01-20230526/technical-data/tenet.tetras-libre.fr_demo_01-0/tenet.tetras-libre.fr_demo_01_generation.ttl - DEBUG - ----- base: http://https://tenet.tetras-libre.fr/demo/01//generation -- INFO - ----- 60 triples extracted during generation step +- INFO - ----- 61 triples extracted during generation step - DEBUG - --- Serializing graph to factoid file (/home/lamenji/Workspace/Tetras/tenet/tests/main_tests/test_owl_output/SolarSystemDev01-20230526/technical-data/tenet.tetras-libre.fr_demo_01-0/tenet.tetras-libre.fr_demo_01_factoid.ttl) -- DEBUG - ----- Number of factoids: 60 +- DEBUG - ----- Number of factoids: 64 - DEBUG - ----- Graph base: http://https://tenet.tetras-libre.fr/demo/01//factoid - INFO - === Final Ontology Generation === - INFO - -- Making complete factoid graph by merging the result factoids -- INFO - ----- Total factoid number: 60 +- INFO - ----- Total factoid number: 64 - INFO - -- Serializing graph to factoid string - INFO - ----- Graph base: http://https://tenet.tetras-libre.fr/demo/01//factoid - INFO - -- Serializing graph to factoid file @@ -172,6 +175,6 @@ - INFO - *** Execution Time *** ----- Function: create_ontology_from_amrld_file (tenet.main) ------ Total Time: 0:00:07.144447 ------ Process Time: 0:00:06.999331 +----- Total Time: 0:00:06.700922 +----- Process Time: 0:00:06.607285 *** - *** diff --git a/tenet/transduction/net/class_net.py b/tenet/transduction/net/class_net.py index fb5d733c..b0d12fe2 100644 --- a/tenet/transduction/net/class_net.py +++ b/tenet/transduction/net/class_net.py @@ -34,10 +34,11 @@ 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'] + self.attr_list += ['class_name', 'class_uri', 'class_type', 'mother_class_net'] self._class_name = None self._class_uri = None self._class_type = None + self._mother_class_net = None #-------------------------------------------------------------------------- @@ -75,3 +76,13 @@ class ClassNet(Net): @class_type.setter def class_type(self, new_value): self._class_type = self.set_attribute_value_list(new_value, produce_uriref) + + @property + def mother_class_net(self): + if self._mother_class_net is None: + self._mother_class_net = self.get_value_list_from_graph('mother_class_net') + return self._mother_class_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 diff --git a/tests/dev_owl_rule_tests/test_data/entity-classifier-devGraph-1.result.ttl b/tests/dev_owl_rule_tests/test_data/entity-classifier-devGraph-1.result.ttl index 40abbc89..aec4bab1 100644 --- a/tests/dev_owl_rule_tests/test_data/entity-classifier-devGraph-1.result.ttl +++ b/tests/dev_owl_rule_tests/test_data/entity-classifier-devGraph-1.result.ttl @@ -516,7 +516,8 @@ net:compositeClass_object-orbit-hasManner-not-direct-sun_o a net:Composite_Class net:hasRestriction net:restriction_orbit-hasManner-not-direct-sun_o2 ; net:hasStructure "SSC-01-01" . -net:compositeClass_system-hasPart-object_s a net:Composite_Class_Net ; +net:compositeClass_system-hasPart-object_s a net:Class_Net, + net:Composite_Class_Net ; :role_domain net:atomClass_system_p, net:individual_SolarSystem_p ; net:composeFrom net:atomClass_object_o, @@ -526,12 +527,14 @@ net:compositeClass_system-hasPart-object_s a net:Composite_Class_Net ; net:coverNode :leaf_hasPart_p9, :leaf_object_o, :leaf_system_s ; - net:hasMotherClassNet net:atomClass_system_s ; + net:hasMotherClassNet net:atomClass_system_p, + net:atomClass_system_s ; net:hasNaming "system-hasPart-object" ; net:hasRestriction net:restriction_hasPart-object_p9 ; net:hasStructure "SSC-01-01" . -net:compositeClass_system-hasPart-sun_s a net:Composite_Class_Net ; +net:compositeClass_system-hasPart-sun_s a net:Class_Net, + net:Composite_Class_Net ; :role_domain net:atomClass_system_p, net:individual_SolarSystem_p ; net:composeFrom net:atomClass_sun_s2, @@ -541,7 +544,8 @@ net:compositeClass_system-hasPart-sun_s a net:Composite_Class_Net ; net:coverNode :leaf_hasPart_p9, :leaf_sun_s2, :leaf_system_s ; - net:hasMotherClassNet net:atomClass_system_s ; + net:hasMotherClassNet net:atomClass_system_p, + net:atomClass_system_s ; net:hasNaming "system-hasPart-sun" ; net:hasRestriction net:restriction_hasPart-sun_p9 ; net:hasStructure "SSC-01-01" . @@ -824,6 +828,9 @@ ns2:AMR a owl:Class ; sys:Degree a owl:Class ; rdfs:subClassOf sys:Out_Structure . +sys:Entity a owl:Class ; + rdfs:subClassOf sys:Out_Structure . + sys:Feature a owl:Class ; rdfs:subClassOf sys:Out_Structure . @@ -836,7 +843,6 @@ net:Individual_Net a owl:Class ; rdfs:subClassOf net:Net . net:atomClass_orbit_o2 a net:Atom_Class_Net, - net:Class_Net, net:Deprecated_Net ; :role_ARG0 net:atomClass_object_o ; :role_ARG1 net:atomClass_sun_s2 ; @@ -844,7 +850,6 @@ net:atomClass_orbit_o2 a net:Atom_Class_Net, net:coverBaseNode :leaf_orbit-01_o2 ; net:coverNode :leaf_orbit-01_o2 ; net:hasClassName "orbit" ; - net:hasClassType sys:Entity ; net:hasNaming "orbit" ; net:hasStructure "SSC-01-01" . @@ -1160,12 +1165,10 @@ net:Net_Structure a owl:Class ; rdfs:comment "A semantic net captures a set of nodes, and associates this set with type(s) and value(s)." . net:atomClass_gravitation_g a net:Atom_Class_Net, - net:Class_Net, net:Deprecated_Net ; net:coverBaseNode :leaf_gravitation_g ; net:coverNode :leaf_gravitation_g ; net:hasClassName "gravitation" ; - net:hasClassType sys:Entity ; net:hasNaming "gravitation" ; net:hasStructure "SSC-01-01" . @@ -1266,15 +1269,6 @@ ns3:FrameRole a ns2:Role, rdfs:subClassOf :AMR_Core_Role ; :label "ARG1" . -net:atomClass_system_p a net:Atom_Class_Net, - net:Deprecated_Net ; - :role_name net:value_SolarSystem_blankNode ; - net:coverBaseNode :leaf_system_p ; - net:coverNode :leaf_system_p ; - net:hasClassName "system" ; - net:hasNaming "system" ; - net:hasStructure "SSC-01-01" . - net:atomProperty_direct_d a net:Atom_Property_Net ; net:coverBaseNode :leaf_direct-02_d ; net:coverNode :leaf_direct-02_d ; @@ -1313,6 +1307,9 @@ net:typeProperty a owl:AnnotationProperty ; sys:Out_Structure a owl:Class ; rdfs:label "Output Ontology Structure" . +net:Class_Net a owl:Class ; + rdfs:subClassOf net:Net . + net:Composite_Class_Net a owl:Class ; rdfs:subClassOf net:Class_Net . @@ -1328,9 +1325,6 @@ net:netProperty a owl:AnnotationProperty ; :hasConcept :concept_gravitation ; :hasVariable :variable_g . -sys:Entity a owl:Class ; - rdfs:subClassOf sys:Out_Structure . - cprm:configParamProperty a rdf:Property ; rdfs:label "Config Parameter Property" . @@ -1401,9 +1395,6 @@ rdf:Property a owl:Class . :hasConcept :concept_direct-02 ; :hasVariable :variable_d . -net:Class_Net a owl:Class ; - rdfs:subClassOf net:Net . - net:Deprecated_Net a owl:Class ; rdfs:subClassOf net:Net . @@ -1413,6 +1404,15 @@ net:Relation a owl:Class ; net:Restriction_Net a owl:Class ; rdfs:subClassOf net:Net . +net:atomClass_system_p a net:Atom_Class_Net, + net:Deprecated_Net ; + :role_name net:value_SolarSystem_blankNode ; + net:coverBaseNode :leaf_system_p ; + net:coverNode :leaf_system_p ; + net:hasClassName "system" ; + net:hasNaming "system" ; + net:hasStructure "SSC-01-01" . + :leaf_hasPart_p9 a :AMR_Leaf ; :edge_p9_ARG0_s :leaf_system_s ; :edge_p9_ARG1_a :leaf_and_a ; @@ -1447,7 +1447,7 @@ net:atomClass_system_s a net:Atom_Class_Net, net:coverBaseNode :leaf_system_s ; net:coverNode :leaf_system_s ; net:hasClassName "system" ; - net:hasClassType sys:Entity ; + net:hasMotherClassNet net:atomClass_system_p ; net:hasNaming "system" ; net:hasStructure "SSC-01-01" . @@ -1495,24 +1495,20 @@ net:atomProperty_direct_d2 a net:Atom_Property_Net, :hasVariable :variable_s . net:atomClass_object_o a net:Atom_Class_Net, - net:Class_Net, net:Deprecated_Net ; net:coverBaseNode :leaf_object_o ; net:coverNode :leaf_object_o ; net:hasClassName "object" ; - net:hasClassType sys:Entity ; net:hasNaming "object" ; net:hasStructure "SSC-01-01" . :AMR_Leaf a owl:Class ; rdfs:subClassOf :AMR_Structure . -net:atomClass_sun_s2 a net:Atom_Class_Net, - net:Class_Net ; +net:atomClass_sun_s2 a net:Atom_Class_Net ; net:coverBaseNode :leaf_sun_s2 ; net:coverNode :leaf_sun_s2 ; net:hasClassName "sun" ; - net:hasClassType sys:Entity ; net:hasNaming "sun" ; net:hasStructure "SSC-01-01" . diff --git a/tests/dev_owl_rule_tests/test_rule_entity_classifier.py b/tests/dev_owl_rule_tests/test_rule_entity_classifier.py index 8a29a963..ee2cbdaa 100644 --- a/tests/dev_owl_rule_tests/test_rule_entity_classifier.py +++ b/tests/dev_owl_rule_tests/test_rule_entity_classifier.py @@ -20,6 +20,8 @@ TEST_FILE_NAME_1 = 'entity-classifier-devGraph-1' from context import tenet from tenet.scheme.amr_master_rule.transduction import entity_classifier_1 as rule_1 +from tenet.scheme.amr_master_rule.transduction import entity_classifier_2 as rule_2 +from tenet.scheme.amr_master_rule.transduction import entity_classifier_3 as rule_3 from tenet.scheme import amr_master_rule as rule from tenet.transduction import net @@ -98,7 +100,19 @@ def test_search_pattern_1(graph): result_str += f'{selection.class_net.n3(graph.namespace_manager)}' print(result_str) return pattern_set + +def test_search_pattern_2(graph): + query_code, pattern_set = rule_2.__search_pattern(graph) + print(f'\n ----- query code: {query_code}') + print(f'\n ----- number of selection found: {len(pattern_set)}') + for selection in pattern_set: + result_str = f'>>> ' + result_str += f'{selection.class_net.n3(graph.namespace_manager)}' + result_str += f' | {selection.class_net.n3(graph.namespace_manager)}' + print(result_str) + return pattern_set + #============================================================================== # Unit Test @@ -135,7 +149,32 @@ if __name__ == '__main__': print('\n \n') print('\n *** Unit Test ***') - test_rule_application(TEST_FILE_NAME_1, graph_1, rule_1.classify_class_as_entity_1) + test_rule_application(TEST_FILE_NAME_1, graph_1, rule.classify_entity_from_core_arguments) + print('\n \n') + + + print('\n ///////////////////// Classifier Rule 2') + + print('\n *** Step Test ***') + + print('\n -- Step 1: Search Pattern') + pattern_set = test_search_pattern_2(graph_1) + print('\n \n') + + print('\n *** Unit Test ***') + test_rule_application(TEST_FILE_NAME_1, graph_1, rule.classify_entity_from_part_relation) + print('\n \n') + + print('\n ///////////////////// Classifier Rule 3') + + print('\n *** Step Test ***') + + print('\n -- Step 1: Search Pattern') + pattern_set = test_search_pattern_1(graph_1) + print('\n \n') + + print('\n *** Unit Test ***') + test_rule_application(TEST_FILE_NAME_1, graph_1, rule.classify_entity_from_degree_arguments) print('\n \n') diff --git a/tests/dev_owl_rule_tests/test_rule_mother_classifier.py b/tests/dev_owl_rule_tests/test_rule_mother_classifier.py new file mode 100644 index 00000000..c20e21af --- /dev/null +++ b/tests/dev_owl_rule_tests/test_rule_mother_classifier.py @@ -0,0 +1,144 @@ +#!/usr/bin/python3.10 +# -*-coding:Utf-8 -* + +#============================================================================== +# TENET: Extraction Rule Test +#------------------------------------------------------------------------------ +# Script to test rules under development +#============================================================================== + +import subprocess, os +from rdflib import Graph, Namespace +from rdflib.namespace import NamespaceManager, FOAF, RDF +from rdflib import URIRef, Literal, BNode + +FILE_PATH = f'{os.path.dirname(os.path.abspath(__file__))}' +INPUT_DIR_PATH = f'{FILE_PATH}/test_data/' +OUTPUT_DIR_PATH = f'{FILE_PATH}/test_data/' + +TEST_FILE_NAME_1 = 'entity-classifier-devGraph-1' + +from context import tenet +from tenet.scheme.amr_master_rule.transduction import mother_classifier_1 as rule_1 +from tenet.scheme import amr_master_rule as rule + +from tenet.transduction import net +from tenet.transduction.rdfterm_computer import __update_uri_with_prefix +from tenet.transduction import query_builder +from tenet.transduction import prefix_handle +from transduction.naming_computer import define_composite_naming_2 + + + +#============================================================================== +# Useful Methods +#============================================================================== + +def load_test_graph(test_file_name): + print(f'\n -- Test Graph Loading') + graph = Graph() + prefix_handle.update_graph_namespacemanager(graph) + graph_path = f'{INPUT_DIR_PATH}{test_file_name}.ttl' + graph.parse(graph_path) + print(f" ----- Graph Loaded ({len(graph)})") + return graph + + +def print_net_attributes(net): + print(f'\n *** Net attributes ({net.type_id}: {net.uri}) ***') + for attr in net.attr_list: + net_attr_ref = f'net.{attr}' + print(f' ----- {attr}: {eval(net_attr_ref)}') + + +def print_triple(graph, triple, num=-1): + num_str = f'[{num}]' if num > -1 else '[-]' + (s, p, o) = triple + s = __update_uri_with_prefix(graph, s) + p = __update_uri_with_prefix(graph, p) + o = __update_uri_with_prefix(graph, o) + print(f' {num_str} {s} {p} {o}') + + +def add_triples_in_graph(test_file_name, graph, triple_list): + print(f'\n -- Adding triple(s) in graph') + print(f" ----- Graph length before update: {len(graph)}") + print(f" ----- Number of triples to add: {len(triple_list)}") + + print(f" ----- Added triples:") + n = 0 + graph_length = len(graph) + for triple in triple_list: + graph.add(triple) + if graph_length < len(graph): + n += 1 + graph_length = len(graph) + print_triple(graph, triple, num=n) + + print(f" ----- Graph length after update: {len(graph)}") + + output_graph_path = f'{OUTPUT_DIR_PATH}{test_file_name}.result.ttl' + output_graph_uri = f'https://amr.tetras-libre.fr/rdf/{test_file_name}/result' + print(f'\n -- Serialize test graph to {output_graph_path}') + graph.serialize(destination=output_graph_path, + format='turtle', + base=output_graph_uri) + + +#============================================================================== +# Development Test +#============================================================================== + +def test_search_pattern_1(graph): + query_code, pattern_set = rule_1.__search_pattern(graph) + print(f'\n ----- query code: {query_code}') + print(f'\n ----- number of selection found: {len(pattern_set)}') + for selection in pattern_set: + result_str = f'>>> ' + result_str += f'{selection.class_net_1.n3(graph.namespace_manager)}' + result_str += f' | {selection.class_net_2.n3(graph.namespace_manager)}' + print(result_str) + return pattern_set + + +#============================================================================== +# Unit Test +#============================================================================== + +def test_rule_application(test_file_name, graph, rule): + print('\n -- Rule Test') + + rule_label, new_triple_list = rule(graph) + print(f' ----- label: {rule_label}') + + add_triples_in_graph(test_file_name, graph, new_triple_list) + + + +#============================================================================== +# Test Script +#============================================================================== + +if __name__ == '__main__': + + print('\n *** Test Preparation ***') + graph_1 = load_test_graph(TEST_FILE_NAME_1) + # graph_2 = load_test_graph(TEST_FILE_NAME_2) + print('\n \n') + + + print('\n ///////////////////// Classifier Rule 1') + + print('\n *** Step Test ***') + + print('\n -- Step 1: Search Pattern') + pattern_set = test_search_pattern_1(graph_1) + print('\n \n') + + print('\n *** Unit Test ***') + test_rule_application(TEST_FILE_NAME_1, graph_1, rule.classify_mother_relation_from_domain_relation) + print('\n \n') + + + + print('\n *** - ***') \ No newline at end of file diff --git a/tests/main_tests/test_owl_output/SolarSystemDev01-20230526/SolarSystemDev01_factoid.ttl b/tests/main_tests/test_owl_output/SolarSystemDev01-20230526/SolarSystemDev01_factoid.ttl index 60a4be30..6bfa1b38 100644 --- a/tests/main_tests/test_owl_output/SolarSystemDev01-20230526/SolarSystemDev01_factoid.ttl +++ b/tests/main_tests/test_owl_output/SolarSystemDev01-20230526/SolarSystemDev01_factoid.ttl @@ -77,6 +77,7 @@ <https://tenet.tetras-libre.fr/extract-result#system> a owl:Class ; rdfs:label "system" ; - rdfs:subClassOf ns1:Entity ; + rdfs:subClassOf ns1:Entity, + ns1:Undetermined_Thing ; ns1:fromStructure "SSC-01-01" . diff --git a/tests/main_tests/test_owl_output/SolarSystemDev01-20230526/technical-data/tenet.log b/tests/main_tests/test_owl_output/SolarSystemDev01-20230526/technical-data/tenet.log index 8b520ede..dbaea76b 100644 --- a/tests/main_tests/test_owl_output/SolarSystemDev01-20230526/technical-data/tenet.log +++ b/tests/main_tests/test_owl_output/SolarSystemDev01-20230526/technical-data/tenet.log @@ -71,25 +71,25 @@ - DEBUG - ----- Total rule number: 87 - INFO - -- Applying extraction step: preprocessing - INFO - --- *** November Transduction *** Sequence: amrld-correcting-sequence -- INFO - ----- fix-amr-bug-about-system-solar-planet: 5/5 new triples (603, 0:00:00.031752) +- INFO - ----- fix-amr-bug-about-system-solar-planet: 5/5 new triples (603, 0:00:00.031473) - INFO - --- *** November Transduction *** Sequence: amr-reification-sequence -- INFO - ----- reclassify-concept-1: 10/10 new triples (613, 0:00:00.167954) -- DEBUG - ----- reclassify-concept-2: 0/0 new triple (613, 0:00:00.059882) -- INFO - ----- reclassify-concept-3: 12/12 new triples (625, 0:00:00.051650) -- INFO - ----- reclassify-concept-4: 16/16 new triples (641, 0:00:00.081932) -- INFO - ----- reclassify-concept-5: 2/4 new triples (643, 0:00:00.049265) -- INFO - ----- reify-roles-as-concept: 10/10 new triples (653, 0:00:00.059204) -- INFO - ----- reclassify-existing-variable: 45/45 new triples (698, 0:00:00.045842) -- INFO - ----- add-new-variable-for-reified-concept: 8/8 new triples (706, 0:00:00.090942) -- INFO - ----- add-amr-leaf-for-reclassified-concept: 33/33 new triples (739, 0:00:00.098016) -- INFO - ----- add-amr-leaf-for-reified-concept: 8/8 new triples (747, 0:00:00.058809) -- INFO - ----- add-amr-edge-for-core-relation: 27/27 new triples (774, 0:00:00.203281) -- INFO - ----- add-amr-edge-for-reified-concept: 12/12 new triples (786, 0:00:00.195518) -- INFO - ----- add-amr-edge-for-name-relation: 5/5 new triples (791, 0:00:00.113609) -- DEBUG - ----- add-value-for-quant-relation: 0/0 new triple (791, 0:00:00.089987) -- INFO - ----- add-amr-edge-for-polarity-relation: 5/5 new triples (796, 0:00:00.083162) -- INFO - ----- update-amr-edge-role-1: 15/15 new triples (811, 0:00:00.102568) -- INFO - ----- add-amr-root: 5/5 new triples (816, 0:00:00.031240) +- INFO - ----- reclassify-concept-1: 10/10 new triples (613, 0:00:00.160563) +- DEBUG - ----- reclassify-concept-2: 0/0 new triple (613, 0:00:00.060243) +- INFO - ----- reclassify-concept-3: 12/12 new triples (625, 0:00:00.044155) +- INFO - ----- reclassify-concept-4: 16/16 new triples (641, 0:00:00.056944) +- INFO - ----- reclassify-concept-5: 2/4 new triples (643, 0:00:00.045606) +- INFO - ----- reify-roles-as-concept: 10/10 new triples (653, 0:00:00.051651) +- INFO - ----- reclassify-existing-variable: 45/45 new triples (698, 0:00:00.036240) +- INFO - ----- add-new-variable-for-reified-concept: 8/8 new triples (706, 0:00:00.067767) +- INFO - ----- add-amr-leaf-for-reclassified-concept: 33/33 new triples (739, 0:00:00.047631) +- INFO - ----- add-amr-leaf-for-reified-concept: 8/8 new triples (747, 0:00:00.034005) +- INFO - ----- add-amr-edge-for-core-relation: 27/27 new triples (774, 0:00:00.116606) +- INFO - ----- add-amr-edge-for-reified-concept: 12/12 new triples (786, 0:00:00.142827) +- INFO - ----- add-amr-edge-for-name-relation: 5/5 new triples (791, 0:00:00.080437) +- DEBUG - ----- add-value-for-quant-relation: 0/0 new triple (791, 0:00:00.168916) +- INFO - ----- add-amr-edge-for-polarity-relation: 5/5 new triples (796, 0:00:00.085452) +- INFO - ----- update-amr-edge-role-1: 15/15 new triples (811, 0:00:00.093294) +- INFO - ----- add-amr-root: 5/5 new triples (816, 0:00:00.025947) - DEBUG - --- Serializing graph to tenet.tetras-libre.fr_demo_01_preprocessing - DEBUG - ----- step: preprocessing - DEBUG - ----- id: https://tenet.tetras-libre.fr/demo/01/ @@ -98,71 +98,74 @@ - INFO - ----- 218 triples extracted during preprocessing step - INFO - -- Applying extraction step: transduction - INFO - --- *** February Transduction *** Sequence: atomic extraction sequence -- INFO - ----- extract atom classes: 30/30 new triples (846, 0:00:00.216496) -- INFO - ----- extract atom individuals: 8/8 new triples (854, 0:00:00.066344) -- INFO - ----- extract atomic properties: 75/75 new triples (929, 0:00:00.298111) -- INFO - ----- extract atom values: 10/10 new triples (939, 0:00:00.071351) -- INFO - ----- extract atom phenomena: 14/14 new triples (953, 0:00:00.100322) -- INFO - ----- propagate atom relations: 24/68 new triples (977, 0:00:01.445146) +- INFO - ----- extract atom classes: 30/30 new triples (846, 0:00:00.169751) +- INFO - ----- extract atom individuals: 8/8 new triples (854, 0:00:00.045202) +- INFO - ----- extract atomic properties: 75/75 new triples (929, 0:00:00.220864) +- INFO - ----- extract atom values: 10/10 new triples (939, 0:00:00.053945) +- INFO - ----- extract atom phenomena: 14/14 new triples (953, 0:00:00.077999) +- INFO - ----- propagate atom relations: 24/68 new triples (977, 0:00:01.051146) - INFO - --- *** February Transduction *** Sequence: classification sequence (1) -- DEBUG - ----- classify modality phenomena: 0/0 new triple (977, 0:00:00.024688) -- INFO - ----- reclassify argument property to class: 11/14 new triples (988, 0:00:00.073941) +- DEBUG - ----- classify modality phenomena: 0/0 new triple (977, 0:00:00.022915) +- INFO - ----- reclassify argument property to class: 11/14 new triples (988, 0:00:00.072621) - INFO - --- *** February Transduction *** Sequence: phenomena analyze sequence (1) -- INFO - ----- analyze "polarity" phenomena (1): 32/36 new triples (1020, 0:00:00.103744) -- DEBUG - ----- analyze "polarity" phenomena (2): 0/0 new triple (1020, 0:00:00.012976) -- DEBUG - ----- analyze "polarity" phenomena (3): 0/0 new triple (1020, 0:00:00.013348) -- DEBUG - ----- analyze "polarity" phenomena (4): 0/0 new triple (1020, 0:00:00.029727) -- DEBUG - ----- analyze "polarity" phenomena (5): 0/0 new triple (1020, 0:00:00.037221) -- DEBUG - ----- analyze modifier phenomena (mod): 0/0 new triple (1020, 0:00:00.008403) -- DEBUG - ----- classify modality phenomena: 0/0 new triple (1020, 0:00:00.019072) +- INFO - ----- analyze "polarity" phenomena (1): 32/36 new triples (1020, 0:00:00.105395) +- DEBUG - ----- analyze "polarity" phenomena (2): 0/0 new triple (1020, 0:00:00.014670) +- DEBUG - ----- analyze "polarity" phenomena (3): 0/0 new triple (1020, 0:00:00.019251) +- DEBUG - ----- analyze "polarity" phenomena (4): 0/0 new triple (1020, 0:00:00.031005) +- DEBUG - ----- analyze "polarity" phenomena (5): 0/0 new triple (1020, 0:00:00.029724) +- DEBUG - ----- analyze modifier phenomena (mod): 0/0 new triple (1020, 0:00:00.009488) +- DEBUG - ----- classify modality phenomena: 0/0 new triple (1020, 0:00:00.018402) - INFO - --- *** February Transduction *** Sequence: phenomena analyze sequence (2) -- INFO - ----- analyze "or" phenomena (1): 1/1 new triple (1021, 0:00:00.082001) -- INFO - ----- analyze "or" phenomena (2): 55/82 new triples (1076, 0:00:00.266848) -- INFO - ----- analyze "and" phenomena (1): 2/14 new triples (1078, 0:00:00.205857) -- DEBUG - ----- analyze "and" phenomena (2): 0/0 new triple (1078, 0:00:00.015402) +- INFO - ----- analyze "or" phenomena (1): 1/1 new triple (1021, 0:00:00.081188) +- INFO - ----- analyze "or" phenomena (2): 55/82 new triples (1076, 0:00:00.293218) +- INFO - ----- analyze "and" phenomena (1): 2/14 new triples (1078, 0:00:00.170594) +- DEBUG - ----- analyze "and" phenomena (2): 0/0 new triple (1078, 0:00:00.010628) - INFO - --- *** February Transduction *** Sequence: composite class extraction sequence -- INFO - ----- extract composite classes (1): 127/133 new triples (1205, 0:00:00.490823) -- DEBUG - ----- extract composite classes (2): 0/0 new triple (1205, 0:00:00.024752) +- INFO - ----- extract composite classes (1): 127/138 new triples (1205, 0:00:00.529900) +- DEBUG - ----- extract composite classes (2): 0/0 new triple (1205, 0:00:00.033513) - INFO - --- *** February Transduction *** Sequence: classification sequence (2) -- INFO - ----- classify class net as entity (1): 10/181 new triples (1215, 0:00:00.340942) +- INFO - ----- classify class net as entity from core arguments: 10/181 new triples (1215, 0:00:00.315279) +- DEBUG - ----- classify class net as entity from part relation: 0/0 new triple (1215, 0:00:00.010186) +- DEBUG - ----- classify class net as entity from degree arguments: 0/362 new triple (1215, 0:00:00.515378) +- INFO - ----- classify class net as mother from domain argument: 5/34 new triples (1220, 0:00:00.083868) - DEBUG - --- Serializing graph to tenet.tetras-libre.fr_demo_01_transduction - DEBUG - ----- step: transduction - DEBUG - ----- id: https://tenet.tetras-libre.fr/demo/01/ - DEBUG - ----- work_file: /home/lamenji/Workspace/Tetras/tenet/tests/main_tests/test_owl_output/SolarSystemDev01-20230526/technical-data/tenet.tetras-libre.fr_demo_01-0/tenet.tetras-libre.fr_demo_01_transduction.ttl - DEBUG - ----- base: http://https://tenet.tetras-libre.fr/demo/01//transduction -- INFO - ----- 399 triples extracted during transduction step +- INFO - ----- 404 triples extracted during transduction step - INFO - -- Applying extraction step: generation - INFO - --- *** February Transduction *** Sequence: class_generation_sequence -- INFO - ----- generate OWL class: 31/31 new triples (1246, 0:00:00.455186) +- INFO - ----- generate OWL class: 32/35 new triples (1252, 0:00:00.374151) - INFO - --- *** February Transduction *** Sequence: property_generation_sequence -- INFO - ----- generate OWL property: 29/29 new triples (1275, 0:00:00.387736) +- INFO - ----- generate OWL property: 29/29 new triples (1281, 0:00:00.344631) - INFO - --- *** November Transduction *** Sequence: main-generation-sequence -- DEBUG - ----- generate-individual: 0/0 new triple (1275, 0:00:00.012749) -- DEBUG - ----- classify-individual-1: 0/0 new triple (1275, 0:00:00.009065) -- DEBUG - ----- classify-individual-2: 0/0 new triple (1275, 0:00:00.012780) -- DEBUG - ----- generate-atom-property-1: 0/0 new triple (1275, 0:00:00.011774) -- DEBUG - ----- generate-atom-property-12: 0/0 new triple (1275, 0:00:00.012191) -- DEBUG - ----- generate-inverse-relation: 0/0 new triple (1275, 0:00:00.009183) -- DEBUG - ----- generate-composite-class: 0/0 new triple (1275, 0:00:00.016291) -- DEBUG - ----- add-restriction-to-class-1: 0/0 new triple (1275, 0:00:00.031258) -- DEBUG - ----- add-restriction-to-class-2: 0/0 new triple (1275, 0:00:00.017814) -- DEBUG - ----- add-restriction-to-class-3: 0/0 new triple (1275, 0:00:00.022112) -- DEBUG - ----- add-restriction-to-class-4: 0/0 new triple (1275, 0:00:00.019879) -- DEBUG - ----- add-restriction-to-class-5: 0/0 new triple (1275, 0:00:00.021348) -- DEBUG - ----- add-restriction-to-class-6: 0/0 new triple (1275, 0:00:00.017861) +- DEBUG - ----- generate-individual: 0/0 new triple (1281, 0:00:00.010164) +- DEBUG - ----- classify-individual-1: 0/0 new triple (1281, 0:00:00.009970) +- DEBUG - ----- classify-individual-2: 0/0 new triple (1281, 0:00:00.009374) +- DEBUG - ----- generate-atom-property-1: 0/0 new triple (1281, 0:00:00.013099) +- DEBUG - ----- generate-atom-property-12: 0/0 new triple (1281, 0:00:00.007817) +- DEBUG - ----- generate-inverse-relation: 0/0 new triple (1281, 0:00:00.006800) +- DEBUG - ----- generate-composite-class: 0/0 new triple (1281, 0:00:00.010417) +- DEBUG - ----- add-restriction-to-class-1: 0/0 new triple (1281, 0:00:00.018832) +- DEBUG - ----- add-restriction-to-class-2: 0/0 new triple (1281, 0:00:00.014955) +- DEBUG - ----- add-restriction-to-class-3: 0/0 new triple (1281, 0:00:00.015434) +- DEBUG - ----- add-restriction-to-class-4: 0/0 new triple (1281, 0:00:00.012755) +- DEBUG - ----- add-restriction-to-class-5: 0/0 new triple (1281, 0:00:00.015014) +- DEBUG - ----- add-restriction-to-class-6: 0/0 new triple (1281, 0:00:00.015334) - DEBUG - --- Serializing graph to tenet.tetras-libre.fr_demo_01_generation - DEBUG - ----- step: generation - DEBUG - ----- id: https://tenet.tetras-libre.fr/demo/01/ - DEBUG - ----- work_file: /home/lamenji/Workspace/Tetras/tenet/tests/main_tests/test_owl_output/SolarSystemDev01-20230526/technical-data/tenet.tetras-libre.fr_demo_01-0/tenet.tetras-libre.fr_demo_01_generation.ttl - DEBUG - ----- base: http://https://tenet.tetras-libre.fr/demo/01//generation -- INFO - ----- 60 triples extracted during generation step +- INFO - ----- 61 triples extracted during generation step - DEBUG - --- Serializing graph to factoid file (/home/lamenji/Workspace/Tetras/tenet/tests/main_tests/test_owl_output/SolarSystemDev01-20230526/technical-data/tenet.tetras-libre.fr_demo_01-0/tenet.tetras-libre.fr_demo_01_factoid.ttl) -- DEBUG - ----- Number of factoids: 60 +- DEBUG - ----- Number of factoids: 64 - DEBUG - ----- Graph base: http://https://tenet.tetras-libre.fr/demo/01//factoid - INFO - === Final Ontology Generation === - INFO - -- Making complete factoid graph by merging the result factoids -- INFO - ----- Total factoid number: 60 +- INFO - ----- Total factoid number: 64 - INFO - -- Serializing graph to factoid string - INFO - ----- Graph base: http://https://tenet.tetras-libre.fr/demo/01//factoid - INFO - -- Serializing graph to factoid file diff --git a/tests/main_tests/test_owl_output/SolarSystemDev01-20230526/technical-data/tenet.tetras-libre.fr_demo_01-0/tenet.tetras-libre.fr_demo_01_factoid.ttl b/tests/main_tests/test_owl_output/SolarSystemDev01-20230526/technical-data/tenet.tetras-libre.fr_demo_01-0/tenet.tetras-libre.fr_demo_01_factoid.ttl index 60a4be30..6bfa1b38 100644 --- a/tests/main_tests/test_owl_output/SolarSystemDev01-20230526/technical-data/tenet.tetras-libre.fr_demo_01-0/tenet.tetras-libre.fr_demo_01_factoid.ttl +++ b/tests/main_tests/test_owl_output/SolarSystemDev01-20230526/technical-data/tenet.tetras-libre.fr_demo_01-0/tenet.tetras-libre.fr_demo_01_factoid.ttl @@ -77,6 +77,7 @@ <https://tenet.tetras-libre.fr/extract-result#system> a owl:Class ; rdfs:label "system" ; - rdfs:subClassOf ns1:Entity ; + rdfs:subClassOf ns1:Entity, + ns1:Undetermined_Thing ; ns1:fromStructure "SSC-01-01" . diff --git a/tests/main_tests/test_owl_output/SolarSystemDev01-20230526/technical-data/tenet.tetras-libre.fr_demo_01-0/tenet.tetras-libre.fr_demo_01_generation.ttl b/tests/main_tests/test_owl_output/SolarSystemDev01-20230526/technical-data/tenet.tetras-libre.fr_demo_01-0/tenet.tetras-libre.fr_demo_01_generation.ttl index fc50bdf5..e1806eed 100644 --- a/tests/main_tests/test_owl_output/SolarSystemDev01-20230526/technical-data/tenet.tetras-libre.fr_demo_01-0/tenet.tetras-libre.fr_demo_01_generation.ttl +++ b/tests/main_tests/test_owl_output/SolarSystemDev01-20230526/technical-data/tenet.tetras-libre.fr_demo_01-0/tenet.tetras-libre.fr_demo_01_generation.ttl @@ -372,9 +372,6 @@ ns2:root a owl:AnnotationProperty . sys:Event a owl:Class ; rdfs:subClassOf sys:Out_Structure . -sys:Undetermined_Thing a owl:Class ; - rdfs:subClassOf sys:Out_Structure . - sys:fromStructure a owl:AnnotationProperty ; rdfs:subPropertyOf sys:Out_AnnotationProperty . @@ -572,7 +569,8 @@ net:compositeClass_object-orbit-hasManner-not-direct-sun_o a net:Composite_Class net:hasRestriction net:restriction_orbit-hasManner-not-direct-sun_o2 ; net:hasStructure "SSC-01-01" . -net:compositeClass_system-hasPart-object_s a net:Composite_Class_Net ; +net:compositeClass_system-hasPart-object_s a net:Class_Net, + net:Composite_Class_Net ; :role_domain net:atomClass_system_p, net:individual_SolarSystem_p ; net:composeFrom net:atomClass_object_o, @@ -582,12 +580,14 @@ net:compositeClass_system-hasPart-object_s a net:Composite_Class_Net ; net:coverNode :leaf_hasPart_p9, :leaf_object_o, :leaf_system_s ; - net:hasMotherClassNet net:atomClass_system_s ; + net:hasMotherClassNet net:atomClass_system_p, + net:atomClass_system_s ; net:hasNaming "system-hasPart-object" ; net:hasRestriction net:restriction_hasPart-object_p9 ; net:hasStructure "SSC-01-01" . -net:compositeClass_system-hasPart-sun_s a net:Composite_Class_Net ; +net:compositeClass_system-hasPart-sun_s a net:Class_Net, + net:Composite_Class_Net ; :role_domain net:atomClass_system_p, net:individual_SolarSystem_p ; net:composeFrom net:atomClass_sun_s2, @@ -597,7 +597,8 @@ net:compositeClass_system-hasPart-sun_s a net:Composite_Class_Net ; net:coverNode :leaf_hasPart_p9, :leaf_sun_s2, :leaf_system_s ; - net:hasMotherClassNet net:atomClass_system_s ; + net:hasMotherClassNet net:atomClass_system_p, + net:atomClass_system_s ; net:hasNaming "system-hasPart-sun" ; net:hasRestriction net:restriction_hasPart-sun_p9 ; net:hasStructure "SSC-01-01" . @@ -885,6 +886,9 @@ sys:Feature a owl:Class ; sys:Out_AnnotationProperty a owl:AnnotationProperty . +sys:Undetermined_Thing a owl:Class ; + rdfs:subClassOf sys:Out_Structure . + <https://tenet.tetras-libre.fr/extract-result#gravitation> a owl:Class ; rdfs:label "gravitation" ; rdfs:subClassOf sys:Entity ; @@ -1148,7 +1152,8 @@ ns2:or a ns2:Concept ; <https://tenet.tetras-libre.fr/extract-result#system> a owl:Class ; rdfs:label "system" ; - rdfs:subClassOf sys:Entity ; + rdfs:subClassOf sys:Entity, + sys:Undetermined_Thing ; sys:fromStructure "SSC-01-01" . net:Phenomena_Net a owl:Class ; @@ -1340,15 +1345,6 @@ ns3:FrameRole a ns2:Role, rdfs:subClassOf :AMR_Core_Role ; :label "ARG1" . -net:atomClass_system_p a net:Atom_Class_Net, - net:Deprecated_Net ; - :role_name net:value_SolarSystem_blankNode ; - net:coverBaseNode :leaf_system_p ; - net:coverNode :leaf_system_p ; - net:hasClassName "system" ; - net:hasNaming "system" ; - net:hasStructure "SSC-01-01" . - net:atomProperty_direct_d a net:Atom_Property_Net ; net:coverBaseNode :leaf_direct-02_d ; net:coverNode :leaf_direct-02_d ; @@ -1472,9 +1468,6 @@ rdf:Property a owl:Class . :hasConcept :concept_direct-02 ; :hasVariable :variable_d . -net:Class_Net a owl:Class ; - rdfs:subClassOf net:Net . - net:Deprecated_Net a owl:Class ; rdfs:subClassOf net:Net . @@ -1484,6 +1477,15 @@ net:Relation a owl:Class ; net:Restriction_Net a owl:Class ; rdfs:subClassOf net:Net . +net:atomClass_system_p a net:Atom_Class_Net, + net:Deprecated_Net ; + :role_name net:value_SolarSystem_blankNode ; + net:coverBaseNode :leaf_system_p ; + net:coverNode :leaf_system_p ; + net:hasClassName "system" ; + net:hasNaming "system" ; + net:hasStructure "SSC-01-01" . + :leaf_hasPart_p9 a :AMR_Leaf ; :edge_p9_ARG0_s :leaf_system_s ; :edge_p9_ARG1_a :leaf_and_a ; @@ -1509,6 +1511,9 @@ net:has_object a owl:AnnotationProperty ; :AMR_Op_Role a owl:Class ; rdfs:subClassOf :AMR_Role . +net:Class_Net a owl:Class ; + rdfs:subClassOf net:Net . + net:Net a owl:Class ; rdfs:subClassOf net:Net_Structure . @@ -1521,6 +1526,7 @@ net:atomClass_system_s a net:Atom_Class_Net, net:coverNode :leaf_system_s ; net:hasClassName "system" ; net:hasClassType sys:Entity ; + net:hasMotherClassNet net:atomClass_system_p ; net:hasNaming "system" ; net:hasStructure "SSC-01-01" . diff --git a/tests/main_tests/test_owl_output/SolarSystemDev01-20230526/technical-data/tenet.tetras-libre.fr_demo_01-0/tenet.tetras-libre.fr_demo_01_transduction.ttl b/tests/main_tests/test_owl_output/SolarSystemDev01-20230526/technical-data/tenet.tetras-libre.fr_demo_01-0/tenet.tetras-libre.fr_demo_01_transduction.ttl index dfc17285..c93a42d6 100644 --- a/tests/main_tests/test_owl_output/SolarSystemDev01-20230526/technical-data/tenet.tetras-libre.fr_demo_01-0/tenet.tetras-libre.fr_demo_01_transduction.ttl +++ b/tests/main_tests/test_owl_output/SolarSystemDev01-20230526/technical-data/tenet.tetras-libre.fr_demo_01-0/tenet.tetras-libre.fr_demo_01_transduction.ttl @@ -515,7 +515,8 @@ net:compositeClass_object-orbit-hasManner-not-direct-sun_o a net:Composite_Class net:hasRestriction net:restriction_orbit-hasManner-not-direct-sun_o2 ; net:hasStructure "SSC-01-01" . -net:compositeClass_system-hasPart-object_s a net:Composite_Class_Net ; +net:compositeClass_system-hasPart-object_s a net:Class_Net, + net:Composite_Class_Net ; :role_domain net:atomClass_system_p, net:individual_SolarSystem_p ; net:composeFrom net:atomClass_object_o, @@ -525,12 +526,14 @@ net:compositeClass_system-hasPart-object_s a net:Composite_Class_Net ; net:coverNode :leaf_hasPart_p9, :leaf_object_o, :leaf_system_s ; - net:hasMotherClassNet net:atomClass_system_s ; + net:hasMotherClassNet net:atomClass_system_p, + net:atomClass_system_s ; net:hasNaming "system-hasPart-object" ; net:hasRestriction net:restriction_hasPart-object_p9 ; net:hasStructure "SSC-01-01" . -net:compositeClass_system-hasPart-sun_s a net:Composite_Class_Net ; +net:compositeClass_system-hasPart-sun_s a net:Class_Net, + net:Composite_Class_Net ; :role_domain net:atomClass_system_p, net:individual_SolarSystem_p ; net:composeFrom net:atomClass_sun_s2, @@ -540,7 +543,8 @@ net:compositeClass_system-hasPart-sun_s a net:Composite_Class_Net ; net:coverNode :leaf_hasPart_p9, :leaf_sun_s2, :leaf_system_s ; - net:hasMotherClassNet net:atomClass_system_s ; + net:hasMotherClassNet net:atomClass_system_p, + net:atomClass_system_s ; net:hasNaming "system-hasPart-sun" ; net:hasRestriction net:restriction_hasPart-sun_p9 ; net:hasStructure "SSC-01-01" . @@ -1265,15 +1269,6 @@ ns3:FrameRole a ns2:Role, rdfs:subClassOf :AMR_Core_Role ; :label "ARG1" . -net:atomClass_system_p a net:Atom_Class_Net, - net:Deprecated_Net ; - :role_name net:value_SolarSystem_blankNode ; - net:coverBaseNode :leaf_system_p ; - net:coverNode :leaf_system_p ; - net:hasClassName "system" ; - net:hasNaming "system" ; - net:hasStructure "SSC-01-01" . - net:atomProperty_direct_d a net:Atom_Property_Net ; net:coverBaseNode :leaf_direct-02_d ; net:coverNode :leaf_direct-02_d ; @@ -1400,9 +1395,6 @@ rdf:Property a owl:Class . :hasConcept :concept_direct-02 ; :hasVariable :variable_d . -net:Class_Net a owl:Class ; - rdfs:subClassOf net:Net . - net:Deprecated_Net a owl:Class ; rdfs:subClassOf net:Net . @@ -1412,6 +1404,15 @@ net:Relation a owl:Class ; net:Restriction_Net a owl:Class ; rdfs:subClassOf net:Net . +net:atomClass_system_p a net:Atom_Class_Net, + net:Deprecated_Net ; + :role_name net:value_SolarSystem_blankNode ; + net:coverBaseNode :leaf_system_p ; + net:coverNode :leaf_system_p ; + net:hasClassName "system" ; + net:hasNaming "system" ; + net:hasStructure "SSC-01-01" . + :leaf_hasPart_p9 a :AMR_Leaf ; :edge_p9_ARG0_s :leaf_system_s ; :edge_p9_ARG1_a :leaf_and_a ; @@ -1435,6 +1436,9 @@ net:has_object a owl:AnnotationProperty ; :AMR_Op_Role a owl:Class ; rdfs:subClassOf :AMR_Role . +net:Class_Net a owl:Class ; + rdfs:subClassOf net:Net . + net:Net a owl:Class ; rdfs:subClassOf net:Net_Structure . @@ -1447,6 +1451,7 @@ net:atomClass_system_s a net:Atom_Class_Net, net:coverNode :leaf_system_s ; net:hasClassName "system" ; net:hasClassType sys:Entity ; + net:hasMotherClassNet net:atomClass_system_p ; net:hasNaming "system" ; net:hasStructure "SSC-01-01" . -- GitLab