

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 openCypher 存取 Neptune 圖形
<a name="access-graph-opencypher"></a>

Neptune 支援使用 OpenCypher 建置圖形，OpenCypher 是使用圖形資料庫的開發人員目前最熱門的其中一個查詢語言。開發人員、商務分析師和資料科學家都愛用 OpenCypher 的 SQL 啟發語法，因為它提供了熟悉結構來編寫屬性應用程式的查詢。

**OpenCypher** 是屬性圖的宣告式查詢語言，最初由 Neo4j 開發，然後在 2015 年成為開放原始碼，並在 Apache 2 開放原始碼授權下投入 [OpenCypher](http://www.opencypher.org/) 專案。其語法記載於 [Cypher 查詢語言參考第 9 版](https://s3.amazonaws.com/artifacts.opencypher.org/openCypher9.pdf)。

如需 Neptune 支援 OpenCypher 規格的限制和差異，請參閱 [Amazon Neptune 中的 openCypher 規格合規](feature-opencypher-compliance.md)。

**注意**  
Cypher 查詢語言的目前 Neo4j 實作已某些方面與 OpenCypher 規格有所分歧。如果您要將目前 Neo4j Cypher 程式碼遷移至 Neptune，請參閱 [Neptune 與 Neo4j 的相容性](migration-compatibility.md) 和 [重寫 Cypher 查詢以在 Neptune 上的 OpenCpher 中執行](migration-opencypher-rewrites.md) 以取得協助。

從引擎 1.1.1.0 版開始，openCypher 適用於 Neptune 中的生產用途。

## Gremlin 與 openCypher：相似性與差異
<a name="access-graph-opencypher-overview-with-gremlin"></a>

Gremlin 和 OpenCypher 都是屬性圖查詢語言，並且它們在許多方面彼此互補。

Gemlin 旨在吸引程式設計人員並無縫融入程式碼中。因此，Gremlin 的設計是命令式，而對於具有 SQL 或 SPARQL 經驗的人員， OpenCypher 的宣告式語法可能會感覺更熟悉。對於在 Jupyter 筆記本中使用 Python 的資料科學家來說，Gremlin 似乎更自然，而對於具有某些 SQL 背景的商務使用者來說，openCypher 似乎更直觀。

好處是，您不必在 Neptune 中的 Gremlin 與 openCypher 之間進行選擇。****無論使用這兩種語言的哪一種輸入資料，任一種語言的查詢都可以在相同的圖形上操作。您可能會發現將 Gremlin 用於某些事情更方便，而對於其他事情，使用 OpenCypher 則更方便，取決於您正在做的事情。

Gremlin 使用命令式語法，可讓您透過一系列步驟來控制您在圖形中移動的方式，每個步驟都會包含資料串流、對其執行某些動作 (使用篩選條件、映射等)，然後將結果輸出至下一個步驟。Grimlin 查詢通常會採取格式 `g.V()`，後面跟著額外的步驟。

在 OpenCypher 中，您可以使用受 SQL 啟發的宣告式語法，其會指定節點和關係的模式，以使用 motif 語法 (例如 `()-[]->()`) 在圖形中尋找。OpenCypher 查詢通常以 `MATCH` 子句開頭、後面跟著其他子句，例如 `WHERE`、`WITH` 和 `RETURN`。