fbpx

Neo4j DeskTop, Neo4j Bloomの紹介 #neo4j

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

Neo4j Bloomとは、Neo4j DeskTopのアプリケーションの1つであり、Cyhperクエリが書けない人でも、高度な検索ができる優れたGUIツールです。弊社の木内がNeo4j Desktop, Neo4j ETLの紹介を掲載していますが、今回は、Neo4j Bloomをご紹介します。

  • Bloomは、ローカルGDB又はリモートのGDBに接続します。
  • Bloomのグラフ操作は、ローカルのリソース上で行われます。
  • 標準のNeo4jブラウザーは、数百ノードを表示した時点で動きが鈍くなりますが、Bloomは数万ノード以上までスムーズに操作可能です。もちろん、手許のコンピュータのリソースに大きく依存します。ここでは、Windows10/1.70GHz/8GB/64ビットOSといった仕様のノードPCを利用しています。

[参照サイト]
https://neo4j.com/bloom/

[Neo4j Desktopとは]

Neo4j DesktopはNeo4j Enterprise Edition(有償版)にバンドルされているツールですが、開発やデモで利用する場合は、無料で利用できます。
・Neo4j Desktopでは、Neo4j Server Enterprise Editionを使っています。
・複数のバージョンのGDBをローカルで利用できます。
・Neoj4 Bloom, ETL, Browserなどのアプリケーションが統合されています。
・APOC、Graph Algorithms、GraphQLなどのフラグインが統合されている。

事前準備

Neo4j DeskTopのインストール

次のサイトを訪問し、Neo4j DeskTopのインストールパッケージを入手し、インストールを実行してください。ここでは、Windows10gをベースに解説しています。
Neo4j DeskTop Download

JDKが入っていない方は、JDK8をインストールしてください。

Neo4j DeskTopを起動すると、次のような画面が表示されます。

Neo4jサーバのインストール

初期状態では、Neo4jサーバが存在しない状態です。次の赤枠をクリックし、Neo4サーバをインストールしてください。

Create a Local Graphをクリックしてください。

グラフ名とパスワードを設定し、バージョンを選んで作成を開始します。

Neo4jサーバのインストールが終わったら起動してください。

Neo4jサーバが起動できました。

映画GDBのアップロード

Neo4jブラウザーをクリックしてください。

コマンドラインから、:play movie graphコマンドを実行してください。

右に進んでください。

Cypherクエリ文をクリックし、コマンドラインにロードしてから実行ボタンを押してください。

コマンドラインからcall db.schema()を実行し、メタグラフを表示してみてください。メタグラフは、Neo4j Bloomを利用する時に必要最低限の情報となります。

Neo4j Bloomのインストール

Neo4j Desktopのアプリケーションを利用するためには、それぞれの認証キー(activation key)が必要です。次のURLからBloomのアクティベーションキーがほしい、という旨を伝えて入手してください。
アクティベーションキーの入手

初期画面のサイドバーを下にスクロールし、Enable development modeをアクティブにしてください(ただ、クリックするだけでいいです)。

アクティベーションキーをサイドバーの2カ所に入力します(同じキーを2カ所にコピー)。
Neo4j Bloomを使う場合、その都度、アクティベーションキーの入力が必要です。

それから、Deployment Appを実行します(クリック)。

次のようにNeo4j Bloomの画面が表示されるはずです。

パースペクティブドローをクリックすると、次のように映画GDBがパースペクティブの対象になっているはずです。

Bloom画面の名称は、次のとおりです。

  • シーン(Scene)
    シーンとは、まさに映画の「シーン」のように色んなグラフ検索を行う場所であり、何かが行われている場面(シーン)でもあります。画面の枠のことではなく、ロケーション的にはサイドバーを除く右画面全体です。

Neo4j Bloomのパースペクティブ

パースペクティブとは

パースペクティブは、Neo4j Bloomで使用するグラフの構成や範囲、表示などをカスタマイズするコンポネントです。

  • パースペクティブは、任意に追加や排除が可能です。
  • カテゴリ(ノード)、属性も、任意に追加や排除可能です。
  • Cypherクエリのテンプレートを事前登録して利用可能です(サーチフレーズ)。
  • ノードのアイコンを登録できます。
  • パースペクティブの設定内容をエクスポート及びインポート可能です。

パースペクティブの設定

パースペクティブドローをクリックしてからMovieをクリックしてみてください。属性のどれを表示するか、排除するかなどが設定できます。

Personもクリックしてみてください。同様な設定ができます。

Neo4j Bloomの操作

ここでは、Neo4j Bloomの機能を9個の演習を通して紹介します。

演習1 

名前がTomで始まる人を検索します。

次のような結果になります。

演習2

