説明

変換規則生成支援装置、方法、およびプログラム

【課題】 異なる階層構造の構造文書に変換するための変換規則のコンパクトなグラフィカル表現を可能とする変換規則の生成の支援技術を提供する。
【解決手段】 変換規則生成支援装置は、変換規則のグラフィカルな表現を生成し、表示するためのユーザ・インタフェースと、変換規則のグラフィカルな表現からテキスト形式の変換規則を求める復元部とを含む。ユーザ・インタフェースはシンタックスに基づく階層構造をもつ変換元構造文書の入力要素とセマンティックスに基づく階層構造をもつ変換先構造文書の出力要素の対応付けにおいて、1対多及び多対1の変換規則の生成を許容する。復元部は、1対多変換規則に対しては、変換先構造文書の深さ優先順に基づき複数の出力要素の出力順を決定し、多対1変換規則に対しては、変換元構造文書の階層構造に基づき各入力要素について出力要素の出力先を決定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、構造化文書の変換技術に関し、より詳細には、物理的な配置に基づく階層構造をもつ構造文書からデータ内容の論理構造に基づく階層構造をもつ構造文書へ変換するための変換規則のコンパクトなグラフィカル表現を可能とする変換規則生成支援装置、方法、およびプログラムに関する。
【背景技術】
【0002】
オフィス文書等の汎用フォーマット文書に書かれた設計書や仕様書の分析では、前処理として、分析対象の文書ファイルを一旦ダンプして物理的な配置(シンタックス)に基づく階層構造をもつ構造文書を取得し、該構造文書からデータの内容(セマンティックス)に基づく階層構造をもつ構造文書への変換がなされる。そのため、プロジェクト固有の仕様書や設計書を分析する際には、対象に応じた変換規則を定義する作業が不可欠となる。
【0003】
上記変換は、いわばスキーマを持たないものから持つものへの変換といえ、かかる特性のため変換に際し次のような要求がある。
(1)元の文書において異なる場所に又は異なる記述方法で記載されている情報を、論理的には同種の情報として出力したい。
(2)元の文書において一箇所に記載されている情報を、論理的には複数の異なる情報として別々に出力したい。
かかる要求が特に多いのは、対象文書がプロジェクト固有の書式・記法で書かれたワードプロセッサー・ファイルやスプレッドシートのマス目上に文書を配置したスプレッドシート・ファイルである場合である。そして上記要求は、変換元の構造文書の異なる複数の要素を、変換先の構造文書の同じ種類の複数の要素に出力する変換規則、変換元の構造文書の1の要素を、変換先の構造文書の異なる複数の要素に出力する変換規則として表され、記述が冗長になる。
【0004】
ところで、XML(Extensible Markup Language)で記述された文書等の構造を持つ構造化文書の変換手法には様々な既存技術が存在する。例えばXSLT(XML Stylesheet Language)は、XML文書を他のXML文書に変換するための標準言語であり、XSLTによって、XML文書の構造を別の形式に変形するための変換ルールが記述される(詳細は、http://www.w3.org/TR/xslt20/を参照)。また、MOF(Meta Object Facility)QVL(Queries View Transformations)は、モデル駆動型アーキテクチャにおけるモデル変換の標準であり、ソースモデルからターゲットモデルへの変換の標準的手法を定義する(詳細は、http://www.omg.org/cgi−bin/doc?ptc/2007−07−07を参照)。
【0005】
上述した既存技術は、変換の手続きや規則を記述する変換言語(transformation language)として定義されており、様々な変換の記述が可能である。しかし、変換を定義する作業は一種のプログラミングであるといえ、専門の技術者でなければ習得するのは難しい。これに対処するために、変換の手順やルールをグラフィカルに記述する手法(graphical transformation language)やツールが存在する。そのような手法やツールとして、例えば、UMLXやSoftProject社のxsl:easyが存在する。UMLXはモデル変換のためのグラフィカルな記述手法であり(詳細は、http://www.eclipse.org/gmt/umlx/doc/を参照)、xsl:easyはXML文書の変換を視覚的に設計するためのツールである(詳細は、http://xsl−easy.com/4.0/を参照)。これら手法やツールは、直感的に理解し易く使用者のスキル面での障壁を下げるという利点を持つ。
【0006】
以下、本発明の先行技術調査において見つかったその他の従来技術を説明する。
【0007】
特許文献1は、変換前の文書Aの情報を変換後の文書Bの情報に変換する文書変換装置において、文書Aと文書Bとを読取る入力装置と、文書Aの各項目と文書Bの各項目とを表示して対応付けを操作するユーザ・インタフェース装置と、対応付けした各項目の情報を読取り、文書A の情報を文書B の情報に変換して出力する変換実行装置とを有することを特徴とする文書変換装置を開示する(特許文献1の請求項1を参照)。また、特許文献1は、文書Aと文書Bのうち一方がテキスト文書であり、他方が構造化文書であることを開示する(特許文献1の請求項2を参照)。更に特許文献1は、文書Aの各項目と、前記文書Bの各項目の対応付けは、一対一、一対多、多対一、多対多それぞれ可能であることを開示する(特許文献1の請求項6を参照)。
【0008】
特許文献2は、テンプレートの記述形式を、プレゼンテーションの方法を指定するスタイルと、スタイルと論理文書の対応づけを設定する対応ルールに分離し、それぞれを個別に編集する仕組みであるスタイル編集手段、対応ルール編集手段と、これらの編集手段によって作成したスタイルと対応ルールから、プレゼンテーションを生成する生成手段からなるマルチメディアプレゼンテーション生成システムを開示する。特許文献2はまた、論理文書とスタイルの対応づけに関して、論理文書の一要素から複数のスタイル要素と対応づけた記法を開示する(特許文献2の図5を参照)。そしてその処理手法として、特許文献2は、論理文書の各要素に対して指定されたスタイル要素をそれぞれ検索して対応づけ(特許文献2の図9、図7、及び段落(0023)を参照)、検索結果をもとに値を代入することを開示する(特許文献2の図10を参照)。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2006−139441号公報
【特許文献2】特開2001−344230号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかしながら、変換言語として定義される上記既存技術が対象とする変換は、スキーマを持たないものから持たないものへの変換、又はスキーマを持つものから持つものへの変換である。従って、いわばスキーマを持たないものから持つものへの変換といえる、シンタックスに基づく階層構造をもつ構造文書からセマンティックスに基づく階層構造をもつ構造文書への変換に対し、上記既存技術を適用することはできない。
【0011】
また、変換の手順やルールをグラフィカルに記述する従来の手法や既存のツールは、基本的に変換言語を手続き的に記述するのと等価な情報量を図で表現する。そのため、これら手法やツールを利用しても、シンタックスに基づく階層構造をもつ構造文書からセマンティックスに基づく階層構造をもつ構造文書への変換における変換規則の記述の冗長さは、そのままグラフィカル表現上での重複となってユーザ作業労力を増大させる。
【0012】
また、特許文献1の技術は、文書Aの各項目と、文書Bの各項目の対応付けは、一対一、一対多、多対一、多対多それぞれ可能であることを開示するも、該対応付けに基づく具体的な変換方法については、文書Aの項目に対応付けられた文書Bの項目が複数あるときには、それぞれに同一の値を出力し、文書Bの項目に対応付けられた文書Aの項目が複数あるとき、数値項目に限りそれぞれの値を加算して出力することを開示するのみである(特許文献1の請求項6を参照)。即ち、特許文献1における一対多、多対一の対応付けは、上述した(1)、(2)の要求に基づく変換規則とは異なるものであり、特許文献1の技術は、同じ項目名、即ち、同一データではなく同種のデータ、が何度も繰り返し出現する記述の冗長さに対処するものではない。
【0013】
また、特許文献2は、論理文書の一要素から複数のスタイル要素と対応づけた記法を開示するも、スタイル要素の検索(特許文献2の図9のステップ10を参照)における検索順序、および列挙されたエレメントの出力順序(特許文献2の図9のステップ12、15、16を参照)について何も述べていない。これは、特許文献2が、出力となるマルチメディアプレゼンテーションを示すスタイル要素の木構造 (特許文献2の図3を参照) が深さ1の単純なものを対象としており、「親であるカード部分の出力から子であるメディアを出力」という暗黙の順序だけを仮定すれば結果が一意に定まるためである。即ち、特許文献2では、上記一対多の対応付けを許容することにより生じる出力順序の曖昧性の問題は認識されておらずその解決手段の開示もないため、特許文献2の技術を深さが1より大きい階層構造をもつ構造文書に対し適用することはできない。
【0014】
本発明は、上記従来技術における問題点に鑑みてなされたものであり、本発明は、シンタックスに基づく階層構造をもつ変換元の構造文書の要素とセマンティックスに基づく階層構造をもつ変換先の構造文書の要素間の対応付けにおいて1対多、及び多対1の対応付けを許容することにより変換規則の記述の冗長さに対処すると同時に、1対多、及び多対1の対応付けを許容することにより曖昧になる出力順序及び出力先を、演算処理により一意に決定し、深さが1より大きい階層構造をもつ任意の構造文書に対して適用可能な、変換規則の作成を支援する変換規則生成支援装置、方法、およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0015】
本発明は、上記従来技術の課題を解決するために、データの文書内の物理的な配置に基づく階層構造を有する変換元構造文書をデータ内容の論理構造に基づく階層構造を有する変換先構造文書へ変換する変換規則の作成を支援する変換規則生成支援装置であって、以下の特徴を有する変換規則生成支援装置を提供する。本発明の変換規則生成支援装置は、変換規則のグラフィカルな表現を生成し、表示し、及び編集するためのユーザ・インタフェースと、ユーザ・インタフェースによって生成された変換規則のグラフィカルな表現からテキスト形式の変換規則を求める復元部とを含む。上記ユーザ・インタフェースは、変換元構造文書の要素である入力要素を示す1のノードを変換先構造文書の要素である出力要素を各々示す複数のノードに対応付ける複数のリンクによって示される1対多変換規則と、変換元構造文書の入力要素を各々示す複数のノードを変換先構造文書の出力要素を示す1のノードに対応付ける複数のリンクによって示される多対1変換規則の少なくとも一方の縮退した規則の生成を許容する。上記復元部は、1対多変換規則に対しては、1のノードが示す入力要素に関して複数のノードが示す複数の出力要素の各々を出力する出力順序を、変換先構造文書の階層構造における深さ優先順である出力ソート順に従い決定することにより、一1対多変換規則の縮退を解く。また上記復元部は、多対1変換規則に対しては、複数のノードが示す複数の入力要素の各入力要素に関して1のノードが示す出力要素を出力する出力先を、該出力要素の親である出力要素に対応付けられた1以上の入力要素を変換元構造文書の階層構造における深さ優先順である入力ソート順に並べた場合に上記各入力要素の直前に位置する入力要素の出力先を参照して決定することにより、多対1変換規則の縮退を解く。
【0016】
好ましくは、上記変換規則のグラフィカルな表現は、入力要素を示すノードの集合、該集合における異なる2ノード間の階層関係を示すリンクの集合、出力要素を示すノードの集合、該集合における異なる2ノード間の階層関係を示すリンクの集合、及び入力要素を示すノードと出力要素を示すノードとの対応関係を示すリンクの集合を含む。また、各ノード及び各リンクには、変換対象の構造文書の各要素に対して行うマッチングで使用するパターン及び出力に関するパラメータのうちの少なくとも1つが関連付けられる。そして上記復元部は、入力要素を示すノードの集合から入力ソート順で取り出した処理対象の各ノードに対し、該ノードに関連付けられたパターンを用いたマッチングが変換対象の構造文書の要素に対して成功することを条件に、処理対象のノードにリンクにより対応付けられたノードが示す出力要素を、該リンク及び該出力要素を示すノードにそれぞれ関連付けられた出力に関するパラメータに基づいて出力すること指示するテキスト形式の変換規則を生成する。
【0017】
好ましくは、変換規則のグラフィカルな表現は、入力要素を示すノードであって、入力要素と出力要素とを対応付けるリンクによって示される変換処理の適用を試みる変換対象の構造文書内の範囲を指定する上記ノードを、指定ノードとして含む。
【0018】
上記指定ノードは、該指定ノードの全ての子のノードを始点とするリンクによって示される一連の変換処理の適用を試みる範囲を、上記指定ノードの親のノードに関連付けられたパターンにマッチする変換対象の構造文書の要素の全ての子として指定する指定ノードであってよい。また、指定ノードは、該指定ノードの親のノードを始点とする複数のリンクのうち最後に処理されるリンクが示す変換処理の適用を試みる範囲を、上記指定ノードの親のノードに関連付けられたパターンにマッチする変換対象の構造文書の要素の後に位置する全ての兄弟として指定する指定ノードであってもよい。更にまた、指定ノードは、該指定ノードの全ての子ノードを始点とするリンクによって示される変換処理の適用を試みる範囲を、上記指定ノードに関連付けられた適用範囲の開始位置のマッチング・パターンにマッチする変換対象の構造文書の要素から、上記指定ノードに関連付けられた適用範囲の終了位置のマッチング・パターンにマッチする変換対象の構造文書の要素までとして指定する指定ノードであってもよい。
【0019】
好ましくは、入力要素を示すノードの集合を入力ソート順に並べるリストを、(1)入力要素を示すノードxSから入力要素を示すノードxEへのリンクが存在する場合、ノードxSはノードxEより先とし、及び(2)入力要素を示すノードxSから複数の入力要素を示すノードxEi(iは1から始まる正の整数)へのリンクが存在する場合、ノードxEiの左上端の座標をソートキーとして複数のノードxEiの順序を決定することにより生成してよい。更にソートキーとしてノードxEi右下端の座標を追加してよく、優先度は、左上端のY座標、X座標、続いて右下端のY座標、X座標の順としてよい。
【0020】
同様に、出力要素を示すノードの集合を出力ソート順に並べるリストを、(1)出力要素を示すノードySから出力要素を示すノードyEへのリンクが存在する場合、ノードySはノードyEより先とし、及び(2)出力要素を示すノードySから複数の出力要素を示すノードyEi(iは1から始まる正の整数)へのリンクが存在する場合、ノードyEiの左上端の座標をソートキーとして複数のノードyEiの順序を決定することにより生成してよい。更にソートキーとしてノードyEiの右下端の座標を追加してよく、優先度は、左上端のY座標、X座標、続いて右下端のY座標、X座標の順としてよい。
【0021】
好ましくは、1対多変換規則によって、マッチング・パターンを関連付けられた入力要素を示す1のノードが、それぞれ出力に関するパラメータを関連付けられた複数のリンクにより各々出力要素を示す複数のノードに対応付けられる。そして復元部は、1対多変換規則における入力要素を示す1のノードに対し、該ノードに関連付けられたマッチング・パターンによるマッチングが変換対象の構造文書の要素に対して成功することを条件に、1対多変換規則における出力要素を示す各ノードを出力ソート順で処理対象のノードとして、変換対象の構造文書の要素のテキストを、処理対象のノードと入力要素を示す1のノードとを対応付けるリンクに関連付けられた出力に関するパラメータに従って分割又は加工をして、処理対象のノードが示す出力要素として出力すること指示するテキスト形式の変換規則を生成する。
【0022】
好ましくは、多対1変換規則によって、異なる形式又は異なる位置に記載された同種の内容を表す入力要素を各々示す複数のノードと、出力要素を示す1のノードとが対応付けられる。そして上記復元部は、多対1変換ルールにおける入力要素を示す1の処理対象のノードに対し、該処理対象のノードに関連付けられたマッチング・パターンによるマッチングが変換対象の構造文書の要素に対して成功することを条件に、多対1変換規則における出力要素を示すノードの親のノードが示す出力要素に対応付けられた入力要素のうち、入力ソート順において処理対象のノードの直前に位置する入力要素に対して最後に出力した要素の子要素として多対1変換規則における出力要素を示すノードに関連付けられた要素名の要素を出力すること又は最後に出力した要素の属性値として上記変換対象の構造文書の要素のテキストを出力すること指示するテキスト形式の変換規則を生成する。
【0023】
好ましくは、上記変換規則生成支援装置は、上記文書内の部分のユーザ選択に応答して、選択部分に対する変換規則のグラフィカルな表現を生成するルール補完部を更に含む。そしてルール補完部は、選択部分がテーブルの一部または全部である場合に、選択部分の先頭行に対して該行に対応する要素名を関連付けた親の出力要素を示すノード、及び該ノードの子として、先頭行左端セルより右側の各セルに対して左から順に該セルに対応する属性名を関連付けた出力要素を示すノードを生成し、選択部分の先頭行左端のセルに対して、その位置座標を設定した位置座標のマッチング・パターンを関連付けた親の入力要素を示すノード、かつ該ノードを前記親の出力要素を示すノードに対応付けるリンクを生成し、選択部分の先頭行左端セルより右側の各セルに対して左から順に、最初の2セルのみ前記親の入力要素のノードの子として、残りのセルについては1つ前のセルに対応する入力要素のノードの子として、右を設定した走査方向のマッチング・パターンを関連付けた入力要素のノードを生成し、及び子の入力要素を示すノードの各々を対応する属性名を関連付けられた子の出力要素を示すノードに対応付けるリンクを生成する。
【0024】
また、上記ルール補完部は、選択部分が複数のセクション行である場合に、選択部分の各セクション行に対して該行に対応する要素名を関連付けた親の出力要素を示すノードを生成し、選択部分の各セクション行に対して、行の文字列を設定したリスト要素のマッチング・パターンを関連付けた親の入力要素を示すノードを生成し、親の出力要素を示す各ノードを対応する親の入力要素を示す各ノードに対応付けるリンクを生成し、及び各親の入力要素を示すノードの直後に、指定ノードであって、該指定ノードの全ての子ノードを始点とするリンクによって示される変換処理の適用を試みる変換対象の構造文書内の範囲を指定する指定情報を関連付けられた指定ノードを生成する。ここで指定情報は、セクション行の文字列を設定された適用範囲の開始位置のマッチング・パターンと、次のセクション行の文字列を設定された適用範囲の終了位置のマッチング・パターンとを含む。
【0025】
好ましくは、上記ルール補完部は、出力要素のノードの集合を出力ソート順に走査し、関連付けられた要素名又は属性名が同一である2ノードを検出することに応答して、一方のノードと該ノードの全子のノードにそれぞれ対応づけられた入力要素を示す複数のノードから、他方のノードと該ノードの全子ノードへのリンクが存在するか否か、かつ、上記他方のノードとその全子ノードにそれぞれ対応づけられた入力要素を示す複数のノードから、上記一方のノードと該ノードの全子ノードへのリンクが存在するか否かを判定し、どちらのリンクも1つも存在しないとの判定結果を条件に、検出した上記2ノードを統合する。
【0026】
好ましくは、上記変換規則生成支援装置は、変換を希望する文書の物理構造をダンプした階層構造を有する構造文書から要素を抽出する抽出部と、ダンプした上記階層構造の各要素を深さ優先順に処理対象として、該処理対象に上記復元部により復元されたテキスト形式の変換規則を適用することにより、変換先構造文書を取得する変換部とを更に含む。
【0027】
以上、変換規則生成支援装置として本発明を説明した。しかし本発明は、そのような変換規則生成支援装置によって実施される変換規則生成支援方法、及びそのような変換規則生成支援装置によってインストールされて実行される変換規則生成支援プログラムとして把握することもできる。
【発明の効果】
【0028】
本発明によれば、シンタックスに基づく階層構造を有する変換元の構造文書の要素とセマンティックに基づく階層構造を有する変換先の構造文書の要素間の対応付けにおいて1対多、及び多対1の対応付けを許容することにより変換規則の記述の冗長さに対処すると同時に、1対多、及び多対1の対応付けを許容することにより曖昧になる出力順序及び出力先を、演算処理により一意に決定することが可能となる。結果、本発明によれば、深さが1より大きい階層構造をもつ任意の構造文書に対して適用可能な、変換規則の作成を支援する変換規則生成支援装置、方法、およびプログラムが提供される。
【図面の簡単な説明】
【0029】
【図1】本発明の実施形態による変換規則生成支援装置100の機能ブロック図。
【図2】本発明の実施形態によるユーザ・インタフェース105の一例を示す図。
【図3】変換対象の文書の一例(画面一覧定義書)を示す図。
【図4】図3に示す画面一覧定義書の物理構造をダンプした階層構造を示す図。
【図5】変換対象の文書の他の一例(図3に示す画面一覧定義書と同じ仕様書の他の画面一覧定義書)を示す図。
【図6】図5に示す画面一覧定義書の物理構造をダンプした階層構造を示す図。
【図7】図4及び図6に示す階層構造に対する変換先構造文書の階層構造の一例を示す図。
【図8】図3及び図5に示す画面一覧定義書に基づき生成される、縮退前の変換規則のグラフィカル表現を示す図。
【図9】図3及び図5に示す画面一覧定義書に基づき生成される、縮退後の変換規則のグラフィカル表現を示す図。
【図10】本発明の実施形態におけるdeduce_output_prep関数の擬似コードを説明する概念図。
【図11】本発明の実施形態におけるdeduce_output関数の擬似コードを説明する概念図。
【図12】本発明の実施形態におけるdeduce_input_prep関数の擬似コードを説明する概念図。
【図13】本発明の実施形態におけるdeduce_input関数の擬似コードを説明する概念図。
【図14】本発明の実施形態による復元部115の機能としてのmain関数の擬似コードを説明する概念図。
【図15】図14に示すmain関数から呼び出されるsub関数の擬似コードを説明する概念図。
【図16】図9に示す変換規則のグラフィカル表現に対応するテキスト形式の変換規則を示す図。
【図17】図17(a)は、本発明の実施形態による抽出部120の機能としてのmain関数の擬似コードを説明する概念図。図17(b)は、本発明の実施形態におけるsub_spreadseet関数の擬似コードを説明する概念図。
【図18】図18(a)は、本発明の実施形態による変換部125の機能としてのmain関数の擬似コードを説明する概念図。図18(b)は、図18(a)に示すmain関数から呼び出されるsub関数の擬似コードを説明する概念図。
【図19】本発明の実施形態によるルール補完処理の全体の流れを示すフローチャート。
【図20】図19のステップ1910のテーブル部分の自動切り出し処理のフローチャート。
【図21】図19のステップ1920のセクション部分の自動切り出し処理のフローチャート。
【図22】本発明の実施形態による復元処理の全体の流れを示すフローチャート。
【図23】図22のステップ2215の最も近い入力要素の決定処理のフローチャート。
【図24】本発明の実施形態による抽出・変換処理の全体の流れを示すフローチャート。
【図25】本願発明の実施形態による変換規則生成支援装置100を実現するのに好適な情報処理装置のハードウェア構成の一例を示す図。
【発明を実施するための形態】
【0030】
以下、本願発明を実施するための形態を図面に基づいて詳細に説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。なお、実施の形態の説明の全体を通じて同じ要素には同じ番号を付している。
【0031】
図1は、本発明の実施形態による変換規則生成支援装置100の機能ブロックを示す。変換規則生成支援装置100は、ユーザ・インタフェース105と、ルール補完部110と、復元部115と、抽出部120と、変換部125とを含む。
【0032】
オフィス文書等の汎用フォーマット文書に書かれた設計書や仕様書の分析では、前処理として、対象とする文書に合わせて、物理的な配置(シンタックス)に基づく階層構造からデータ内容(セマンティック)に基づく階層構造への変換する変換規則をユーザが定義する必要がある。ユーザ・インタフェース105は、そのような変換規則のグラフィカル表現を、ユーザの指示に基づいて生成し、表示し、編集し、保存し及び読み込む。
【0033】
しかし本発明が対象とする上記変換は、いわばスキーマを持たないものから持つものへの変換であるため、上述したように変換規則の記述の冗長さが問題となる。ユーザ・インタフェース105は、シンタックスに基づく階層構造を有する変換元構造文書とセマンティックに基づく階層構造を有する変換先構造文書の要素間の1対多、多対1の対応付けをユーザが指示することを許容し、縮退した変換規則のグラフィカル表現を生成することで、グラフィカル表現上での重複をなくし、よりコンパクトで見やすいグラフィカル表現の変換規則D65を提供する。
【0034】
上記グラフィカル表現の変換規則D65はまた、ルール補完部110によっても生成される。即ち、ルール補完部110は、変換元構造文書のダンプ前の文書、即ちオリジナルの文書の部分のユーザによる選択に応じて、選択部分に対し縮退した変換規則のグラフィカル表現を自動で生成する。ルール補完部110によるグラフィカル表現の変換規則D65の一部の自動生成により、ユーザ・インタフェース105を用いたユーザによる変換規則作成の作業負担が軽減される。
【0035】
ユーザ・インタフェース105又はユーザ・インタフェース105とルール補完部110の両方によって生成されたグラフィカル表現の変換規則D65は、復元部115によって、コンピュータによる処理が可能な形式、一例としてテキスト形式の縮退のない変換規則F70に復元される。即ち、1対多若しくは多対1又はその両方の対応付けを許容することにより、生成されるグラフィカル表現の変換規則D65は出力順序及び出力先について曖昧さを含んでしまう。復元部115は、かかる曖昧な出力順序及び出力先を演算処理により一意に決定し、縮退のない変換規則F70を生成する。
【0036】
抽出部120は、入力として変換対象の文書A60を受け取り、該文書A60の物理構造をダンプして、該物理構造の階層構造をもつ変換元の構造文書P75を出力する。変換部125は、入力として変換元の構造文書P75と変換規則F70とを受け取り、構造文書P75の階層構造の各要素を深さ優先順に処理対象として、該処理対象に変換規則F70を適用することにより、変換先構造文書Q80を出力する。以下、変換規則生成支援装置100の各構成要素の詳細を順に説明する。
【0037】
ユーザ・インタフェース105は、ユーザの指示に基づいて、シンタックスに基づく階層構造を有する変換元構造文書をセマンティックに基づく階層構造を有する変換先構造文書に変換するグラフィカル表現の変換規則D65を生成し、表示し、編集し、保存し及び読み込む。
【0038】
ユーザ・インタフェース105により生成されるグラフィカル表現の変換規則D65は、変換元構造文書の要素である入力要素を示すノードxの集合X、集合Xにおける異なる2ノードx1、x2間の階層関係を示すリンクmの集合M、変換先構造文書の要素である出力要素を示すノードyの集合Y、集合Yにおける異なる2ノードy1、y2間の階層関係を示すリンクnの集合N、及び入力要素を示すノードxと出力要素を示すノードyとの対応関係を示すリンクlの集合Lを含む。なお、階層構造上ノードx1が示す入力要素が、ノードx2が示す入力要素の親であるとき、ノードx1とノードx2を結ぶリンクmの始点はノードx1であり、終点はノードx2であるとする。同様に、階層構造上ノードy1が示す出力要素が、ノードy2が示す出力要素の親であるとき、ノードy1とノードy2を結ぶリンクnの始点はノードy1であり、終点はノードy2であるとする。また、各ノードx∈Xは、複数のリンクl∈Lの始点と、各ノードy∈Yは、複数のリンクl∈Lの終点と、それぞれなり得るものとする。
【0039】
また、各ノード、各リンクには、変換対象となる構造文書の各要素に対して行うマッチングで使用するパターン及び出力に関するパラメータのうちの少なくとも一方が関連付けられる。ここで出力に関するパラメータには、出力すべき要素の要素名、属性名、出力する属性値に対する文字列のマッチング・パターン及び置換文字列、及び属性値に対する追記の仕方(例えば、属性値の末尾と先頭のいずれに追加するかの指定、追記の際の区切り文字の指定など)が含まれる。詳細については復元部115に関連して後述する。
【0040】
グラフィカル表現の変換規則D65はまた、入力要素を示すノードと出力要素を示すノードとを対応付けるリンクによって示される変換処理の適用を試みる変換対象の構造文書内の範囲を指定するノードである指定ノードを、入力要素を示すノードとして含む。本実施例では、指定ノードとして、allChildrenノード、allSiblingsAfterノード、rangeノードの3つのノードを説明する。
【0041】
allChildrenノードは、該ノードの全ての子のノードを始点とするリンクlによって示される一連の変換処理の適用を試みる範囲を、allChildrenノードの親のノードに関連付けられたパターンにマッチする変換対象の構造文書の要素の全ての子として指定する指定ノードである。
【0042】
allSiblingsAfterノードは、該ノードの親のノードを始点とする複数のリンクlのうち最後に処理されるリンクlが示す変換処理の適用を試みる範囲を、allSiblingsAfterの親のノードに関連付けられたパターンにマッチする変換対象の構造文書の要素の後に位置する全ての兄弟として指定する指定ノードである。
【0043】
rangeノードは、rangeノードの子ノードを始点とする全てのリンクlによって示される変換処理の適用を試みる範囲を、rangeノードに関連付けられた適用範囲の開始位置のテキスト・パターンにマッチする変換対象の構造文書の要素から、rangeノードに関連付けられた適用範囲の終了位置のテキスト・パターンにマッチする変換対象の構造文書の要素までとして指定する指定ノードである。
【0044】
上記のようなグラフィカル表現の変換規則D65を生成するために、ユーザ・インタフェース105は、好ましくは次の操作を行うための機能を提供する。
(1)グラフィカル表現の変換規則D65を構成するノード及びリンクをメニューやパレットから選択し追加する。
(2)ノード及びリンクの位置及びサイズを変更する。
(3)ノード及びリンクのパターン及びパラメータを設定する。
(4)ノード及びリンクを削除する。
(5)グラフィカル表現の変換規則D65の保存及び読み込みを行う。
そして、ユーザ・インタフェース105は、ユーザの操作に基づいて、入力要素を示す1のノードxを、出力要素を各々示す複数のノードyに対応付ける複数のリンクlによって示される1対多変換規則を生成し、縮退した変換規則の生成を許容する。同様に、ユーザ・インタフェース105は、ユーザの操作に基づいて、入力要素を各々示す複数のノードxを、出力要素を示す1のノードyに対応付ける複数のリンクlによって示される多対1変換規則を生成し、縮退した変換規則の生成を許容する。
【0045】
図2は、ユーザ・インタフェース105の一例を示す。図2に示すユーザ・インタフェース105は、画面向かって右側に、グラフィカル表現の変換規則D65の構成要素を選択し追加するためのパレット205を表示する。パレット205は、出力要素を示すノードy、及び集合Yにおける異なる2ノードy1、y2間の階層関係を示すリンクnを作成するための複数のアイコン210と、入力要素を示すノードxを作成するための複数のアイコン215とを含む。またパレット205は、ノードやリンクのパラメータを設定するためのアイコン220も含む。なお図示はしていないが、パレット205は、集合Xにおける異なる2ノードx1、x2間の階層関係を示すリンクm、及び入力要素を示すノードxと出力要素を示すノードyとの対応関係を示すリンクlをそれぞれ作成するための複数のアイコンを更に含んでもよい。
【0046】
図2に示すユーザ・インタフェース105はまた、画面向かって左側に、グラフィカル表現の変換規則D65を作成するための作業領域225を表示する。ユーザは、パレット205の複数のアイコン210のうちの1を選択した状態で、作業領域225の作成希望位置でマウスの左クリックを繰り返すことにより、出力要素を示す複数のノードyの集合Yとその階層関係nの集合N230とを作成できる。また、ユーザは、パレット205の複数のアイコン215のうちの1を選択した状態で、作業領域225の作成希望位置でマウスの左クリックを繰り返すことにより、入力要素を示す複数のノードxの集合Xとその階層関係mの集合M235とを作成できる。更にユーザは、パレット205のアイコン220を選択した状態で、作業領域225に作成された任意のノード又はリンクをマウスでクリックすることで、クリックしたノード又はリンクにパラメータを設定できる。但し、図2に示すユーザ・インタフェース105は説明のための例示であり、ユーザ・インタフェース105は図2に示す態様に限定されるわけではない。
【0047】
なお、グラフィカル表現の変換規則D65を構成する個々のノードx、yの位置及びサイズについては、それぞれ、リンクmの集合Mによって変換元構造文書のシンタックスに基づく階層構造が正しく表され、リンクnの集合Nによって変換先構造文書のセマンティックに基づく階層構造が正しく表される限り、制限はない。もちろん、これら階層構造の情報を別途用意しておいてもよい。本実施例における個々のノードx、yの位置及びサイズは、それぞれ、変換元構造文書の階層構造における深さ優先順である入力ソート順、また、変換先構造文書の前記階層構造における深さ優先順である出力ソート順が、以下に説明する方法によって求まるように決定される。
【0048】
本実施例において、入力ソート順は次のように決定される。
(1)入力要素を示すノードx1から入力要素を示すノードx2へのリンクが存在する場合、ノードx1はノードx2より先とする。
(2)入力要素を示すノードx1から複数の入力要素を示すノードxi(iは2から始まる正の整数)へのリンクが存在する場合、ノードxiの左上端の座標をソートキーとして複数のノードxiの順序を決定する。更にソートキーとしてノードxiの右下端の座標を追加してよく、この場合優先度は順に、ノードxiの左上端のY座標、X座標、ノードxiの右下端のY座標、X座標としてよい。
【0049】
同様に本実施例において出力ソート順は次のように決定される。
(1)出力要素を示すノードy1から出力要素を示すノードy2へのリンクが存在する場合、ノードy1はノードy2より先とする。
(2)出力要素を示すノードy1から複数の出力要素を示すノードyi(iは2から始まる正の整数)へのリンクが存在する場合、ノードyiの左上端の座標をソートキーとして複数のノードyiの順序を決定する。更にソートキーとしてノードyiの右下端の座標を追加してよく、この場合優先度は順に、ノードyiの左上端のY座標、X座標、ノードyiの右下端のY座標、X座標としてよい。
【0050】
ルール補完部110は、変換対象の文書内の部分のユーザ選択に応答して、選択部分に対するグラフィカル表現の変換規則D65を自動で生成する。より具体的には、ルール補完部110は、選択部分がテーブルである否か判定し、選択部分がテーブルである場合に、テーブルに対応する縮退した変換規則を含まないグラフィカル表現の変換規則D65を生成する。また、ルール補完部110は、選択部分がセクション行である否か判定し、選択部分がセクション行である場合に、セクション行に対応する縮退した変換規則を含まないグラフィカル表現の変換規則D65を生成する。そしてルール補完部110は、自動生成したグラフィカル表現の変換規則D65を検索し、共通の子である要素が見つかった場合にこれを集約して、最終的に縮退した変換規則を含むグラフィカル表現の変換規則D65を出力する。以下、図3乃至図9を参照してルール補完部110による処理の詳細を説明する。
【0051】
図3は、変換対象の文書の例としての画面一覧定義書を示す。図4は、図3に示す画面一覧定義書の物理構造をダンプした階層構造を示す。図5は、変換対象の文書の例としての他の画面一覧定義書を示す。図6は、図5に示す画面一覧定義書の物理構造をダンプした階層構造を示す。図7は、図4及び図6に示す階層構造に対する変換先構造文書の階層構造の一例を示す。図8は、図3及び図5に示す画面一覧定義書に基づき生成される、縮退前の変換規則のグラフィカル表現を示す。図9は、図3及び図5に示す画面一覧定義書に基づき生成される、縮退後の変換規則のグラフィカル表現を示す。
【0052】
図3に示す画面一覧定義書では、一覧がスプレッドシートにテーブル形式で記載されている。また、図5に示す画面一覧定義書では、一覧がWord文書に箇条書きで記載されている。しかし2つの定義書の仕様書は同じである。従って、これら2つの画面一覧定義書の物理構造の階層構造を図7に示す階層構造に変換して、1つの画面一覧定義書にまとめたいという要求がある。そのためのグラフィカル表現の変換規則は、以下に説明するルール補完部110の処理により多くの部分を自動で生成され得る。まず、図3、4、7、及び8を参照して、選択部分がテーブルの全部又は一部である場合のテーブル自動切り出し処理を説明する。続いて、図5、6、7、及び8を参照して、選択部分がセクションである場合のセクション自動切り出し処理を説明する。最後に図8及び9を参照して、集約処理を説明する。
【0053】
テーブル自動切り出し処理において、ルール補完部110はまず、ユーザによる選択部分(図3のスプレッドシート300の部分305を参照)を指定する情報を取得する。そしてルール補完部110は、取得した情報に基づき選択部分がテーブルの一部または全部であることを確認すると以下の処理を行う。
(1)選択部分の先頭行(図3のスプレッドシート300の行310を参照)に対して、該行に対応する要素名を関連付けた出力要素を示すノード(図8のノード815を参照)を生成する。
(2)上記出力要素を示すノードの子として、先頭行左端セルより右側の各セル(図3のスプレッドシート300の座標(B、4)、(C、4)、(D,4)、(E、4)の各セルを参照)に対して左から順に、該セルに対応する属性名を関連付けた出力要素を示すノード(図8のノードの集合820を参照)を生成する。
(3)選択部分の先頭行左端セル(図3のスプレッドシート300の座標(A、4)のセルを参照)に対して、該セルの位置座標を設定した位置座標のマッチング用のパターンを関連付けた親の入力要素を示すノード(図8のノード825を参照)を生成する。また、生成したノードを上記親の出力要素を示すノードに対応付けるリンク(図8のリンク835を参照)を生成する。
(4)選択部分の先頭行左端セルより右側の各セル(図3のスプレッドシート300の座標(B、4)、(C、4)、(D、4)、(E、4)の各セルを参照)に対して左から順に、最初の2セルのみ上記親の入力要素の子として、残りのセルについては1つ前のセルに対応する入力要素のノードの子として、右を設定した走査方向のマッチング用のパターンを関連付けた入力要素のノード(図8のノードの集合830を参照)を生成する。
(5)子の入力要素を示すノードの各々を対応する属性名を関連付けられた子の出力要素を示すノードに対応付けるリンク(図8のリンクの集合840を参照)を生成する。
【0054】
なお、ユーザによる選択部分がスプレッドシート全体(図3のスプレッドシート300の部分315を参照)である場合には、上記各処理の前に次の処理が加わる。
(1‘)選択されたシート(図3のスプレッドシート300の部分315を参照)に対して、該シートに対応する要素名を関連付けた出力要素を示すノード(図8のノード801を参照)を生成する。
(2‘)選択されたシート(図3のスプレッドシート300の部分315を参照)に対して、選択されたシートのシート名を設定したシート要素のテキスト・パターンを関連付けられた入力要素のノード(図8のノード803を参照)を生成する。また、生成したノードを、上記出力要素を示すノードに対応付けるリンク(図8のリンク802を参照)を生成する。
(3‘)上記入力要素のノードの子として、allChildrenノード(図8のノード804を参照)を生成する。
なお、選択部分の先頭行左端セル(図3のスプレッドシート300の座標(A、4)のセルを参照)に対して生成された親の入力要素を示すノード(図8のノード825を参照)は、allChildrenノードの子となる。
【0055】
また、ユーザによる選択部分がスプレッドシートのある行全体である場合には、上記(1)から(5)の処理に代えて、ルール補完部110は次の処理を行う。
(1)選択された行に対して、該行に対応する要素名を関連付けた親の出力要素を示すノードを生成する。
(2)上記出力要素を示すノードの子として、選択された行の文字列を属性名として関連付けた出力要素を示すノードを生成する。
(3)選択された行の空白でない最も左のセルに対して、該セルの値を設定した文字列のマッチング・パターンを関連付けた親の入力要素を示すノードを生成する。また、生成したノードを上記親の出力要素を示すノードに対応付けるリンクを生成する。
(4)上記親の入力要素を示すノードの子として、入力要素を示すノードを生成し、該ノードを上記子の出力要素を示すノードに対応付けるリンクを生成する。
(5)上記子の入力要素を示すノードの子として、allSiblingsAfterノードを生成し、該ノードを上記子の出力要素を示すノードに対応付けるリンクを生成する。
【0056】
次にセクションの自動切り出し処理において、ルール補完部110はまず、ユーザによる選択部分(図5のWord文書500の部分505を参照、但し、図示しないが選択部分は「・4.サブシステム帳票定義」のセクション行も含む)を指定する情報を取得する。そしてルール補完部110は、取得した情報に基づき選択部分がセクションであることを確認すると以下の処理を行う。
(1)選択部分の各セクション行(図5のWord文書500の部分505を参照、但し、図示しないが選択部分は「・4.サブシステム帳票定義」のセクション行も含む)に対して各セクション行の文字列(セクション名)に対応する要素名を関連付けた出力要素を示すノード(図8のノード860を参照)を生成する。
(2)選択部分の各セクション行(図5のWord文書500の部分505を参照、但し、図示しないが選択部分は「・4.サブシステム帳票定義」のセクション行も含む)に対して、該行の文字列を設定したリスト要素のテキスト・パターンを関連付けた入力要素を示すノード(図8のノード870を参照)を生成する。該ノードを対応する親の出力要素を示すノードに対応付けるリンク(図8のリンク865を参照)を生成する。
(3)親の入力要素を示す各ノードの直後に、rangeノード(図8のノード875を参照)を生成する。ここでrangeノードの指定情報は、適用範囲の開始位置のテキスト・パターンに各セクション行の文字列を、適用範囲の終了位置のテキスト・パターンに次のセクション行の文字列を設定する。
【0057】
なお、上記テーブル自動切り出し処理及びセクション自動切り出し処理において要素名や属性名は、それぞれ、テーブルの選択部分のセル値、又は各セクション行の文字列(セクション名)に基づいて決定してよい。具体的には、次の手順で決定してよい。
(1)セル値である各文字列、又は各セクション行の文字列(セクション名)を変換する。変換は、事前に作成した、一般的な語句について文字列パターンから名称パターンを対応付けるテーブルを参照してよい。又は、一般的な翻訳システムを使用してもよい。
(2)変換後の文字列から、要素名/属性名に使用できる文字以外の文字部分を削除する。
(3)要素名/属性名として有効な値になるよう、必要に応じてランダムな文字列を追加する。また、自動生成する各ノードの位置は、ユーザ・インタフェース105に関して説明したとおりであり、一例としてX座標(水平方向)とY座標(垂直方向)の2次元座標において子は親の右下、同じ親の複数の子は、X座標は同一でY座標を異ならせるとの規則に基づいて決定してもよい。
【0058】
上述したいずれかの方法により又はユーザ・インタフェース105もしくはその両方により、縮退した変換規則を含まないグラフィカル表現の変換規則D65を生成されると、次にルール補完部110は、最終的に縮退した変換規則を含むグラフィカル表現の変換規則D65を生成するために、縮退した変換規則を含まないグラフィカル表現の変換規則D65に対して以下の処理を行う。
(1)出力要素のノードの集合を出力ソート順に走査し、関連付けられた要素名又は属性名が同一である2ノードy1、y2を検出する。
(2)検出した2ノードy1、y2について、ノードy1とその全子のノードにそれぞれ対応づけられた入力要素を示す複数のノードから、ノードy2とその全子ノードへのリンク1が1つでも存在するか否か、かつ、ノードy2とその全子ノードにそれぞれ対応づけられた入力要素を示す複数のノードから、ノードy1とその全子ノードへのリンク2が1つでも存在するか否かを判定する。
(3)(2)の判定において、リンク1もリンク2も1つも存在しないとの判定結果を条件に、検出した2ノードy1、y2を統合する。具体的には、2つのノードy1、y2を統合したノードy0に置き換え、ノードy1、y2と接続されたリンクを全てy0に接続させる。
【0059】
なお、属性が一致してもその属性を有する要素が異なれば統合はできない。その一方で、要素が一致すれば、その属性が一致しなくても統合はできる(「すべての属性が一致」、「一部の属性が一致」、「すべての属性が不一致」のいずれの場合も含む)。図8に示す縮退した変換規則を含まないグラフィカル表現の変換規則D65をみると、ノード815とノード880は、共に要素名がscreenで一致する。しかしこれらノードの子をみると、ノード815には属性名がsubsystemの子があるのに対し、ノード880にはそのような子はない(「一部の属性が一致」に相当)。しかし図9のノード915により示すように、ノード815とノード880は問題なく統合できる。なお、図8の矩形805内の入力要素を示すノードの集合は、図9における入力要素を示すノードの集合905に対応し、図8の矩形850内の入力要素を示すノードの集合は、図9における入力要素を示すノードの集合910に対応する。また図9の左下の表に示すように、本発明前(縮退なし、ルール補完部110による自動生成なし)と本発明後(縮退有り、ルール補完部110による図8の矩形805、810部分の自動生成あり)を比較すると、本発明によってグラフィカルな表現の変換規則の見易さ、また、ユーザによる作業負担のどちらも改善されているのが分かる。
【0060】
復元部115は、ユーザ・インタフェース105又はユーザ・インタフェース105とルール補完部110の両方によって生成された縮退した変換規則を含むグラフィカル表現の変換規則D65を入力として受け取り、縮退を解きつつグラフィカル表現の変換規則D65をテキスト形式の完全な変換規則に変換して、変換規則F70を出力する。より具体的には、復元部115は、グラフィカル表現の変換規則D65に含まれる入力要素を示すノードの集合から入力ソート順で取り出した処理対象の各ノードに対し、該ノードに関連付けられたパターンを用いたマッチングが変換対象の構造文書の要素に対して成功することを条件に、処理対象のノードにリンクにより対応付けられたノードが示す出力要素を、該リンク及び該出力要素を示すノードにそれぞれ関連付けられた出力に関するパラメータに基づいて出力すること指示するテキスト形式の変換規則を生成する。
【0061】
上記処理において、復元部115は、1対多変換規則に対しては、1のノードが示す入力要素に対して複数のノードが示す複数の出力要素の各々を出力する出力順序を、出力ソート順に従い決定することにより縮退を解く。より詳細に説明する。まず、1対多変換規則によって、マッチング・パターンを関連付けられた入力要素を示す1のノードが、それぞれ出力に関するパラメータを関連付けられた複数のリンクにより、各々出力要素を示す複数のノードに対応付けられる。この状況において、復元部115は、1対多変換規則における入力要素を示す1のノードに対し、該ノードに関連付けられたマッチング・パターンによるマッチングが変換対象の構造文書の要素に対して成功することを条件に、1対多変換規則における出力要素を示す各ノードを出力ソート順で処理対象のノードとして、上記マッチングした要素のテキストを、上記入力要素を示す1のノードと処理対象のノードとを対応付けるリンクに関連付けられた出力に関するパラメータに従って分割又は加工をして、処理対象のノードが示す出力要素として出力すること指示するテキスト形式の変換規則を生成する。
【0062】
ここで、1対多変換規則におけるリンクに関連付けられた出力に関するパラメータについて詳細に説明する。この出力に関するパラメータは、入力要素を示す1のノードにより表される一箇所に記載されている内容を、複数のノードが示す複数の出力要素に出力するために分割又は加工するその方法を指定する情報であり、具体的には、出力値に対する文字列のマッチ・パターンと置換文字列である。なお、マッチ・パターンは正規表現で設定してよく、Java(登録商標)にける文字列置換パターンを使用してもよい。
【0063】
例として、セルに対応する入力要素X1に関連付けられたマッチ・パターンにマッチした変換対象の構造文書のセルの値が「ABC&DEF」であり、これを2つの出力要素Y1、Y2に値を分割して出力するケースを考える。するとX1とY1を接続するリンクには、マッチ・パターンに「&.*」、及び置換文字列に「(空)」を設定された出力に関するパラメータが関連付けられる。結果、該情報に基づいて、出力要素Y1には「ABC」が出力される。同様に、X1とY2を接続するリンクには、マッチ・パターンに「*&.」、及び置換文字列に「(空)」を設定された出力に関するパラメータが関連付けられる。結果、該情報に基づいて、出力要素Y2には「DEF」が出力される。なお「.*」は正規表現で「0文字以上の任意の文字列」を表す。従って、上記設定はそれぞれ、「&とその後の文字列を取り除く」、「&とその前の文字列を取り除く」ことを意味する。
【0064】
上記処理において復元部115はまた、多対1変換規則に対しては、複数のノードが示す複数の入力要素の各入力要素に対して1のノードが示す出力要素を出力する出力先を、該出力要素の親である出力要素に対応付けられた1以上の入力要素を入力ソート順に並べた場合に上記各入力要素の直前に位置する入力要素の出力先を参照して決定することにより縮退を解く。より詳細に説明する。まず、多対1変換規則によって、異なる形式又は異なる位置に記載された同種の内容を表す入力要素を各々示す複数のノードと、出力要素を示す1のノードとが対応付けられる。復元部115は、多対1変換規則における入力要素を示す1の処理対象のノードに対し、該処理対象のノードに関連付けられたマッチング・パターンによるマッチングが変換対象の構造文書の要素に対して成功することを条件に、多対1変換規則における出力要素を示すノードの親のノードが示す出力要素に対応付けられた1以上の入力要素のうち、入力ソート順において上記処理対象のノードの直前に位置する入力要素に対して最後に出力した要素の子として多対1変換規則における上記出力要素を示すノードに関連付けられた要素名の要素を出力すること、又は最後に出力した要素の属性値として上記変換対象の構造文書の要素のテキストを出力すること指示するテキスト形式の変換規則を生成する。
【0065】
なお、多対1変換規則において、入力要素を示す複数のノードに対し、上記方法により決定される出力先が同じである場合、上記入力要素を示す複数のノードの各々と1の出力要素を示すノードとを対応付ける各リンクには出力に関するパラメータが関連付けられる。この出力に関するパラメータは、属性値に対する追記の仕方を指定するものであり、例えば、先頭又は末尾に追加することを指示する情報や、追記の際の区切り文字を指定する情報である。
【0066】
例として、入力要素を示すノードX1とその子のノードX2、更にノードX2の子のノードX3があり、属性値を出力する出力要素を示すノードYに対して、X1、X2、X3の3つからそれぞれリンクがある場合を考える。ノードX1、X2、X3は順に親子関係にあり、この場合上記方法により決定される出力先は同じである。ここで、ノードX2からノードYへのリンクについて、以下の出力に関するパラメータが関連付けられているとする。
・追記モード:先頭に追加
・追記の区切り文字:「:」
同様に、ノードX3からノードYへのリンクについて、以下の出力に関するパラメータが関連付けられているとする。
・追記モード:末尾に追加
・追記の区切り文字:「−」
また、ノードX1、X2、X3にそれぞれ関連付けられたマッチ・パターンが一致して出力される対応する値がそれぞれ順に、「画面A」、「ID123」、「項目H」であるとする。すると、出力要素を示すノードYへの出力はX1、X2、X3の順で行われ、X1からYの出力が行われた時点では、Yに対応する出力の属性値は「画面A」、続いてX2からYの出力が行われた時点では、Yに対応する出力の属性値は「ID123:画面A」、最後にX3からYの出力が行われると、Yに対応する出力の属性値は「ID123:画面A−項目H」となる。
【0067】
次に図10から図15に示す擬似コードを参照して、復元部115による処理を説明する。図10は、復元部115の機能を提供するmain関数から直接呼び出されるdeduce_output_prep関数の擬似コードを説明する概念図である。図11は、上記main関数から間接的に呼び出されるdeduce_output関数の擬似コードを説明する概念図である。図12は、上記main関数から間接的に呼び出されるdeduce_input_prep関数の擬似コードを説明する概念図である。図13は、上記main関数から間接的に呼び出されるdeduce_input関数の擬似コードを説明する概念図である。図14は、上記main関数の擬似コードを説明する概念図である。図15は、上記main関数から直接呼び出されるsub関数の擬似コードを説明する概念図である。以下では簡単のため、入力要素や出力要素を示すノードを、それぞれ単に入力要素、出力要素と記載する。
【0068】
図10に示すdeduce_output_prep関数は、1対多変換規則において出力順を決定するために呼び出される関数であって、出力ソート順を求めるための関数である。引数として渡されたグラフィカル表現の変換規則D65に対し、変換規則D65に含まれる全出力要素y(y∈Y)を深さ優先順に並べた出力要素リストListOutを返す。上述したように、本実施例では出力ソート順はノードの位置やサイズに基づいて決定される。その詳細は既に説明しているためここでは割愛する。
【0069】
図11に示すdeduce_output関数もまた、1対多変換規則において出力順を決定するために呼び出される関数であって、引数で指定される特定の入力要素xに対して出力順を求めるための関数である。deduce_output関数ではまず、引数として渡されたグラフィカル表現の変換規則D65に含まれる入力要素と出力要素間の対応関係を示すリンクl(l∈L)のうち、上記特定の入力要素xを始点とするものを列挙してL1とする。続いて、L1に含まれるリンクの終点となっている出力要素のリストをY1とする。続いて、Y1の要素を、deduce_output_prep関数によって求めたListOutの順に従ってソートしたものをY2とする。最後に、入力要素xについての出力要素の出力順のリストとしてY2を返す。
【0070】
図12に示す deduce_input_prep関数は、多対1変換規則において出力先を決定するために呼び出される関数であって、入力ソート順を求めるための関数である。引数として渡されたグラフィカル表現の変換規則D65に対し、変換規則D65に含まれる全入力要素x(x∈X)を深さ優先順に並べた入力要素リストListInを返す。上述したように、本実施例では入力ソート順はノードの位置やサイズに基づいて決定される。その詳細は既に説明しているためここでは割愛する。
【0071】
図13に示すdeduce_input関数もまた、多対1変換規則において出力先を決定するために呼び出される関数であって、引数で指定される特定の入力要素x、出力要素yに対して出力先を求めるための関数である。deduce_input関数ではまず、引数として渡されたグラフィカル表現の変換規則D65に含まれる出力要素の階層n(出力要素間のリンク、即ち、n∈N)から上記特定の出力要素yを終点とするものを求め、出力要素yの親の出力要素y0を取得する。続いて、上記グラフィカル表現の変換規則D65における入力要素と出力要素間の対応関係を示すリンクl(l∈L)から、出力要素y0を終点に持つものを全て求め、求めた各リンクlの始点である入力要素xpをリストしたものをXpとして取得する。続いて、Xpの要素のうち、deduce_input_prep関数によって求めたListIn上で、上記特定の入力要素x自身を含め、入力要素xより先にある最初の入力要素x0を求める。最後に入力要素xと出力要素yとを対応付けるリンクの出力先を決定のための参照情報として入力要素x0を返す。
【0072】
図14に示すmain関数は、復元部115による処理の全体に対応する関数であり、
引数として受け取ったグラフィカル表現の変換規則D65から変換規則F70を生成し出力するための関数である。main関数ではまず、テキスト形式の変換規則F70を新規作成し空で初期化する。続いて、準備処理として引数にグラフィカル表現の変換規則D65を設定して、deduce_output_prep関数を呼び出す。続いて、グラフィカル表現の変換規則D65に含まれる全ての入力要素x(x∈X)から、入力要素の階層m(入力要素間のリンク、即ち、m∈M)の終点とならない、即ち親となる入力要素をもたない入力要素を全て抽出し、そのリストX_rootを求める。ここでX_rootに含まれる入力要素の順序は入力ソート順とする。続いて、リストX_rootの各要素x1について順に、該要素x1と、グラフィカル表現の変換規則D65と、テキスト形式の変換規則F70とをそれぞれ引数に設定して後述するsub関数を呼び出す。リストX_rootのすべての要素x1について上記呼び出しがなされた時点でテキスト形式の変換規則F70が完成し、最後に完成したテキスト形式の変換規則F70を返す。
【0073】
図15に示すsub関数は再帰関数のサブルーチンであり、該サブルーチンが再帰的に呼び出されることでグラフィカル表現の変換規則D65の定義が順序処理され、対応する規則が変換規則F70に追加される。sub関数ではまず、引数として受け取った変換規則F70の手続きステップtに「xに設定されているマッチ・パターンと一致するか」を追加する。但し、xは引数として受け取った入力要素xである。続いて、引数と受け取ったグラフィカル表現の変換規則D65と、上記入力要素xとを引数に設定して、deduce_output関数を呼び出し、その返り値を入力要素xに対する出力要素のリストY1に代入する。続いてリストY1の各要素y1についてリスト順に、以下の処理を行う。
【0074】
(1)上記グラフィカル表現の変換規則D65に含まれる出力要素の階層n(出力要素間のリンク、即ち、n∈N)から上記要素y1を終点とするものを求め、要素y1の親の出力要素y0を取得する。
(2)親の出力要素y0が存在しない、即ち、要素y1が親を持たない場合、変数qに要素y1に設定されている出力要素を代入し、上記変換規則F70の手続きtのtrueのケースの手続きステップとして「変換先構造文書のルート要素の子要素又は属性名としてqを出力」を追加する。
(3)親の出力要素y0が存在する、即ち、要素y1が親を持つ場合、変数pに、出力要素y0に設定されている出力要素を代入し、また、変数qに要素y1に設定されている出力要素を代入する。続いて、上記グラフィカル表現の変換規則D65と、上記入力要素xと、上記y1とを引数に設定して、deduce_input関数を呼び出し、その返り値を出力対象x0に代入する。続いて、変換規則F70の手続きtのtrueのケースの手続きステップとして「x0が最後に生成した要素pの子又は属性名としてqを出力」を追加する。
【0075】
リストY1の全ての要素y1について上記処理を終えると、続いて、入力要素xの子である入力要素のリストX_childを求める。なお、リストX_childにおけるリストの順は入力ソート順とする。続いて、X_childの各要素x1について、上記グラフィカル表現の変換規則D65と、上記要素x1と、上記変換規則F70の手続きtのtrueのケースとを引数に設定して、sub関数を再帰的に呼び出す。X_childの全ての要素についてsub関数の呼び出しが終了した時点で、変換規則F70が完成し、sub関数は終了する。
【0076】
図16は、図9に示す変換規則のグラフィカル表現に対応するテキスト形式の変換規則を示す図である。図16に示す変換規則は、変換規則のグラフィカル表現を図10乃至図15に示す擬似コードにより処理して得られたものである。
【0077】
抽出部120は、変換を希望する文書から、その物理構造をダンプした階層構造を有する変換元の構造文書を生成する。抽出部120はまた、変換元の構造文書からその要素を抽出する。図17に示す擬似コードを参照して、抽出部120による処理を説明する。図17(a)は、抽出部120の機能を提供するmain関数の擬似コードを説明する概念図である。図17(b)は、上記main関数から直接呼び出されるsub_spreadsheet関数の擬似コードを説明する概念図である。
【0078】
図17(a)に示すmain関数は、抽出部120による処理の全体に対応する関数であり、引数として受け取った変換対象の文書Aから、文書Aの物理構造をダンプした階層構造を有する変換元の構造文書pを生成し出力するための関数である。main関数ではまず、変換対象の文書Aの文書のタイプをチェックする。本実施例では、スプレッドシート・ファイル、ワードプロセッサー・ファイル、プレゼンテーション・ファイル、上記3種のファイル以外の処理対象外のファイルのいずれであるかを確認する。スプレッドシート・ファイル、ワードプロセッサー・ファイル、プレゼンテーション・ファイルのいずれかである場合、それぞれ対応するサブ関数を呼び出して、返り値を変換元の構造文書pに代入し、最後に変換元の構造文書pを返す。
【0079】
図17(b)に示すsub_spreadsheet関数は、変換対象の文書Aの文書のタイプがスプレッドシート・ファイルの場合に呼び出される関数である。sub_spreadsheet関数ではまず、変換元の構造文書pを新たに生成し、ルート要素e0を追加する。続いて文書Aに含まれる全てのシートsについて以下の(1)から(3)の一連の処理を行う。
(1)ルート要素e0の子要素として、シート要素e1を出力する。また、シートsの名前をシート要素e1のname属性値として出力する。更に、シートsに含まれる全ての行rについて以下の(2)から(3)の一連の処理を行う。
(2)シート要素e1の子要素として、行要素e2を出力する。また、行rの行数を行要素e2のy属性値として出力する。更に、行rに含まれる全てのセルcについて以下の(3)の処理を行う。
(3)行要素e2の子要素として、セル要素e3を出力する。また、セルcのセル値をセル要素e3のテキスト値として出力する。
【0080】
変換対象の文書Aの文書のタイプがワードプロセッサー・ファイルやプレゼンテーション・ファイルの場合に呼び出されるサブ関数も、同様に求めることができる。その内容は既知の技術であるためここでは詳細は割愛する。なお、上記以外のタイプであってもその物理構造が既知であれば同様に対応するサブ関数を求めることができることに留意されたい。
【0081】
変換部125は、抽出部120により抽出された変換元の構造文書の各要素を深さ優先順に処理対象として、該処理対象の要素に復元部115により復元されたテキスト形式の変換規則を適用することにより、変換先の構造文書を取得する。図18に示す擬似コードを参照して、変換部125による処理を説明する。図18(a)は、変換部125の機能を提供するmain関数の擬似コードを説明する概念図である。図18(b)は、上記main関数から直接呼び出されるsub関数の擬似コードを説明する概念図である。
【0082】
図18(a)に示すmain関数は、変換部125による処理の全体に対応する関数であり、引数として受け取った変換元の構造文書Pと変換規則Fとから、変換先の構造文書Qを生成し出力するための関数である。main関数ではまず、変換先の構造文書Qを新規作成し、ルート要素を追加する。続いて、変換元の構造文書Pのルート要素を変数p0に代入し、同様に、変換先の構造文書Qのルート要素を変数q0に代入する。そして、変数p0、q0と、変換規則Fとを引数に設定してsub関数を呼び出す。sub関数の実行終了と同時に変換先の構造文書Qが完成されるので、最後に変換先の構造文書Qを返す。
【0083】
図18(b)に示すsub関数は再帰関数のサブルーチンであり、該サブルーチンが再帰的に呼び出されることで変換元の構造文書の各要素が順序処理され、対応する変換後の要素が変換先構造文書の要素として追加される。sub関数ではまず、引数として受け取った変換元の構造文書Pの要素pと、変換先の構造文書Qの要素qとを、同じく引数として受け取った変換規則Fの入力とし、要素pに変換規則Fを適用した結果としてその出力を変換先の構造文書Qの変換後の要素q‘に代入する。続いて変換元の構造文書Pの要素pの全ての子要素p1について、子要素p1と、変換後の要素q’と、変換規則Fとを引数として設定して、sub関数を再び呼び出す。全ての子要素p1についての再帰呼び出しが終了した時点で、変換先構造文書Qが完成し、sub関数は終了する。
【0084】
次に図19乃至図21を参照して、ルール補完部110による補完処理の全体の流れを説明する。図19は、ルール補完部110による補完処理の全体の流れを示すフローチャートである。図20は、図19のステップ1910のテーブル部分の自動切り出し処理のフローチャートである。図21は、図19のステップ1920のセクション部分の自動切り出し処理のフローチャートである。
【0085】
図19に示す補完処理はステップ1900から開始し、ルール補完部110は、変換対象の文書内の部分のユーザ選択に応答して、選択部分を指定する指定情報を取得する。続いて、ルール補完部110は、指定情報を基にユーザによる選択部分がテーブルであるか否かを判定する(ステップ1905)。上記判定は、変換対象の文書の種類(ファイルタイプ)及び選択部分の物理的な文書要素の種類より行ってよく、スプレッドシート・ファイルのセル部分もテーブルとみなす。テーブルであると判定した場合(ステップ1905:YES)、ルール補完部110は、図20を参照して後述するテーブル部分の自動切り出し処理を行う(ステップ1910)。
【0086】
テーブルではないと判定した場合(ステップ1905:NO)又はステップ1910から処理はステップ1915へ進み、続いてルール補完部110は、指定情報を基にユーザによる選択部分がセクションであるか否かを判定する(ステップ1915)。上記判定は、変換対象の文書の種類(ファイルタイプ)及び選択部分の物理的な文書要素の種類より行ってよい。セクションであると判定した場合(ステップ1915:YES)、ルール補完部110は、図21を参照して後述するセクションの自動切り出し処理を行う(ステップ1920)。セクションではないと判定した場合(ステップ1915:NO)又はステップ1920から処理はステップ1925へ進み、続いてルール補完部110は、生成した縮退した変換規則を含まない変換規則のグラフィカル表現を検索して、共通の子である要素が見つかった場合に一定の条件のもとそれを集約して、最終的に縮退した変換規則を含む変換規則のグラフィカル表現Dを出力する(ステップ1925)。そして処理は終了する。
【0087】
図20に示すテーブル自動切り出し処理はステップ2000から開始し、ルール補完部110は、選択部分がスプレッドシート全体であるか否かを判定する。選択部分がスプレッドシート全体である場合(ステップ2000:YES)、処理はステップ2005へ進み、ルール補完部110は、変換規則のグラフィカル表現に出力要素Y0を追加する。続いてルール補完部110は、変換規則のグラフィカル表現に出力要素y1を出力要素Y0の子として追加する(ステップ2010)。続いてルール補完部110は、変換規則のグラフィカル表現に、入力要素としてシート要素x0を追加し、これに選択されたスプレッドシートのシート名を設定したマッチング・パターンを関連付ける(ステップ2015)。また、ルール補完部110は、入力要素x0を出力要素Y0に接続するリンクを追加する(ステップ2015)。
【0088】
続いてルール補完部110は、変換規則のグラフィカル表現に入力要素としてシート要素x1を入力要素x0の子として追加し、シート要素x1を出力要素y1に接続するリンクを追加する(ステップ2020)。続いてルール補完部110は、変換規則のグラフィカル表現に入力要素としてallchildrenノードx2をシート要素x1の子として追加する(ステップ2025)。
【0089】
ステップ2025から、又はステップ2000において選択部分がスプレッドシート全体でない場合(ステップ2000:NO)処理はステップ2030へ進み、ルール補完部110は、変換規則のグラフィカル表現に出力要素Y2を追加する。続いてルール補完部110は、選択部分がある行全体であるか否かを判定する(ステップ2035)。選択部分がある行全体である場合(ステップ2035:YES)、処理はステップ2040へ進み、ルール補完部110は、出力要素Y2の子として出力要素y3を追加する。
【0090】
続いてルール補完部110は、新たに入力要素としてセル要素x3を追加し、これに空白でない最も左端のセルのテキストを設定したマッチング・パターンを関連付ける(ステップ2045)。また、ルール補完部110は、セル要素x3を出力要素Y2に接続するリンクを追加する(ステップ2045)。続いてルール補完部110は、セル要素x3の子である入力要素として新たにセル要素x4を追加し、セル要素x4を出力要素y3に接続するリンクを追加する(ステップ2050)。続いてルール補完部110は、セル要素x4の子である入力要素として、allSiblingsAfterノードx5を追加し、allSiblingsAfterノードx5を出力要素y3に接続するリンクを追加する(ステップ2055)。
【0091】
一方ステップ2035において選択部分がある行全体でない場合(ステップ2035:NO)、処理はステップ2060へ進み、ルール補完部110は、先頭行の左端から右側の各セルに対して、出力要素Y2の子として出力要素y11、y12、y13、…を追加する。続いてルール補完部110は、入力要素としてセル要素x5を追加し、これに選択部分の先頭行左端セルの位置座標を設定したマッチング・パターンを関連付ける(ステップ2060)。ここで入力要素x2が存在する場合はセル要素x5を入力要素x2の子とする。また、ルール補完部110は、セル要素x5を出力要素Y2に接続するリンクを追加する(ステップ2065)。
【0092】
続いてルール補完部110は、先頭行の左端から右側の各セルに対して、新たに入力要素としてセル要素x11、x12、x13、…を追加する(ステップ2070)。ここでセル要素x11とセル要素x12は、セル要素x5の子とする。一方、残りのセル要素x13、…は各々1つ前のセルに対応するセル要素の子とする。そしてセル要素x12以降の各セル要素には、右に設定した走査方向のマッチング・パターンを関連付ける(ステップ2070)。また、ルール補完部110は、セル要素x11を出力要素y11に接続するリンクを追加する。残りのセル要素x12、x13、…についても同様にそれぞれ順に出力要素y12、y13、…に接続するリンクを追加する(ステップ2070)。ステップ2055、又はステップ2070の後処理は終了する。
【0093】
図21に示すセクション自動切り出し処理は、ユーザにより選択された選択部分に含まれる各セクションSについて繰り返し実行され、ステップ2100においてルール補完部110はまず、変換規則のグラフィカル表現に新規に出力要素Y1を追加する。続いてルール補完部110は、変換規則のグラフィカル表現に入力要素としてリスト要素x1を追加し、これにセクションSの文字列(セクション名)を設定したマッチング・パターンを関連付ける(ステップ2105)。ルール補完部110はまた、入力要素x1を出力要素Y1に接続するリンクを追加する(ステップ2105)。
【0094】
続いてルール補完部110は、変換規則のグラフィカル表現に新規に入力要素としてれrangeノードを追加する(ステップ2110)。ここでrangeノードの位置は、入力ソート順でx1の直後になる位置とする。またルール補完部110は、開始位置のテキスト・パターンにセクションSの文字列(セクション名)を設定し、終了位置のテキスト・パターンにセクションSの次のセクションの文字列(セクション名)を設定する(ステップ2110)。但し、セクションSが最後のセクションである場合には終了位置のテキスト・パターンにダミーの文字列を設定する。全てのセクションSについてステップ2100からステップ2110の処理を実行すると、処理は終了する。
【0095】
次に図22、23を参照して、復元部115による復元処理の全体の流れを説明する。図22は、復元部115による復元処理の全体の流れを示すフローチャートである。図23は、図22のステップ2215の多対1変換規則における出力先を決定する際にその出力先を参照すべき最も近い入力要素の決定処理のフローチャートである。
【0096】
図22に示す復元処理はステップ2200から開始し、復元部115は、変換規則Fを新規作成しこれを空で初期化する。続いて復元部115は、ループ2250により、ステップ2205からステップ2220までの一連の処理を、処理対象である変換規則のグラフィカル表現Dに含まれる各入力要素のノードxに対し入力ソート順で再帰的に行う。ステップ2205においてまず復元部115は、変換規則Fに、手続きt「xに設定されたマッチのパターンと一致するか?」を追加する。続いて復元部115は、ノードxに対し出力ソート順に並んだ出力要素のリストを求め、これをYに設定する(ステップ2210)。
【0097】
続いて復元部115は、ループ2260により、ステップ2215からステップ2220までの一連の処理を、処理対象であるリストYの各要素y1に対してリスト順に繰り返し行う。ステップ2215において復元部115は、処理対象の要素y1を基に、その出力対象を参照すべき入力要素を決定しこれをx0に設定する。ステップ2215の処理の詳細は図23を参照して後述する。続いて復元部115は、変換規則Fにtのtrueのケースのステップとして「x0が最後に生成したエレメントの子エレメント(または属性名)としてy1に設定された子エレメント(または属性名)を出力」を追加する。続いて、グラフィカル表現Dに含まれる入力ソート順で最後の入力要素のノードxについて、ループ2260が終了すると、処理はステップ2225へ進み、復元部115は、テキスト形式の変換規則Fを出力する。そして処理は終了する。なお出力された変換規則Fは図示しない記憶装置に格納される。
【0098】
図23に示す入力要素決定処理はステップ2300から開始し、復元部115は、出力要素の現在の処理対象の要素y1の親である出力対象を求めこれをy0に設定する。続いて復元部115は、出力要素y0を始点とする入力要素と出力要素間の全てのリンクのリストを求めこれをLpに設定する(ステップ2305)。続いて復元部115は、Lpにリストされる各リンクの始点となる入力要素を入力ソート順に並べたリストを求めこれをXpに設定する(ステップ2310)。続いて復元部115は、リストXpにおいて、入力要素の現在の処理対象xを含め、該処理対象xよりも先に位置する最初の入力要素を決定しこれをx0に設定する(ステップ2315)。最後に復元部115は、x0をその出力先を参照すべき入力要素として返す(ステップ2320)。そして処理は終了する。
【0099】
次に図24を参照して、抽出部120及び変換部125による変換の全体の流れを説明する。図24に示す処理は、ステップ2400から開始し、抽出部120は、変換を希望する文書の物理構造をダンプして該物理構造を有する変換元の構造文書を求め、その要素を取得する。続いて変換部125は、変換元の構造文書から1の要素を深さ優先順に取り出す(ステップ2405)。続いて変換部125は、処理対象の要素が存在するか否か、即ち、1の要素を取得できたか否かを判定し(ステップ2410)、取得できた場合(ステップ2410:YES)、記憶装置から変換規則Fを読み出し、処理対象の要素に適用する(ステップ2415)。その後処理はステップ2405に戻る。一方ステップ2410において処理対象の要素が存在しなかった場合、処理は終了する。
【0100】
図25は、本発明の実施形態による変換規則生成支援装置100としてのコンピュータ50のハードウェア構成の一例を示した図である。コンピュータ50は、バス2に接続されたメインCPU(中央処理装置)1とメインメモリ4を含んでいる。ハードディスク装置13、30、及びCD−ROM装置26、29、フレキシブル・ディスク装置20、MO装置28、DVD装置31のようなリムーバブル・ストレージ(記録メディアを交換可能な外部記憶システム)がフレキシブル・ディスクコントローラ19、IDEコントローラ25、SCSIコントローラ27などを経由してバス2へ接続されている。
【0101】
フレキシブル・ディスク、MO、CD−ROM、DVD−ROMのような記憶メディアが、リムーバブル・ストレージに挿入される。これらの記憶メディアやハードディスク装置13、30、ROM14には、オペレーティング・システムと協働してCPU1に命令を与え、本発明を実施するためのコンピュータ・プログラムのコードを記録することができる。即ち、上記説明した数々の記憶装置には、コンピュータ50にインストールされ、コンピュータ50を本発明の本発明の実施形態による変換規則生成支援装置100として機能させる変換規則生成支援プログラムや、変換希望の文書、変換元の構造文書、変換先の構造文書、生成した縮退前後の変換規則のグラフィカル表現といったデータを記録することができる。
【0102】
上記変換規則の生成を支援するためるためのプログラムは、ユーザ・インタフェースモジュールと、ルール補完モジュールと、復元モジュールと、抽出モジュールと、変換モジュールとを含む。これらモジュールは、CPU1に働きかけて、コンピュータ50を、ユーザ・インタフェース105と、ルール補完部110と、復元部115と、抽出部120と、変換部125としてそれぞれ機能させる。コンピュータ・プログラムは圧縮し、また複数に分割して複数の媒体に記録することもできる。
【0103】
コンピュータ50は、キーボード/マウス・コントローラ5を経由して、キーボード6やマウス7のような入力デバイスからの入力を受ける。コンピュータ50は、オーディオコントローラ21を経由して、マイク24からの入力を受け、またスピーカー23から音声を出力する。コンピュータ50は、視覚データをユーザに提示するための表示装置11に、グラフィックスコントローラ10を経由して接続される。コンピュータ50は、ネットワーク・アダプタ18(イーサネット(登録商標)・カードやトークンリング・カード)等を介してネットワークに接続し、他のコンピュータ等と通信を行うことが可能である。
【0104】
以上の説明により、コンピュータ50は、通常のパーソナルコンピュータ、ワークステーション、メインフレームなどの情報処理装置、又は、これらの組み合わせによって実現されることが容易に理解されるであろう。なお、上記説明した構成要素は例示であり、そのすべての構成要素が本発明の必須構成要素となるわけではない。
【0105】
以上、実施形態を用いて本発明の説明をしたが、本発明の技術範囲は上記実施形態に記載の範囲には限定されない。上記の実施形態に、種々の変更又は改良を加えることが可能であることが当業者に明らかである。従って、そのような変更又は改良を加えた形態も当然に本発明の技術的範囲に含まれる。
【0106】
なお、特許請求の範囲、明細書、及び図面中において示した装置、システム、プログラム、及び方法における動作、手順、ステップ、及び段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り任意の順序で実現しうることに留意すべきである。また、前の処理の出力を後の処理で用いる場合でも、前の処理と後の処理の間に他の処理が入ることは可能である場合があること、又は間に他の処理が入るように記載されていても前の処理を後の処理の直前に行うよう変更することも可能である場合があることも留意されたい。特許請求の範囲、明細書、及び図面中の動作フローに関して、便宜上「まず、」、「次に、」、「続いて、」等を用いて説明したとしても、この順で実施することが必須であることを必ずしも意味するとは限らない。

【特許請求の範囲】
【請求項1】
データの文書内の物理的な配置に基づく階層構造を有する変換元構造文書をデータ内容の論理構造に基づく階層構造を有する変換先構造文書へ変換する変換規則の作成を支援する変換規則生成支援装置であって、
前記変換規則のグラフィカルな表現を生成し、表示し、及び編集するためのユーザ・インタフェースであって、前記変換元構造文書の要素である入力要素を示す1のノードを前記変換先構造文書の要素である出力要素を各々示す複数のノードに対応付ける複数のリンクによって示される1対多変換規則、及び前記変換元構造文書の入力要素を各々示す複数のノードを前記変換先構造文書の出力要素を示す1のノードに対応付ける複数のリンクによって示される多対1変換規則の少なくとも一方の縮退した規則の生成を許容する前記ユーザ・インタフェースと、
前記グラフィカルな表現からテキスト形式の変換規則を求める復元部であって、前記1対多変換規則に対しては、前記1のノードが示す入力要素に関して前記複数のノードが示す複数の出力要素の各々を出力する出力順序を、前記変換先構造文書の前記階層構造における深さ優先順である出力ソート順に従い決定し、及び、前記多対1変換規則に対しては、前記複数のノードが示す複数の入力要素の各入力要素に関して前記1のノードが示す出力要素を出力する出力先を、該出力要素の親である出力要素に対応付けられた1以上の入力要素を前記変換元構造文書の階層構造における深さ優先順である入力ソート順に並べた場合に前記各入力要素の直前に位置する入力要素の出力先を参照して決定することにより、前記縮退したルールの縮退を解く前記復元部と、
を含む変換規則生成支援装置。
【請求項2】
前記変換規則のグラフィカルな表現は、入力要素を示すノードの集合、該集合における異なる2ノード間の階層関係を示すリンクの集合、出力要素を示すノードの集合、該集合における異なる2ノード間の階層関係を示すリンクの集合、及び前記入力要素を示すノードと前記出力要素を示すノードとの対応関係を示すリンクの集合を含み、
各ノード及び各リンクには、変換対象の構造文書の各要素に対して行うマッチングで使用するパターン及び出力に関するパラメータのうちの少なくとも1つが関連付けられており、
前記復元部は、前記入力要素を示すノードの集合から前記入力ソート順で取り出した処理対象の各ノードに対し、該ノードに関連付けられたパターンを用いたマッチングが前記変換対象の構造文書の要素に対して成功することを条件に、前記処理対象のノードにリンクにより対応付けられたノードが示す出力要素を、該リンク及び該出力要素を示すノードにそれぞれ関連付けられた出力に関するパラメータに基づいて出力すること指示するテキスト形式の変換規則を生成する、請求項1に記載の変換規則生成支援装置。
【請求項3】
前記変換規則のグラフィカルな表現は、入力要素を示すノードであって、入力要素と出力要素とを対応付けるリンクによって示される変換処理の適用を試みる前記変換対象の構造文書内の範囲を指定する前記ノードを、指定ノードとして含む、請求項2に記載の変換規則生成支援装置。
【請求項4】
前記指定ノードは、該指定ノードの全ての子のノードを始点とするリンクによって示される一連の変換処理の適用を試みる範囲を、前記指定ノードの親のノードに関連付けられたパターンにマッチする前記変換対象の構造文書の要素の全ての子として指定する指定ノードである、請求項3に記載の変換規則生成支援装置。
【請求項5】
前記指定ノードは、該指定ノードの親のノードを始点とする複数のリンクのうち最後に処理されるリンクが示す変換処理の適用を試みる範囲を、前記指定ノードの前記親のノードに関連付けられたパターンにマッチする前記変換対象の構造文書の要素の後に位置する全ての兄弟として指定する指定ノードである、請求項3に記載の変換規則生成支援装置。
【請求項6】
前記指定ノードは、該指定ノードの全ての子ノードを始点とするリンクによって示される変換処理の適用を試みる範囲を、前記指定ノードに関連付けられた適用範囲の開始位置のマッチング用のパターンにマッチする前記変換対象の構造文書の要素から、前記指定ノードに関連付けられた適用範囲の終了位置のマッチング用のパターンにマッチする前記変換対象の構造文書の要素までとして指定する指定ノードである、請求項3に記載の変換規則生成支援装置。
【請求項7】
前記入力要素を示すノードの集合を前記入力ソート順に並べるリストを、(1)入力要素を示すノードxSから入力要素を示すノードxEへのリンクが存在する場合、ノードxSはノードxEより先とし、及び(2)入力要素を示すノードxSから複数の入力要素を示すノードxEi(iは1から始まる正の整数)へのリンクが存在する場合、ノードxEiの左上端の座標をソートキーとして複数のノードxEiの順序を決定することにより生成する、請求項2に記載の変換規則生成支援装置。
【請求項8】
前記出力要素を示すノードの集合を前記出力ソート順に並べるリストを、(1)出力要素を示すノードySから出力要素を示すノードyEへのリンクが存在する場合、ノードySはノードyEより先とし、及び(2)出力要素を示すノードySから複数の出力要素を示すノードyEi(iは1から始まる正の整数)へのリンクが存在する場合、ノードyEiの左上端の座標をソートキーとして複数のノードyEiの順序を決定することにより生成する、請求項2に記載の変換規則生成支援装置。
【請求項9】
前記1対多変換規則によって、マッチング・パターンを関連付けられた入力要素を示す1のノードが、それぞれ出力に関するパラメータを関連付けられた複数のリンクにより各々出力要素を示す複数のノードに対応付けられ、
前記復元部は、前記1対多変換規則における前記入力要素を示す1のノードに対し、該ノードに関連付けられた前記マッチング・パターンによるマッチングが前記変換対象の構造文書の要素に対して成功することを条件に、前記1対多変換規則における前記出力要素を示す各ノードを前記出力ソート順で処理対象のノードとして、前記変換対象の構造文書の要素のテキストを、前記処理対象のノードと前記入力要素を示す1のノードとを対応付けるリンクに関連付けられた前記出力に関するパラメータに従って分割又は加工をして、前記処理対象のノードが示す出力要素として出力すること指示するテキスト形式の変換規則を生成する、請求項2に記載の変換規則生成支援装置。
【請求項10】
前記多対1変換規則によって、異なる形式又は異なる位置に記載された同種の内容を表す入力要素を各々示す複数のノードと、出力要素を示す1のノードとが対応付けられ、
前記復元部は、前記多対1変換規則における前記入力要素を示す1の処理対象のノードに対し、該処理対象のノードに関連付けられたマッチング・パターンによるマッチングが前記変換対象の構造文書の要素に対して成功することを条件に、前記多対1変換規則における前記出力要素を示すノードの親のノードが示す出力要素に対応付けられた入力要素のうち、前記入力ソート順において前記処理対象のノードの直前に位置する入力要素に対して最後に出力した要素の子として前記多対1変換規則における前記出力要素を示すノードに関連付けられた要素名の要素を出力すること又は前記最後に出力した要素の属性値として前記変換対象の構造文書の要素のテキストを出力すること指示するテキスト形式の変換規則を生成する、請求項2に記載の変換規則生成支援装置。
【請求項11】
前記文書内の部分のユーザ選択に応答して、選択部分に対する前記変換規則のグラフィカルな表現を生成するルール補完部を更に含み、
前記ルール補完部は、選択部分がテーブルの一部または全部である場合に、前記選択部分の先頭行に対して該行に対応する要素名を関連付けた親の出力要素を示すノード、及び該ノードの子として、前記先頭行の左端セルより右側の各セルに対して左から順に該セルに対応する属性名を関連付けた出力要素を示すノードを生成し、前記選択部分の先頭行左端のセルに対して、その位置座標を設定した位置座標のマッチング・パターンを関連付けた親の入力要素を示すノード、かつ該ノードを前記親の出力要素を示すノードに対応付けるリンクを生成し、前記選択部分の先頭行左端セルより右側の各セルに対して左から順に、最初の2セルのみ前記親の入力要素のノードの子として、残りのセルについては1つ前のセルに対応する入力要素のノードの子として、右を設定した走査方向のマッチング・パターンを関連付けた入力要素のノードを生成し、及び子の入力要素を示すノードの各々を対応する属性名を関連付けられた子の出力要素を示すノードに対応付けるリンクを生成する、請求項2に記載の変換規則生成支援装置。
【請求項12】
前記文書内の部分のユーザ選択に応答して、選択部分に対する前記変換規則のグラフィカルな表現を生成するルール補完部を更に含み、
前記ルール補完部は、選択部分が複数のセクション行である場合に、前記選択部分の各セクション行に対して該行に対応する要素名を関連付けた親の出力要素を示すノードを生成し、前記選択部分の前記各セクション行に対して、該行の文字列を設定したリスト要素のテキストのマッチング・パターンを関連付けた親の入力要素を示すノードを生成し、前記親の出力要素を示す各ノードを対応する前記親の入力要素を示す各ノードに対応付けるリンクを生成し、及び前記親の入力要素を示す各ノードの直後に前記指定ノードを生成し、
前記指定ノードは、前記各セクション行の文字列を設定した前記適用範囲の開始位置のマッチング・パターンと、次のセクション行の文字列を設定した前記適用範囲の終了位置のマッチング・パターンを関連付けられている、請求項6に記載の変換規則生成支援装置。
【請求項13】
前記変換規則のグラフィカルな表現を生成するルール補完部を更に含み、前記ルール補完部は、前記出力要素のノードの集合を前記出力ソート順に走査し、関連付けられた要素名又は属性名が同一である2ノードを検出することに応答して、一方のノードと該ノードの全子のノードにそれぞれ対応づけられた入力要素を示す複数のノードから、他方のノードと該ノードの全子ノードへのリンクが存在するか否か、かつ、前記他方のノードとその全子ノードにそれぞれ対応づけられた入力要素を示す複数のノードから、前記一方のノードと該ノードの全子ノードへのリンクが存在するか否かを判定し、どちらのリンクも1つも存在しないとの判定結果を条件に、前記2ノードを統合する、請求項2に記載の変換規則生成支援装置。
【請求項14】
変換を希望する文書の物理構造をダンプした階層構造を有する構造文書から要素を抽出する抽出部と、
ダンプした前記階層構造の各要素を深さ優先順に処理対象として、該処理対象に前記復元部により復元された前記テキスト形式の変換規則を適用することにより、前記変換先構造文書を取得する変換部と、を更に有する請求項2に記載の変換規則生成支援装置。
【請求項15】
コンピュータ・システムが実行する、データの文書内の物理的な配置に基づく階層構造を有する変換元構造文書をデータ内容の論理構造に基づく階層構造を有する変換先構造文書へ変換する変換規則の作成を支援する変換規則生成支援方法であって、
コンピュータ・システムが、変換規則のグラフィカルな表現であって、前記変換元構造文書の要素である入力要素を示す1のノードを前記変換先構造文書の要素である出力要素を各々示す複数のノードに対応付ける、1対多変換規則の縮退した変換規則を示す複数のリンクと、前記変換元構造文書の入力要素を各々示す複数のノードを前記変換先構造文書の出力要素を示す1のノードに対応付ける、多対1変換規則の縮退した変換規則を示す複数のリンクの少なくとも一方を含む前記変換規則のグラフィカル表現を、記憶装置から読み出すステップと、
コンピュータ・システムが、読み出した前記変換規則のグラフィカル表現が前記1対多変換規則であることに応答して、前記1のノードが示す入力要素に関して前記複数のノードが示す複数の出力要素の各々を出力する出力順序を、前記変換先構造文書の前記階層構造における深さ優先順である出力ソート順に従い決定し、及び、読み出した前記縮退した変換規則のグラフィカル表現が前記多対1変換規則であることに応答して、前記複数のノードが示す複数の入力要素の各入力要素に関して前記1のノードが示す出力要素を出力する出力先を、該出力要素の親である出力要素に対応付けられた1以上の入力要素を前記変換元構造文書の階層構造における深さ優先順である入力ソート順に並べた場合に前記各入力要素の直前に位置する入力要素の出力先を参照して決定するステップと、
を含む変換規則生成支援方法。
【請求項16】
コンピュータ・システム上に、データの文書内の物理的な配置に基づく階層構造を有する変換元構造文書をデータ内容の論理構造に基づく階層構造を有する変換先構造文書へ変換する変換規則の作成を支援する変換規則生成支援装置を実現するためのコンピュータ実行可能なプログラムであって、前記コンピュータ・システムを、
前記変換規則のグラフィカルな表現を生成し、表示し、及び編集するためのユーザ・インタフェースであって、前記変換元構造文書の要素である入力要素を示す1のノードを前記変換先構造文書の要素である出力要素を各々示す複数のノードに対応付ける複数のリンクによって示される1対多変換規則、及び前記変換元構造文書の入力要素を各々示す複数のノードを前記変換先構造文書の出力要素を示す1のノードに対応付ける複数のリンクによって示される多対1変換規則の少なくとも一方の縮退したルールの生成を許容する前記ユーザ・インタフェースと、
前記グラフィカルな表現からテキスト形式の変換規則を求める復元部であって、前記1対多変換規則に対しては、前記1のノードが示す入力要素に関して前記複数のノードが示す複数の出力要素の各々を出力する出力順序を、前記変換先構造文書の前記階層構造における深さ優先順である出力ソート順に従い決定し、及び、前記多対1変換規則に対しては、前記複数のノードが示す複数の入力要素の各入力要素に関して前記1のノードが示す出力要素を出力する出力先を、該出力要素の親である出力要素に対応付けられた1以上の入力要素を前記変換元構造文書の階層構造における深さ優先順である入力ソート順に並べた場合に前記各入力要素の直前に位置する入力要素の出力先を参照して決定することにより、前記縮退した規則の縮退を解く前記復元部と、
として機能させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate


【公開番号】特開2013−25631(P2013−25631A)
【公開日】平成25年2月4日(2013.2.4)
【国際特許分類】
【出願番号】特願2011−161047(P2011−161047)
【出願日】平成23年7月22日(2011.7.22)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【Fターム(参考)】