Esempio n. 1
0
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'
Esempio n. 2
0
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
Esempio n. 3
0
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'
Esempio n. 4
0
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
Esempio n. 5
0
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"
Esempio n. 7
0
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
Esempio n. 8
0
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()
Esempio n. 9
0
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
Esempio n. 10
0
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'