0
votes

I am trying to load the data from the csv and display the nodes along with the relations as the graph in Neo4j. I am able to load the entity1 and entity2 in Neo4j, but unable to load the relations from the csv. My csv file looks like thisenter image description here

Below is my CYPHER Code

LOAD CSV WITH HEADERS FROM "file:////csvFiles/Fraud_Triplets_Neo4j.csv" AS csvLine
MERGE (a:Subject {
 Object1:csvLine.Entity1
,display:csvLine.Entity1
 });


LOAD CSV WITH HEADERS FROM
"file:////csvFiles/Fraud_Triplets_Neo4j.csv" AS csvLine 
MERGE (b:Object {  Object2:csvLine.Entity2 ,display:csvLine.Entity2  });

  LOAD CSV WITH HEADERS FROM "file:////csvFiles/Fraud_Triplets_Neo4j.csv" AS csvLine
MATCH (a:Subject { Object1: csvLine.Entity1})
MATCH (b:Object { Object2: csvLine.Entity2})
MERGE ((a) -[:Relation{r:csvLine.Relation}]-> (b))

I am getting this graph

Kindly let me know, how should i specify relation from csv file.

1
What is wrong with the resultant graph? What is the expected behavior?Bruno Peres
I guess you are trying to create relationships between your nodes with the type based on the column Relation, am I right? Something like (Michael Roberts)-[:followed up]->(Dr. Baker)Bruno Peres
@Bruno Peres: Exactly. I want (Michael Roberts)-[:followed up]->(Dr. Baker) in the relationDeepa Huddar
I believe that the answer I provided fits the requirements. Am I wrong?Bruno Peres
It does. There is slight issue in the code. I will update it.Deepa Huddar

1 Answers

1
votes

I don't know if I understood you question completely, but I guess you are trying to create the relationship with types based on column "Relation" of your .CSV file.

You can do it installing APOC Procedures and using apoc.create.relationship procedure.

Also, your Cypher query can be simplified. You don't need to call LOAD CSV 3 times. Try something like this:

LOAD CSV WITH HEADERS FROM "file:////csvFiles/Fraud_Triplets_Neo4j.csv" AS csvLine

MERGE (a:Subject {
    Object1:csvLine.Entity1,
    display:csvLine.Entity1
});

MERGE (b:Object {
    Object2:csvLine.Entity2,
    display:csvLine.Entity2
});

CALL apoc.create.relationship(a, csvLine.Relation, {}, b) YIELD rel

RETURN *

Note: Remember to install APOC Procedures based on the version of Neo4j you are using. Take a look in the Version Compatibility Matrix.