我想将子图导出到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"])
什么是问题??
答案 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)