5.4 頂点およびエッジ識別子

SQLグラフ問合せでは、VERTEX_IDおよびEDGE_ID演算子を使用して、SQLプロパティ・グラフの各頂点およびエッジを一意に識別できます。

グラフ要素識別子は、グラフ要素表に定義されたキー値に基づいています。したがって、次の点に注意してください:

  • 一部のキー列にUNIQUE制約がない場合、TRUSTEDモードのグラフでは、異なる頂点に対して重複する識別子が生成されることがあります。
  • ENFORCEDモードのグラフは、常に一意の識別子を生成することが保証されます。

VERTEX_IDおよびEDGE_ID演算子は、SQLグラフ問合せのCOLUMNSまたはWHERE句に表示される任意の式で使用できます。

ノート:

VERTEX_IDおよびEDGE_ID演算子を使用するには、プロパティ・グラフ・オブジェクトとその基礎となるデータベース表の両方に対する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データ型で実行できるすべての操作は、頂点およびエッジ識別子に対して実行できます。

詳細は、例5-20を参照してください。

VERTEX_EQUALおよびEDGE_EQUAL述語

VERTEX_EQUAL述語とEDGE_EQUAL述語は、それぞれ2つの頂点識別子とエッジ識別子を比較するために使用でき、等しい場合はTRUEを返します。

VERTEX_EQUAL述語への入力は、2つの頂点グラフ・パターン変数です。同様に、EDGE_EQUALの場合、両方の入力はエッジ・グラフ・パターン変数である必要があります。これらの述語は、SQLグラフ問合せのWHERE句で使用できます。

詳細は、例5-21を参照してください。