Convert Neo4j DB to XML?
Asked Answered
K

4

19

Can I convert Neo4J Database files to XML?

Kolinsky answered 5/2, 2010 at 1:10 Comment(0)
E
21

I agree, GraphML is the way to go, if you don't have problems with the verbosity of XML. A simple way to do it is to open the Neo4j graph from Gremlin, where GraphML is the default import/export format, something like

peters: ./gremlin.sh

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

As described here

Does that solve your problem?

Eridanus answered 5/2, 2010 at 8:19 Comment(3)
your link is linking me to a blank github wiki page. perhaps you meant this page? github.com/tinkerpop/gremlin/wiki/Neo4j-Graph-DatabaseCzarism
The current information on loading/saving to/from Gremlin is now located here: github.com/tinkerpop/gremlin/wiki/Gremlin-MethodsEdda
why not edit the original reply to fix the URL then?Dick
R
20

With Blueprints, simply do:

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

Or, with Gremlin (which does the same thing in the back):

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

Finally, to the constructor for Neo4jGraph, you can also pass in a GraphDatabaseService instance.

Ramsey answered 21/11, 2011 at 16:7 Comment(0)
D
2

I don't believe anything exists out there for this, not as of few months ago when messing with it. From what I saw, there are 2 main roadblocks:

  1. XML is hierarchical, you can't represent graph data readily in this format.
  2. Lack of explicit IDs for nodes. Even though implicit IDs exist it'd be like using ROWID in oracle for import/export...not guaranteed to be the same.

Some people have suggested that GraphML would be the proper format for this, I'm inclined to agree. If you don't have graphical structures and you would be fine represented in an XML/hierarchical format...well then that's just bad luck. Since the majority of users who would tackle this sort of enhancement task are using data that wouldn't store that way, I don't see an XML solution coming out...more likely to see a format supporting all uses first.

Diffractometer answered 5/2, 2010 at 1:46 Comment(2)
I don't quite follow your point. XML is a metalanguage. GraphML is simply one instance of an XML markup language, specifically one used to represent graph data. So is RDF and XML Topic Maps (XTM). There is no limitation in XML per se in representing graphs, i.e., any SGML or XML markup language that contains links already does so. For example, DocBook looks like a hierarchical document format but given it contains links it can also represent a graph, just as can XHTML.Parenthesize
(Got caught by the 5 minute edit rule.) As for explicit or implicit node IDs, that's an implementation issue. Most graph markup languages already have IDs on top level elements, and it's possible to add xml:id to any markup. Exporting from Neo4j to any markup shouldn't be a problem, it's just a serialisation, as indicated by Peter Neubauer above.Parenthesize
S
0

Take a look at NoSqlUnit It has tools for converting GraphML to neo4j and back again.

In particular, there is com.lordofthejars.nosqlunit.graph.parser.GraphMLWriter and com.lordofthejars.nosqlunit.graph.parser.GraphMLReader which read / write XML files to / from a neo4j database.

Splashdown answered 21/4, 2015 at 10:51 Comment(1)
@jpp Well, I can reference source for specific java files, but they are classes with 100's of lines of code, so I won't be reduplicating that code here.Splashdown

© 2022 - 2024 — McMap. All rights reserved.