(57)【要約】【課題】  グラフ情報を容易に表示でき、容易にユーザ独自の表示パターンの追加を可能にする。【解決手段】  本発明は、属性情報を持つノード情報と、両端に接続するノード情報と該ノード情報自身の属性情報を持つエッジ情報からなるグラフ情報を格納したグラフデータベースと、グラフ情報を表示オブジェクトに変換するためのグラフ情報変換メソッド群と、グラフ情報と表示オブジェクトとグラフ情報変換メソッド群の対応を定義したグラフ・表示変換定義と、を有し、グラフデータベースからグラフ情報を取得し、グラフ情報からノード情報またはエッジ情報と１対１に対応し、表示される図形やテキストの組み合わせである表示オブジェクトを生成するグラフ情報変換手段と、表示オブジェクトを解釈し、画面上に表示する。【選択図】  図１
2013161454.tif 000002
【特許請求の範囲】
【請求項１】
ノードとエッジを持つグラフ情報を表示するためのグラフ情報表示装置であって、
属性情報を持つノード情報と、両端に接続するノード情報と該ノード情報自身の属性情報を持つエッジ情報からなるグラフ情報を格納したグラフデータベースと、
前記グラフ情報を表示オブジェクトに変換するグラフ情報変換メソッド群を保持するメソッド記憶手段と、
前記グラフ情報と前記表示オブジェクトと前記グラフ情報変換メソッド群の対応を定義したグラフ・表示変換定義を保持する定義記憶手段と、
前記グラフデータベースから前記グラフ情報を取得するグラフデータベース制御手段と、
前記定義記憶手段から前記グラフ・表示変換定義を読み込み、前記グラフ情報を、ノード情報またはエッジ情報と１対１に対応し、表示される図形やテキストの組み合わせである表示オブジェクトに変換するグラフ情報変換手段と、
ノード情報またはエッジ情報と１対１に対応し、前記表示オブジェクトを解釈し、画面上に表示する表示オブジェクト解釈手段と、
前記各手段の実行を制御し、前記表示オブジェクトを表示手段に出力する実行制御手段と、
を有することを特徴とするグラフ情報表示装置。
【請求項２】
前記グラフ情報変換メソッドは、
グラフ全体ではなく、属性単位で表示パターンをカスタマイズするための、属性を前記表示オブジェクトの属性に変換する属性変換メソッドの集まりである属性変換メソッド群を含む
請求項１記載のグラフ情報表示装置。
【請求項３】
前記グラフ情報変換メソッドは、
グラフ全体ではなく、各ノード単位で表示パターンをカスタマイズするための、各ノード情報を各表示オブジェクトに変換するノード変換メソッドの集まりであるノード変換メソッド群を含む
請求項１記載のグラフ情報表示装置。
【請求項４】
前記グラフ情報変換メソッドは、
グラフ全体ではなく、各エッジ単位で表示パターンをカスタマイズするための、各エッジ情報を各表示オブジェクトに変換するエッジ変換メソッドの集まりであるエッジ変換メソッド群を含む
請求項１記載のグラフ情報表示装置。
【請求項５】
前記グラフ情報変換メソッドは、
グラフ全体ではなく、ノード全体の単位で表示パターンをカスタマイズするための、ノード情報全体をそれに対応する表示オブジェクト群に変換する全ノード変換メソッドの集まりである全ノード変換メソッド群を含む
請求項１記載のグラフ情報表示装置。
【請求項６】
前記グラフ情報変換メソッドは、
グラフ全体ではなく、エッジ全体の単位で表示パターンをカスタマイズするための、エッジ情報全体をそれに対応する表示オブジェクト群に変換する全エッジ変換メソッドの集まりである全エッジ変換メソッド群を含む
請求項１記載のグラフ情報表示装置。
【請求項７】
前記メソッド記憶手段は、
全ての表示オブジェクトを作成する全体情報変換メソッドの集まりである全体情報変換メソッド群と、
属性単位で表示パターンをカスタマイズするための、属性を前記表示オブジェクトの属性に変換する属性変換メソッドの集まりである属性変換メソッド群と、
各ノード単位で表示パターンをカスタマイズするための、各ノード情報を各表示オブジェクトに変換するノード変換メソッドの集まりであるノード変換メソッド群と、
各エッジ単位で表示パターンをカスタマイズするための、各エッジ情報を各表示オブジェクトに変換するエッジ変換メソッドの集まりであるエッジ変換メソッド群と、
ノード全体の単位で表示パターンをカスタマイズするための、ノード情報全体をそれに対応する表示オブジェクト群に変換する全ノード変換メソッドの集まりである全ノード変換メソッド群と、
エッジ全体の単位で表示パターンをカスタマイズするための、エッジ情報全体をそれに対応する表示オブジェクト群に変換する全エッジ変換メソッドの集まりである全エッジ変換メソッド群と、
の少なくとも１つを保持する
請求項１記載のグラフ表示装置。
【請求項８】
前記メソッド記憶手段は、
全ての表示オブジェクトを作成する全体情報変換メソッドの集まりである全体情報変換メソッド群と、
属性単位で表示パターンをカスタマイズするための、属性を前記表示オブジェクトの属性に変換する属性変換メソッドの集まりである属性変換メソッド群と、
各ノード単位で表示パターンをカスタマイズするための、各ノード情報を各表示オブジェクトに変換するノード変換メソッドの集まりであるノード変換メソッド群と、
各エッジ単位で表示パターンをカスタマイズするための、各エッジ情報を各表示オブジェクトに変換するエッジ変換メソッドの集まりであるエッジ変換メソッド群と、
ノード全体の単位で表示パターンをカスタマイズするための、ノード情報全体をそれに対応する表示オブジェクト群に変換する全ノード変換メソッドの集まりである全ノード変換メソッド群と、
エッジ全体の単位で表示パターンをカスタマイズするための、エッジ情報全体をそれに対応する表示オブジェクト群に変換する全エッジ変換メソッドの集まりである全エッジ変換メソッド群と、
を保持し、
前記実行制御手段は、
前記属性変換メソッド、前記ノード変換メソッド、前記エッジ変換メソッド、前記全ノード変換メソッド、前記全エッジ変換メソッド、前記全体情報変換メソッドの順に前記グラフ情報に適用して実行する手段を含む
請求項１記載のグラフ情報表示装置。
【請求項９】
前記グラフ情報変換メソッドは、
ユーザによって、関数が適用される順序だけを定義されたユーザ定義変換メソッド群を含み、
１つのグラフ情報をスキャンする範囲内で実行すべき変換定義の部分集合を抽出し、該変換定義の部分集合ごとに、固定的な実行順序による変換を実行するグラフ情報変換最適化手段を更に有する
請求項１乃至８のいずれか１項に記載のグラフ情報表示装置。
【請求項１０】
コンピュータを、
請求項１乃至９のいずれか１項に記載のグラフ情報表示装置の各手段として機能させるためのグラフ情報表示プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、グラフ情報表示装置及びプログラムに係り、特に、道路や鉄道などの交通網情報の表示、通信ネットワーク情報の表示、ソーシャルネットワーク情報の表示、その他、つながりがありグラフでモデル化できる一般の情報等のグラフ情報を表示するためのグラフ情報表示装置及びプログラムに関する。
【背景技術】
【０００２】
交通網や通信ネットワーク等は、ノードとエッジを持つグラフ情報としてモデル化される。そのようなグラフ情報を表示、可視化するシステムはこれまで数多く開発されてきた。例えば、鉄道の路線探索サービスでは、表示される鉄道網から出発到着ノードを選択して探索ができる（例えば、非特許文献１参照）。しかし、このようなサービスはサービス毎に表示アプリケーションを作り込んでいた。
【０００３】
一方、できるだけ表示アプリケーションの作り込みを少なくし、様々な表示パターンを利用できる表示ライブラリも開発されてきた（例えば、非特許文献２参照）。しかし、これらは決まった形式のデータを、表示ライブラリに含まれるパターンのみを選択可能であり、ユーザがカスタマイズできる余地は小さかった。
【０００４】
上記の課題を解決する一案として、データベース情報ビジュアル化アプリケーションプログラム開発支援システムが提案されている（例えば、特許文献１参照）。これは、データベースの情報を表示するアプリケーションの開発を容易にするために、アプリケーション開発者がデータベースの情報と表示されるオブジェクトの対応関係を定義するだけで、情報ビジュアル化アプリケーションを生成できるものである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第3282701号公報
【非特許文献】
【０００６】
【非特許文献１】駅前探検倶楽部  http://ekitan.com
【非特許文献２】ILOG Views 紹介 http://www.ibm.com/developerworks/jp/websphere/library/ilog/jviews_intro/
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、データベース情報ビジュアル化アプリケーションプログラム開発支援システムでは、表示情報の生成機能が、グラフ全体の情報を表示する機能として定義されている。また、色や形のカスタマイズは可能であるが、それは表示情報の生成機能のパラメータとして定義されている。これは、機能を拡張しようとするときに、グラフ全体の情報の表示を作り込まなければならず、拡張が難しい。また、色や形指定という機能が単独として分離しておらず、グラフ全体の表示メソッドのオプションとなっている。よって、システムによって与えられたグラフ全体の表示メソッドを選択して、色や形などのオプションを設定するという使い方となる。また、アプリケーション開発者がメソッドを拡張できるようなインタフェースも、特許文献１には開示されていない。かつては、グラフ表示のような複雑なユーザインタフェースの開発が容易ではなかったこともその背景にある。現在は、Canvas(登録商標)（HTML5.jp Canvasの解説 http://www.html5.jp/canvas/）やSVG(Scalable Vector Graphics)(SVGの基礎知識 http://gihyo.jp/dev/feature/01/svg/0001)といった図形表示をWebブラウザ上で容易に行えるHTML5技術が普及しており、アプリケーション開発者によるカスタマイズのニーズが高まっている。
【０００８】
本発明は、上記の点に鑑みなされたもので、アプリケーション開発者がユーザインタフェースを開発する上で、容易に表示ライブラリ等のカスタマイズが可能なグラフ情報表示装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記の課題を解決するため、本発明（請求項１）は、ノードとエッジを持つグラフ情報を表示するためのグラフ情報表示装置であって、
属性情報を持つノード情報と、両端に接続するノード情報と該ノード情報自身の属性情報を持つエッジ情報からなるグラフ情報を格納したグラフデータベースと、
前記グラフ情報を表示オブジェクトに変換するグラフ情報変換メソッド群を保持するメソッド記憶手段と、
前記グラフ情報と前記表示オブジェクトと前記グラフ情報変換メソッド群の対応を定義したグラフ・表示変換定義を保持する定義記憶手段と、
前記グラフデータベースから前記グラフ情報を取得するグラフデータベース制御手段と、
前記定義記憶手段から前記グラフ・表示変換定義を読み込み、前記グラフ情報を、ノード情報またはエッジ情報と１対１に対応し、表示される図形やテキストの組み合わせである表示オブジェクトに変換するグラフ情報変換手段と、
前記表示オブジェクトを解釈し、画面上に表示する表示オブジェクト解釈手段と、
前記各手段の実行を制御し、前記表示オブジェクトを表示手段に出力する実行制御手段と、を有する。
【００１０】
また、本発明（請求項２）は、前記グラフ情報変換メソッドに、
グラフ全体ではなく、属性単位で表示パターンをカスタマイズするための、属性を前記表示オブジェクトの属性に変換する属性変換メソッドの集まりである属性変換メソッド群を含む。
【００１１】
また、本発明（請求項３）は、前記グラフ情報変換メソッドに、
グラフ全体ではなく、各ノード単位で表示パターンをカスタマイズするための、各ノード情報を各表示オブジェクトに変換するノード変換メソッドの集まりであるノード変換メソッド群を含む。
【００１２】
また、本発明（請求項４）は、前記グラフ情報変換メソッドに、
グラフ全体ではなく、各エッジ単位で表示パターンをカスタマイズするための、各エッジ情報を各表示オブジェクトに変換するエッジ変換メソッドの集まりであるエッジ変換メソッド群を含む。
【００１３】
また、本発明（請求項５）は、前記グラフ情報変換メソッドに、
グラフ全体ではなく、ノード全体の単位で表示パターンをカスタマイズするための、ノード情報全体をそれに対応する表示オブジェクト群に変換する全ノード変換メソッドの集まりである全ノード変換メソッド群を含む。
【００１４】
また、本発明（請求項６）は、前記グラフ情報変換メソッドに、
グラフ全体ではなく、エッジ全体の単位で表示パターンをカスタマイズするための、エッジ情報全体をそれに対応する表示オブジェクト群に変換する全エッジ変換メソッドの集まりである全エッジ変換メソッド群を含む。
【００１５】
また、本発明（請求項７）は、前記メソッド記憶手段において、
全ての表示オブジェクトを作成する全体情報変換メソッドの集まりである全体情報変換メソッド群と、
属性単位で表示パターンをカスタマイズするための、属性を前記表示オブジェクトの属性に変換する属性変換メソッドの集まりである属性変換メソッド群と、
各ノード単位で表示パターンをカスタマイズするための、各ノード情報を各表示オブジェクトに変換するノード変換メソッドの集まりであるノード変換メソッド群と、
各エッジ単位で表示パターンをカスタマイズするための、各エッジ情報を各表示オブジェクトに変換するエッジ変換メソッドの集まりであるエッジ変換メソッド群と、
ノード全体の単位で表示パターンをカスタマイズするための、ノード情報全体をそれに対応する表示オブジェクト群に変換する全ノード変換メソッドの集まりである全ノード変換メソッド群と、
エッジ全体の単位で表示パターンをカスタマイズするための、エッジ情報全体をそれに対応する表示オブジェクト群に変換する全エッジ変換メソッドの集まりである全エッジ変換メソッド群と、を保持し、
前記実行制御手段において、
前記属性変換メソッド、前記ノード変換メソッド、前記エッジ変換メソッド、前記全ノード変換メソッド、前記全エッジ変換メソッド、前記全体情報変換メソッドの順に前記グラフ情報に適用して実行する手段を含む。
【００１６】
また、本発明（請求項８）は、前記グラフ情報変換メソッドに、
ユーザが定義したユーザ定義変換メソッド群を含む。
【００１７】
また、本発明（請求項９）は、１つのグラフ情報をスキャンする範囲内で実行すべき変換定義の部分集合を抽出し、該変換定義の部分集合ごとに、固定的な実行順序による変換を実行するグラフ情報変換最適化手段を更に有する。
【００１８】
本発明（請求項１０）は、コンピュータを、請求項１乃至９のいずれか１項に記載のグラフ情報表示装置の各手段として機能させるためのグラフ情報表示プログラムである。
【発明の効果】
【００１９】
本発明により、グラフ情報に対して、グラフ・表示変換定義により、グラフ情報と表示オブジェクトの対応を定義するだけで容易にグラフ情報を表示することができる。
【００２０】
また、ユーザ定義変換メソッドを追加することにより、ユーザ独自の表示パターンを追加することも容易である。
【００２１】
また、階層的にメソッドが定義されているので、基本的なメソッドを組み合わせて複雑な表示を行うことができる。
【００２２】
また、グラフ情報全体のメソッドしか持たない場合に比べて、各メソッドのプログラムの重複をなくすことができ、全体としての規模も小さくすることができる。また、グラフ情報全体のメソッドのみを重ね合わせる場合、何度もグラフ情報を読むことになり効率が悪い。本発明のようなモジュール化とグラフ最適化手段を用いることにより、最小限のグラフ情報のスキャン回数で表示を行うことができる。
【図面の簡単な説明】
【００２３】
【図１】本発明の一実施の形態におけるグラフ情報表示装置の構成図である。
【図２】本発明の第１の実施例のグラフ情報の例（その１）である。
【図３】本発明の第１の実施例のグラフ情報の例（その２）である。
【図４】本発明の第１の実施例のグラフ・表示変換定義の例である。
【図５】本発明の第１の実施例のノード属性変換メソッドの実装例である。
【図６】本発明の第１の実施例のグラフ情報変換部の実装例である。
【図７】本発明の第１の実施例のグラフ表示の例である。
【図８】本発明の第２の実施例のグラフ・表示変換定義の例である。
【図９】本発明の第２の実施例のノード変換メソッドの実装例である。
【図１０】本発明の第２の実施例のグラフ表示の例である。
【図１１】本発明の第３の実施例のグラフ情報の例である。
【図１２】本発明の第３の実施例のグラフ・表示変換定義の例である。
【図１３】本発明の第３の実施例の全ノード変換メソッドの実装例である。
【図１４】本発明の第３の実施例のグラフ表示の例である。
【図１５】本発明の第４の実施例のグラフ・表示へ何定義の例である。
【図１６】本発明の第４の実施例の全体情報変換メソッドの実装例である。
【図１７】本発明の第４の実施例のグラフ表示の例である。
【図１８】本発明の第５の実施例のグラフ・表示変換定義の例である。
【発明を実施するための形態】
【００２４】
以下、図面と共に本発明の実施の形態を説明する。
【００２５】
図１は、グラフ情報表示装置の全体構成を示す。
【００２６】
同図に示すグラフ情報表示装置は、実行制御部１０、グラフＤＢ制御部２０、グラフデータベース３０、表示オブジェクト解釈部４０、グラフ情報変換最適化部５０、グラフ情報変換部６０、グラフ・表示変換定義記憶部７０、グラフ情報変換メソッド群８０から構成される。
【００２７】
グラフデータベース３０には、表示対象となるグラフ情報が格納されている。グラフ情報はノード情報とエッジ情報からなる。ノード情報は、複数のノードの集まりである。ノードは、それぞれ固有のＩＤを持ち、それで識別される。また、各ノードは属性を持つ。属性は属性名と属性値の組で表現される。エッジ情報は、複数のエッジの集まりである。エッジはそれぞれ固有のＩＤを持ち、また、エッジの両端のノードのＩＤを持つ。各エッジも属性を持つ。例えば、鉄道網ならば、ノードは駅になり、エッジは駅間の繋がりを表す。ノードは、駅名、緯度、経度等の属性を持ち、エッジは両端の駅のＩＤを持つと共に、移動に係る時間、路線名等の属性を持つことになる。
【００２８】
グラフＤＢ制御部２０は、グラフデータベース３０から表示に必要なグラフ情報を取得する機能を持つ。グラフデータベース３０に含まれる全ての情報を表示するとは限らず、グラフＤＢ制御部２０で一部を選択して、実行制御部１０に情報を渡す。情報の選択には、属性の値で絞り込む、最短経路を求める、等の方法があるが、関係データベースやグラフデータベース３０等によって実現できる。
【００２９】
実行制御部１０は、グラフ情報を取得し、グラフ情報変換部６０を介してそれを表示オブジェクトに変換し、表示アプリケーション１に表示するという一連の動作を実行する機能を有する。ここで、表示オブジェクトとは、ノード情報（または、エッジ情報）と１対１に対応し、表示される図形やテキストの組み合わせに対応するオブジェクトである。例えば、駅がノードである場合、それを表示するために、
・駅の名前であるテキスト；
・駅の場所を表すための四角形のアイコン；
を利用する場合がある。これらの表示要素の集まりが表示オブジェクトである。具体的には、属性の集まりで表現される。例えば、駅の例であれば、以下のような情報を持つ計算機上のオブジェクトが表示オブジェクトである。
【００３０】
・駅の名前のテキスト：label="YRP野比"
・駅の名前の画面上の位置：label_x=10, label_y=20
・駅のアイコンの形：shape="rect"
・駅のアイコンの画面上の位置：x=20, y=30
表示オブジェクトには、以下の２つの特徴がある。
【００３１】
・画面上に表示する表示方法と独立である。
【００３２】
・グラフ情報に含まれる意味と独立である。
【００３３】
表示オブジェクトに含まれる情報は、画面上の位置や、表示するテキスト等であり、これらは、例えば、Webブラウザへの表示方法である。SVGやCanvas(登録商標)といった方法には依存せず、共通に利用することができる。また、グラフ情報における意味は、表示オブジェクトではなくなっていなければならない。例えば、駅の名前のテキストや位置や、表示オブジェクト上では、単に表示すべきテキストや位置としか認識されておらず、それが駅の名前だったという意味はなくなっている。この２つの独立性によって、モジュール化が明確になり、表示方法の入れ替えや、グラフ情報変換メソッドの追加に容易になる。
【００３４】
表示オブジェクト解釈部４０は、グラフ情報変換部６０により得られた表示オブジェクトを解釈し、画面上に表示を行う機能を持つ。表示オブジェクト解釈部４０は、表示方法ごとに存在することになる。例えば、SVG用、Canvas(登録商標)用等が考えられる。表示オブジェクト解釈部４０は、表示オブジェクトの内容を機械的に解釈して、そのまま画面に表示を行う。
【００３５】
グラフ情報変換部６０は、グラフ・表示変換定義記憶部７０を読み、グラフ情報変換メソッドを適用して、グラフ情報を表示オブジェクトに変換する機能を持つ。
【００３６】
グラフ情報変換メソッド群は、グラフ情報を表示オブジェクトに変換するメソッドの集まりであるが、以下の６つの種類に分類される（属性変換にはノード、エッジと両方あるが、メソッドは両者で共有化できるため、一つにまとめている。今後の説明で、ノードの属性に対するメソッドとエッジの属性に対するメソッドを区別することがある。その場合、ノード（エッジ）属性変換メソッドと呼ぶ）。
【００３７】
・全体情報変換メソッド群
・全ノード変換メソッド群
・全エッジ変換メソッド群
・ノード変換メソッド群
・エッジ変換メソッド群
・属性変換メソッド群
このように分類している理由は、表示を決定するときに必要な情報に階層性があるからである。例えば、駅を路線毎に色分けするとする。その時、駅ノードの属性「路線」の値によって、色を決定することができる（例：京急→赤、横須賀線→青）。この場合は、１つの属性情報だけで、１つの表示オブジェクトを決定できる。しかし、例えば、京急線の駅の一日の乗降人数を棒グラフで駅の並びの順番で表示したいとする。この場合は、表示領域のサイズと表示させる駅ノードの数から、棒グラフの１ノードあたりの横幅が決まる。また、それぞれのノードを表す位置は、ノードの順番から決定する必要がある。この場合は、単に１ノードの情報だけでなく、全てのノードの情報を利用する必要がある。また、駅ノードと路線エッジの情報を地理的に緯度経度を元に表示する場合は、ノードの緯度経度から最大最小値を求め、表示領域のサイズからノードの位置をまず決定し、エッジの位置は両端のノードを結ぶ線分とする必要がある。このような場合は、全てのノードとエッジの情報を参照する必要がある。
【００３８】
一般的には、最後で述べたような、全てのノードとエッジの情報から表示する属性を決定するようなメソッドを用意すれば全ての表示パターンに対応することができるが、最初の例（１属性から色決定）のようなシンプルな場合にも、全ての情報を参照するようなメソッドを用意しなければならない。それでは、メソッドの簡明性も失われてしまうし、一つ一つのメソッドの機能が大きくなると、メソッドの再利用性も下がってしまう。例えば、このような階層関係を利用すれば、基本的には緯度・経度で地理的表示をするが、ノードが重なったらずらすという表示方法を、２つのメソッドの組み合わせで表現することができる。
【００３９】
そこで、本発明では、グラフ情報変換メソッド群８０として、全てのグラフを参照し、全ての表示オブジェクトを作成する全体情報変換メソッド８１、全てのノード（エッジ）を参照し、全てのノード（エッジ）に対応する表示オブジェクトを作成する全ノード（エッジ）変換メソッド８２、８３、１つのノード（エッジ）に対応する１つの表示オブジェクトに変換するノード（エッジ）変換メソッド８４，８５、１つの属性に対応する表示オブジェクトの属性に変換する属性変換メソッド８６、に階層的に分類し、管理している。それぞれの入出力をまとめると、以下のようになる。
【００４０】
・全体情報変換メソッド８１：入力＝全グラフ情報、出力＝全表示オブジェクト
・全ノード変換メソッド８２：入力＝全ノード、出力＝全ノードに対する表示オブジェクト
・全エッジ変換メソッド８３：入力＝全エッジ、出力＝全エッジに対する表示オブジェクト
・ノード変換メソッド８４：入力＝ノード、出力＝ノードに対する表示オブジェクト
・エッジ変換メソッド８５：入力＝エッジ、出力＝エッジに対する表示オブジェクト
・属性変換メソッド８６：入力＝属性の値、出力＝表示オブジェクトの属性の値
これらのメソッドは、実行制御部１０において、属性変換→ノード変換→エッジ変換→全ノード変換→全エッジ変換→全体情報変換の順に適用される。それには、３つの理由がある。１つ目の理由は、後の変換において、前の変換結果を参照できることである。２つ目の理由は、後の変換において、前の変換結果を上書きできることである。後者の例は前に述べた緯度経度で一度場所を決めて重ねたらずらすという処理が相当する。３つ目の理由は、上記の順に適用すれば、グラフ情報を表示情報に変換するときに、全てのグラフ情報をスキャンする回数を最小限にすることができることである。このような表示メソッドを組み合わせる方法を実装するとき、１メソッドを実行するたびに全てのグラフ情報をスキャンする方法が最も単純である。しかし、本発明では、属性変換とノード変換とエッジ変換は、全グラフ情報をスキャンする１ループの中で実行するため、１度だけグラフ情報をスキャンするだけでよい。一方、全体情報変換が複数ある場合は、その個数分のグラフ情報のスキャンが必要で、全ノード変換と全エッジ変換が複数ある場合は、その個数分のノード情報とエッジ情報が必要であるのは、その定義上やむを得ない。
【００４１】
グラフ・表示変換定義記憶部７０には、グラフ情報を表示オブジェクトに変換するため、グラフ情報と表示オブジェクトの対応関係を記述したグラフ表示変換定義が格納される。対応関係は、メソッド群毎に分類されている。その記述内容を以下に示す。
【００４２】
・全体情報変換：変換元の属性名リスト、変換先の属性名リスト、メソッド名、メソッドのパラメータ；
・全ノード変換：変換元の属性名リスト、変換先の属性名リスト、メソッド名、メソッドのパラメータ；
・全エッジ変換：変換元の属性名リスト、変換先の属性名リスト、メソッド名、メソッドのパラメータ；
・ノード変換：変換元の属性名リスト、変換先の属性名リスト、メソッド名、メソッドのパラメータ；
・エッジ変換：変換元の属性名リスト、変換先の属性名リスト、メソッド名、メソッドのパラメータ；
・属性変換：変換元の属性名、変換先の属性名、メソッド名、メソッドのパラメータ；
上記の変換元はグラフ情報、変換先は表示オブジェクトである。属性名と属性リストについては、このグラフ・表示変換定義で定義してもよいが、メソッド内に固定で属性名を埋め込んでも構わない。
【００４３】
実行制御部１０において、上記のように、属性変換→ノード変換→エッジ変換→全ノード変換→全体情報変換の順で固定的に実行すると、例えば、緯度と経度によって決定されたノードの位置（全ノード変換）に合わせて、ラベルを配置する（ノード変換）というように、後から細かいカスタマイズを行うことができなくなってしまう。これを回避するためには、細かいカスタマイズを全体情報変換等のより粒度の粗い変換関数として定義すればよいが、それでは二重の定義になってしまう問題がある。そこで、ユーザは、関数が適用される順序だけを意識して、グラフ・表示変換定義を作成し、細かいメソッドを粗いメソッドの後にも実行できるような修正を行う。これを実現するのが、グラフ情報変換最適化部５０である。
【００４４】
グラフ情報変換最適化部５０は、グラフ・表示変換定義を読み込み、１つのグラフ情報をスキャンする範囲内で実行すべき変換定義の部分集合（これを変換実行ブロックと呼ぶ）を抽出する。その変換実行ブロック毎に、先の固定的な実行順序による変換を実行する。この方法により、グラフ情報をスキャンする回数を最小にする（最適化する）効果がある。
【実施例】
【００４５】
以下にグラフデータ表示装置の実施例を、Webブラウザ上にJavaScript（登録商標）を用いて表示を行う例を用いて説明する。
【００４６】
最初に、第１の実施例において、基本的な表示と属性変換メソッドを用いた例を示す。その次に、第２、第３の実施例において、ノード変換メソッドと全ノード変換メソッドを用いた例を示す。最後に第４の実施例において、メソッドを組み合わせる例として、ノードのずらしの例を説明する。
【００４７】
なお、エッジ変換メソッドと全エッジ変換メソッドについては例を挙げていないが、考え方はノード変換メソッドと全ノード変換メソッドと同等であり、下記の実施例を応用して容易に実現することができる。
【００４８】
［第１の実施例］
図２、図３は、本発明の第１の実施例のグラフ情報の例を示す。同図に示すグラフ情報は、グラフデータベース３０からグラフＤＢ制御部２０を通じて取得されたものである。
【００４９】
グラフデータベース３０には、このようなグラフ情報が大量に格納されており、それを何らかの方法でフィルタリングして、図２、図３に示すような情報が得られたものとする。グラフ情報は、JSON形式で表現されている。graph_dataという変数がグラフ情報全体を表し、その中のnodesとedgesが、それぞれノード情報とエッジ情報を表す。nodesとedgesはそれぞれノードとエッジの配列となっている。ノードは属性の集まりであるオブジェクトとして表現されている。idはノードやエッジを識別するための特別な属性である。この例では、ノードは、経度（longitude）、緯度(latitude)、カテゴリ（category）、駅名（name）という属性を持っており、エッジは、発ノードID(from_id)、着ノードID(to_id)、路線(line)、移動時間（cost）という属性を持っている。
【００５０】
図４は、本発明の第１の実施例のグラフ・表示変換定義の例を示す。
【００５１】
同図に示す例は、ノード属性変換メソッド、エッジ属性変換メソッド、全体情報変換メソッドを利用した変換定義である。node_attrの値がノード属性変換メソッドの変換定義である。この例では、ノード表示オブジェクトは、shape、label、sizeという３つの変換先属性を持っている。それぞれは、ノードを表現する表現オブジェクトの形、表示オブジェクトに表現するテキストラベル、表示オブジェクトの大きさを表している。各変換定義の最初の項目は、ノード内の変換元の属性、２番目の項目がノード表示オブジェクト内の変換先の属性、３番目の項目が変換メソッド、４番目の項目が変換メソッドに渡すパラメータ（オブジェクト）である。
【００５２】
nodeの最初の例は、gvz_map_fixedという変換メソッドをvalue="rect"というパラメータを渡して呼び出し、変換元属性であるidの属性値をshapeの属性値に変換することを表す。ここで、gvz_map_fixedは全ての値を固定値に対応させる関数であり、その対応させる固定値はvalueというパラメータである。よって、この場合は、ノード表示オブジェクトのshape属性にはすべてrectという値が設定される。これは、全てのノードを四角形で表示することを意味する。
【００５３】
次の例は、gvz_map_copyという変換メソッドでnameの属性値をlabelの属性値に変換することを表す。gvz_map_copyは入力値をそのまま出力値とする変換メソッドである。よって、この場合は、ノード表示オブジェクトのlabel属性には、元のノードのname属性の属性値が入る。
【００５４】
最後の例は、idの属性値から、10という固定値(value)に変換して、表示オブジェクトのサイズに入れる例である。つまり、全ての表示オブジェクトのサイズは10となる。
【００５５】
次に、エッジ属性の変換について説明する。
【００５６】
shapeの例は、ノード属性の場合と同じで、line固定にしている。次のstroke属性への変換は、gvz_map_talbeという対応表による変換メソッドを用いる。この変換メソッドのパラメータは２つで、defaultにデフォルトの値、talbeに、変換元の値と変換先の値の組の集まりのオブジェクトである。この例では、デフォルトでblackという値になり、
京浜急行本線→pink    京浜急行久里浜線→red    JR横須賀線→blue
という変換になる。これで、路線毎に異なる色となることを表現している。
【００５７】
次に、全体情報変換メソッド８１であるが、この例は、longitude（経度）とlatitude（緯度）という属性を用いて、gvz_map_graph_geoという緯度経度による表示メソッドを用いて表示している。全体情報変換メソッド８１の場合、変換元属性と変換先属性は配列として渡す必要がある。
【００５８】
図５は、本発明の第１の実施例のノード属性変換メソッドの実装例を図５に示す。
【００５９】
ノード属性変換メソッド８４は入力値をそのまま出力値とする最も単純なメソッドである。このように入力値は関数の引数に、出力値は関数の返却値となっている。infoはパラメータを表している。
【００６０】
図６は、本発明の第１の実施例のグラフ情報変換部の実装例を示す。グラフ情報変換部６０において、グラフ情報のノードに対して、ノード属性変換メソッド８４を順番に適用していく。メソッドの適用は、この例ではJavaScript（登録商標）のFunctionオブジェクトを用いて、動的に関数を呼び出す方法を採っている。次に、ノード変換メソッド８４を呼び出している。これと同じ処理で、次にエッジ属性の変換、エッジの変換が行われる。最後に、全ノード変換メソッド８２、全エッジ変換メソッド８３、全体情報変換メソッド８１が呼び出される。図６の例としては、全体情報変換メソッド８１の例を挙げている。基本的な実装方法は同じであるが、関数の返却値がない点は異なっている。この実装例では、表示オブジェクトをグラフ情報の内部に持たせている。これは表示オブジェクトとグラフ情報の対応をとるのを容易にするために行っている実装であり、対応関係させ保存してあれば、それらは別オブジェクトにしても構わず、その方法は実装依存である。この実装例では、gvz_で始まる属性が表示オブジェクトの属性に対応している。
【００６１】
表示オブジェクト解釈部４０の実装は、表示オブジェクトの内容を参照し、四角であれば、四角を描く機能を呼び出すというような単純な処理を繰り返せばよい。また、表示オブジェクトという１つのまとまりを作るためには、SVGであれば、グループの概念を利用すればよい。ノード毎にグループを作成し、そのグループの中に四角やテキストといったオブジェクトを作成していればよい。
【００６２】
実行制御部１０の実装は、グラフ情報変換部６０に対して、ノード属性変換メソッド８６→エッジ属性変換メソッド８６→ノード変換メソッド８４→エッジ変換メソッド８５→全ノード変換メソッド８２→全エッジ変換メソッド８３→全体情報変換メソッド８１の順に処理させ、最後に生成された表示オブジェクトを表示オブジェクト解釈部４０へ渡せばよい。本装置の利用者は、この呼び出し順を意識して表示オブジェクトの属性の生成を行う必要がある（但し、既に属性が定義されているかどうかは意識する必要がある）。
【００６３】
最後に、ここまで用いた、グラフ・表示変換定義とグラフ情報の例を用いて、グラフ情報を表示した結果を図７に示す。
【００６４】
［第２の実施例］
本実施例では、ノード変換メソッドを用いた例を示す。
【００６５】
図８は、本発明の第２の実施例のグラフ・表示変換定義の例を、図９は、ノード変換メソッドの実装例を、図１０は、図８の定義を用いて表示したグラフの例を示す。
【００６６】
図８のグラフ・表示変換定義内でnodeで示された部分が図９に示すノード変換メソッドである。ここでは、ノードに含まれるcategoryとnameという２つの情報を文字列結合して、表示オブジェクトのlabelに設定するという定義をしている。ノードに含まれる一属性だけではなく、複数の属性にアクセスしているところが特徴である。例えば、２つの属性の値を加え、表示する等の応用をすることもできる。
【００６７】
［第３の実施例］
次に、全ノード変換メソッドの実施例を示す。図１１は、本発明の第３の実施例のグラフ情報の例を、図１２は、グラフ表示変換定義の例を、図１３は、全ノード変換メソッドの例を示す。
【００６８】
図１１に示すグラフ情報のnameをラベルにし、populationを縦の長さにする棒グラフに表示する。ノードは棒グラフの四角にマッピングされている。図１２に示すグラフ・表示変換定義では、ノード変換の定義で形をrect固定に、nameをlabelに変換している。全ノードメソッドとしては、gvz_map_graph_bar_graphを指定し、その引数として、棒グラフの縦の長さをpopulationと指定している。
【００６９】
グラフ情報変換部６０における、全ノード変換メソッドの処理の概略を説明する。図１４に示すような棒グラフを描くためには、ノードの個数を数え、全体画面サイズをそれで割って、その順番からノードに対応する四角を描く横軸の位置を決定する。そして、四角の縦の長さはpopulationの最大値を求め（最大値を求める関数は図から省略している）と画面サイズの比率から決定している。また、ラベルの位置も決めている。このような処理は、全ノードを参照しながら行うのが自然であるから、このように整理することがモジュール化する上で有効である。
【００７０】
［第４の実施例］
本実施例では、複数のメソッドの組合せの典型的な例を示す。
【００７１】
本実施例では、最初に地理的な表示を行い、重なったノードをずらすという組み合わせの例を取り上げる。グラフ情報は、図２、図３の例を用いる。また、図１５は、本発明の第４の実施例のグラフ・表示変換定義の例を、図１６は、全ノード変換メソッドの例を示す。図１５に示すグラフ・表示変換定義では、graphのメソッドとして、gvz_map_graph_zurasuという、ずらすためのメソッドを指定している。そのメソッドの実装は、シンプルなもので、ノード間の座標の差がｘ，ｙ座標共に１０以内である場合、座標が大きい側のノードをそれぞれ下と右に７だけずらすという処理である。実際には、もっと複雑で適切に位置をずらすアルゴリズムに変更することが可能である。表示した結果を図１７（Ｂ）に示す。図１７（Ａ）は、第１の実施例のずらしていないグラフ表示結果である。図１７（Ｂ）では、『久里浜』と『京急久里浜』のノードが図１７（Ａ）の位置より少しずれているのが確認できる。
【００７２】
このように、グラフ情報変換部６０において、メソッドを組み合わせて表示をカスタマイズできる。
【００７３】
［第５の実施例］
本実施例では、グラフ情報変換最適化部５０について説明する。
【００７４】
図１８は、本発明の第５の実施例のグラフ情報変換最適化部を利用する場合のグラフ・表示変換定義の例である。同図に示す定義では、変換メソッドを全て対等な配列に入れている。その順序はユーザが適用したい順序である。この定義の特徴は、最後の２つのノード変換メソッドであることである。この２つは、それぞれ、ノードを表示された後に微修正するメソッド（ノードを表す四角の真ん中にエッジの線の端が来るようにノードをずらす）とノードのラベルをノードの下に表示させるメソッドとなる。
【００７５】
グラフ情報変換最適化部５０は、以下のアルゴリズムで１つのグラフ情報をスキャンする範囲内で実行すべき変換定義の部分集合である変換実行ブロックを求めることができる。
【００７６】
（１）メソッドの適用順番の、ノード属性→エッジ属性→ノード→エッジ→ノード全体→エッジ全体→全体、のそれぞれに０〜６の番号を与える。
【００７７】
（２）グラフ・表示変換定義を上から読み、見つかったメソッドの番号を保存する。
【００７８】
（３）次に出現したメソッドの番号が大きければ、同じブロックと考え、次に進む。
【００７９】
（４）次に出現したメソッドの番号が小さければ、新しいブロックのはじまりであるから、その前までのブロックを保存し、新たなブロックを開始する。
【００８０】
（５）最後まで到達したら最後のブロックを保存する。
【００８１】
上記のアルゴリズムを図１８の例に適用すると、１番目（node_attr）〜７番目（graph）までは、単調に番号が増加するから、１ブロックである。次に８番目は番号が減少（graph(7)−node(3)）するから新しいブロックになる。９番目もそのブロックに含まれる。ということで、この例では、２つの変換実行ブロックが生成される。これらの変換実行ブロックを、実行制御部１０に渡し、前に述べた変換を行えば、表示を実現することができる。上記のアルゴリズムによって、任意の順序でグラフ・表示変換定義を並べても、それから適切な変換実行ブロックを生成することができる。
【００８２】
上記の実施例では、ユーザ定義変換メソッドについて陽に述べていなかった。しかし、上記の実施例では、特に第１の実施例に示すように、図６のグラフ情報変換部６０は、完全に動的にメソッドを呼び出す実装になっている。また、メソッドのインタフェースも全て開示されている。メソッド名の重複について配慮をすれば（上記例では、装置側の変換メソッドは、gvz_map_で開始するように名前付けされている）、ユーザが独自のメソッドを作成し、グラフ・表示変換定義で自分が作成したメソッドを指定すればユーザ定義変換メソッドを利用することができる。
【００８３】
なお、図１に示す装置の各構成要素の動作をプログラムとして構築し、グラフ表示装置として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
【００８４】
本発明は、上記の実施の形態及び実施例に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。
【符号の説明】
【００８５】
１  表示アプリケーション（Webブラウザ等）
２  グラフ表示装置
１０  実行制御部
２０  グラフＤＢ制御部
３０  グラフデータベース
４０  表示オブジェクト解釈部
５０  グラフ情報変換最適化部
６０  グラフ情報変換部
７０  グラフ・表示変換定義記憶部
８０  グラフ情報変換メソッド群記憶部
８１  全体情報変換メソッド群
８２  全ノード変換メソッド群
８３  全エッジ変換メソッド群
８４  ノード変換メソッド群
８５  エッジ変換メソッド群
８６  属性変換メソッド群
【図１】
2013161454.tif 000003
【図２】
2013161454.tif 000004
【図３】
2013161454.tif 000005
【図４】
2013161454.tif 000006
【図５】
2013161454.tif 000007
【図６】
2013161454.tif 000008
【図７】
2013161454.tif 000009
【図８】
2013161454.tif 000010
【図９】
2013161454.tif 000011
【図１０】
2013161454.tif 000012
【図１１】
2013161454.tif 000013
【図１２】
2013161454.tif 000014
【図１３】
2013161454.tif 000015
【図１４】
2013161454.tif 000016
【図１５】
2013161454.tif 000017
【図１６】
2013161454.tif 000018
【図１７】
2013161454.tif 000019
【図１８】
2013161454.tif 000020