2010-02-05 19 views

Respuesta

2

No creo que exista nada para esto, no como hace unos meses cuando se metía con él. De lo que vi, hay 2 barricadas principales:

  1. XML es jerárquico, no se pueden representar datos de gráficos fácilmente en este formato.
  2. Falta de identificadores explícitos para los nodos. Aunque existen ID implícitos, sería como usar ROWID en Oracle para importar/exportar ... no se garantiza que sea el mismo.

Algunas personas han sugerido que GraphML sería el formato adecuado para esto, me inclino a estar de acuerdo. Si no tiene estructuras gráficas y estaría bien representado en un formato XML/jerárquico ... bueno, eso es mala suerte. Dado que la mayoría de los usuarios que abordarían este tipo de tareas de mejora están utilizando datos que no almacenarían de esa manera, no veo que salga una solución XML ... es más probable que vea primero un formato que respalde todos los usos.

+2

No entiendo muy bien su punto. XML es un metalenguaje. GraphML es simplemente una instancia de un lenguaje de marcado XML, específicamente uno utilizado para representar datos de gráficos. También lo es RDF y XML Topic Maps (XTM). No existe ninguna limitación en XML per se para representar gráficos, es decir, cualquier lenguaje de marcado SGML o XML que contenga enlaces ya lo hace. Por ejemplo, DocBook ** se ve ** como un formato de documento jerárquico, pero dado que contiene enlaces, también puede representar un gráfico, al igual que XHTML. –

+2

(Me atrapó la regla de edición de 5 minutos). En cuanto a los identificadores de nodo explícitos o implícitos, es un problema de implementación. La mayoría de los lenguajes de marcado de gráficos ya tienen ID en los elementos de nivel superior, y es posible agregar xml: id a cualquier marcado. Exportar desde Neo4j a cualquier marcado no debería ser un problema, solo es una serialización, como lo indica Peter Neubauer arriba. –

21

Acepto, GraphML es el camino a seguir, si no tiene problemas con la verbosidad de XML. Una forma sencilla de hacerlo es abrir el gráfico de Neo4j Gremlin, donde GraphML es el formato por defecto de importación/exportación, algo así como

 
peters: ./gremlin.sh 

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

Como se describe here

¿Esto soluciona el problema?

+0

su enlace me está conectando a una página wiki en blanco de github. quizás quisiste decir esta página? http://github.com/tinkerpop/gremlin/wiki/Neo4j-Graph-Database – mmay

+3

La información actual sobre cómo cargar/guardar desde/hacia Gremlin ahora se encuentra aquí: https: // github.com/tinkerpop/gremlin/wiki/Gremlin-Methods – nawroth

+0

¿por qué no edita la respuesta original para corregir la URL? –

20

Con Blueprints, sólo tiene que hacer:

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

O, con Gremlin (que hace lo mismo en la parte posterior):

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

Por último, para el constructor de Neo4jGraph, también puede pasar en una instancia de GraphDatabaseService.

0

Eche un vistazo a NoSqlUnit Tiene herramientas para la conversión de GraphML a y viceversa.

En particular, no es com.lordofthejars.nosqlunit.graph.parser.GraphMLWriter y com.lordofthejars.nosqlunit.graph.parser.GraphMLReader cuales lectura/escritura de archivos XML a/desde una base de datos Neo4j.

+1

@jpp Bueno, puedo hacer referencia a la fuente para archivos java específicos, pero son clases con cientos de líneas de código, por lo que no voy a reduplicar ese código aquí. – Stewart

Cuestiones relacionadas