(前提技術)
図1は、前提技術に係る文書処理装置20の構成を示す。文書処理装置20は、文書内のデータが階層構造を有する複数の構成要素に分類された構造化文書を処理するが、本前提技術では構造化文書の一例としてXML文書を処理する例について説明する。文書処理装置20は、主制御ユニット22、編集ユニット24、DOMユニット30、CSSユニット40、HTMLユニット50、SVGユニット60、及び変換部の一例であるVCユニット80を備える。これらの構成は、ハードウエアコンポーネントでいえば、任意のコンピュータのCPU、メモリ、メモリにロードされたプログラムなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者には理解されるところである。
主制御ユニット22は、プラグインのロードや、コマンド実行のフレームワークを提供する。編集ユニット24は、XML文書を編集するためのフレームワークを提供する。文書処理装置20における文書の表示及び編集機能は、プラグインにより実現されており、文書の種別に応じて必要なプラグインが主制御ユニット22又は編集ユニット24によりロードされる。主制御ユニット22又は編集ユニット24は、処理対象となるXML文書の名前空間を参照して、XML文書がいずれのボキャブラリにより記述されているかを判別し、そのボキャブラリに対応した表示又は編集用のプラグインをロードして表示や編集を実行させる。例えば、文書処理装置20には、HTML文書の表示及び編集を行うHTMLユニット50、SVG文書の表示及び編集を行うSVGユニット60など、ボキャブラリ(タグセット)ごとに表示系及び編集系がプラグインとして実装されており、HTML文書を編集するときはHTMLユニット50が、SVG文書を編集するときはSVGユニット60が、それぞれロードされる。後述するように、HTMLとSVGの双方の構成要素を含む複合文書が処理対象となっている場合は、HTMLユニット50とSVGユニット60の双方がロードされる。
このような構成によれば、ユーザは、必要な機能のみを選択してインストールし、後から適宜機能を追加又は削除することができるので、プログラムを格納するハードディスクなどの記録媒体の記憶領域を有効に活用することができ、また、プログラム実行時にも、メモリの浪費を防ぐことができる。また、機能拡張性に優れており、開発主体としても、プラグインの形で新たなボキャブラリに対応することが可能なので開発が容易となり、ユーザとしても、プラグインの追加により容易かつ低コストにて機能を追加することができる。
編集ユニット24は、ユーザインターフェースを介してユーザから編集指示のイベントを受け付け、そのイベントを適切なプラグインなどに通知するともに、イベントの再実行(リドゥ)又は実行の取消(アンドゥ)などの処理を制御する。
DOMユニット30は、DOM提供部32、DOM生成部34、及び出力部36を含み、XML文書をデータとして扱うときのアクセス方法を提供するために定められた文書オブジェクトモデル(Document Object Model:DOM)に準拠した機能を実現する。DOM提供部32は、編集ユニット24に定義されているインタフェースを満たすDOMの実装である。DOM生成部34は、XML文書からDOMツリーを生成する。後述するように、処理対象となるXML文書が、VCユニット80により他のボキャブラリにマッピングされる場合は、マッピング元のXML文書に対応するソースツリーと、マッピング先のXML文書に対応するデスティネーションツリーが生成される。出力部36は、例えば編集終了時に、DOMツリーをXML文書として出力する。
CSSユニット40は、CSS解析部42、CSS提供部44、及びレンダリング部46を含み、CSSに準拠した表示機能を提供する。CSS解析部42は、CSSの構文を解析するパーサの機能を有する。CSS提供部44は、CSSオブジェクトの実装であり、DOMツリーに対してCSSのカスケード処理を行う。レンダリング部46は、CSSのレンダリングエンジンであり、CSSを用いてレイアウトされるHTMLなどのボキャブラリで記述された文書の表示に用いられる。
HTMLユニット50は、HTMLにより記述された文書を表示又は編集する。SVGユニット60は、SVGにより記述された文書を表示又は編集する。これらの表示/編集系は、プラグインの形で実現されており、それぞれ、文書を表示する表示部(Canvas)56、66、編集指示を含むイベントを送受信する制御部(Editlet)52、62、編集コマンドを受けてDOMに対して編集を行う編集部(Zone)54、64を備える。制御部52又は62が外部からDOMツリーの編集コマンドを受け付けると、編集部54又は64がDOMツリーを変更し、表示部56又は66が表示を更新する。これらは、MVC(Model-View-Controller)と呼ばれるフレームワークに類似する構成をとっており、概ね、表示部56及び66が「View」に、制御部52及び62が「Controller」に、編集部54及び64とDOMの実体が「Model」に、それぞれ対応する。本前提技術の文書処理装置20では、XML文書をツリー表示形式で編集するだけでなく、それぞれのボキャブラリに応じた編集を可能とする。例えば、HTMLユニット50は、HTML文書をワードプロセッサに類似した方式で編集するためのユーザインターフェースを提供し、SVGユニット60は、SVG文書を画像描画ツールに類似した方式で編集するためのユーザインターフェースを提供する。
VCユニット80は、マッピング部82、定義ファイル取得部84、及び定義ファイル生成部86を含み、あるボキャブラリにより記述された文書を、他のボキャブラリにマッピングすることにより、マッピング先のボキャブラリに対応した表示編集用プラグインで文書を表示又は編集するためのフレームワークを提供する。本前提技術では、この機能を、ボキャブラリコネクション(Vocabulary Connection:VC)と呼ぶ。定義ファイル取得部84は、マッピングの定義を記述したスクリプトファイルを取得する。この定義ファイルは、ノードごとに、ノード間の対応(コネクション)を記述する。このとき、各ノードの要素値や属性値の編集の可否を指定してもよい。また、ノードの要素値や属性値を用いた演算式を記述してもよい。これらの機能については、後で詳述する。マッピング部82は、定義ファイル取得部84が取得したスクリプトファイルを参照して、DOM生成部34にデスティネーションツリーを生成させ、ソースツリーとデスティネーションツリーの対応関係を管理する。定義ファイル生成部86は、ユーザが定義ファイルを生成するためのグラフィカルユーザインターフェースを提供する。
VCユニット80は、ソースツリーとデスティネーションツリーの間のコネクションを監視し、表示を担当するプラグインにより提供されるユーザインタフェースを介してユーザから編集指示を受け付けると、まずソースツリーの該当するノードを変更する。DOMユニット30が、ソースツリーが変更された旨のミューテーションイベントを発行すると、VCユニット80は、そのミューテーションイベントを受けて、ソースツリーの変更にデスティネーションツリーを同期させるべく、変更されたノードに対応するデスティネーションツリーのノードを変更する。デスティネーションツリーを表示/編集するプラグイン、例えばHTMLユニット50は、デスティネーションツリーが変更された旨のミューテーションイベントを受けて、変更されたデスティネーションツリーを参照して表示を更新する。このような構成により、少数のユーザにより利用されるローカルなボキャブラリにより記述された文書であっても、他のメジャーなボキャブラリに変換することで、文書を表示することができるとともに、編集環境が提供される。
文書処理装置20により文書を表示又は編集する動作について説明する。文書処理装置20が処理対象となる文書を読み込むと、DOM生成部34が、そのXML文書からDOMツリーを生成する。また、主制御ユニット22又は編集ユニット24は、名前空間を参照して文書を記述しているボキャブラリを判別する。そのボキャブラリに対応したプラグインが文書処理装置20にインストールされている場合は、そのプラグインをロードして、文書を表示/編集させる。プラグインがインストールされていない場合は、マッピングの定義ファイルが存在するか否かを確認する。定義ファイルが存在する場合、定義ファイル取得部84が定義ファイルを取得し、その定義に従って、デスティネーションツリーが生成され、マッピング先のボキャブラリに対応するプラグインにより文書が表示/編集される。複数のボキャブラリを含む複合文書である場合は、後述するように、それぞれのボキャブラリに対応したプラグインにより、文書の該当箇所がそれぞれ表示/編集される。定義ファイルが存在しない場合は、文書のソース又はツリー構造を表示し、その表示画面において編集が行われる。
図2は、処理対象となるXML文書の例を示す。このXML文書は、生徒の成績データを管理するために用いられる。XML文書のトップノードである構成要素「成績」は、配下に、生徒ごとに設けられた構成要素「生徒」を複数有する。構成要素「生徒」は、属性値「名前」と、子要素「国語」、「数学」、「理科」、「社会」を有する。属性値「名前」は、生徒の名前を格納する。構成要素「国語」、「数学」、「理科」、「社会」は、それぞれ、国語、数学、理科、社会の成績を格納する。例えば、名前が「A」である生徒の国語の成績は「90」、数学の成績は「50」、理科の成績は「75」、社会の成績は「60」である。以下、この文書で使用されているボキャブラリ(タグセット)を、「成績管理ボキャブラリ」と呼ぶ。
本前提技術の文書処理装置20は、成績管理ボキャブラリの表示/編集に対応したプラグインを有しないので、この文書をソース表示、ツリー表示以外の方法で表示するためには、前述したVC機能が用いられる。すなわち、成績管理ボキャブラリを、プラグインが用意された別のボキャブラリ、例えば、HTMLやSVGなどにマッピングするための定義ファイルを用意する必要がある。ユーザ自身が定義ファイルを作成するためのユーザインターフェースについては後述することにして、ここでは、既に定義ファイルが用意されているとして説明を進める。
図3は、図2に示したXML文書をHTMLで記述された表にマッピングする例を示す。図3の例では、成績管理ボキャブラリの「生徒」ノードを、HTMLにおける表(「TABLE」ノード)の行(「TR」ノード)に対応づけ、各行の第1列には属性値「名前」を、第2列には「国語」ノードの要素値を、第3列には「数学」ノードの要素値を、第4列には「理科」ノードの要素値を、第5列には「社会」ノードの要素値を、それぞれ対応付ける。これにより、図2に示したXML文書を、HTMLの表形式で表示することができる。また、これらの属性値及び要素値は、編集可能であることが指定されており、ユーザがHTMLによる表示画面上で、HTMLユニット50の編集機能により、これらの値を編集することができる。第6列には、国語、数学、理科、社会の成績の加重平均を算出する演算式が指定されており、生徒の成績の平均点が表示される。このように、定義ファイルに演算式を指定可能とすることにより、より柔軟な表示が可能となり、編集時のユーザの利便性を向上させることができる。なお、第6列は、編集不可であることが指定されており、平均点のみを個別に編集することができないようにしている。このように、マッピング定義において、編集の可否を指定可能とすることにより、ユーザの誤操作を防ぐことができる。
図4(a)及び図4(b)は、図2に示したXML文書を図3に示した表にマッピングするための定義ファイルの例を示す。この定義ファイルは、定義ファイル用に定義されたスクリプト言語により記述される。定義ファイルには、コマンドの定義と、表示のテンプレートが記述されている。図4(a)(b)の例では、コマンドとして、「生徒の追加」と「生徒の削除」が定義されており、それぞれ、ソースツリーにノード「生徒」を挿入する操作と、ソースツリーからノード「生徒」を削除する操作が対応付けられている。また、テンプレートとして、表の第1行に「名前」、「国語」などの見出しが表示され、第2行以降に、ノード「生徒」の内容が表示されることが記述されている。ノード「生徒」の内容を表示するテンプレート中、「text-of」と記述された項は「編集可能」であることを意味し、「value-of」と記述された項は「編集不可能」であることを意味する。また、ノード「生徒」の内容を表示する行のうち、第6列には、「(src:国語 + src:数学 + src:理科 + src:社会) div 4」という計算式が記述されており、生徒の成績の平均が表示されることを意味する。
図5は、図2に示した成績管理ボキャブラリで記述されたXML文書を、図3に示した対応によりHTMLにマッピングして表示した画面の例を示す。表90の各行には、左から、各生徒の名前、国語の成績、数学の成績、理科の成績、社会の成績、及び平均点が表示されている。ユーザは、この画面上で、XML文書を編集することができる。たとえば、第2行第3列の値を「70」に変更すると、このノードに対応するソースツリーの要素値、すなわち、生徒「B」の数学の成績が「70」に変更される。このとき、VCユニット80は、デスティネーションツリーをソースツリーに追従させるべく、デスティネーションツリーの該当箇所を変更し、HTMLユニット50が、変更されたデスティネーションツリーに基づいて表示を更新する。したがって、画面上の表においても、生徒「B」の数学の成績が「70」に変更され、更に、平均点が「55」に変更される。
図5に示した画面には、図4(a)(b)に示した定義ファイルに定義されたように、「生徒の追加」及び「生徒の削除」のコマンドがメニューに表示される。ユーザがこれらのコマンドを選択すると、ソースツリーにおいて、ノード「生徒」が追加又は削除される。このように、本前提技術の文書処理装置20では、階層構造の末端の構成要素の要素値を編集するのみではなく、階層構造を編集することも可能である。このようなツリー構造の編集機能は、コマンドの形でユーザに提供されてもよい。また、例えば、表の行を追加又は削除するコマンドが、ノード「生徒」を追加又は削除する操作に対応づけられてもよい。また、他のボキャブラリを埋め込むコマンドがユーザに提供されてもよい。この表を入力用テンプレートとして、穴埋め形式で新たな生徒の成績データを追加することもできる。以上のように、VC機能により、HTMLユニット50の表示/編集機能を利用しつつ、成績管理ボキャブラリで記述された文書を編集することが可能となる。
図6は、ユーザが定義ファイルを生成するために、定義ファイル生成部86がユーザに提示するグラフィカルユーザインタフェースの例を示す。画面左側の領域91には、マッピング元のXML文書がツリー表示されている。画面右側の領域92には、マッピング先のXML文書の画面レイアウトが示されている。この画面レイアウトは、HTMLユニット50により編集可能となっており、ユーザは、画面右側の領域92において、文書を表示するための画面レイアウトを作成する。そして、例えば、マウスなどのポインティングデバイスにより、画面左側の領域91に表示されたマッピング元のXML文書のノードを、画面右側の領域92に表示されたHTMLによる画面レイアウト中へドラッグ&ドロップ操作を行うことにより、マッピング元のノードと、マッピング先のノードとのコネクションが指定される。例えば、要素「生徒」の子要素である「数学」を、HTML画面の表90の第1行第3列にドロップすると、「数学」ノードと、3列目の「TD」ノードの間にコネクションが張られる。各ノードには、編集の可否が指定できるようになっている。また、表示画面中には、演算式を埋め込むこともできる。画面の編集が終わると、定義ファイル生成部86は、画面レイアウトとノード間のコネクションを記述した定義ファイルを生成する。
XHTML、MathML、SVGなどの主要なボキャブラリに対応したビューワやエディタは既に開発されているが、図2に示した文書のようなオリジナルなボキャブラリで記述された文書に対応したビューワやエディタを開発するのは現実的でない。しかし、上記のように、他のボキャブラリにマッピングするための定義ファイルを作成すれば、ビューワやエディタを開発しなくても、VC機能を利用して、オリジナルなボキャブラリで記述された文書を表示・編集することができる。
図7は、定義ファイル生成部86により生成された画面レイアウトの他の例を示す。図7の例では、成績管理ボキャブラリで記述されたXML文書を表示するための画面に、表90と、円グラフ93が作成されている。この円グラフ93は、SVGにより記述される。後述するように、本前提技術の文書処理装置20は、一つのXML文書内に複数のボキャブラリを含む複合文書を処理することができるので、この例のように、HTMLで記述された表90と、SVGで記述された円グラフ93とを、一つの画面上に表示することができる。
図8は、文書処理装置20によるXML文書の編集画面の一例を示す。図8の例では、一つの画面が複数に分割されており、それぞれの領域において、処理対象となるXML文書を異なる複数の表示形式により表示している。領域94には、文書のソースが表示されており、領域95には、文書のツリー構造が表示されており、領域96には、図5に示したHTMLにより記述された表が表示されている。これらのいずれの画面上においても、文書の編集が可能であり、いずれかの画面上でユーザが編集を行うと、ソースツリーが変更され、それぞれの画面の表示を担当するプラグインが、ソースツリーの変更を反映すべく画面を更新する。具体的には、ソースツリーの変更を通知するミューテーションイベントのリスナーとして、それぞれの編集画面の表示を担当するプラグインの表示部を登録しておき、いずれかのプラグイン又はVCユニット80によりソースツリーが変更されたときに、編集画面を表示中の全ての表示部が、発行されたミューテーションイベントを受け取って画面を更新する。このとき、プラグインがVC機能により表示を行っている場合は、VCユニット80がソースツリーの変更に追従してデスティネーションツリーを変更した後、変更されたデスティネーションツリーを参照してプラグインの表示部が画面を更新する。
例えば、ソース表示及びツリー表示を、専用のプラグインにより実現している場合は、ソース表示用プラグインとツリー表示用プラグインは、デスティネーションツリーを用いず、直接ソースツリーを参照して表示を行う。この場合、いずれかの画面において編集が行われると、ソース表示用プラグインとツリー表示用プラグインは、変更されたソースツリーを参照して画面を更新し、領域96の画面を担当しているHTMLユニット50は、ソースツリーの変更に追従して変更されたデスティネーションツリーを参照して画面を更新する。
ソース表示及びツリー表示は、VC機能を利用して実現することもできる。すなわち、ソース、ツリー構造をHTMLによりレイアウトし、そのHTMLにXML文書をマッピングして、HTMLユニット50により表示してもよい。この場合、ソース形式、ツリー形式、表形式の3つのデスティネーションツリーが生成されることになる。いずれかの画面において編集が行われると、VCユニット80は、ソースツリーを変更した後、ソース形式、ツリー形式、表形式の3つのデスティネーションツリーをそれぞれ変更し、HTMLユニット50は、それらのデスティネーションツリーを参照して、3つの画面を更新する。
このように、一つの画面上に複数の表示形式で文書を表示することにより、ユーザの利便性を向上させることができる。例えば、ユーザは、ソース表示又はツリー表示により文書の階層構造を把握しつつ、表90などを用いて視覚的に分かりやすい形式で文書を表示し、編集することができる。上記の例では、一つの画面を分割して複数の表示形式による画面を同時に表示したが、一つの画面に一つの表示形式による画面を表示し、表示形式をユーザの指示により切り替え可能としてもよい。この場合、主制御ユニット22が、ユーザから表示形式の切り替え要求を受け付け、各プラグインに指示して表示を切り替える。
図9は、文書処理装置20により編集されるXML文書の他の例を示す。図9に示したXML文書では、SVG文書の「foreignObject」タグの中にXHTML文書が埋め込まれており、さらに、XHTML文書の中にMathMLで記述された数式が入っている。このような場合、編集ユニット24が、名前空間を参照して、適切な表示系に描画作業を振り分ける。図9の例では、編集ユニット24は、まず、SVGユニット60に四角形を描画させ、つづいて、HTMLユニット50にXHTML文書を描画させる。さらに、図示しないMathMLユニットに、数式を描画させる。こうして、複数のボキャブラリを包含する複合文書が適切に表示される。表示結果を図10に示す。
文書編集中、カーソル(キャリッジ)の位置に応じて、表示されるメニューを切り替えてもよい。すなわち、カーソルが、SVG文書が表示された領域内に存在するときは、SVGユニット60が提供するメニュー、又はSVG文書をマッピングするための定義ファイルに定義されたコマンドを表示し、カーソルが、XHTML文書が表示された領域内に存在するときは、HTMLユニット50が提供するメニュー、又はXHTML文書をマッピングするための定義ファイルに定義されたコマンドを表示する。これにより、編集位置に応じて適切なユーザインターフェースを提供することができる。
複合文書において、あるボキャブラリに対応する適切なプラグイン又はマッピング定義ファイルがなかった場合は、そのボキャブラリにより記述された部分は、ソース表示又はツリー表示されてもよい。従来、ある文書に他の文書を埋め込んだ複合文書を開くとき、埋め込まれた文書を表示するアプリケーションがインストールされていないと、その内容を表示することができなかったが、本前提技術では、表示用のアプリケーションが存在しなくても、テキストデータにより構成されたXML文書をソース表示又はツリー表示することにより内容を把握することができる。これは、テキストベースであるXMLなどの文書ならではの特徴といえる。
データがテキストベースで記述されることの他の利点として、例えば、複合文書中の、あるボキャブラリにより記述される部分において、同一文書内の他のボキャブラリで記述された部分のデータを参照してもよい。また、文書内で検索を実行する時に、SVGなどの図に埋め込まれた文字列も検索対象とすることができる。
あるボキャブラリにより記述された文書内に、他のボキャブラリのタグを用いてもよい。このXML文書は、妥当(valid)ではないが、整形式(well-formed)であれば、有効なXML文書として処理可能である。この場合、挿入された他のボキャブラリのタグは、定義ファイルによりマッピングされてもよい。例えば、XHTML文書中に、「重要」、「最重要」などのタグを使用し、これらのタグで囲まれた部分を強調表示してもよいし、重要度の順にソートして表示してもよい。
図10に示した編集画面において、ユーザにより文書が編集されると、編集された部分を担当するプラグイン又はVCユニット80がソースツリーを変更する。ソースツリーには、ノードごとにミューテーションイベントのリスナーを登録できるようになっており、通常は、各ノードが属するボキャブラリに対応したプラグインの表示部又はVCユニット80がリスナーとして登録される。DOM提供部32は、ソースツリーが変更されると、変更されたノードから上位の階層へたどって、登録されたリスナーがあれば、そのリスナーへミューテーションイベントを発行する。例えば、図9に示した文書において、<html>ノードの下位のノードが変更された場合、<html>ノードにリスナーとして登録されたHTMLユニット50にミューテーションイベントが通知されるとともに、その上位の<svg>ノードにリスナーとして登録されたSVGユニット60にもミューテーションイベントが通知される。このとき、HTMLユニット50は、変更されたソースツリーを参照して表示を更新する。SVGユニット60は、自身のボキャブラリに属するノードが変更されていないので、ミューテーションイベントを無視してもよい。
編集の内容によっては、HTMLユニット50による表示の更新に伴って、全体のレイアウトが変わる可能性がある。この場合は、画面のレイアウトを管理する構成、例えば最上位のノードの表示を担当するプラグインにより、プラグインごとの表示領域のレイアウトが更新される。例えば、HTMLユニット50による表示領域が以前より大きくなった場合、HTMLユニット50は、まず自身の担当する部分を描画して、表示領域の大きさを決定する。そして、画面のレイアウトを管理する構成に、変更後の表示領域の大きさを通知し、レイアウトの更新を依頼する。画面のレイアウトを管理する構成は、通知を受けて、プラグインごとの表示領域を再レイアウトする。こうして、編集された部分の表示が適切に更新されるとともに、画面全体のレイアウトが更新される。
(実施の形態)
実施の形態では、複数のXMLデータやデータ処理機能などのコンポーネントを連携させて、様々な情報分析を支援する技術について提案する。まず、第1の実施の形態において、複数の文書を処理する際に、文書間で、又は文書を処理する処理系の間で、データを連携させる技術を提案する。次に、第2の実施の形態において、XML文書を処理するためのUIを、XML文書のスキーマ情報などをもとに自動生成する技術を提案する。更に、第3の実施の形態では、第1の実施の形態における、コンポーネントの連携を設定するためのUIを、第2の実施の形態で説明するUI自動生成技術を利用して生成する技術を提案する。
(第1の実施の形態)
XMLにより意味づけされた多様なデータ、又はデータ処理機能を連携させることにより、様々な情報分析をオンデマンドかつ直感的に行うことが可能となる。この機構を考えるときに、大別して以下の2点を考慮する必要がある。
まず1点目は、情報に対してどうのように意味づけをするかという方法論と、意味づけされた情報を連携する方法論である。これを、XMLデータアダプテーション機構と呼ぶ。実施の形態において、XMLデータにどのように意味づけしたものが操作の対象となり、また意味づけされた複数のデータ間の連携方法をどのように定義するかを示す。複数のデータや機能を連携させるとき、それぞれの情報は、通常、複数の構成要素から成る。したがって、それぞれのデータや機能に含まれる各要素間をどのように対応付けるかを指定しなければならないが、本実施の形態では、それを出来るだけ直感的かつ簡単に行える方法を示す。
2点目は、上述した方法を直感的に操作する為のユーザインタフェイス機構である。連携させるデータは、その内容を理解する為に、データをグラフ化する機能などの画面表示を伴う機能と連携させたり、情報を整理する為に、他の様々なデータフィルタなどと連携させる必要がある。本実施の形態では、データ、機能(表示機能、フィルタ機能など)を直感的に操作して情報を発掘する為のUIを提案する。
図11は、本実施の形態に係る文書処理装置の構成を示す。本実施の形態の文書処理装置100は、図1に示した前提技術の文書処理装置20の構成に加えて、取得部70、連携制御部71、ランチャ制御部72、レイアウト制御部73、タイムスライダー制御部74を備える。
取得部70は、処理対象となる文書、その文書に対応づけられた定義ファイル、その文書を処理する各種ツールを提供する定義ファイルなどを取得する。ランチャ制御部72は、取得した文書やツールなどをアイコン化して提示し、ユーザがアイコンをクリックしたり、ドラッグ&ドロップしたりしたときに該当する文書やツールを起動する。レイアウト制御部73は、ランチャ制御部72が提示したランチャから文書が開かれたときに、画面上における文書の表示領域のレイアウトを制御する。連携制御部71は、複数の文書が開かれたときに、それらの文書の間でデータの連携を制御する。タイムスライダー制御部74は、文書に時間情報に対応付けられたデータが含まれていたときに、タイムスライダーを提示して時間を指定するためのインタフェイス機能を提供する。
これらの構成のうち、連携制御部71が、上述したXMLデータアダプテーション機構を担い、ランチャ制御部72、レイアウト制御部73、及びタイムスライダー制御部74が、ユーザインタフェイス機構を担う。
まず、連携制御部71により実現されるXMLデータアダプテーション機構について説明する。この機構では、情報への意味づけに関して以下の仮定を行っている。
1)情報への意味づけは、情報に対して特定の意味を持ったXMLタグを付与することで行う。また、この機械的処理可能なラベルによる意味づけ以外の意味は対象としない。ここで扱われるXMLタグの名前は、人間がその意味を理解するのに最も適切かつ簡単な言葉で表現されているものとする。例えば、図21に示した例では、<MFname:name>というXMLタグが付与されており、これは、「名前」という意味づけがなされているといことが直感的に理解される。
2)意味づけフォーマットは、目的を特化した比較的小さな仕様のものが数多く存在する。例えば、住所、商品の情報、気候、イベントなどを表現するものなど、マイクロフォーマットと同様の考え方をする。これらのマイクロフォーマットは、できるだけ一般化され、様々な情報の表現に共通して使われるようになることが望まれる。そして、情報全体の意味は、これらマイクロフォーマットの組み合わせにより表現できるものとする。
3)上記マイクロフォーマット間の関係は、それをより抽象化した概念である上位オントロジーの元で定義する。また、特定目的の為の新たなタグを考える場合、このオントロジーの元で、関係を定義する事が望まれる。例えば、一般的な「金額」などの定義のサブクラスとして、「消費税込みの商品の価格」などといったものの定義を行うと、税抜き・税込みといった情報に対する揺れを除いた正確な処理を行うことができるようになる。
4)上記マイクロフォーマットの組み合わせを考えるときに、図21の例のように入れ子になる可能性がある。このような構造は、そもそもXMLとして認められ得るかという議論もあるが、文書処理装置20がこのような入れ子構造を許容して処理可能であるものとする。
上述したデータを処理する機能が、どのようなデータを処理できるのかを示す為に、各機能毎にインターフェイス表現を用意する。インターフェイス表現では、この機能が理解可能なタグの一覧を提示する。XMLデータアダプテーション機構は、与えようとするデータを表現するタグと処理機能側が受け入れ可能なタグが一致する場合に、データを処理機能に結合する。
ここでのデータの対応付けで最も重要なのは軸を合わせることである。例えば、2次元散布図を表示する機能があるとき、必要なのは(X軸、Y軸、(補助的な値))というデータ構造であり、データのどの部分がその対応になるかを確定する必要がある。例えば、以下のような手順により対応が確定される。
まず、各軸として受け入れ可能なタグがデータ側にあるかどうかを確認する。例えば、2次元散布図の例では、X軸とY軸に対応づけられるのは数値データであるから、数値を要素値として持つタグ(要素)がデータ側に存在するかどうかを確認する。ここで、各機能に用意されたインターフェイス表現においてデータを機能に対応づけるとき、ユーザが、データのどのブロックを対応づけるかを指定できるようにしてもよい。これにより、対象とするデータを明確にユーザが指定できる。
次に、軸の組み合わせを考え、求める軸の組み合わせを構成する最小のサブツリーが列挙されている構造をデータ側から探す。例えば、X軸、Y軸、補助的な値の3つの軸に対応づけられる3つのXMLデータのツリー上の位置は、互いに近接している可能性が高いので、サブツリーが最小となるものを最も確からしい組合せとして抽出する。
最後に、求められた軸の組み合わせから、データと機能を対応づける。ここで、オントロジーベースでの意味づけから、より適切なものを選ぶ様にする。各受け入れ要素とデータ側の項目のオントロジー的近さ(意味パスの分かれる近さ)からスコアを生成し、各軸のスコアの合計値が高いものがより適切な対応関係であると推定する。このとき、X軸とY軸が同じ型であるときは、どちらをどちらに対応づけるか選択が必要である。また、サブツリーの中に対応付けが可能なタグ種別が複数あるとき、また、最小ではないが、別のサブツリーの列挙も採用可能である場合など、曖昧性の解消が必要な場合がある。これは、オントロジーから求められる関係では不適切な場合もあるので、インタフェイス表現上での切り替えにより対応変更を行えるようにしてもよい。
インターフェイス表現側で受け入れ可能なタグの一覧は、そのタグと厳密に一致しなければならない場合と、解釈をゆるめて受け取れる場合とがあり、それを指定できるようにしておく。例えば、金額や人数など単位や意味を厳格に指定する場合と、数値ならば何でも良いといった場合などがある。この受け入れの自由度が高い機能は、汎用的な機能ということになる。このタグの一般化によるすりあわせは、各タグの意味づけをするオントロジーを参照して行う。オントロジーとの対応関係や定義が明確でないタグを与えられた場合は、データアダプテーション機構が持つ上位(またはドメイン)オントロジー内でそのタグ名に相当する場所を探して対応付け、そのオントロジーでの解釈に基づいてデータを対応づける。この場合、オントロジーが処理できる単語が十分にあり、またデータ側のタグ名が一般的概念として常識的かつ適切であれば、より高い精度で対応づけされると考えられる。
また、各機能が受け入れ可能なタグとして、タグのデータのデータ型や情報の物理表現などが規定されている場合に、タグ内にあるその他の情報は無視してもよい。例えば、受け入れ可能なタグが<name>であり、それを文字列として処理する場合、データ側に<name><first>Ryouma</first><Family>Sakamoto</Family></name>というタグ構造があった場合は、<name>のデータとして「RyoumaSakamoto」が文字列として受理され、その他のタグは無視される。
データ間の結合には様々な方法が考えられる。また、その方法を実現する為には、具体的な処理プログラムが必要である。本機構では、データ間の結合は、データ同士を直接結合する形はとらず、「データA→機能←データB」のようにデータを特定の機能で結びつけるようにする。この機能がデータ間の「JOIN」をするのか、「OR」をするのか、絞り込むのかなど様々な処理を規定することになる。
また、全ての機能はデータの入力と出力を持ち、ある機能の出力は別の機能の入力とすることができる。各データおよび機能間の入力部分は、インターフェイス表現とオントロジーに従ってすりあわせが行われ、データからその機能の処理に必要な部分のみが抽出されて利用される。そして、その処理結果としての出力部分は各機能が規定した形で出力される。
本システムにおける基本的な動作機構は、データフロー形式で記述することになる。このシステムは一般的なデータフロープログラミングと同様の考え方で良く、フローの循環や分岐なども問題なく表現できて良い。
次に、ランチャ制御部72、レイアウト制御部73、タイムスライダー制御部74などにより実現されるUI機構について説明する。上記のデータアダプテーション機構を用いて、データ処理(マイニング)を直感的に行うUIを以下に示す。
データマイニングUIには、例えば、以下の2種類がある。1つは、データや機能コンポーネントをドラッグ&ドロップなどして、直感的にデータ操作を行う対話操作ビューである。対話操作ビューは、データを対話的に組み合わせる為のデータ処理ステージと、そのステージで組み合わせることができるコンポーネント一覧からなる。もう1つは、より詳細または複雑な動作を記述するためのプログラミングビューである。これは、バッチ処理的な分析処理を記述する場合には有効なビューである。以下、対話操作ビューについてより詳細に説明する。
データマイニングUIで扱うコンポーネントには以下のものがある。
1)データ
ドキュメントなど、XMLで意味記述されたデータである。データ処理ステージにドロップすると基本的な画面表示がなされ、可能であれば編集が受け付けられる。
2)データ視覚化機能
データをグラフや地図など視覚的イメージに変換する機能である。データ処理ステージでは、データを表示又は編集するウィンドウになる。
3)データ加工・変換機能
データを演算などを行い別の形式に変換したり、情報を絞り込んだりする機能である。データ処理ステージでは、データ視覚化機能に対するオーバーレイシートのような位置づけになる。
4)トリガー機能
各機能コンポーネントに対して、補助的なパラメータ操作を行う機能である。典型的な例としては、イテレーション型のデータをアニメーション的に順次フォーカスを与えるようなものが考えられる。
5)外部インターフェイス機能
外部データベースやウェブサービスと連携する機能である。UI上での基本的扱いは、データと同じ位置づけになる。
6)フロー制御機能
これは、プログラミングビューで使用される機能である。
ここにある機能コンポーネントは、利用の度に個別にパラメータを毎回設定するようにしてもよいし、ある程度頻度の高いパラメータを事前に設定してある「インスタンスコンポーネント」が列挙され、ユーザが用途に合わせてそれを選択するようにしてもよい。
データ処理ステージでのデータ・機能の結合操作は以下のような手順になる。
1)データなどのコンポーネントは、データ処理ステージにドロップすることができる。データ処理ステージでは、カレントコンポーネントに対するフォーカスがある。
2)機能コンポーネントにフォーカスがある場合は、コンポーネント一覧上で、そのコンポーネントが処理可能なデータや組み合わせ可能な機能コンポーネントへの絞り込み(または使えないもののグレーアウト)が行われる。データの場合は、その内容が表示されている場合は、利用可能な部分と利用できない部分が識別可能な形で強調表示されるのが望ましい。データコンポーネントにフォーカスがある場合は、そのデータを受け入れ可能な機能コンポーネントへの絞り込みが行われる。フォーカスがどのコンポーネントにもない場合は、全てのコンポーネントが利用可能となる。ここで、グレーアウトなどが行われるのは、コンポーネント一覧上のもののみであり、データ処理ステージのものは常時利用可能となる。これにより対応関係が自動的に把握できないコンポーネントなども手作業で利用可能にできる。
3)機能コンポーネントの上にデータをドロップすると、そのデータが機能コンポーネントで処理されて機能コンポーネント上に表示される。データの上に機能コンポーネントをドロップすると、データの表示領域が機能コンポーネントの表示領域に置き換えられて、機能処理後の内容が表示される。このとき、データ処理ステージにおいて完全に置き換えられる場合と、データ内での反応部分の表示を置き換える場合がある。また、データの上に機能コンポーネントをドロップする場合は、そのイメージをドキュメントの中に組み込む場合もある。
4)機能コンポーネントに複数のデータを次々とドロップした場合のデータ表示や処理の挙動は、各機能コンポーネントに任される。別のデータとしてオーバーレイしていく場合と、データをマージして1つの大きなデータにしていく場合などが考えられる。
5)今、どの機能とデータが組み合わされているかは、コンポーネントを表示する領域の隅にタグのような形で何が組み合わさっているかが分かるようにする。処理順序などは、このタグの順番を置き換えることで変更することができる。
6)機能コンポーネントへのオーバーレイ型のコンポーネントの場合は、データの表示位置に関する連携を行い、オーバーレイ型のコンポーネントは基本的にオーバーレイしている機能コンポーネントの表示位置指定に従う。オーバーレイをした場合のデータ表示形態は以下の方法がある。a)機能コンポーネントにデータを絞り込んで渡しなおす(プリ型)。b)機能コンポーネントのデータ表示を全て消して独自の表示を行う(ラップ型)。c)機能コンポーネントの表示に新たな表示を追加する(ポスト型)。d)機能コンポーネントのパラメタを操作して表示を切り替える(トリガー型)。これらの選択は、重なっているタグの順番やオーバーレイする機能コンポーネント毎の定義に従って決定される。
データ要素間の対応付けは、上述したデータアダプテーション機構により、オントロジーベースでの同一名対応により自動的に行われる。しかし、その自動対応に選択範囲があり、対応関係が望ましくない場合は、以下の操作で対応関係の変更を受け付けてもよい。オントロジーによる概念の近さや上下関係が利用できるので、単に列挙して選択するよりも強弱を付けることが可能である。
1)設定変更が必要な機能コンポーネントのタグを右クリックするなどして、メニューを開き、対応関係の修正を指定する。
2)機能コンポーネント側で求める軸や値のリストを左に表示し、その右側にその対応関係を満たす構造の候補を列挙しておく。利用者は、候補を選択することで対応を切り替えることができる。
3)候補だけでは満足できない場合は、最も近い候補の修正したい要素をクリックするなどして選ぶ。すると、そのデータの該当構造付近を構成するタグのツリーが表示されるので、指定したいタグを選択する。
4)上記の選択は、コンポーネントやデータのスキーマ情報などと共に保存され、次回からは、優先的に採用される対応関係となる。
つづいて、上述したデータマイニングUIによりデータや機能などのコンポーネントを連携させる様子を、実施例をもとに説明する。
図12は、表示画面の例を示す。画面には、デスクトップに似たデータ操作シート75と、様々なコンポーネントを並べたコンポーネントパレット76が表示されている。ランチャ制御部72により提示されるコンポーネントパレット76には、米国の白地図を挿入する機能を有する白地図ツールのアイコン77a、時間を操作するタイムスライダーインタフェイスを提供する機能を有するタイムスライダーツールのアイコン77b、複数の文書データを示すアイコン78が設けられている。
文書を示すアイコン78は、その文書をHTMLユニット50などの処理系により実際に処理して表示した結果を縮小表示したものであってもよい。この場合、アイコン78上で文書の編集を行えるようにしてもよい。
まず、ユーザが、文書78aのアイコンをデータ操作シート75へドラッグ&ドロップする。このときの表示画面を図13に示す。連携制御部71は、文書データがデータ操作シート75へドロップされたことを認識し、レイアウト制御部73に、文書78aの表示領域を確保するよう指示するとともに、文書78aを表示する処理系を起動し、文書78aを表示させる。こうして、レイアウト制御部73により、文書78aの表示領域79aが確保され、適切な処理系によりその表示領域79aに文書78aが表示される。
つづいて、ユーザが、文書78aの表示領域79aの空白の領域79bに、白地図ツールのアイコン77aをドラッグ&ドロップする。このときの表示画面を図14に示す。連携制御部71は、空白の領域79bに白地図表示機能がドロップされたことを認識し、空白の領域に白地図を表示するよう適切な処理系へ指示する。例えば、レイアウト制御部73により、空白の領域79bに白地図が挿入される。この白地図のデータを格納した文書は、文書78aの中に挿入されてもよいし、文書78aから参照されてもよい。白地図は、例えばSVGにより記述されており、SVGユニット60により表示されてもよい。
ユーザが、渡り鳥の経路情報を記述した文書78bのアイコンをデータ操作シート75の空白領域にドラッグ&ドロップする。このときの表示画面を図15に示す。連携制御部71は、文書データがデータ操作シート75へドロップされたことを認識し、レイアウト制御部73に、文書78bの表示領域を確保するよう指示するとともに、文書78bを表示する処理系を起動し、文書78bを表示させる。こうして、レイアウト制御部73により、文書78bの表示領域79cが確保され、適切な処理系によりその表示領域79cに文書78bが表示される。この場合、文書78bには、渡り鳥の月別の位置を示す経度データと緯度データが格納されており、この文書78bに対応づけられた定義ファイルが適用されて、文書78bに記述された渡り鳥の経路情報が表形式で表示される。
ユーザが、渡り鳥の経路情報が表示された表示領域79cを、白地図の表示領域79bにドラッグ&ドロップする。このときの表示画面を図16に示す。連携制御部71によりデータと機能の連携が張られ、文書78bの経路データが、文書78aの表示領域79aに表示された白地図上に表示される。
ここで、白地図を表示した機能コンポーネントは、(緯度、経度、月)の3軸のデータを受け入れて、各月の緯度と経度により特定される地点を線で結んで経路を地図上に表示する機能を有しているものとする。ユーザが、渡り鳥の経路情報が表示された表示領域79cを、白地図の表示領域79bにドロップしたとき、連携制御部71は、白地図表示コンポーネントから、受け入れ可能なタグに関する情報を取得し、文書79cのデータの中から、(緯度、経度、月)の3軸に対応付けが可能なデータを抽出して、白地図表示コンポーネントに渡す。白地図表示コンポーネントは、(緯度、経度、月)の3軸のデータを受け入れ、それらをもとに経路を地図上に表示する。こうして、渡り鳥の経路が地図上に表示される。白地図表示コンポーネントがVCユニット80により実行される定義ファイルにより実現される場合、文書78bに記述された経度と緯度のデータを直線で結んだ図が表示されるように、文書78bの経路データをSVGにマッピングする定義ファイルが適用されてもよい。この定義ファイルは、文書79aに対応づけられた定義ファイルにインクルードされてもよい。
ユーザが、米国の気温情報を記述した文書78cのアイコンをデータ操作シート75の空白領域にドラッグ&ドロップする。このときの表示画面を図17に示す。連携制御部71は、文書データがデータ操作シート75へドロップされたことを認識し、レイアウト制御部73に、文書78cの表示領域を確保するよう指示するとともに、文書78cを表示する処理系を起動し、文書78cを表示させる。こうして、レイアウト制御部73により、文書78cの表示領域79dが確保され、適切な処理系によりその表示領域79dに文書78cが表示される。この場合、文書78cには、米国の各州の月別平均気温が格納されており、文書78cに対応づけられた定義ファイルが適用されて、文書78cに記述された気温情報が表形式で表示される。
ユーザが、米国の気温情報が表示された表示領域79dを、白地図の表示領域79bにドラッグ&ドロップする。このときの表示画面を図18に示す。連携制御部71により、データと機能の間の連携が張られ、文書78cの気温データが、文書78aの表示領域79aに表示された白地図上に表示される。
ここで、白地図を表示した機能コンポーネントは、(州名、気温、月)の3軸のデータを受け入れて、ある月の各州の気温を色別に地図上に表示する機能を有しているものとする。ユーザが、各州の気温情報が表示された表示領域79dを、白地図の表示領域79bにドロップしたとき、連携制御部71は、白地図表示コンポーネントから、受け入れ可能なタグに関する情報を取得し、文書79dのデータの中から、(州名、気温、月)の3軸に対応付けが可能なデータを抽出して、白地図表示コンポーネントに渡す。白地図表示コンポーネントは、(州名、気温、月)の3軸のデータを受け入れ、それらをもとに各州の気温を地図上に表示する。ここで、文書79dにおいては、<平均気温>というタグで気温データが記述されていたとしても、白地図表示コンポーネント側が、「気温」というデータとして<平均気温>というタグを受け入れ可能に指定していれば、連携制御部71により適切に連携がとられる。白地図表示コンポーネント側が、オントロジーとして、「気温」という概念のデータを受け入れ可能であると指定していてもよく、この場合は、連携制御部71が、「気温」という概念に<平均気温>というタグが該当することを認識して、適切に連携をとる。こうして、各州の平均気温が地図上に表示される。白地図表示コンポーネントがVCユニット80により実行される定義ファイルにより実現される場合、文書78cに記述された各州の月別平均気温により色分けされた図が表示されるように、米国の白地図の各州の形状を示すSVGデータの色を変更する定義ファイルが適用されてもよい。
ユーザが、タイムスライダーツールのアイコン77bを、文書78aの表示領域79aにドラッグ&ドロップする。このときの表示画面を図19に示す。白地図表示コンポーネントが実現するタイムスライダー制御部74により、タイムスライダー79eが提示される。
ユーザが、タイムスライダーを移動させると、タイムスライダー制御部74は、その位置に対応する時間のデータが同期して表示されるように、白地図表示コンポーネントに時間情報を通知する。このときの表示画面を図20に示す。連携制御部71によって、「月」のデータが白地図表示コンポーネントに与えられているので、白地図表示コンポーネントは、タイムスライダー制御部74から通知された月の渡り鳥の位置に鳥の画像を表示させるとともに、その月の各州の平均気温を表示する。図19においては、6月のデータが表示されていたが、図20においては、12月のデータが表示されている。
以上の技術により、複数の文書に含まれるデータを容易に連携させることができるので、柔軟で利便性の高い文書の処理環境を提供することができる。前提技術で説明したように、文書中のデータはDOMとして保持されており、DOMユニット30が提供するAPIを利用して外部から参照可能である。そのため、文書間でデータを参照して連携させることができる。さらに、DOMユニット30は、DOMが変更されたときに、ミューテーションイベントにより変更を通知する機能を有しているので、連携制御部71により連携されたデータが変更された場合にも、適切に表示に反映させることができる。
(第2の実施の形態)
本実施例におけるデータ処理装置は、前提技術で説明したボキャブラリコネクションによりソースツリーとデスティネーションツリーの対応関係を示す定義ファイルを簡易に生成することができる。まず、図22において本実施例における定義ファイル生成過程を概観したあと、図23以降において表示態様を中心として説明する。
図22は、本実施例における定義ファイル生成過程を説明するための模式図である。
データ処理装置は、編集対象となるXML文書ファイル(以下、「ソースファイル」とよぶ)と、ソースファイルの要素構造を定義するスキーマファイルを取得する。ここでいうスキーマファイルとは、XML−Schema、DTD(Document Type Definition)などの仕様にしたがって記述される。生成物としての定義ファイルは、このソースファイルを編集するために適切な表示レイアウト情報をもつデスティネーションファイルを生成するためのファイルである。デスティネーションファイルは、前提技術で説明したデスティネーションツリーをファイル化したものであるといえる。
データ処理装置は、スキーマファイルがあるときには、スキーマファイルからバインディングファイル(Binding File)を生成する。バインディングファイルは、デスティネーションファイルにおける表示レイアウトを編集するために使用される。スキーマファイルがなければ、データ処理装置はソースファイル本体から要素とその構造を抽出してバインディングファイルを生成する。この場合、データ処理装置は、ソースファイルのルート要素からツリートラバース(tree traverse)方式によって子要素を抽出することにより、要素とその構造を抽出する。
更に、バインディングファイルによって、ソースファイルの要素に関する規則を再定義可能である。たとえば、ソースファイルからバインディングファイルを生成する場合において、ソースファイル中の要素Aは、子要素Bを4つ持っているとする。このとき、バインディングファイルには、要素Aの持ち得る子要素Bの数は4個までであるという規則が一応記載される。ユーザはバインディングファイルが提供するメソッドを介して、この要素Aと子要素Bに関する規則を再定義できる。たとえば、要素Aが持ち得る子要素Bの数は、1〜10までとして定義してもよい。スキーマファイルからバインディングファイルが生成される場合であっても、スキーマファイルにおいて定義されている規則の範囲内において、このような要素に関する規則を再定義できてもよい。
このようにバインディングファイルは、要素に関する規則と、それを定義するための機能も提供する。
なお、以下においては、スキーマファイルからソースファイルの要素構造を示すスキーマ情報を取得するものとして説明する。
ユーザは、データ処理装置にてバインディングファイルを編集可能である。バインディングファイルに対して、ユーザはデスティネーションファイルの基本的な表示レイアウトをGUI(Graphical User Interface)により設定できる。こうして、バインディングファイルで定義された表示レイアウト情報をスキーマ情報の各要素に適用することによりレイアウトファイルが生成される。レイアウトファイルは、スキーマファイルに含まれていた各要素の具体的な表示レイアウトを示すHTMLファイルである。なお、レイアウトファイルは、タグによって構造化されるタイプの構造化文書ファイルに限られる必要はなく、表計算アプリケーションやプレゼンテーション用アプリケーションのように表示レイアウト情報を含むファイルであればよい。ユーザはレイアウトファイルそのものを編集することにより、表示レイアウトを更に精緻に編集できる。本実施例においては、バインディングファイルによって、デスティネーションファイルの表示レイアウトの基本設定を行い、レイアウトファイルによってその詳細設定を行う。
バインディングファイルに示されていた要素とレイアウトファイルの表示領域との対応関係から、ソースファイルとデスティネーションファイル間のデータ変換形式を定めるためのXSLTファイルが生成される。最後に、このXSLTファイルに基づいて、バインディングファイルに対応するソースファイルと、レイアウトファイルに対応するデスティネーションファイルの対応関係を示す定義ファイルが生成される。
以下、ユーザインタフェースを中心としてこれらの処理の流れを説明する。
図23は、本実施例におけるスキーマファイルを示す図である。
ここに示すスキーマファイルは、後述の図24に示すソースファイルがしたがうべき要素構造に関する規則を記述している。また、このスキーマファイルは、XML−Schemaという仕様にしたがって記述されている。
同図においては、たとえば、上から3行目において、「customerList」という名前の要素に関し、そのデータ型は「customerListType」であるとして定義されている。「customerListType」というデータ型は、次行において、「sfa」という名前空間にて「listID」、「totalEstimate」、「totalNumber」、「customer」という4つの子要素を含むとして定義されている。更に、「customer」要素のデータ型は「customerType」であり、その内容も定義されている。また、「customer」要素の個数は0個以上として定義されている。
ソースファイルは、スキーマファイルに示される規則にしたがって記述されなければならない。スキーマファイルはソースファイルに含まれる各要素のデータ型や構造を規定するファイルであるから、ソースファイルそのものよりも要素間の構造に関するルールを理解しやすい。
図24は、図23のスキーマファイルに対応するソースファイルを示す図である。
このソースファイルにおいては、「customerList」の子要素として、「listID」、「totalNumber」、「totalEstimate」および「cusutomer」が定義されている。また、これらの要素には値が含まれている。「cusutomer」要素は、3つ含まれている。
図25は、図23のスキーマファイルと図24のソースファイルに基づいて生成される定義ファイルを示す図である。
この定義ファイルの一部を示している。ここに示す定義ファイルにおいては、「sfa:customerList/sfa:listID」や「sfa:customerList/sfa:totalNumber」といったソースファイルにおける各要素をXHTML形式のデスティネーションファイルに変換するためのルールが記述されている。本実施例におけるデータ処理装置は、直感的なユーザインタフェースにてこの定義ファイルを簡易に生成できる。
図26は、バインディングファイルの編集画面を示す図である。
データ処理装置は、スキーマファイルから生成したバインディングファイルを同図に示す所定形式にて画像表示させる。同図下部の領域(以下、「プロパティ領域」)には、スキーマファイルに示されていた各要素がツリー表示されるとともに、そのデータ型なども編集可能に表示される。プロパティ領域において、要素名に付されたチェックボックスにチェックを入れることによってその子要素を展開表示させることができる。このような態様によれば、スキーマファイルに膨大な数の要素が定義されているときであっても、編集対象となる要素だけに表示対象を絞ることができる。
データ処理装置は、各要素に対して一意にIDを設定する。たとえば、「listID」という要素には「L1」というIDが設定されている。IDは、要素名の頭文字の「L」と通し番号の「1」をあわせることにより決定されている。また、データ処理装置は、各要素に対して一意にサンプル値を設定する。「listID」という要素には「2005-G30182」というサンプル値が設定されている。同図中央上部には、これらの要素の表示形式を定義するための領域(以下、「レイアウト領域」)が設けられている。ユーザはレイアウト領域において、各要素のIDを配列することにより、レイアウトファイルに反映させることができる。レイアウト領域とレイアウトファイルの関係については図35以降に関連して詳述する。なお、図25のプロパティ領域中段において、要素「customer」をテーブル形式で表示させるように表示形式が指定されている。この指定が、次の図27に示すレイアウトファイルに反映される。
図27は、図26におけるバインディングファイルの編集結果に基づくレイアウトファイル編集画面を示す図である。
図25における指定にしたがって、要素「customer」の子要素はテーブル形式で表示されている。たとえば、スキーマファイルの要素「customerList/customer/name」は、レイアウトファイルに示されるテーブルのもっとも左の表示領域に対応している。また、このときの表示形式は、図26のレイアウト領域における設定が反映される。ユーザは、この編集画面においてレイアウトファイルをいわゆるWYSIWYG(What You See Is What You Get)にて編集できる。
こうして、スキーマファイルに示される各要素の表示レイアウトがレイアウトファイルとして保存される。データ処理装置は、このようなスキーマファイルの要素とレイアウトファイルの要素の対応関係からXSLTファイルを生成し、更に、前提技術で説明した定義ファイルを生成する。
ユーザは、レイアウトファイルの編集画面において、要素の表示位置をドラッグアンドドロップによって変更できる。すでに定義ファイルが生成された後の編集であれば、データ処理装置は、スキーマファイルの要素とレイアウトファイルの表示位置の対応関係の変化を定義ファイルに反映させなければならない。データ処理装置は、レイアウトファイルにおけるサンプル値とスキーマファイルの要素との対応関係を監視している。このため、レイアウトファイルにおける要素の位置が変更されても、サンプル値の位置に応じて定義ファイルを更新できる。ここでレイアウトファイルに含まれる各表示要素は、サンプル値によって特定される。そのため、XSLTファイルを生成するときには、レイアウトファイルにおけるサンプル値をキーとして、対応関係が再定義される。
図28は、図27における編集結果に基づいたデスティネーションファイルを表示させたときの画面図である。
ソースファイルから定義ファイルにしたがってデスティネーションファイルが生成される。図27は、このデスティネーションファイルを表示させた画面である。ソースファイルの要素「customer」は3つあったので、図27のテーブル形式にしたがって3つの「customer」要素が表示されている。ユーザは、図28の画面を介してソースファイルのデータを編集できる。この仕組みは、前提技術でボキャブラリコネクションとして説明した仕組みである。
図29は、バインディングファイルの編集画面の別例を示す図である。
同図のプロパティ領域中段においては、要素「customer」をリスト形式で表示させるように指定されている点が図26と異なる。
図30は、図29におけるバインディングファイルの編集結果に基づくレイアウトファイル編集画面を示す図である。
図29における表示形式の指定にしたがって、要素「customer」の子要素はリスト形式で表示されている。このように、バインディングファイルにおける表示形式の指定にしたがって、レイアウトファイルも変化する。
同図の場合、スキーマファイルの要素「customerList/customer/name」は、レイアウトファイルに示される各リストの先頭要素に対応している。データ処理装置は、このようなスキーマファイルの要素とレイアウトファイルの要素の対応関係から前提技術で説明した定義ファイルを生成する。
図31は、図30における編集結果に基づいたデスティネーションファイルを表示させたときの画面図である。
ソースファイルの要素「customer」は3つあったので図29のリスト形式にしたがって3つの要素「customer」の内容がリスト表示されている。ユーザは、図31の画面を介してソースファイルを編集できる。
図32は、バインディングファイルの編集画面の更に別例を示す図である。
同図においては、要素「totalNumber」の値を算出するための計算式として「count(N1)」がユーザからの編集操作により設定されている。「N1」はすなわち要素「name」のIDであるから、要素「totalNumber」の値は、ソースファイルにおける要素「name」の数である。また、要素「totalEstimate」の値を算出するための計算式として「sum(E1)」が設定されている。「E1」はすなわち要素「estimate」のIDであるから、要素「totalEstimate」の値は、ソースファイルにおける要素「estimate」の値の合計値である。このように、バインディングファイルの編集画面においては、長い要素名ではなくID値によって各要素をシンプルな入力形式にて取り扱うことができる。
図33は、図32におけるバインディングファイルの編集結果に基づくレイアウトファイル編集画面を示す図である。図33は図27とかわるところはない。
図34は、図33における編集結果に基づいたデスティネーションファイルを表示させたときの画面図である。
「totalNumber」という項目には「3」、すなわち、ソースファイルにおける要素「name」の数が表示されている。同様に、「totalEstimate」という項目には「8000」、すなわち、ソースファイルにおける要素「estimate」の値を合計値(1000+3500+3500=8000)が表示されている。
図35は、バインディングファイルの編集画面の更に別例を示す図である。
ここでは、図33に示したスキーマファイルとは別のスキーマファイルを例にとって説明する。
同図に示すように、ユーザは、レイアウト領域においてIDを配列することにより、レイアウトファイルにおける基本的なレイアウトを設定できる。バインディングファイルが表示されるとき、レイアウト領域には、各要素のIDが初期設定として配列される。このときの配列は、スキーマファイルにおける要素構造を反映した配列であってもよい。たとえば、親子、あるいは、兄弟の関係にある要素同士は、表示位置が近くなるように配列されてもよい。また、「totalNumber」、「Number」、「subtotalNumber」のように、要素名が近いときには、これらの要素同士は、表示位置が近くなるように配列されてもよい。このようにIDの配列を初期設定する、最初から配列を作成するよりも、レイアウト作成の省力化を図ることができる。
図36は、図35におけるバインディングファイルの編集結果に基づくレイアウトファイル編集画面を示す図である。
レイアウトファイルにおいては、図35のレイアウト領域の編集内容にしたがって各要素が表示されている。
図37は、図36における編集結果に基づいたデスティネーションファイルを表示させたときの画面図である。
図38も、定義ファイル生成過程を更に説明するための模式図である。
同図について付言すると、バインディングファイルに対するユーザの編集操作によって、バインディングファイルに補完的な情報が付加される。たとえば、要素に関する規則の定義や再定義などである。このバインディングファイルをもとにして、定義ファイルが生成されるが、定義ファイルの代わりに、XSLTファイルが生成されてもよい。そのほかにも、ソースファイルとデスティネーションファイル間のデータマッピングを実現するためのオブジェクト、たとえば、Java(登録商標)のオブジェクトが生成されてもよい。
(第3の実施の形態)
第1の実施の形態において、データ処理機能が持つインタフェイス表現について説明した。また、コンポーネント間でデータ連携を行い、ユーザのデータ分析などを支援するためのデータマイニングUIについて説明した。第2の実施の形態において、XML文書の構造に関する情報を取得して、そのXML文書を編集するUIを生成する技術について説明した。第3の実施の形態では、第2の実施の形態で説明したUIの自動生成機能を利用して、第1の実施の形態で説明したUIを自動生成する技術について説明する。
図39は、第3の実施の形態におけるコンポーネント連携設定用UIの生成過程を説明するための模式図である。データ処理機能を有するコンポーネントは、それぞれ、自らが連携する軸として設定される定義情報をXMLデータとして有している。パラメータ定義情報は、例えば、受け入れ可能な、すなわち、連携可能なタグを特定するための情報であってもよいし、実際に連携が張られた先のタグに関する情報であってもよい。第2の実施の形態で説明した文書処理装置は、XML文書又はXML文書のスキーマを取得して、そのXML文書を編集するためのUIを生成する機能を有している。この技術を利用して、パラメータ定義情報を記述するXML文書から、そのXML文書を編集するためのUIを自動生成する。ユーザは、この編集UIを用いて、コンポーネント間の連携に関するパラメータ定義情報を記述するXML文書を編集することができる。
この編集UIでは、例えば、コンポーネントAが連携可能なデータの一覧と、コンポーネントBが連携可能なデータの一覧が提示され、それらのデータの間で、ドラッグ&ドロップなどの操作により連携を指定できるようにしてもよい。これにより、コンポーネント間のデータ連携を容易に設定することができるようになり、データマイニングUIをより一層便利に活用することができる。
以上、本発明を実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
実施の形態では、XML文書を処理する例について説明したが、本実施の形態の文書処理装置100は、他のマークアップ言語、例えば、SGML、HTMLなどで記述された文書も同様に処理可能である。
20 文書処理装置、22 主制御ユニット、24 編集ユニット、30 DOMユニット、32 DOM提供部、34 DOM生成部、36 出力部、40 CSSユニット、42 CSS解析部、44 CSS提供部、46 レンダリング部、50 HTMLユニット、52,62 制御部、54,64 編集部、56,66 表示部、60 SVGユニット、70 取得部、71 連携制御部、72 ランチャ制御部、73 レイアウト制御部、74 タイムスライダー制御部、80 VCユニット、82 マッピング部、84 定義ファイル取得部、86 定義ファイル生成部、100 文書処理装置。