将子图(sideeffect)导出到json文件并导回到图

时间:2017-02-21 10:28:52

标签: json groovy graph-databases titan gremlin

我想将子图导出到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"])

什么是问题??

1 个答案:

答案 0 :(得分:1)

我认为问题在于你有一个TinkerGraph作为你的子图,但该子图包含一个Titan标识符,GraphSON不知道如何本地处理。您需要向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)