1

当使用来自https://github.com/jexp/neo4j-shell-tools的工具运行 neo4j-shell 时,它不会加载我的 graphml 文件,在http://validator.w3.org/check上进行了验证。

Neo4j 在 KDE 下使用 OpenJDK IcedTea 2.3.9 在 Ubuntu 上运行

这是命令和消息:

neo4j-sh (0)$ import-graphml -i /home/larsj/Prosjekt/neograf/bigram_graph.xml -t bigram
GraphML-Import file /home/larsj/Prosjekt/neograf/bigram_graph.xml 
rel-type bigram batch-size 40000 use disk-cache false
0. 100%: nodes = 1 rels = 0 properties = 0 time 6 ms
null

如何让它发挥作用?这是我的 graphml 文件的片段:

<?xml version="1.0" encoding="UTF-8"?>
<graphml xmlns="http://graphml.graphdrawing.org/xmlns"  
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns
http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">

<key id = "form0" for = "node" attr.name = "label" attr.type = "string"/>
<key id = "freq0" for = "all" attr.name = "frequency" attr.type = "int"/>
<key id = "mi0" for = "edge" attr.name = "mi" attr.type = "float"/>
<key id = "label0" for = "edge" attr.name = "label" attr.type = "string">
   <default>bigram</default>
</key><graph id="nb.no/bigrams" edgedefault="directed">    <node id="1512655">
    <data key = "form0">barn</data>
    <data key = "freq0">526136</data>
</node>
<node id="1781558">
    <data key = "form0">fattige</data>
    <data key = "freq0">49089</data>
</node>
<edge  source = "2305969" target = "3070510">
    <data key = "freq0">86421</data>
    <data key = "mi0">71.57629973392675</data>
</edge>
<edge  source = "3070510" target = "3070510">
    <data key = "freq0">22</data>
    <data key = "mi0">-9.818479721124337</data>
</edge>

4

1 回答 1

0

neo4j shell-tools 的 import-graphml 命令的一个缺陷是确保每个键在文档的图形标记之前都有一个键 ID。任何具有未在 key id 部分定义的 key 的节点或边都不会被 shell-tools 导入。看不到整个文件,可能是节点/边缘属性没有定义的 XML 密钥 ID。

要检查任何键 ID 不匹配,请使用 Notepad++ 的 XML 插件,称为 XML 工具。安装后,转到插件 > XML 工具 > 立即验证。它将显示一个对话框,其中包含任何未定义的密钥 ID。

只要“数据”字段中的每个属性都在“图形”标签之前定义了一个键 ID,导入命令就会起作用。在 Neo4j shell-tools 控制台中键入以下内容:

import-graphml -i [name of input graphml file]

如果您想在从 Neo4j 导出到 GraphML 时包含这些密钥 ID,请在 shell-tools 控制台中使用此命令。在转储数据库然后将其加载回 Neo4j 的格式时很有用:

$ export-graphml -o [name of output graphml file] -t

于 2014-04-07T18:33:25.327 回答