ナレッジ グラフを検索して、ナレッジ グラフに含まれるエンティティとリレーションシップのサブセットを見つけ、さまざまなエンティティが互いに接続している状況を示すことができます。 以下の例をご参照ください。
- 感染症の拡大を表すナレッジ グラフから、所定の施設とのリレーションシップを通して、関連する人間と動物を扱います。
- 製造サプライ チェーンを表すナレッジ グラフから、サプライヤー、配達方法、倉庫などの特定の部分に関連付けられたコンテンツを扱います。
- 組織を表すナレッジ グラフから、所定のタイプのデバイスを扱い、そのプロパティ (担当従業員の名前など) を表示します。
ナレッジ グラフを検索することにより、エンティティとリレーションシップのサブセット、またはそのプロパティのサブセットを特定できます。 openCypher クエリ言語を使用して openCypher クエリを作成することで、関連するエンティティとそのプロパティを検出し、ナレッジ グラフ、マップ、またはリンク チャートでこの制限された情報を操作します。
openCypher クエリの作成
SQL クエリがリレーショナル データベースであるように、openCypher クエリはグラフ データベースです。 基本的な例として、会社の製品とそれが製作される施設を説明するグラフを考えてみます。 自動車会社には、施設 (変数 f で識別されるエンティティ)、生産される車両のモデル (エンティティ m)、施設と生産モデルのリレーションシップ (HasModel (hm)) があります。
- モデル タイプの最初の 10 エンティティを検索するには、MATCH (m:Model) RETURN m LIMIT 10 というクエリを使用します。
- どのモデルがどの施設に関連付けられているかを見つけるには、MATCH (f:Facility)-[ :HasModel]->(m) RETURN f,m というクエリを使用して HasModel リレーションシップによりエンティティを照合します。
- クエリは、表示名のほか、表示名の代わりに、エンティティまたはリレーションシップの特定のプロパティを返すことができます。 たとえば、車のモデルとモデルのカテゴリ プロパティを返すために、MATCH (f:Facility)-[ :HasModel]->(m) RETURN f,m,m.category というクエリを使用できます。
openCypher クエリ言語の詳細については、「Amazon」が提供するドキュメントをご参照ください。ArcGIS Knowledge は openCypher クエリ言語のすべてをサポートしているわけではありません。 たとえば、クエリを使用してナレッジ グラフを更新することはできず、値を返すだけです。
openCypher については、「ヒストグラムを構築する」ためのデータをナレッジ グラフから取得するクエリをご参照ください。 [検索とフィルター] ウィンドウの [ヒストグラム] タブ で、[設定] ボタン をクリックして [クエリ タブにクエリを送信] をクリックします。 現在のヒストグラム セットのデータを取得するためのクエリが [クエリ] テキスト ボックスに表示されます。
調査のコンテンツの検索
調査ビュー内のコンテンツを検索することにより、調査内の小さなエンティティとリレーションシップのセットを探索できます。
- 「調査を開いて」、そのコンテンツを参照します。
- 調査ビューの上部にある検索テキスト ボックス内をクリックして、Ctrl + F キーを押します。
検索コントロールが表示されます。
- 検索コントロールの下部にある [クエリ モード] をクリックします。
検索テキスト ボックスのヒントが [ナレッジ グラフに対してグラフ クエリを実行] に変わり、[クエリ ウィンドウの拡張] ボタン が表示され、検索コントロールの下部に [検索モード] が表示されます。
- 検索テキスト ボックスに openCypher クエリを入力します。
たとえば、「MATCH (p:Person)-->(v:Vehicle) RETURN p, v」というクエリは、Vehicle エンティティとの何らかのリレーションシップがあるすべての Person エンティティを返し、結果に Person エンティティと Vehicle エンティティを返します。
- Enter キーを押します。
クエリの結果が調査ビューに表示されます。
- クエリ テキスト ボックス内をクリックして、クエリを修正し、変更内容を入力します。
たとえば、クエリを「MATCH (p:Person)-[hv:HasVehicle]->(v:Vehicle) RETURN p, hv, v」に変更すると、Vehicle エンティティとの HasVehicle リレーションシップがあるすべての Person エンティティを返し、結果に Person エンティティ、HasVehicle リレーションシップ、および Vehicle エンティティを返します。
- Enter キーを押して、修正したクエリを実行します。
更新されたクエリの結果が調査ビューに表示されます。 クエリで返されたエンティティとリレーションシップは該当するアイコンで識別されます。
- さらに長い openCypher クエリを記述する空間が必要な場合、[クエリ ウィンドウの拡張] ボタン をクリックします。
現在のクエリが、コントロール上部の 1 行のテキスト ボックスに直接表示されるのではなく、複数行の大きいクエリ テキスト ボックスに開かれます。
- 必要に応じて、わかりやすくなるように複数行を使用して、クエリの変更内容を入力します。
たとえば、クエリを「MATCH (p:Person)-[hv:HasVehicle]->(v:Vehicle) WHERE hv.acquisitionDate = NULL RETURN p, hv, v, v.make, v.model, v.year」に変更すると、HasVehicle リレーションシップの acquisitionDate プロパティが NULL 値である Vehicle エンティティとの HasVehicle リレーションシップがあるすべての Person エンティティを返します。 変更前と同じエンティティとリレーションシップを返しますが、結果には Vehicle エンティティのメーカー、モデル、および年プロパティの値も含まれます。
更新されたクエリの結果が調査ビューに表示されます。 クエリで返されたエンティティとリレーションシップは該当するアイコンで識別されます。
- [クエリの実行] ボタン をクリックします。
拡張されたクエリ ウィンドウを使用している場合、Enter キーを押すと、クエリが実行される代わりに、ポインターが複数行テキスト ボックスの新しい行に移動します。
クエリの結果が調査ビューに表示されます。
- クエリ テキスト ボックスの [検索のリセット] ボタン をクリックして、クエリを消去し、クエリの結果を削除します。
以前に調査ビューに表示されていたグラフ アイテムが再表示されます。
- クエリ テキスト ボックスが空の場合、クエリ テキスト ボックス内をクリックして、クエリ コントロールを開き、最近使用した 3 つのクエリを表示します。 リストにあるクエリをクリックして、そのクエリを再実行します。
選択したクエリが実行され、クエリの結果が調査に表示されます。
- クエリ テキスト ボックスの [検索のリセット] ボタン をクリックして、クエリ テキスト ボックスからクエリを消去し、調査から結果を削除します。 空のクエリ テキスト ボックス内をクリックしてクエリ コントロールを開き、リストにある特定のクエリの [履歴から削除] ボタン をクリックして、そのクエリを履歴から削除します。
指定したクエリがリストから削除されます。 クエリ履歴が更新され、最近使用した 3 つのクエリが表示されます。
- 複数行のクエリ テキスト ボックスが不要になったら、クエリ テキスト ボックスの右にある [クエリ ウィンドウを折りたたむ] ボタン をクリックします。
クエリを修正すると、1 行のクエリ テキスト ボックスで直接更新されます。 Enter キーを押して、更新したクエリを実行します。
検索とフィルター ウィンドウでナレッジ グラフを検索
[検索とフィルター] ウィンドウは、調査ビューで使用するとそのコンテンツの検索、マップではナレッジ グラフ レイヤーのコンテンツの検索、リンク チャートでは記述するエンティティとリレーションシップの検索を行うことができます。
- 次のいずれかの方法で、[検索とフィルター] ウィンドウを開きます。
- リボンの [調査] タブの [検索] グループで、[検索とフィルター] をクリックします。
- マップの [コンテンツ] ウィンドウでナレッジ グラフ レイヤーをクリックします。 [ナレッジ グラフ レイヤー] コンテキスト タブをクリックします。 [検索] グループで [検索とフィルター] ボタン をクリックします。
- リボンの [リンク チャート] タブの [検索] グループで、[検索とフィルター] をクリックします。
[検索とフィルター] ウィンドウが表示されます。
- [ソース] ドロップダウン リストをクリックし、クエリ対象のナレッジ グラフを含む調査、マップ レイヤー、またはリンク チャートをクリックします。
- [クエリ] タブ をクリックします。
[検索とフィルター] ウィンドウで開いている調査、マップ レイヤー、またはリンク チャートをペアリングすると、ペアリングされたビューに関連付けられたナレッジ グラフ全体に対してすべてのクエリが評価されます。 クエリはペアリングされたビューで利用可能なコンテンツに限定されていないことを示すメッセージが表示されます。
- [クエリ] テキスト ボックスに openCypher クエリを入力します。
- [適用] をクリックします。
検索結果が [結果] リストに表示されます。
ヒント:
ナレッジ グラフは多数のエンティティとリレーションシップを表現できます。 [検索とフィルター] ウィンドウの下部にあるビジー インジケーターに、結果リストが生成されていることが表示されます。 ArcGIS Pro が終了すると、ビジー インジケーターが停止し、[結果の更新] ボタン が表示されます。 クエリの結果を返すのに時間がかかりすぎる場合は、ビジー インジケーターをクリックして結果リストの構築を停止できます。
デフォルトでは、[検索とフィルター] ウィンドウがクエリの結果を探索するには狭すぎる場合があります。 メインの ArcGIS Pro アプリケーション ウィンドウで他のビューおよびウィンドウの配置に影響することなく、ウィンドウのドッキングを解除して拡張することができます。
クエリ結果の探索
openCypher クエリはさまざまな結果を返すことができます。 クエリがエンティティまたはリレーションシップのリストを返す場合、それらは結果リストに行あたり 1 つのエンティティまたはリレーションシップで表示されます。 クエリで返された値が、クエリで示され、ラベル付けされた列に表示されます。
openCypher クエリが、どのエンティティが別のエンティティと特定のリレーションシップを持つかどうか示す結果を返すことがあります。 この場合、結果リストには 3 つ組ごとに 1 つの行があります。3 つ組は起点エンティティ、リレーションシップ、終点エンティティで構成されます。 たとえば、MATCH (p:Person)-[r]->(e) RETURN p,r,e というクエリは、結果内の各行が人、人とは別のエンティティとのリレーションシップ、そのリレーションシップの終点エンティティを表す結果リストを返します。 この場合、結果リストには、p というタイトルの人の列、r というタイトルのリレーションシップの列、e というタイトルの終点エンティティの列があります。
代わりに、クエリがエンティティまたはリレーションシップの特定のプロパティを返した場合、結果リストは、クエリによって決定された適切な名前の列にこれらの値を表示します。 たとえば、MATCH (p:Person)-[ :HasVehicle]->(v) RETURN p,v,v.year というクエリは、p 列に Person エンティティの表示名、v 列に Vehicle エンティティの表示名、v.year 列に Vehicle エンティティの年プロパティの値をそれぞれ返します。 クエリが返した特定のプロパティの値がエンティティにない場合、「null」値が表示され、表示する値がないことが示されます。
次の例は、Person エンティティと Vehicle エンティティを返すクエリを示しています。ここで、人は車両との HasVehicle リレーションシップに属しています。 クエリは、HasVehicle リレーションシップの acquisitionDate プロパティ、Vehicle エンティティのメーカー、モデル、および年プロパティも返します。 プロパティに値がない場合は、「null」テキストが列に表示されます。
エンティティ またはリレーションシップ を含む列に、グラフ アイテムの表示名とそのアイコンが表示されます。 上記のスクリーン ショットでは、返された Person プロパティと Vehicle プロパティが p 列と v 列にそれぞれ表示されています。 HasVehicle リレーションシップの acquisitionDate プロパティは hv.acquisitionDate 列に表示されています。 Vehicle エンティティのメーカー、モデル、および年プロパティの値は v.make、v.model、および v.year 列にそれぞれ表示されています。
調査からナレッジ グラフを検索する場合、詳細パネルを使用して、選択したエンティティまたはリレーションシップのプロパティを表示します。 詳細パネルからは、クエリ結果に含まれていない他のリレーションシップや関連エンティティを探索できます。
[検索とフィルター] ウィンドウからナレッジ グラフを検索する場合、[ヒストグラム] タブ を使用して、結果を集約してフィルター処理します。 タブの上部にあるタイトルが [ヒストグラム - クエリ] に変更され、チャートはペアリングされたビューのコンテンツではなく、[クエリ] のクエリにより返されたコンテンツを表示していることが示されます。 また、クエリはビューのナレッジ グラフに対して評価されているため、ヒストグラムにはペアリングされたビューから利用できないコンテンツが含まれている可能性があることを示すメッセージが表示されます。
調査または [検索とフィルター] ウィンドウから、対象のエンティティまたはリレーションシップを選択し、選択したグラフ アイテムを右クリックします。 利用可能なオプションを使用して、今後の解析のために、選択したグラフ アイテムを新規または既存のマップまたはリンク チャートに追加します。 または、既存の調査、マップ、またはリンク チャートで対応するアイテムを選択します。