2010-02-05 84 views

回答

2

我不相信這裏有任何東西存在,而不是像幾個月前那樣搞亂它。從我看到的,有兩個主要的障礙:

  1. XML是分層的,你不能用這種格式很容易地表示圖形數據。
  2. 缺少節點的顯式ID。即使存在隱式ID,它會像在oracle中使用ROWID進行導入/導出...不一定保證一樣。

有人建議,GraphML將是適當的格式,我傾向於同意。如果你沒有圖形結構,並且你可以很好地用XML /分層格式表示......那麼這只是運氣不好。由於大多數處理這類增強任務的用戶正在使用不會以這種方式存儲的數據,所以我沒有看到XML解決方案出現......更有可能首先看到支持所有用途的格式。

+2

我不太關注你的觀點。 XML是一種元語言。 GraphML只是XML標記語言的一個實例,特別是用於表示圖形數據的實例。 RDF和XML主題地圖(XTM)也是如此。 XML本身在表示圖中沒有限制,即任何包含鏈接的SGML或XML標記語言都已經這樣做。例如,DocBook **看起來像一個分層文檔格式,但是如果它包含鏈接,它也可以表示一個圖形,就像XHTML一樣。 – 2011-12-05 22:30:13

+2

(被5分鐘的編輯規則所捕獲)對於顯式或隱式節點ID,這是一個實現問題。大多數圖形標記語言在頂級元素上都有ID,並且可以將xml:id添加到任何標記。從Neo4j導出到任何標記不應該是一個問題,這只是一個序列化,如上面的Peter Neubauer所示。 – 2011-12-05 22:41:53

21

我同意,如果您沒有XML冗長的問題,那麼GraphML就是要走的路。一個簡單的方法來做到這一點是從Gremlin打開Neo4j的圖,其中GraphML是默認的導入/導出格式,像

 
peters: ./gremlin.sh 

gremlin> $_g := neo4j:open('/tmp/neo4j') 
==>neograph[/tmp/neo4j, vertices:2, edges:1] 
gremlin> g:save('graphml-export.xml') 

如上所述here

這是否解決問題了嗎?

+0

你的鏈接將我鏈接到一個空白的github wiki頁面。也許你是指這個網頁? http://github.com/tinkerpop/gremlin/wiki/Neo4j-Graph-Database – mmay 2010-10-22 19:50:32

+3

關於Gremlin的加載/保存的當前信息現在位於:https:// github。com/tinkerpop/gremlin/wiki/Gremlin-Methods – nawroth 2011-09-03 20:31:11

+0

爲什麼不編輯原始回覆來修復網址呢? – 2015-04-07 11:54:38

20

隨着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實例。