Spanner Graph アルゴリズムのスキーマ要件と機能の互換性

スキーマの要件

Spanner Graph アルゴリズムは、次の要件を満たすスキーマを持つグラフで実行できます。

  • エッジ入力テーブルは、ソースノード入力テーブルにインターリーブされ、 外部 キー または情報用の外部 キー が宛先ノード入力テーブルに必要です。Spanner Graph スキーマを設計するための ベスト プラクティスをご覧ください。
  • グラフ アルゴリズムへの各入力テーブルには、一意の識別 ラベルが必要です。

サポートされていないスキーマの例を次に示します。

-- Unsupported: Both `Person` and `Account` can only be referred to via label `Entity`.
CREATE PROPERTY GRAPH FinGraph
  NODE TABLES (
    Person KEY (id)
      LABEL Entity PROPERTIES (...),
    Account KEY (id)
      LABEL Entity PROPERTIES (...)
  );

サポートされているスキーマの例を次に示します。

-- Supported: Even though label `Entity` refers to both `Person` and `Account`,
-- label `Customer` uniquely identifies `Person`, label `Account` uniquely identifies `Account`.
CREATE PROPERTY GRAPH FinGraph
  NODE TABLES (
    Person KEY (id)
      LABEL Customer PROPERTIES (...)
      LABEL Entity PROPERTIES (...),
    Account KEY (id)
      LABEL Account PROPERTIES (...)
      LABEL Entity PROPERTIES (...)
  );

機能の互換性

このセクションでは、一般的なグラフ機能とのアルゴリズム クエリの互換性について説明します。

サポートされている MATCH 句

アルゴリズム クエリ構造で MATCH 句を使用してアルゴリズムの入力グラフを定義する場合は、次の点を考慮する必要があります。

  1. MATCH には、名前付き変数が 1 つの要素パターン(ノードまたはエッジ)が 1 つだけ含まれている必要があります。
  2. エッジパターンに終了ノードの明示的なパターンが含まれている場合は、ノードパターンでノードラベルまたは変数を使用しないでください。
  3. 要素パターン内で WHERE 句を使用できます。ただし、他の場所で定義された変数を参照しない場合に限ります。
  4. MATCH 句のラベル式は、1 つの要素テーブルを一意に識別する必要があります。

サポートされている MATCH 句の例を次に示します。

-- Supported: Assuming only 1 element table has `Account` label:
MATCH (a:Account)

MATCH (a:Account WHERE a.id > 400)

MATCH (a:Account WHERE a.id IN [101, 102, 105])

MATCH -[e:Transfers WHERE e.amount < 500]->

サポートされていない MATCH 句の例を次に示します。

-- Unsupported: End nodes for edge patterns cannot have labels or named variables.
MATCH (a:Account)-[]->

-- Unsupported: Each MATCH can only name one variable.
MATCH (a:Account)-[e:Transfers]->

-- Unsupported: If there are multiple node element tables in the graph, each MATCH
-- must uniquely identify one element table.
MATCH (a)

-- Unsupported: The `Entity` label maps to both `Account` and `Person` node element tables.
MATCH (a:Account | Entity)

RETURN 句を使用する

アルゴリズム クエリ構造の RETURN 句は、アルゴリズム クエリによって返されるデータを定義します。RETURN 句では、アルゴリズムの出力シグネチャの列を参照できますが、いくつかの制約があります。

  • アルゴリズムが ノードを出力する場合は、 ノードの任意のプロパティを返すことができます。ノードの ELEMENT_DEFINITION_NAME を返すこともできます。
  • アルゴリズムが パスを出力する場合は、 PATH_LENGTH(path).を返すことができます。
  • アルゴリズムからスカラー出力を返すことができます。
  • リテラル定数を返すことができます。

サポートされている RETURN 句の例を次に示します。

-- Supported.
CALL PageRank(...) YIELD node, score
RETURN ELEMENT_DEFINITION_NAME(node) AS node_type, node.id, score

-- Supported: You can return constants.
CALL PageRank(...) YIELD node, score
RETURN node.id, score, "pagerank-run1" AS algo_run_id

-- Supported.
CALL ShortestPath(...) YIELD source_node, target_node, path, cost
RETURN source_node.id AS source_id, target_node.id AS target_id,
  PATH_LENGTH(path) AS length, cost

サポートされていない RETURN 句の例を次に示します。

-- Unsupported: You cannot return the graph element `node` directly.
RETURN node, score

-- Unsupported: You can only return properties of `node`. Applying a function to a node property
-- is not supported.
RETURN node.id + 1, score

-- Unsupported: You can only return the scalar `score` directly from the algorithm output. Applying
-- a function to scalar output is not supported.
RETURN node.id, score + 1

-- Unsupported: General function calls are not allowed.
RETURN JSON_OBJECT(node.id, score) as json_obj

パラメータは対象外です

アルゴリズム クエリはクエリ パラメータをサポートしていません。

ビューから作成されたグラフのサポート

ビューでグラフを作成する場合、アルゴリズム クエリは、アルゴリズム入力の定義に使用されるノードとエッジ(エッジの終了ノードを含む)がビューに基づいていない場合にのみサポートされます。

次のステップ