5.1.3 ラベル・プロパティへのアクセス
グラフ要素パターン内のプロパティには、表外のWHERE句またはCOLUMNS句でアクセスできます。
               
次のグラフ要素パターンについて考えてみます。aはグラフ要素変数で、nameはプロパティ名です:
                  
(a IS person WHERE a.name='John')
その後、グラフ要素パターン内のWHERE句のプロパティをa.nameとして参照できます。これは、a.nameがグラフ・パターン変数aにバインドされたグラフ要素のプロパティnameを参照することを意味します。
                  
また、プロパティへのアクセス時には次の条件が適用されます:
- プロパティnameは、ラベル式を満たす1つ以上の表の一部です。
- プロパティにアクセスするには、常にグラフ変数名を使用する必要があります。
- 問合せのコンパイル時に、特定のタイプ・チェック・ルールが頂点またはエッジ表のプロパティに適用されます。詳細は、「プロパティ・タイプを決定するためのタイプ互換性ルール」を参照してください。
次の例では、SQLプロパティ・グラフの問合せ時にプロパティ・タイプを決定するいくつかのシナリオを示します。例5-1から例5-3は、様々なラベルの共有プロパティとしてheightを含むSQLプロパティのg1のグラフ定義を参照していることに注意してください。
                  
例5-1 単一ラベルのプロパティ・タイプの決定
次の問合せのa.heightのデータ型はFLOATです:
                  
SELECT * FROM GRAPH_TABLE (g1
MATCH
(a IS person)
COLUMNS (a.height)
);HEIGHT
----------
       1.8
      1.65
      1.75
       1.7例5-2 2つの異なるラベルの論理和互換プロパティ・タイプの決定
次の問合せのa.heightのデータ型は、FLOATとBINARY_DOUBLEの間の論理和互換型です:
                  
SELECT * FROM GRAPH_TABLE (g1
MATCH
(a IS person|t3)
COLUMNS (a.height)
);    HEIGHT
----------
  1.8E+000
 1.65E+000
 1.75E+000
  1.7E+000
  1.8E+000
 1.65E+000SQLプロパティ・グラフg1では、ラベルpersonおよびt3に関連付けられたheightのプロパティ・タイプはそれぞれFLOATおよびBINARY_DOUBLEです。BINARY_DOUBLEはFLOATより優先されるため、a.heightの出力プロパティ・タイプはBINARY_DOUBLEになります。
                  
例5-3 2つの異なるラベルの論理和互換プロパティ・タイプがない場合
a.heightのデータ型が表person (FLOAT)およびt2 (VARCHAR)間で論理和互換ではないため、次の問合せに対してエラーがスローされます:
                  
SELECT * FROM GRAPH_TABLE (g1
  MATCH
   (a IS person|t2)
  COLUMNS (a.height)
  );実行時に、前述の問合せはエラーORA-01790:「式には対応する式と同じデータ型を持つ必要があります」をスローします
例5-4 共有ラベルの論理和互換プロパティ・タイプの決定
共有プロパティ名(height)に関連付けられた共有ラベル(t)を使用するg3のSQLプロパティ・グラフ定義について考えてみます。
                  
g3を問い合せる場合、次のSQLグラフ問合せのa.heightのデータ型はBINARY_DOUBLEです。
                  
SELECT * FROM GRAPH_TABLE (g3
MATCH
(a IS t)
COLUMNS (a.height)
);BINARY_DOUBLEになります:    HEIGHT
----------
  1.8E+000
 1.65E+000
 1.75E+000
  1.7E+000
  1.8E+000
 1.65E+000親トピック: グラフ・パターンについて