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

URI n3 with namespace and minimal feb rule

parent 15db5b25
No related branches found
No related tags found
No related merge requests found
...@@ -23,7 +23,7 @@ PROPERTY_NAMING_3 = '-of' ...@@ -23,7 +23,7 @@ PROPERTY_NAMING_3 = '-of'
#============================================================================== #==============================================================================
# Method to compute names # Method to compute naming
#============================================================================== #==============================================================================
def define_composite_naming_1(net_1, net_2, net_3, def define_composite_naming_1(net_1, net_2, net_3,
...@@ -35,14 +35,3 @@ def define_composite_naming_1(net_1, net_2, net_3, ...@@ -35,14 +35,3 @@ def define_composite_naming_1(net_1, net_2, net_3,
return f'{name_1}_{name_2}_{name_3}' return f'{name_1}_{name_2}_{name_3}'
\ No newline at end of file
#==============================================================================
# Method to compute URI
#==============================================================================
def define_net_uri_1(target_net):
uri = None
if target_net.naming is not None:
uri = URIRef(f'net:{target_net.type_name}_{target_net.naming}')
return uri
\ No newline at end of file
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
import rdflib import rdflib
from rdflib import URIRef from rdflib import URIRef
from rdflib.namespace import NamespaceManager
from febTransduction.net import SemanticNetReferenceHandle from febTransduction.net import SemanticNetReferenceHandle
from febTransduction.query_builder import generate_select_query from febTransduction.query_builder import generate_select_query
...@@ -39,6 +40,11 @@ class Net: ...@@ -39,6 +40,11 @@ class Net:
# -- Net URI # -- Net URI
self._uri = uri self._uri = uri
if isinstance(uri, rdflib.term.URIRef):
self._uri = uri.n3(self.support_graph.namespace_manager)
elif isinstance(uri, str):
self._uri = URIRef(uri).n3(self.support_graph.namespace_manager)
# -- Net Attributes # -- Net Attributes
self._node = [] self._node = []
...@@ -99,10 +105,8 @@ class Net: ...@@ -99,10 +105,8 @@ class Net:
for attr_key, attr_value in attr.items(): for attr_key, attr_value in attr.items():
if isinstance(attr_key, list): if isinstance(attr_key, list):
self.attr_key.append(attr_value) self.attr_key.append(attr_value)
print(f'{attr_key} | {attr_value} | {self.attr_key} | {self._base_node}')
else: else:
self.attr_key = attr_value self.attr_key = attr_value
print(f'{attr_key} | {attr_value} | {self.attr_key} | {self._base_node}')
#-------------------------------------------------------------------------- #--------------------------------------------------------------------------
...@@ -120,9 +124,9 @@ class Net: ...@@ -120,9 +124,9 @@ class Net:
assert control, f'new_value does not a string or URIRef ({type(new_value)})' assert control, f'new_value does not a string or URIRef ({type(new_value)})'
if isinstance(new_value, rdflib.term.URIRef): if isinstance(new_value, rdflib.term.URIRef):
self._uri = new_value self._uri = new_value.n3(self.support_graph.namespace_manager)
else: else:
self._uri = URIRef(new_value) self._uri = URIRef(new_value).n3(self.support_graph.namespace_manager)
...@@ -195,3 +199,39 @@ class Net: ...@@ -195,3 +199,39 @@ class Net:
# -- Node(s) Setting # -- Node(s) Setting
for n in nets: for n in nets:
self.node = n.node self.node = n.node
#--------------------------------------------------------------------------
# Consolidation Method (finalize)
#--------------------------------------------------------------------------
def __consolidate_uri(self):
if self.uri is None:
if self.naming is not None:
self.uri = URIRef(f'net:{self.type_name}_{self.naming}')
def finalize(self):
self.__consolidate_uri()
#--------------------------------------------------------------------------
# Triple Generation Method
#--------------------------------------------------------------------------
def __generation_attribute_triple_definition(self):
triple_definition = []
pass # TODO
return triple_definition
def generate_triple_definition(self):
triple_definition = []
if self.uri is not None:
triple_definition.append(f'{self.uri} a {self.type_uri}.')
triple_definition += self.__generation_attribute_triple_definition()
return triple_definition
\ No newline at end of file
...@@ -20,8 +20,9 @@ if __name__ == '__main__': ...@@ -20,8 +20,9 @@ if __name__ == '__main__':
print(sys.path[0]) print(sys.path[0])
import febTransduction as transduction import febTransduction as transduction
from febTransduction import net
from febTransduction.query_builder import generate_select_query from febTransduction.query_builder import generate_select_query
from febTransduction.naming_computer import * from febTransduction.naming_computer import define_composite_naming_1
#============================================================================== #==============================================================================
...@@ -81,7 +82,7 @@ def __define_restriction(net, op_set): # TODO ...@@ -81,7 +82,7 @@ def __define_restriction(net, op_set): # TODO
def analyze_phenomena_or_1(graph): def analyze_phenomena_or_1(graph):
# -- Rule Initialization # -- Rule Initialization
rule_label = '"or" phenomena analysis 1 (targetting class)' rule_label = '"or" phenomena analysis 1 [ property(class, or_phenomena) ]'
print(f"--- *** February Transduction *** Sequence: {rule_label}") print(f"--- *** February Transduction *** Sequence: {rule_label}")
#logger.info(f"--- *** February Transduction *** Sequence: {rule_label}") #logger.info(f"--- *** February Transduction *** Sequence: {rule_label}")
...@@ -105,22 +106,22 @@ def analyze_phenomena_or_1(graph): ...@@ -105,22 +106,22 @@ def analyze_phenomena_or_1(graph):
# etc # etc
# -- Restriction Computation # -- Restriction Computation
for num in range(1, 9+1): pass # TODO
query_code = __op_pattern_1(selection.phenomena_net, num) # for num in range(1, 9+1):
op_set = graph.query(query_code) # query_code = __op_pattern_1(selection.phenomena_net, num)
composite_class_net = __define_restriction(composite_class_net, op_set) # op_set = graph.query(query_code)
# composite_class_net = __define_restriction(composite_class_net, op_set)
# -- Relation Propagation # -- Relation Propagation
for (n1, rel, _) in class_net.input_relation_list: pass # TODO
composite_class_net.add_input_relation(n1, rel) # for (n1, rel, _) in class_net.input_relation_list:
# composite_class_net.add_input_relation(n1, rel)
# TODO: à voir si on veut d'autres relations # TODO: à voir si on veut d'autres relations
# -- Net Naming
composite_class_net.naming = define_composite_naming_1(class_net, property_net, phenomena_net)
# -- Finalization # -- Finalization
composite_class_net.uri = naming_computer.define_composite_uri_1(
composite_class_net,
class_net, property_net, phenomena_net,
naming_computer.PROPERTY_NAMING_1
)
composite_class_net.finalize() composite_class_net.finalize()
new_triples = composite_class_net.generate_triple_definition() new_triples = composite_class_net.generate_triple_definition()
new_triple_list.append(new_triples) new_triple_list.append(new_triples)
...@@ -135,7 +136,7 @@ def analyze_phenomena_or_1(graph): ...@@ -135,7 +136,7 @@ def analyze_phenomena_or_1(graph):
def __select_pattern_2(): def __select_pattern_2():
# -- Select Data List # -- Select Data List
select_data_list = ['?property_net_0', '?property_net', '?phenomena_net'] select_data_list = ['?property_net', '?property_net_0', '?phenomena_net']
# -- Clause List # -- Clause List
clause_list = [] clause_list = []
...@@ -152,10 +153,10 @@ def __select_pattern_2(): ...@@ -152,10 +153,10 @@ def __select_pattern_2():
return query_code return query_code
def analyze_phenomena_or_2(): def analyze_phenomena_or_2(graph):
# -- Rule Initialization # -- Rule Initialization
rule_label = '"or" phenomena analysis 2 (targetting class)' rule_label = '"or" phenomena analysis 2 [ property(property, or_phenomena) ]'
print(f"--- *** February Transduction *** Sequence: {rule_label}") print(f"--- *** February Transduction *** Sequence: {rule_label}")
# -- Selection Pattern Application # -- Selection Pattern Application
...@@ -166,7 +167,37 @@ def analyze_phenomena_or_2(): ...@@ -166,7 +167,37 @@ def analyze_phenomena_or_2():
new_triple_list = [] new_triple_list = []
for selection in pattern_set: for selection in pattern_set:
pass # -- Net Composition
property_net_0 = net.PropertyNet(graph, uri=selection.property_net_0)
property_net = net.PropertyNet(graph, uri=selection.property_net)
phenomena_net = net.PhenomenaNet(graph, uri=selection.phenomena_net)
composite_class_net = net.CompositeClassNet(graph)
composite_class_net.compose(property_net_0, property_net, phenomena_net)
# -- Data Computation
composite_class_net.mother_class_net = property_net_0.uri
# etc
# -- Restriction Computation
pass # TODO
# for num in range(1, 9+1):
# query_code = __op_pattern_1(selection.phenomena_net, num)
# op_set = graph.query(query_code)
# composite_class_net = __define_restriction(composite_class_net, op_set)
# -- Relation Propagation
pass # TODO
# for (n1, rel, _) in class_net.input_relation_list:
# composite_class_net.add_input_relation(n1, rel)
# TODO: à voir si on veut d'autres relations
# -- Net Naming
composite_class_net.naming = define_composite_naming_1(property_net_0, property_net, phenomena_net)
# -- Finalization
composite_class_net.finalize()
new_triples = composite_class_net.generate_triple_definition()
new_triple_list += new_triples
return rule_label, new_triple_list return rule_label, new_triple_list
...@@ -212,8 +243,13 @@ if __name__ == '__main__': ...@@ -212,8 +243,13 @@ if __name__ == '__main__':
result_str += f' {selection.phenomena_net.n3(graph.namespace_manager)}' result_str += f' {selection.phenomena_net.n3(graph.namespace_manager)}'
print(result_str) print(result_str)
print('\n -- Rule') print('\n -- Rule Test')
# rule = analyze_phenomena_or_1() rule_label, new_triple_list = analyze_phenomena_or_2(graph)
print(f' ----- label: {rule_label}')
print(f' ----- new_triple_list: {len(new_triple_list)}')
for new_triple in new_triple_list:
print(f' | {new_triple}')
# num = 0 # num = 0
# for query_label, query in rule.query_list: # for query_label, query in rule.query_list:
......
- DEBUG - handle_close[691355e6ad1411ed842d14abc581ea52]({'header': {'msg_id': '92e4b518-67db9b9669f0b8d6c0247971_4398_201', 'msg_type': 'comm_close', 'username': 'lamenji', 'session': '92e4b518-67db9b9669f0b8d6c0247971', 'date': datetime.datetime(2023, 2, 15, 23, 15, 46, 180154, tzinfo=tzutc()), 'version': '5.3'}, 'msg_id': '92e4b518-67db9b9669f0b8d6c0247971_4398_201', 'msg_type': 'comm_close', 'parent_header': {}, 'metadata': {}, 'content': {'comm_id': '691355e6ad1411ed842d14abc581ea52', 'data': {}}, 'buffers': []})
...@@ -88,7 +88,7 @@ print(f' ----- Naming (3)): {naming_3}') ...@@ -88,7 +88,7 @@ print(f' ----- Naming (3)): {naming_3}')
print('\n -- Update composite net (with naming_1)') print('\n -- Update composite net (with naming_1)')
composite_net_1.naming = naming_1 composite_net_1.naming = naming_1
composite_net_1.uri = naming_computer.define_net_uri_1(composite_net_1) composite_net_1.finalize()
test_attribute_access(composite_net_1, 'net.uri', test_attribute_access(composite_net_1, 'net.uri',
'net.node', 'net.base_node', 'net.structure', 'net.naming', 'net.node', 'net.base_node', 'net.structure', 'net.naming',
'net.class_name', 'net.class_name',
...@@ -100,7 +100,7 @@ print('\n -- Advanced Test(s)') ...@@ -100,7 +100,7 @@ print('\n -- Advanced Test(s)')
composite_net_2 = CompositeClassNet(graph) composite_net_2 = CompositeClassNet(graph)
composite_net_2.compose(net_1, net_2, net_4) composite_net_2.compose(net_1, net_2, net_4)
composite_net_2.naming = naming_computer.define_composite_naming_1(net_1, net_2, net_4) composite_net_2.naming = naming_computer.define_composite_naming_1(net_1, net_2, net_4)
composite_net_2.uri = naming_computer.define_net_uri_1(composite_net_2) composite_net_2.finalize()
test_attribute_access(composite_net_2, 'net.uri', test_attribute_access(composite_net_2, 'net.uri',
'net.node', 'net.base_node', 'net.structure', 'net.naming', 'net.node', 'net.base_node', 'net.structure', 'net.naming',
'net.class_name', 'net.class_name',
......
...@@ -64,7 +64,8 @@ graph.parse(TEST_GRAPH) ...@@ -64,7 +64,8 @@ graph.parse(TEST_GRAPH)
print(f" ----- Graph Loaded ({len(graph)})") print(f" ----- Graph Loaded ({len(graph)})")
print('\n -- Net') print('\n -- Net')
net = Net(graph, uri='net:atomClass_sun_s2') net_uri = 'https://tenet.tetras-libre.fr/semantic-net#atomClass_sun_s2'
net = Net(graph, uri=net_uri)
test_attribute_access(net, 'net.uri', test_attribute_access(net, 'net.uri',
'net.node', 'net.base_node', 'net.structure', 'net.naming') 'net.node', 'net.base_node', 'net.structure', 'net.naming')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment