Persyaratan skema
Algoritma Spanner Graph dapat berjalan pada grafik dengan skema yang memenuhi persyaratan berikut:
- Tabel input edge harus disisipkan ke dalam tabel input node sumbernya dan memiliki Kunci Asing atau Kunci Asing Informasional ke tabel input node tujuannya. Lihat Praktik terbaik untuk mendesain skema Spanner Graph.
- Setiap tabel input ke algoritma grafik harus memiliki label identifikasi yang unik.
Berikut adalah contoh skema yang tidak didukung:
-- 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 (...)
);
Berikut adalah contoh skema yang didukung:
-- 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 (...)
);
Kompatibilitas fitur
Bagian ini menguraikan kompatibilitas kueri algoritma dengan fitur grafik umum.
Klausa MATCH yang didukung
Saat menggunakan klausa MATCH dalam struktur kueri algoritma untuk menentukan
grafik input untuk algoritma, Anda harus mempertimbangkan hal berikut:
- Setiap
MATCHhanya boleh berisi satu pola elemen (node atau edge) dengan satu variabel bernama. - Jika pola tepi menyertakan pola eksplisit untuk node akhir, jangan gunakan label atau variabel node dalam pola node.
- Anda dapat menggunakan klausa
WHEREdalam pola elemen jika tidak merujuk ke variabel yang ditentukan di tempat lain. - Ekspresi label dalam klausa
MATCHharus mengidentifikasi tabel elemen secara unik.
Contoh berikut menunjukkan klausa MATCH yang didukung:
-- 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]->
Contoh berikut menunjukkan klausa MATCH yang tidak didukung:
-- 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)
Menggunakan klausa RETURN
Klausa RETURN dalam struktur kueri algoritma menentukan
data yang ditampilkan oleh kueri algoritma. Anda dapat merujuk ke kolom dari tanda tangan output algoritma di klausa RETURN, dengan beberapa batasan:
- Jika algoritma menghasilkan Node, Anda dapat menampilkan properti node apa pun. Anda juga dapat menampilkan ELEMENT_DEFINITION_NAME node.
- Jika algoritma menghasilkan
Path,
Anda dapat menampilkan
PATH_LENGTH(path). - Anda dapat menampilkan output skalar apa pun dari algoritma.
- Anda dapat menampilkan Literal Konstanta apa pun.
Contoh berikut menunjukkan klausa RETURN yang didukung:
-- 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
Contoh berikut menunjukkan klausa RETURN yang tidak didukung:
-- 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
Parameter tidak didukung
Kueri algoritma tidak mendukung parameter kueri.
Dukungan untuk grafik yang dibuat dari tampilan
Saat Anda membuat grafik di tampilan, kueri algoritma hanya didukung jika node dan tepi (termasuk node akhir tepi) yang digunakan untuk menentukan input algoritma tidak didasarkan pada tampilan.
Langkah berikutnya
- Algoritma yang dijalankan Spanner Graph.
- Katalog algoritma Spanner Graph.
- Praktik terbaik algoritma Spanner Graph.