Skip to main content

ナレッジ グラフのコンテンツをクエリー

ナレッジ グラフを検索して、ナレッジ グラフに含まれるエンティティーとリレーションシップのサブセットを見つけて、さまざまなエンティティーが接続している状況を示すことができます。 来歴レコードを使用でき、来歴レコードを必要に応じて、検索結果に含めることができます。 以下の例をご参照ください。

  • 感染症の拡大を表すナレッジ グラフから、所定の施設とのリレーションシップを通して関連付けられた人間と動物を扱います。

  • 製造サプライ チェーンを表すナレッジ グラフから、サプライヤー、配達方法、倉庫などの特定の部分に関連付けられたコンテンツを扱います。

  • 組織を表すナレッジ グラフから、所定のタイプのデバイスを扱い、そのプロパティ (担当従業員の名前など) を表示します。

  • 亀と亀の生息地を表すナレッジ グラフから、特定の環境上の影響評価の情報を使用して、リスクのレベルが確立された生息地を特定します。

ナレッジ グラフを検索することにより、エンティティーとリレーションシップのサブセット、またはそのプロパティのサブセットを特定できます。 openCypher クエリー言語を使用して、openCypher クエリーを作成することで、関連するエンティティーとそのプロパティを検出し、ナレッジ グラフ、マップ、またはリンク チャートで、この制限された情報を操作します。

クエリー ビュー クエリー ビュー はすべての Knowledge Studio プロジェクトのデフォルト ビューであり、プロジェクトのナレッジ グラフのコンテンツを検索できます。 クエリー ビューには、以下の図に示す 6 つの主要なエリアがあります。以下の表で説明します。 図内の番号は説明に対応しています。

クエリー ビューのメイン エリアの図。

エレメント 説明
エレメント 1 クエリー コンテンツ クエリー コンテンツ には、新しいクエリーを記述する クエリー エディター クエリー ビュー と、プロジェクトの保存時にプロジェクトに保持される 保存済みのクエリー コレクション 保存済みのクエリー コレクション があります。
エレメント 2 クエリー ボックス クエリー ボックスは、openCypher クエリーを書式設定して実行できる複数行のテキスト ボックスです。
エレメント 3 クエリー結果 クエリーの 結果 はデフォルトでテーブルに表示されます。
エレメント 4 クエリー選択 クエリー結果 でレコードを選択して、返されたグラフ レコードのプロパティを調べることができます。
エレメント 5 結果のプレビュー リンク チャート、マップ、またはチャート プレビューで結果と選択セットをプレビューしたり、結果ツールバーを使用して選択セットに結果を追加したり選択セットからすべての結果を削除することができます。
エレメント 6 コンテキスト ツールバー コンテキスト ツールバーにはクエリーに特化したツールがあり、クエリー パラメーターを定義したり、プロジェクトにクエリーを保存して後から使用することができます。

ナレッジ グラフの検索

クエリー ビュー クエリー ビュー を使用し、ナレッジ グラフのエンティティーとリレーションシップをクエリーできます。 必要に応じて、クエリー結果に来歴レコードを含めることができます。

  1. プロジェクト コンテンツ ウィンドウの クエリー クエリー ビュー をクリックし、クエリー ビューを開きます。

    クエリー ボックスが開き、結果が表示されない状態でクエリ ビューが開きます。 クエリー ボックスは、openCypher クエリーを書式設定できる複数行のテキスト テキスト ボックスです。

  2. クエリー ボックスにクエリを入力します。 ポインターを新しい行に移動させて入力を続行するには、Enter キーを押します。

    例として、「MATCH (e) RETURN e」というクエリーは、ナレッジ グラフのすべてのエンティティーを返します。 このクエリーは任意のナレッジ グラフで使用できます。

    ヒント:

    クエリーから返される結果の数がわからない場合は、クエリーの末尾に「LIMIT 1000」を追加すると、予期せず数万件ものレコードが返され、ブラウザーがタイムアウトすることを回避できます。

  3. 来歴レコードをクエリーで使用または返すことを許可するには、必要に応じて 来歴を含む をオンにします。

    クエリーでの来歴の使用の詳細

  4. 実行 をクリックします。

    クエリー結果が 結果 エリアに表示されます。 クエリーで返されたエンティティー、リレーションシップ、来歴レコードは該当するアイコンで識別されます。

openCypher クエリーの作成

SQL がリレーショナル データベースにクエリーするように、openCypher は、グラフ データベースにクエリーします。 このクエリーの基本的な構造は、エンティティーを検索、照合して、それらのエンティティーを返すことです。ここでは、検索するエンティティーが括弧内で識別されます。 例として、クエリー MATCH (e) RETURN e は、任意のタイプのエンティティーを返します。 返されるエンティティーの数は、ナレッジ グラフの構成によってのみ制限されます。 返されるグラフ アイテムの数を制限するには、LIMIT 式を使用します。 例として、クエリー MATCH (e) RETURN e LIMIT 5 は、任意のタイプのエンティティーを 5 つ返します。

