5.4 頂点およびエッジ識別子
SQLグラフ問合せでは、VERTEX_ID
およびEDGE_ID
関数を使用して、SQLプロパティ・グラフの各頂点およびエッジを一意に識別できます。
グラフ要素識別子は、グラフ要素表に定義されたキー値に基づいています。したがって、次の点に注意してください:
- 一部のキー列に
UNIQUE
制約がない場合、TRUSTED
モードのグラフでは、異なる頂点に対して重複する識別子が生成されることがあります。 ENFORCED
モードのグラフは、常に一意の識別子を生成することが保証されます。
VERTEX_ID
およびEDGE_ID
関数は、SQLグラフ問合せのCOLUMNS
またはWHERE
句に表示される任意の式で使用できます。
ノート:
VERTEX_ID
およびEDGE_ID
関数を使用するには、プロパティ・グラフに対するREAD
またはSELECT
権限が必要です。また、頂点またはエッジIDがリクエストされる頂点またはエッジ表ごとに、次のうち少なくとも1つを確認してください:
- 各キー列は、プロパティとして直接公開されます。
- 基礎となるデータベース表に対する
READ
またはSELECT
権限があります。
VERTEX_ID
関数への入力は、次に示すように、一致した頂点パターンから取得される単一の頂点グラフ・パターン変数です:
MATCH (v) COLUMNS(VERTEX_ID(v) AS v_id)
同様に、EDGE_ID
関数は、次のように一致したエッジ・パターンからの単一エッジ・グラフ・パターン変数を入力として取得します:
MATCH (v1)-[e]->(v2) COLUMNS(EDGE_ID(e) AS e_id)
これらの関数の出力は、JSONデータ型の頂点またはエッジ識別子です。次に、頂点識別子を記述するJSON出力の例を示します:
{
"GRAPH_OWNER": "GRAPHUSER",
"GRAPH_NAME": "STUDENTS_GRAPH",
"ELEM_TABLE": "PERSONS",
"KEY_VALUE": {
"PERSON_ID": 1
}
}
前述のJSON出力では、次のとおりです:
GRAPH_OWNER
: プロパティ・グラフ・オブジェクトの所有者GRAPH_NAME
: プロパティ・グラフ・オブジェクトの名前ELEM_TABLE
: 頂点表の名前KEY_VALUE
: キー列の名前と値
JSON出力フィールドの同じリストがエッジ識別子にも適用されます。ただし、ELEM_TABLE
フィールドはエッジ表の名前を表します。また、JSONデータ型で実行できるすべての操作は、頂点およびエッジ識別子に対して実行できます。
参照される要素変数がグラフ要素にバインドされていない場合、VERTEX_ID
およびEDGE_ID
関数はnull値を返します。
詳細は、例5-29を参照してください。
VERTEX_EQUAL
およびEDGE_EQUAL
述語
VERTEX_EQUAL
述語とEDGE_EQUAL
述語は、それぞれ2つの頂点識別子とエッジ識別子を比較するために使用でき、等しい場合はTRUE
を返します。
VERTEX_EQUAL
述語への入力は、2つの頂点グラフ・パターン変数です。同様に、EDGE_EQUAL
の場合、両方の入力はエッジ・グラフ・パターン変数である必要があります。これらの述語は、SQLグラフ問合せのWHERE
句で使用できます。
参照されている要素変数の1つ以上がグラフ要素にバインドされていない場合、述語はNULL値に評価されます。それ以外の場合は、それらはTRUEまたはFALSEに評価されます。
詳細は、例5-30を参照してください。
親トピック: SQLグラフ問合せ