我对cypher很新,只是想尝试启动一些简单的查询来让自己找到位置。马上,我遇到了一个对我来说很奇怪的案子。
请注意,标记为person
的节点均具有属性:dateOfBirth
首先要求标记为person
的所有节点由标记为Identifier
的节点标识,该节点又是标记为IdentifierClass
的节点的实例。
MATCH (p:person)-[:is_identified_by]->
(id:Identifier)-[:is_instance_of]->(idClass:IdentifierClass)
RETURN p
结果如预期:
p
{
"dateOfBirth": "11/13/2008"
}
{
"dateOfBirth": "11/13/2008"
}
{
"dateOfBirth": "11/13/2008"
}
现在这是我真正想要运行的查询。我们现在指定IdentifierClass
必须具有值为name
的属性id_type_1
。
MATCH (p:person)-[:is_identified_by]->
(id:Identifier)-[:is_instance_of]->(idClass:IdentifierClass{name:'id_type_1'})
RETURN p
结果是:
p
{
}
{
}
{
}
因此返回了相同数量的结果,但现在无法访问p
的属性。为什么添加这种额外的特异性导致变量p
“上游”的变化?
此问题已得到解决。查询运行良好,实际上图中有意外数据导致了这些结果。几个“人”节点缺少属性。