将子图(副作用)导出到 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()
我想将子图导出到 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()