

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# openCypher でNeptune グラフにアクセスする
<a name="access-graph-opencypher"></a>

Neptune は、openCypher を使用したグラフアプリケーションの構築をサポートしています。これは、現在、グラフデータベースを操作する開発者にとって最も人気のあるクエリ言語の 1 つです。開発者、ビジネスアナリスト、データサイエンティストは、openCypher の SQL の影響が大きい構文を好みます。これは、グラフアプリケーションのクエリを作成するためによく知られた構造を提供するからです。

**openCypher** は、プロパティグラフの宣言型クエリ言語です。当初は Neo4j が 開発し、その後 2015 年にオープンソース化され、Apache 2 オープンソースライセンスの下で [openCypher](http://www.opencypher.org/) プロジェクトで活用されました。構文は [Cypher クエリ言語リファレンス、バージョン 9](https://s3.amazonaws.com/artifacts.opencypher.org/openCypher9.pdf) で説明されています。

openCypher 仕様の Neptune サポートの制限と相違点については、「[Amazon Neptune における openCypher の仕様準拠](feature-opencypher-compliance.md)」を参照してください。

**注記**  
Cypher クエリ言語の現在の Neo4j 実装は、openCypher 仕様とはいくつかの点で異なっています。現在の Neo4j Cypher コードを Neptune に移行する場合、詳細については, 「[Neptune の Neo4j との互換性](migration-compatibility.md)」と「[Neptune 上の openCypherで実行するように Cypher クエリを書き直す](migration-opencypher-rewrites.md)」を参照してください。

エンジンリリース 1.1.1.0 以降、openCypher は Neptune での本番使用が可能になりました。

## Gremlin 対 openCypher：類似点と相違点
<a name="access-graph-opencypher-overview-with-gremlin"></a>

Gremlin と openCypher はどちらもプロパティグラフクエリ言語であり、多くの点で補完的です。

Gremlin は、プログラマーに魅力的で、コードにシームレスに収まるように設計されました。その結果、Gremlin は設計上命令的ですが、OpenenCypher の宣言構文は SQL や SPARQL の経験を持つ人々はより身近に感じるかもしれません。Gremlin は Jupyter ノートブックで Python を使用するデータサイエンティストにとってより自然に見えるかもしれませんが、openCypher は SQL の背景を持つビジネスユーザーにはより直感的だと思えるかもしれません。

うれしいことに Neptune でGremlin と openCypher いずれかを**選ぶ必要はありません**。どちらの言語でも、データの入力に使用された 2 つの言語に関係なく、同じグラフでクエリを実行できます。何をするかによって、いくつかのことには Gremlinを、他のことには openCypher を、と使い分ける方が便利になるかもしれません。

Gremlin は、一連のステップでグラフ内を移動する方法を制御できる命令構文を使用します。各ステップは、データのストリームを取り込み、そのデータに対して何らかのアクション (フィルター、マップなどを使用して) を実行し、結果を次のステップに出力します。Gremlin クエリは、通常、`g.V()`　形式をとります。そして追加のステップが続きます。

openCypher では、SQL の影響が大きい宣言構文を使用します。この構文は、(`()-[]->()` のような) モチーフ構文を使用してグラフ内で検索するノードと関係のパターンを指定します。openCypher クエリは、多くの場合、`MATCH` 句、それに `WHERE`、`WITH`、および `RETURN` のような他の句が続きます。