我需要根据有序路径从neo4j graphdb中选择节点。
我需要具有以下约束的路径:
1)路径可以跟随类型C,D和传出M
2)类型C必须永远不要遵循类型C或类型M
3)类型D绝不能遵循D型或M型
如何为此编写java评估程序?
答案 0 :(得分:0)
您可以使用PathExpander并可选地(用于执行)BranchState来保持每个分支的位置是a.t.m.而不是在每个评估中查看路径
答案 1 :(得分:0)
这是我最终使用的评估者,其中IS_MEMBER是问题中描述的关系M.
public Evaluation evaluate(final Path path) {
if (path.length() == 0) {
return Evaluation.EXCLUDE_AND_CONTINUE;
}
boolean isOutgoingIS_MEMBER = (
path.lastRelationship().getEndNode() ==
path.endNode() &&
(path.lastRelationship()
.isType(ReqsDb.RelTypes.IS_MEMBER)));
boolean isRelTypeUnique = true;
Iterator<Relationship> i =
path.reverseRelationships().iterator();
i.next();
while (i.hasNext()) {
if (i.next().isType(path.lastRelationship()
.getType())) {
isRelTypeUnique = false;
break;
}
}
boolean included = isOutgoingIS_MEMBER || isRelTypeUnique;
boolean continued = included;
return Evaluation.of(included, continued);
}