2017-02-21 2 views
0

サブグラフをjsonファイルにエクスポートして他のグラフにインポートしたいと思います。次のように私が試した:jsonファイルにサブグラフ(sideeffect)をエクスポートしてグラフに戻す

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

は、今私は、サブグラフオブジェクトを持って、私は次のようにJSONファイルに直接この部分グラフオブジェクトを書き込むためにgraphsonを使用:

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

しかし、私はこのようなエラーを取得しています:

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

何が問題ですか?

答えて

0

私はあなたのサブグラフとしてTinkerGraphを持っていますが、そのサブグラフには、GraphSONがネイティブに処理する方法を知らないTitan識別子が含まれていると思います。 の対処方法を知るためには、TitanシリアライザをGraphSONに提供する必要があります。あなたが使用しているタイタンのバージョンを言っていないが、私はこのアプローチは、バージョンに関係なくうまくいくと思う:

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

私はタイタン1.0を使用していますが、グラフオブジェクトは 'グラフ= TitanFactory.openを使用してチタングラフです(」 ../conf/titan-cassandra.properties ")'上記のgremlinクエリを使ってサブグラフを作成すると、 'TinkerGraph'オブジェクトが生成されます?? サブグラフをタイタングラフオブジェクトとして作成することはできますか? –

+0

あなたのコードをgremlinで試してみましたが、マッパーオブジェクトにエラーが発生しました。 'No such property:TitanGraphSONModule for class:groovysh_evaluate' –

+0

はい、プライマリグラフがTitanであってもサブグラフはメモリ内のTinkerGraphです。通常、サブグラフを永続化する必要がないため、多くの意味があります。あなたが1.0のTitanにサブグラフすることができるかどうかは覚えていません - それは後でTinkerPopの機能として追加されたと思います。あなたのエラーについては、そのクラスをコンソールにインポートする必要があると思われます。パッケージ名はhttps://github.com/thinkaurelius/titan/blob/1.0.0/titan-core/src/で確認できます。 main/java/com/thinkaurelius/titan/graphdb/tinkerpop/io/graphson/TitanGraphSONModule.java –

関連する問題