5.1.2 ラベル式

頂点またはエッジ要素パターンのラベル式が、キーワードISによって導入されています。

たとえば、次のグラフ・パターンでは、グラフ要素変数v1に関連付けられた頂点パターンのラベルはpersonです。また、グラフ要素変数eに関連付けられたエッジ・パターンには、ラベルfriendOfが含まれています:

(v1 IS person)–[e IS friendOf]->(v2)

グラフ要素パターンでラベルを省略した場合、デフォルトではすべての頂点またはエッジを問い合せます。

ラベル式には、一致した任意の変数にアクセスできるオプションのインラインSQL検索条件を含めることもできます。プロパティにアクセスする場合は、グラフ・パターン変数を指定する必要があります。

サポートされている頂点およびエッジ・ラベル式を次の表で説明します:

表5-2 サポートされている頂点およびエッジ・ラベル式

頂点ラベル式 エッジ・ラベル式 説明
(a) [e]
  • 頂点グラフ・パターン変数aは、任意のラベルを持つ頂点と一致する可能性があります。
  • エッジ・グラフ・パターン変数eは、任意のラベルを持つエッジと一致する可能性があります。
() []
  • 頂点パターンにはラベルがなく、任意の頂点と一致する可能性があります。
  • エッジ・パターンにはラベルがなく、任意のエッジと一致する可能性があります。

グラフ・パターン変数が指定されていない場合、一意の頂点またはエッジ変数名がシステムによって内部的に生成されます。したがって、問合せの他の場所で頂点またはエッジを参照することはできません(不明なため)。

(IS person) [IS friend_of]
  • 頂点パターンにはpersonラベルのみが含まれています。
  • エッジ・パターンにはfriend_ofラベルのみが含まれています。

グラフ・パターン変数が指定されていない場合、一意の頂点またはエッジ変数名がシステムによって内部的に生成されます。したがって、問合せの他の場所で頂点またはエッジを参照することはできません(不明なため)。

(IS person|place|thing) [IS friend_of|student_of]
  • 頂点パターンには、personplaceおよびthingの3つのラベルの選択肢があります。これは、頂点パターンがこれらのラベルを持つ任意の頂点と一致する可能性があることを意味します。
  • エッジ・パターンには、friend_ofstudent_ofの2つのラベルの選択肢があります。これは、エッジ・パターンがこれらのラベルを持つ任意のエッジと一致する可能性があることを意味します。

頂点パターンまたはエッジ・パターンに明示的なグラフ・パターン変数がないため、問合せの他の場所ではこの頂点またはエッジを参照できません。

(a IS person|place|thing) [e IS friend_of|student_of] 前述の表エントリと同じです。ただし、頂点パターンおよびエッジ・パターンには、頂点およびエッジ・グラフ・パターン変数としてそれぞれaおよびeが含まれています。そのため、問合せの他の場所にあるグラフ・パターン変数を使用して、それぞれ頂点またはエッジを参照できます。

例5-12を参照してください。

(a IS person),

(a IS car)

(a)–[e IS L1]->(b),

(a)–[e is L2]->(b)

  • 頂点パターンa IS personは、aがラベルpersonを持つ頂点と一致する必要があることを意味し、頂点パターンa IS carは、aがラベルcarを持つ頂点と一致する必要があることを意味します。したがって、これは、aがラベルとしてpersoncarの両方を持つ頂点と一致する必要があり、実質的にこれら2つの条件のANDであることを表します。また、問合せの他の場所で、頂点をaとして参照することもできます。
  • エッジ・パターンe IS L1は、eがラベルL1を持つエッジと一致する必要があることを意味し、エッジ・パターンe IS L2は、eがラベルL2を持つエッジと一致する必要があることを意味します。したがって、これは、eがラベルとしてL1L2の両方を持つエッジと一致する必要があり、実質的にこれら2つの条件のANDであることを表します。また、問合せの他の場所で、エッジをeとして参照することもできます。

例5-13を参照してください。

(a IS person WHERE a.name = 'Fred') [e IS student_of WHERE e.subject = 'Arts']
  • 頂点パターンにはラベルpersonおよび頂点グラフ・パターン変数aがあり、これは要素パターンWHERE句で修飾されます。
  • エッジ・パターンにはラベルstudent_ofおよびエッジ・グラフ・パターン変数eがあり、これは要素パターンWHERE句で修飾されます。

要素パターン内で表示される唯一のグラフ・パターン変数は、要素パターンによってローカルに定義されたグラフ・パターン変数です。別の要素パターンのグラフ・パターン変数にはアクセスできません。例5-5を参照してください。