i have 2 csv files nodes , edges.
nodes: big, adjective arm, noun face, noun, best, adjective edges: big, face best, friend face, arm
i want create graph relationships edges , add nodes group: noun , adjective.
i use command create relationships:
load csv 'file:copperfield_edges.csv' line merge (g:g {word1 : line[0]}) line, g merge (j:j {word2 : line[1]}) g,j merge (g)-[:from_to]->(j);
but in case each word appears 2 times. how can unique relationships of words , add noun , adjective group?
you're assignen g
label nodes in first column , j
label in second column. since have 1 identifier (e.g. big
, face
) every word, use 1 label all, e.g. word
try following:
load csv 'file:copperfield_edges.csv' line merge (g:word {word : line[0]}) merge (j:word {word : line[1]}) merge (g)-[:from_to]->(j);
based on nodes csv file, can assign additional label indicating if word adjective or noun:
load csv 'file:nodes.csv' line merge (w:word {word: line[0]}) foreach (n in (case when line[1] = "adjective" [1] else [] end) | set w :adjective ) foreach (n in (case when line[1] = "nound" [1] else [] end) | set w :noun )
since cannot set labels dynamically, i've had use foreach
trick documented @ http://www.markhneedham.com/blog/2014/06/17/neo4j-load-csv-handling-conditionals/
if graph more handful of nodes consider using creating index before running load csv
:
create index on :word(word)
Comments
Post a Comment