问题标签 [neo4j-traversal-api]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
575 浏览

neo4j - 使用 Cypher 以关系权重的递增顺序遍历 Neo4j 图

考虑我有以下带有边权重的图表:

在此处输入图像描述

我想知道我是否可以使用 CYPHER 执行从节点 a 开始的遍历,并按照边的权重顺序递增。这是上面它应该返回(a)-4->(e)-3->(c)-3->(d)

这可以使用密码吗?

0 投票
1 回答
42 浏览

neo4j - neo4j 遍历 api 部分扫描 hub 节点

我正在使用遍历 API 来遍历包含一些集线器的图,即具有许多传入/传出边的节点。我只想遍历其中的一些,例如 6000 然后停止。由于时间原因,遍历所有这些都不是一种选择,并且不遍历它们也不是一种选择。有人知道这是否可能?

谢谢

0 投票
1 回答
495 浏览

neo4j - Neo4J Java Native APIs vs Traversal APIs vs Cypher

有没有人做过 Neo4J Java Native APIs、Traversal APIs 和 Cypher 的性能评估。从性能的角度来看,上述三个选项中的哪一个会给我带来更好的结果?另外,对于写操作,我应该使用 Native java APIs 还是 cypher。是否有可能在本机 API 中批量执行数据库操作,以便它只访问数据库一次,而不是每次创建节点/关系。

0 投票
1 回答
1438 浏览

java - 如何获取本地运行的 Neo4j 服务器的 GraphDatabaseService 实例

我正在尝试 neo4j 遍历 api。所有在线示例都与GraphDatabaseService实例一起使用,traversalDescription()然后使用它来定义遍历模式。

但是在线示例(例如这个)用于从嵌入式数据库/数据库文件GraphDatabaseFactory中获取实例:GraphDatabaseService

我想将它与本地运行的 neo4j 服务器实例一起使用。通常我通过调用sessionopbtained 实例上的方法来做到这一点,如下所示:

我们如何GraphDatabaseServicedriversession实例或通过其他方式获取实例,以便我们可以使用本地运行的 neo4j 服务器实例?还是我们只能在嵌入式 neo4j 数据库中使用遍历 api?

0 投票
1 回答
210 浏览

neo4j - 使用 Neo4j 遍历 API 获取遍历的唯一路径数

我创建了以下基本图表:

该图如下所示:

在此处输入图像描述

当我运行以下密码时:

我得到2作为输出。似乎nodes()实际上并没有返回路径中的节点数,而只是返回结果中的行数,因为如果我返回path

我在返回的结果中得到两行:

在此处输入图像描述

现在我猜测如何在使用 Neo4J 遍历 API 进行遍历时获得相同的输出。我得到密码中唯一节点的数量,如下所示:

上面的查询正确返回6

在遍历 API 中也可以通过在路径扩展器中使用静态计数器来完成,每次expand()调用时都会递增。(有没有更好的方法呢?)

但是,我无法想出在使用 Traversal API(相当于上面的RETURN count(nodes(path)))时告诉我在遍历期间遵循的唯一路径数的方法。我怎样才能做到这一点?遍历API不可能吗?

PS:通过唯一路径,我的意思是遍历时访问的节点顺序的唯一排列。例如, alla-b-ca-c-ba-b-c-d唯一的。

0 投票
0 回答
70 浏览

java - Neo4j 基于多路径显示子图

我想基于多个路径在 Neo4j(本地主机上的社区版)中显示一个子图。路径是traversalDescription()带有特殊的自定义的结果evaluate(Path path)。目的是忽略一个特殊的关系和节点序列(细节到序列)。据我所知,这在密码查询中是不可能的。

结果如下所示:

它基本上是一个从一个节点开始的子图,显示所有可能的路径(忽略序列)。但是如何在 neo4j 中显示呢?是否可以在 neo4j 中使用我的遍历器作为标准遍历器?我想避免选择每个节点并查询所有节点(可能是大量节点)。

这样就解决了问题(对于少量节点,将粘贴查询复制到webui中):

但还有其他解决方案吗?

0 投票
1 回答
203 浏览

neo4j - 使用遍历框架在 Neo4j 中编码一种随机游走

我目前正在研究一个节点通过概率边连接的图。每条边上的权重定义了边存在的概率。

这是一个示例图,可帮助您入门

我想使用 Neo4j Traversal Framework 从 (A) 开始遍历这个图,并根据沿途找到的边的概率返回已经到达的节点数。

重要的:

  • 到达的每个节点只能计算一次。-> 如果(A)到达(B)和(C),那么(C)不需要到达(B)。另一方面,如果 (A) 未能到达 (B) 但到达 (C),则 (C) 将尝试到达 (B)。
  • 如果(B)到达(C)也是如此,(C)不会再尝试到达(B)。
  • 这是一个离散时间步长函数,一个节点只会尝试到达相邻节点一次。
  • 为了测试边是否存在(我们是否遍历它),我们可以生成一个随机数并验证它是否小于边权重。

我已经将遍历描述的一部分编码如下。(这里可以从多个节点开始,但这不是解决问题所必需的。)

我跟踪达到的节点数,如下所示:

这段代码的问题在于,虽然 NODE_PATH 已定义,但可能存在我不想要的循环。

因此,我想知道:

  • 是否有解决方案可以避免循环并准确计算达到的节点数量?
  • 理想情况下,是否可以(或更好)使用 PathExpander 做同样的事情,如果可以,我该如何进行编码?

谢谢