我有一个分类作为 Neo4j 图。基本结构是这样的:
taxonomyName -HAS_ROOT_TERM-> root -IS_BROADER_THAN-> term -IS_BROADER_THAN-> term'-IS_BROADER_THAN-> term'' - ...
现在我想要一个给定的术语 - 例如术语'' - 它从分类根的路径(或多个路径;请注意,可能有多个具有多个合格根的分类,该结构实际上是一个多层次结构):
START n=node:index("id:term''Id")
MATCH p = taxonomy-[:HAS_ROOT_TERM]->r-[:IS_BROADER_THAN*]->n
RETURN TAIL(EXTRACT(n in NODES(p) : n.id))
排除了第TAIL
一个节点,我没有取回分类节点本身。这很好用,除非我直接查询根词。然后什么都没有返回。当然:我搜索至少包含三个元素的路径,分类节点、根节点和根的任何后代。现在我需要表达这一点r
并且n
可能是平等的。我试图使IS_BROADER_THAN
关系成为可选的,但是由于找不到模式,所以只返回了 null 。
那么如何将我的查询限制在包含根项的路径并允许长度为 1 且仅包含根项的路径?
谢谢!