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

New AMR Scheme: amr_scheme_clara_1

parent 4380d57d
No related branches found
No related tags found
No related merge requests found
Showing
with 123 additions and 2 deletions
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
/> />
<cts <cts
amr_cts_ref = "amr_scheme_1" amr_cts_ref = "amr_scheme_clara_1"
unl_cts_ref = "unl_scheme_1" unl_cts_ref = "unl_scheme_1"
/> />
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<file <file
amr_input_data_schema = "amr-rdf-schema" amr_input_data_schema = "amr-rdf-schema"
unl_input_data_schema = "unl-rdf-schema" unl_input_data_schema = "unl-rdf-schema"
semantic_net_schema = "semantic-net" semantic_net_schema = "odrl-snet-schema"
config_param = "config-parameters" config_param = "config-parameters"
/> />
......
from scheme.amr_clara_rule.preprocessing.amr_reification import *
from scheme.amr_clara_rule.preprocessing.amrld_correcting import *
from scheme.amr_clara_rule.transduction.atom_class_extractor import *
from scheme.amr_clara_rule.transduction.atom_individual_extractor import *
from scheme.amr_clara_rule.transduction.atom_property_extractor import *
from scheme.amr_clara_rule.transduction.atom_value_extractor import *
from scheme.amr_clara_rule.transduction.atom_phenomena_extractor import *
from scheme.amr_clara_rule.transduction.atom_relation_propagator import *
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_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 *
from scheme.amr_clara_rule.odrl_generation.odrl_rule_generator import *
from scheme.amr_clara_rule import *
#!/usr/bin/python3.10
# -*-coding:Utf-8 -*
#==============================================================================
# TENET: Rule to conjunctive phenomena or (rule 1)
#------------------------------------------------------------------------------
# Net Expansion AMR rule to analyse conjunctive phenomena (or)
# Rule: property(class, or_phenomena) => compositeClass
#==============================================================================
import rdflib
from rdflib import Graph
from rdflib.namespace import FOAF, RDF
import transduction
from transduction import net
from transduction.rdfterm_computer import produce_uriref, produce_literal
from transduction.query_builder import generate_select_query
from transduction.naming_computer import define_axiom_naming
from transduction.naming_computer import define_composite_naming_2
#==============================================================================
# Pattern Search: Rule and Action Nets
#==============================================================================
def __search_pattern_1(graph):
select_data_list = ['?rule_net']
clause_list = [(f'?rule_net a net:Rule_Net.')]
query_code = generate_select_query(graph, select_data_list, clause_list)
result_set = graph.query(query_code)
return query_code, result_set
def __search_pattern_2(graph):
select_data_list = ['?action_net']
clause_list = [(f'?action_net a net:Action_Net.')]
query_code = generate_select_query(graph, select_data_list, clause_list)
result_set = graph.query(query_code)
return query_code, result_set
#==============================================================================
# Check Methods
#==============================================================================
def __is_property_to_generate(property_net):
check_1 = property_net.is_deprecated()
if is_instance(property_net.mother_property_net, list):
check_2 = len(property_net.mother_property_net) > 0
else:
check_2 = False
return not check_1 or check_2
#==============================================================================
# Generator Methods
#==============================================================================
def __compute_policy_uri(graph, net):
return produce_uriref(graph, f'ext-out:policy_{net.structure}')
def __compute_odrl_rule_type_uri(graph, net):
odrl_rule_type_uri = f'odrl:permission'
# TODO: odrl:permission, odrl;obligation, odrl:prohibition
return produce_uriref(graph, odrl_rule_type_uri)
def __generate_odrl_triple_definition(graph, net):
policy_uri = __compute_policy_uri(graph, net)
odrl_rule_type_uri = __compute_odrl_rule_type_uri(graph, net)
action_definition = produce_literal(graph, 'net:x')
# print(f'{policy_uri}, {odrl_rule_type_uri}, {action_definition}')
return [(policy_uri, odrl_rule_type_uri, action_definition)]
#==============================================================================
# Main Method: analyze_phenomena_or_1
#==============================================================================
def generate_odrl_rule(graph):
# -- Rule Initialization
rule_label = 'generate ODRL rule'
rule_triple_list = []
# -- Get property net listings
_, pattern_set = __search_pattern_1(graph)
# # -- Triple Definition for 'not deprecated property net'
for pattern in pattern_set:
rule_net = net.RuleNet(graph, pattern.rule_net)
if not rule_net.is_deprecated():
rule_triple_list += __generate_odrl_triple_definition(graph, rule_net)
return rule_label, rule_triple_list
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment