(57)【要約】 【課題】フローデータを容易に作成する。【解決手段】二項関係データ記憶部１０のデータ集合に含まれる第１の二項関係データの第１項データをフローデータの始点候補のデータに決定し、この始点候補に、第１の二項関係データの第２項データを第１の子ノードとして関連付け、第１の二項関係データの種類をアークに設定し、位置データ生成記憶部２０の位置データを参照して、第１の二項関係データの第２項データを部分木のルートとして、親の二項関係データの第２項データと同一のデータを第１項データとして持つ子の二項関係データをデータ集合から逐次探索し、子の二項関係データが第２項データを持つときには、その第２項データを探索子ノードとして逐次関連付けてアークに子の二項関係データの種類を付加する第１の部分木生成部３０と、第１の子ノードを部分木のルートとするフローデータを生成する部分木統合部４０を備える。【選択図】      図１
2004246879.tif 000002
【特許請求の範囲】
【請求項１】
第１項目及び第２項目のデータとこの第１項目及び第２項目のデータ間の二項関係の種類を示すデータとを有する二項関係データの集合を記憶した第１の記憶手段の中で第１項目若しくは第２項目のデータとして記憶された値ごとに、この値の前記第１の記憶手段における位置を位置データとして第２の記憶手段に記憶し、
フローデータの始点となるデータを第１項目のデータとする第１の二項関係データを前記第１の記憶手段の二項関係データの集合から抽出し、この始点を親ノードとしてこの第１の二項関係データの第２項目のデータを子ノードとして関連付け、そのアークに前記第１の二項関係データの二項関係の種類を付加し、
前記第２の記憶手段の位置データを参照して、前記第１の記憶手段の二項関係データの集合から、第２の二項関係データの第２項目のデータを第１項目のデータとして持つ第３の二項関係データを探索し、その結果抽出された第３の二項関係データの第１項目を親ノードとしてこの第３の二項関係データの第２項目のデータを子ノードとして関連付け、そのアークに前記抽出された二項関係データの二項関係の種類を付加するプロセスを繰り返すことで、前記第１の二項関係データの第２項目のデータをルートとする部分木を生成することを特徴とするフローデータ生成方法。
【請求項２】
前記部分木の生成プロセスにおいて、前記第２の二項関係データの第２項目のデータを第１項目として持つ前記第３の二項関係データが探索されない場合、または、前記第３の二項関係データが第２項目のデータを持たない場合は、これに基づく二項関係データの探索を中止することを特徴とする請求項１記載のフローデータ生成方法。
【請求項３】
前記二項関係データの第１項目若しくは第２項目のデータとして記憶された値の各々を行及び列にそれぞれ配置し、前記二項関係データの第１項目のデータを行成分に、第２項目のデータを列成分とした行列要素を０以外の値とし、それ以外の行列要素を０とする行列を生成し、
前記行列の列成分の和が０となる行成分に対応するデータを始点候補に選定し、
前記始点候補が１つの場合には該始点候補を前記始点に選定し、
前記始点候補が複数ある場合には、前記始点候補のうちのいずれか１つを前記始点に選定し、
前記始点候補が１つも無い場合には所定の手続により前記始点を選定する
ことを特徴とする請求項１記載のフローデータ生成方法。
【請求項４】
第１項目及び第２項目のデータとこの第１項目及び第２項目のデータ間の二項関係の種類を示すデータとを有する二項関係データの集合を記憶した第１の記憶手段の中で第１項目若しくは第２項目のデータとして記憶された値ごとに、この値の前記第１の記憶手段における位置を位置データとして第２の記憶手段に記憶し、
フローデータの始点候補となる複数のデータのそれぞれを第１項目のデータとする第１の二項関係データを前記第１の記憶手段の二項関係データの集合から抽出し、夫々の始点候補を親ノードとしてこの第１の二項関係データの第２項目のデータを子ノードとして関連付け、そのアークに前記第１の二項関係データの二項関係の種類を付加し、
前記第２の記憶手段の位置データを参照して、前記第１の記憶手段の二項関係データの集合から、第２の二項関係データの第２項目のデータを第１項目のデータとして持つ第３の二項関係データを探索し、その結果抽出された第３の二項関係データの第１項目を親ノードとしてこの第３の二項関係データの第２項目のデータを子ノードとして関連付け、そのアークに前記抽出された二項関係データの二項関係の種類を付加するプロセスを繰り返すことで、前記第１の二項関係の第２項目のデータをルートとする部分木を生成して、複数の始点候補夫々をルートとする複数のデータ木を生成し、
前記複数の始点候補から一つの始点を選定し、この始点に対し前記選定されなかった始点候補を関連づけ、前記始点と前記選定されなかった始点候補との間のアークに前記始点と前記選定されなかった始点候補との間の二項関係の種類を付加し、前記複数のデータ木を１つのデータ木として統合することを特徴とするフローデータ生成方法。
【請求項５】
前記部分木の生成は、前記第２の記憶手段の位置データを参照して、前記第１の記憶手段の二項関係データの集合から、第２の二項関係データの第２項目のデータを第１項目のデータとして持つ第３の二項関係データを過去に探索されたか否かをチェックしながら逐次探索し、該探索された第３の二項関係データが、過去に未探索の第２項目のデータを持つときには、前記第３の二項関係データの第１項目のデータを親ノードとして前記第３の二項関係データの第２項目のデータを逐次子ノードとして関連付け、そのアークに前記抽出された第３の二項関係データの前記二項関係の種類を付加し、該子ノードの以下の探索を引き続き行ない、該探索された二項関係データが、過去に探索済の第２項目のデータを持つときには、前記第３の二項関係データの第１項目のデータを親ノードとして前記第３の二項関係データの第２項目のデータを逐次子ノードとして関連付け、そのアークに前記抽出された第３の二項関係データの前記二項関係の種類を付加し、該子ノードの以下の探索を中止し、該探索により二項関係データが得られない場合、または、該探索された二項関係データが、第２項目のデータを持たないときには、該第２項目のデータ以下の探索を中止する処理であることを特徴とする請求項１または４記載のフローデータ生成方法。
【請求項６】
前記第１の記憶手段に記憶される二項関係データの第１項目と第２項目のデータは、階層的構造を持ち、
前記部分木の生成は、前記第２の記憶手段の位置データを参照して、前記第１の記憶手段の二項関係データの集合から、第２の二項関係データの第２項目のデータと同一あるいは該第２項目のデータに属するデータを第１項目のデータとして持つ第３の二項関係データを探索する処理であることを特徴とする請求項１または４記載のフローデータ生成方法。
【請求項７】
前記第１の記憶手段に記憶される二項関係データの第１項目と第２項目のデータは、階層的構造を持ち、
前記部分木の生成は、前記第２の記憶手段の位置データを参照して、前記第１の記憶手段の二項関係データの集合から、第２の二項関係データの第２項目のデータと同一あるいは該第２項目のデータに属するデータを第１項目のデータとして持つ第３の二項関係データを過去に探索されたか否かをチェックしながら探索する処理であることを特徴とする請求項１または４記載のフローデータ生成方法。
【請求項８】
生成された前記フローデータの複数個存在するノードについては、各１個のノードを選択して該選択されたノードへのアークに付け替えるとともに、該選択されずにノードを付け替えられたノードを削除するグラフ生成処理をさらに有することを特徴とする請求項５記載のフローデータ生成方法。
【請求項９】
前記第１の二項関係データの第２項目に対応する子ノードに前記部分木を接続し、前記第１の二項関係データの第１項目に対応する親ノードをルートとするフローチャートを生成し、
生成された前記フローチャートの複数個存在するノードについて、各１個のノードを選択して該選択されたノードへのアークに付け替えるとともに、該選択されずにノードを付け替えられたノードを削除したワークフローを生成する
ことを特徴とする請求項１記載のフローデータ生成方法。
【請求項１０】
第１項目及び第２項目のデータとこの第１項目及び第２項目のデータ間の二項関係の種類を示すデータとを有する二項関係データの集合を記憶する第１の記憶手段と、
この第１の記憶手段の中で第１項目若しくは第２項目のデータとして記憶された値ごとに、この値の前記第１の記憶手段における位置を位置データとして記憶する第２の記憶手段と、
フローデータの始点となるデータを第１項目のデータとする第１の二項関係データを前記第１の記憶手段の二項関係データの集合から抽出し、この始点を親ノードとしてこの第１の二項関係データの第２項目のデータを子ノードとして関連付け、そのアークに前記第１の二項関係データの二項関係の種類を付加し、前記第２の記憶手段の位置データを参照して、前記第１の記憶手段の二項関係データの集合から、第２の二項関係データの第２項目のデータを第１項目のデータとして持つ第３の二項関係データを探索し、その結果抽出された第３の二項関係データの第１項目を親ノードとしてこの第３の二項関係データの第２項目のデータを子ノードとして関連付け、そのアークに前記抽出された二項関係データの二項関係の種類を付加するプロセスを繰り返すことで、前記第１の二項関係データの第２項目のデータをルートとする部分木を生成する部分木生成手段と
を具備してなることを特徴とするフローデータ生成装置。
【請求項１１】
前記部分木生成手段は、前記第２の二項関係データの第２項目のデータを第１項目として持つ前記第３の二項関係データが探索されない場合、または、前記第３の二項関係データが第２項目のデータを持たない場合は、これに基づく二項関係データの探索を中止することを特徴とする請求項１０記載のフローデータ生成装置。
【請求項１２】
前記部分木生成手段は、
前記二項関係データの第１項目若しくは第２項目のデータとして記憶された値の各々を行及び列にそれぞれ配置し、前記二項関係データの第１項目のデータを行成分に、第２項目のデータを列成分とした行列要素を０以外の値とし、それ以外の行列要素を０とする行列を生成し、
前記行列の列成分の和が０となる行成分に対応するデータを始点候補に選定し、
前記始点候補が１つの場合には該始点候補を前記始点に選定し、
前記始点候補が複数ある場合には、前記始点候補のうちのいずれか１つを前記始点に選定し、
前記始点候補が１つも無い場合には所定の手続により前記始点を選定する
ことを特徴とする請求項１０に記載のフローデータ生成装置。
【請求項１３】
第１項目及び第２項目のデータとこの第１項目及び第２項目のデータ間の二項関係の種類を示すデータとを有する二項関係データの集合を記憶する第１の記憶手段と、
この第１の記憶手段の中で第１項目若しくは第２項目のデータとして記憶された値ごとに、この値の前記第１の記憶手段における位置を位置データとして記憶する第２の記憶手段と、
フローデータの始点候補となる複数のデータのそれぞれを第１項目のデータとする第１の二項関係データを前記第１の記憶手段の二項関係データの集合から抽出し、夫々の始点候補を親ノードとしてこの第１の二項関係データの第２項目のデータを子ノードとして関連付け、そのアークに前記第１の二項関係データの二項関係の種類を付加し、前記第２の記憶手段の位置データを参照して、前記第１の記憶手段の二項関係データの集合から、第２の二項関係データの第２項目のデータを第１項目のデータとして持つ第３の二項関係データを探索し、その結果抽出された第３の二項関係データの第１項目を親ノードとしてこの第３の二項関係データの第２項目のデータを子ノードとして関連付け、そのアークに前記抽出された二項関係データの二項関係の種類を付加するプロセスを繰り返すことで、前記第１の二項関係の第２項目のデータをルートとする部分木を生成して、複数の始点候補夫々をルートとする複数のデータ木を生成する部分木生成手段と、
前記複数の始点候補から一つの始点を選定し、この始点に対し前記選定されなかった始点候補を関連づけ、前記始点と前記選定されなかった始点候補との間のアークに前記始点と前記選定されなかった始点候補との間の二項関係の種類を付加し、前記複数のデータ木を１つのデータ木として統合する手段と
を具備してなることを特徴とするフローデータ生成装置。
【請求項１４】
前記部分木生成手段は、前記第２の記憶手段の位置データを参照して、前記第１の記憶手段の二項関係データの集合から、第２の二項関係データの第２項目のデータを第１項目のデータとして持つ第３の二項関係データを過去に探索されたか否かをチェックしながら逐次探索し、該探索された第３の二項関係データが、過去に未探索の第２項目のデータを持つときには、前記第３の二項関係データの第１項目のデータを親ノードとして前記第３の二項関係データの第２項目のデータを逐次子ノードとして関連付け、そのアークに前記抽出された第３の二項関係データの前記二項関係の種類を付加し、該子ノードの以下の探索を引き続き行ない、該探索された二項関係データが、過去に探索済の第２項目のデータを持つときには、前記第３の二項関係データの第１項目のデータを親ノードとして前記第３の二項関係データの第２項目のデータを逐次子ノードとして関連付け、そのアークに前記抽出された第３の二項関係データの前記二項関係の種類を付加し、該子ノードの以下の探索を中止し、該探索により二項関係データが得られない場合、または、該探索された二項関係データが、第２項目のデータを持たないときには、該第２項目のデータ以下の探索を中止する処理であることを特徴とする請求項１０または１３に記載のフローデータ生成装置。
【請求項１５】
前記第１の記憶手段に記憶される二項関係データの第１項目と第２項目のデータは、階層的構造を持ち、
前記部分木生成手段は、前記第１の記憶手段に記憶される二項関係データの集合から、前記第２の記憶手段に記憶される位置データを参照して、二項関係データの第２項目のデータと同一あるいは該第２項目のデータに属するデータを第１項目として持つ二項関係データを、前記所定の二項関係データの第２項目のデータを前記部分木のルートとして逐次探索することを特徴とする請求項１０または１３記載のフローデータ生成装置。
【請求項１６】
前記第１の記憶手段に記憶される二項関係データの第１項目と第２項目のデータは、階層的構造を持ち、
前記部分木生成手段は、前記第１の記憶手段に記憶される二項関係データの集合から、前記第２の記憶手段に記憶される位置データを参照して、二項関係データの第２項目のデータと同一あるいは該第２項目のデータに属する第１項目のデータを持つ二項関係データを、所定の二項関係データの第２項目のデータを前記部分木のルートとして、過去に探索されたか否かをチェックしながら逐次探索することを特徴とする請求項１０または１３記載のフローデータ生成装置。
【請求項１７】
生成された前記フローデータの複数個存在するノードについては、各１個のノードを選択して該選択されたノードへのアークに付け替えるとともに、該選択されずにノードを付け替えられたノードを削除するグラフ生成手段をさらに備えることを特徴とする請求項１４記載のフローデータ生成装置。
【請求項１８】
前記第１の二項関係データの第２項目に対応する子ノードに前記部分木を接続し、前記第１の二項関係データの第１項目に対応する親ノードをルートとするフローチャートを生成する手段と、
生成された前記フローチャートの複数個存在するノードについて、各１個のノードを選択して該選択されたノードへのアークに付け替えるとともに、該選択されずにノードを付け替えられたノードを削除したワークフローを生成する手段と
をさらに備えることを特徴とする請求項１０記載のフローデータ生成装置。
【請求項１９】
プロセッサと、
前記プロセッサがアクセス可能な記憶装置と、
前記記憶装置に格納されたプログラムとを具備してなり、
前記プログラムは、前記プロセッサを、
第１項目及び第２項目のデータとこの第１項目及び第２項目のデータ間の二項関係の種類を示すデータとを有する二項関係データの集合を記憶した第１の記憶手段の中で第１項目若しくは第２項目のデータとして記憶された値ごとに、この値の前記第１の記憶手段における位置を位置データとして第２の記憶手段に記憶する第１の手段と、
フローデータの始点となるデータを第１項目のデータとする第１の二項関係データを前記第１の記憶手段の二項関係データの集合から抽出し、この始点を親ノードとしてこの第１の二項関係データの第２項目のデータを子ノードとして関連付け、そのアークに前記第１の二項関係データの二項関係の種類を付加する第２の手段と、
前記第２の記憶手段の位置データを参照して、前記第１の記憶手段の二項関係データの集合から、第２の二項関係データの第２項目のデータを第１項目のデータとして持つ第３の二項関係データを探索し、その結果抽出された第３の二項関係データの第１項目を親ノードとしてこの第３の二項関係データの第２項目のデータを子ノードとして関連付け、そのアークに前記抽出された二項関係データの二項関係の種類を付加するプロセスを繰り返すことで、前記第１の二項関係データの第２項目のデータをルートとする部分木を生成する第３の手段
として機能させることを特徴とするフローデータ生成装置。
【請求項２０】
プロセッサと、
前記プロセッサがアクセス可能な記憶装置と、
前記記憶装置に格納されたプログラムとを具備してなり、
前記プログラムは、前記プロセッサを、
第１項目及び第２項目のデータとこの第１項目及び第２項目のデータ間の二項関係の種類を示すデータとを有する二項関係データの集合を記憶した第１の記憶手段の中で第１項目若しくは第２項目のデータとして記憶された値ごとに、この値の前記第１の記憶手段における位置を位置データとして第２の記憶手段に記憶する第１の手段と、
フローデータの始点候補となる複数のデータのそれぞれを第１項目のデータとする第１の二項関係データを前記第１の記憶手段の二項関係データの集合から抽出し、夫々の始点候補を親ノードとしてこの第１の二項関係データの第２項目のデータを子ノードとして関連付け、そのアークに前記第１の二項関係データの二項関係の種類を付加する第２の手段と、
前記第２の記憶手段の位置データを参照して、前記第１の記憶手段の二項関係データの集合から、第２の二項関係データの第２項目のデータを第１項目のデータとして持つ第３の二項関係データを探索し、その結果抽出された第３の二項関係データの第１項目を親ノードとしてこの第３の二項関係データの第２項目のデータを子ノードとして関連付け、そのアークに前記抽出された二項関係データの二項関係の種類を付加するプロセスを繰り返すことで、前記第１の二項関係の第２項目のデータをルートとする部分木を生成して、複数の始点候補夫々をルートとする複数のデータ木を生成する第３の手段と、
前記複数の始点候補から一つの始点を選定し、この始点に対し前記選定されなかった始点候補を関連づけ、前記始点と前記選定されなかった始点候補との間のアークに前記始点と前記選定されなかった始点候補との間の二項関係の種類を付加し、前記複数のデータ木を１つのデータ木として統合する第４の手段と
として機能させることを特徴とするフローデータ生成装置。
【請求項２１】
コンピュータを、
第１項目及び第２項目のデータとこの第１項目及び第２項目のデータ間の二項関係の種類を示すデータとを有する二項関係データの集合を記憶した第１の記憶手段の中で第１項目若しくは第２項目のデータとして記憶された値ごとに、この値の前記第１の記憶手段における位置を位置データとして第２の記憶手段に記憶する第１の手段と、
フローデータの始点となるデータを第１項目のデータとする第１の二項関係データを前記第１の記憶手段の二項関係データの集合から抽出し、この始点を親ノードとしてこの第１の二項関係データの第２項目のデータを子ノードとして関連付け、そのアークに前記第１の二項関係データの二項関係の種類を付加する第２の手段と、
前記第２の記憶手段の位置データを参照して、前記第１の記憶手段の二項関係データの集合から、第２の二項関係データの第２項目のデータを第１項目のデータとして持つ第３の二項関係データを探索し、その結果抽出された第３の二項関係データの第１項目を親ノードとしてこの第３の二項関係データの第２項目のデータを子ノードとして関連付け、そのアークに前記抽出された二項関係データの二項関係の種類を付加するプロセスを繰り返すことで、前記第１の二項関係データの第２項目のデータをルートとする部分木を生成する第３の手段
として機能させることを特徴とするフローデータ生成プログラム。
【請求項２２】
コンピュータを、
第１項目及び第２項目のデータとこの第１項目及び第２項目のデータ間の二項関係の種類を示すデータとを有する二項関係データの集合を記憶した第１の記憶手段の中で第１項目若しくは第２項目のデータとして記憶された値ごとに、この値の前記第１の記憶手段における位置を位置データとして第２の記憶手段に記憶する第１の手段と、
フローデータの始点候補となる複数のデータのそれぞれを第１項目のデータとする第１の二項関係データを前記第１の記憶手段の二項関係データの集合から抽出し、夫々の始点候補を親ノードとしてこの第１の二項関係データの第２項目のデータを子ノードとして関連付け、そのアークに前記第１の二項関係データの二項関係の種類を付加する第２の手段と、
前記第２の記憶手段の位置データを参照して、前記第１の記憶手段の二項関係データの集合から、第２の二項関係データの第２項目のデータを第１項目のデータとして持つ第３の二項関係データを探索し、その結果抽出された第３の二項関係データの第１項目を親ノードとしてこの第３の二項関係データの第２項目のデータを子ノードとして関連付け、そのアークに前記抽出された二項関係データの二項関係の種類を付加するプロセスを繰り返すことで、前記第１の二項関係の第２項目のデータをルートとする部分木を生成して、複数の始点候補夫々をルートとする複数のデータ木を生成する第３の手段と、
前記複数の始点候補から一つの始点を選定し、この始点に対し前記選定されなかった始点候補を関連づけ、前記始点と前記選定されなかった始点候補との間のアークに前記始点と前記選定されなかった始点候補との間の二項関係の種類を付加し、前記複数のデータ木を１つのデータ木として統合する第４の手段
として機能させることを特徴とするフローデータ生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、作業手順書や機器解説書、故障診断システムデータなどに用いられるフローチャートやワークフロー、グラフなどのフローデータを作成するための方法、装置及びプログラムに関する。
【背景技術】
【０００２】
保守作業にかかわる作業手順書や機器の解説書の作成は、対象の機器システムの各構成部開発担当者が個々に流れ図を作成したものを集約するというかたちで行なわれることが多い。一般的には、各構成部そのものも複雑であることが多く、構成部に対する機能解説や保守作業等への手順も複雑なものである。通常、機能解説や保守作業の手順作成の表現にはフローチャート（あるいはワークフロー）といわれる流れ図が用いられることが多いが、構成や手順が複雑になればそれらを説明する流れ図も複雑になる。複雑な流れ図は、完成後に見る側にとっても負担が重く、またそもそも作成時において作る側の負担も大きいのものである。
【０００３】
それらの負担を低減できると考えられる流れ図を生成する装置ないし方法にかかわる従来手法には、大きく分けて、以下の５種類のものがあると考える。
【０００４】
（１）言語解析をおこない、木ないしグラフに変換するもの（例えば、特許文献１参照）  
（２）グラフ上のノード情報の入力を得て、フローチャート（木構造）に変換するもの（例えば、特許文献２〜８、非特許文献１〜２参照）  
（３）いわゆるエキスパートシステムであって、Ｉｆ〜Ｔｈｅｎ形式のデータ解析ルールを定めて、別途与えられるデータをフローチャート（木ないしグラフ構造）に変換するもの（例えば、特許文献９、非特許文献３参照）  
（４）計算機プログラムコードの処理の流れをフローチャート（木ないしグラフ構造）に変換するもの（例えば、特許文献１０参照）  
（５）フローチャート描画エディタによる直接作成するもの（例えば、非特許文献４）  
上記のように、（１）〜（５）の５種類に分けたが、もっとおおまかに分類すれば、（１）〜（３）のようなノードデータからフローチャートを再現するものと、（４）のように計算機プログラムが持つデータ構造をそのまま利用するものもしくは（５）のようにツールを用いて全てを作図することでデータ構造すべてを人に作らせるものとに分かれる。（４）および（５）のように別途用意されるデータ構造を利用する場合を除けば、（１）〜（３）のようにノードデータとしての表現を利用するものしか無く、その理由は、ノードデータ（およびアークデータ）が得られると隣接行列を介してグラフ構造が一意に決定されるというグラフ理論上の根拠にもとづき、そのグラフ構造生成もグラフ理論の手法の利用ということに帰着されるからである。
【０００５】
ところで、「ノードデータからフローチャートを再現する」のは同じなのに、（１）〜（３）に分かれるのは、適用目的や、ノード作成方法に違いがあるからである。
【０００６】
（１）は、自然言語あるいは、文法をともなう言語を前提として、文を構成する単語のその文法上の属性に則して他の単語との関係をルール（すなわち、文法）として保持しておき、入力される単語の集合に関してその属性にもとづく各単語の関係を示すものである。各単語がノードであり、各単語の属性がノードが持つプロファイルとなる。ルールがプロファイルを解釈しそこに記述される他のノードの連鎖を検索する。自然言語文章の要約やＸＭＬ等の構造化文書におけるデータ変換を目的とする場合が多い。
【０００７】
（２）は、ノードデータそのものに関するプロファイル（属性）ＤＢを作成および利用するものである。例えば、非特許文献１のｆｉｇ．９のように対象のモデルとしてのノードデータを作成しておき、その各ノードのアークデータ（他のノードとつながり）にしたがって木構造データを作成する。各ノードがアークデータのほかにプロファイルデータを持つ場合にはその条件に従った探索をおこなうことにより、エキスパートシステムとして利用されるものである。あるいは、木データ表示そのものを目的として、非特許文献２の図４のように、各ノードのプロファイルにおいて、他ノードとのつながりデータをより詳しくしたもの（二次元平面状における他ノードとの関係のデータも持つ）も考えられている。また、特許文献２のように、１つのノードが、部分グラフ（部分木）を持つことを許容する、ノードのプロファイル書式も考えられている。また、特許文献３〜６に開示されるように、データのプロファイルの各値がデータを分類する基準（分岐ノード）となっており、各データが持つプロファイルの値の散らばり方等により、分岐ノード順序を異なるものにすることでデータ構造を種々変更する目的でも利用される。特許文献７〜８は、事例データをそのままノードとするのではなく、幾つかを集約する形でノードとすることで、木構造を生成するものである。
【０００８】
（３）は、いわゆるエキスパートシステムに直接関わるものであるが、各データのプロファイル条件を解釈するルールを持たせておき、それらの条件判断の幾つかの順列を木構造等で表現するものである。（２）の非特許文献１と基本的には同じであるが、各データをノードとして（ノードおよびアークデータ）構成するという限定をおいてはいない。
【０００９】
（４）は、計算機プログラムコードが持つデータ構造情報をそのまま木構造データにして、プログラムコードを見やすくすることを目的にしたもので、ノードを連鎖させて木構造（グラフ構造）データを生成するものではない。
【００１０】
（５）は、フローチャートを人が作成するためのエディタであり、いずれも、個々のノードとその連鎖を作成者が定めなくてはならないものである。すなわち、（４）と同じく、ノードデータを連鎖させて木構造（グラフ構造）を生成するものではない。
【００１１】
フローチャート（グラフ構造あるいは木構造）の作成を容易にするには、少しでも，入力作業が少なくて済むことが重要であり、（４）および（５）のように、ノードだけではなくデータ構造も記述するものよりも、（１）〜（３）のようにノードデータ（アークデータも含む）だけを入力し、データ構造そのものは自動生成されるものがのぞましいと考えられる。
【００１２】
しかしながら、（１）〜（３）においては、  
・データを、データ構造上のノード単位で入力する必要がある。  
・各データが他のデータの連鎖情報以外の属性データも持っている。  
・データ構造生成以外に、種々の条件判断を行なわせるエキスパートシステムとして構成されている。  
という特徴をもっている。それらは、エキスパートシステムに代表されるように高機能を実現するものであるのではあるが、データ構造だけを利用したい場合には、入力および利用処理が複雑で、対象に関わる多くの立場の人が利用するという点で簡便でない、という欠点がある。
【００１３】
また、データ構造上の詳細においては、従来手法では、グラフ理論上、各ノードはあらかじめそれぞれ排他的である、ということを前提としており、
・同じ内容を異なる条件分岐論理において処理を行ないたい場合の表現には、「例外処理ルールを施すか、同じ内容に別ラベルをもつ新たなノードを恣意的に設定する」などの工夫が必要であることも、取り扱いの簡便でないことに加えて、使いづらいものになっていると言える。
【００１４】
さらに、与えられる情報が作成者が自らの思考の流れを個人の考えにもとづいて整理するかたちで作成しているため、情報として個別的、かつ、一時的な表現となり、利用者にとって必ずしも理解しやすいものにはなっていないということもある。
【特許文献１】特開平７−１８２３４０号公報
【特許文献２】特開平４−１３０５６６号公報
【特許文献３】特開平９−３０５４０４号公報
【特許文献４】特開平９−３３０２２４号公報
【特許文献５】特開平７−３２５６１８号公報
【特許文献６】特開２０００−６６８８４公報
【特許文献７】特開平７−９３１５８号公報
【特許文献８】特開平８−３１４７２５号公報
【非特許文献１】人工知能学会誌Ｖｏｌ．７，  Ｎｏ．４，Ｊｕｌ．１９９２  「対象モデルと故障モデルに基づく知識コンパイラＩＩの構築と評価」
【非特許文献２】情報処理学会論文誌Ｖｏｌ．２１，Ｎｏ．１０，Ｏｃｔ．１９９０「Ｈｉｃｈａｒｔプログラム図式の生成方法」、図４
【特許文献９】特開平４−７４２２４号公報
【非特許文献３】情報処理学会論文誌Ｖｏｌ．２８，Ｎｏ．１２，Ｄｅｃ．１９８７「知識ベースシステム構築用ツールＥＵＲＥＫＡにおける高速処理方式」
【特許文献１０】特開平５−２５７６６６号公報
【非特許文献４】Ｍｉｃｒｏｓｏｆｔ  Ｖｉｓｉｏ  （マイクロソフト社）のホームページ、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｍｉｃｒｏｓｏｆｔ．ｃｏｍ／＞
【発明の開示】
【発明が解決しようとする課題】
【００１５】
以上説明したように、従来は、フローチャート、ワークフロー、グラフといったフローデータを作成する際の手間がかかり、しかも、作成されたフローデータは、作成者の思考の流れに基づいているため、利用者にとって必ずしも理解し易いものにはなっていないという問題点があった。
【００１６】
そこで本発明は、上記問題点に鑑み、フローデータを容易に作成することができるフローデータ生成方法、装置及びプログラムを提供することを目的とする。
【００１７】
また、フローデータ作成者の思考に沿った分岐条件を含む論理の流れを重視するフローデータであるフローチャートと、フローデータ利用者の思考の流れに沿った、分かり易い作業内容の手順を重視するフローデータであるワークフローとが同じ入力データから容易に作成することのできるフローデータ生成方法、装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１８】
本発明のある観点によれば、第１項目及び第２項目のデータとこの第１項目及び第２項目のデータ間の二項関係の種類を示すデータとを有する二項関係データの集合を記憶した第１の記憶手段の中で第１項目若しくは第２項目のデータとして記憶された値ごとに、この値の前記第１の記憶手段における位置を位置データとして第２の記憶手段に記憶し、フローデータの始点となるデータを第１項目のデータとする第１の二項関係データを前記第１の記憶手段の二項関係データの集合から抽出し、この始点を親ノードとしてこの第１の二項関係データの第２項目のデータを子ノードとして関連付け、そのアークに前記第１の二項関係データの二項関係の種類を付加し、前記第２の記憶手段の位置データを参照して、前記第１の記憶手段の二項関係データの集合から、第２の二項関係データの第２項目のデータを第１項目のデータとして持つ第３の二項関係データを探索し、その結果抽出された第３の二項関係データの第１項目を親ノードとしてこの第３の二項関係データの第２項目のデータを子ノードとして関連付け、そのアークに前記抽出された二項関係データの二項関係の種類を付加するプロセスを繰り返すことで、前記第１の二項関係データの第２項目のデータをルートとする部分木を生成することを特徴とするフローデータ生成方法が提供される。
【００１９】
また、本発明の別の観点によれば、第１項目及び第２項目のデータとこの第１項目及び第２項目のデータ間の二項関係の種類を示すデータとを有する二項関係データの集合を記憶した第１の記憶手段の中で第１項目若しくは第２項目のデータとして記憶された値ごとに、この値の前記第１の記憶手段における位置を位置データとして第２の記憶手段に記憶する第１の手段と、フローデータの始点となるデータを第１項目のデータとする第１の二項関係データを前記第１の記憶手段の二項関係データの集合から抽出し、この始点を親ノードとしてこの第１の二項関係データの第２項目のデータを子ノードとして関連付け、そのアークに前記第１の二項関係データの二項関係の種類を付加する第２の手段と、前記第２の記憶手段の位置データを参照して、前記第１の記憶手段の二項関係データの集合から、第２の二項関係データの第２項目のデータを第１項目のデータとして持つ第３の二項関係データを探索し、その結果抽出された第３の二項関係データの第１項目を親ノードとしてこの第３の二項関係データの第２項目のデータを子ノードとして関連付け、そのアークに前記抽出された二項関係データの二項関係の種類を付加するプロセスを繰り返すことで、前記第１の二項関係データの第２項目のデータをルートとする部分木を生成する第３の手段とを具備してなることを特徴とするフローデータ生成装置が提供される。
【００２０】
また、本発明の別の観点によれば、プロセッサと、前記プロセッサがアクセス可能な記憶装置と、前記記憶装置に格納されたプログラムとを具備してなり、前記プログラムは、前記プロセッサを、第１項目及び第２項目のデータとこの第１項目及び第２項目のデータ間の二項関係の種類を示すデータとを有する二項関係データの集合を記憶した第１の記憶手段の中で第１項目若しくは第２項目のデータとして記憶された値ごとに、この値の前記第１の記憶手段における位置を位置データとして第２の記憶手段に記憶する第１の手段と、フローデータの始点となるデータを第１項目のデータとする第１の二項関係データを前記第１の記憶手段の二項関係データの集合から抽出し、この始点を親ノードとしてこの第１の二項関係データの第２項目のデータを子ノードとして関連付け、そのアークに前記第１の二項関係データの二項関係の種類を付加する第２の手段と、前記第２の記憶手段の位置データを参照して、前記第１の記憶手段の二項関係データの集合から、第２の二項関係データの第２項目のデータを第１項目のデータとして持つ第３の二項関係データを探索し、その結果抽出された第３の二項関係データの第１項目を親ノードとしてこの第３の二項関係データの第２項目のデータを子ノードとして関連付け、そのアークに前記抽出された二項関係データの二項関係の種類を付加するプロセスを繰り返すことで、前記第１の二項関係データの第２項目のデータをルートとする部分木を生成する第３の手段として機能させることを特徴とするフローデータ生成装置が提供される。
【００２１】
また、本発明のさらに別の観点によれば、コンピュータを、第１項目及び第２項目のデータとこの第１項目及び第２項目のデータ間の二項関係の種類を示すデータとを有する二項関係データの集合を記憶した第１の記憶手段の中で第１項目若しくは第２項目のデータとして記憶された値ごとに、この値の前記第１の記憶手段における位置を位置データとして第２の記憶手段に記憶する第１の手段と、フローデータの始点となるデータを第１項目のデータとする第１の二項関係データを前記第１の記憶手段の二項関係データの集合から抽出し、この始点を親ノードとしてこの第１の二項関係データの第２項目のデータを子ノードとして関連付け、そのアークに前記第１の二項関係データの二項関係の種類を付加する第２の手段と、前記第２の記憶手段の位置データを参照して、前記第１の記憶手段の二項関係データの集合から、第２の二項関係データの第２項目のデータを第１項目のデータとして持つ第３の二項関係データを探索し、その結果抽出された第３の二項関係データの第１項目を親ノードとしてこの第３の二項関係データの第２項目のデータを子ノードとして関連付け、そのアークに前記抽出された二項関係データの二項関係の種類を付加するプロセスを繰り返すことで、前記第１の二項関係データの第２項目のデータをルートとする部分木を生成する第３の手段として機能させることを特徴とするフローデータ生成プログラムが提供される。
【発明の効果】
【００２２】
本発明によれば、フローチャートやワークフローなどのフローデータが入力データを基に容易に作成することができる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の実施形態について図面を参照して説明する。
【００２４】
（第１の実施形態）  
図１は、第１の実施形態にかかるフローデータ生成装置の構成例を示したもので、二項関係記憶部１０、位置データ生成記憶部２０、第１の部分木生成部３０、部分木統合部４０とから構成されている。
【００２５】
以下、図１のフローデータ生成装置の構成と各構成部の処理動作について説明する。
【００２６】
二項関係データ記憶部１０は、物理現象・機器にかかわる因果関係や順序関係を二項形式で表現されるデータ集合として記憶するものである。例えば、ある対象に対する保守作業に関して、条件や処理などに対応するデータＡ〜Ｅについての次の（ｘ１）〜（ｘ５）のような一連の手順を行う場合を考える。
【００２７】
（ｘ１）条件判断Ａを満たすなら処理Ｂに移る。
【００２８】
（ｘ２）処理Ｃをおこない、条件判断処理Ａに移る。
【００２９】
（ｘ３）条件判断Ａを満たさないのであれば処理Ｄに移る。
【００３０】
（ｘ４）処理Ｄのあと、処理Ｂに移る。
【００３１】
（ｘ５）処理Ｂのあと、処理Ｅに移る。
【００３２】
ここで、データＡ〜Ｅとは、部品、機能、保守等の作業や行動等を表した情報データである。以下、説明の簡単のため、これら処理対象の各データを区別するために、各データのコンテンツは意識せず、単に、データＡ〜Ｅと呼ぶことにする。
【００３３】
二項関係データ記憶部１０は、（ｘ１）〜（ｘ５）のような一連の手順を図２に示すように、二項形式のデータ集合として記憶する。
【００３４】
図２の各行（第１行から第５行）が「二項関係」を示す二項関係データである。各二項関係データには、いわゆる「二項関係」を示す第１項のデータと第２項のデータと、第１項と第２項のデータの間の（例えば、第１項のデータから第２項のデータへの）対応関係の種類（二項関係の種類）を示すデータとからなる。
【００３５】
対応関係の種類とは、例えば、第１項のデータにより表される条件を満たすときに、第２項のデータへ進むという対応関係のときには、その種類を「Ｙｅｓ」とする。また、第１項のデータにより表される条件を満たさないときに、第２項のデータへ進むという対応関係のときには、その種類を「Ｎｏ」とする。また、第２行、第４行、第５行の二項関係データのように、第１項目の条件（ＹｅｓまたはＮｏ）にかかわらず（第１項の次に無条件に）第２項目へ移るという対応関係のときには、その種類を「Ｎｅｘｔ」とする。
【００３６】
位置データ生成記憶部２０は、二項関係データ記憶部１０に記憶される二項関係データの構成要素である第１項と第２項の２種類のデータを、図２に示した複数の二項関係データのうちのどの二項関係データのどこに（第１項か第２項のどちらに）出現するデータであるかを整理して記憶するものである。
【００３７】
なお、上記「Ａ」〜「Ｅ」は、各データＡ〜Ｅのそれぞれに対応する、各データＡ〜Ｅのそれぞれを識別するための識別子（ＩＤ）あるいはラベルである。
【００３８】
図２の複数の二項関係データを例にとれば、位置データ生成記憶部２０は、これら複数の二項関係データに出現する全てのデータＡ〜Ｅについて、図３に示したような形式に変換して記憶する。例えば、図２に示したテーブル上で、データＡは、第１行の二項関係データの第１項と、第２行の二項関係データの第２項と、第３行の二項関係データの第１項のデータである。従って、二項関係データ記憶部１０に記憶されている複数の二項関係データの中で、当該データＡの出現位置は、図３に示すように、二項関係データ記憶部１０に記憶されている何番目（何行目）の二項関係データのどの位置（１列目か２列目か）に出現するかを座標形式で表して、（１，１）（２，２）（３，１）となる。これをデータＡに対応する位置データと呼ぶ。
【００３９】
このようにして、データＢ〜Ｅのそれぞれに対応する位置データを作成し、図３に示すように、位置データ生成記憶部２０に記憶される。すなわち、データＢは、第１行の二項関係データの第２項と、第４行の二項関係データの第２項と、第５行の二項関係データの第１項のデータであるので、データＢに対応する位置データは、（１，２）（４，２）（５，１）である。データＣは、第２行の二項関係データの第１項のデータであるので、データＣに対応する位置データは、（２，１）である。データＤは、第３行の二項関係データの第２項と、第４行の二項関係データの第１項のデータであるので、データＤに対応する位置データは、（３，２）（４，１）である。データＥは、第５行の二項関係データの第２項のデータであので、データＥに対応する位置データは、（５，２）である。
【００４０】
なお、図３では、図２とおなじく、各データＡ〜Ｅを区別するために、「Ａ」〜「Ｅ」というラベルを用いたが、この場合に限らず、各データを区別、識別するためのＩＤは、各ＩＤで排他的であればよく、「Ａ」〜「Ｅ」のラベルとは別のものを指定してもよい。例えば、図４のように、データＡ〜Ｅのそれぞれに「あ」〜「お」というＩＤを用いて位置データを記憶するようにしてもよい。
【００４１】
これは、別名を持つ同じデータが二項関係データに存在する場合に、位置データにおいてＩＤにより、同じデータとして処理することを目的とするものである。この例では別名をもつ同じデータは無いものである。
【００４２】
第１の部分木生成部３０は、二項関係データ記憶部１０に記憶される複数の二項関係データ間の連鎖を検索し、木構造のデータ（部分木）として出力する。
【００４３】
部分木統合部４０は、二項関係データ記憶部１０に記憶される二項関係データについて、第１の部分木生成部３０で生成された部分木を統合して、フローデータとして１つの木構造を生成するものである。
【００４４】
次に、図５に示すフローチャートを参照して、図１のフローデータ生成装置の処理動作の概略を説明する。
【００４５】
まず、部分木統合部４０は、二項関係データ記憶部１０に記憶される二項関係データを基に、フローデータの始点候補を決定する（ステップＳ１０１）。始点候補は１つの場合もあれば複数の場合もある。そして、二項関係データ記憶部１０に記憶される二項関係データの中から、各始点候補を第１項とする二項関係データを特定する（ステップＳ１０２）。各始点候補について、当該始点候補を第１項とする二項関係データの第２項のデータをルートとする部分木を第１の部分木生成部３０で生成する（ステップＳ１０３）。
【００４６】
各始点候補と、当該始点候補を第１項とする２項関係データの第２項のデータをルートとして生成された部分木をそれぞれ連結(統合)して、各始点候補を改めてルートとするデータ木を生成する（ステップＳ１０４）。
【００４７】
始点候補が１つのときは、このデータ木がそのままフローデータとして出力される。一方、始点候補が複数のときには、複数の始点候補のうちの１つをフローデータの始点して選択し、この始点に、上記複数の始点候補のうちの他の始点候補をルートとするデータ木を連結するなどして複数のデータ木を１つに統合することにより、第１の部分木生成部３０で生成された各部分木を１つに統合したフローデータを生成する（ステップＳ１０５）。
【００４８】
次に、図１の各部の処理動作について、詳細に説明する。
【００４９】
まず、位置データ生成記憶部２０における、図２に示したような複数の二項関係データから、図３に示したような位置データへの変換処理手順（位置データ生成処理手順）について、図６に示すフローチャートを参照して説明する。
【００５０】
二項関係データ集合（１項および２項のデータのみ）から、データを１つ選択するとともに、どの場所のデータを選択したかをチェックする（ステップＳ１）。ステップＳ１で選択されたデータが既にＩＤとして存在する場合は（ステップＳ２）、二項関係データの場所を追加し（ステップＳ４）、ＩＤが存在しない場合は（ステップＳ２）、新たに付け加える（ステップＳ３）。
【００５１】
二項関係データ集合のすべての場所のデータがチェックされていなければ（ステップＳ５）、ステップＳ１にもどり、すべてのデータがチェックされれば（ステップＳ５）終了する。
【００５２】
上記位置データ生成処理手順により、例えば、図２の第２行の二項関係データの第１項のデータＣの位置データとして（２，１）が記録され、第２項のデータＡの位置データとして（２，２）が記録される。
【００５３】
次に、第１の部分木生成部３０の部分木生成処理動作について、図７に示すフローチャートを参照して説明する。
【００５４】
所定の二項関係データの第２項目のデータを親ノード候補とする（ステップＳ１１）。親ノード候補があれば、そのうちの１つを選択して（ステップＳ１２、ステップＳ１３）、ステップＳ１４へ進み、なければ（ステップＳ１２）、処理を終了する。
【００５５】
ステップＳ１４では、位置データのテーブル（例えば図３）から親ノード候補のＩＤに対応する位置データを検索し、親ノード候補が二項関係データの第１項となる二項関係データ上の位置データ（行）を検索し、当該データがあれば、ステップＳ１６へ進み、該当データがなければこの親ノード候補についての検索は終了し（ステップＳ１５）、ステップＳ１２にもどる。
【００５６】
ステップＳ１６では、二項関係データのテーブル（図２参照）において、ステップＳ１４で検索された位置データ（行）の１列目のデータを親ノードとし、２列目のデータを子ノードするとともに、二項関係データのテーブルの第３列にあらわされる二項関係の種類をアークに付加する。そして、このステップＳ１６で定められた子ノードを、新たに親ノード候補として定めて（ステップＳ１７）、ＳｔｅｐＳ１２にもどる。
【００５７】
まず、所定の二項関係として、例えば、図２の第２行のデータが（後で説明する部分木統合部４０から）与えられるとする。第２行の二項関係データにおける第２項のデータ、すなわち、「Ａ」をルートとして、以下、逐次、連鎖する（関連付ける）データを検索してゆく。位置データ生成記憶部２０に記憶される第１項が「Ａ」であるデータでは、図３の位置データに示すように、図２の（１，１）、（３，１）である（（２，２）は第２項のデータであるから省く）。したがって、ここまでで、ルート「Ａ」に連鎖するデータは、（１，２）と（３，２）のデータ、すなわち、図３より、それぞれ、「Ｂ」、「Ｄ」であることがわかる。つまり、式（ｘ１）、式（ｘ２）に表されるようなものとなる。
【００５８】
Ａ−Ｙｅｓ→Ｂ                    …（ｘ１）
Ａ−Ｎｏ→Ｄ                      …（ｘ２）
ルート「Ａ」からの連鎖にひきつづいて、「Ｂ」および「Ｄ」について上の「Ａ」と同様に連鎖するデータを検索する。図３の位置データにおいて、「Ｂ」が第１項のデータであるのが図２の二項関係データのテーブルの第５行目に存在することがわかる。第５行目のＩＤ「Ｅ」は第１項となる場合が無いので、「Ｂ」からの連鎖の終端は「Ｅ」となる。また、「Ｄ」については、図２の二項関係データのテーブルの第４行目に「Ｂ」に連鎖することことがわかり、「Ｂ」はすぐ上でみたように「Ｅ」に連鎖するから、結局、「Ｄ」からの連鎖も「Ｅ」を終端とすることがわかる（次式（ｘ３）〜（ｘ５）参照）。
【００５９】
Ｂ−Ｎｅｘｔ→Ｅ                    …（ｘ３）
Ｄ−Ｎｅｘｔ→Ｂ                    …（ｘ４）
Ｂ−Ｎｅｘｔ→Ｅ                    …（ｘ５）
したがって、「Ａ」をルートとする木構造は上式（ｘ１）〜（ｘ５）を統合した図８に示されるようなものとなる。なお、第１の部分木生成部３０では、グラフとしてのノード共通化処理（同じＩＤデータを一つのノードにまとめる処理）は施しておらず、あくまで「木」としての構造として生成している。
【００６０】
次に、部分木統合部４０における部分木統合処理動作について、図９に示すフローチャートを参照して説明する。
【００６１】
隣接行列および列和を作成する（ステップＳ２１、ステップＳ２２）。列和が「０」の列のＩＤに対応するデータを始点候補として記憶する（ステップＳ２３）。
【００６２】
始点候補を第１項に持つ二項関係データを位置データのテーブルから検索して、それを部分木生成部（例えば、第１の部分木生成部３０）に入力し（ステップＳ２４）、当該二項関係データの第２項のデータをルートとする部分木を得る。そして、当該始点候補（当該二項関係データの第１項のデータ）に各部分木のルート（当該二項関係データの第２項のデータ）を関連付けて、各始点候補をルートとするデータ木を生成し、それを記憶しておく（ステップＳ２５）。
【００６３】
始点候補が残っている場合には（ステップＳ２６）、ステップＳ２４にもどり、始点候補がないときは（ステップＳ２６）、ステップＳ２７へ進む。
【００６４】
ステップＳ２７では、各始点候補に関連付けられた部分木（各始点候補をルートとするデータ木）を統合して（１つしか始点候補が無い場合はそのまま）、データ木の連結された（統合された）木構造のデータ（フローデータ）を生成する。
【００６５】
まず、フローデータの始点（始点候補）を定めるべく、図１０のようないわゆる隣接行列を作成する。隣接行列は、図３に示される各ＩＤを行および列に配置し、各列ＩＤの親ノードとなる各行ＩＤに「１」、それ以外に「０」を入力したものである（各行ＩＤの子ノードとなる各列ＩＤに「１」、それ以外の場合に「０」を入力しても同じ）。その後、各列和を求める。
【００６６】
列和が「０」となる列のＩＤが始点候補となる。図１０の場合では、「Ｃ」の列の列和だけが「０」であるので、「Ｃ」が二項関係データの第１項のデータである二項関係データを図３のテーブルを検索して、二項関係データの（２，１）の場所のデータについて、図２の２行目の二項関係データが、第１の部分木生成部３０へ部分木のルートを与える二項関係データとして与えられる。すると、第１の部分木生成部３０で、図８に示すような部分木が生成されるので、図２の２行目の二項関係データで表される、次式（ｘ６）のような関係で、始点候補「Ｃ」と当該生成された部分木を統合して、図１１のような新たな木構造のデータ、すなわち、データ木が得られる。
【００６７】
Ｃ−Ｎｅｘｔ→Ａ            …（ｘ６）
なお、始点候補が複数あれば、順次、第１の部分木生成部３０へ二項関係データを入力して部分木を得るとともに、その始点候補の二項関係データを含めて新たなデータ木を生成する。
【００６８】
また、始点候補が複数ある場合（例えば、「Ｃ」の他に、「Ｆ」や「Ｇ」などがある場合）は、いわゆる、非連結グラフとなり、独立の木構造として複数のデータ木が生成されることになるが、本装置では、これらの複数のデータ木を、便宜上、二番目以降の始点候補を一番最初の始点候補の子ノードとして関連付け、１番最初の始点候補（例えば「Ｃ」）と２番目以降の始点候補のそれぞれ（「Ｆ」、「Ｇ」）を関連付けるブランチ（アーク）に、所定の二項関係の種類、例えば、「Ｏｔｈｅｒ」などを付加して連結する（図１２参照、例えば、新たなＩＤ「Ｆ」および「Ｇ」が始点候補となる場合）。始点候補が１つも無い場合には、別の所定の手続で始点を選定する。
【００６９】
なお、フローデータの始点となるデータが、「Ｙｅｓ」や「Ｎｏ」のいずれか一方に分岐するための条件を表したデータであるときは、便宜上、フローデータの始点となるデータから他の始点候補へのアークには、関係の種類として「Ｎｏ」を付加することが望ましい。
【００７０】
次に、図９に示すフローチャートを参照して、部分木統合部４０における処理動作について具体的に説明する。ここでは、前述したように、図２に示した５つの二項関係データを例にとり説明する。
【００７１】
まず、フローデータの始点を定めるべく、図１０に示すような、いわゆる隣接行列を作成する（ステップＳ２１）。隣接行列は、図３に示した５つのデータＡ〜ＥのそれぞれのＩＤ「Ａ」〜「Ｅ」を行および列に配置し、行列中の各要素（行列要素）の行成分、列成分としたものである。そして各行列要素の値は、図２に示した各二項関係データの第１項のデータと第２項のデータ間のつながりとその方向を示している。ここでつながりとは、二項関係データの関係の種類にかかわりなく、前述した親ノードと子ノードとの関係をいう。例えば、値が「１」である行列要素は、その行成分のデータを第１項とし、列成分のデータを第２項とする二項関係データの存在を示している。あるいは、値が「１」である行列要素は、その行成分のデータを親ノードとし、列成分のデータを子ノードとするつながりと方向を示しているとも云える。また、値が「０」である行列要素は、その行成分のデータを第１項とし、列成分のデータを第２項とする二項関係データが存在しないことを示している。あるいは、値が「０」である行列要素は、その行成分のデータを親ノードとし、列成分のデータを子ノードとするつながりが存在しないことを示しているとも云える。
【００７２】
上記のようにして、図１０に示したような隣接行列を生成した後、各列について、その列に含まれる行列要素の値の和を列和として求める（ステップＳ２２）。列和が「０」となる列に対応するデータには、当該データ自身が子ノードとして接続する親ノードが存在しないことを意味する（当該データを第２項とする二項関係データが存在しないこと、すなわち、当該データは、与えられた複数の二項関係データの第１項と第２項のうちの第１項のみに出現することを意味する）。従って、この列和が「０」である列に対応する（列成分に対応する）データが始点候補となる（ステップＳ２３）。
【００７３】
図１０に示した隣接行列では、「Ｃ」の列の列和だけが「０」である。従って、ここでは、データＣが始点候補として記憶される。もちろん、列和が「０」である列が複数あれば、その数だけ始点候補が存在する。
【００７４】
なお、列和が「０」のデータがない場合には、予め定めるルール（例えば先頭の二項関係データの第1項を始点候補とする）によって始点候補を定めることにする。
【００７５】
さて、ステップＳ２３において、始点候補として、データＣが得られたとする。この場合、図３の位置データを検索することにより、データＣを第１項とする二項関係データを取得する。すなわち、データＣの位置データは、（２，１）であるので、図２に示したような二項関係データを記憶するテーブル上で、当該位置（２，１）に対応するデータを含む二項関係データは第２行に存在する。そこで、この第２行の二項関係データを第１の部分木生成部３０へ渡す（ステップＳ２４）。
【００７６】
第１の部分木生成部３０では、第２行の二項関係データを受け取ると、当該二項関係データを処理対象として、図７に示したような処理を行い、当該第２行の二項関係データの第２項のデータ（すなわち、データＡ）をルートとする、図８に示したような部分木が生成される。第１の部分木生成部３０で、図８に示したような部分木が生成されると、当該部分木は、部分木統合部４０に渡される。
【００７７】
この生成された部分木のルートと当該第２行の二項関係データの第１項のデータ（始点候補「Ｃ」）を関連付けて、そのアークに、当該二項関係データの二項関係の種類を付加することにより、図１１に示すようなデータ木を生成する（ステップＳ２５）。
【００７８】
次に、ステップＳ２３で複数の始点候補が得られた場合には、これら全ての始点候補に対して、ステップＳ２４〜ステップＳ２５を繰り返す（ステップＳ２６）。その結果、全ての始点候補に対応するデータ木が得られることとなる。
【００７９】
部分木統合部４０では、各始点候補に対応して生成されたデータ木を統合して、１つに連結された木構造のデータフローを作成する（ステップＳ２７）。
【００８０】
例えば、ステップＳ２３において、始点候補として、データＣのみが得られたとき、このデータＣを第１項とする二項関係データ（図２の第２行の二項関係データ）がステップＳ２４で得られている。
【００８１】
この第２行の二項関係データで表されている、データＣとデータＡとの間の連鎖は、次式（６）のように表すことができる。すなわち、データＣを親ノードとすると、データＡはその子ノードとして接続し、データＣからデータＡへのアークには、データＡとデータＣとの間の関係の種類「Ｎｅｘｔ」が付加されるので、
Ｃ−Ｎｅｘｔ→Ａ              …（６）
となる。
【００８２】
そこで、次に、ステップＳ２５では、データＡをルートする部分木に、（６）式のような連鎖を統合して（すなわち、図８の部分木のルートノードとしてのデータＡの前段に、データＣをデータＡを接続して）、データＣからデータＡへのアークに「Ｎｅｘｔ」を付加することにより、図１１に示すような、データ木を生成する。始点候補が１つのみの場合は、図１１に示したデータ木が、そのままフローデータとして部分木統合部４０から出力される。
【００８３】
ところで、データ構造探索においては深さ優先探索アルゴリズムなどがよく知られている。例えば、深さ優先探索アルゴリズムでは、再帰アルゴリズムを利用しているため各ノードは１回ずつしか検索しないので、図２の第２行の二項関係データから、データ構造の探索を始めると、Ｃ→Ａ→Ｂ→Ｅ→Ｄという結果となる。
【００８４】
このような探索アルゴリズムは、ノードとアークのデータから作成される隣接行列とよばれる連鎖関係マトリクスに基づいている。従来技術として紹介したノードデータをもとにデータ構造を生成する（１）〜（３）の方法のうち、（３）の述語論理形式のルールによるデータ構造生成を除く（１）および（２）に分類される方法は、ノードが他のどのノードとつながりがあるかどうかを示すだけであって、どのような種類（Ｙｅｓ、Ｎｏ、Ｏｔｈｅｒ等）でつながりがあるかをノードのプロファイルに記述しない方法である。これは、総当りゲームの星取表のように、一種類の隣接行列で表される。ノード間のつながり（アーク）に、つながりの種類を複数導入しようとするならば、実質上、複数個の隣接行列をあつかう必要がある。従来技術の（１）および（２）は、技術的には、ひとつの隣接行列しか扱っていないことに相当する。また、従来技術で説明した方法（３）については、実質的には、複数個の隣接行列を扱っていることに相当するが、入力用データが、あらかじめデータ構造を想定したノード単位にまとめられたものになっている。
【００８５】
第１の実施形態では、ノード単位のデータを入力データとして扱うのではなく、二項関係データを入力として扱うことで、入力者が、あらかじめ、ノード単位に整理する、という（頭の中でおこなわれる）作業を無くすることができる利点がある。なお、図１０の隣接行列は、一種類しかないが、これは、始点のノードを定めるためのもので、アークの種類ごとの隣接行列のオア（ＯＲ）条件を示すものであって、データ構造そのものの作成には利用していない。
【００８６】
以上説明したように、上記第１の実施形態によれば、フローデータの始点候補となるデータを第１項とする二項関係データの第２項をルートとする部分木を生成する際には、当該部分木の各ノードを親ノード候補としたとき、（ａ）親ノード候補に対応する処理対象データと同一の処理対象データを第１項とする二項関係データの第２項に対応する処理対象データを子ノードとし、当該二項関係データの第１項に対応するデータを親ノードとして接続し、（ｂ）親ノードと子ノードを接続するアークに、当該親ノードに対応する処理対象データを第１項とし当該子ノードに対応する処理対象データを第２項とする二項関係データの対応関係の種類を付加することにより、当該部分木を生成する。そして、各始点候補に、当該始点候補を第１項とする二項関係データの第２の項をルートとして生成された部分木を接続して、そのアークに当該二項関係データの対応関係の種類を付加して、データ木を生成する。始点候補が１つの場合は、このデータ木がそのままフローデータとして出力される。始点候補が複数の場合は、データ木も複数生成されることとなるので、この場合には、複数の始点候補のうちの１つがフローデータの始点として選択され、この始点に複数のデータ木を接続し、始点候補間を接続するアークに、所定の対応関係の種類を付加して、フローデータを生成する。
【００８７】
（第２の実施形態）  
上記第１の実施形態では、連鎖関係をそのまま追ってゆくものであり、同じ内容のデータがフローデータのデータ構造の中に重複して何度も現れることを許している。これは、連鎖関係の論理のながれを作成者の思考のままに表現することを目的としている。これに対して、第２の実施形態では、データの内容ごとに整理してまとめて（すなわち、ノード単位にして）フローデータのデータ構造を生成する装置について説明する。これは、利用者がフローデータの情報にしたがっておこなう作業単位にまとめることを重視したものである。
【００８８】
第２の実施形態に係るフローデータ生成装置の構成例を図１３に示す。なお、図１３において、図１と同一部分には同一符号を付し、異なる部分についてのみ説明する。すなわち、図１３では、図１の第１の部分木生成部３０が第２の部分木生成部３１に置き換わっている。
【００８９】
第２の部分木生成部３１の構成例を図１４に示す。第２の部分木生成部３１は、第１の実施形態で説明した第１の部分木生成部３０と、冗長データ削除部３１１とから構成されており、第１の部分木生成部３０において、親ノードが二項関係データの第１項のデータとなる二項関係データを検索する際には、検索対象から過去に検索された二項関係データ（冗長データ）を除くように、冗長データ削除部３１１が設けられている。
【００９０】
冗長データ削除部３１１は、第１の部分木生成部３０で、そのときの親ノードに対応するデータが第１項のデータと同一である二項関係データを検索したときには、当該検索された二項関係データを次回の検索対象から削除するようになっている。
【００９１】
次に、第２の部分木生成部３１の処理動作について、図１５に示すフローチャートを参照して説明する。図１５において、図７と同一部分には同一符号を付し、異なるのは、図７のステップＳ１４が図１５では、ステップＳ１４´に置き換わっている点である。すなわち、ステップＳ１４´では、ステップＳ１３で選択した親ノード候補が第１項のデータとなる二項関係データのうち、過去に未検索の（冗長データでない）二項関係データを求めるようになっている。
【００９２】
所定の二項関係データの第１項目のデータを親ノード候補とする（ステップＳ１１）。親ノード候補があれば、そのうちの１つを選択して（ステップＳ１２、ステップＳ１３）、ステップＳ１４´へ進み、なければ（ステップＳ１２）、処理を終了する。
【００９３】
ステップＳ１４´では、位置データのテーブル（例えば図３）から親ノード候補のＩＤに対応する位置データを検索し、親ノード候補が二項関係データの第１項となる二項関係データであって、過去にまだ検索されていない（未検索の）二項関係データ上の位置データ（行）を検索し、当該データがあれば、ステップＳ１６へ進み、該当データがなければこの親ノード候補についての検索は終了し（ステップＳ１５）、ステップＳ１２にもどる。
【００９４】
ステップＳ１６では、二項関係データのテーブル（図２参照）において、ステップＳ１４で検索された位置データ（行）の１列目のデータを親ノードとし、２列目のデータを子ノードするとともに、二項関係データのテーブルの第３列にあらわされる二項関係の種類をアークに付加する。そして、このステップＳ１６で定められた子ノードを、新たに親ノード候補として定めて（ステップＳ１７）、ＳｔｅｐＳ１２にもどる。
【００９５】
第１の部分木生成部３０と同様に、まず、所定の二項関係として、例えば、図２の第２行のデータが与えられるとする。第２行の二項関係データにおける第２項のデータ、すなわち、「Ａ」をルートとして、以下、逐次、連鎖する（関連付ける）データを検索してゆく。「Ａ」に連鎖するものとしては、第１の実施形態と同じく式（ｘ１）および（ｘ２）に表される。
【００９６】
ここで、第１の部分木生成部３１では、式（ｘ１）および（ｘ２）に表される二項関係データが、冗長データであるか否かを検出するとともに、存在する場合には二項関係データとして出力することはせず、存在しなければあらたに冗長検出用に追加記憶するとともに、二項関係データとして出力する冗長データ削除部３１１に入力する。この場合は、「Ａ」、「Ｂ」、「Ｄ」ともに、初めて入力されるものであるので、過去に記憶される同一のデータは存在しないので、三つともにそのまま記憶し、かつ、出力される。便宜上、あらためて、式（ｘ１ａ）、式（ｘ２ａ）として表す。
【００９７】
Ａ−Ｙｅｓ→Ｂ                  …（ｘ１ａ）
Ａ−Ｎｏ→Ｄ                    …（ｘ２ａ）
つづいて、第１の部分木生成部３０と同様に、ルート「Ａ」からの連鎖にひきつづいて、「Ｂ」および「Ｄ」について上の「Ａ」と同様に連鎖するデータを検索する。検索そのものは、式（ｘ３）〜（ｘ５）に示される、第１の実施形態の場合と同様のものとなるが、式（ｘ５）に現われるデータは、冗長データ削除部３１１によって、過去に記憶されているデータ（式（ｘ３）と同一）であることがわかる。ここでも、便宜上、式（ｘ３）および（ｘ４）をあらためて、式（ｘ３ａ）、（ｘ４ａ）とする。このような場合には式（ｘ５）を削除する。したがって、第１の部分木生成部３０が式（ｘ１）〜（ｘ５）に表されるのに対して、第２の部分木生成部３１では、式（ｘ１ａ）〜（ｘ４ａ）で表される。
【００９８】
Ｂ−Ｎｅｘｔ→Ｅ                  …（ｘ３ａ）
Ｄ−Ｎｅｘｔ→Ｂ                  …（ｘ４ａ）
したがって、「Ａ」をルートとする木構造（部分木）は式（ｘ１ａ）〜（ｘ４ａ）を統合した図１６に示されるようなものとなる。なお、第２の部分木生成部３１でも、グラフとしてのノード共通化処理（同じＩＤを一つのノードにまとめる処理）は施しておらず、あくまで「木」としての構造として生成している。
【００９９】
なお、ステップＳ１４´では、検索対象から、予め、ステップＳ１１で部分木統合部４０から与えられた二項関係データやステップＳ１４で過去に検索された二項関係データを除くようにしてもよい。また、ステップＳ１４´では、例えば、図２に示した全ての二項関係データの中から、親ノード候補に対応するデータが第１項となる二項関係データを検索した後、冗長データ削除部３１１にて、その検索された二項関係データが、ステップＳ１１で部分木統合部４０から与えられた二項関係データやステップＳ１４´で過去に検索された二項関係データといった冗長なデータであるかをチェックするようにしてもよい。もし、検索された二項関係データが、そのような冗長なデータであるときには、冗長データ削除部３１１は、当該検索された二項関係データを、第１の部分木生成部３０におけるステップＳ１４´以降の処理対象とならないように、第１の部分木生成部３０に出力しない。一方、検索された二項関係データが、冗長なデータでないときには、冗長データ削除部３１１は、当該検索された二項関係データを、次回の冗長データ検出に用いるため記憶するとともに、当該二項関係データを第１の部分木生成部３０におけるステップＳ１４´以降の処理対象となるよう、第１の部分木生成部３０に出力する。
【０１００】
ここで、具体例を挙げて、後者の場合の処理動作を例にとり、第２の部分木生成部３１の処理動作について具体的に説明する。第１の実施形態と同様、例えば、図２の第２行の二項関係データが部分木統合部４０から第２の部分木生成部３１に与えられたとする。第２行の二項関係データにおける第２項のデータ、すなわち、データＡをルートとして、以下、逐次、連鎖するデータを検索してゆく。データＡに連鎖するものとしては、第１の実施形態と同様、式（１）、（２）に示したように、データＢとデータＤであり、それらの各アークには「Ｙｅｓ」と「Ｎｏ」が付加される。
【０１０１】
ここで、第２の部分木生成部３１では、式（１）、（２）で表される二項関係データが、過去に検索されたことのなる、冗長なデータ（冗長データ）であるか否かを検出するとともに、過去に検索されたことのある二項関係データである場合には、当該二項関係データは、検索対象として第１の部分木生成部３０に出力することはしない。過去に検索されたことのない、初めて検索された二項関係データであれば、次回の冗長データ検出用に、冗長データ削除部３１１に追加記憶するとともに、当該二項関係データをとして第１の部分木生成部３０に出力される。この場合は、式（１）、（２）に示すような二項関係データに含まれるデータＡ、Ｂ、Ｄともに、初めて入力されるものである。従って、３つとも、次回の冗長データ検出用に、冗長データ削除部３１１に記憶するとともに、第１の部分木生成部３０に出力される。説明の便宜上、式（１）、（２）に示すような二項関係データを、ここで改めて、式（１ａ）、（２ａ）として表す。
【０１０２】
Ａ−Ｙｅｓ→Ｂ                  …（１ａ）
Ａ−Ｎｏ  →Ｄ                  …（２ａ）
つづいて、データＡからの連鎖にひきつづいて、データＢおよびデータＤについて、上記データＡと同様に連鎖するデータを検索する。その結果、第１の実施形態同様、上記式（３）〜（５）に示したような二項関係データが検索される。しかし、式（５）に示した二項関係データは、冗長データ削除部３１１によって、過去に検索されたことのある（冗長データとして記憶されている）二項関係データ（式（３）と同一）として検出される。従って、この式（５）に示した二項関係データは、後段のステップＳ１４以降の処理のために出力されることはない（冗長データ削除部３１１において、検索結果から削除される）。すなわち、上記式（３）、（４）に対応する二項関係データがステップＳ１４での検索結果として得られることとなる。
【０１０３】
ここでも、便宜上、上記式（３）、（４）を改めて、式（３ａ）、（４ａ）とする。
【０１０４】
Ｂ−Ｎｅｘｔ→Ｅ                  …（３ａ）
Ｄ−Ｎｅｘｔ→Ｂ                  …（４ａ）
従って、第２の部分木生成部３１では、図１６に示すような、上記式（１ａ）〜（４ａ）を統合した、データＡをルートとする木構造（部分木）が生成される。
【０１０５】
なお、部分木生成部３１でも、グラフとしてのノード共通化処理（同じ位置データを１つのノードにまとめる処理）は施しておらず、あくまで「木」としての構造として生成している。
【０１０６】
部分木生成部３１で、図１６に示した部分木が生成されると、第１の実施形態と同様、部分木統合部４０の部分木統合処理により、１つの始点候補（例えば、ここでは、データＣ）を始点とする、図１７に示したようなフローデータが生成される。
【０１０７】
以上説明したように、上記第２の実施形態によれば、作業内容を重視したデータフローであるワークフローも、フローチャートを生成する際に用いるのと同じ二項関係データを基に容易に作成することができる。
【０１０８】
（第３の実施形態）  
第１および第２の実施形態に係るフローデータ生成装置は、処理対象としてのデータがオブジェクト指向型データのような階層構造をもつデータであっても適用可能である。そこで、第３の実施形態として、階層構造をもつデータを処理対象とするフローデータ生成装置について説明する。特に、ここでは、第１の実施形態で説明したフローデータ生成装置が、階層構造をもつデータを処理対象とする場合について説明する。
【０１０９】
すなわち、ここでは、階層構造をもつ複数のデータのうちの１つを第１項のデータとし、当該複数のデータのうちの他の１つを第２項のデータとし、当該第１項のデータと当該第２項のデータと、当該第１項のデータから当該第２項のデータへの対応関係の種類とを１つの２項関係データとする。
【０１１０】
階層構造をもつデータを第１項、第２項とする複数の二項関係データの例を図１８に示す。
【０１１１】
処理対象の各データは、例えば、３つの階層からなり、そのうちの最上位の階層（第１階層）は、「Ｉ」、「ＩＩ」のいずれかであり、その次の階層（第２階層）は「α」〜「γ」のいずれかであり、最下位の階層（第３階層）は「Ａ」〜「Ｅ」のいずれかである。すなわち、第１階層と第２階層のデータは、データＡ〜Ｅが所属するクラス（属性）を示すとも云える。なお、ここでは、３つの階層にわたる所属関係（包含関係）を例として取り上げているが、一般的に、階層の数は任意でよい。ただし、各クラスとも包含関係にある場合を想定している。
【０１１２】
一般的に、データの階層化を行えば、上位の階層のクラス数は下位の階層のクラス数より少なくなるから、データをマクロな視点で統括して理解するのに適している。
【０１１３】
また、図１８の第１行の第２項のデータの第３階層は、空白であるが、これは、「データが無い」のではなく、その第２項のデータが「ＩＩ・β・」というデータであることを示すものである。なお、階層型データの特性上、上位の階層が無いデータ（たとえば、「ＩＩ・・Ｂ」というようなデータ）は許さないものとする。
【０１１４】
第３の実施形態に係るフローデータ生成装置の構成例を図１９に示す。なお、図１９において、図１と同一部分には同一符号を付し、異なる部分についてのみ説明する。すなわち、図１９では、図１の第１の部分木生成部３０が第３の部分木生成部３２に置き換わっている。
【０１１５】
第３の部分木生成部３２の構成例を図２０に示す。第３の部分木生成部３２は、第１の実施形態で説明した第１の部分木生成部３０と、位置データ属性判定部３１２とから構成されている。なお、属性判別部３１２については後述する。
【０１１６】
さて、位置データ生成記憶部２０では、第１の実施形態の場合と同様、図１８に示した複数の二項関係データを、図１８に示すような位置データに変換する。厳密には、クラス属性データが付加されているところが、第１の実施形態における位置データ生成記憶部２０で想定している入力データと異なるが、位置データ生成記憶部２０の処理動作は、図６と同様である。
【０１１７】
すなわち、例えば、ＩＤとは、各データの識別子であり、この各識別子に対応するデータの、図１８に示した二項関係データのテーブル中の出現位置を座標形式で表したものが、位置データである。
【０１１８】
図２１は、図３と同様に、位置データ生成記憶部２０で、図１８に示した二項関係データから生成された位置データのテーブルの記憶例を示したものである。
【０１１９】
例えば、ＩＤ「Ｉ・α・Ａ」に対応するデータ（以下、ＩＤを当該データの符号として用いて、簡単に、データ「Ｉ・α・Ａ」と呼ぶこともある）は、図１８に示したテーブル中の第１行の第１項と、第２行の第２項と、第３行の第３項に出現しているので、データ「Ｉ・α・Ａ」の位置データは、図２１に示すように、（１，１）（２，２）（３，１）である。
【０１２０】
ここで、属性判別部３１２について説明する。位置データ生成記憶部１０に記憶される任意の２つの位置データのそれぞれに対応する２つのデータの属性関係を判別するものである。例えば、図１８の第１行第１項のデータ「Ｉ・α・Ａ」と第２項のデータ「ＩＩ・β・」が与えられる場合、この２つは、同一のデータでもなければ、包含関係にもないことがわかる（Ａとβが包含関係に無い）。
【０１２１】
属性判定部３１２では、属性判別部３１２に与えられる２つのデータの順番に従って、例えば、１番目のデータと２番目のデータとについて、「１番目のデータが、２番目のデータと同一であるか、もしくは２番目のデータを包含する」か否かを判定する。
【０１２２】
例えば、図１８の第１行の第１項のデータ（１番目のデータ）と、第２項のデータ（２番目のデータ）とは、「同一でもなく、包含関係もない」、すなわち、「非」と判定される。また、データ「ＩＩ・β」と、データ「ＩＩ・β・Ｂ」とが、１番目のデータと２番目のデータとして、属性判別部３１２に入力された場合は、これら２つのデータは、同じクラス「ＩＩ・β」に属するため、「同一か、もしくは、包含関係にある」、すなわち、「是」と判定される。
【０１２３】
なお、属性判別部３１２における判定結果としては、上記「非」に代えて、データが存在しないという意味の「ＮＵＬＬ」を出力してもよい。また、上記「是」に代えて、判定対象の２つのデータをそのまま出力してもよい。例えば、判定対象の２つのデータが、「ＩＩ・β」と「ＩＩ・β・Ｂ」であったときは、判定結果は「是」であるので、「ＩＩ・β，ＩＩ・β・Ｂ」となる。
【０１２４】
次に、第３の部分木生成部３２の処理動作について、図２２に示すフローチャートを参照して説明する。なお、図２２において、図７と同一部分には同一符号を付し、異なる部分についてのみ説明する。すなわち、図２２では、ステップＳ１４がステップＳ１９に置き換えられている。そして、ステップＳ１２で、親ノード候補を選択したとき、ステップＳ１９では、単に、親ノード候補に対応するデータが第１項となる二項関係データを検索するのではなく、親ノード候補に対応するデータが、第１項のデータと同一か若しくは包含関係にある二項関係データを検索する。
【０１２５】
すなわち、第３の部分木生成部３２が、第１の部分木生成部３０と異なる点は、与えられた二項関係データの第２項のデータ（親ノード候補に対応するデータ）が、第１項のデータと同一である他の二項関係データの他に、さらに、第１項のデータが、与えられた二項関係データの第２項のデータと包含関係にある他の二項関係データをも検索するという点である。
【０１２６】
属性判別部３１２は、図２２のステップＳ１９において、親ノード候補として設定されたデータを１番目のデータとして、二項関係データの第１項にある各データを２番目のデータとしたときに、この各２番目のデータが当該１番目のデータと同一か、あるいは包含関係にあるか否かを判別する。
【０１２７】
ここで、図１８に示した二項関係データのテーブルと、図２１に示した位置データのテーブルを基にした、第３の部分木生成部３２の処理動作について具体的に説明する。例えば、図１８の第２行の二項関係データが部分木統合部４０から第２の部分木生成部３１に与えられたとする。
【０１２８】
第２行の二項関係データの第２項のデータ、すなわち、「Ｉ・α・Ａ」をルートとして、以下、逐次、連鎖するデータを検索してゆく。位置データ生成記憶部２０に記憶される、図１８に示したテーブル上で、第１項にある「Ｉ・α・Ａ」を表す位置データは、図２１から、（１，１）、（３，１）である。なお、（２，２）は第２項がデータ「Ｉ・α・Ａ」である場合の位置データであるから、ここでは除かれる。したがって、ここまでで、データ「Ｉ・α・Ａ」に連鎖するデータは、（１，２）と（３，２）のデータ、すなわち、図２１から、それぞれ、「ＩＩ・β」、「ＩＩ・β・Ｄ」であることがわかる。つまり、次式（１０）、（１１）で示すような二項関係データで表される。
【０１２９】
Ｉ・α・Ａ−Ｙｅｓ→ＩＩ・β・                  …（１０）
Ｉ・α・Ａ−Ｎｏ  →ＩＩ・β・Ｄ                …（１１）
次に、データ「Ｉ・α・Ａ」（図２３のノードＮ１）の子ノードとして接続された、データ「ＩＩ・β・」（図２３のノードＮ２）および「ＩＩ・β・Ｄ」（図２３のノードＮ８）をそれぞれ親ノード候補として、上記データ「Ｉ・α・Ａ」と同様に連鎖するデータを検索する。
【０１３０】
まず、データ「ＩＩ・β・」（図２３のノードＮ２）を親ノード候補としたときの処理を説明する。データ「ＩＩ・β・」は、「ＩＩ・β・」をクラス属性とするデータを包含していることになる。そこで、属性判別部３１２は、データ「ＩＩ・β・」を１番目のデータとして、二項関係データの第１項にある各データを２番目のデータとしたときに、データ「ＩＩ・β・」と同一か、あるいは包含関係にある（すなわち、「ＩＩ・β・」をクラス属性とする）データを検出する。
【０１３１】
この場合、データ「ＩＩ・β・」と同一か、あるいは包含関係にあるデータ（この場合、包含関係にあるデータ）を第１項とする二項関係データは、図１８に示すように、第４行と第５行に存在することがわかる。そして、第４行の二項関係データの第１項のデータ「ＩＩ・β・Ｄ」をデータ「ＩＩ・β・」の子ノードとして接続し（図２３のノードＮ３）、第５行の二項関係データの第１項のデータ「ＩＩ・β・Ｂ」をデータ「ＩＩ・β・」の子ノードとして接続する（図２３のノードＮ６）。
【０１３２】
第４行の二項関係データから、その第１項のデータ「ＩＩ・β・Ｄ」（図２３のノードＮ３）に、その第２項のデータ「ＩＩ・β・Ｂ」が子ノードとして接続する（図２３のノードＮ４）。また、第５行の二項関係データから、その第１項のデータ「ＩＩ・β・Ｂ」（図２３のノードＮ６）に、その第２項のデータ  「ＩＩ・γ・Ｅ」が子ノードとして接続する（図２３のノードＮ７）。
【０１３３】
次に、第４行の二項関係データの第２項のデータ「ＩＩ・β・Ｂ」を親ノード候補としたときに、当該データと同一か、あるいは包含関係にあるデータ（この場合、同一のデータ）を第１項とする二項関係データは、図１８に示すように、第５行に存在することがわかる。そして、第５行の二項関係データの第２項のデータ「ＩＩ・γ・Ｅ」をデータ「ＩＩ・β・Ｂ」の子ノードとして接続する（図２３のノードＮ５）。次に、第５行の二項関係データの第２項のデータ「ＩＩ・γ・Ｅ」を親ノード候補としたときに、当該データと同一か、あるいは包含関係にあるデータを第１項とする二項関係データは存在しない。従って、このノードＮ５が終端となる。
【０１３４】
また、図２３のノードＮ７について、上記同様にして、当該ノードＮ７は終端となる。
【０１３５】
次に、データ「ＩＩ・β・Ｄ」を親ノード候補（図２３のノード８）としたときの処理を説明する。属性判別部３１２は、データ「ＩＩ・β・Ｄ」を１番目のデータとして、二項関係データの第１項にある各データを２番目のデータとしたときに、データ「ＩＩ・β・Ｄ」と同一か、あるいは包含関係にある（この場合、同一の）データを検出する。
【０１３６】
この場合、データ「ＩＩ・β・Ｄ」と同一か、あるいは包含関係にある（この場合、同一の）データを第１項とする二項関係データは、図１８の第４行に存在する。そして、第４行の二項関係データの第２項のデータ「ＩＩ・β・Ｂ」をデータ「ＩＩ・β・Ｄ」の子ノードとして接続する（図２３のノードＮ９）。次に、第４行の二項関係データの第２項のデータ「ＩＩ・β・Ｂ」を親ノード候補としたときに、当該データと同一か、あるいは包含関係にあるデータ（この場合、同一のデータ）を第１項とする二項関係データは、図１８に示すように、第５行に存在することがわかる。そして、第５行の二項関係データの第２項のデータ「ＩＩ・γ・Ｅ」をデータ「ＩＩ・β・Ｂ」の子ノードとして接続する（図２３のノードＮ１０）。このノードＮ１０について、上記同様にして、当該ノードＮ１０は終端となる。
【０１３７】
なお、上記説明では省略したが、親ノードと子ノードを結ぶアークには、当該親ノードとしてのデータを第１項とし、当該子ノードを第２項とする二項関係データの関係の種類が付加されている。
【０１３８】
以上のようにして、第３の部分木生成部３２では、図２３に示すような、データ「Ｉ・α・Ａ」をルートとする部分木が生成される。
【０１３９】
なお、第３の部分木生成部３２では、第１の部分木生成部３０と同様、グラフとしてのノード共通化処理（同じ位置データを一つのノードにまとめる処理）は施しておらず、あくまで「木」としての構造として生成している。
【０１４０】
第３の部分木生成部３２で、図２３に示した部分木が生成されると、第１の実施形態と同様、部分木統合部４０の部分木統合処理により、１つの始点候補（例えば、ここでは、データ「Ｉ・α・Ｃ」）を始点とする、図２４に示したようなフローデータが生成される。
【０１４１】
以上説明したように、上記第３の実施形態によれば、処理対象のデータが階層構造をもつデータであっても、前述した第１の実施形態と同様、フローチャートを生成することができる。すなわち、フローデータの始点候補となるデータを第１項とする二項関係データの第２項をルートとする部分木を生成する際には、当該部分木の各ノードを親ノード候補としたとき、（ａ）親ノード候補に対応する処理対象データと同一若しくは包含関係にある処理対象データを第１項とする二項関係データの第１項を親ノードとし、第２項に対応する処理対象データを、当該親ノードの子ノードとして当該親ノードに接続し、（ｂ）親ノードと子ノードを接続するアークに、当該親ノードに対応する処理対象データを第１項とし当該子ノードに対応する処理対象データを第２項とする二項関係データの対応関係の種類を付加することにより、当該部分木を生成する。
【０１４２】
（第４の実施形態）  
第３の実施形態では、第１の実施形態で説明したフローデータ生成装置が階層構造をもつデータを処理対象とする場合について説明した。次に、第４の実施形態では、第２の実施形態に係るフローデータ生成装置が階層構造をもつデータを処理対象とする場合について説明する。具体的には、ここで説明するフローデータ生成装置は、第３の実施形態で説明したフローデータ生成装置に、第２の実施形態で説明した冗長データ削除部３１１が付加された構成となっている。
【０１４３】
図２５は、第４の実施形態に係るフローデータ生成装置の構成例を示したものである。なお、図２５において、図１９と同一部分には同一符号を付し、異なる部分についてのみ説明する。すなわち、図２５では、図１９の第３の部分木生成部３２が第４の部分木生成部３３に置き換わっている。
【０１４４】
第４の部分木生成部３３の構成例を図２６に示す。第４の部分木生成部３３は、第１の実施形態で説明した第１の部分木生成部３０と、第２の実施形態で説明した冗長データ削除部３１１と、第３の実施形態で説明した属性判別部３１２とから構成されており、第３の実施形態で説明したフローデータ生成装置における部分木を生成する処理において、親ノードが二項関係データの第１項のデータとなる二項関係データを検索する際には、検索対象から過去に検索された二項関係データを除くように、さらに、冗長データ削除部３１１が設けられている。
【０１４５】
冗長データ削除部３１１は、属性判別部３１２と第１の部分木生成部３０で、そのときの親ノード候補のデータと同一か若しくは包含関係にあるデータを第１項とする二項関係データを検索したときには、当該検索された二項関係データを次回の検索対象から削除するようになっている。
【０１４６】
位置データ属性判定部３１２では、第３の実施形態と同様、属性判別部３１２に与えられる２つのデータの順番に従って、例えば、１番目のデータと２番目のデータとについて、「１番目のデータが、２番目のデータと同一であるか、もしくは２番目のデータを包含する」か否かを判定する。
【０１４７】
次に、第４の部分木生成部３３の処理動作について、図２７に示すフローチャートを参照して説明する。
【０１４８】
なお、図２７において、図２２と同一部分には同一符号を付し、異なる部分についてのみ説明する。すなわち、図２７では、図２２のステップＳ１９がステップＳ１９´に置き換わり、ステップＳ１２で、親ノード候補を選択したとき、ステップＳ１９´では、当該親ノード候補に対応するデータと同一か若しくは包含関係にあるデータを第１項とする二項関係データであって、過去に未検索の二項関係データを検索する。従って、ステップＳ１９´で検索される二項関係データは、例えば、図１８に示した複数の二項関係データから、ステップＳ１１で部分木統合部４０から与えられた二項関係データやステップＳ１９で過去に検索された二項関係データを除いたものとなる。
【０１４９】
なお、ステップＳ１９´で二項関係データを検索する際には、検索対象から、予め、ステップＳ１１で部分木統合部４０から与えられた二項関係データやステップＳ１９´で過去に検索された二項関係データを除いてもよい。ステップＳ１９´では、例えば、図１８に示した全ての二項関係データの中から、親ノード候補に対応するデータと同一か若しくは包含関係にあるデータが第１項となる二項関係データを検索した後、冗長データ削除部３１１にて、その検索された二項関係データが、ステップＳ１１で部分木統合部４０から与えられた二項関係データやステップＳ１９で過去に検索された二項関係データといった冗長なデータであるかをチェックするようにしてもよい。もし、検索された二項関係データが、そのような冗長なデータであるときには、冗長データ削除部３１１は、当該検索された二項関係データを、第１の部分木生成部３０におけるステップＳ１９以降の処理対象とならないように、第１の部分木生成部３０に出力しない。一方、検索された二項関係データが、冗長なデータでないときには、冗長データ削除部３１１は、当該検索された二項関係データを、次回の冗長データ検出に用いるため記憶するとともに、当該二項関係データを第１の部分木生成部３０におけるステップＳ１９以降の処理対象となるよう、第１の部分木生成部３０に出力する。
【０１５０】
例えば、第３の実施形態の場合と同様に、図１８に示した二項関係データのテーブルが二項関係データ記憶部１０に記憶され、図２１に示した位置データのテーブルが位置データ生成記憶部２０に記憶されている場合に、第４の部分木生成部３３の処理動作により、図２８に示すような部分木が生成される。
【０１５１】
図２８のノードＮ１からノードＮ６までの部分木の生成は、第３の実施形態と同様であるので、説明は省略する。しかし、ノードＮ６を親ノード候補としたときに、当該親ノード候補に対応するデータと同一若しくは包含関係にあるデータを第１項とする二項関係データ（図１８の第５行の二項関係データ）は、既にノードＮ４とノードＮ５の親子関係を生成する際に用いられているので（検索されているので）、ここでは、そのような二項関係データは検索されない。従って、ノードＮ６が終端になる。
【０１５２】
同様にして、ノードＮ８を親ノード候補としたときに、当該親ノード候補に対応するデータと同一若しくは包含関係にあるデータを第１項とする二項関係データ（図１８の第４行の二項関係データ）は、既にノードＮ３とノードＮ４の親子関係を生成する際に用いられているので（検索されているので）、ここでは、そのような二項関係データは検索されない。従って、ノードＭ８は終端となる。
【０１５３】
なお、第４の部分木生成部３３では、第１の部分木生成部３０と同様、グラフとしてのノード共通化処理（同じ位置データを一つのノードにまとめる処理）は施しておらず、あくまで「木」としての構造として生成している。
【０１５４】
第４の部分木生成部３３で、図２８に示した部分木が生成されると、第１の実施形態と同様、部分木統合部４０の部分木統合処理により、１つの始点候補（例えば、ここでは、データ「Ｉ・α・Ｃ」）を始点のノードＮ０する、図２９に示したようなフローデータが生成される。
【０１５５】
以上説明したように、上記第４の実施形態によれば、処理対象のデータが階層構造をもつデータであっても、前述した第２の実施形態と同様、フローチャートを生成することができる。しかも、作業内容を重視したデータフローであるワークフローも、フローチャートを生成する際に用いるのと同じ二項関係データを基に容易に作成することができる。
【０１５６】
（第５の実施形態）  
第１の実施形態のフローデータ生成装置により生成される、図１１に示したようなフローデータは、手順論理を優先して同じノードを繰り返して使うことを許したフローデータ（第１のフローデータ）、すなわち、フローチャートである。
【０１５７】
第２の実施形態のフローデータ生成装置により生成される図１７に示したようなフローデータは、同じノードが一度しかでてこない作業そのものをまとめたフローデータ（第２のフローデータ）、すなわち、ワークフローである。
【０１５８】
そこで、第５の実施形態では、上記２種類のフローデータを生成可能なフローデータ生成装置について説明する。
【０１５９】
図３０は、第５の実施形態に係るフローデータ生成装置の構成例を示したものである。なお、図１と同一部分には同一符号を付し、異なる部分についてのみ説明する。すなわち、図３０では、第１の部分木生成部３０の他に、第２の実施形態で説明した第２の部分木生成部３１を具備し、この両方の部分木生成部３０、３１で、それぞれ、図７、図１５に示した処理動作を行うことにより、第１のフローデータと第２のフローデータとを生成するようになっている。
【０１６０】
利用者にとってフローチャートを作るつもりで二項関係データを入力するとワークフローが得られ、ワークフローを作るつもりで二項関係データを入力するとフローチャートを得られるということになり、結局、本実施形態に係るフローデータ生成装置は、フローチャートとワークフローとが相互に変換される装置としてとらえられる。
【０１６１】
図３０に示すように、第２の部分木生成部３１は、第１の部分木生成部３０と並列に設けられ、第１の部分木生成部３０の入力信号と同じものが第２の部分木生成装置３１にも入力され、第２の部分木生成部３１からの出力信号は、第１の部分木生成部３０からの出力信号と同様、部分木統合部４１へ入力する。
【０１６２】
部分木統合部４１では、第１の部分木生成部３０および第２の部分木生成部３１のそれぞれで生成された部分木を統合して、それぞれのフォーマットに応じた二種類のフローデータを出力する。それぞれのフォーマットに対応して部分木を統合する意味では、第１および第２の実施形態で説明した部分木統合部４０と全く同じであるが、２種類のフローデータを生成して出力する点で異なるので、ここでは、新たな部分木統合部４１とした。
【０１６３】
以上説明したように、上記第５の実施形態によれば、同じ二項関係データから、フローチャートとワークフローの２種類のフローデータを同時に生成することができる。
【０１６４】
（第６の実施形態）  
第５の実施形態と同様にして、第３と第４の実施形態を組み合わせることにより、階層構造をもつデータを処理対象とするフローデータ生成装置においても、上記のように、１つの二項関係データのテーブルから、フローチャートとワークフローの両方を同時に生成することができる。
【０１６５】
そこで、第６の実施形態では、階層構造をもつデータを処理対象とするとともに、上記２種類のフローデータを生成可能なフローデータ生成装置について説明する。
【０１６６】
図３１は、第６の実施形態に係るフローデータ生成装置の構成例を示したものである。なお、図１９と同一部分には同一符号を付し、異なる部分についてのみ説明する。すなわち、図３１では、第３の部分木生成部３２の他に、第４の実施形態で説明した第４の部分木生成部３３を具備し、この両方の部分木生成部３２、３３で、それぞれ、図２２、図２７に示した処理動作を行うことにより、第１のフローデータと第２のフローデータとを生成するようになっている。
【０１６７】
利用者にとってフローチャートを作るつもりで二項関係データを入力するとワークフローが得られ、ワークフローを作るつもりで二項関係データを入力するとフローチャートを得られるということになり、結局、本実施形態に係るフローデータ生成装置は、フローチャートとワークフローとが相互に変換される装置としてとらえられる。
【０１６８】
図３１に示すように、第４の部分木生成部３３は、第３の部分木生成部３２と並列に設けられ、第３の部分木生成部３２の入力信号と同じものが第４の部分木生成装置３３にも入力され、第４の部分木生成部３３からの出力信号は、第３の部分木生成部３２からの出力信号と同様、部分木統合部４１へ入力する。
【０１６９】
部分木統合部４１では、第３の部分木生成部３２および第４の部分木生成部３３のそれぞれで生成された部分木を統合して、二種類のフローデータを出力する。それぞれのフォーマットに対応して部分木を統合する意味では、第３および第４の実施形態で説明した部分木統合部４０と全く同じであるが、２種類のフローデータを生成して出力する点で異なるので、ここでは、新たな部分木統合部４１とした。
【０１７０】
以上説明したように、上記第６の実施形態によれば、処理対象のデータが、階層構造をもつデータであっても、同じ二項関係データから、フローチャートとワークフローの２種類のフローデータを同時に生成することができる。
【０１７１】
（第７の実施形態）  
第２の実施形態にかかるフローデータ生成装置（図１３参照）で生成される、例えば図１７に示したフローデータや、第４の実施形態にかかるフローデータ生成装置（図２５参照）で生成される、例えば図２９に示したフローデータについて、複数の同じノードを１つに集約する機能を持つフローデータ生成装置について説明する。
【０１７２】
すなわち、図１３や図２５の例えば、部分木統合部４０では、生成されたフローデータのノードを１つずつチェックしてゆき、２度以上現れるデータを持つノードについては、２度目以降に出現するノードを当該フローデータから削除するとともに、当該ノードに向けられていたアーク（枝、線、辺）を、最初に当該データが出現するノードへ付け直すことにより、グラフデータを生成する。
【０１７３】
部分木統合部４０の処理動作について、図３２に示すフローチャートを参照して説明する。なお、この処理は、いわゆる「リスト」を利用すれば簡単にできる。
【０１７４】
まず、図１７や図２９に示したようなフローデータの各ノードに、各ノードを識別するための例えば番号（ノード番号）を順に割り当てる。このとき、各ノードは未チェック状態とする（ステップＳ４１）。そして、全てのノードがチェック済み状態になるまで（ステップＳ４２）、以下のステップＳ４３〜ステップＳ４６の処理を繰り返す。
【０１７５】
ステップＳ４３では、例えば、ノード番号順に、未チェック状態のノードを１つ選択し、それを処理対象として以下の処理を行う。すなわち、チェック済み状態のノードのなかに、処理対象のノードに対応するデータに一致するデータが存在するときには（ステップＳ４４）、処理対象のノードに対応するデータと一致するチェック済み状態のノードに、処理対象のノードに向けられたアークを付け替え、さらに、当該処理対象のノードをフローデータから削除する（ステップＳ４５）。そして、当該処理対象のノードをチェック済み状態に設定し（ステップＳ４６）、ステップＳ４２へ戻る。一方、ステップＳ４４で、チェック済み状態のノードのなかに、処理対象のノードに対応するデータに一致するデータが存在しないときは、ステップＳ４６へ進み、当該処理対象のノードをチェック済み状態に設定し、ステップＳ４２へ戻る。
【０１７６】
全てのノードがチェック済み状態でないならば（ステップＳ４２）、ノード番号順に、未チェック状態のノードを１つ選択し、それを新たな処理対象として（ステップＳ４３）、ステップＳ４４〜ステップＳ４６の処理を行う。
【０１７７】
例えば、図１７のフローデータの場合、データＢに対応するノードは２つ存在する。最初のノードは、データＡを親ノードとし、２番目のノードはデータＤを親ノードとしている。従って、この場合、２番目のノードに向けられているアーク（データＤからデータＢへのアーク）は、図３２のステップＳ４６において、１番目のノードに付け替えられ、図３３に示すように、データＤから１番目のデータＢに対応するノードにアークが繋がる。
【０１７８】
また、図２９に示すフローデータの場合、データ「ＩＩ・β・Ｄ」に対応するノードはノードＮ３とノードＮ８に存在し、データ「ＩＩ・β・Ｂ」に対応するノードはノードＮ４とノードＮ６に存在する。従って、この場合、ノードＮ１からノードＮ８に向けられたアークは、図３２のステップＳ４５において、ノードＮ３に付け替えられる。すなわち、図３４に示すように、ノードＮ１からノードＮ３にアークが繋がる。また、ノードＮ２からノードＮ６に向けられたアークは、図３２のステップＳ４５において、ノードＮ４に付け替えられる。すなわち、図３４に示すように、ノードＮ２からノードＮ４にアークが繋がる。
【０１７９】
なお、図１７や図２９に示したフローデータでは、２度目以上同じデータが現れるノードについてはその子ノードは存在しないので、以後のノードチェックでアークがなくなるなどの問題は起こらない。
【０１８０】
また、図３４に示した、ノードに対応する各データが階層構造をもつようなフローデータは、図３５に示すように表現することもできる。
【０１８１】
例えば、図機能をもつツールを利用すれば、図３４に示すフローデータを図３５に示すように表現することができる。すなわち、各ノードに対応するデータのクラス属性から、各データをクラス属性に対応する集合関係で表し、その結果、階層間のアークも表すことができるようになっている。なお、上位クラスそのものからのアークの矢印は点線で示した。さらにこのような集合関係を図で示す場合には上位クラスからの直接のアークは省略しても、図的にアークと同様の効果があると考えられるので、省略するのもよい。
【０１８２】
なお、図３２に示した処理動作を、第６の実施形態にかかるフローデータ生成装置（図３１参照）の部分木統合部４１が行うようにしてもよく、この場合も上記同様である。
【０１８３】
以上説明したように、上記第７の実施形態によれば、ワークフローから、当該ワークフロー上の複数の同じノードを１つに集約した、いわゆるグラフを容易に生成することができる。
【０１８４】
（第１〜第７の実施形態について）
個々の二項関係データを記述すれば、その集合の、データどうしの関係を自動的につなげることができ、利用者が全体を想定しながらデータをつなぎあわせなくてもよい。また、同じ部分木を重複してデータ木を作成するものと、重複させないでデータ木を作成するものを同じ入力データから作成することで、条件論理優先のフローと各処理優先のフローを、作成時と利用時で使い分けすることが可能である。各処理というノード毎にまとめなおさなくてもよくなる。以上のことから、フロー作成の人間の頭脳の負荷を下げることができる。少数の専門者にとっては膨大なデータにおいても、さまざまな立場の多くの人が各自にかかわる個別のデータを簡単に入力でき、それらを統一的に扱えることが可能となる。
【０１８５】
本発明の実施の形態に記載した本発明の手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フロッピーディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤなど）、半導体メモリなどの記録媒体に格納して頒布することもできる。すなわち、記録媒体に、上記各実施形態で記述した各構成要素の機能や、各フローチャートで図示した処理ステップを実現するプログラムコードを記録する。そして、この記録媒体をプロセッサが実行することにより、プロセッサを上記フローデータ作成を実行する装置として機能させることができる。
【０１８６】
一例としては、図４２（ａ）に示すように、プロセッサ１０１に接続された記憶装置１０２に、このプロセッサ１０１または記憶装置１０２を二項関係データ記憶部１０、位置データ生成記憶部２０、第１の部分木生成部３０及び部分木統合部４０として機能させるためのプログラムを記憶しておく。もちろん、図４２（ｂ）記憶装置１０２ではなく記録媒体１０４にこのプログラムを格納し、記録媒体読取装置１０３で読み出しプロセッサ１０１で実行してもよい。
【０１８７】
以上説明したように、上記第１乃至第７実施形態によれば、フローチャートやワークフローなどのフローデータが入力データを基に容易に作成することができる。
【０１８８】
（第８の実施形態）
本実施形態は第１〜第７実施形態を適用した具体的な実施形態に関する。上記実施形態では、２項関係データの内容、その具体的な表示例を特に示すことなく説明したが、本実施形態ではこれらの具体例が示される。
【０１８９】
上記第１〜第７実施形態の特徴は、  
（１）階層階層構造表現を利用できるので、複雑な対象も容易にフロー表現が可能である。  
（２）矢印の数を複数扱えるので、複合的なデータフロー表現が可能である。  
（３）二項関係単位なので、データの追加削除が簡単である。
【０１９０】
（４）フロー表現が瞬時に行なえるので、マニュアル等での利用時にオンラインで変更が可能である。  
これら（１）〜（４）に示される特徴を踏まえて、応用事例として上記第１〜第７実施形態が手順書作成装置に適用される。
【０１９１】
機器の操作などを示した手順書や故障時の対応マニュアルなどを上記第１〜第７実施形態を利用して作成すると、わかりやすい表示にできるだけでなく、データ変更等の保守管理にも便利である。多くの手順書やマニュアルでは、最終段階において、データ構造の表現の統一性よりも、見栄えをよくするように“編集”されている。この編集作業は熟練者の手作業によっておこなわれるために、マニュアル作成の障害となっている。
【０１９２】
本実施形態は、見栄えを少し犠牲にするという観点に立って、基になるデータ作成者が直接、マニュアルとしてのデータフローをボタンひとつ押せば生成することを可能にする。なお、実現するための構成は、第１〜第７実施形態で示されたものであり、その詳細な説明は省略する。
【０１９３】
図３６〜図３９は本実施形態に係るビデオ録画予約のための手順書に適用する応用事例を説明するための図である。
【０１９４】
図３６は、ディジタルビデオ録画機を想定した、録画予約の手続きの一部に関する手順用の二項関係データである。図３６では、表計算ツールの表計算シートに、二項関係データが記述されている。１行が１つの２項関係データを構成し、これら複数行により、２項関係データの集合が構成される。
【０１９５】
列３６１〜列３６３は第１項データを、列３６５〜列３６７は第２項データを、列３６４は第１項データと第２項データの二項関係の種類を示しており、数値で表現されている。第１項データは、最上層から順に列３６１，３６２及び３６３の３階層で表現される。第２項データは、最上層から順に列３６５，３６６及び３６７の３階層で表現される。
【０１９６】
あらかじめ、上記第１〜第７実施形態に示したようなアルゴリズムを実行形式にしたものをメニューボタン等で起動させるようにしておく。そして、得られるフローデータをＧＵＩツールの書式として出力する。
【０１９７】
図３７は得られたフローデータの一例を示す図である。
【０１９８】
図３７では、チェックボックスとその後につづくメッセージにより１つのノードが表現されている。
【０１９９】
図３７の表現においては、共通するデータ項目は、ひとつの枠内で表現されており、枠３７１〜３７５の５つのデータ項目が記載されている。たとえば、枠３７２の「予約」のなかには「ディジタル録画」と「アナログ録画」の種類があり、「アナログ録画」の枠３７２ａには、「個別設定」の枠３７２ｂと「予約コード設定」の枠３７２ｃが示されている。このように、階層的構造になっているデータを一目で表現することが可能である。これにより、上記（１）の特徴が実現される。
【０２００】
また、図３７においては、ディジタル放送をディジタル予約する場合の一連の処理が、チェックをつけることで実線の太い矢印で表現されている。他の録画方法、たとえば、ディジタル放送のアナログ録画をおこないたい場合には、破線の矢印にしたがってゆけばよい。このように、録画予約というなかに、幾つかの一連の作業が選択肢として存在するような場合にも、それぞれをいちいち別立てのマニュアルにせずとも集約して表現することができて、「録画予約」を一括してとらえることもでき、わかりやすい。これにより、上記（２）の特徴が実現される。
【０２０１】
なお、本実施形態では、矢印を各ラベルに上書きして表現したが、整形上、上書きしないようにしたり、また、対応するラベルの背景色や文字の色を利用した表現も可能である。
【０２０２】
図３８は、図３６のデータにおいて、「予約コード」に関わるものを削除し、あらたに、「リモコン予約」（リモコン等で予約設定をおこなうような場合）と「スピード予約」（予約機能に制約はあるが、最短時間で予約設定をするようなもの）を付加したものである。削除の場合はデータを消去しても良いが、ここではコメントアウトしている。コメントアウトを指示する記号は、図３８では「？」マークで示されており、第１８〜２２行目の二項関係データに付加されている。
【０２０３】
また、データの追加は、二項関係データを、元のデータにそのまま追加すればよい。すなわち、例えば二項関係データを表計算シートの１行分に、画面上で入力することのみで二項関係データの追加が完了する。これにより、図３９に示すフローデータが得られる。
【０２０４】
従来、多くのマニュアルでは、フローデータは、ＧＵＩエディタを利用して、直接描かれることが多い。元のデータのわずかな削除・追加でも、全体を作り直さざるをえない。グラフ理論をそのまま利用した、グラフあるいはツリーの描画ツールは存在するが、階層表現ができない、ノード間におけるアーク（矢印）の数の制限があるなどの特徴により、複雑なデータ構成を持つマニュアルなどにおいては用いられていない。本実施形態の手法によれば、二項関係データをそれぞれ個別に削除・追加するだけで、フローデータの修正が自動的になされる。これにより、上記（３）の特徴が実現される。
【０２０５】
（第９の実施形態）
本実施形態は第１〜第７実施形態を適用した具体的な実施形態に関する。上記実施形態では、２項関係データの内容、その具体的な表示例を特に示すことなく説明したが、本実施形態ではこれらの具体例が示される。本実施形態では、応用事例として、上記実施形態がインタラクティブ指示システムに適用される。
【０２０６】
コールセンターなどにおける端末に本実施形態を適用することにより、インターネットを介してリアルタイムに、情報をデータフローにして示すことができる。音声では、シーケンシャルにしか情報を与えられないので、条件分岐の多い情報の伝達には不便である。ＷＷＷページが利用できる、あるいは、画像のやり取りができるようなネットワークシステムを使える場合には、個々の情報とそれら情報のつながりをその場で二項関係データにする。そして、データフローとして端末に送信する。これにより、即時にデータフローを相手に提示することができる。
【０２０７】
端末上でのソフトウェアの操作指示を二項関係データで表現する場合に基づき以下説明する。一例として、複数ファイルをコピーする場合の操作指示は、以下のように示される。
【０２０８】
操作指示１  ファイル１のアイコンをクリック（反転状態になる）  
操作指示２  Ｃｔｒｌキーを押しながらファイル２のアイコンをクリック（反転状態になる）  
操作指示３  Ｃｔｒｌキーを押しながらファイル３のアイコンをクリック（反転状態になる）  
操作指示４  選択されている（反転状態）のアイコンをクリックして、キープする  
操作指示５  キープしながら、マウスをコピーしたいフォルダに移動する  
操作指示６  フォルダが反転したら、キープを放す  
操作指示７  コピー完了  
図４０は、三つのファイルをある別のフォルダにコピーするという、上記操作指示１〜７を二項関係データに示した図である。これは表計算シート上でキーボードから入力したものである。
【０２０９】
図４０では、表計算ツールの表計算シートに、二項関係データが記述されている。１行が１つの２項関係データを構成し、これら複数行により、２項関係データの集合が構成される。
【０２１０】
列４０１〜列４０３は第１項データを、列４０５〜列４０７は第２項データを、列４０４は第１項データと第２項データの二項関係の種類を示しており、数値で表現されている。第１項データは、最上層から順に列４０１，４０２及び４０３の３階層で表現される。第２項データは、最上層から順に列４０５，４０６及び４０７の３階層で表現される。
【０２１１】
なお、たとえば、コールセンターにおいては、音声入力を用いるとさらに便利である。
【０２１２】
図４１は、図４０の二項関係データをデータフローにしたものである。矢印を実線と破線に色分けしているのは、実線は、マウスの動作にもとづくもの、破線はそれ以外の関連を示すためである。このように、複雑な関係をもつ情報を、自然言語(音声)のようなシーケンシャルな表現だけではなくて、瞬時に図示することが可能になり、オンラインにおいて、より分かりやすい形で伝えることができる。これにより、第８実施形態で説明した特徴（４）が実現される。
【０２１３】
以上説明したように、上記実施形態によれば、フローデータ作成者の思考に沿った分岐条件を含む論理の流れを重視するフローデータであるフローチャートとフローデータ利用者の思考の流れに沿った、分かり易い作業内容の手順を重視するフローデータであるワークフローとが同じ入力データから容易に作成することができる。
【０２１４】
なお、本発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。さらに、上記実施形態には種々の段階の発明は含まれており、開示される複数の構成要件における適宜な組み合わせにより、種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題（の少なくとも１つ）が解決でき、発明の効果の欄で述べられている効果（のなくとも１つ）が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【産業上の利用可能性】
【０２１５】
以上説明したようにこの発明は、例えば、作業手順書や機器解説書、故障診断システムデータなどに用いられるフローチャートやワークフロー、グラフなどのフローデータを作成するための方法及び装置の技術分野に有効である。
【図面の簡単な説明】
【０２１６】
【図１】第１の実施形態にかかるフローデータ生成装置の構成例を示した図。
【図２】同実施形態に係る二項関係データ記憶部に記憶される二項関係データのテーブルを示した図。
【図３】同実施形態に係る位置データ生成記憶部に記憶される位置データのテーブルを示した図。
【図４】同実施形態に係る位置データのテーブルの他の例を示した図。
【図５】同実施形態に係るフローデータ生成装置の処理動作の概略を説明するためのフローチャート。
【図６】同実施形態に係る位置データ生成記憶部の処理動作を説明するためのフローチャート。
【図７】同実施形態に係る第１の部分木生成部の処理動作を示すフローチャート。
【図８】同実施形態に係る第１の部分木生成部で生成された部分木の一例を示した図。
【図９】同実施形態に係る部分木統合部の処理動作を示すフローチャート。
【図１０】同実施形態に係る隣接行列の一具体例を示した図。
【図１１】同実施形態に係る生成されたフローデータの一例を示した図。
【図１２】同実施形態に係る生成されたフローデータの他の一例を示した図。
【図１３】本発明の第２の実施形態に係るフローデータ生成装置の構成例を示した図。
【図１４】同実施形態に係る第２の部分木生成部の構成例を示した図。
【図１５】同実施形態に係る第２の部分木生成部の処理動作を説明するためのフローチャート。
【図１６】同実施形態に係る第２の部分木生成部で生成された部分木の一例を示した図。
【図１７】同実施形態に係るフローデータのさらに他の例を示した図。
【図１８】本発明の第３の実施形態に係る二項関係データ記憶部に記憶される二項関係データのテーブルを示した図。
【図１９】同実施形態に係るフローデータ生成装置の構成例を示した図。
【図２０】同実施形態に係る第３の部分木生成部の構成例を示した図。
【図２１】同実施形態に係る位置データ生成記憶部に記憶される位置データのテーブルを示した図。
【図２２】同実施形態に係る第３の部分木生成部の処理動作を説明するためのフローチャート。
【図２３】同実施形態に係る第３の部分木生成部で生成された部分木の一例を示した図。
【図２４】同実施形態に係るフローデータのさらに他の例を示した図。
【図２５】本発明の第４の実施形態に係るフローデータ生成装置の構成例を示した図。
【図２６】同実施形態に係る第４の部分木生成部の構成例を示した図。
【図２７】同実施形態に係る第４の部分木生成部の処理動作を説明するためのフローチャート。
【図２８】同実施形態に係る第４の部分木生成部で生成された部分木の一例を示した図。
【図２９】同実施形態に係るフローデータのさらに他の例を示した図。
【図３０】本発明の第５の実施形態に係るフローデータ生成装置の構成例を示した図。
【図３１】本発明の第６の実施形態に係るフローデータ生成装置の構成例を示した図。
【図３２】本発明の第７の実施形態に係るグラフ生成処理動作を説明するためのフローチャート。
【図３３】同実施形態に係る図１７に示したフローデータから生成されたグラフを示した図。
【図３４】同実施形態に係る図２９に示したフローデータから生成されたグラフを示した図。
【図３５】同実施形態に係る図２９に示したフローデータから生成されたグラフの他の例を示した図。
【図３６】本発明の第８実施形態に係るディジタルビデオ録画機を想定した、録画予約の手続きの一部に関する手順用の二項関係データを示す図。
【図３７】同実施形態に係る図３６の二項関係データに基づき得られたフローデータの一例を示す図。
【図３８】同実施形態に係る図３６の二項関係データの一部を削除した二項関係データを示す図。
【図３９】同実施形態に係る図３８の二項関係データに基づき得られたフローデータの一例を示す図。
【図４０】本発明の第９実施形態に係るインタラクティブ指示システムにおける操作指示１〜７を二項関係データに示した図。
【図４１】同実施形態に係る図４０の二項関係データをデータフローにした図。
【図４２】上記各実施形態を実現するための構成例を示す図。
【符号の説明】
【０２１７】
１０…二項関係データ記憶部、２０…位置データ生成記憶部、３０…第１の部分木生成部、４０、４１…部分木統合部、３１…第２の部分木生成部、３２…第３の部分木生成部、３３…第４の部分木生成部、３１１…冗長データ削除部、３１２…属性判別部
【図１】
2004246879.tif 000003
【図２】
2004246879.tif 000004
【図３】
2004246879.tif 000005
【図４】
2004246879.tif 000006
【図５】
2004246879.tif 000007
【図６】
2004246879.tif 000008
【図７】
2004246879.tif 000009
【図８】
2004246879.tif 000010
【図９】
2004246879.tif 000011
【図１０】
2004246879.tif 000012
【図１１】
2004246879.tif 000013
【図１２】
2004246879.tif 000014
【図１３】
2004246879.tif 000015
【図１４】
2004246879.tif 000016
【図１５】
2004246879.tif 000017
【図１６】
2004246879.tif 000018
【図１７】
2004246879.tif 000019
【図１８】
2004246879.tif 000020
【図１９】
2004246879.tif 000021
【図２０】
2004246879.tif 000022
【図２１】
2004246879.tif 000023
【図２２】
2004246879.tif 000024
【図２３】
2004246879.tif 000025
【図２４】
2004246879.tif 000026
【図２５】
2004246879.tif 000027
【図２６】
2004246879.tif 000028
【図２７】
2004246879.tif 000029
【図２８】
2004246879.tif 000030
【図２９】
2004246879.tif 000031
【図３０】
2004246879.tif 000032
【図３１】
2004246879.tif 000033
【図３２】
2004246879.tif 000034
【図３３】
2004246879.tif 000035
【図３４】
2004246879.tif 000036
【図３５】
2004246879.tif 000037
【図３６】
2004246879.tif 000038
【図３７】
2004246879.tif 000039
【図３８】
2004246879.tif 000040
【図３９】
2004246879.tif 000041
【図４０】
2004246879.tif 000042
【図４１】
2004246879.tif 000043
【図４２】
2004246879.tif 000044