Neo4j 返回密码的密码查询

Neo4j 返回密码的密码查询,neo4j,cypher,directed-acyclic-graphs,Neo4j,Cypher,Directed Acyclic Graphs,我有一个有许多节点的DAG。我正在寻找一个cypher查询,以返回给定节点的Markov-Blanket 附言:A的父母、A的孩子及其孩子的其他父母组成 我不知道您希望以什么格式返回数据,我发明了标签和关系类型,但您可以从以下内容开始: MATCH (parent:Person)-[:PARENT_OF]->(a:Person)-[:PARENT_OF]->(child:Person) WHERE a.identifier = "theOneYouWant" WITH a, pare

我有一个有许多节点的DAG。我正在寻找一个cypher查询,以返回给定节点的
Markov-Blanket

附言:A的父母、A的孩子及其孩子的其他父母组成


我不知道您希望以什么格式返回数据,我发明了标签和关系类型,但您可以从以下内容开始:

MATCH (parent:Person)-[:PARENT_OF]->(a:Person)-[:PARENT_OF]->(child:Person)
WHERE a.identifier = "theOneYouWant"
WITH a, parent, child
MATCH (otherParent:Person)-[:PARENT_OF]->(child)
WHERE otherParent <> a
RETURN parent, a, otherParent, child
匹配(父:人)-[:父]->(a:Person)-[:父]->(子:人)
其中a.identifier=“theOneYouWant”
有一个孩子、父母、孩子
匹配(其他父项:人)-[:父项]->(子项)
父母在哪里
返回父级、a、其他父级、子级

所有关系都必须存在吗?i、 e.A需要是个孩子吗?A需要孩子吗?A的孩子需要其他父母吗

如果某些关系是可选的,那么我认为您需要这样做

match (a:A)
optional match (a)<-[:PARENT_OF]-(p1)
optional match (a)-[:PARENT_OF]->(c)
optional match (p2)-[:PARENT_OF]->(c)
return *
匹配(a:a)
选配(a)(c)
可选匹配(p2)-[:父项]->(c)
返回*

这将返回所有父项、所有子项和所有子项的其他父项。

使用创建一个示例数据集,并准确地勾画查询的预期结果应该是什么样的
a
可能没有父项和/或子项。但是是的,所有的节点和关系都是相同的类型。好吧,如果所有的关系都是可选的。i、 即使是图中图的外围节点也有一个马尔可夫覆盖,那么我认为上面的密码就满足了。