diff --git a/tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/degree_analyzer_1.py b/tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/degree_analyzer_1.py index 68d7341db2ec955ce7d5f07e4a7b2fbf62bdc9c9..ec028a4181e4a47c5bc67188849a0e2aec433fab 100644 --- a/tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/degree_analyzer_1.py +++ b/tenet/scheme/amr_master_rule/transduction/phenomena_analyzer/degree_analyzer_1.py @@ -24,7 +24,7 @@ DEGREE_PROPERTY_NET_URI = 'net:predefinedProperty_hasDegree' #============================================================================== -# Pattern Search: DEGREE_PHENOMENA +# Pattern Search: degree91(ARG1: entity, ARG2: attribute, ARG3: degree) #============================================================================== DEGREE_PHENOMENA_URI = 'amr:phenomena_degree' @@ -56,8 +56,31 @@ def __search_pattern(graph): # Useful Additional Search #============================================================================== +def __search_degree_arg4(graph, degree_net_uri): + select_data_list = ['?comparated_class_net'] + clause_list = [(degree_net_uri, ARG_RELATION[4], '?comparated_class_net'), + '?comparated_class_net a [rdfs:subClassOf* net:Class_Net].'] + query_code = generate_select_distinct_query(graph, select_data_list, clause_list) + result_set = graph.query(query_code) + return query_code, result_set +def __search_degree_arg5(graph, degree_net_uri): + select_data_list = ['?superlative_class_net'] + clause_list = [(degree_net_uri, ARG_RELATION[5], '?superlative_class_net'), + '?superlative_class_net a [rdfs:subClassOf* net:Class_Net].'] + query_code = generate_select_distinct_query(graph, select_data_list, clause_list) + result_set = graph.query(query_code) + return query_code, result_set + + +def __search_degree_arg6(graph, degree_net_uri): + select_data_list = ['?reference_net'] + clause_list = [(degree_net_uri, ARG_RELATION[6], '?reference_net'), + '?reference_net a [rdfs:subClassOf* net:Class_Net].'] + query_code = generate_select_distinct_query(graph, select_data_list, clause_list) + result_set = graph.query(query_code) + return query_code, result_set #============================================================================== @@ -200,6 +223,13 @@ def __construct_feature_individual_net(graph, feature_class_net, degree_individu +def __associate_mother_relation(graph, left_class_net, right_class_net): + left_class_net.mother_class_net = right_class_net.uri + result_triple_list = left_class_net.generate_triple_definition() + return left_class_net, result_triple_list + + + #============================================================================== # Main Method #============================================================================== @@ -227,11 +257,28 @@ def analyze_phenomena_degree91_1(graph): feature_individual_net, triple_list_2 = __construct_feature_individual_net( graph, attribute_class_net, degree_individual_net) - _, triple_list_3 = __construct_composite_class_net( + new_entity_class_net, triple_list_3 = __construct_composite_class_net( graph, entity_class_net, feature_individual_net, phenomena_net) - # -- Resulting List Update - rule_triple_list += triple_list_1 + triple_list_2 + triple_list_3 + rule_triple_list += (triple_list_1 + triple_list_2 + triple_list_3) + + # -- Comparison Handle (ARG4) + _, comparated_class_set = __search_degree_arg4(graph, phenomena_net.uri) + for row in comparated_class_set: + pass #TODO: uri=row.comparated_class_net + + # -- Superlative Handle (ARG5) + _, superlative_set = __search_degree_arg5(graph, phenomena_net.uri) + for row in superlative_set: + superlative_class_net = net.ClassNet(graph, uri=row.superlative_class_net) + _, triple_list_5 = __associate_mother_relation( + graph, new_entity_class_net, superlative_class_net) + rule_triple_list += triple_list_5 + + # -- Reference Handle (ARG6) + _, reference_set = __search_degree_arg6(graph, phenomena_net.uri) + for row in reference_set: + pass #TODO: uri=row.reference_net # -- Deprecation: Origin Class Nets rule_triple_list += entity_class_net.deprecate()