5.4.14 インメモリー・グラフの作成
キーストアへのデータベース・パスワードの格納に加えて、インメモリー・グラフをプログラムで作成できます。グラフのサイズが小さい場合、またはグラフのコンテンツが非常に動的な場合に、これにより開発を簡略化することができます。キーのJavaクラスはGraphBuilder
です。これはaddVertex
およびaddEdge
APIを使用して追加された頂点およびエッジのセットを累積できます。すべての変更が行われると、インメモリー・グラフ・インスタンス(PgxGraph
)はGraphBuilder
により作成できます。
次のJavaコード・スニペットは、グラフの作成フローを示します。存在しない頂点は、隣接するエッジの作成に伴って動的に追加されるので、明示的なaddVertex
へのコールはないことに注意してください。
import oracle.pgx.api.*;
PgxSession session = Pgx.createSession("example");
GraphBuilder<Integer> builder = session.createGraphBuilder();
builder.addEdge(1, 2);
builder.addEdge(2, 3);
builder.addEdge(2, 4);
builder.addEdge(3, 4);
builder.addEdge(4, 2);
PgxGraph graph = builder.build();
頂点プロパティを使用してグラフを作成するには、作成する頂点オブジェクトに対するsetProperty
を使用できます。
PgxSession session = Pgx.createSession("example");
GraphBuilder<Integer> builder = session.createGraphBuilder();
builder.addVertex(1).setProperty("double-prop", 0.1);
builder.addVertex(2).setProperty("double-prop", 2.0);
builder.addVertex(3).setProperty("double-prop", 0.3);
builder.addVertex(4).setProperty("double-prop", 4.56789);
builder.addEdge(1, 2);
builder.addEdge(2, 3);
builder.addEdge(2, 4);
builder.addEdge(3, 4);
builder.addEdge(4, 2);
PgxGraph graph = builder.build();
長整数を頂点およびエッジの識別子として使用するには、GraphBuilder
の新しいインスタンスの取得時に、IdType.LONG
を指定します。たとえば:
import oracle.pgx.common.types.IdType;
GraphBuilder<Long> builder = session.createGraphBuilder(IdType.LONG);
エッジの作成時に、addEdge
へのコールで以前作成した頂点オブジェクトを直接使用することができます。
v1 = builder.addVertex(1).setProperty("double-prop", 0.5)
v2 = builder.addVertex(2).setProperty("double-prop", 2.0)
builder.addEdge(v1, v2)
頂点と同様に、エッジもプロパティを持つことができます。次の例では、setLabel
を使用して、エッジ・レベルを設定します。
builder.addEdge(v1, v2).setProperty("edge-prop", "edge_prop_1_2").setLabel("label")
親トピック: プロパティ・グラフ・データに対するJava APIの使用