(57)【要約】【課題】グラフを構成するノード及びエッジの少なくともいずれかを示すグラフデータに対し、十分なスループットを得ることを可能にする情報処理装置、情報提供装置、情報システム及び情報処理プログラムを提供することである。【解決手段】実施形態の情報処理装置は、第１記憶部と、第２記憶部と、第１取得部と、判定部と、記憶制御部と、を有する。第１取得部は、グラフの元となる関係を有する関係データを取得する。判定部は、グラフデータの記憶先を指定する指定情報、及び第１記憶部又は第２記憶部が記憶しているグラフデータに対する接続関係、並びに関係データのデータサイズの少なくともいずれかに基づいて、関係データから得られるグラフデータを第１記憶部又は第２記憶部のいずれに記憶させるかを判定する。記憶制御部は、判定部の判定結果に応じて、グラフデータを第１記憶部又は第２記憶部のいずれかに記憶させる。【選択図】図１
2014010812.tif 000002
【特許請求の範囲】
【請求項１】
グラフを構成するノード及びエッジの少なくともいずれかを示すグラフデータを記憶可能な第１記憶部と、
前記第１記憶部よりも速いアクセス速度でグラフデータを記憶可能な第２記憶部と、
グラフの元となる関係を有する関係データを取得する第１取得部と、
グラフデータの記憶先を指定する指定情報、及び前記第１記憶部又は前記第２記憶部が記憶しているグラフデータに対する接続関係、並びに前記関係データのデータサイズの少なくともいずれかに基づいて、前記関係データから得られるグラフデータを前記第１記憶部又は前記第２記憶部のいずれに記憶させるかを判定する判定部と、
前記判定部の判定結果に応じて、グラフデータを前記第１記憶部又は前記第２記憶部のいずれかに記憶させる記憶制御部と、
を有する情報処理装置。
【請求項２】
前記判定部は、
前記第１記憶部又は前記第２記憶部が記憶しているグラフデータに対する接続関係に基づいて判定する場合、前記接続関係があるグラフデータを前記第２記憶部に記憶させると判定し、前記接続関係がないグラフデータを前記第１記憶部に記憶させると判定する
請求項１に記載の情報処理装置。
【請求項３】
前記第１記憶部は、
不揮発性の記憶部であり、
前記第２記憶部は、
揮発性の記憶部である
請求項１に記載の情報処理装置。
【請求項４】
前記ノードと前記エッジとの接続情報に応じてグラフデータの整列を行う整列部
をさらに有し、
前記記憶制御部は、
前記整列部が整列させた順にグラフデータを前記第１記憶部に記憶させる
請求項１に記載の情報処理装置。
【請求項５】
前記整列部は、
起点ノードを中心とした探索順序に基づいてグラフデータの整列を行う
請求項４に記載の情報処理装置。
【請求項６】
グラフデータの要求を行う要求メッセージを、ネットワークを介して情報提供装置に送信する送信部と、
前記要求メッセージに対応する前記関係データを含む応答情報を、前記情報提供装置から受信する受信部と、
をさらに有し、
前記判定部は、
前記応答情報に応じて、グラフデータを前記第１記憶部又は前記第２記憶部のいずれに記憶させるかを判定する
請求項１に記載の情報処理装置。
【請求項７】
前記要求メッセージは、
グラフの起点ノードを示す情報と、前記起点ノードからのホップ数を示す情報と、探索方法を示す情報と、グラフデータが示す前記ノード及び前記エッジの種類によって区別する種別情報と、前記ノード及び前記エッジの属性を特定する属性情報と、前記ノード及び前記エッジに対する前記種別情報及び前記属性情報と、の少なくともいずれかに基づく応答順序を示す応答順序情報を含み得る
請求項６に記載の情報処理装置。
【請求項８】
前記要求メッセージに合致するサブグラフのグラフデータを含む前記応答情報を前記受信部が受信する場合に、前記応答情報に含まれて前記サブグラフのグラフデータを生成するための補助となる補助情報を用いて、前記要求メッセージに合致する前記サブグラフのグラフデータを前記応答情報から抽出する抽出部
をさらに有する
請求項６に記載の情報処理装置。
【請求項９】
前記記憶制御部は、
前記第１記憶部に新たなグラフデータを記憶させる場合、前記第１記憶部又は前記第２記憶部が既に記憶しているグラフデータとは区別可能な区別情報を前記新たなグラフデータに設けて追記させる
請求項１に記載の情報処理装置。
【請求項１０】
前記第１記憶部又は前記第２記憶部が記憶するグラフデータのインスタンスに対して、前記関係データから得られるグラフデータのインスタンスの重複箇所を検出する検出部
をさらに有し、
前記判定部は、
前記検出部の検出結果に重複箇所がなければ前記第１記憶部に記憶させると判定し、前記検出部の検出結果に重複箇所があれば前記第２記憶部に記憶させると判定する
請求項１に記載の情報処理装置。
【請求項１１】
前記第１記憶部又は前記第２記憶部がグラフデータを記憶している範囲を索引情報として記憶する索引記憶部
をさらに有し、
前記検出部は、
前記索引情報に応じてグラフデータのインスタンスの重複箇所を検出する
請求項１０に記載の情報処理装置。
【請求項１２】
グラフデータを記憶する記憶部と、
ネットワークを介して情報処理装置からグラフデータへのクエリを受信する受信部と、
前記クエリに対応するグラフデータを前記記憶部から取得する第２取得部と、
前記第２取得部が取得したグラフデータに対し、前記情報処理装置による表示順序を示す情報を加えた応答情報を生成する応答情報生成部と、
前記応答情報を前記情報処理装置へ送信する送信部と、
を有する情報提供装置。
【請求項１３】
前記応答情報生成部は、
グラフの起点ノードを示す情報、前記起点ノードからのホップ数を示す情報、探索方法を示す情報、グラフデータが示す前記ノード及び前記エッジの種類によって区別する種別情報、前記ノード及び前記エッジの属性を特定する属性情報、並びに前記ノード及び前記エッジに対する前記種別情報及び前記属性情報の少なくともいずれかに基づく表示順序を示す情報を加えた前記応答情報を生成する
請求項１２に記載の情報提供装置。
【請求項１４】
前記応答情報生成部は、
前記要求メッセージに合致するサブグラフのグラフデータを含む前記応答情報を前記受信部が受信する場合に、前記応答情報に含まれて前記サブグラフのグラフデータを生成するための補助となる補助情報を含む前記応答情報を生成する
請求項１３に記載の情報提供装置。
【請求項１５】
グラフの元となる関係を有する関係データを、ネットワークを介して情報提供装置から情報処理装置へ提供する情報システムであって、
前記情報処理装置は、
グラフを構成するノード及びエッジの少なくともいずれかを示すグラフデータを記憶可能な第１記憶部と、
前記第１記憶部よりも速いアクセス速度でグラフデータを記憶可能な第２記憶部と、
前記関係データを取得する第１取得部と、
グラフデータの記憶先を指定する指定情報、及び前記第１記憶部又は前記第２記憶部が記憶しているグラフデータに対する接続関係、並びに前記関係データのデータサイズの少なくともいずれかに基づいて、前記関係データから得られるグラフデータを前記第１記憶部又は前記第２記憶部のいずれに記憶させるかを判定する判定部と、
前記判定部の判定結果に応じて、グラフデータを前記第１記憶部又は前記第２記憶部のいずれかに記憶させる記憶制御部と、
を有する情報システム。
【請求項１６】
グラフを構成するノード及びエッジの少なくともいずれかを示すグラフデータを記憶可能な第１記憶部、又は前記第１記憶部よりも速いアクセス速度でグラフデータを記憶可能な第２記憶部のいずれかにグラフデータを記憶させる情報処理プログラムであって、
グラフの元となる関係を有する関係データを取得するステップと、
グラフデータの記憶先を指定する指定情報、及び前記第１記憶部又は前記第２記憶部が記憶しているグラフデータに対する接続関係、並びに前記関係データのデータサイズの少なくともいずれかに基づいて、前記関係データから得られるグラフデータを前記第１記憶部又は前記第２記憶部のいずれに記憶させるかを判定するステップと、
判定結果に応じて、グラフデータを前記第１記憶部又は前記第２記憶部のいずれかに記憶させるステップと、
をコンピュータに実行させるための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理装置、情報提供装置、情報システム及び情報処理プログラムに関する。
【背景技術】
【０００２】
現在、リレーショナルデータモデルに沿ったリレーショナルデータベースが広く用いられている。データベースを高速化するための方法として、インメモリデータベースが知られている。インメモリデータベースは、データ、索引、一時データの全てがメモリ上に存在するメモリアクセスのみを前提としたアーキテクチャーとなっている。また、インメモリデータベースの例として、グラフのノードとエッジにデータを格納するグラフデータベースが知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−９０３５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、インメモリデータベースのグラフデータベースは、挿入処理におけるメモリへのキャッシュや、メモリ上でのマージ処理など、書込みのための処理が多くなるために、十分なスループットを得られないことがある。
【０００５】
本発明の一側面は、グラフを構成するノード及びエッジの少なくともいずれかを示すグラフデータに対し、十分なスループットを得ることを可能にする情報処理装置、情報提供装置、情報システム及び情報処理プログラムを提供することである。
【課題を解決するための手段】
【０００６】
実施形態の情報処理装置は、第１記憶部と、第２記憶部と、第１取得部と、判定部と、記憶制御部と、を有する。第１記憶部は、グラフを構成するノード及びエッジの少なくともいずれかを示すグラフデータを記憶可能にされている。第２記憶部は、第１記憶部よりも速いアクセス速度でグラフデータを記憶可能にされている。第１取得部は、グラフの元となる関係を有する関係データを取得する。判定部は、グラフデータの記憶先を指定する指定情報、及び第１記憶部又は第２記憶部が記憶しているグラフデータに対する接続関係、並びに関係データのデータサイズの少なくともいずれかに基づいて、関係データから得られるグラフデータを第１記憶部又は第２記憶部のいずれに記憶させるかを判定する。記憶制御部は、判定部の判定結果に応じて、グラフデータを第１記憶部又は第２記憶部のいずれかに記憶させる。
【図面の簡単な説明】
【０００７】
【図１】第１の実施形態にかかる情報処理装置の構成を例示する機能ブロック図。
【図２】第１記憶部におけるグラフデータの格納形式を例示する図表。
【図３】第１の実施形態にかかる情報処理装置がグラフデータを登録する動作例を示すシーケンス図。
【図４】第１取得部が取得する関係データの例を示す概念図。
【図５】第１記憶部におけるグラフデータの更新処理後のファイル状態を例示する図表。
【図６】第１記憶部における更新対象データの削除処理後のファイル状態を例示する図表。
【図７】第２の実施形態にかかる情報処理装置の構成を例示する機能ブロック図。
【図８】第２取得部が先読み処理を行う場合の第２の実施形態にかかる情報処理装置の動作を例示するフローチャート。
【図９】第３の実施形態にかかる情報処理装置の構成及びその周辺を例示するブロック図。
【図１０】グラフデータ登録のための第３の実施形態にかかる情報処理装置及びサーバ装置の動作を示すシーケンス図。
【図１１】第４の実施形態にかかる情報処理装置及び情報提供装置の概略を示すブロック図。
【図１２】部分グラフの要求を受けた第４の実施形態にかかる情報提供装置の動作例を示すフローチャート。
【図１３】補助情報を用いたグラフデータ表示のための第４の実施形態にかかる情報処理装置及び情報提供装置の動作を示すシーケンス図。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、実施形態にかかる情報処理装置について説明する。
【０００９】
（第１の実施形態）
図１は、第１の実施形態にかかる情報処理装置１０の構成を例示する機能ブロック図である。なお、情報処理装置１０は、例えば、ＰＣ（Personal  Computer）、デジタルテレビ、ハードディスクレコーダ、タブレットＰＣ又はスマートフォン等のモバイルデバイスとして実現される。即ち、情報処理装置１０は、ＣＰＵ、主記憶装置、補助記憶装置及び通信インターフェイスなどを備えたコンピュータとしての機能を有する。
【００１０】
図１に示すように、情報処理装置１０は、第１記憶部１００、ログ記憶部１１０、第２記憶部１２０、第１取得部１３０、判定部１４０及び記憶制御部１５０を有する。なお、判定部１４０及び記憶制御部１５０は、ハードウェア回路、又はＣＰＵで実行するソフトウェアのいずれであってもよい。
【００１１】
第１記憶部１００は、グラフを構成するノード及びエッジの少なくともいずれかを示すグラフデータを記憶する記憶部である。例えば、第１記憶部１００は、不揮発性の補助記憶装置であり、ＨＤＤ（Hard  Disk  Drive）、ＳＳＤ（Solid  State  Drive）、フラッシュメモリ又はＭＲＡＭ（Magnetoresistive  Random  Access  Memory）などによって構成される。第１記憶部１００は、単一の補助記憶装置であってもよいし、複数の補助記憶装置を併用する構成であってもよい。
【００１２】
図２は、第１記憶部１００におけるグラフデータの格納形式（ファイル編成）を例示する図表である。図２に示すように、第１記憶部１００は、ノードファイル（ａ）、エッジファイル（ｂ）及びプロパティファイル（ｃ）を含む例えばＷｅｂページのグラフデータを記憶する。
【００１３】
ノードファイルには、Ｗｅｂページ毎にノードＩＤ（区別情報）、ノードタイプ、プロパティ・オフセット、エッジ・オフセット及び削除フラグが含まれる。エッジファイルには、エッジ毎（Ａ→Ｂなど）に、エッジＩＤ、エッジタイプ、プロパティ・オフセット、起点ノード・オフセット、終点ノード・オフセット及び削除フラグが含まれる。プロパティファイルには、Ｗｅｂページ毎に、次バージョンオフセット、ｕｒｌ（Uniform  Resource  Locator）及びタイトル（title）が含まれる。これらは、あくまでＷｅｂページデータにおけるプロパティの一例であり、グラフデータとして管理する対象毎に、様々なプロパティが設定されてもよい。
【００１４】
ログ記憶部１１０（図１）は、ログ出力による永続性の保証のために、グラフデータを記憶する。
【００１５】
第２記憶部１２０は、第１記憶部１００よりも速いアクセス速度でグラフデータを記憶する。例えば、第２記憶部１２０は、揮発性の主記憶装置であり、ＤＲＡＭ（Dynamic  Random  Access  Memory）などのメモリによって構成される。第２記憶部１２０が記憶するグラフデータは、ノードやエッジそれぞれの属性情報を含めて実体化され、それぞれがポインタで接続されてグラフ構造を形成するように構成されてもよい。また、第２記憶部１２０は、グラフデータの一部（例えば属性情報）を第１記憶部１００に残し、残した情報のアドレス情報を保持してノード及びエッジを部分的に実体化するようにグラフデータを記憶してもよい。また、第２記憶部１２０は、第１記憶部１００と同様にノードＩＤ（区別情報）などを含む形式でグラフデータを記憶してもよい。
【００１６】
第１取得部１３０は、グラフの元となる関係を有する関係データを取得し、記憶制御部１５０に対して出力する。例えば、関係データは、ＷｅｂブラウザによるＷｅｂページの閲覧履歴などであり、グラフデータ化が可能な関係を有するグラフデータ化前のデータである。Ｗｅｂページ閲覧履歴（一覧）をグラフデータ化する場合、例えばＷｅｂページ一覧の各ページをそれぞれノードとし、各ページ間のリンクをそれぞれエッジとする。また、第１取得部１３０は、関係データに付加されて後述する判定に用いられる動作設定も取得し、判定部１４０に対して出力するように構成されてもよい。
【００１７】
具体例として、第１取得部１３０は、情報処理装置１０（ＰＣなど）のＷｅｂブラウザの閲覧履歴としてキャッシュされているＷｅｂページを読み込み、Ｗｅｂグラフを生成して記憶する（図４参照）。例えば、第１取得部１３０は、Ｗｅｂグラフをビューとして閲覧可能にするＷｅｂブラウザの拡張機能、すなわちアプリケーションとして実現される。
【００１８】
判定部１４０は、第１取得部１３０から受入れた動作設定に応じて、グラフデータを第１記憶部１００又は第２記憶部１２０のいずれに記憶させるかを判定する。ここで、動作設定とは、例えば、グラフデータの記憶先を指定する指定情報、及び第１記憶部１００又は第２記憶部１２０が記憶するグラフデータに対する接続関係、並びに関係データのデータサイズの少なくともいずれかによりグラフデータの記憶先を設定する制御情報であるとする。例えば、判定部１４０は、第２記憶部１２０に既に記憶されているグラフデータに対し、接続関係がないグラフデータは第１記憶部１００へ直接書込む。判定部１４０は、第２記憶部１２０及び第１記憶部１００の両方に既に記憶されているグラフデータに対して接続関係を参照するように構成されてもよい。
【００１９】
記憶制御部１５０は、第１取得部１３０が取得した関係データを受入れ、判定部１４０の判定結果に応じて、関係データに対応するグラフデータを第１記憶部１００又は第２記憶部１２０のいずれかに記憶させることにより、グラフデータの登録を行う。なお、記憶制御部１５０は、第１記憶部１００にグラフデータを記憶させる場合において、関係データを第１記憶部１００へ記憶させるグラフデータ形式に直接変換してもよいし、第２記憶部１２０上で保持する構造に一旦変換した上で記憶させてもよい。また、記憶制御部１５０は、関係データの順序をそのまま維持させてグラフデータを記憶させてもよいし、隣接ノード（アクセス順序が近いノード）が物理的に近くに配置されるようにグラフデータを記憶させてもよい。
【００２０】
また、記憶制御部１５０は、第１記憶部１００に対して、例えば不揮発性記憶領域上の書込み先アドレスを計算する。ここで、記憶制御部１５０は、第１記憶部１００に対しては全てのグラフデータを、予め定められた固定サイズで追記（完全追記）する。第１記憶部１００に対して、グラフデータは、完全追記であることと、固定サイズであることから、高速に書込まれる。
【００２１】
また、記憶制御部１５０は、第２記憶部１２０に対しては、グラフデータのインスタンス化を行い、グラフデータの第２記憶部１２０内（メモリ上）での接続を実現する（メモリ上での展開）。ここで、記憶制御部１５０は、既に第２記憶部１２０（第１記憶部１００及び第２記憶部１２０でもよい）に記憶されているグラフデータの情報（ノードＩＤなど）を参照し、グラフデータのインスタンスの重複を防止している。
【００２２】
記憶制御部１５０は、グラフデータだけでなく、記憶先情報を第１取得部１３０から受入れるように構成されてもよい。なお、記憶制御部１５０は、記憶先情報及びグラフデータを別個に処理するように構成されてもよい。
【００２３】
具体例として、記憶制御部１５０は、グラフデータベース・ライブラリの登録関連ＡＰＩ（Application  Program  Interface）及びその内部処理である。記憶制御部１５０は、グラフデータベースのオープン処理の引数として記憶先情報を指定できるように構成されてもよいし、新規挿入・更新・削除といった登録系処理の引数として記憶先情報を指定できるように構成されてもよい。例えば、記憶先情報は、グラフデータベースをインメモリデータベースとして動作させるか（常に第２記憶部１２０に記憶させるか）、ファイルデータベースとして動作させるか（第１記憶部１００に記憶させるか）のいずれかを判断可能な情報を含む。また、記憶先情報は、ファイルデータベースとして第１記憶部１００を利用する場合のファイル又はディレクトリのパス情報を含んでもよい。
【００２４】
なお、情報処理装置１０は、記憶制御部１５０と、第１記憶部１００及び第２記憶部１２０とが内部ネットワークなどを介して接続される構成であってもよい。この場合、記憶先情報は、ＩＰアドレスやホスト名、ポート番号、データベースのユーザＩＤや秘密情報を含むものであってもよい。なお、この記憶先情報は必須ではなく、判定部１４０は、常にいずれかの情報によって判定を行うように構成されてもよい。
【００２５】
次に、情報処理装置１０の動作について説明する。図３は、情報処理装置１０がグラフデータを登録する動作例を示すシーケンス図である。図４は、情報処理装置１０の第１取得部１３０が取得する関係データの例を概念的に示す概念図である。
【００２６】
図３に示すように、ステップ１００（Ｓ１００）において、第１取得部１３０は、例えばＷｅｂ閲覧履歴として蓄積されたＷｅｂページ一覧（図４（ａ）参照）を関係データとして取得する。第１取得部１３０は、Ｗｅｂページ一覧のページをノードとし、ページ間のリンクをエッジとすることにより、Ｗｅｂページ一覧をグラフデータ化する（図４（ｂ）参照）。
【００２７】
ステップ１０２（Ｓ１０２）において、第１取得部１３０は、グラフデータを記憶制御部１５０に対して入力する。ステップ１０４（Ｓ１０４）において、記憶制御部１５０は、ログ記憶部１１０に対してログ記録を要求する。ステップ１０６（Ｓ１０６）において、ログ記憶部１１０は、障害発生時のリカバーを目的として、入力データ（グラフデータ）をログとして記憶する。つまり、ログ記憶部１１０は、グラフデータを永続化する。
【００２８】
ステップ１０８（Ｓ１０８）において、ログ記憶部１１０は、グラフデータの記憶完了を記憶制御部１５０に対して通知する。ステップ１１０（Ｓ１１０）において、記憶制御部１５０は、グラフデータの記憶先を判定する要求を判定部１４０に対して行う（判定要求）。
【００２９】
ステップ１１２（Ｓ１１２）において、判定部１４０は、上述した動作設定（制御情報）に応じて、グラフデータを第１記憶部１００又は第２記憶部１２０のいずれに記憶させるかを判定する。図３に示した例においては、判定部１４０は、グラフデータを第１記憶部１００に記憶させる判定を行ったとする。ステップ１１４（Ｓ１１４）において、判定部１４０は、判定結果を記憶制御部１５０に対して通知する。
【００３０】
ステップ１１６（Ｓ１１６）において、記憶制御部１５０は、第１記憶部１００に対し、グラフデータの登録要求を行う。ステップ１１８（Ｓ１１８）において、第１記憶部１００は、グラフデータを記憶する。ステップ１２０（Ｓ１２０）において、第１記憶部１００は、グラフデータの記憶完了を記憶制御部１５０に対して通知する。ステップ１２２（Ｓ１２２）において、記憶制御部１５０は、グラフデータの登録完了を第１取得部１３０に対して通知する。
【００３１】
次に、記憶制御部１５０が第１記憶部１００に対してグラフデータを記憶させる制御（ファイル編成）について説明する。なお、記憶制御部１５０は、第１記憶部１００がグラフデータの新規挿入、更新又は削除を行うように制御を行う。ここでは、ノード及びエッジのプロパティ以外の情報は変更されず、プロパティについてのみ変更が発生するものとする。また、ノード及びエッジは、新規挿入（追加）又は削除しかなされないこととする。
【００３２】
（新規挿入：図２参照）
まず、記憶制御部１５０は、第１記憶部１００に対してグラフデータを新規挿入する場合、予め定められた書込み順序に従って、第１記憶部１００におけるアドレス情報（書込み位置情報）を事前に算出する。なお、アドレス情報とは、第１記憶部１００における書込み位置情報であり、例えばファイルの先頭からのオフセット、ページ（不揮発性記憶領域から揮発性記憶領域への読み込み単位）先頭からのオフセット等である。
【００３３】
次に、記憶制御部１５０は、それぞれのファイルの末尾に、ノード、エッジ及びプロパティを追記する。つまり、記憶制御部１５０は、グラフデータの新規挿入を行う場合、第１記憶部１００においてノード、エッジ及びプロパティを上書きすることなく、新たに追記（完全追記）する。ここで、エッジに含まれてエッジを構成するノードを示す情報は、事前に算出されたアドレス情報とされる。
【００３４】
なお、第１記憶部１００に対するグラフデータの新規挿入においては、グラフデータの将来的な更新又は削除に備えて、「次バージョンアドレス（図２（ｃ）参照）」及び「削除フラグ（図２（ａ）参照）」の２つの領域が設けられている。
【００３５】
「次バージョンアドレス」は、将来的なグラフデータの更新における次バージョンの書込み開始位置を格納する領域である。例えば、「次バージョンアドレス」の領域には、書込み開始位置（ファイルオフセット）情報の他、タイムスタンプ情報やバージョン情報（トランザクション識別情報）が含まれてもよい。また、「次バージョンアドレス」には、最新のエントリであることを示す場合、空アドレス（例えば０で埋める）を示す情報が書込まれる。
【００３６】
「削除フラグ」は、削除されたノード又はエッジであるか否かを示すデータを格納する領域である。例えば、「削除フラグ」には、ブール値のフラグの他、タイムスタンプ情報やバージョン情報（トランザクション識別情報）などが含まれてもよい。
【００３７】
（更新）
記憶制御部１５０は、第１記憶部１００に記憶されたグラフデータを、上述した次バージョンアドレス（例えば次バージョンオフセット）を書込むことによって更新とみなす。図５は、第１記憶部１００におけるグラフデータの更新処理後のファイル状態を例示する図表である。図５においては、ＷｅｂページＡのノードのプロパティ（Ｗｅｂページのタイトル）が変更されている。
【００３８】
グラフデータが更新された場合、更新対象データ（ノード・エッジ）には、新規挿入時に算出されたアドレス情報が含まれる。グラフデータが更新されると、更新前に空アドレスであった次バージョンアドレスに更新データの追記位置（ファイルの末尾）のアドレスが書込まれる。追記位置の更新データには、まず最新エントリであることを示す空の次バージョンアドレスが書込まれ、続いて、プロパティの更新情報が追記される。
【００３９】
例えば、図５に示すように、プロパティファイルにおいてオフセット値が‘０ｘ００‘である更新されたノード（ＷｅｂページＡ）には、次バージョンアドレスｔ１（次バージョンオフセット）にアドレス情報として算出されたオフセット値‘０ｘｃ０‘が含まれる。グラフデータが更新されると、このアドレス情報を起点として、次バージョンアドレスが空アドレスとなるまで辿られる。例えば、オフセット値が‘０ｘｃ０‘であるページＡ（ｔ２）は、次バージョンアドレス（次バージョンオフセット）が空アドレス‘０ｘ００‘となっている。つまり、オフセット値が‘０ｘｃ０‘であるＷｅｂページＡ（ｔ２）は、更新後の最新エントリのＷｅｂページＡである。
【００４０】
（削除）
記憶制御部１５０は、第１記憶部１００に記憶された更新対象データ（ノード・エッジ）を、上述した削除フラグをＯＮにすることによって削除とみなす。図６は、第１記憶部１００における更新対象データの削除処理後のファイル状態を例示する図表である。図６においては、ページＡのノードが削除されている。
【００４１】
ノードが削除された場合、更新対象データは、削除フラグがＯＮにされている。更新対象データには、新規挿入時に算出されたアドレス情報が含まれるので、このアドレス情報を起点として、ＯＮにされた削除フラグの位置が特定される。
【００４２】
第１記憶部１００に記憶される上述したファイルは、ノード、エッジ及びプロパティを格納する３ファイルに分割されているが、全てがまとめられた１ファイルで編成されてもよい。また、ファイルは、プロパティがノード向け及びエッジ向けの２つに分割されてもよい。また、ファイルは、サイズや格納ノード数・エッジ数などに上限が設けられ、それぞれ複数に分割されてもよい。また、ファイルは、ノードタイプやエッジタイプによって分割されてもよい。
【００４３】
また、ファイルは、グラフデータに対する種々のクエリの高速実行を可能にするために、例えば、サブグラフを同定したり、記憶されているグラフの範囲を取得したりするためのグラフ・インデックス（パス・インデックスを含む）を記述した複数のインデックスファイルを含む編成であってもよい。なお、図２等に示した第１記憶部１００のファイル編成では、プロパティが全て追記とされているが、変更された箇所のみが追記される構成であってもよい。
【００４４】
このように、第１の実施形態にかかる情報処理装置１０は、第１記憶部１００が（プロパティ以外の）ノード・エッジの再配置（上書き）を伴わない完全追記型のファイル編成とされているので、グラフデータの新規挿入・更新・削除のいずれにも、高い書込みスループットを得ることができる。
【００４５】
また、実施形態にかかる情報処理装置は、グラフデータの記憶先を指定する指定情報、及び第１記憶部又は第２記憶部が記憶しているグラフデータに対する接続関係、並びに関係データのデータサイズの少なくともいずれかに基づいて、関係データから得られるグラフデータを第１記憶部又は第２記憶部のいずれに記憶させるかを判定するので、グラフを構成するノード及びエッジの少なくともいずれかを示すグラフデータに対し、十分なスループットを得ることを可能にする。
【００４６】
（第２の実施形態）
図７は、第２の実施形態にかかる情報処理装置２０の構成を例示する機能ブロック図である。なお、情報処理装置２０は、例えば、ＰＣ、デジタルテレビ、ハードディスクレコーダ、タブレットＰＣ又はスマートフォン等のモバイルデバイスとして実現される。即ち、情報処理装置２０は、ＣＰＵ、主記憶装置、補助記憶装置及び通信インターフェイスなどを備えたコンピュータとしての機能を有する。
【００４７】
図７に示すように、情報処理装置２０は、第１記憶部１００、ログ記憶部１１０、第２記憶部１２０、第１取得部１３０、判定部２４０、記憶制御部２５０、索引記憶部２６０、検出部２７０、動作設定記憶部２８０、整列部２９０、圧縮部２００及び第２取得部２１０を有する。なお、図７に示した情報処理装置２０において、図１に示した情報処理装置１０を構成する部分と実質的に同一の部分には同一の符号が付してある。
【００４８】
索引記憶部２６０は、第１記憶部１００又は第２記憶部１２０に記憶されている既存グラフデータ全体の範囲を示す範囲情報や、より細粒度な部分に記憶されているグラフデータの範囲情報などの索引情報を記憶する。
【００４９】
検出部２７０は、記憶制御部２５０に入力されたグラフデータと、第１記憶部１００又は第２記憶部１２０に記憶されている既存グラフデータとを比較し、グラフデータのインスタンスの重複箇所を検出する。検出部２７０は、グラフデータそれぞれのデータのマッチングを図って重複箇所を検出するように構成されてもよいし、索引記憶部２６０の索引情報を利用して重複箇所を検出するように構成されてもよい。
【００５０】
動作設定記憶部２８０は、記憶制御部２５０に入力されたグラフデータを、第１記憶部１００又は第２記憶部１２０のいずれに記憶するかを示す記憶先情報などを予め記憶している記憶部である。記憶先情報は、第１記憶部１００又は第２記憶部１２０のいずれにグラフデータを記憶させるかを判定部２４０が判定するために用いられる。また、動作設定記憶部２８０は、記憶先情報に代えて、判定部２４０が判定するために用いる他の情報を記憶していてもよい。例えば、動作設定記憶部２８０は、入力されたグラフデータのサイズや、第２記憶部１２０に記憶されたグラフデータのサイズの閾値を記憶先情報に代えて記憶していてもよい。
【００５１】
判定部２４０は、上述した判定部１４０の機能に加えて、検出部２７０が検出した検出結果及び動作設定記憶部２８０が記憶している記憶先情報を用いて、第１記憶部１００又は第２記憶部１２０のいずれにグラフデータを記憶させるかを判定する。例えば、判定部２４０は、検出部２７０の検出結果に重複箇所がなければ第１記憶部１００に記憶させると判定し、検出部２７０の検出結果に重複箇所があれば第２記憶部１２０に記憶させると判定する。また、判定部２４０は、重複箇所の数に応じて判定を行うように構成されてもよい。
【００５２】
整列部２９０は、入力されたグラフデータを予め定められた特定の整列戦略に従って整列させて第１記憶部１００へ書き込む。整列戦略は、記憶制御部２５０への入力データに含まれていてもよいし、動作設定記憶部２８０に記憶されていてもよいし、固定であってもよい。また、整列戦略は、例えば、特定ノードを起点とした幅優先探索順、又は深さ優先探索順であってもよい。さらに、整列戦略が示す探索順序は、探索ホップ数の上限値、ノードやエッジの属性値、ノードやエッジの種別情報及び属性情報などによって定められてもよい。
【００５３】
圧縮部２００は、第１記憶部１００内の削除フラグがＯＮにされたノード情報、エッジ情報及び古いバージョンのプロパティ情報を削除し、有効なグラフデータのみを残すことにより、第１記憶部１００に対するグラフデータのサイズを圧縮する。なお、圧縮部２００は、削除されたノードに接続されたエッジ情報、隣接するノード情報も更新する。圧縮部２００は、記憶制御部２５０を介してアプリケーションから発行された明示的な圧縮要求をトリガとして圧縮を行ってもよいし、内部処理として定期的に圧縮を行ってもよい。また、圧縮部２００は、グラフデータの削除量（数）や総データ量（数）に閾値を設け、閾値を超えることをトリガとして圧縮を行うように構成されてもよい。
【００５４】
第２取得部２１０は、与えられたクエリに基づいて、グラフデータを探索し、クエリに該当する結果を取得する。例えば、第２取得部２１０は、グラフデータベース・ライブラリの読み込み関連ＡＰＩである。クエリは、指定ノード、エッジ又はサブグラフを取得する検索要求である。また、クエリは、指定ノードから、指定の探索戦略（探索順序、探索する種別・属性条件）で隣接エッジ・ノードを走査する探索要求であってもよい。
【００５５】
また、第２取得部２１０は、探索要求に応じて第１記憶部１００から該当グラフデータを探索する場合、探索戦略に基づいてデータを一定数先読みするように構成されてもよい。この先読み処理は、整列部２９０の整列戦略を前提として、第１記憶部１００の一定サイズの記憶領域を一括取得することによって実現されてもよい。
【００５６】
図８は、第２取得部２１０が先読み処理を行う場合の情報処理装置２０の動作を例示するフローチャートである。図８に示すように、ステップ２００（Ｓ２００）において、記憶制御部２５０は、次ノード探索要求を受信する。
【００５７】
ステップ２０２（Ｓ２０２）において、記憶制御部２５０は、次ノードが第２記憶部１２０（メモリ）に展開済みであるか否かを判定する。記憶制御部２５０は、次ノードが第２記憶部１２０に展開済みである場合（Ｓ２０２：Ｙｅｓ）にはＳ２１４の処理に進み、次ノードが第２記憶部１２０に展開済みでない場合（Ｓ２０２：Ｎｏ）にはＳ２０４の処理に進む。
【００５８】
ステップ２０４（Ｓ２０４）において、記憶制御部２５０は、現在使用しているメモリ量（第２記憶部１２０の使用領域）と読込単位メモリの大きさの和（Ｂ）が、メモリ使用量閾値（Ａ）未満であるか否かを判定する。記憶制御部２５０は、ＢがＡ未満であると判定した場合（Ｓ２０４：Ｙｅｓ）にはＳ２０６の処理に進み、ＢがＡ未満でないと判定した場合（Ｓ２０４：Ｎｏ）にはＳ２０８の処理に進む。
【００５９】
ステップ２０６（Ｓ２０６）において、記憶制御部２５０は、第２記憶部１２０のトラバース済みのメモリ領域を開放する。
【００６０】
ステップ２０８（Ｓ２０８）において、記憶制御部２５０は、第１記憶部１００の不揮発記憶領域上のアドレス（ファイルオフセット）を取得する。
【００６１】
ステップ２１０（Ｓ２１０）において、記憶制御部２５０は、第２記憶部１２０への読み込み単位として、アドレスを含むページ領域を読み込む。
【００６２】
ステップ２１２（Ｓ２１２）において、記憶制御部２５０は、読み込んだページ上のグラフデータ（ノード・エッジ）をメモリ（第２記憶部１２０）に展開する。また、記憶制御部２５０は、グラフデータの相互接続を行ってもよい（option）。
【００６３】
ステップ２１４（Ｓ２１４）において、記憶制御部２５０は、メモリ展開済みの次ノードを取得する。
【００６４】
このように、第２の実施形態にかかる情報処理装置２０は、既存グラフデータと重複した場合や、入力されたグラフデータが大きい場合など、記憶先の判定に時間を要する場合において、索引記憶部２６０により、この判定処理を軽減することができる。また、情報処理装置２０は、整列部２９０と第２取得部２１０との連携により、第１記憶部１００のグラフデータを探索する場合においても、先読みによって第２記憶部１２０への入出力回数を減少させ、高速探索を実現することができる。また、情報処理装置２０は、圧縮部２００によるグラフデータの圧縮処理により、グラフデータの量が単調増加することを防止する。
【００６５】
（第３の実施形態）
図９は、第３の実施形態にかかる情報処理装置３０の構成及びその周辺を例示するブロック図である。なお、情報処理装置３０は、例えば、ＰＣ、デジタルテレビ、ハードディスクレコーダ、タブレットＰＣ又はスマートフォン等のモバイルデバイスとして実現される。即ち、情報処理装置３０は、ＣＰＵ、主記憶装置、補助記憶装置及び通信インターフェイスなどを備えたコンピュータとしての機能を有する。
【００６６】
図９に示すように、情報処理装置３０は、サーバ装置４０に対してネットワーク４２を介して接続されている。ネットワーク４２は、例えば、インターネット、品質保証された閉域網であるＮＧＮ（次世代ネットワーク）などのＷＡＮ（Wide  Area  Network）、種々の無線・有線で構成されるホームネットワークなどのＬＡＮ（Local  Area  Network）、地上波放送網などの広域放送網又はＣＡＴＶ（ケーブルテレビ）網などである。ここでは、ネットワーク４２は、インターネットであるとする。
【００６７】
サーバ装置４０は、ネットワーク４２を介して、情報処理装置３０が第１記憶部１００又は第２記憶部１２０に記憶するデータを提供する情報提供装置である。例えば、サーバ装置４０は、インターネット上でＷｅｂサービスを提供するＷｅｂサービス事業者のサーバ装置である。
【００６８】
情報処理装置３０は、第１記憶部１００、ログ記憶部１１０、第２記憶部１２０、判定部２４０、記憶制御部２５０、索引記憶部２６０、検出部２７０、動作設定記憶部２８０、整列部２９０、圧縮部２００、第２取得部２１０、送信部３００、受信部３１０及び生成部３２０を有する。なお、図９に示した情報処理装置３０において、図７に示した情報処理装置２０を構成する部分と実質的に同一の部分には同一の符号が付してある。
【００６９】
送信部３００は、第１記憶部１００又は第２記憶部１２０に記憶するデータの送信を要求する要求メッセージを、ネットワーク４２を介してサーバ装置４０へ送信する。要求メッセージは、ユーザの情報処理装置３０に対する操作に応じて送信されてもよいし、情報処理装置３０が定期的に送信してもよい。例えば、要求メッセージは、一般的なＲＥＳＴ（REpresentational  State  Transfer）形式のＷｅｂ  ＡＰＩである。また、要求メッセージは、グラフの起点ノードを示す情報、起点ノードからのホップ数を示す情報、探索方法を示す情報、グラフデータが示すノード及びエッジの種類によって区別する種別情報、ノード及びエッジの属性を特定する属性情報、並びにノード及びエッジに対する種別情報及び属性情報の少なくともいずれかに基づく応答順序を示す応答順序情報を含み得ることとする。
【００７０】
情報処理装置３０が要求するデータは、それ自体がグラフデータを形成するものであってもよいし、要求メッセージに含まれる情報、第１記憶部１００又は第２記憶部１２０が既に記憶しているグラフデータ、若しくは情報処理装置３０上に記憶されているその他のデータを用いてグラフデータを生成可能なデータ（関係データ）であってもよい。
【００７１】
受信部３１０は、ネットワーク４２を介してサーバ装置４０からデータを受信する。受信データは、それ自体がグラフデータを形成するものであってもよいし、関係データであってもよい。受信部３１０は、受信した関係データを生成部３２０に対して出力する。なお、受信部３１０は、グラフデータを受信した場合には、グラフデータを記憶制御部２５０に対して出力するように構成されてもよい。
【００７２】
生成部３２０は、受信部３１０が受信した関係データからグラフデータを生成する。ここで、生成部３２０は、要求メッセージに含まれる情報、第１記憶部１００又は第２記憶部１２０が既に記憶しているグラフデータ、若しくは情報処理装置３０上に記憶されているその他のデータを用いてグラフデータを生成する。
【００７３】
例えば、生成部３２０は、記憶制御部２５０や第２取得部２１０と同等の位置づけのグラフデータベース・ライブラリにおけるノード・エッジ生成ＡＰＩである。具体例として、生成部３２０は、ＳＮＳ（Social  Networking  Service）において、あるユーザの友人リストを、Ｗｅｂ  ＡＰＩを介して取得し、当該ユーザと取得した友人リストに含まれるユーザとを結ぶ友人関係エッジを生成する。また、生成部３２０は、例えばあるＷｅｂページに対して、あるユーザがブログやマイクロブログで引用したデータを利用し、ユーザとＷｅｂコンテンツとを結ぶ参照エッジを生成する。
【００７４】
次に、グラフデータ登録のための情報処理装置３０及びサーバ装置４０の通信シーケンスについて説明する。図１０は、グラフデータ登録のための情報処理装置３０及びサーバ装置４０の動作を示すシーケンス図である。
【００７５】
図１０に示すように、ステップ３００（Ｓ３００）において、情報処理装置３０は、サーバ装置４０に対し、関係データを取得するための要求を行う。
【００７６】
ステップ３０２（Ｓ３０２）において、サーバ装置４０は、関係データを情報処理装置３０に対して送信するための準備として、関係データを取得する。
【００７７】
ステップ３０４（Ｓ３０４）において、サーバ装置４０は、関係データを含む応答情報を生成する。
【００７８】
ステップ３０６（Ｓ３０６）において、サーバ装置４０は、関係データを含む応答情報により、情報処理装置３０に対する応答を行う。
【００７９】
ステップ３０８（Ｓ３０８）において、情報処理装置３０は、サーバ装置４０から受信した応答情報から関係データを取得する。
【００８０】
ステップ３１０（Ｓ３１０）において、情報処理装置３０は、第１記憶部１００又は第２記憶部１２０が既に記憶しているグラフデータ、若しくは情報処理装置３０上に記憶されているその他のデータ（内部情報）を、グラフデータ生成の準備として取得する。
【００８１】
ステップ３１２（Ｓ３１２）において、情報処理装置３０は、Ｓ３０８及びＳ３１０の処理で取得した関係データ及び内部情報を用いてグラフデータを生成する。
【００８２】
ステップ３１４（Ｓ３１４）において、情報処理装置３０は、記憶制御部２５０の制御によって第１記憶部１００又は第２記憶部１２０にグラフデータを記憶させることにより登録を行う。
【００８３】
このように、第３の実施形態にかかる情報処理装置３０は、元々グラフ構造をなしていない関係データを受信しても、生成部３２０によりグラフデータを生成し、グラフデータの登録を行うことができる。また、情報処理装置３０は、複数のＷｅｂサービスのデータを統合して、１つのグラフデータを形成することも可能にされている。
【００８４】
（第４の実施形態）
図１１は、第４の実施形態にかかる情報処理装置５０及び情報提供装置６０の概略を示すブロック図である。なお、情報処理装置５０は、例えば、ＰＣ、デジタルテレビ、ハードディスクレコーダ、タブレットＰＣ又はスマートフォン等のモバイルデバイスとして実現される。即ち、情報処理装置５０は、ＣＰＵ、主記憶装置、補助記憶装置及び通信インターフェイスなどを備えたコンピュータとしての機能を有する。
【００８５】
図１１に示すように、情報処理装置５０は、情報提供装置６０に対してネットワーク４２を介して接続されている。なお、情報処理装置５０は、図９に示した情報処理装置３０が有する各機能を備えているものとする。また、図１１に示した情報処理装置５０及びネットワーク４２において、図９に示した構成部分と実質的に同一の部分には同一の符号が付してある。
【００８６】
情報提供装置６０は、例えば図９に示したサーバ装置４０と同じハードウェア構成であり、インターネット上でＷｅｂサービスを提供する。ただし、情報提供装置６０は、情報処理装置５０に対し、関係データではなくグラフデータを提供する。
【００８７】
情報提供装置６０は、記憶部６００、受信部６１０、第２取得部６２０、判定部６３０、応答情報生成部６４０、送信部６５０を有する。記憶部６００は、グラフデータを記憶する。ここで、記憶部６００は、情報処理装置５０の第１記憶部１００及び第２記憶部１２０に対して、グラフデータベースを記憶するストレージ処理部となっている。
【００８８】
受信部６１０は、情報処理装置５０からグラフデータについてのクエリを受信する。具体例として、受信部６１０は、ＨＴＴＰ（Hypertext  Transfer  Protocol）サーバのリクエスト受信部となっている。また、受信部６１０は、ＷｅｂＳｏｃｋｅｔなどのその他のプロトコルで通信を行う構成であってもよい。
【００８９】
ここで、クエリは、記憶部６００に記憶されたグラフデータから、特定のノード、エッジ又はサブグラフを特定するメッセージを含むものとする。また、クエリには、情報処理装置５０側でのグラフデータの表示順序を特定する情報（表示順序特定情報）が含まれていてもよい。
【００９０】
第２取得部６２０は、受信部６１０が受信したクエリに対応するグラフデータを記憶部６００から取得する。つまり、第２取得部６２０は、情報処理装置５０が備える第２取得部２１０と同等の機能ブロックである。
【００９１】
また、第２取得部６２０は、情報処理装置５０における表示順序に則して当該グラフデータを取得してもよい。この場合、第２取得部６２０は、クエリに含まれる表示順序特定情報を用いてもよいし、情報提供装置６０が情報処理装置５０とともに構成する情報処理システム（又はアプリケーション）において予め定められた順序情報を用いてもよい。
【００９２】
さらに、第２取得部６２０は、クエリによって規定される関係データを内包する、より大きな関係データを取得してもよい。例えば、情報提供装置６０は、クエリに対応する応答メッセージの生成に非常に時間がかかる場合に、グラフデータを生成する処理の一部を情報処理装置５０に移譲する。具体例として、情報提供装置６０は、起点ノードからＮホップのノード集合が形成するサブグラフを抽出するクエリにおいて、葉ノード（Ｎホップ目のノード）のエッジの刈り込み処理に多くの時間がかかる場合、葉ノードのエッジ刈り込み処理を情報処理装置５０に移譲する。
【００９３】
判定部６３０は、第２取得部６２０が記憶部６００からグラフデータを取得する場合にかかる応答時間やグラフデータの量などに応じて、情報処理装置５０に対する処理移譲の要否（又は可否）を判定する。第２取得部６２０は、判定部６３０の判定結果に応じて異なるデータを取得することとなる。
【００９４】
応答情報生成部６４０は、第２取得部６２０が取得したグラフデータから応答メッセージ（応答情報）を生成し、送信部６５０に対して出力する。例えば、応答メッセージは、ＨＴＴＰレスポンスのボディに格納されるメッセージである。また、応答メッセージは、例えばグラフの起点ノードを示す情報、起点ノードからのホップ数を示す情報、探索方法を示す情報、グラフデータが示すノード及びエッジの種類によって区別する種別情報、ノード及びエッジの属性を特定する属性情報、並びにノード及びエッジに対する種別情報及び属性情報の少なくともいずれかに基づく表示順序を示す情報を含む。応答メッセージの形式は、例えばＸＭＬやＪＳＯＮ等のＷｅｂと親和性の高い形式であるが、情報処理装置５０が解釈可能な形式であればバイナリなどを含めて、どのような形式であってもよい。
【００９５】
また、応答情報生成部６４０は、クエリによって規定されるグラフデータ（例えばサブグラフを示すグラフデータ）を情報処理装置５０側（端末側）で抽出するための補助情報を応答情報に含ませることが可能にされている。補助情報は、例えばエッジ刈り込みを行っていない中心ノードからの距離情報、刈り込みのルール情報などを含む。また、応答情報生成部６４０は、クエリに対応するサブグラフを、一括ではなく、段階的に送信部６５０に対して出力し、生成されたサブグラフからインクリメンタルに情報処理装置５０がグラフを表示できるように動作してもよい。
【００９６】
送信部６５０は、応答情報生成部６４０が生成した応答メッセージを情報処理装置５０に対して送信する。具体的には、送信部６５０は、ＨＴＴＰサーバのレスポンス送信部などである。また、送信部６５０は、ＷｅｂＳｏｃｋｅｔなどのその他のプロトコルで通信を行う構成であってもよい。
【００９７】
次に、情報提供装置６０の動作について説明する。図１２は、部分グラフ（サブグラフ）の要求を受けた情報提供装置６０の動作例を示すフローチャートである。図１２に示すように、ステップ４００（Ｓ４００）において、情報提供装置６０は、部分グラフの要求（要求メッセージ）を受信する。
【００９８】
ステップ４０２（Ｓ４０２）において、情報提供装置６０は、部分グラフの取得順序を決定する。
【００９９】
ステップ４０４（Ｓ４０４）において、情報提供装置６０は、部分グラフを取得する。
【０１００】
ステップ４０６（Ｓ４０６）において、情報提供装置６０は、情報処理装置５０（端末）への処理移譲の要否を判定する。情報提供装置６０は、処理移譲が必要である場合（Ｓ４０６：Ｙｅｓ）にはＳ４０８の処理に進み、処理移譲が必要でない場合（Ｓ４０６：Ｎｏ）にはＳ４１０の処理に進む。
【０１０１】
ステップ４０８（Ｓ４０８）において、情報提供装置６０は、クエリによって規定されるグラフデータを情報処理装置５０側（端末側）で抽出するための補助情報を生成する。
【０１０２】
ステップ４１０（Ｓ４１０）において、情報提供装置６０は、部分グラフを送信するために整形する。
【０１０３】
ステップ４１２（Ｓ４１２）において、情報提供装置６０は、Ｓ４１０の処理で整形した部分グラフ、又はＳ４０８の処理で生成した補助情報を情報処理装置５０に対して送信する。
【０１０４】
ステップ４１４（Ｓ４１４）において、情報提供装置６０は、送信する必要がある部分グラフが残っているか否かを判定する。情報提供装置６０は、送信する必要がある部分グラフが残っている場合（Ｓ４１４：Ｙｅｓ）にはＳ４０４の処理に進み、送信する必要がある部分グラフが残っていない場合（Ｓ４１４：Ｎｏ）には処理を終了する。
【０１０５】
次に、情報処理装置５０（図１１）について詳述する。上述したように、情報処理装置５０は、図９に示した情報処理装置３０が有する各機能を備え、さらに、応答情報解析部５００、抽出部５１０、指示部５２０、表示部５３０及びＵＩ（User  Interface）部５４０を有する。
【０１０６】
応答情報解析部５００は、情報処理装置５０側でグラフデータの抽出を行う必要がある場合に、応答情報を解析する。抽出部５１０は、応答情報解析部５００が解析した応答情報に含まれる補助情報を用いてサブグラフのグラフデータを抽出する。つまり、情報処理装置５０は、要求メッセージに合致するサブグラフを示す情報を含む応答情報を受信した場合、補助情報を用いてサブグラフのグラフデータを応答情報から生成することとなる。
【０１０７】
指示部５２０は、抽出部５１０がグラフデータを抽出したサブグラフを表示部５３０に表示させる。指示部５２０は、例えば、Ｗｅｂブラウザにおけるレンダリングエンジンへの出力機能などが相当する。指示部５２０は、情報提供装置６０から段階的に送信されるサブグラフを順次に表示部５３０へ出力してもよい。この場合、表示部５３０は、指示部５２０の出力に応じて表示順序に則ったインクリメンタルな表示を行う。例えば表示部５３０は、ＳＮＳにおける中心ユーザから、１ホップ目のフレンド、２ホップ目のフレンド、３ホップ目のフレンド・・・というように表示を行う。ＵＩ部５４０は、例えば送信部３００に要求メッセージを送信させるためのユーザインターフェイスである。
【０１０８】
次に、補助情報を用いたグラフデータ表示のための情報処理装置５０及び情報提供装置６０の通信シーケンスについて説明する。図１３は、補助情報を用いたグラフデータ表示のための情報処理装置５０及び情報提供装置６０の動作を示すシーケンス図である。
【０１０９】
図１３に示すように、ステップ５００（Ｓ５００）において、情報処理装置５０は、グラフデータを取得するための要求（グラフデータ取得要求）を情報提供装置６０に対して送信する。つまり、情報処理装置５０は、グラフデータ取得要求によって中心ノード情報及び表示順序情報などを要求する。
【０１１０】
ステップ５０２（Ｓ５０２）において、情報提供装置６０の判定部６３０は、グラフデータの抽出移譲の可否（又は要否）を判定する。
【０１１１】
ステップ５０４（Ｓ５０４）において、第２取得部６２０は、グラフデータを送信する準備として取得する。
【０１１２】
ステップ５０６（Ｓ５０６）において、応答情報生成部６４０は、応答情報を生成する。
【０１１３】
ステップ５０８（Ｓ５０８）において、送信部６５０は、Ｓ５０６の処理で生成した応答情報を情報処理装置５０に対して送信する。応答情報には、補助情報が含まれる。また、応答情報には、グラフデータも含まれていてもよい。このように、情報提供装置６０は、情報処理装置５０からのグラフデータ取得要求に対するグラフデータ応答を行う。
【０１１４】
ステップ５１０（Ｓ５１０）において、情報処理装置５０の応答情報解析部５００は、情報提供装置６０から受信した応答情報を用いて、情報提供装置６０からの応答をデータ解析する。
【０１１５】
ステップ５１２（Ｓ５１２）において、抽出部５１０は、応答情報から補助情報を抽出する。
【０１１６】
ステップ５１４（Ｓ５１４）において、抽出部５１０は、補助情報を用いたグラフデータを抽出する。
【０１１７】
ステップ５１６（Ｓ５１６）において、指示部５２０は、表示部５３０に対してグラフデータの表示を指示する。
【０１１８】
このように、第４の実施形態によれば、サブグラフのサイズが大きい場合や、サブグラフの事前算出が困難な場合にも、情報提供装置６０が情報処理装置５０に対してグラフデータの抽出移譲を行うので、ユーザ・エクスペリエンスを損なわない速度でエッジを含めたサブグラフを表示することができる。
【０１１９】
本実施形態の情報処理装置で実行される情報処理プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【０１２０】
また、本実施形態の情報処理装置で実行される情報処理プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、本実施形態の情報処理装置で実行される情報処理プログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【０１２１】
また、本実施形態の情報処理プログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。本実施形態の情報処理装置で実行される情報処理プログラムは、各部がモジュール構成となっており、実際のハードウェアとしてはＣＰＵ（プロセッサ）が上記記憶媒体から情報処理プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされて生成されるようになっている。
【０１２２】
また、本発明のいくつかの実施形態を複数の組み合わせによって説明したが、これらの実施形態は例として提示したものであり、発明の範囲を限定することは意図していない。これら新規の実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１２３】
１０、２０、３０、５０  情報処理装置
４０  サーバ装置
４２  ネットワーク
６０  情報提供装置
１００  第１記憶部
１２０  第２記憶部
１３０  第１取得部
１４０、２４０  判定部
１５０、２５０  記憶制御部
２００  圧縮部
２１０、６２０  第２取得部
２６０  索引記憶部
２７０  検出部
２８０  動作設定記憶部
２９０  整列部
３００  送信部
３１０  受信部
３２０  生成部
５００  応答情報解析部
５１０  抽出部
５２０  指示部
５３０  表示部
５４０  ＵＩ部
６００  記憶部
６１０  受信部
６３０  判定部
６４０  応答情報生成部
６５０  送信部
【図１】
2014010812.tif 000003
【図２】
2014010812.tif 000004
【図３】
2014010812.tif 000005
【図４】
2014010812.tif 000006
【図５】
2014010812.tif 000007
【図６】
2014010812.tif 000008
【図７】
2014010812.tif 000009
【図８】
2014010812.tif 000010
【図９】
2014010812.tif 000011
【図１０】
2014010812.tif 000012
【図１１】
2014010812.tif 000013
【図１２】
2014010812.tif 000014
【図１３】
2014010812.tif 000015