クエリー結果はデフォルトでテーブルに表示されます

クエリーでは、矢印を作成するシンボルを使用して、関連するエンティティーを識別できます。 例として、クエリー MATCH (e1)-->(e2) RETURN e1,e2 は、エンティティーのペア e1 と e2 を返します。ここでは、これら 2 つのエンティティーの間に、任意のタイプのリレーションシップが存在し、エンティティー e1 からエンティティー e2 までのいずれかのパスが、エンティティーを接続します。 クエリーが反対方向を指す矢印を使用して作成された場合、パスは、起点エンティティー e2 から終点エンティティー e1 までと見なされます (MATCH (e1)<--(e2) RETURN e1,e2)。 エンティティーが相互に関連する方法は、パターンと呼ばれます。

クエリーによって返される関連エンティティーが結果テーブルに表示されます。

クエリーでは、考慮すべき特定のリレーションシップを角括弧内で識別できます。 例として、クエリー MATCH (e1)-[]->(e2) RETURN e1,e2 は、エンティティーのペア e1 と e2 を返します。ここでは、任意のタイプの単一のリレーションシップが 2 つのエンティティーを接続します。 このクエリーは、上に示す同じクエリーを別の方法で表しており、推奨されるクエリー構文を示しています。 このクエリーは、起点エンティティー e1、リレーションシップ r、終点エンティティー e2 を返すことで、リレーションシップを示すタプル全体を返すように修正できます (MATCH (e1)-[r]->(e2) RETURN e1,r,e2)。 類似のクエリー MATCH (e1)-[ ]->( )-[ ]->(e2) RETURN e1,e2 または MATCH (e1)-[*2]->(e2) RETURN e1,e2 は、同じ方向の 2 つのリレーションシップによって接続されているエンティティーのペアを返します。 クエリーでは、MATCH (e1)-[ ]->(e2)<-[ ]-(e3) RETURN e1,e2,e3 のように、リレーションシップの方向が異なるパターンも特定できます。

関連エンティティーとそれらを接続するエンティティーが返されます。

上記のクエリー例は、任意のナレッジ グラフで使用できます。

Person エンティティーがリレーションシップの起点になるリレーションシップが返されます。

リレーションシップ タイプとエンティティー タイプをクエリの他のファセットに追加して、特定のリレーションシップ タイプと特定の関連エンティティーを考慮するように、クエリーを制限できます。 例として、MATCH (p:Person)-[v:HasVehicle]->(e) RETURN p,v,e は、すべての Person エンティティー p を返します。ここでは、HasVehicle リレーションシップ v が Person を別の任意のタイプのエンティティー e に接続します。 変数 p と v は、それぞれ Person エンティティーと HasVehicle リレーションシップに割り当てられているため、クエリーでそれらに関する情報を返すことができます。 前の例と比較すると、Pet または Document エンティティーがリレーションシップの終点になるリレーションシップは結果に含まれません。 ナレッジ グラフのデータ モデルに応じて、終点エンティティー e は、一般的な Vehicle エンティティーであるか、Automobile、Motorcycle、Boat、Airplane、Commercial Vehicle といった一連の特定のエンティティー タイプの 1 つである可能性があります。

Vehicle エンティティーがリレーションシップの終点になるリレーションシップが返されます。

エンティティーとリレーションシップの特定のプロパティをクエリー結果に含めることができます。 例として、MATCH (p:Person)-[:HasVehicle]->(e) RETURN p,e.make,e.model,e.year は、前に定義したのと同じクエリーを実行します。 ただし、結果には、終点エンティティー自体が表示されるのではなく、そのエンティティーの複数のプロパティ (その車両の make、model、year) にそれぞれ格納される値が表示されます。 この例では、クエリーで考慮される特定のリレーションシップに対して、変数が割り当てられませんでした。これは、リレーションシップのデータがクエリー結果に含まれることも、クエリーの他の部分で評価されることもないためです。

Vehicle 終点エンティティーのプロパティが結果に含まれます。

同様に、対象のエンティティーとリレーションシップを定義するプロパティを指定して、評価されるエンティティーとリレーションシップを制限できます。 考慮すべきプロパティを定義するには、WHERE 句をクエリーに追加します。 上記の例と同様に、WHERE 句でエンティティーおよびリレーション シップに関する特定の情報を参照するには、変数を割り当てる必要があります。 例として、クエリー MATCH (p:Person)-[hv:HasVehicle]->(v:Vehicle) WHERE p.lastName = 'Doe' and hv.endDate IS NULL and v.year < 1980 RETURN p,p.firstName,v,v.make,v.year では、特定の lastName プロパティ値を持つ Person エンティティーのみが評価されます。HasVehicle リレーションシップは、それらのエンティティーの endDate プロパティに NULL 値が含まれている場合のみ考慮されます。関連する Vehicle エンティティーは、year プロパティが 1980 より前の値である場合のみ考慮されます。

