openCypher でNeptune グラフにアクセスする - Amazon Neptune

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

openCypher でNeptune グラフにアクセスする

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

openCypher は、プロパティグラフの宣言型クエリ言語です。当初は Neo4j が 開発し、その後 2015 年にオープンソース化され、Apache 2 オープンソースライセンスの下で openCypher プロジェクトで活用されました。構文は Cypher クエリ言語リファレンス、バージョン 9 で説明されています。

エンジンリリース1.1.1.0以降、OpenencyPher はNeptuneで実稼働で使用できる。

Gremlin 対 openCypher:類似点と相違点

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 句、それに WHEREWITH、および RETURN のような他の句が続きます。

openCypher の使用を開始する方法

Neptune のプロパティグラフデータは、ロードされた方法に関係なく openCypher を使用してクエリできますが、RDF としてロードされたデータのクエリに openCypher を使用することはできません。

Neptune バルクローダーは、プロパティグラフデータをGremlin の CSV 形式と、openCypher の CSV 形式で受領します。また、もちろん、Gremlin や openCypher クエリを使用して、プロパティデータをグラフに追加することもできます。

Cypher クエリ言語を学習するためのオンラインチュートリアルが数多く用意されています。ここでは、openCypher クエリの簡単な例をいくつか挙げていますので、言語を理解するのに役立つかもしれませんが、openCypher を使用して Neptune グラフをクエリする最も簡単で簡単な方法は、openCypher ノートブックをNeptune ワークベンチで使うことです。ワークベンチはオープンソースであり、でホストされています GitHub でhttps://github.com/aws-samples/amazon-neptune-samples

OpenCypherノートブックは GitHub Neptune グラフノートブックリポジトリ。特に、openCypher のエアルートの可視化、およびイングリッシュ・プレミア・チームのノートブックをご確認ください。。

openCypher によって処理されるデータは、順序付けられていない一連のキー/値マップの形式をとります。これらのマップを調整、操作、および拡張する主な方法は、キーと値のペアに対してパターンマッチング、挿入、更新、削除などのタスクを実行する句を使用することです。

openCypher には、グラフ内のデータパターンを見つけるためのいくつかの句があり、そのうちの MATCH が最も一般的です。MATCH グラフ内で検索するノード、リレーションシップ、およびフィルタのパターンを指定できます。例:

  • すべてのノードを取得する

    MATCH (n) RETURN n
  • 接続されたノードを検索する

    MATCH (n)-[r]->(d) RETURN n, r, d
  • パスを見つける

    MATCH p=(n)-[r]->(d) RETURN p
  • ラベル付きのすべてのノードを取得する

    MATCH (n:airport) RETURN n

上記の最初のクエリはグラフ内のすべてのノードを返し、次の 2 つはリレーションシップを持つすべてのノードを返すことに注意してください。これは一般的にはお勧めしません!ほとんどの場合、返されるデータを絞り込む必要があります。これは、4 番目の例のように、ノードまたはリレーションシップのラベルとプロパティを指定することで実行できます。

openCypher 構文の便利なチートシートは Neptune github サンプルリポジトリにあります。