繁体   English   中英

如何在Cypher查询语言(Neo4J)中正确使用IF或CASE等条件来成功创建关系?

[英]How to correctly use conditionals like IF or CASE in Cypher query language (Neo4J) to successfully create relationships?

我没有在Neo4J中建立关系,我想鼓励任何成功做到这一点的人来帮助我。

理想的结果是对谁是谁的兄弟,谁是谁的母亲进行详细的可视化显示。 我想从单亲子关系中提取数据。 这意味着,如果节点具有其名称与字段node.name对应的父节点且节点的性别为F,则设置[:relatedTo {:how ['daughter']}]之类的关系。

我有一个看起来像这样的CSV文件。

1;Jakub Hančin;M;1994;4;3
2;Hana Hančinová;F;1991;4;3
3;Alojz Hančin jr.;M;1968;15;14
4;Viera Hančinová;F;1968;9;
5;Miroslav Barus sr.;M;1965;9;
6;Helena Barusová;F;1942;;
7;Miroslav Barus jr.;M;1995;6;5
8;Martin Barus;M;1991;6;5
9;Hedviga Barusová;F;1945;;
10;Peter Hančin jr.;M;1991;12;13
11;Zuzka Hančinová;F;1996;12;13
12;Andrea Hančinová;F;1966;;
13;Peter Hančin sr.;M;1965;15;14
14;Alojz Hančin sr.;M;1937;;
15;Anna Hančinová;F;1945;;

这是我的个人家谱,我想通过Neo4J对其进行可视化。 这是一个用Excel创建的文件,我在其中将信息放入表中并创建数据库。 然后将其转换为可导入Neo4J的.csv文件。 我已经成功安装了它,现在可以编写Cypher脚本来管理它了。 到目前为止,我有这个:

LOAD CSV WITH HEADERS FROM "file:c:/users/Skelo/Desktop/Family Database/Family Database CSV UTF.txt" AS row FIELDTERMINATOR ';'
CREATE (n:Person)
SET n = row, n.name = row.name,
  n.personID = toInt(row.personID) , n.G = row.G,
  n.Year = toInt(row.Year), n.Parent1 = row.Parent1, n.Parent2 = row.Parent2
WITH n

MATCH(n:Person),(b:Person)
WHERE n.Parent1 = b.name OR n.Parent2 = b.name

CASE b.gender
WHEN b.gender = 'F' THEN
CREATE (b)-[:isRelatedTo{how:['mother']}]->(n)
WHEN b.gender = 'M' THEN
CREATE (b)-[:isRelatedTo{how:['father']}]->(n)
RETURN *

显示的错误消息如下所示。

Invalid input 'A': expected 'r/R' (line 11, column 2 (offset: 389))
"CASE b.gender"
  ^

不知何故,我不明白为什么这不起作用。 为什么不能使用Case命令? Neo4J不允许我使用CREATE命令(它期望C后面的字母R而不是A,这意味着CREATE命令)。

同样,我要这样做。 我有一些正确设置的节点。 对于每个节点(它们代表人),我想查看Parent1和Parent2字段,并查找与这些字段之一名称相同的节点。 如果匹配其中一个,我想将该节点标记为上一个节点的父亲或母亲(根据节点的性别(代表该人)来判断)。

这样,我想用许多关系填充图数据库,但是在这个非常基本的步骤中我失败了。 请帮我。 如果可以的话,请不仅说出什么是错误的,为什么是错误的,还请提出一个可行的解决方案。

由于您要创建isRelatedTo关系而不考虑性别,并且仅该属性取决于条件,因此请执行以下操作:

CREATE (b)-[r:isRelatedTo]->(n)
SET r.how = CASE b.gender WHEN 'F' THEN 'mother' ELSE 'father' END

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM