5.5.2 ELEMENT_NUMBER関数の使用

ELEMENT_NUMBER関数は、SQLグラフ問合せでのONE ROW PER VERTEX句またはONE ROW PER STEP句で定義されているイテレータ変数の場合のみ使用できます。

この関数はイテレータ変数を参照し、イテレータ変数が現在バインドしている順次要素番号を返します。パスは必ず頂点から始まり、頂点とエッジが交互になるため、最初の要素は頂点であり要素番号が1、2番目の要素はエッジであり要素番号が2、3番目の要素は頂点であり要素番号が3、のように続きます。たとえば、v1 -[e1]-> v2 -[e2]-> v3というパスがあるとします。その後、次のように左から右へと要素番号が生成されます:

v1:1, e1:2, v2:3, e2:4, v3:5

したがって、頂点には必ず奇数の要素番号があり、エッジには偶数の要素番号があります。

ONE ROW PER STEPを指定しており、パスが空である場合(つまり、1つの頂点のみがあり、エッジがない)、ELEMENT_NUMBERでは、イテレータ・エッジ変数または2番目のイテレータ頂点変数を参照するとNULLが返されます。パスが空の場合、最初のイテレータ(頂点)変数のみがバインドされる単一のステップになります。

また、次の点にも注意してください。

  • ELEMENT_NUMBERは、COLUMNS句でのみ使用できます。
  • ELEMENT_NUMBER関数は、SQLグラフ問合せでONE ROW PER VERTEXまたはONE ROW PER STEPが指定されている場合のみ使用できます。
  • ELEMENT_NUMBERでは、イテレータ変数以外のタイプの変数は参照できません。

たとえば、次の問合せ例を考えてみます。この問合せではONE ROW PER STEPが使用されており、このELEMENT_NUMBER関数では、イテレータ変数vによってバインドされているグラフ要素の要素番号が返されます。

SELECT *
FROM GRAPH_TABLE ( g
       MATCH (a) ->{0,2} ONE ROW PER STEP (v,e,v2) 
       COLUMNS (ELEMENT_NUMBER(v) AS elementNumber)
)

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