1

フレーム化されたグラフによって一意の頂点が作成されるようにするスレッドセーフな方法はありますか? 次の点を考慮してください。

Node n = framedGraph.addVertex(1, Node.class);
Node m = framedGraph.addVertex(1, Node.class);
System.out.println(n.equals(framedGraph.getVertex(1, Node.class)));
System.out.println(m.equals(framedGraph.getVertex(1, Node.class)));

印刷しtrue, falseます。

Neo4j (この場合はバッキング グラフ) によって提供される一意のノードの取得または作成機能に似た機能を探しています。

余談ですが、数値以外の ID を使用する方法はありますか?

Node m = framedGraph.addVertex("http://example.org", Node.class);
System.out.println(n.equals(framedGraph.getVertex("http://example.org", Node.class)));

版画false

4

1 に答える 1

3

ブループリントの Neo4j およびほとんどのグラフ実装は、ID パラメータを無視します。TinkerGraph は別として、通常はすべて独自の ID を割り当て、独自の ID を作成するメソッドはありません。IdGraphをいつでも使用して、独自の ID をシミュレートできます。

ブループリントは、「取得または作成」の概念を維持していません。自分でそれを実装する必要があります。または、コードがあるグラフから別のグラフに移植できなくなることを期待して、それを行うために Neo4j コードに到達することは可能だと思います。IdGraphそうすれば、公開されたgetOrCreate()メソッドに似たグラフ ラッパーの実装を構築できるかもしれません。少なくともそのようにして、Graphインターフェイスを操作することができ、そのようなロジックはその中にカプセル化されています。もちろん、そのような機能を Frames で直接有効にすることはできません。

于 2013-10-18T10:16:10.497 に答える