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

Renaming of rule modules

parent 1ea7654c
No related branches found
No related tags found
No related merge requests found
Showing
with 811 additions and 5 deletions
from scheme.amr_rule.preprocessing.amr_reification import *
from scheme.amr_rule.preprocessing.amrld_correcting import *
from scheme.amr_rule.transduction.atomic_class_extractor import *
from scheme.amr_rule.transduction.composite_class_1 import *
from scheme.amr_rule.transduction.composite_class_extractor_1 import *
from scheme.amr_rule.transduction.phenomena_polarity_1 import *
from scheme.amr_rule.transduction.phenomena_or_1 import *
from scheme.amr_rule.transduction.phenomena_or_2 import *
from scheme.amr_rule.transduction.phenomena_polarity_analyzer_1 import *
from scheme.amr_rule.transduction.phenomena_or_analyzer_1 import *
from scheme.amr_rule.transduction.phenomena_or_analyzer_2 import *
from scheme.amr_rule.generation.owl_property_generator import *
......
......
#!/usr/bin/python3.10
# -*-coding:Utf-8 -*
#==============================================================================
# TENET: Rule to xxx (rule i) [TODO]
#------------------------------------------------------------------------------
# Net Expansion AMR rule to xxx
# Rule: property(arg0:class, arg1:class) => compositeClass [TODO]
#==============================================================================
from rdflib import Graph
import febTransduction as transduction
from febTransduction import net
from febTransduction.query_builder import generate_select_query
from febTransduction.naming_computer import define_composite_naming_1, define_restriction_naming
#==============================================================================
# Select Pattern: property(arg0:class, arg1:class)
#==============================================================================
def __rule_pattern_query_code(graph): # TODO
select_data_list = ['?property_net', '?class_net_0', '?class_net_1']
clause_list = []
clause_list.append(f'?property_net a [rdfs:subClassOf* net:Property_Net].')
clause_list.append(f'FILTER NOT EXISTS {{ ?property_net a net:Deprecated_Net. }}')
clause_list.append(f'?class_net_0 a [rdfs:subClassOf* net:Class_Net].')
clause_list.append(f'FILTER NOT EXISTS {{ ?class_net_0 a net:Deprecated_Net. }}')
clause_list.append(f'?class_net_1 a [rdfs:subClassOf* net:Class_Net].')
clause_list.append(f'FILTER NOT EXISTS {{ ?class_net_1 a net:Deprecated_Net. }}')
clause_list.append(f'?property_net amr:role_ARG0 ?class_net_0.')
clause_list.append(f'?property_net amr:role_ARG1 ?class_net_1.')
query_code = generate_select_query(graph, select_data_list, clause_list)
return query_code
def __search_pattern(graph):
query_code = __rule_pattern_query_code(graph)
rule_pattern_set = graph.query(query_code)
return rule_pattern_set
#==============================================================================
# Net Checking
#==============================================================================
def __verify_disjoint_cover(class_net_0, class_net_1):
check = True
for node in class_net_0.node:
if node in class_net_1.node: check = False
return check
#==============================================================================
# Relation Propagation
#==============================================================================
def __filter_relation(relation_list):
result_list = []
for relation in relation_list:
check = True
(s, p, o) = relation
if s == o: check = False
if check: result_list.append(relation)
return result_list
def __propagate_relation(target_net, base_net):
# -- target_net.input_relation_list = base_net.input_relation_list
out_relation_list = __filter_relation(base_net.output_relation_list)
target_net.output_relation_list = out_relation_list
#==============================================================================
# Construct Methods: construction of composite class net
#==============================================================================
def __construct_restriction_net(graph, property_net_1, property_net_2):
restriction_net = net.RestrictionNet(graph)
restriction_net.compose(property_net_1, property_net_2)
# -- Data Computation
restriction_net.restriction_property = property_net_1.uri
restriction_net.restriction_net_value = property_net_2.uri
# -- Relation Propagation: None
# -- Net Naming
restriction_net.naming = define_restriction_naming(property_net_1, property_net_2)
# -- Finalization
restriction_net.finalize()
triple_list = restriction_net.generate_triple_definition()
return restriction_net, triple_list
def __construct_composite_class_net_from_3_nets(
graph, base_class_net, core_property_net, target_class_net):
# -- Net Composition
composite_class_net = net.CompositePropertyNet(graph)
composite_class_net.compose(base_class_net, core_property_net, target_class_net)
# -- Data Computation
composite_class_net.mother_class_net = base_class_net.uri
# -- Restriction Computation
restriction_net, triple_list_1 = __construct_restriction_net(graph, core_property_net, target_class_net)
composite_class_net.restriction = restriction_net.uri
# -- Relation Propagation
__propagate_relation(composite_class_net, base_class_net)
# -- Net Naming
composite_class_net.naming = define_composite_naming_1(
base_class_net, core_property_net, target_class_net)
# -- Finalization
composite_class_net.finalize()
triple_list_2 = composite_class_net.generate_triple_definition()
result_triple_list = triple_list_1 + triple_list_2
return composite_class_net, result_triple_list
#==============================================================================
# Main Method
#==============================================================================
def extract_xxx(graph): # TODO
# -- Rule Initialization
rule_label = 'extract xxx [ property(arg0:class, arg1:class) ]'
# -- Search for patterns
rule_pattern_set = __search_pattern(graph)
# -- Selection Analyzing (1)
rule_triple_list = []
for selection_1 in rule_pattern_set:
# -- Net Selection
property_net = net.PropertyNet(graph, uri=selection_1.property_net)
class_net_0 = net.ClassNet(graph, uri=selection_1.class_net_0)
class_net_1 = net.ClassNet(graph, uri=selection_1.class_net_1)
# -- Condition: disjoint cover
if __verify_disjoint_cover(class_net_0, class_net_1):
# -- New Net Construction (from 3 nets)
new_class, triple_list = __construct_composite_class_net_from_3_nets(
graph, class_net_0, property_net, class_net_1)
# -- Resulting List Update
# class_net_list.append(new_class)
rule_triple_list += triple_list
# -- Deprecation: Origin Class Net
rule_triple_list += class_net_0.deprecate()
return rule_label, rule_triple_list
\ No newline at end of file
#!/usr/bin/python3.10
# -*-coding:Utf-8 -*
#==============================================================================
# TENET: Rule to xxx (rule i) [TODO]
#------------------------------------------------------------------------------
# Net Expansion AMR rule to xxx
# Rule: property(arg0:class, arg1:class) => compositeClass [TODO]
#==============================================================================
from rdflib import Graph
import febTransduction as transduction
from febTransduction import net
from febTransduction.query_builder import generate_select_query
from febTransduction.naming_computer import define_composite_naming_1, define_restriction_naming
#==============================================================================
# Select Pattern: property(arg0:class, arg1:class)
#==============================================================================
def __rule_pattern_query_code(graph): # TODO
select_data_list = ['?property_net', '?class_net_0', '?class_net_1']
clause_list = []
clause_list.append(f'?property_net a [rdfs:subClassOf* net:Property_Net].')
clause_list.append(f'FILTER NOT EXISTS {{ ?property_net a net:Deprecated_Net. }}')
clause_list.append(f'?class_net_0 a [rdfs:subClassOf* net:Class_Net].')
clause_list.append(f'FILTER NOT EXISTS {{ ?class_net_0 a net:Deprecated_Net. }}')
clause_list.append(f'?class_net_1 a [rdfs:subClassOf* net:Class_Net].')
clause_list.append(f'FILTER NOT EXISTS {{ ?class_net_1 a net:Deprecated_Net. }}')
clause_list.append(f'?property_net amr:role_ARG0 ?class_net_0.')
clause_list.append(f'?property_net amr:role_ARG1 ?class_net_1.')
query_code = generate_select_query(graph, select_data_list, clause_list)
return query_code
def __search_pattern(graph):
query_code = __rule_pattern_query_code(graph)
rule_pattern_set = graph.query(query_code)
return rule_pattern_set
#==============================================================================
# Net Checking
#==============================================================================
def __verify_disjoint_cover(class_net_0, class_net_1):
check = True
for node in class_net_0.node:
if node in class_net_1.node: check = False
return check
#==============================================================================
# Relation Propagation
#==============================================================================
def __filter_relation(relation_list):
result_list = []
for relation in relation_list:
check = True
(s, p, o) = relation
if s == o: check = False
if check: result_list.append(relation)
return result_list
def __propagate_relation(target_net, base_net):
# -- target_net.input_relation_list = base_net.input_relation_list
out_relation_list = __filter_relation(base_net.output_relation_list)
target_net.output_relation_list = out_relation_list
#==============================================================================
# Construct Methods: construction of composite class net
#==============================================================================
def __construct_restriction_net(graph, property_net_1, property_net_2):
restriction_net = net.RestrictionNet(graph)
restriction_net.compose(property_net_1, property_net_2)
# -- Data Computation
restriction_net.restriction_property = property_net_1.uri
restriction_net.restriction_net_value = property_net_2.uri
# -- Relation Propagation: None
# -- Net Naming
restriction_net.naming = define_restriction_naming(property_net_1, property_net_2)
# -- Finalization
restriction_net.finalize()
triple_list = restriction_net.generate_triple_definition()
return restriction_net, triple_list
def __construct_composite_class_net_from_3_nets(
graph, base_class_net, core_property_net, target_class_net):
# -- Net Composition
composite_class_net = net.CompositePropertyNet(graph)
composite_class_net.compose(base_class_net, core_property_net, target_class_net)
# -- Data Computation
composite_class_net.mother_class_net = base_class_net.uri
# -- Restriction Computation
restriction_net, triple_list_1 = __construct_restriction_net(graph, core_property_net, target_class_net)
composite_class_net.restriction = restriction_net.uri
# -- Relation Propagation
__propagate_relation(composite_class_net, base_class_net)
# -- Net Naming
composite_class_net.naming = define_composite_naming_1(
base_class_net, core_property_net, target_class_net)
# -- Finalization
composite_class_net.finalize()
triple_list_2 = composite_class_net.generate_triple_definition()
result_triple_list = triple_list_1 + triple_list_2
return composite_class_net, result_triple_list
#==============================================================================
# Main Method
#==============================================================================
def extract_xxx(graph): # TODO
# -- Rule Initialization
rule_label = 'extract xxx [ property(arg0:class, arg1:class) ]'
# -- Search for patterns
rule_pattern_set = __search_pattern(graph)
# -- Selection Analyzing (1)
rule_triple_list = []
for selection_1 in rule_pattern_set:
# -- Net Selection
property_net = net.PropertyNet(graph, uri=selection_1.property_net)
class_net_0 = net.ClassNet(graph, uri=selection_1.class_net_0)
class_net_1 = net.ClassNet(graph, uri=selection_1.class_net_1)
# -- Condition: disjoint cover
if __verify_disjoint_cover(class_net_0, class_net_1):
# -- New Net Construction (from 3 nets)
new_class, triple_list = __construct_composite_class_net_from_3_nets(
graph, class_net_0, property_net, class_net_1)
# -- Resulting List Update
# class_net_list.append(new_class)
rule_triple_list += triple_list
# -- Deprecation: Origin Class Net
rule_triple_list += class_net_0.deprecate()
return rule_label, rule_triple_list
\ No newline at end of file
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment