Dataframe 在Neo4j Cypher中创建同类节点的关系

Dataframe 在Neo4j Cypher中创建同类节点的关系,dataframe,graph,neo4j,cypher,Dataframe,Graph,Neo4j,Cypher,以下是我正在使用的数据帧的一部分: A_PERSON, B_PERSON, MESSAGE_TIME SARAH, RON, 13:20 pm RON, TIM, 13:33 pm TIM, MARTHA, 13:45 pm RON, LARRY, 13:35 pm LARRY, JIM, 13:38 pm 我想创建一个图表,显示这些人之间发送的所有消息,箭头应该显示消息的时间 我试过这样的方法: load csv with headers from "file:\\df.csv" as r

以下是我正在使用的数据帧的一部分:

A_PERSON, B_PERSON, MESSAGE_TIME
SARAH, RON, 13:20 pm
RON, TIM, 13:33 pm
TIM, MARTHA, 13:45 pm
RON, LARRY, 13:35 pm
LARRY, JIM, 13:38 pm
我想创建一个图表,显示这些人之间发送的所有消息,箭头应该显示消息的时间

我试过这样的方法:

load csv with headers 
from "file:\\df.csv" as row 
create(m: Message {a_person: row.A_PERSON, b_person: row.B_PERSON, time: row.MESSAGE_TIME})
所以后来我可以匹配他们,但这似乎是不可能的。由于第二个和第三个标签,结果中有一些A_PERSON重复。所以我不知道如何创建唯一的节点并将它们相互连接。
有可能吗?如果是,那么怎么做?

关键是使用
MERGE
子句<代码>合并每个人,然后
合并
两人之间的关系

MERGE
将创建不存在的人员,或
匹配不存在的人员

LOAD CSV WITH HEADERS 
FROM "file:\\df.csv" AS row 
MERGE (a_person:Person {name: row.A_PERSON})
MERGE (b_person:Person {name: row.B_PERSON})
MERGE (a_person)-[:SENT_MESSAGE {time: row.MESSAGE_TIME}]->(b_person)
或者,如果您希望消息成为一个节点,您可以这样做

LOAD CSV WITH HEADERS 
FROM "file:\\df.csv" AS row 
MERGE (a_person:Person {name: row.A_PERSON})
MERGE (b_person:Person {name: row.B_PERSON})
MERGE (a_person)-[:SENT_MESSAGE]->(:Message {time: row.MESSAGE_TIME})-[:TO]->(b_person)

多谢各位@戴夫,你能帮忙吗?