Neo4J Java API - 特定节点标签或排除特定关系的最短路径

Neo4J Java API - Shortest Path for specific node label or excluding a particular relationship

我正在使用 Neo4J 构建一个简单的应用程序,我正在使用 Java API.

我的图中有两个节点标签
1. Class
2.实例

我想得到两个节点之间的最短路径,(a:Instance)(b:Instance)

假设有2条路径连接节点。

路径 1:

(a:Instance)-[:is_a]->(x:Class)<-[:is_a]-(b:Instance)


路径 2:

(a:Instance)-[:relType1]->(z:Instance)-[:relType2]->(y:Instance)<-[relType3]-(b:Instance)


我想要的结果是 Path 2。我希望路径只涉及带有 Instance 标签的节点。或者,如果我不能这样做,我想要不包含 is_a 关系类型的路径。

我现在的代码是这样的:

PathFinder<Path> finder = GraphAlgoFactory.shortestPath(PathExpanders.allTypesAndDirections(), CommonCons.MAX_HOP );
Node startNode;
Node endNode;

Path path = finder.findSinglePath(startNode, endNode);

在 PathExpanders 中,我没有看到存在针对特定节点标签的过滤器。而且我在 PathExpander 中看不到可以包含所有关系类型 除了 一种特定的关系类型。

有办法实现吗??
我只是不想在我的路径中存在带有 Class 标签或与 is_a 类型的关系的节点.

对不起我的英语

谢谢

我解决了

我使用 PathExpanderBuilder 构建了我自己的 PathExpander。首先,我将 PathExpander 设置为涵盖所有类型和方向。之后,我从扩展器中删除了 is_a RelationshipType。

我的最终代码是这样的:

PathExpanderBuilder peBuilder = PathExpanderBuilder.allTypesAndDirections().remove(RelationshipType.withName(CommonCons.REL_IS_A));
PathFinder<Path> finder = GraphAlgoFactory.shortestPath(peBuilder.build(), CommonCons.MAX_HOP );
Node startNode;
Node endNode;

Path path = finder.findSinglePath(startNode, endNode);