6.3 PGQLによるパターン一致

パターン一致は、MATCH句で1つ以上のパス・パターンを指定することで行われます。単一パス・パターンは頂点およびエッジの線形パスと一致しますが、より複雑なパターンは、複数のパス・パターンをカンマで区切って組み合せることによって一致させることができます。(対応するSQL文に類似した)値式はWHERE句で指定され、通常、頂点およびエッジのプロパティに制約を指定することによって一致をフィルタ処理で除外できます

たとえば、コンピュータ・ネットワーク上のTCP/IP接続のグラフを想定し、誰かが1つのマシンにログインし、そこから別のマシンへ、そこからさらに別のマシンへという場合を検出するとします。次のようなパターンを問合せます。

SELECT id(host1) AS id1, id(host2) AS id2, id(host3) AS id3         /* choose what to return */
FROM MATCH
    (host1) -[connection1]-> (host2) -[connection2]-> (host3)       /* single linear path pattern to match */
WHERE
    connection1.toPort = 22 AND connection1.opened = true AND
    connection2.toPort = 22 AND connection2.opened = true AND
    connection1.bytes > 300 AND                                     /* meaningful amount of data was exchanged */
    connection2.bytes > 300 AND
    connection1.start < connection2.start AND                       /* second connection within time-frame of first */
    connection2.start + connection2.duration < connection1.start + connection1.duration
GROUP BY id1, id2, id3                                              /* aggregate multiple matching connections */ 

パターン一致のその他の例については、PGQL仕様の関連するセクションを参照してください。