def translate_value(session, _segment, _value_node, _value): """Setup value \p _value to \p _value_node @return: Return list of creates sc-elements """ v_node = sc_utils.createNodeElement(session, _segment, sc.SC_CONST) bin_pair = sc_utils.createPairBinaryOrientFull(session, _segment, v_node, _value_node, sc.SC_CONST) a = sc_utils.createPairPosPerm(session, _segment, keynodes.common.nrel_value, bin_pair[0], sc.SC_CONST) res = [v_node, a, keynodes.common.nrel_value] res.extend(bin_pair) vu_node = sc_utils.createNodeElement(session, _segment, sc.SC_CONST) a = sc_utils.createPairPosPerm(session, _segment, v_node, vu_node, sc.SC_CONST) res.extend([vu_node, a]) # make identification idtf_node = sc_utils.createNodeSheaf(session, _segment, sc.SC_CONST) bin_pair = sc_utils.createPairBinaryOrientFull(session, _segment, idtf_node, vu_node, sc.SC_CONST) a = sc_utils.createPairPosPerm(session, _segment, keynodes.common.nrel_identification, bin_pair[0], sc.SC_CONST) res.extend([idtf_node, a, keynodes.common.nrel_identification]) res.extend(bin_pair) # set value val = sc_utils.createNodeElement(session, _segment, sc.SC_CONST) sc_utils.setContentReal(session, _segment, val, _value) a = sc_utils.createPairPosPerm(session, _segment, idtf_node, val, sc.SC_CONST) a1 = sc_utils.createPairPosPerm(session, _segment, keynodes.common.rrel_dec_number, a, sc.SC_CONST) res.extend([val, a, a1, keynodes.common.rrel_dec_number]) return res
def calculate_graph_prop(_params, _segment): kernel = core.Kernel.getSingleton() session = kernel.session() segment = kernel.segment() # check type question = session.search_one_shot(session.sc_constraint_new(sc_constants.CONSTR_5_f_a_a_a_f, keynodes.questions.initiated, sc.SC_A_CONST, sc.SC_N_CONST, sc.SC_A_CONST, _params), True, 5) assert question is not None question = question[2] global graph_prop_calculators for question_type, calculator, relation in graph_prop_calculators: # check command type if sc_utils.checkIncToSets(session, question, [question_type], sc.SC_CONST): graph = session.search_one_shot(session.sc_constraint_new(sc_constants.CONSTR_3_f_a_a, question, sc.SC_A_CONST, sc.SC_N_CONST), True, 3) if graph is None: return graph = graph[2] if not sc_utils.checkIncToSets(session, graph, [graph_keynodes.Common.graph], sc.SC_CONST): return g = Graph(segment, graph) g.makeNxGraph() result = calculator(g.graphNx) if result is None: raise RuntimeWarning("Calculator can't calculate value") value = sc_utils.createNodeElement(session, segment, sc.SC_CONST) bin_rel = sc_utils.createPairBinaryOrientFull(session, segment, graph, value, sc.SC_CONST) a = sc_utils.createPairPosPerm(session, segment, relation, bin_rel[0], sc.SC_CONST) elements = translate_value(session, segment, value, result) elements.extend([value, graph, a, relation]) elements.extend(bin_rel) answer = sc_utils.createNodeElement(session, segment, sc.SC_CONST) for el in elements: sc_utils.createPairPosPerm(session, segment, answer, el, sc.SC_CONST) sc_utils.makeAnswer(session, segment, question, answer)
def calculate_graph_element_prop(_params, _segment): kernel = core.Kernel.getSingleton() session = kernel.session() segment = kernel.segment() # check type question = session.search_one_shot( session.sc_constraint_new(sc_constants.CONSTR_5_f_a_a_a_f, keynodes.questions.initiated, sc.SC_A_CONST, sc.SC_N_CONST, sc.SC_A_CONST, _params), True, 5) assert question is not None question = question[2] global graph_prop_calculators for question_type, calculator, relation in graph_element_prop_calculators: # check command type if sc_utils.checkIncToSets(session, question, [question_type], sc.SC_CONST): element = session.search_one_shot( session.sc_constraint_new(sc_constants.CONSTR_3_f_a_a, question, sc.SC_A_CONST, sc.SC_N_CONST), True, 3) if element is None: return element = element[2] graph = None arc = None it = session.create_iterator( session.sc_constraint_new(sc_constants.CONSTR_3_a_a_f, sc.SC_NODE, sc.SC_A_CONST | sc.SC_POS, element), True) while not it.is_over(): if sc_utils.checkIncToSets(session, it.value(0), [graph_keynodes.Common.graph], sc.SC_CONST): graph = it.value(0) arc = it.value(1) break it.next() if graph is None: continue # make graph and calculate property value g = Graph(segment, graph) sc2obj = g.makeNxGraph() result = calculator(g.graphNx, sc2obj[str(element.this)]) # if result is None: raise RuntimeWarning("Calculator can't calculate value") value = sc_utils.createNodeElement(session, segment, sc.SC_CONST) bin_rel = sc_utils.createPairBinaryOrientFull( session, segment, arc, value, sc.SC_CONST) a = sc_utils.createPairPosPerm(session, segment, relation, bin_rel[0], sc.SC_CONST) elements = translate_value(session, segment, value, result) elements.extend([value, graph, a, relation]) elements.extend(bin_rel) answer = sc_utils.createNodeElement(session, segment, sc.SC_CONST) for el in elements: sc_utils.createPairPosPerm(session, segment, answer, el, sc.SC_CONST) sc_utils.makeAnswer(session, segment, question, answer)
def calculate_graph_prop(_params, _segment): kernel = core.Kernel.getSingleton() session = kernel.session() segment = kernel.segment() # check type question = session.search_one_shot( session.sc_constraint_new(sc_constants.CONSTR_5_f_a_a_a_f, keynodes.questions.initiated, sc.SC_A_CONST, sc.SC_N_CONST, sc.SC_A_CONST, _params), True, 5) assert question is not None question = question[2] global graph_prop_calculators for question_type, calculator, relation in graph_prop_calculators: # check command type if sc_utils.checkIncToSets(session, question, [question_type], sc.SC_CONST): graph = session.search_one_shot( session.sc_constraint_new(sc_constants.CONSTR_3_f_a_a, question, sc.SC_A_CONST, sc.SC_N_CONST), True, 3) if graph is None: return graph = graph[2] if not sc_utils.checkIncToSets(session, graph, [graph_keynodes.Common.graph], sc.SC_CONST): return g = Graph(segment, graph) g.makeNxGraph() result = calculator(g.graphNx) if result is None: raise RuntimeWarning("Calculator can't calculate value") value = sc_utils.createNodeElement(session, segment, sc.SC_CONST) bin_rel = sc_utils.createPairBinaryOrientFull( session, segment, graph, value, sc.SC_CONST) a = sc_utils.createPairPosPerm(session, segment, relation, bin_rel[0], sc.SC_CONST) elements = translate_value(session, segment, value, result) elements.extend([value, graph, a, relation]) elements.extend(bin_rel) answer = sc_utils.createNodeElement(session, segment, sc.SC_CONST) for el in elements: sc_utils.createPairPosPerm(session, segment, answer, el, sc.SC_CONST) sc_utils.makeAnswer(session, segment, question, answer)
def calculate_graph_element_prop(_params, _segment): kernel = core.Kernel.getSingleton() session = kernel.session() segment = kernel.segment() # check type question = session.search_one_shot(session.sc_constraint_new(sc_constants.CONSTR_5_f_a_a_a_f, keynodes.questions.initiated, sc.SC_A_CONST, sc.SC_N_CONST, sc.SC_A_CONST, _params), True, 5) assert question is not None question = question[2] global graph_prop_calculators for question_type, calculator, relation in graph_element_prop_calculators: # check command type if sc_utils.checkIncToSets(session, question, [question_type], sc.SC_CONST): element = session.search_one_shot(session.sc_constraint_new(sc_constants.CONSTR_3_f_a_a, question, sc.SC_A_CONST, sc.SC_N_CONST), True, 3) if element is None: return element = element[2] graph = None arc = None it = session.create_iterator(session.sc_constraint_new(sc_constants.CONSTR_3_a_a_f, sc.SC_NODE, sc.SC_A_CONST | sc.SC_POS, element), True) while not it.is_over(): if sc_utils.checkIncToSets(session, it.value(0), [graph_keynodes.Common.graph], sc.SC_CONST): graph = it.value(0) arc = it.value(1) break it.next() if graph is None: continue # make graph and calculate property value g = Graph(segment, graph) sc2obj = g.makeNxGraph() result = calculator(g.graphNx, sc2obj[str(element.this)]) # if result is None: raise RuntimeWarning("Calculator can't calculate value") value = sc_utils.createNodeElement(session, segment, sc.SC_CONST) bin_rel = sc_utils.createPairBinaryOrientFull(session, segment, arc, value, sc.SC_CONST) a = sc_utils.createPairPosPerm(session, segment, relation, bin_rel[0], sc.SC_CONST) elements = translate_value(session, segment, value, result) elements.extend([value, graph, a, relation]) elements.extend(bin_rel) answer = sc_utils.createNodeElement(session, segment, sc.SC_CONST) for el in elements: sc_utils.createPairPosPerm(session, segment, answer, el, sc.SC_CONST) sc_utils.makeAnswer(session, segment, question, answer)