240 likes | 330 Views
オブジェクトデータベースの 半自動可視化システム. 2001年11月26日 金子研 修士1年 森田亙昭. 研究背景. データベース内のデータ分析作業. 情報可視化技術. ユーザによるデータからの知識発見を支援. データベース可視化. 多様な対象データ、ユーザの目的. 目的に応じた可視化手法を見つける手間. 目的. ユーザの入力した可視化項目から自動的に手法を決定 可視化を行うシステム. システム概要. 半自動化機能. 可視化機能. データベース. 表現方法1. 表現方法2. オブジェクト集合. …. データベーススキーマ. スキーマ情報.
E N D
オブジェクトデータベースの半自動可視化システムオブジェクトデータベースの半自動可視化システム 2001年11月26日 金子研 修士1年 森田亙昭
研究背景 データベース内のデータ分析作業 情報可視化技術 ユーザによるデータからの知識発見を支援 データベース可視化 多様な対象データ、ユーザの目的 目的に応じた可視化手法を見つける手間 目的 ユーザの入力した可視化項目から自動的に手法を決定 可視化を行うシステム
システム概要 半自動化機能 可視化機能 データベース 表現方法1 表現方法2 オブジェクト集合 … データベーススキーマ スキーマ情報 表現方法に従い、 オブジェクトを図形に変換、配置 表現方法決定 可視化結果 問い合わせ 可視化項目 ユーザ
半自動化機能 heFormView heNavigator 入力フォームの提供 ①問い合わせ記述 ③可視化項目選択 (問い合わせ結果に応じた選択肢生成) ④可視化手法の自動決定 変換テーブルの設定 可視化 heOQL ②DBへのOQL(ODQL)の発行 DBMSの種類には依存しない DBMSの種類に依存
これまでの成果 可視化機能の実装・動作テスト・デバッグ 可視化機能の完成 システムの概要 プログラム内に具体的な可視化手法を記述 コンパイル 可視化結果画面を出力
課題と方針 課題 1、半自動化機能における課題 ユーザの入力から可視化手法を自動的に決定する 2、サンプルデータをDBから取得する 入力項目の選択肢、可視化オブジェクトをDBより取得し可視化を実現 設定の手間の軽減、対話的な項目追加を可能にする機能 研究方針 半自動化機能の実装 ・インターフェース画面 ・可視化手法の自動決定機能 JASMINEデータベースとの対応 ・JASMINE内にサンプルデータ作成
インターフェース画面 インターフェース画面を作成 GLUI:インターフェース作成ライブラリ使用 入力画面 可視化画面 視点操作画面 入力画面からの可視化項目入力が可能に
半自動化機能実装 ユーザの入力した項目から可視化手法を自動的に決定 入力画面 入力 オブジェクト集合 プロパティ 操作 ・図形の種類 可視化手法の決定 ・図形の配置法 ・プロパティに対応付ける描画属性値 変換テーブルの設定 可視化機能による可視化
可視化手法の構成要素 ①描画属性値・・・位置、サイズ、形状、色(HSV)、ラベル 対応表を用いてプロパティごとにひとつを選択 ②図形の種類・・・{点、 バー、 領域、 ツリー、 包含、 リンク} 1対多の関連 1対1の関連 ③水平方向の配置法・・・散布配置、 格子配置、 円状配置} 決定した描画属性値に応じて決定
構成要素の拡張 GPM可視化のために構成要素(図形の種類)を追加 (例)円錐を追加 1、図形種類の追加 図形の種類(heFigureEnum) に FIG_CONEを追加 2、手法設定部分の変更 図形の種類を選択できるインターフェースの追加 図形の種類で円錐を選択 →heFigureEnum=FIG_CONE
3、図形の種類がFIG_CONEの時に描画関数を呼び出す記述の追加3、図形の種類がFIG_CONEの時に描画関数を呼び出す記述の追加 switch ( fig->GetFigureType() ) { case FIG_POINT: // 点を描画 DrawPoint( fig->GetPosition(), fig->GetHeight(),fig->GetSize().x, fig->GetColor() ); break; ・・・ case FIG_CONE: // 円錐を描画 DrawCone( fig->GetPosition(), fig->GetBarHeight(), fig->GetSize().x, fig->GetColor() ); break; } 4、円錐の描画関数追加 void heVisualizationView::DrawCone( const Vector3f & pos, double height, float size, const Color3f & c ) { ・・・ glColor3f(c.r, c.g, c.b); gluCylinder(cone,size,size,height,BAR_SLICES,BAR_STACKS); ・・・ }
描画属性値決定 (選択プロパティが属性のとき) 選択プロパティの種類 対応表 (文字列型) (比較可、加算不可) (比較、加算可) 選択操作 2つの組よりプロパティ毎の描画属性値を決定 (例)プロパティ salary(Quantitative型)、 操作 Compare プロパティsalaryとH(バーの高さ)の対応付け 図形の種類・・・バー 図形の配置方法・・・未選択(デフォルトの格子配置が選択)
2、プロパティが関連のとき 関連の種類ごとに選択可能な操作を制限 プロパティが1対多の関連 ・・・操作 Connect・Hierarchy が選択可能 選択した操作により関連の表現法が決定 操作Hierarchyを選択 ・・・ツリーを用いて関連を表現
変換テーブル設定 決定した表現方法を変換テーブルに記述 変換テーブル Class,Var F A Type Rel Child Layout X,NX,A Y,NY,R H,Z Si Sh h s v L 0 Professor p バー 格子 Salary Salary 設定1 (図形の種類、配置法、関連) 設定2 (プロパティと描画属性値の対応付け) 1行が1つのオブジェクト集合の可視化を定義 「バーを格子配置し、バーの高さと配置順序をsalaryに対応付ける」 定義された内容に従い、可視化機能が可視化を実行
可視化手法の構造 可視化機能が受け取るデータ 可視化機能 heNavigator 可視化手法の自動決定、変換テーブル設定 heConvertor string(objects) (オブジェクト集合名) 変換テーブルの1行 f_type (図形の種類) l_type (配置法) fa_type (使用するセル) heAttributteConvertor prop->name 対応付けるプロパティ 変換テーブルの1セル
(例)Professor の Salary を Compare switch (d_type){ case VAL_QUANTITATIVE: ・・・ case VAL_QUANTITATIVE: switch (act){ case ACT_IDENTIFY: ・・・ case ACT_COMPARE: fa_type=FA_V_POSITION; f_type=FIG_BAR; break; ・・・ プロパティ、操作より 描画属性値(使用セル)と図形種類決定 変換行に図形の種類、配置法を設定 row->SetLayoutMethod(l_type); row->SetFigureType(f_type); 使用セルを呼び出し、プロパティと対応付け cell = row->GetAttributeConvertor(fa_type); cell->InitConvertAttribute( prop->name, heMetaDatabase::GetProperty( objects.c_str(),prop->name.c_str()) ); Class,Var F A Type Rel Child Layout X,NX,A Y,NY,R H,Z Si Sh h s v L 0 Professor p バー 格子 Salary Salary
実装、成果 可視化手法の自動決定機能 選択プロパティが属性であるときについて実装 サンプルデータを可視化して動作テスト 成果 入力として可視化項目の組を与えることでテーブルを自動構成 入力フォームから可視化項目を選んで実行 可視化作業の簡易化 理由:可視化に必要なユーザの作業が削減 実装前:ひとつの可視化につき最低20行ほどの可視化手法を記述 実装後:3つの入力項目(オブジェクト集合、プロパティ、操作)を入力するのみ
Salary rank 可視化例 対応表 変換テーブル Class,Var F A Type Rel Child Layout X,NX,A Y,NY,R H,Z Si Sh h s v L 0 Professor p 点 散布 age
JASMINEとの対応 Person 準備作業 JASMINE内にサンプルデータを作成 Student Professor 大学の教官、生徒を想定 Course JASMINEのデータを取り込む部分は未実装 現在はプログラム内に記述したサンプルデータを使用 実装後はこれを用いてテストを行う予定
サンプルデータ構成1 name :NOMINAL sex :NOMINAL 各クラスの属性 age :QUANTITATIVE salary :QUANTITATIVE Person rank :NOMINAL students :関連(1対多) course : 関連(多対1) Professor Student Course name :NOMINAL score :QUANTITATIVE teachers :関連(1対多) grade :QUANTITATIVE students :関連(1対多) teacher :関連(多対1) course :関連(多対1)
サンプルデータ構成2 ODQLでの記述 Professorクラス Studentクラス Personクラス defineClass Professor super:Person description:“教官クラス“ { instance: Integer salary /*給料*/ String rank; /*階級*/ Bag<Student> students;/*生徒*/ Course course; /*所属*/ }; defineClass Student super:Person description:“生徒クラス“ { instance: Integer score /*成績*/ String grade; /*学年*/ Professor students;/*担当教官*/ Course course;/*所属*/ }; defineClass Person super:Composite description:“Personクラス” { instance: String name; /*氏名*/ String sex; /*性別*/ Integer age; /*年齢*/ };
JASMINEで使用する機能 使用する予定の機能 JASMINE CAPI Cプログラム上からJASMINEデータベースにアクセス ・ODQLによる問い合わせ ・DBのスキーマ情報、属性値の取得 (詳細は未定) また、可能であればWebLinkを用いて Web上から 「問い合わせ→可視化」の処理を行う
JASMINEを使用した可視化 Professor の Salary を Compare したい DBへの問い合わせ 問い合わせ記述フォーム(未実装)にODQLを記述 Set<Professor> Ps; Ps = Professor from Professor 属性値の取得、 選択肢の生成 可視化項目 オブジェクト集合:Professor プロパティ:Salary 操作:Compare (選択肢よりそれぞれ選択) 半自動化機能へ入力 可視化
今後の課題 残りの実装 ・プロパティが関連の時の自動決定機能 ・追加機能 変換テーブルの構成を出力するウィンドウ GPM可視化のための拡張機能 ・DBからのデータ取得 JASMINE 作成したサンプルDBを用いてのテスト