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

New Extraction Rule: degree_analyzer_1 (3)

parent 14ad2abd
No related branches found
No related tags found
No related merge requests found
......@@ -12,8 +12,9 @@ from rdflib import Graph
import transduction
from transduction import net
from transduction.query_builder import generate_select_query, generate_select_distinct_query
from transduction.rdfterm_computer import produce_uriref, produce_literal
from transduction.query_builder import generate_select_distinct_query
from transduction.rdfterm_computer import produce_uriref
from transduction.naming_computer import define_restriction_naming
ENTITY_CLASS_TYPE = 'base-out:Entity'
FEATURE_CLASS_TYPE = 'base-out:Feature'
......@@ -91,6 +92,8 @@ def __search_degree_arg6(graph, degree_net_uri):
# Useful Computation Method(s)
#==============================================================================
# -- Methods to define naming
def __extract_naming(net, default='none'):
naming = f'{default}'
naming_list = net.naming
......@@ -108,6 +111,17 @@ def __define_composite_naming(net_1, net_2):
name_2 = __extract_naming(net_2, default='something')
return f'{name_2}-{name_1}'
def __define_comparison_property_naming(net_1, net_2):
name_1 = __extract_naming(net_1, default='something')
if len(name_1) == 1: name_1 = name_1[0].upper()
if len(name_1) >1: name_1 = name_1[0].upper() + name_1[1:]
name_2 = __extract_naming(net_2, default='something')
if len(name_2) == 1: name_2 = name_2[0].upper()
if len(name_2) >1: name_2 = name_2[0].upper() + name_2[1:]
return f'is{name_2}{name_1}Than'
# -- Methods to propagate relation
def __filter_relation(relation_list, phenomena_net):
result_list = []
......@@ -130,6 +144,28 @@ def __propagate_relation(target_net, base_net, phenomena_net):
# Construct Method(s)
#==============================================================================
def __construct_restriction_net(graph, property_net, target_class_net):
# -- Net Composition
restriction_net = net.RestrictionNet(graph)
restriction_net.compose(property_net, target_class_net)
# -- Data Computation
restriction_net.restriction_property = property_net.uri
restriction_net.restriction_net_value = target_class_net.uri
# -- Relation Propagation: None
# -- Net Naming
restriction_net.naming = define_restriction_naming(property_net, target_class_net)
# -- Finalization
restriction_net.finalize()
triple_list = restriction_net.generate_triple_definition()
return restriction_net, triple_list
def __construct_feature_restriction_net(graph, individual_net):
restriction_net = net.RestrictionNet(graph)
......@@ -223,8 +259,32 @@ def __construct_feature_individual_net(graph, feature_class_net, degree_individu
individual_net.finalize()
result_triple_list = individual_net.generate_triple_definition()
return individual_net, result_triple_list
return individual_net, result_triple_list
def __construct_comparison_property_net(graph, feature_class_net, degree_individual_net):
# -- Net Composition
property_net = net.AtomPropertyNet(graph)
property_net.compose(feature_class_net, degree_individual_net)
# -- Relation Propagation : None
# -- Net Naming
property_net.naming = __define_comparison_property_naming(feature_class_net, degree_individual_net)
# -- Finalization
property_net.finalize()
result_triple_list = property_net.generate_triple_definition()
return property_net, result_triple_list
def __associate_restriction_relation(graph, class_net, restriction_net):
class_net.restriction = restriction_net.uri
result_triple_list = class_net.generate_triple_definition()
return class_net, result_triple_list
def __associate_mother_relation_to_refine(graph, left_class_net, right_class_net):
left_class_net.mother_class_net_to_refine = right_class_net.uri
......@@ -275,9 +335,15 @@ def analyze_phenomena_degree91_1(graph):
rule_triple_list += degree_triple_list
# -- Comparison Handle (ARG4)
comparison_property_net, triple_list_4a = __construct_comparison_property_net(
graph, attribute_class_net, degree_individual_net)
_, comparated_class_set = __search_degree_arg4(graph, phenomena_net.uri)
for row in comparated_class_set:
pass #TODO: uri=row.comparated_class_net
comparated_class_net = net.ClassNet(graph, uri=row.comparated_class_net)
restriction_net, triple_list_4b = __construct_restriction_net(
graph, comparison_property_net, comparated_class_net)
_, triple_list_4c = __associate_restriction_relation(graph, new_entity_class_net, restriction_net)
rule_triple_list += (triple_list_4a + triple_list_4b + triple_list_4c)
# -- Superlative Handle (ARG5)
_, superlative_set = __search_degree_arg5(graph, phenomena_net.uri)
......
......@@ -56,7 +56,7 @@ test_data_dir = f'{INPUT_DIR_PATH}amrDocuments/'
# onto_prefix = f'SimpleTest'
# base_output_name = f'SimpleTest'
uuid_num = '02'
uuid_num = '03'
amrld_dir_path = f'{test_data_dir}dev/solar-system-{uuid_num}/'
amrld_file_path = f'{amrld_dir_path}SSC-{uuid_num}-01.stog.amr.ttl'
base_output_name = f'SolarSystemDev{uuid_num}'
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment