def update_rel_by_cypher(st_node, end_node, rel_type, attribute_dict): c_string = "START start_node=node:node_index(uid='%s'),end_node=node:node_index(uid='%s') MATCH (start_node)-[r:%s]->(end_node) RETURN r" % ( st_node, end_node, rel_type) result = graph.run(c_string) for item in result: rel = item[0] print type(rel) c_delete_string = "START start_node=node:node_index(uid='%s'),end_node=node:node_index(uid='%s') MATCH (start_node)-[r:%s]->(end_node) RETURN r" % ( st_node, end_node, rel_type) graph.run(c_delete_string) for k, v in attribute_dict.iteritems(): rel[k] = v graph.create(rel)
def create_tag(tag_id, attribute_dict=dict()): Index = ManualIndexManager(graph) # manage index index_name = "tag_index" tag_index = Index.get_or_create_index(Node, index_name) exist = tag_index.get("tag", tag_id) if exist: tag_node = exist[0] for k, v in attribute_dict.iteritems(): tag_node[k] = v graph.push(tag_node) else: tag_node = Node("Tag", tag=tag_id) # create event node with only one event_id for k, v in attribute_dict.iteritems(): tag_node[k] = v graph.create(tag_node) tag_index.add("tag", tag_id, tag_node) return True
def create_event(event, attribute_dict=dict()): Index = ManualIndexManager(graph) # manage index event_index = Index.get_or_create_index(Node, event_index_name) exist = event_index.get("event", event) if exist: event_node = exist[0] for k, v in attribute_dict.iteritems(): event_node[k] = v graph.push(event_node) else: event_node = Node( "Event", event_id=event) # create event node with only one event_id for k, v in attribute_dict.iteritems(): event_node[k] = v graph.create(event_node) event_index.add("event", event, event_node) return True
def create_group(group_id, attribute_dict=dict()): Index = ManualIndexManager(graph) # manage index group_index = Index.get_or_create_index(Node, group_index_name) exist = group_index.get("group", group_id) if exist: group_node = exist[0] for k, v in attribute_dict.iteritems(): group_node[k] = v graph.push(group_node) else: group_node = Node( "Group", group=group_id) # create event node with only one event_id for k, v in attribute_dict.iteritems(): group_node[k] = v graph.create(group_node) group_index.add("group", group_id, group_node) return True
def create_rel_uid2event(uid_list, event_id, rel_type): 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() for user in uid_list: exist = node_index.get("uid", user) if exist: node = exist[0] else: node = Node("User", uid=user) graph.create(node) node_index.add("uid", user, node) event_node = event_index.get("event", event_id)[0] rel = Relationship(node, rel_type, event_node) tx.create(rel) count += 1 if count % 100 == 0: tx.commit() print count tx = graph.begin() tx.commit()
def create_rel_from_uid2group(uid_list, group_id): 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() for user in uid_list: exist = node_index.get("uid", user) if exist: node = exist[0] else: node = Node("User", uid=user) graph.create(node) node_index.add("uid", user, node) group_node = group_index.get("group", 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()