Skip to content
Snippets Groups Projects
Commit 2355cef6 authored by Aurélien Lamercerie's avatar Aurélien Lamercerie
Browse files

Update atom relation propagation in AMR rule

parent dd1a2a95
Branches
Tags
No related merge requests found
Showing
with 3281 additions and 94 deletions
......@@ -12,6 +12,7 @@ from scheme.amr_clara_rule.transduction.composite_class_extractor_1 import *
from scheme.amr_clara_rule.transduction.composite_class_extractor_2 import *
from scheme.amr_clara_rule.transduction.phenomena_polarity_analyzer_1 import *
from scheme.amr_clara_rule.transduction.phenomena_polarity_analyzer_2 import *
from scheme.amr_clara_rule.transduction.phenomena_mod_analyzer_1 import *
from scheme.amr_clara_rule.transduction.phenomena_or_analyzer_1 import *
from scheme.amr_clara_rule.transduction.phenomena_or_analyzer_2 import *
......
......@@ -153,12 +153,12 @@ def extract_atom_individual(graph):
# -- Rule Initialization
rule_label = 'extract atom individuals'
rule_triple_list = []
# -- Search for patterns
_, pattern_set = __search_pattern(graph)
# -- Pattern Analysis
rule_triple_list = []
for pattern in pattern_set:
# -- New Net Construction (from 3 nets)
......
......@@ -32,10 +32,11 @@ def __search_pattern(graph):
# Useful Additional Search
#==============================================================================
def __search_leaf_in_relation(graph, base_leaf_uri):
def __search_leaf_in_leaf_relation(graph, base_leaf_uri):
select_data_list = ['?inRelationRole', '?inNet']
clause_list = [f'?inNet a [rdfs:subClassOf* net:Net].',
f'?inNet net:coverBaseNode ?inLeaf.',
f'?inLeaf a amr:AMR_Leaf.',
('?inLeaf', '?relation', base_leaf_uri),
f'?relation amr:hasAmrRole ?inRelationRole.']
query_code = generate_select_query(graph, select_data_list, clause_list)
......@@ -43,10 +44,23 @@ def __search_leaf_in_relation(graph, base_leaf_uri):
return query_code, result_set
def __search_leaf_out_relation(graph, base_leaf_uri):
def __search_leaf_in_value_relation(graph, base_leaf_uri):
select_data_list = ['?inRelationRole', '?inNet']
clause_list = [f'?inNet a [rdfs:subClassOf* net:Net].',
f'?inNet net:coverAmrValue ?inValue.',
f'?inValue a amr:AMR_Value.',
('?inValue', '?relation', base_leaf_uri),
f'?relation amr:hasAmrRole ?inRelationRole.']
query_code = generate_select_query(graph, select_data_list, clause_list)
result_set = graph.query(query_code)
return query_code, result_set
def __search_leaf_out_leaf_relation(graph, base_leaf_uri):
select_data_list = ['?outRelationRole', '?outNet']
clause_list = [f'?outNet a [rdfs:subClassOf* net:Net].',
f'?outNet net:coverBaseNode ?outLeaf.',
f'?outLeaf a amr:AMR_Leaf.',
(base_leaf_uri, '?relation', '?outLeaf'),
f'?relation amr:hasAmrRole ?outRelationRole.']
query_code = generate_select_query(graph, select_data_list, clause_list)
......@@ -54,17 +68,39 @@ def __search_leaf_out_relation(graph, base_leaf_uri):
return query_code, result_set
def __search_leaf_out_value_relation(graph, base_leaf_uri):
select_data_list = ['?outRelationRole', '?outNet']
clause_list = [f'?outNet a [rdfs:subClassOf* net:Net].',
f'?outNet net:coverAmrValue ?outValue.',
f'?outValue a amr:AMR_Value.',
(base_leaf_uri, '?relation', '?outValue'),
f'?relation amr:hasAmrRole ?outRelationRole.']
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)
#==============================================================================
def __propagate_relation(graph, target_net, base_leaf):
_, in_relation_set = __search_leaf_in_relation(graph, base_leaf)
for row in in_relation_set:
# -- In Relation Propagation
_, in_relation_set_1 = __search_leaf_in_leaf_relation(graph, base_leaf)
for row in in_relation_set_1:
target_net.input_relation_list += [(row.inNet, row.inRelationRole, _)]
_, in_relation_set_2 = __search_leaf_in_value_relation(graph, base_leaf)
for row in in_relation_set_2:
target_net.input_relation_list += [(row.inNet, row.inRelationRole, _)]
_, out_relation_set = __search_leaf_out_relation(graph, base_leaf)
for row in out_relation_set:
# -- Out Relation Propagation
_, out_relation_set_1 = __search_leaf_out_leaf_relation(graph, base_leaf)
for row in out_relation_set_1:
target_net.output_relation_list += [(_, row.outRelationRole, row.outNet)]
_, out_relation_set_2 = __search_leaf_out_value_relation(graph, base_leaf)
for row in out_relation_set_2:
target_net.output_relation_list += [(_, row.outRelationRole, row.outNet)]
......
......@@ -21,7 +21,7 @@ from transduction.naming_computer import define_composite_naming_1, define_restr
#==============================================================================
def __search_pattern(graph):
select_data_list = ['?valueLabel']
select_data_list = ['?value', '?valueLabel']
clause_list = [f'?value a amr:AMR_Value.',
f'?value rdfs:label ?valueLabel.']
query_code = generate_select_query(graph, select_data_list, clause_list)
......@@ -102,13 +102,13 @@ def __define_naming(value_label):
# Construct Method(s)
#==============================================================================
def __construct_value_net(
graph, value_label):
def __construct_value_net(graph, amr_value, value_label):
# -- Net Composition
value_net = net.ValueNet(graph)
# -- Data Computation
value_net.amr_value = amr_value
value_net.value_label = value_label
value_net.structure = __get_structure(graph)
......@@ -140,7 +140,7 @@ def extract_atom_value(graph):
for pattern in pattern_set:
# -- New Net Construction (from 3 nets)
new_class, triple_list = __construct_value_net(graph, pattern.valueLabel)
new_class, triple_list = __construct_value_net(graph, pattern.value, pattern.valueLabel)
# -- Resulting List Update
# class_net_list.append(new_class)
......
......@@ -153,12 +153,12 @@ def extract_atom_individual(graph):
# -- Rule Initialization
rule_label = 'extract atom individuals'
rule_triple_list = []
# -- Search for patterns
_, pattern_set = __search_pattern(graph)
# -- Selection Analyzing (1)
rule_triple_list = []
# -- Pattern Analysis
for pattern in pattern_set:
# -- New Net Construction (from 3 nets)
......
......@@ -32,10 +32,11 @@ def __search_pattern(graph):
# Useful Additional Search
#==============================================================================
def __search_leaf_in_relation(graph, base_leaf_uri):
def __search_leaf_in_leaf_relation(graph, base_leaf_uri):
select_data_list = ['?inRelationRole', '?inNet']
clause_list = [f'?inNet a [rdfs:subClassOf* net:Net].',
f'?inNet net:coverBaseNode ?inLeaf.',
f'?inLeaf a amr:AMR_Leaf.',
('?inLeaf', '?relation', base_leaf_uri),
f'?relation amr:hasAmrRole ?inRelationRole.']
query_code = generate_select_query(graph, select_data_list, clause_list)
......@@ -43,10 +44,23 @@ def __search_leaf_in_relation(graph, base_leaf_uri):
return query_code, result_set
def __search_leaf_out_relation(graph, base_leaf_uri):
def __search_leaf_in_value_relation(graph, base_leaf_uri):
select_data_list = ['?inRelationRole', '?inNet']
clause_list = [f'?inNet a [rdfs:subClassOf* net:Net].',
f'?inNet net:coverAmrValue ?inValue.',
f'?inValue a amr:AMR_Value.',
('?inValue', '?relation', base_leaf_uri),
f'?relation amr:hasAmrRole ?inRelationRole.']
query_code = generate_select_query(graph, select_data_list, clause_list)
result_set = graph.query(query_code)
return query_code, result_set
def __search_leaf_out_leaf_relation(graph, base_leaf_uri):
select_data_list = ['?outRelationRole', '?outNet']
clause_list = [f'?outNet a [rdfs:subClassOf* net:Net].',
f'?outNet net:coverBaseNode ?outLeaf.',
f'?outLeaf a amr:AMR_Leaf.',
(base_leaf_uri, '?relation', '?outLeaf'),
f'?relation amr:hasAmrRole ?outRelationRole.']
query_code = generate_select_query(graph, select_data_list, clause_list)
......@@ -54,17 +68,39 @@ def __search_leaf_out_relation(graph, base_leaf_uri):
return query_code, result_set
def __search_leaf_out_value_relation(graph, base_leaf_uri):
select_data_list = ['?outRelationRole', '?outNet']
clause_list = [f'?outNet a [rdfs:subClassOf* net:Net].',
f'?outNet net:coverAmrValue ?outValue.',
f'?outValue a amr:AMR_Value.',
(base_leaf_uri, '?relation', '?outValue'),
f'?relation amr:hasAmrRole ?outRelationRole.']
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)
#==============================================================================
def __propagate_relation(graph, target_net, base_leaf):
_, in_relation_set = __search_leaf_in_relation(graph, base_leaf)
for row in in_relation_set:
# -- In Relation Propagation
_, in_relation_set_1 = __search_leaf_in_leaf_relation(graph, base_leaf)
for row in in_relation_set_1:
target_net.input_relation_list += [(row.inNet, row.inRelationRole, _)]
_, in_relation_set_2 = __search_leaf_in_value_relation(graph, base_leaf)
for row in in_relation_set_2:
target_net.input_relation_list += [(row.inNet, row.inRelationRole, _)]
_, out_relation_set = __search_leaf_out_relation(graph, base_leaf)
for row in out_relation_set:
# -- Out Relation Propagation
_, out_relation_set_1 = __search_leaf_out_leaf_relation(graph, base_leaf)
for row in out_relation_set_1:
target_net.output_relation_list += [(_, row.outRelationRole, row.outNet)]
_, out_relation_set_2 = __search_leaf_out_value_relation(graph, base_leaf)
for row in out_relation_set_2:
target_net.output_relation_list += [(_, row.outRelationRole, row.outNet)]
......
......@@ -21,7 +21,7 @@ from transduction.naming_computer import define_composite_naming_1, define_restr
#==============================================================================
def __search_pattern(graph):
select_data_list = ['?valueLabel']
select_data_list = ['?value', '?valueLabel']
clause_list = [f'?value a amr:AMR_Value.',
f'?value rdfs:label ?valueLabel.']
query_code = generate_select_query(graph, select_data_list, clause_list)
......@@ -102,13 +102,13 @@ def __define_naming(value_label):
# Construct Method(s)
#==============================================================================
def __construct_value_net(
graph, value_label):
def __construct_value_net(graph, amr_value, value_label):
# -- Net Composition
value_net = net.ValueNet(graph)
# -- Data Computation
value_net.amr_value = amr_value
value_net.value_label = value_label
value_net.structure = __get_structure(graph)
......@@ -140,7 +140,7 @@ def extract_atom_value(graph):
for pattern in pattern_set:
# -- New Net Construction (from 3 nets)
new_class, triple_list = __construct_value_net(graph, pattern.valueLabel)
new_class, triple_list = __construct_value_net(graph, pattern.value, pattern.valueLabel)
# -- Resulting List Update
# class_net_list.append(new_class)
......
......@@ -176,10 +176,12 @@ atomic_extraction_sequence = ['atomic extraction sequence',
rule.extract_atom_property,
rule.extract_atom_value,
rule.extract_atom_phenomena,
rule.propagate_atom_relation]
rule.propagate_atom_relation
]
phenomena_analyze_sequence_1 = ['phenomena analyze sequence (1)',
rule.analyze_phenomena_polarity_1,
rule.analyze_phenomena_polarity_2,
rule.analyze_phenomena_mod_1
]
......
......@@ -388,10 +388,20 @@ ns1:Role rdf:type owl:Class ;
### https://amr.tetras-libre.fr/rdf/schema#phenomena_modality_possible
:phenomena_modality_possible rdf:type owl:Class ;
rdfs:subClassOf :phenomena_modality ;
:hasConceptLink "possible-01", "permit-01", "likely-01", "grant-01", "allow-01" ;
:hasConceptLink "allow-01" ,
"grant-01" ,
"likely-01" ,
"permit-01" ,
"possible-01" ;
:label "possible-modality" .
### https://amr.tetras-libre.fr/rdf/schema#phenomena_modality_prohibition
:phenomena_modality_prohibition rdf:type owl:Class ;
rdfs:subClassOf :phenomena_modality ;
:label "prohibition-modality" .
### https://amr.tetras-libre.fr/rdf/schema#relation_domain
:relation_domain rdf:type owl:Class ;
rdfs:subClassOf :AMR_Relation ;
......
......@@ -34,7 +34,8 @@ class ValueNet(Net):
self.type_uri = f'net:{self.type_id}'
# -- Net Attributes
self.attr_list += ['value_label']
self.attr_list += ['amr_value', 'value_label']
self._amr_value = None
self._value_label = None
......@@ -42,6 +43,16 @@ class ValueNet(Net):
# Accessors for Net Attributes
#--------------------------------------------------------------------------
@property
def amr_value(self):
if self._amr_value is None:
self._amr_value = self.get_value_list_from_graph('_amr_value')
return self._amr_value
@amr_value.setter
def amr_value(self, new_value):
self._amr_value = self.set_attribute_value_list(new_value, produce_uriref)
@property
def value_label(self):
if self._value_label is None:
......
......@@ -55,6 +55,7 @@ class SemanticNetReferenceHandle:
'individual_label': 'hasIndividualLabel',
# Value Net
'amr_value': 'coverAmrValue',
'value_label': 'hasValueLabel',
# Phenomena Net
......
......@@ -664,16 +664,6 @@ net:unary_list a owl:Class ;
rdfs:label "unary-list" ;
rdfs:subClassOf net:list .
net:value_SolarSystem_blankNode a net:Value_Net ;
net:hasNaming "SolarSystem" ;
net:hasStructure "SSC-01-01" ;
net:hasValueLabel "Solar System" .
net:value_negative_blankNode a net:Value_Net ;
net:hasNaming "negative" ;
net:hasStructure "SSC-01-01" ;
net:hasValueLabel "negative" .
net:verbClass a owl:AnnotationProperty ;
rdfs:label "verb class" ;
rdfs:subPropertyOf net:objectValue .
......@@ -757,17 +747,16 @@ ns2:AMR a owl:Class ;
:toReifyWithBaseEdge "ARG0" ;
:toReifyWithHeadEdge "ARG1" .
:role_name a owl:Class ;
:role_name a owl:Class,
net:Relation ;
rdfs:subClassOf :AMR_NonCore_Role ;
:label "name" .
:role_polarity a owl:Class ;
:role_polarity a owl:Class,
net:Relation ;
rdfs:subClassOf :AMR_Specific_Role ;
:label "polarity" .
:value_SolarSystem a :AMR_Value ;
rdfs:label "Solar System" .
:variable_a a :AMR_Variable ;
:fromAmrLk <http://amr.isi.edu/amr_data/SSC-01-01#a> ;
:label "a" .
......@@ -863,6 +852,7 @@ net:atomProperty_direct_d a net:Atom_Property_Net ;
net:isCoreRoleLinked "true" .
net:atomProperty_direct_d2 a net:Atom_Property_Net ;
:role_polarity net:value_negative_blankNode ;
net:coverBaseNode :leaf_direct-02_d2 ;
net:coverNode :leaf_direct-02_d2 ;
net:hasNaming "direct" ;
......@@ -899,6 +889,7 @@ net:has_value a owl:AnnotationProperty ;
rdfs:subPropertyOf net:netProperty .
net:individual_SolarSystem_p a net:Individual_Net ;
:role_name net:value_SolarSystem_blankNode ;
net:coverBaseNode :leaf_system_p ;
net:coverNode :leaf_system_p ;
net:hasIndividualLabel "Solar System" ;
......@@ -930,6 +921,12 @@ net:phenomena_conjunction-OR_o3 a net:Phenomena_Net ;
net:hasPhenomenaType :phenomena_conjunction_or ;
net:hasStructure "SSC-01-01" .
net:value_negative_blankNode a net:Value_Net ;
net:coverAmrValue :value_negative ;
net:hasNaming "negative" ;
net:hasStructure "SSC-01-01" ;
net:hasValueLabel "negative" .
<http://amr.isi.edu/amr_data/SSC-01-01#a> a ns2:and ;
ns11:op1 <http://amr.isi.edu/amr_data/SSC-01-01#s2> ;
ns11:op2 <http://amr.isi.edu/amr_data/SSC-01-01#o> ;
......@@ -1064,8 +1061,8 @@ ns2:or a ns2:Concept ;
rdfs:subClassOf :AMR_Op_Role ;
:label "op2" .
:value_negative a :AMR_Value ;
rdfs:label "negative" .
:value_SolarSystem a :AMR_Value ;
rdfs:label "Solar System" .
sys:Out_ObjectProperty a owl:ObjectProperty .
......@@ -1096,6 +1093,7 @@ net:atomClass_sun_s2 a net:Atom_Class_Net ;
net:hasStructure "SSC-01-01" .
net:atomClass_system_p a net:Atom_Class_Net ;
:role_name net:value_SolarSystem_blankNode ;
net:coverBaseNode :leaf_system_p ;
net:coverNode :leaf_system_p ;
net:hasClassName "system" ;
......@@ -1114,6 +1112,12 @@ net:atomClass_system_s a net:Atom_Class_Net ;
net:objectProperty a owl:AnnotationProperty ;
rdfs:label "object attribute" .
net:value_SolarSystem_blankNode a net:Value_Net ;
net:coverAmrValue :value_SolarSystem ;
net:hasNaming "SolarSystem" ;
net:hasStructure "SSC-01-01" ;
net:hasValueLabel "Solar System" .
<http://amr.isi.edu/amr_data/SSC-01-01#o> a ns11:object ;
rdfs:subClassOf :AMR_Linked_Data .
......@@ -1162,6 +1166,9 @@ ns2:Frame a ns2:Concept,
:toReify a owl:AnnotationProperty ;
rdfs:subPropertyOf :AMR_AnnotationProperty .
:value_negative a :AMR_Value ;
rdfs:label "negative" .
net:has_relation_value a owl:AnnotationProperty ;
rdfs:label "has relation value" ;
rdfs:subPropertyOf net:has_object .
......@@ -1245,9 +1252,6 @@ sys:Out_Structure a owl:Class ;
net:Atom_Class_Net a owl:Class ;
rdfs:subClassOf net:Class_Net .
net:Relation a owl:Class ;
rdfs:subClassOf net:Net_Structure .
net:netProperty a owl:AnnotationProperty ;
rdfs:label "netProperty" .
......@@ -1276,6 +1280,9 @@ rdf:Property a owl:Class .
:hasConcept :concept_system ;
:hasVariable :variable_s .
net:Relation a owl:Class ;
rdfs:subClassOf net:Net_Structure .
net:Type a owl:Class ;
rdfs:label "Semantic Net Type" ;
rdfs:subClassOf net:Net_Structure .
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -16,22 +16,21 @@ 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 = 'atom-extraction-devGraph-1'
INPUT_GRAPH_PATH = f'{INPUT_DIR_PATH}{TEST_FILE_NAME}.ttl'
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'
TEST_FILE_NAME_1 = 'atom-extraction-devGraph-1'
TEST_FILE_NAME_2 = 'atom-extraction-devGraph-2'
TEST_FILE_NAME_3 = 'atom-extraction-devGraph-3'
from context import tenet
from tenet.transduction.rdfterm_computer import __update_uri_with_prefix
from tenet.transduction import rdfterm_computer, prefix_handle
from tenet.transduction import net
from tenet.scheme.amr_rule.transduction import atom_class_extractor as rule_1
from tenet.scheme.amr_rule.transduction import atom_individual_extractor as rule_2
from tenet.scheme.amr_rule.transduction import atom_property_extractor as rule_3
from tenet.scheme.amr_rule.transduction import atom_value_extractor as rule_4
from tenet.scheme.amr_rule.transduction import atom_phenomena_extractor as rule_5
from tenet.scheme.amr_rule.transduction import atom_relation_propagator as rule_6
from tenet.scheme import amr_rule
from tenet.scheme.amr_master_rule.transduction import atom_class_extractor as rule_1
from tenet.scheme.amr_master_rule.transduction import atom_individual_extractor as rule_2
from tenet.scheme.amr_master_rule.transduction import atom_property_extractor as rule_3
from tenet.scheme.amr_master_rule.transduction import atom_value_extractor as rule_4
from tenet.scheme.amr_master_rule.transduction import atom_phenomena_extractor as rule_5
from tenet.scheme.amr_master_rule.transduction import atom_relation_propagator as rule_6
from tenet.scheme import amr_master_rule
......@@ -39,16 +38,17 @@ from tenet.scheme import amr_rule
# Useful Methods
#==============================================================================
def load_test_graph():
def load_test_graph(test_file_name):
print(f'\n -- Test Graph Loading')
graph = Graph()
prefix_handle.update_graph_namespacemanager(graph)
graph.parse(INPUT_GRAPH_PATH)
graph_path = f'{INPUT_DIR_PATH}{test_file_name}.ttl'
graph.parse(graph_path)
print(f" ----- Graph Loaded ({len(graph)})")
return graph
def print_triple(triple, num=-1):
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)
......@@ -57,7 +57,7 @@ def print_triple(triple, num=-1):
print(f' {num_str} {s} {p} {o}')
def add_triples_in_graph(graph, triple_list):
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)}")
......@@ -70,14 +70,16 @@ def add_triples_in_graph(graph, triple_list):
if graph_length < len(graph):
n += 1
graph_length = len(graph)
print_triple(triple, num=n)
print_triple(graph, triple, num=n)
print(f" ----- Graph length after update: {len(graph)}")
print(f'\n -- Serialize test graph to {OUTPUT_GRAPH_PATH}')
graph.serialize(destination=OUTPUT_GRAPH_PATH,
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)
base=output_graph_uri)
......@@ -142,6 +144,56 @@ def test_search_pattern_5(graph):
return pattern_set
def test_search_pattern_6(graph):
_, pattern_set = rule_6.__search_pattern(graph)
print(f'\n ----- search 1 result: {len(pattern_set)}')
for row in pattern_set:
result_str = f'>>> '
result_str += f'{row.net.n3(graph.namespace_manager)}'
print(result_str)
for pattern in pattern_set:
target_net = net.Net(graph, pattern.net)
if len(target_net.base_node) > 0:
base_leaf = target_net.base_node[0]
_, result_set = rule_6.__search_leaf_in_leaf_relation(graph, base_leaf)
print(f'\n ----- search 2 result: {len(result_set)}')
for row in result_set:
result_str = f'>>> '
result_str += f'( {row.inNet.n3(graph.namespace_manager)}'
result_str += f', {row.inRelationRole.n3(graph.namespace_manager)} )'
print(result_str)
_, result_set = rule_6.__search_leaf_in_value_relation(graph, base_leaf)
print(f'\n ----- search 3 result: {len(result_set)}')
for row in result_set:
result_str = f'>>> '
result_str += f'( {row.inNet.n3(graph.namespace_manager)}'
result_str += f', {row.inRelationRole.n3(graph.namespace_manager)} )'
print(result_str)
_, result_set = rule_6.__search_leaf_out_leaf_relation(graph, base_leaf)
print(f'\n ----- search 4 result: {len(result_set)}')
for row in result_set:
result_str = f'>>> '
result_str += f'( {row.outRelationRole.n3(graph.namespace_manager)}'
result_str += f', {row.outNet.n3(graph.namespace_manager)} )'
print(result_str)
_, result_set = rule_6.__search_leaf_out_value_relation(graph, base_leaf)
print(f'\n ----- search 5 result: {len(result_set)}')
for row in result_set:
result_str = f'>>> '
result_str += f'( {row.outRelationRole.n3(graph.namespace_manager)}'
result_str += f', {row.outNet.n3(graph.namespace_manager)} )'
print(result_str)
return pattern_set
def test_search_structure(graph):
result_set = rule_3.__search_structure(graph)
print(f'\n ----- number of selection found: {len(result_set)}')
......@@ -156,16 +208,13 @@ def test_search_structure(graph):
# Unit Test
#==============================================================================
def test_rule_application(graph, rule):
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}')
print(f' ----- new_triple_list length: ({len(new_triple_list)})')
# for triple in new_triple_list:
# print_triple(triple)
add_triples_in_graph(graph, new_triple_list)
add_triples_in_graph(test_file_name, graph, new_triple_list)
......@@ -176,70 +225,85 @@ def test_rule_application(graph, rule):
if __name__ == '__main__':
print('\n *** Test Preparation ***')
graph = load_test_graph()
graph_1 = load_test_graph(TEST_FILE_NAME_1)
graph_2 = load_test_graph(TEST_FILE_NAME_2)
graph_3 = load_test_graph(TEST_FILE_NAME_3)
print('\n \n')
print('\n ///////////////////// Extraction Rule 1')
print('\n *** Step Test ***')
print('\n -- Step 1: Search Pattern')
pattern_set = test_search_pattern_1(graph)
test_search_structure(graph)
pattern_set = test_search_pattern_1(graph_1)
test_search_structure(graph_1)
print('\n \n')
print('\n *** Unit Test ***')
test_rule_application(graph, rule_1.extract_atom_class)
test_rule_application(TEST_FILE_NAME_1, graph_1, rule_1.extract_atom_class)
print('\n \n')
print('\n ///////////////////// Extraction Rule 2')
print('\n *** Step Test ***')
print('\n -- Step 1: Search Pattern')
pattern_set = test_search_pattern_2(graph)
pattern_set = test_search_pattern_2(graph_1)
print('\n \n')
print('\n *** Unit Test ***')
test_rule_application(graph, rule_2.extract_atom_individual)
test_rule_application(TEST_FILE_NAME_1, graph_1, rule_2.extract_atom_individual)
print('\n \n')
print('\n ///////////////////// Extraction Rule 3')
print('\n *** Step Test ***')
print('\n -- Step 1: Search Pattern')
pattern_set = test_search_pattern_3(graph)
pattern_set = test_search_pattern_3(graph_1)
print('\n \n')
print('\n *** Unit Test ***')
test_rule_application(graph, rule_3.extract_atom_property)
test_rule_application(TEST_FILE_NAME_1, graph_1, rule_3.extract_atom_property)
print('\n \n')
print('\n ///////////////////// Extraction Rule 4')
print('\n *** Step Test ***')
print('\n -- Step 1: Search Pattern')
pattern_set = test_search_pattern_4(graph)
pattern_set = test_search_pattern_4(graph_1)
print('\n \n')
print('\n *** Unit Test ***')
test_rule_application(graph, rule_4.extract_atom_value)
test_rule_application(TEST_FILE_NAME_1, graph_1, rule_4.extract_atom_value)
print('\n \n')
print('\n ///////////////////// Extraction Rule 5')
print('\n *** Step Test ***')
print('\n -- Step 1: Search Pattern')
pattern_set = test_search_pattern_5(graph)
pattern_set = test_search_pattern_5(graph_1)
print('\n \n')
print('\n *** Unit Test ***')
test_rule_application(graph, rule_5.extract_atom_phenomena)
test_rule_application(TEST_FILE_NAME_1, graph_1, rule_5.extract_atom_phenomena)
print('\n \n')
print('\n ///////////////////// Extraction Rule 6')
print('\n *** Step Test ***')
print('\n -- Step 1: Search Pattern')
pattern_set = test_search_pattern_6(graph_3)
print('\n \n')
print('\n *** Unit Test ***')
test_rule_application(TEST_FILE_NAME_3, graph_3, rule_6.propagate_atom_relation)
print('\n \n')
print('\n \n')
print('\n ///////////////////// Additional Tests')
print('\n *** Unit Test ***')
# test_rule_application(graph, rule_1.extract_atom_class)
# test_rule_application(graph, rule_3.extract_atom_property)
test_rule_application(graph, rule_6.propagate_atom_relation)
# test_rule_application(graph_1, rule_1.extract_atom_class)
# test_rule_application(graph_1, rule_3.extract_atom_property)
test_rule_application(TEST_FILE_NAME_1, graph_1, rule_6.propagate_atom_relation)
test_rule_application(TEST_FILE_NAME_2, graph_2, rule_6.propagate_atom_relation)
print('\n \n')
print('\n *** - ***')
\ No newline at end of file
......@@ -135,7 +135,6 @@ def test_rule_application(test_file_name, graph, rule):
rule_label, new_triple_list = rule(graph)
print(f' ----- label: {rule_label}')
print(f' ----- new_triple_list ({len(new_triple_list)}):')
add_triples_in_graph(test_file_name, graph, new_triple_list)
......
......@@ -29,7 +29,7 @@ from context import tenet
# -- Input Data
test_data_dir = f'{INPUT_DIR_PATH}amrDocuments/'
uuid_num = '01'
uuid_num = '03'
amrld_dir_path = f'{test_data_dir}dev/asail_odrl_sentences/'
amrld_file_path = f'{amrld_dir_path}s{uuid_num}.stog.amr.ttl'
base_output_name = f'aos{uuid_num}'
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment