python - 如何获得给定顶点的最小子图?

标签 python neo4j graph-databases titan

我有一个图表。我想提取一个子图,其中包含列表中的节点以及链接到列表中节点的其他节点。

示例:一个图有 4 个节点:1、2、3、4,边为 1-2、2-3、1-4、3-4。如果我的列表有节点 1,4,那么子图应该是 1-2、1-4 和 3-4

像 py2neo 这样的 python 库中是否有用于此目的的函数?

最佳答案

对于neo4j,你可以使用Cypher queries从数据库中提取子图。您可以只使用查询的 MATCH 子句来表达您正在寻找的模式。

在 python 中,您可能会使用 py2neo运行密码查询。在这里,我假设您拥有的节点列表是节点 ID。你可能会这样做:

from py2neo import Graph
graph = Graph()
targets = [1,4]
for target in targets:
    results = graph.cypher.execute("MATCH (n {id: %d})-[:foo]->(otherNode) RETURN n, otherNode" % target)
    # process results

需要注意的一件事。您的图表指定 1 连接到 4,但 3 也是如此。这实际上会使连接的子图组件 1-3-4,而不是 1-4 和 3-4。因为您是这样指定的,请注意我上面所做的匹配只为您提供了从您正在搜索的节点开始的一跳。

关于python - 如何获得给定顶点的最小子图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27887825/

相关文章:

python - 字符串递归问题

python - 计算 pandas 系列中的特定值

java - Cypher:有约束的最短路径

java - Spring Data Neo4j - 参数类型不匹配

azure-cosmosdb - Cosmos Db Graph - Gremlin.Net 与 Microsoft.Graph 的性能和吞吐量

python - 获取类型错误 : "POST data should be bytes or an iterable of bytes. It cannot be str." while following simply online example

python - 构建卷积自动编码器时的尺寸错误

spring - 相当于SDN4中的template.createRelationBetween

neo4j - 密码查询中有多个可选匹配项,其中一个不匹配,不知道为什么

neo4j - 在 Neo4j Cypher 的 RETURN 语句中使用WITH语句之前的变量