Tom Hanksさんを検索してみます。
まさに、シーンを変える必要があります。右クリックしてClear Sceneをクリックすると、現在のシーンはすべて消えます。

それから、Tom Hanksさんを選択し、Enterキーを押します。

次のような結果になります。

演習3

Tom Hanksさんと関連している映画を検索してみます。

サーチバーのTom Hanksという名前の次にスペースを空けて、隣接したノードのラベル名(movie)を入力してみてください。自動的にデータモデルのリストを表示してくれます。1個選んでクリックします。

次のようにTom Hanksさんと関連している映画が表示されます。

演習4

次は、シーン画面からカテゴリレジェンドを操作してみます(画面右上のラベル達)。カテゴリレジェンドのラベルを選択すると、そのラベルに属するすべてのノードをロックオン/ロックアウトすることができます。
Personラベルをクリックしてみます。

次は、Movieラベルをクリックしてみます。

さらに、Movieラベルをクリックしてみます。

シーン画面で右クリックすると、コンテキストメニューが表示されます。
コンテキストメニューは、固定ではありません。それぞれのシーンで選択しているオプションに従ってできることを表示します。ここでは、インスペクト(Inspect)をクリックしてみます。
インスペクトは、選択されたノードの属性、リレーションシップ、隣接ノードなどを表示します。

次は、選択したノード(Tom Hanks)の属性を表示しています。

次は、選択したノードのリレーションシップを表示しています。

次は、隣接ノードと属性を表示しています。

演習5

Tom Hanksさんが出演及び監督した映画と、その映画の関係者を検索してみます。既に映画は検索済みなので、スペースを空けて隣接したノードのラベル名を入力すると、次のようなデータモデルのリストが表示されます。
1個選んでクリックしてみてください。

次のようなグラフが表示されるはずです。

ズームインすると、名称が見えてきます。

演習6

演習5のような状態では、もはや目で追っていくには限界があります。
ここでは、Tom Hanksさんが監督した映画に絞り込んで掘り下げてみます。
That Thing You Doという映画を選択し、右クリックをしてからDismiss Other Nodesをクリックしてみてください。

まるで映画のワンシーンのように、ターゲットしたノードを残して、他のグラフがすべて消えます。

ここから、カードリストを開いてみてください。

それから、Expandをクリックしてみてください。

次のようにTom Hanksさんが出演及び監督した映画と、その映画に出演した俳優さんが表示されます。

neo4j-bloom-operation-6-5

演習7

ここまでは、主にネットワーク上の隣接したノードの検索でした。
ここでは、ノードとノードを結ぶリレーションシップにフックを掛けるような検索を実行してみます。

サーチバーにfollow reviewのようにリレーションシップのタイプを入力してみてください。前方一致すれば、データモデルのリストが表示されます。それをクリックしてみてください。

フォローしている関係と、映画のレビューをしている関係だけが検索結果になっています。

演習8

Neo4j Bloomでは、ノードにアイコンを設定して表示できます。

アイコンを設定すると、こんな見栄えになります。

演習9

Neo4j Bloomでは、定型のCypherクエリを事前にテンプレートとして登録しておいて、一般ユーザはCypherクエリを意識せず、ただのキーワード検索として実行してもらうことが可能です。

これは、パースペクティブのサーチフレーズで設定します。
次のように、サーチフレーズとCypherクエリを書いて$nameのようにバインディング変数を埋め込んで置きます。

保存すると、サーチフレーズのリストとして表示されます。

サーチフレーズは、シーン画面のサーチバーで名称を入力すると、前方一致で反応してリストが表示されます(ここでは、find)。

サーチフレーズを選択し、変数としてTomを入力すると、前方一致の名前が表示されます。

検索を実行すると、次のような結果になります。

このようにサーチフレーズによる検索は、Cypherクエリが書けないユーザに対してCypherクエリを隠蔽し、平凡なキーワード検索として実行してもらうことができます。

  • どうしても複雑なCypherクエリが必要な検索である場合
  • 検索結果に何等かの制限を掛ける必要がある場合
  • 複雑なシーンが重なるような定型検索である場合

まとめ

このようにNeo4j Bloomを利用すると、Cyhperクエリが書けない一般ユーザでも、手軽に高度な検索ができます。そこそこの検索システムなら、アプリケーションの開発は要らないかも知れません。

Author

モダンアーキテクチャー基盤のソリューションアーキテクトとして活動しています。

[著書]
・Amazon Cloudテクニカルガイド―EC2/S3からVPCまで徹底解析
・Amazon Elastic MapReduceテクニカルガイド ―クラウド型Hadoopで実現する大規模分散処理
・Cypherクエリー言語の事例で学ぶグラフデータベースNeo4j
・Neo4jを使うグラフ型データベース入門(共著)
・RDB技術者のためのNoSQLガイド(共著)

leeの記事一覧

新規CTA