26.7.1 一時プロパティの管理

グラフ・サーバー(PGX)は、プロパティ・グラフ・データ・モデルを採用しています。グラフがPGXにロードされると、グラフ・インスタンス自体とその元のプロパティは不変として設定されます。ただし、クライアントでは、追加のプロパティを動的に作成してグラフにアタッチできます。これらの追加プロパティは一時プロパティと呼ばれ、クライアントで変更可能です

PgxGraphには、一時プロパティを作成するための次のメソッドがあります。

VertexProperty<ID, V> createVertexPropertyAsync(PropertyType type)
VertexProperty<ID, V> createVertexPropertyAsync(PropertyType type, String name)
EdgeProperty<V> createEdgePropertyAsync(PropertyType type)
EdgeProperty<V> createEdgePropertyAsync(PropertyType type, String name)

前述のコードで:

  • PropertyType: プロパティのデータ型のenumであり、PGXでサポートされているプリミティブ型のいずれかである必要があります。
  • name: 新しく作成されるプロパティに一意の名前を割り当てるオプションの引数です。名前を指定しない場合は、PGXによってクライアントに割り当てられます。

    ノート:

    名前は一意である必要があります。同じグラフについて同じ名前の2つの異なる頂点またはエッジ・プロパティが存在することはできません。
create_vertex_property(self,data_type,name=None)

メソッドはすべて、新しく作成された一時プロパティを表すPropertyオブジェクトを返します。基礎となるクラスVertexProperty<ID, V>EdgeProperty<V>はどちらも、プロパティで保持される値タイプVでパラメータ化されます。Vは、指定されたPropertyTypeと一致します。VertexProperty<ID, V>は、さらに頂点IDタイプでパラメータ化されます。これは、複数の型の頂点識別子のPGXサポートによるものです。グラフの頂点IDタイプを指定する方法は、グラフ構成の章を参照してください。PGXでは型longのエッジ識別子のみがサポートされているため、EdgeProperty<V>はエッジIDの型ではパラメータ化されません。

GraphConfig config = GraphConfigBuilder.forFileFormats(...)
    ...
    .setVertexIdType(IdType.LONG)
    ...
    .build();

PgxGraph G = session.readGraphWithProperties(config);
VertexProperty<Long, String> p1 = G.createVertexProperty(PropertyType.STRING);
EdgeProperty<Double> p2 = G.createEdgeProperty(PropertyType.DOUBLE);
G = session.read_graph_with_properties(config)
p1 = G.create_vertex_property("string")
p2 = G.create_edge_property("double")

セッションから一時プロパティを削除するには、プロパティ・オブジェクトでdestroyAsync() (またはdestroy())をコールします。