起点エンティティー、リレーションシップ、および終点エンティティーのプロパティが、特定の結果のセットを取得するために考慮されます。

クエリーでは、一連の個別のエンティティーおよびリレーションシップを返す代わりに、パターンで表される完全なパスを返すことができます。 これには、MATCH ステートメントで定義されたパターンを変数に割り当て、その変数を返します。 たとえば、クエリー MATCH path = (:Person)-[:HasVehicle]->(:Vehicle) RETURN path は、指定したパターンを満たす、すべてのエンティティーとリレーションシップの組み合わせのパスのリストを返します。 各パスには、一致したパターンのすべてのパート (Person、HasVehicle リレーションシップ、Vehicle) が含まれます。 このパターンの個別のパートはクエリーで返されないため、変数を割り当てる必要はありません。

パスには、一致したパターンのすべてのパートが含まれます。

クエリー結果の変更と更新

特定のグラフ アイテム タイプと特定のプロパティ値を評価して、ナレッジ グラフで焦点を絞ったエンティティーとリレーションシップのセットを取得できます。

  1. クエリー ボックス内をクリックします。

  2. 既存の openCypher クエリーのテキストを更新します。

    例として、クエリーを「MATCH (p:Person)-[hv:HasVehicle]->(v:Vehicle) WHERE v.year < 2005 RETURN p, p.firstName, p.phoneNumber, hv, v, v.make, v.model, v.year」に変更して、Vehicle の year プロパティが 2005 よりも前の値である Vehicle エンティティーへの HasVehicle リレーションシップを持つすべての Person エンティティーを返します。 結果には、Person エンティティーの firstName プロパティと phoneNumber プロパティ、HasVehicle リレーションシップ、および Vehicle エンティティーの make、model、year プロパティからの値が含まれます。

    Enter キーを押して、複数行のテキスト ボックスでポインターまたはクエリーのテキストの一部を新しい行に移動させます。 わかりやすくするために行を必要なだけ使用します。

    複数行のクエリー テキスト ボックスを使用すると、クエリーは複数行にまたがることができます。

  3. 実行 をクリックして新しい結果を取得します。

    クエリー結果が 結果 セクションに表示されます。 クエリーで返されたエンティティーとリレーションシップは該当するアイコンで識別されます。

    クエリー結果

  4. 必要に応じ、クリア をクリックしてクエリー ボックスから現在のクエリのテキストを削除します。

クエリーの保存

プロジェクトの一部として維持しておきたいクエリーを個別に保存することができます。 プロジェクトを保存すると、保存済みのクエリーがプロジェクトに保存され、クエリー コンテンツ ウィンドウの 保存済みのクエリー セクション 保存済みのクエリー コレクション にリストされます。

  1. クエリー コンテキスト ツールバーの クエリーの保存 クエリー ビュー をクリックします。

    新しい保存済みのクエリー モーダルが表示されます。

    クエリーの保存モーダル

  2. 必要に応じ:

    • タイトル 入力エリアにクエリーの名前を入力します。

    • クエリーの説明を 説明 テキスト エリアに入力します。 説明文を読むと、openCypher クエリーを読まなくてもクエリー結果のコンテキストがわかります。

  3. 保存 をクリックします。

    クエリーは クエリー コンテンツ ウィンドウの 保存済みのクエリー セクション 保存済みのクエリー コレクション に保存されます。

  4. 保存済みのクエリー 保存済みのクエリー コレクション をクリックしてクエリーを実行し、結果を表示します。

    保存済みのクエリーは、選択すると同時に実行されます。 クエリーのタイトルと説明は結果の上に表示されます。 クエリー ボックスは表示されません。

    保存済みのクエリーの結果テーブル

  5. クエリーの表示 をクリックし、クエリー ボックスの openCypher クエリー テキストを表示します。

  6. クエリー テキスト ボックスをクリックし、既存のクエリを変更します。

  7. クエリー コンテキスト ツールバーの 保存済みのクエリーの更新 クエリー ビュー をクリックし、保存済みのクエリーを更新して変更内容を反映します。

  8. クエリー コンテンツ でこの保存済みのクエリの オプション メニュー オプション をクリックします。

  9. 名前変更 名前変更 をクリックし、クエリーの タイトル テキスト ボックスと 説明 テキスト ボックスを更新して、変更内容を反映します。

  10. 適用 をクリックします。

  11. 必要に応じて、この保存済みのクエリーの オプション メニュー オプション の 削除 削除 をクリックし、プロジェクトから保存済みのクエリを削除します。