Skip to content

Instantly share code, notes, and snippets.

@A1ik
Forked from MarneeDear/py2neo_nodes_rels.py
Created November 14, 2016 19:22
Show Gist options
  • Save A1ik/bfc3bbb78031afbaf7f23d0d751bcc9b to your computer and use it in GitHub Desktop.
Save A1ik/bfc3bbb78031afbaf7f23d0d751bcc9b to your computer and use it in GitHub Desktop.

Revisions

  1. @MarneeDear MarneeDear renamed this gist Sep 24, 2016. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  2. @MarneeDear MarneeDear created this gist Sep 24, 2016.
    91 changes: 91 additions & 0 deletions gistfile1.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,91 @@
    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)