将子图(副作用)导出到 json 文件并在图中导回

Exporting subgraph (sideeffect) to json file and importing back in graph

我想将子图导出到 json 文件并导入到其他图中。我尝试如下:

gremlin> subGraph = g.V().has("name","john").outE("has").subgraph("subgraph").cap("subgraph").next()
==>tinkergraph[vertices:6 edges:5]

现在我有了子图对象,然后我使用 graphson 将这个子图对象直接写入 json 文件,如下所示:

subGraph.io(GraphSONIo.build()).writeGraph("/tmp/subgraph.json")

但我收到这样的错误:

(was java.lang.IllegalStateException) (through reference chain: com.thinkaurelius.titan.graphdb.relations.RelationIdentifier["inVertexId"])

有什么问题??

我认为问题在于您有一个 TinkerGraph 作为您的子图,但该子图包含一个 GraphSON 不知道如何本地处理的 Titan 标识符。您需要向 GraphSON 提供 Titan 序列化程序,以便它知道如何处理 RelationIdentifier。您没有说您使用的是哪个版本的 Titan,但我认为无论版本如何,这种方法都有效:

mapper = GraphSONMapper.build().
                        addCustomModule(TitanGraphSONModule.getInstance()).
                        create()
writer = GraphSONWriter.build().mapper(mapper).create()
os = new FileOutputStream("/tmp/subgraph.json")
writer.writeGraph(os, subgraph)

JanusGraph 更现代的方法是:

sg.io('/tmp/sample.json').
     by(IO.registry, org.janusgraph.graphdb.tinkerpop.io.graphson.JanusGraphSONModuleV2d0.getInstance()).
   write().iterate()