Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Neo4j中,在使用JavaAPI时,是否有任何方法限制路径中的节点和关系类型?_Java_Neo4j_Graph Databases_Pathfinder_Neo4j Java Api - Fatal编程技术网

在Neo4j中,在使用JavaAPI时,是否有任何方法限制路径中的节点和关系类型?

在Neo4j中,在使用JavaAPI时,是否有任何方法限制路径中的节点和关系类型?,java,neo4j,graph-databases,pathfinder,neo4j-java-api,Java,Neo4j,Graph Databases,Pathfinder,Neo4j Java Api,我有源节点和目标节点,我想限制路径中的节点和关系类型。我正在使用 以下面的玩具为例 我们有三个人节点A、B和C 源节点:A和目标节点:B。它们之间可能存在许多其他类型的路径。我想将路径限制为特定格式,如- (个人)-[worksAt]->(公司)-[CompetitorOf]->(公司)从你的问题来看,你实际上在计算什么并不清楚。你是否有A和B,想知道他们的公司是否是竞争对手?你有C语言,想知道他们的朋友中有谁在竞争对手的公司工作吗 无论如何,如果您使用的是遍历API(您谈论的是路径),那么您可

我有源节点和目标节点,我想限制路径中的节点和关系类型。我正在使用

以下面的玩具为例

我们有三个人节点A、B和C

源节点:A目标节点:B。它们之间可能存在许多其他类型的路径。我想将路径限制为特定格式,如-


(个人)-[worksAt]->(公司)-[CompetitorOf]->(公司)从你的问题来看,你实际上在计算什么并不清楚。你是否有A和B,想知道他们的公司是否是竞争对手?你有C语言,想知道他们的朋友中有谁在竞争对手的公司工作吗

无论如何,如果您使用的是遍历API(您谈论的是路径),那么您可以编写一个自定义,它将使用中的来确定下一种要遍历的关系类型

如果您只是手动遍历这些关系,我看不出有什么问题:只需在每一步使用适当的参数调用即可

与您在Cypher中所做的相反,您没有在路径中声明要查找的模式,您只需计算路径以遵循所需的模式。

在仔细阅读并使用我得到的以下解决方案的代码进行实验后-

要筛选通过创建自定义路径探索的路径,请使用

在我们的示例中,
sourceNode
将是节点“A”,而
targetNode
将是节点“B”

PathExpanderBuilder pathExpanderBuilder = PathExpanderBuilder.empty();

pathExpanderBuilder.add(RelationshipType.withName("worksat"), Direction.OUTGOING);
pathExpanderBuilder.add(RelationshipType.withName("competitorof"), Direction.BOTH);
pathExpanderBuilder.add(RelationshipType.withName("worksat"), Direction.INCOMING);

PathExpander<Object> pathExpander pathExpander = pathExpanderBuilder.build();
PathFinder<Path> allPathFinder = GraphAlgoFactory.allSimplePaths(this.pathExpander, 4);


Iterable<Path> allPaths = allPathFinder.findAllPaths(sourceNode, targetNode);