【问题标题】:Convert Neo4j DB to XML?将 Neo4j DB 转换为 XML?
【发布时间】:2011-01-13 08:24:12
【问题描述】:

我可以将 Neo4J 数据库文件转换为 XML 吗?

【问题讨论】:

    标签: neo4j


    【解决方案1】:

    我不相信有任何东西存在于此,不像几个月前弄乱它时那样。据我所见,有两个主要障碍:

    1. XML 是分层的,您不能轻易地用这种格式表示图形数据。
    2. 缺少节点的明确 ID。尽管存在隐式 ID,但它就像在 oracle 中使用 ROWID 进行导入/导出...不保证相同。

    有些人建议GraphML 是正确的格式,我倾向于同意。如果您没有图形结构,并且可以很好地以 XML/分层格式表示……那么那只是运气不好。由于大多数将处理此类增强任务的用户正在使用不会以这种方式存储的数据,因此我没有看到 XML 解决方案出现......更有可能首先看到支持所有用途的格式。

    【讨论】:

    • 我不太理解你的观点。 XML 是一种元语言。 GraphML 只是 XML 标记语言的一种实例,特别是一种用于表示图形数据的实例。 RDF 和 XML 主题图 (XTM) 也是如此。 XML 本身在表示图形方面没有限制,即任何包含链接的 SGML 或 XML 标记语言已经这样做了。例如,DocBook 看起来像一种分层文档格式,但由于它包含链接,它也可以表示一个图形,就像 XHTML 一样。
    • (被 5 分钟编辑规则抓住了。)至于显式或隐式节点 ID,这是一个实现问题。大多数图形标记语言已经在顶级元素上具有 ID,并且可以将 xml:id 添加到任何标记中。从 Neo4j 导出到任何标记应该不是问题,它只是一个序列化,正如上面的 Peter Neubauer 所指出的那样。
    【解决方案2】:

    我同意,如果您对 XML 的冗长没有任何问题,那么 GraphML 是您的最佳选择。一个简单的方法是从Gremlin 打开 Neo4j 图形,其中 GraphML 是默认的导入/导出格式,类似于

    彼得斯:./gremlin.sh gremlin> $_g := neo4j:open('/tmp/neo4j') ==>neograph[/tmp/neo4j,顶点:2,边:1] gremlin> g:save('graphml-export.xml')

    如上所述here

    这能解决你的问题吗?

    【讨论】:

    【解决方案3】:

    使用Blueprints,只需这样做:

    Graph graph = new Neo4jGraph("/tmp/mygraph");
    GraphMLWriter.outputGraph(graph, new FileOutputStream("mygraph.xml"));
    

    或者,Gremlin(在后面做同样的事情):

    g = new Neo4jGraph('/tmp/mygraph');
    g.saveGraphML('mygraph.xml');
    

    最后,对于 Neo4jGraph 的构造函数,你也可以传入一个 GraphDatabaseService 实例。

    【讨论】:

      【解决方案4】:

      看看NoSqlUnit 它具有将GraphML 转换为neo4j 并再次转换回来的工具。

      特别是 com.lordofthejars.nosqlunit.graph.parser.GraphMLWritercom.lordofthejars.nosqlunit.graph.parser.GraphMLReader 可以从 neo4j 数据库读取/写入 XML 文件。

      【讨论】:

      • @jpp 好吧,我可以参考特定 java 文件的源代码,但它们是具有 100 行代码的类,所以我不会在这里重复该代码。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-28
      • 2013-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多