0

Rexster と Cassandra を使用して Titan グラフ データベースを実装しています。

Ruby で Gremlin を使用して、次のようなエッジを追加しようとしています。

query = 'a = g.addVertex(null,[name:\'' +
someName +
'\']); g.addEdge(null, g.getVertex(' +
someVertexId + '), a, \'labelname\', [weight:' + 
someFloatValue.round(5) + 'd]); g.commit();'

#This formats to the following:
#"a = g.addVertex(null,[name:'myawesomename']); g.addEdge(null, g.getVertex(1337), a, 'labelname', [weight:0.30685d]); g.commit();"

これを実行すると、次のエラーが表示されます。

#<Rexster::Rest::RexsterError: Graph server returned error: javax.script.ScriptException: java.lang.IllegalArgumentException: The type of given name is not a label: labelname>

という名前のラベルを定義していないようですが、わかりましlabelnameた。ただし、このラベルを追加する方法を一生理解できないので、このエッジをグラフに追加できます。

ちなみに、頂点の追加はうまくいきます。


スクリプトを実行している titan-server 0.4.0 で ubuntu 12.04 マシンに接続するrexster_ruby gem を使用していtitan.shます。

4

1 に答える 1

1

Titan TypeMaker では、0.3.x から 0.4.x への重大な API 変更がいくつか見られました。ここでエッジ ラベルを定義する方法について読むことができます。

https://github.com/thinkaurelius/titan/wiki/Type-Definition-Overview#creating-edge-labels

できれば rexster_ruby、REST などのライブラリの外部で、グラフの初期化時に TypeMaker を使用することをお勧めします。Gremlin REPL からグラフを初期化するだけです。さらに良いことに、これらの型定義を groovy クラスにカプセル化して、スキーマを維持します。

于 2013-10-24T14:27:06.067 に答える