Last active
February 1, 2018 16:59
-
-
Save MarneeDear/f15693b799a6085de5653daf4e39a886 to your computer and use it in GitHub Desktop.
py2neo v3 create nodes and relationships
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from py2neo import Node, Graph, Relationship, PropertyDict | |
from db.types import GraphLabel, GraphRelationship | |
graph_url = 'http://localhost:7474/db/data/' | |
graph_db = Graph(graph_url) | |
# delete everything | |
graph_db.delete_all() | |
publication_label = 'PUBLICATION' | |
paper_label = 'PAPER' | |
author_label = 'AUTHOR' | |
publication = { | |
'label':publication_label, | |
'properties': { | |
'title':'publication name', | |
'topics':['science', 'kittens', 'rainbows'] | |
} | |
} | |
publication_node = Node(publication_label, **publication['properties']) | |
paper_1 = { | |
'label':paper_label, | |
'properties': { | |
'title':'paper 1 title', | |
'date_published': '9/9/2009' | |
} | |
} | |
paper_1_node = Node(paper_label, **paper_1['properties']) | |
paper_2 = { | |
'label':paper_label, | |
'properties':{ | |
'title':'paper 2 title', | |
'date_published':'10/10/2010' | |
} | |
} | |
paper_2_node = Node(paper_label, **paper_2['properties']) | |
author_1 = { | |
'label':author_label, | |
'properties':{ | |
'first_name':'First_1', | |
'last_name': 'Last_1' | |
} | |
} | |
author_1_node = Node(author_label, **author_1['properties']) | |
author_2 = { | |
'label':author_label, | |
'properties':{ | |
'first_name': 'First_2', | |
'last_name': 'Last_2' | |
} | |
} | |
author_2_node = Node(author_label, **author_2['properties']) | |
# build up the nodes which are our publications, papers, and authors | |
# we could do this in a loop | |
# node_list = [publication, paper_1, paper_2, author_1, author_2] | |
# for node in node_list: | |
# new_node = Node(node['label'], **node['properties']) | |
# print new_node | |
# graph_db.merge(new_node) | |
cited = 'CITED' | |
published = 'PUBLISHED' | |
authored = 'AUTHORED' | |
# create publication and paper relationships | |
published_paper_relationship = Relationship(publication_node, published, paper_1_node) | |
graph_db.merge(published_paper_relationship) | |
published_paper_relationship = Relationship(publication_node, published, paper_2_node) | |
graph_db.merge(published_paper_relationship) | |
# create paper and author relationships | |
paper_author_relationship = Relationship(author_1_node, authored, paper_1_node) | |
graph_db.merge(paper_author_relationship) | |
paper_author_relationship = Relationship(author_2_node, authored, paper_2_node) | |
graph_db.merge(paper_author_relationship) | |
# create paper citation relationships | |
paper_citation_relationship = Relationship(paper_1_node, cited, paper_2_node) | |
graph_db.merge(paper_citation_relationship) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment