def create_node_or_node_rel(node_key1, node1_id, node1_index_name, rel, node_key2, node2_id, node2_index_name): Index = ManualIndexManager(graph) node_index = Index.get_index(Node, node1_index_name) group_index = Index.get_index(Node, node2_index_name) print node_index print group_index tx = graph.begin() node1 = node_index.get(node_key1, node1_id)[0] node2 = group_index.get(node_key2, node2_id)[0] if not (node1 and node2): print "node does not exist" return '1' c_string = "START start_node=node:%s(%s='%s'),end_node=node:%s(%s='%s') MATCH (start_node)-[r:%s]->(end_node) RETURN r" % ( node1_index_name, 'pname', node1_id, node2_index_name, 'pname', node2_id, rel) print c_string result = graph.run(c_string) print result rel_list = [] for item in result: rel_list.append(item) print rel_list if not rel_list: rel = Relationship(node1, rel, node2) graph.create(rel) print "create success" else: print "The current two nodes already have a relationship" return '0' return '2'
def create_node_or_node_rel(node_key1, node1_id, node1_index_name, rel, node_key2, node2_id, node2_index_name): Index = ManualIndexManager(graph) node_index = Index.get_index(Node, node1_index_name) group_index = Index.get_index(Node, node2_index_name) print node_index print group_index tx = graph.begin() node1 = node_index.get(node_key1, node1_id)[0] node2 = group_index.get(node_key2, node2_id)[0] if not (node1 and node2): print "node does not exist" return 'does not exist' c_string = "START start_node=node:%s(%s='%s'),end_node=node:%s(%s='%s') MATCH (start_node)-[r:%s]->(end_node) RETURN r" % ( node1_index_name, node_key1, node1_id, node2_index_name, node_key2, node2_id, rel) # return c_string result = graph.run(c_string) # print result # rel_list = [] for item in result: rel_list.append(item) # print rel_list if rel in rel_list: return 'has relation already' rel = Relationship(node1, rel, node2) graph.create(rel) print "create success" return True
def create_rel(node_key1, node1_list, node1_index_name, rel, node_key2, node2_id, node2_index_name, submit_user): Index = ManualIndexManager(graph) node_index = Index.get_index(Node, node1_index_name) group_index = Index.get_index(Node, node2_index_name) tx = graph.begin() print node1_list, '00990909000000000000' for node1_id in node1_list: print node1_id, '----==!!!==----' node1 = node_index.get(node_key1, node1_id) node1 = node_index.get(node_key1, node1_id)[0] node2 = group_index.get(node_key2, node2_id)[0] if not (node1 and node2): print "node does not exist" return 'node does not exist' c_string = "START start_node=node:%s(%s='%s'),end_node=node:%s(%s='%s') MATCH (start_node)-[r:%s]->(end_node) RETURN r" % ( node1_index_name, node_key1, node1_id, node2_index_name, node_key2, node2_id, rel) result = graph.run(c_string) rel_list = [] for item in result: rel_list.append(item) if rel not in rel_list: rel2 = Relationship(node1, rel, node2) graph.create(rel2) print "create success" return 'success'
def show_relation(node_key1, node1_id, node1_index_name, node_key2, node2_id, node2_index_name): Index = ManualIndexManager(graph) node_index = Index.get_index(Node, node1_index_name) group_index = Index.get_index(Node, node2_index_name) print node_index print group_index tx = graph.begin() node1 = node_index.get(node_key1, node1_id)[0] node2 = group_index.get(node_key2, node2_id)[0] if not (node1 and node2): print "node does not exist" return 'does not exist' c_string = "START start_node=node:%s(%s='%s'),end_node=node:%s(%s='%s') MATCH (start_node)-[r]-(end_node) RETURN r" % ( node1_index_name, node_key1, node1_id, node2_index_name, node_key2, node2_id) # return c_string print c_string result = graph.run(c_string) # print result rel_list = [] for item in result: relation = dict(item)['r'].type() relation_ch = relation_dict[relation] if relation in [other_rel, event_other, organization_tag, user_tag]: relation_name = dict(item)['r']['name'] relaiton_name_list = relation_name.split(',') for i_name in relaiton_name_list: relation_ch2 = relation_ch + '-' + i_name relation = relation + '&' + relation_name rel_list.append(relation_ch2) else: rel_list.append(relation_ch) return rel_list
def create_rel(node_key1, node1_list, node1_index_name, rel, node_key2, node2_id, node2_index_name, submit_user): Index = ManualIndexManager(graph) node_index = Index.get_index(Node, node1_index_name) group_index = Index.get_index(Node, node2_index_name) tx = graph.begin() for node1_id in node1_list: # print node2_id # print node1_id,'-----' # node1 = node_index.get(node_key1, node1_id) try: node1 = node_index.get(node_key1, node1_id)[0] # print node1, node1_id,'node1 hey2222!!' except: continue # print node1, node1_id,'node1 hey!!' return 'uid1 not exist' node2 = group_index.get(node_key2, node2_id)[0] if not (node1 and node2): print "node does not exist" return 'node does not exist' c_string = "START start_node=node:%s(%s='%s'),end_node=node:%s(%s='%s') MATCH (start_node)-[r:%s]->(end_node) RETURN r" % ( node1_index_name, node_key1, node1_id, node2_index_name, node_key2, node2_id, rel) result = graph.run(c_string) rel_list = [] for item in result: print item,'00000000000' rel_list.append(item) if rel not in rel_list: rel2 = Relationship(node1, rel, node2) graph.create(rel2) print "create success" else: return 'has relation' return '1'
def create_node_or_node_rel(node_key1, node1_id, node1_index_name, rel, node_key2, node2_id, node2_index_name): Index = ManualIndexManager(graph) node_index = Index.get_index(Node, node1_index_name) group_index = Index.get_index(Node, node2_index_name) tx = graph.begin() if len(node_index.get(node_key1, node1_id)) == 0: return 'Node1 does not exist' if len(group_index.get(node_key2, node2_id)) == 0: return "Node2 does not exist" node1 = node_index.get(node_key1, node1_id)[0] node2 = group_index.get(node_key2, node2_id)[0] if not (node1 and node2): return "Node1 and Node2 do not exist" c_string = "START start_node=node:%s(%s='%s'),end_node=node:%s(%s='%s') MATCH (start_node)-[r:%s]->(end_node) RETURN r" \ % (node1_index_name, node_key1, node1_id, node2_index_name, node_key2, node2_id, rel) result = graph.run(c_string) # print result rel_list = [] for item in result: rel_list.append(item) if not rel_list: rel = Relationship(node1, rel, node2) graph.create(rel) return "Create success" else: return "The current two nodes already have a relationship"
def create_node_or_node_rel(node_key1, node1_id, node1_index_name, rel_union, node_key2, node2_id, node2_index_name): Index = ManualIndexManager(graph) node_index = Index.get_index(Node, node1_index_name) group_index = Index.get_index(Node, node2_index_name) print node_index print group_index tx = graph.begin() node1 = node_index.get(node_key1, node1_id)[0] node2 = group_index.get(node_key2, node2_id)[0] if not (node1 and node2): print "node does not exist" return 'does not exist' # c_string = "START start_node=node:%s(%s='%s'),end_node=node:%s(%s='%s') MATCH (start_node)-[r:%s]->(end_node) RETURN r" % ( # node1_index_name,node_key1, node1_id, node2_index_name, node_key2, node2_id, rel) # # return c_string # result = graph.run(c_string) # # print result # rel_list = [] # for item in result: # rel_list.append(item) # # print rel_list # if rel in rel_list: # return 'has relation already' rel = rel_union.split(',')[0] if rel in [other_rel, event_other, organization_tag, user_tag]: rel_name = rel_union.split(',')[1] c_string = "START start_node=node:%s(%s='%s'), end_node=node:%s(%s='%s') \ MATCH (start_node)-[r:%s]->(end_node) RETURN type(r), r.name" % (node1_index_name,\ node_key1, node1_id, node2_index_name, node_key2, node2_id, rel) result = graph.run(c_string) exist_relation = [] for i in result: dict_i = dict(i) exist_relation = dict_i['r.name'].split(',') if exist_relation: del_string = "START start_node=node:%s(%s='%s'),end_node=node:%s(%s='%s') \ MATCH (start_node)-[r:%s]->(end_node) delete r" % (node1_index_name,\ node_key1, node1_id, node2_index_name, node_key2, node2_id, rel) result = graph.run(del_string) exist_relation.append(rel_name) exist_relation = [i for i in set(exist_relation)] add_relation_string = ','.join(exist_relation) c_string = "START start_node=node:%s(%s='%s'),end_node=node:%s(%s='%s')\ create (start_node)-[r:%s {name:'%s'} ]->(end_node) " %(node1_index_name,\ node_key1, node1_id, node2_index_name, node_key2, node2_id, rel, add_relation_string) result = graph.run(c_string) else: rel = Relationship(node1, rel, node2) graph.create(rel) print "create success" return True
def create_rel_from_uid2group(node_key, uid_list, node_index_name, group_rel, group_key, group_id, group_index_name): count = 0 Index = ManualIndexManager(graph) node_index = Index.get_index(Node, node_index_name) group_index = Index.get_index(Node, group_index_name) tx = graph.begin() if not (node_index and group_index): print "node or group does not exist" return None for uid in uid_list: node = node_index.get(node_key, uid)[0] group_node = group_index.get(group_key, group_id)[0] rel = Relationship(node, group_rel, group_node) tx.create(rel) count += 1 if count % 100 == 0: tx.commit() print count tx = graph.begin() tx.commit()
def show_relation(node_key1, node1_id, node1_index_name, rel, node_key2, node2_id, node2_index_name): Index = ManualIndexManager(graph) node_index = Index.get_index(Node, node1_index_name) group_index = Index.get_index(Node, node2_index_name) print node_index print group_index tx = graph.begin() node1 = node_index.get(node_key1, node1_id)[0] node2 = group_index.get(node_key2, node2_id)[0] if not (node1 and node2): print "node does not exist" return 'does not exist' c_string = "START start_node=node:%s(%s='%s'),end_node=node:%s(%s='%s') MATCH (start_node)-[r:%s]->(end_node) RETURN r" % ( node1_index_name, node_key1, node1_id, node2_index_name, node_key2, node2_id, rel) # return c_string result = graph.run(c_string) # print result # rel_list = [] for item in result: rel_list.append(item) return rel_list
def nodes_rels(list): result = '' count = 0 Index = ManualIndexManager(graph) node_index = Index.get_index(Node, node_index_name) event_index = Index.get_index(Node, event_index_name) tx = graph.begin() if not (node_index and event_index): print "node or group does not exist" return "0" for item in list: node1_key = get_type_key(item[0][0]) node2_key = get_type_key(item[2][0]) node1_uid = item[0][1] node2_uid = item[2][1] rel = item[1] if node1_key == '' or node2_key == '' or node1_uid == '' or node2_uid == '' or rel == '': continue flag = 0 if node1_key == "uid": if node2_key == 'uid': node1 = node_index.get(node1_key, node1_uid) if (node1 == []): result = result + ",%d" % node1_uid flag = 1 node1 = node1[0] node2 = node_index.get(node2_key, node2_uid) if (node2 == []): result = result + ",%d" % node2_uid flag = 1 node2 = node2[0] print 11 else: node1 = node_index.get(node1_key, node1_uid) if (node1 == []): result = result + ",%d" % node1_uid flag = 1 else: node1 = node1[0] node2 = event_index.get(node2_key, node2_uid) if (node1 == []): result = result + ",%d" % node2_uid flag = 1 else: node2 = node2[0] print 12 else: if node2_key == 'uid': node1 = event_index.get(node1_key, node1_uid) if (node1 == []): result = result + ",%d" % node1_uid flag = 1 else: node1 = node1[0] node2 = node_index.get(node2_key, node2_uid) if (node1 == []): result = result + ",%d" % node2_uid flag = 1 else: node2 = node2[0] print 21 else: node1 = event_index.get(node1_key, node1_uid) if (node1 == []): result = result + ",%d" % node1_uid flag = 1 else: node1 = node1[0] node2 = event_index.get(node2_key, node2_uid) if (node1 == []): result = result + ",%d" % node2_uid flag = 1 else: node2 = node2[0] print 22 if flag == 0: rel = Relationship(node1, rel, node2) tx.create(rel) count += 1 if count % 100 == 0: tx.commit() tx = graph.begin() tx.commit() return 'success'
def nodes_rels(list): result = '' count = 0 Index = ManualIndexManager(graph) node_index = Index.get_index(Node, node_index_name) event_index = Index.get_index(Node, event_index_name) org_index = Index.get_index(Node, org_index_name) tx = graph.begin() if not (node_index and event_index and org_index): return 'Relation Wrong' for item in list: node1_key = get_type_key(item[0][0]) node2_key = get_type_key(item[2][0]) node1_uid = item[0][1] node2_uid = item[2][1] rel = item[1] if node1_key == '' or node2_key == '' or node1_uid == '' or node2_uid == '' or rel == '': continue flag = 0 if node1_key == "uid": if node2_key == 'uid': #'Person-Person' node1 = node_index.get(node1_key, node1_uid) if (node1 == []): result = result + ",%s" % node1_uid flag = 1 node1 = node1[0] node2 = node_index.get(node2_key, node2_uid) if (node2 == []): result = result + ",%s" % node2_uid flag = 1 node2 = node2[0] elif node2_key == 'event_id': #'Person-Event' node1 = node_index.get(node1_key, node1_uid) if (node1 == []): result = result + ",%s" % node1_uid flag = 1 else: node1 = node1[0] node2 = event_index.get(node2_key, node2_uid) if (node1 == []): result = result + ",%s" % node2_uid flag = 1 else: node2 = node2[0] else: #'Person-Org' node1 = node_index.get(node1_key, node1_uid) if (node1 == []): result = result + ",%s" % node1_uid flag = 1 else: node1 = node1[0] node2 = org_index.get(node2_key, node2_uid) if (node1 == []): result = result + ",%s" % node2_uid flag = 1 else: node2 = node2[0] elif node1_key == 'event_id': #'Event-Person' if node2_key == 'uid': node1 = event_index.get(node1_key, node1_uid) if (node1 == []): result = result + ",%s" % node1_uid flag = 1 else: node1 = node1[0] node2 = node_index.get(node2_key, node2_uid) if (node1 == []): result = result + ",%s" % node2_uid flag = 1 else: node2 = node2[0] elif node2_key == 'event_id': #'Event-Event' node1 = event_index.get(node1_key, node1_uid) if (node1 == []): result = result + ",%s" % node1_uid flag = 1 else: node1 = node1[0] node2 = event_index.get(node2_key, node2_uid) if (node1 == []): result = result + ",%s" % node2_uid flag = 1 else: node2 = node2[0] else: #'Event-Org' node1 = event_index.get(node1_key, node1_uid) if (node1 == []): result = result + ",%s" % node1_uid flag = 1 else: node1 = node1[0] node2 = org_index.get(node2_key, node2_uid) if (node1 == []): result = result + ",%s" % node2_uid flag = 1 else: node2 = node2[0] else: if node2_key == 'uid': #'Org-Person' node1 = org_index.get(node1_key, node1_uid) if (node1 == []): result = result + ",%s" % node1_uid flag = 1 else: node1 = node1[0] node2 = node_index.get(node2_key, node2_uid) if (node1 == []): result = result + ",%s" % node2_uid flag = 1 else: node2 = node2[0] elif node2_key == 'event_id': #'Org-Event' node1 = org_index.get(node1_key, node1_uid) if (node1 == []): result = result + ",%s" % node1_uid flag = 1 else: node1 = node1[0] node2 = event_index.get(node2_key, node2_uid) if (node1 == []): result = result + ",%s" % node2_uid flag = 1 else: node2 = node2[0] else: #'Org-Org' node1 = org_index.get(node1_key, node1_uid) if (node1 == []): result = result + ",%s" % node1_uid flag = 1 else: node1 = node1[0] node2 = org_index.get(node2_key, node2_uid) if (node1 == []): result = result + ",%s" % node2_uid flag = 1 else: node2 = node2[0] if flag == 0: rel = Relationship(node1, rel, node2) tx.create(rel) count += 1 if count % 100 == 0: tx.commit() tx = graph.begin() tx.commit() return 'Relation Success'