java - 在Neo4j中,使用Java API时有什么方法可以限制路径中的节点和关系类型吗?

标签 java neo4j graph-databases path-finding neo4j-java-api

我有源节点和目标节点,我想对路径中的节点和关系类型进行限制。我正在使用Neo4j Java API .

考虑以下玩具示例,

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

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

(person) -[worksAt]-> (company) -[CompetitorOf]-> (company) <-[worksAt]- (person)

这可以通过密码查询轻松实现,但我想知道是否有任何方法可以使用 Java API 来实现。

enter image description here

注意:

  1. 请不要建议对路径长度进行限制,因为 并不能解决问题。我想限制节点和关系 输入路径。
  2. 上面提到的示例是玩具示例。我尝试使用的图表更加复杂,并且有许多可能的路径无法遍历和验证各个路径。

最佳答案

从你的问题中并不清楚你实际上想要计算什么。你有A和B,想知道他们的公司是否是竞争对手?您是否有 C,并且想找出他们的 friend 中有谁在竞争公司工作?

无论如何,如果您使用遍历 API(您正在谈论路径),您可以编写自定义 PathExpander它将使用 last relationshipPath确定下一个要遍历的关系类型。

如果您只是手动遍历关系,我并没有真正看到问题:只需调用 Node.getRelationships(RelationshipType, Direction)在每个步骤中使用正确的参数。

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

关于java - 在Neo4j中,使用Java API时有什么方法可以限制路径中的节点和关系类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40055091/

相关文章:

java - 如果在使用 JAVA 和 APACHE-POI 3.6 访问时打开 excel,如何关闭它?`

ruby-on-rails - Neo4j多个neo4j实例

neo4j - 获取满足 Neo4J 条件的断开集群的数量

javascript - 无法通过 JavaScript 中的 $post 在 Neo4j 中创建索引

node.js - 如何使用nodejs在neo4j中创建标签

java - 限制 iOS 和 Android 的入站流量

java - 无法实例化类 packageName.pageName

java关于处理字符异常

neo4j - 如何检索多个深度关系的节点 Neo4j Database Cypher?

optimization - neo4j广度优先遍历内存问题