【问题标题】:How to read a GraphML file using networkx in Python?如何在 Python 中使用 networkx 读取 GraphML 文件?
【发布时间】:2020-07-14 00:49:16
【问题描述】:

我是 networkx 和 Neo4j 的新手。我已经使用“导入方法”将图形数据库导入到 Neo4j,因为它是一个巨大的图形并且无法加载。现在,我想使用 networkx 进行一些图形分析。因此,据我了解,我应该执行以下步骤:

  1. 从 Neo4j 将图形导出为 GraphML 格式。
  2. 在 Python 中使用 networkx 读取 GraphML 文件。

读取 GraphML 文件时,我遇到此错误:错误的 GraphML 数据:没有键标签。 我在记事本中打开了 GraphML 文件,我猜 Neo4j 正在创建错误的 GraphML 文件。 我只有一个节点,但它正在考虑节点的两个关键标签。

下面是 GraphML 文件的 sn-p。 谁能帮我解决这个问题?

【问题讨论】:

  • 能否包含完整的错误回溯?
  • @Sparky05 这是错误:NetworkXError: Bad GraphML data: no key labels
  • 我的意思是完整的回溯,所以所有的行都打印为错误。包括行引用(至少那些包含networkx 代码的引用)。或者甚至更好的是,您生成并包含minimal reproducible example。然后,我们可以更轻松、更快捷地帮助您。

标签: python neo4j networkx graphml


【解决方案1】:

这似乎是一段时间以来的问题:https://github.com/neo4j-contrib/neo4j-apoc-procedures/issues/478

networkx 抱怨的是一个节点的数据具有键“标签”,但没有定义 id“标签”的键。因此例外。

为避免这种情况,您有(至少)两种选择。您可以按照我链接的问题中的建议进行操作,将其粘贴到 graphML 文件的顶部:

<key id="labels" for="node" attr.name="labels"/>

另一个选项是在配置中将格式设置为“gephi”(如下所示)。这样做时,引用“标签”的数据标签将引用“类型”键,该键在键标签中定义。

call apoc.export.graphml.all(<your-path>, {format:"gephi"})

此外,使用默认的 Neo4j 导出,networkx 会生成大量警告,您可以通过将 useTypes 设置为 true 来删除这些警告。

call apoc.export.graphml.all(<your-path>, {format:"gephi", useTypes:true})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-11
    • 2016-06-19
    • 1970-01-01
    相关资源
    最近更新 更多