(57)【要約】【課題】自然言語を用いた仕様記述からアプリケーションソフトウェアをコンポーネント単位で構築する際に使用する言語知識の構築を支援する。【解決手段】コンポーネントの組合せ、構成情報などを用いて、言語知識の構築を支援する。コンポーネントαに語彙(ラベル)ａが与えられ、コンポーネントβに語彙ｂが与えられている条件下で、コンポーネントαとコンポーネントβを連続して使用した場合、語彙ａと語彙ｂの繋がりを語彙ｃで命名し、ｃの分割語彙として語彙ａと語彙ｂの繋がりを言語知識ベースに登録する。【選択図】図１０
2007025798.tif 000002
【特許請求の範囲】
【請求項１】
入力された業務フローの要素の記述から言語知識に基づいて、コンポーネントと当該コンポーネントの機能を記述した語彙ラベルの集合との関係を対応付ける第１のデータベースを検索し、前記業務フローに対応するようにコンポーネントを組み合わせてアプリケーションを構築する際に、前記検索を行う言語知識の構築を支援するプログラムであって、
前記業務フローの要素に対応して複数のコンポーネントを記述したサブフローが入力されたことを検出する手順と、
前記業務フローの要素に対応する複数のコンポーネント間の関係が直列または並列のいずれであるかを判定する手順と、
前記サブフローを構成するコンポーネントの語彙ラベルの集合を取得する手順と、
前記語彙ラベルの集合に基づいて、前記第１のデータベースの語彙ラベルの集合を検索する手順と、
前記検索した第１のデータベースの語彙ラベルの集合を、前記業務フローの要素の記述に対応する語彙ラベルの集合として前記言語知識に登録する手順と、
を計算機に機能させることを特徴とする言語知識構築支援プログラム。
【請求項２】
前記言語知識に登録する手順は、
前記検索した第１のデータベースの語彙ラベルの集合から各集合の要素の組み合わせを生成する手順と、
前記各集合の要素の組み合わせを計算機の出力部に出力する手順と、
前記出力した組み合わせのうち選択されたものを受け付ける手順と、
前記選択された組み合わせを前記言語知識に登録する手順と、
を含むことを特徴する請求項１に記載の言語知識構築支援プログラム。
【請求項３】
前記言語知識は、言語知識の種別を示す関係名と、当該言語知識を代表する語彙を示す代表元と、前記語彙ラベルの集合を格納する複数の要素とを含んで構成され、
前記言語知識に登録する手順は、
前記業務フローの要素に対する記述を前記代表元に設定する手順と、
前記複数のコンポーネント間の関係が直列または並列のいずれであるかを前記関係名に設定する手順と、
前記検索した第１のデータベースの語彙ラベルの集合の要素を前記言語知識の複数の要素として登録する手順と、
を含むことを特徴とする請求項１または請求項２に記載の言語知識構築支援プログラム。
【請求項４】
入力された業務フローの要素の記述から言語知識に基づいて、コンポーネントと当該コンポーネントの機能を記述した語彙ラベルの集合との関係を対応付ける第１のデータベースを検索し、前記業務フローに対応するようにコンポーネントを組み合わせてアプリケーションを構築する際に、前記検索を行う言語知識の構築を支援するプログラムであって、
前記第１のデータベースが更新されたことを検出する手順と、
前記更新されたコンポーネントを検出する手順と、
前記更新されたコンポーネントと前記第１のデータベースの既登録のコンポーネントの類似度を算出する手順と、
前記類似度が所定の閾値以上であるか否かを判定する手順と、
前記類似度が所定の閾値以上となった既登録のコンポーネントの語彙ラベルの集合を、更新されたコンポーネントの語彙ラベルの集合として前記言語知識に登録する手順と、
を計算機に機能させることを特徴とする言語知識構築支援プログラム。
【請求項５】
前記言語知識に登録する手順は、
前記類似度が所定の閾値以上となった既登録のコンポーネントの語彙ラベルの集合から各集合の要素の組み合わせを生成する手順と、
前記各集合の要素の組み合わせを計算機の出力部に出力する手順と、
前記出力した組み合わせのうち選択されたものを受け付ける手順と、
前記選択された組み合わせを前記言語知識に登録する手順と、
を含むことを特徴する請求項４に記載の言語知識構築支援プログラム。
【請求項６】
前記言語知識は、言語知識の種別を示す関係名と、当該言語知識を代表する語彙を示す代表元と、前記語彙ラベルの集合を格納する複数の要素とを含んで構成され、
前記言語知識に登録する手順は、
前記更新されたコンポーネントに対する語彙ラベルを前記代表元に設定する手順と、
前記関係名に類義語であることを設定する手順と、
前記類似度が所定の閾値以上となった第１のデータベースの語彙ラベルの集合の要素を前記言語知識の複数の要素として登録する手順と、
を含むことを特徴とする請求項５または請求項６に記載の言語知識構築支援プログラム。
【請求項７】
計算機に入力された業務フローの要素の記述から言語知識に基づいて、コンポーネントと当該コンポーネントの機能を記述した語彙ラベルの集合との関係を対応付ける第１のデータベースを検索し、前記業務フローに対応するようにコンポーネントを組み合わせてアプリケーションを構築する際に、前記検索を行う言語知識の構築を支援する方法であって、
前記業務フローの要素に対応して複数のコンポーネントを記述したサブフローが入力されたことを検出する処理と、
前記業務フローの要素に対応する複数のコンポーネント間の関係が直列または並列のいずれであるかを判定する処理と、
前記サブフローを構成するコンポーネントの語彙ラベルの集合を取得する処理と、
前記語彙ラベルの集合に基づいて、前記第１のデータベースの語彙ラベルの集合を検索する処理と、
前記検索した第１のデータベースの語彙ラベルの集合を、前記業務フローの要素の記述に対応する語彙ラベルの集合として前記言語知識に登録する処理と、
を含むことを特徴とする言語知識の構築支援方法。
【請求項８】
前記言語知識に登録する処理は、
前記検索した第１のデータベースの語彙ラベルの集合から各集合の要素の組み合わせを生成する処理と、
前記各集合の要素の組み合わせを計算機の出力部に出力する処理と、
前記出力した組み合わせのうち選択されたものを受け付ける処理と、
前記選択された組み合わせを前記言語知識に登録する処理と、
を含むことを特徴する請求項７に記載の言語知識の構築支援方法。
【請求項９】
前記言語知識は、言語知識の種別を示す関係名と、当該言語知識を代表する語彙を示す代表元と、前記語彙ラベルの集合を格納する複数の要素とを含んで構成され、
前記言語知識に登録する処理は、
前記業務フローの要素に対する記述を前記代表元に設定する処理と、
前記複数のコンポーネント間の関係が直列または並列のいずれであるかを前記関係名に設定する処理と、
前記検索した第１のデータベースの語彙ラベルの集合の要素を前記言語知識の複数の要素として登録する処理と、
を含むことを特徴とする請求項７または請求項８に記載の言語知識の構築支援方法。
【請求項１０】
計算機に入力された業務フローの要素の記述から言語知識に基づいて、コンポーネントと当該コンポーネントの機能を記述した語彙ラベルの集合との関係を対応付ける第１のデータベースを検索し、前記業務フローに対応するようにコンポーネントを組み合わせてアプリケーションを構築する際に、前記検索を行う言語知識の構築を支援する方法であって、
前記第１のデータベースが更新されたことを検出する処理と、
前記更新されたコンポーネントを検出する処理と、
前記更新されたコンポーネントと前記第１のデータベースの既登録のコンポーネントの類似度を算出する処理と、
前記類似度が所定の閾値以上であるか否かを判定する処理と、
前記類似度が所定の閾値以上となった既登録のコンポーネントの語彙ラベルの集合を、更新されたコンポーネントの語彙ラベルの集合として前記言語知識に登録する処理と、
を計算機に機能させることを特徴とする言語知識の構築支援方法。
【請求項１１】
前記言語知識に登録する処理は、
前記類似度が所定の閾値以上となった既登録のコンポーネントの語彙ラベルの集合から各集合の要素の組み合わせを生成する処理と、
前記各集合の要素の組み合わせを計算機の出力部に出力する処理と、
前記出力した組み合わせのうち選択されたものを受け付ける処理と、
前記選択された組み合わせを前記言語知識に登録する処理と、
を含むことを特徴する請求項１０に記載の言語知識の構築支援方法。
【請求項１２】
前記言語知識は、言語知識の種別を示す関係名と、当該言語知識を代表する語彙を示す代表元と、前記語彙ラベルの集合を格納する複数の要素とを含んで構成され、
前記言語知識に登録する処理は、
前記更新されたコンポーネントに対する語彙ラベルを前記代表元に設定する処理と、
前記関係名に類義語であることを設定する処理と、
前記類似度が所定の閾値以上となった第１のデータベースの語彙ラベルの集合の要素を前記言語知識の複数の要素として登録する処理と、
を含むことを特徴とする請求項１０または請求項１１に記載の言語知識の構築支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機能仕様、入出力仕様が開示されたソフトウェア部品を組み合わせてアプリケーションソフトウェアを構築する方法であって、自然言語を用いた仕様記述からアプリケーションソフトウェアを構築する方法に属する。
【背景技術】
【０００２】
アプリケーションソフトウェアを構築する場合、開発効率を向上させるため、各アプリケーションで共通に利用する機能を、対象物や対象機能等の単位で処理インターフェースをまとめたコンポーネントに集約し、このコンポーネント単位でアプリケーションを開発する手法が知られている。
【０００３】
この一例として、既存のWebサービスを検索し、複数のＷｅｂサービスを組み合わせることによって新たにWebサービスを生成する場合、生成するWebサービスの業務フローを状態遷移に変換し、既存のWebサービスとの業務フローの状態遷移とのマッチングを行う手法が提案されている（例えば、非特許文献１）。
【０００４】
また、インターネットなどのＷｅｂ上で、必要なコンポーネントをユーザーが発見することを支援するため、オントロジーとよばれる語彙概念を記述した言語知識を用いて、検索時に入力されたキーワードと意味が似ている語彙候補をユーザーに提示する方法を提案している（例えば、特許文献１）。
【０００５】
オントロジーの構築はその対象となる領域の知識と言語に関する知識が必要であり、人手による構築にコストがかかる。このため、オントロジー構築支援と個別複数のオントロジー間の対応づけを行なってオントロジー対応付けファイル構築支援を行なうシステムが提案されている（例えば、特許文献２）。
【非特許文献１】Paolo Traverso and Marco Pistore著、「Automated Composition of Semantic Web Services into Executable Processes」、「International Semantic Web Conference (ISWC) 2004」、Springer-Verlag GmbH、２００４年１１月発行、LNCS 3298、第３８０頁〜第３９４頁
【特許文献１】特開２００４−３０４２８号
【特許文献２】特開２００１−１４１６６号
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記のような従来例では、オントロジーによりデータ間の相関性を対応付けることは可能であるが、上述のようなコンポーネントに適用した場合、コンポーネントを識別する仕様記述等が一致または類似するコンポーネントがあったとしても、コンポーネント間の類似性についてまで判断することができない、という問題がある。
【０００７】
このため、上記仕様記述が一致または類似するコンポーネントが複数あっても、各コンポーネントの処理内容が異なれば、そのまま利用することはできず、ネットワーク上で利用可能なコンポーネントの中から最適なコンポーネントを容易かつ迅速に選択することが難しいという問題が生じていた。
【０００８】
特に、上記コンポーネントの仕様記述を自然言語にて記述した言語知識を用いる場合は、仕様記述に用いられた単語等の揺らぎ（例えば、類義語の使用）と、コンポーネント間の処理内容の相関関係を把握する必要があるが、上記従来例ではこのような言語知識を構築することができないという問題があった。
【０００９】
そこで本発明は、上記問題点に鑑みてなされたもので、自然言語を用いた仕様記述からアプリケーションソフトウェアをコンポーネント単位で構築する際に使用する言語知識の構築を支援する手法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、入力された業務フローの要素の記述から言語知識に基づいて、コンポーネントと当該コンポーネントの機能を記述した語彙ラベルの集合との関係を対応付ける第１のデータベースを検索し、前記業務フローに対応するようにコンポーネントを組み合わせてアプリケーションを構築する際に、前記検索を行う言語知識の構築を支援するプログラムであって、前記業務フローの要素に対応して複数のコンポーネントを記述したサブフローが入力されたことを検出する手順と、前記業務フローの要素に対応する複数のコンポーネント間の関係が直列または並列のいずれであるかを判定する手順と、前記サブフローを構成するコンポーネントの語彙ラベルの集合を取得する手順と、前記語彙ラベルの集合に基づいて、前記第１のデータベースの語彙ラベルの集合を検索する手順と、前記検索した第１のデータベースの語彙ラベルの集合を、前記業務フローの要素の記述に対応する語彙ラベルの集合として前記言語知識に登録する手順と、を計算機に機能させる。
【００１１】
また、ユーザーが、言語で表現された１つの業務フロー（業務プロセス）を複数のコンポーネントの直列あるいは並列の結合で構成した場合、業務フローを表現する言語概念は、各々のコンポーネントに付随する言語概念の直列あるいは並列の結合で分割表現されることを仮定し、言語概念の分割表現をユーザーに提示する。
【００１２】
また、前記更新されたコンポーネントを検出する手順と、前記更新されたコンポーネントと前記第１のデータベースの既登録のコンポーネントの類似度を算出する手順と、前記類似度が所定の閾値以上であるか否かを判定する手順と、前記類似度が所定の閾値以上となった既登録のコンポーネントの語彙ラベルの集合を、更新されたコンポーネントの語彙ラベルの集合として前記言語知識に登録する手順と、を計算機に機能させる。
【００１３】
また、複数のコンポーネント間の類似性を判定し、類似したコンポーネントに付随する言語概念には類義性を仮定し、言語概念の類義性をユーザーに提示する。
【００１４】
なお、ユーザーは提示された内容の適否を判定し、適切な場合は、前記言語概念は新たな言語知識として言語知識ベースに登録される。
【００１５】
なお、コンポーネントは、特定の機能を実行するメソッドを有するソフトウェア部品のうち、言語によって仕様が外部に公開されたものである。
【発明の効果】
【００１６】
したがって、本発明は、アプリケーションソフトウェア構築の過程において、コンポーネントフローの入力内容とコンポーネント知識ベース（第１のデータベース）の更新内容に基づき、分割語彙（直列分割または並列分割）と類義語彙に関する言語知識データの獲得を行うことが出来る。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の一実施形態を添付図面に基づいて説明する。
【００１８】
図１は、本発明の第１の実施形態を示し、本発明を適用する計算機システムの一例を示すブロック図である。計算機１０１は、ユーザがアプリケーションソフトウェアの開発を行うアプリケーション構築処理プログラム２０１と、コンポーネントの仕様記述２０５と仕様記述に使用される語彙の関係（オントロジー）を保持する言語知識ベース２０４の構築を支援するための言語知識ベース構築支援プログラム３０１が稼動する。アプリケーション構築処理プログラム２０１は、後述するようにネットワーク１０上のコンポーネントを組み合わせることで新たなアプリケーションソフトウェア（以下、単にアプリケーションという）を生成するものである。
【００１９】
計算機１０１は、ＣＰＵ等からなる処理装置１０５と、メモリやストレージ装置等で構成される記憶装置１０４と、ネットワークインターフェースなどで構成される通信装置１０６と、マウスやキーボードで構成される入力装置１０２と、ディスプレイなどで構成される出力装置１０３がバス１０７を介して相互に接続される。
【００２０】
そして、通信装置１０６を介してネットワーク１０に接続され、Ｗｅｂサービスを提供するＷｅｂサーバ１２１や、ネットワーク１０上のコンポーネントを提供するコンポーネント提供サーバ１１１等と通信することができる。なお、ネットワーク１０上には、コンポーネント提供サーバ１１１、および、Ｗｅｂサービスを提供するＷｅｂサーバ１２１が複数存在する。
【００２１】
コンポーネント提供サーバ１１１では、ネットワーク１０上で利用可能なＷｅｂサービスのコンポーネントを示唆するコンポーネント提供プログラム２０７が稼動する。コンポーネント単位プログラム２０７は、コンポーネントデータベース２０８に記録されたコンポーネントのＵＲＩ(Universal Resource Identifier)と、各コンポーネントの機能や入出力に関するドキュメントから得られる情報を計算機１０１等に提供する。コンポーネントに関する情報は、Ｗｅｂサーバ１２１（サイト）を巡回しデータを自動的に収集する図示しないクローラーが、コンポーネントデータベース２０８を参照し、収集、更新されるものとする。なお、クローラーはコンポーネント提供サーバ１１１で稼動しても良い。
【００２２】
そして、コンポーネントデータベース２０８の情報は、計算機１０１のコンポーネント知識ベース２０５に反映される。
【００２３】
すなわち、コンポーネント知識ベース２０５は、アプリケーション構築処理プログラム２０１がコンポーネントの検索を行う際に参照されるもので、ネットワーク１０を介して接続されたコンポーネント提供サーバ１１１上のコンポーネント提供プログラム０２０７が提供するコンポーネントデータベース２０８に記録されたコンポーネントのＵＲＩと、コンポーネントの機能や入出力に関するドキュメントから得られる情報を保持する。なお、計算機１０１のコンポーネント知識ベース２０５は、アプリケーション構築処理プログラム２０１が所定のタイミングでコンポーネント提供サーバ１１１のコンポーネントデータベース２０８と同期を取るようにすればよい。
【００２４】
ここで、コンポーネントとは、特定の機能を実行するメソッドを一つまたは複数持つソフトウェア部品のうち言語によって仕様が外部に公開されたソフトウェア部品である。そして、Ｗｅｂサーバ１２１で実行されるＷｅｂサービスは、特定の機能を実行するメソッドが言語によって仕様が外部に公開されているという意味で、コンポーネントの一種である。
【００２５】
図２は、本実施形態のソフトウェアの構成を示すブロック図である。アプリケーション構築処理プログラム２０１は、入力された業務フロー２０２から語彙を抽出し、抽出した語彙に基づいて、言語知識ベース２０４に格納された後述する類義語彙や分割語彙を参照し、コンポーネント知識ベース２０５に格納された後述する語彙ラベルをもつコンポーネントを検索し、コンポーネントフロー２０３を出力する。
【００２６】
なお、言語知識ベース２０４が保持する言語知識とは、前記従来例でも述べたオントロジー(Ontology)やタクソノミー(Taxonomy)など、語彙の示す概念間の関係を記述したものである。言語知識ベース２０４の詳細については後述する。
【００２７】
アプリケーション構築処理プログラム２０１を構成する機能要素は、入力された業務フロー２０２から語彙を抽出し、入力語彙からコンポーネント知識ベース２０５を検索し、類義語彙から言語知識ベース２０４を検索し、コンポーネントを検索するコンポーネント検索部２０９と、コンポーネント検索部２０９が対象とする語彙を見つけられない場合に、ユーザ側で作成したコンポーネントをサブフローとして取り込むサブフロー入力部２１０を主体とする。
【００２８】
そして、コンポーネント検索部２０９で検索されたコンポーネントや、サブフロー入力部２１０から入力されたコンポーネントは、入力された業務フロー２０２に対する回答として、アプリケーション構築処理プログラム２０１がコンポーネントフローとして構成して出力する。
【００２９】
言語知識構築支援処理プログラム３０１は、後述するように、アプリケーション構築処理プログラム２０１で使用する言語知識ベース２０４の構築を支援するものである。
【００３０】
言語知識ベース構築支援プログラム３０１は、ユーザがアプリケーション構築処理プログラム２０１へサブフローを入力したとき、または、アプリケーション構築処理プログラム２０１がコンポーネント知識ベース２０５を更新したときに、後述するように言語知識ベース２０４の定義を後述するように更新する。
【００３１】
本実施形態において、アプリケーション構築処理プログラム２０１へ入力される業務フロー２０２は、入力装置１０２等やファイルなどによりＵＭＬ(Universal Modeling Language)で記述されたアクティビティ図を用いて入力するものとする。すなわち、業務フロー２０２は、アプリケーションソフトウェアの動作仕様について、単文程度の簡潔な自然言語で記述可能な処理を表すノードであるアクティビティ（アクション状態）を、処理の前後関係を示す有向リンク（Arrow Link）で結んだフロー言語で記述したソースプログラムである。
【００３２】
図３に業務フロー２０２を構成するアクティビティ図の一例を示す。アクティビティ図４０１の主要な記述要素としては、処理内容を記述したアクション状態４０２、アクション状態４０２の間の遷移を表すアーク４０３、アクション状態の遷移先を判定する条件分岐４０４、および、アクション状態同士の同期をとるための同期バー４０５がある。業務フローの要素となるアクション状態４０２や条件分岐４０４及び同期バー４０５には処理内容が簡単な言葉により記述される。
【００３３】
次に、アプリケーション構築処理プログラム２０１の全体的な処理の流れを図４のフローチャートを参照しながら説明する。図４のフローチャートは、業務フロー２０２がアプリケーション構築処理プログラム２０１へ入力されたときに実行されるものである。
【００３４】
図４において、Ｓ１では、業務フロー２０２のアクション状態から語彙を抽出する。入力されたアクション状態４０２は、短い文や単語であり、文の場合は名詞や動詞などの内容語を抽出する。上記Ｓ１で抽出あるいは入力された語彙を、以下、入力語彙と呼ぶ。
【００３５】
次に、Ｓ２では  Ｓ１で抽出した入力語彙についてコンポーネント知識ベース２０５を検索する。
【００３６】
入力語彙に基づく検索とは、後述するように、入力語彙が語彙ラベル７０６の集合に含まれるか否かを判定することである。また、入力語彙が語彙ラベル７０６に含まれる場合を入力語彙にコンポーネントがマッチするという。
【００３７】
ここで、本実施形態のコンポーネント知識ベース２０５のデータ構造を図７に示す。コンポーネント知識ベース２０５には、複数（０〜Ｍ個）のコンポーネント知識データ７０１が記録されている。各々のコンポーネント知識データ７０１は、コンポーネントの所在を示すＵＲＩであるコンポーネントＵＲＩ７０２と、このコンポーネントの機能を特徴づける語彙ラベルの集合である語彙ラベル７０３と、このコンポーネントが他のどのコンポーネントやクラスを呼び出しているかを示すコンポーネントあるいはクラスのＵＲＩの集合である構成情報７０４と、このコンポーネントが他のどのコンポーネントやアプリケーションやサービスから呼び出されているかを示すコンポーネントやアプリケーションやサービスのＵＲＩの集合利用情報７０５とから構成される。
【００３８】
語彙ラベル７０６は、コンポーネントＵＲＩ７０２で示されるコンポーネントの機能を特徴づける語彙ラベルの集合であり、コンポーネント検索に用いる語彙、つまり、入力語彙または類義語彙または分割語彙が、語彙ラベルの集合に含まれるとき、コンポーネントが検索語彙にマッチする。語彙ラベル７０３には、語彙ラベル数７３０とその値に対応するＰ個の語彙ラベル７３１−１〜７３１−Ｐが記録される。なお、Ｐは１以上の任意の整数となる。
【００３９】
構成情報７０４には構成情報数７４０と、この構成情報数の値に対応するＱ個の構成情報７４１−１〜７４１−Ｑが記録され、コンポーネントＵＲＩ７０２の参照先のＵＲＩをそれぞれ示す。なお、Ｑは１以上の任意の整数となる。
【００４０】
利用情報７０５には利用情報数７５０と、利用情報数７５０の値に対応するＲ個の利用情報７５１−１〜７５１−Ｒが記録され、コンポーネントＵＲＩ７０２の参照元のＵＲＩをそれぞれ示す。なお、Ｒは１以上の任意の整数となる。
【００４１】
次に、図４のＳ３では、入力語彙が上記語彙ラベル７０３にマッチしたか否かを判定し、マッチしていればＳ４に進み、マッチしていなければＳ７に進む。
【００４２】
コンポーネント知識ベース２０５を入力語彙で検索し、語彙ラベルにマッチするコンポーネントが存在する場合のＳ４では、図５に示すようにアクション状態４０２にコンポーネント５０２を対応付ける。具体的は、入力語彙にマッチした語彙ラベル７０３のコンポーネントＵＲＩ７０２を設定する。これにより、入力された業務フロー２０２のうち、一つのノード（アクション状態など）についてコンポーネントフローが定義される。なお、図５は、業務フロー２０２を構成するアクション状態４０２という入力に対して、コンポーネントフロー２０３を構成する一つのコンポーネント（ノード）５０２を定義した出力を示す。
【００４３】
次のＳ５では、入力された業務フロー２０２の全てのアクション状態について入力語彙の検索が完了したか否かを判定する。完了していればＳ１２に進んで、業務フロー２０２に対応する全てのアクション状態に対応するコンポーネントフロー２０３を出力する。この出力は、出力装置１０３に表示を行ったり、ファイルを記憶装置１０４へ書き込むことで行えばよい。
【００４４】
全てのアクション状態についてコンポーネント検索が完了していない場合には、Ｓ６に進んで、処理の対象を業務フロー２０２の次のアクション状態に移し、Ｓ１の処理へ戻って上記Ｓ１〜Ｓ５の処理を繰り返す。
【００４５】
一方、上記Ｓ３の判定で入力語彙をコンポーネント知識ベース２０５で検索した結果、マッチするコンポーネントがなかった場合のＳ７では、言語知識ベース２０４に記録された後述する複数の類義語彙を参照し、入力語彙に対応する各々の類義語彙でコンポーネント知識ベース２０５を検索する。
【００４６】
ここで、言語知識ベース２０４は、類義語彙や分割語彙など語彙の間の関係を保持したものである。本実施形態で使用する言語知識ベース２０４のデータ構造の一例を図８に示す。
【００４７】
図８において言語知識ベース２０４には、複数（０〜Ｍ）の言語知識データ２４０が記録される。各々の言語知識データ２４０には、言語知識の種別を示す関係名２４１、言語知識の要素の数を示す要素数２４２、要素数２４２に記録されたＮ個の要素２４３−１〜２４３−Ｎで構成される。
【００４８】
関係名２４１は語彙の間の関係の種別を保持する。本実施形態では「類義」、「直列分割」、「並列分割」の３つの種別を使用する。要素数２４２は関係名の対象となる要素の数を表し、記録されている要素の総数が記録される。また、本実施形態では最初の要素２４３−１を代表元（げん）と呼ぶ。この代表元２４３−１に格納されている語彙に対する類義語や直列分割の語彙あるいは並列分割の語彙が要素２４３−２〜Ｎに格納される。
【００４９】
関係名２４１が「類義」の場合、要素２４３−１の代表元に格納された語彙と異なる文言で、同義の文言が要素２４３−２〜Ｎに設定されている。例えば、図８の言語知識データ１のように、代表元２４３−１が「手配」という単語の場合、類義語として「セッティング」、「手回し」という単語が要素２４３−２、３に設定される。
【００５０】
関係名２４１が「直列分割」の場合、要素２４３−１の代表元に格納された語彙が示す手順を、時系列的に分解した複数の文言が要素２４３−２〜Ｎに設定されている。例えば、図８の言語知識データ２４０のように、代表元２４３−１が「手配」という単語の場合、直列分割の語彙として、「照会」、「予約」という単語が要素２４３−２、３に設定される。つまり、「手配」という語彙が示す処理は、「照会」という処理の後に、「予約」という処理を行うものである、という定義を示す。したがって、「手配」という語彙で言語知識ベース２０４を検索すると、関係名２４１を「直列分割」を選択することで、ひとつのアクション状態（またはアクティビティ）を時系列的に複数のアクション状態に分割できる。
【００５１】
また、関係名２４１が「並列分割」の場合、要素２４３−１の代表元に格納された語彙が示す手順を、時系列的に並列な手順として分解した複数の文言が要素２４３−２〜Ｎに設定されている。これにより、関係名２４１を「並列分割」を選択することで、ひとつのアクション状態（またはアクティビティ）を時系列的に並行する複数のアクション状態に分割できる。
【００５２】
再び、図４のＳ８に戻り、入力語彙に対応する類義語彙にマッチするコンポーネントがコンポーネント知識ベース２０５にあったか否かを判定し、マッチしていればＳ４に進み、上述した図５のように、アクション状態４０２に対する出力としてコンポーネント５０２を対応付けて、業務フロー２０２の一つのノードにコンポーネントフロー２０３を設定する。すなわち、言語知識ベース２０４から入力語彙に対応する類義語を検索し、この類義語によってコンポーネント知識ベース２０５を検索することでコンポーネントを得る。
【００５３】
一方、Ｓ８でマッチしなかった場合には、入力語彙でも類義語彙でもマッチするコンポーネントがない場合であり、Ｓ９の分割語彙検索に進む。
【００５４】
Ｓ９の分割語彙処理では、上記図８に示したように、入力語彙に基づいて、言語知識ベース２０４から「直列分割」あるいは「並列分割」の分割語彙を参照し、各々の分割語彙でコンポーネント知識ベース２０５を検索する。すなわち、図６に示すように元のアクティビティ（アクション状態）４０２を、言語知識ベース２０４の検索結果に基づいて、直列分割８０２または並列分割８０３による複数のアクション状態に分割し、分割後のアクション状態についてコンポーネント検索を行う。なお、図６において、図中２０２’は、元のアクション状態４０２を直列または並列に分割した後の業務フロー（サブフロー）を示す。
【００５５】
そして、Ｓ１０で、分割語彙にマッチする複数のコンポーネントがあれば、Ｓ４に進んで、マッチした複数のコンポーネントを語彙の分割後の業務フロー２０２に対応付け、サブフローを作成する。
【００５６】
このように、分割語彙を用いたアクション状態（アクティビティ）の分割には、上記図６のように、直列分割８０２と並列分割８０３の２種類がある。分割語彙に前後関係がある場合を直列分割０８０２、前後関係がなく同時に実行可能な場合を並列分割８０３とよぶ。直列分割の場合、ＵＭＬのアクション状態は図６に示した複数（直列）のアクション状態８０２のように分割される。また、並列分割の場合はＵＭＬのアクション状態は図６のアクション状態８０３のように並列的に分割され、それぞれのアクション状態は図５に示すようにコンポーネントが対応付けられる。
【００５７】
一方、分割語彙による検索でマッチするコンポーネントがない場合はＳ１１に進んで、ユーザがサブフローを作成する。この場合、ユーザーは直接コンポーネント提供サーバ１１１にアクセスして適切なコンポーネントを取得したり、ユーザーが自らプログラムを作成したり、取得あるいは作成したコンポーネントを組合わせてサブフローを構成する（サブフロー入力部２１０）。このとき、サブフローを構成するコンポーネントをコンポーネントデータベース２０８に登録する。このとき、コンポーネントに対応する語彙ラベル７０３を設定する。そして、作成したサブフローをＳ４で業務フロー２０２に対応するコンポーネントフロー２０３に対応付ける。
【００５８】
以上の処理で得られた、１つのアクション状態に対応するコンポーネント、直列分割のコンポーネントサブフロー、あるいは、並列分割のコンポーネントサブフローが業務フローを表すアクティビティ図に従って結合され、入力された業務フロー２０２全体に対応するコンポーネントフロー２０３が出力される。
【００５９】
次に、言語知識ベース２０４の構築を支援する言語知識ベース構築支援プログラム３０１について説明する。
【００６０】
言語知識ベース構築支援プログラム３０１は、図９に示すような機能ブロックを有する。すなわち、アプリケーション構築処理プログラム２０１におけるユーザによるコンポーネントサブフローの入力操作を検出するサブフロー入力検出部３０５と、コンポーネント知識ベース２０５の更新を検出するコンポーネント知識ベース更新検出部３０６を有する。
【００６１】
また、コンポーネント知識ベース２０５内のコンポーネント間の類似性を計算するコンポーネント類似度計算部３０７と、上述の「類義」、「直列分割」、「並列分割」といった語彙の間の関係の候補を生成する言語知識データ候補生成部３０８と、生成した候補をユーザに提示し、ユーザーが候補の適否を選択する候補提示・評価部３０９とを有する。
【００６２】
以下は、上記図４のＳ１１のように、入力語彙、類義語彙、分割語彙のいずれでもマッチするコンポーネントがなく、ユーザーがコンポーネントサブフローを入力した場合、および、コンポーネントの類似性を利用した場合を用いて説明する。
【００６３】
ユーザーによるコンポーネントサブフロー入力を検出した場合の言語知識ベース構築支援プログラムの処理の一例を図１０のフローチャートに示す。
【００６４】
図１０の処理は入力語彙、類義語彙、分割語彙のいずれでもマッチするコンポーネントがなく（Ｓ２１、Ｓ２２）、上記図４のＳ１１において、ユーザーがコンポーネントのサブフローを入力するイベントを検出することで起動する（Ｓ２３）。
【００６５】
Ｓ２３ではユーザによるサブフロー入力のイベントの検出を行う。以下ではユーザが、一つのアクション状態４０２を複数のコンポーネントに分割してサブフローを構成した場合を示し、サブフローが２つのコンポーネントから構成される場合を想定する。そして、ユーザが設定したサブフローの各々のコンポーネントをＣ１、Ｃ２とする。
【００６６】
Ｓ２４では言語知識ベース構築支援処理プログラム３０１は、コンポーネントＣ１、Ｃ２に対応する語彙ラベルの集合７０３を、コンポーネント知識ベース２０５の語彙ラベル７０３から検索する。そして、検索したコンポーネントＣ１の語彙ラベルをＷ１とし、コンポーネントＣ２の語彙ラベルをＷ２とする。なお、コンポーネントＣ１、Ｃ２の語彙ラベル７０３は、ユーザによって既に設定されているものとする。また、入力されたサブフローが元のアクション状態４０２に対して直列分割と並列分割のいずれであるかを判定する。また、図示はしないが、直列分割または並列分割のいずれでもない場合には処理を終了するようにしても良い。
【００６７】
Ｓ２５では、言語知識ベース構築支援プログラム３０１は、語彙ラベルの集合Ｗ１とＷ２の任意の要素ｗ１、ｗ２の組合せ（ｗ１、ｗ２）をユーザに提示する。この提示は、ディスプレイなど構成される出力装置１０３に表示することなどで行う。
【００６８】
Ｓ２６では、ユーザは出力装置１０３に表示された語彙ラベルの要素（ｗ１、ｗ２）の分割語彙としての適否を判定し、その結果を入力装置１０２より計算機１０１に入力する。
【００６９】
Ｓ２７では、上記Ｓ２１で記録された入力語彙に対する分割語彙として適切であると判定された組合せ（ｗ１、ｗ２）が新たな分割語彙として言語知識ベース２０４に登録する。このとき、言語知識ベース２０４には、上記Ｓ２４で判定した直列分割または並列分割の何れかを図８の関係名２４１に設定し、語彙ラベル集合の要素の組み合わせ（ｗ１、ｗ２）の数を要素数２４２に設定し、業務フローの要素であるアクション状態４０２に付した語彙ラベルを代表元２４３−１に設定し、語彙ラベル集合の要素の組み合わせ（ｗ１、ｗ２）を要素１〜Ｎ（２４３−２〜Ｎ）に設定する。
【００７０】
以上の処理により、ユーザが一つのアクション状態４０２を複数のコンポーネントに分割して入力したサブフローに対する「直列分割」または「並列分割」の語彙が言語知識データ２４０として言語知識ベース２０４に追加される。
【００７１】
そして、語彙ラベルの集合Ｗ１とＷ２の任意の要素ｗ１、ｗ２の組合せ（ｗ１、ｗ２）を生成して出力し、ユーザの選択した組み合わせを受け付けて語彙ラベルの要素を絞り込むことで、適切な言語知識ベース２０４を構築できる。
【００７２】
なお、上記処理においてＳ２３では、ユーザが入力したサブフローが、元のアクション状態４０２に対して複数のコンポーネントを直列分割または並列分割のいずれに記述したかを判定し、どちらでもない場合には処理を終了するようにしてもよい。
【００７３】
また、上記Ｓ２６でユーザによる組合せ（ｗ１、ｗ２）を行う例を示したが、Ｓ２５で出力した語彙ラベルの集合Ｗ１とＷ２の任意の要素ｗ１、ｗ２の組合せ（ｗ１、ｗ２）を、そのまま言語知識ベース２０４に登録するようにしても良い。
【００７４】
次に、コンポーネントの類似性を利用した場合に言語知識ベース構築支援プログラム３０１で行われる処理の一例を図１１のフローチャートに示す。
【００７５】
図１１の処理はコンポーネント知識ベース２０５が更新されるイベント（サブフローの入力等）を検出することで起動する。Ｓ３１では、コンポーネント知識ベース２０５の更新イベントの検出を行う。
【００７６】
コンポーネント知識ベース２０５が更新されると、Ｓ３２では更新されたコンポーネントを検出し、更新されたコンポーネントと既に登録されている任意のコンポーネントの間の類似度Ｒを後述する方法で計算する。ここでは、更新されたコンポーネントをＣ１とし、任意のコンポーネントをＣ２とする。
【００７７】
Ｓ３３では言語知識ベース構築支援プログラム３０１は、類似度Ｒが予め定められた閾値Ｔ以上であるか否かを判定する。上記Ｓ３２で求めた類似度Ｒが閾値Ｔ以上であれば、２つのコンポーネントＣ１、Ｃ２は類似すると判定してＳ３４に進み、類似度Ｒが閾値Ｔ未満であれば２つのコンポーネントＣ１、Ｃ２は非類似と判定して処理を終了する。
【００７８】
２つのコンポーネントが類似すると判定したＳ３４では、コンポーネントＣ１、Ｃ２に対応する語彙ラベル７０３の集合Ｗ１、Ｗ２の任意の要素ｗ１、ｗ２の組合せ（ｗ１、ｗ２）を上記Ｓ２５と同様にユーザに提示する。
【００７９】
Ｓ３５では、ユーザが各々の組合せの類義語彙としての適否を判定し、その結果を計算機１０１に入力する。Ｓ３６では類義語彙として適切であるとユーザによって判定された組合せ（ｗ１、ｗ２）が新たな類義語彙として言語知識ベース２０４に登録される。このとき、言語知識ベース２０４には、図８の関係名２４１として「類義語」を設定し、語彙ラベル集合の要素の組み合わせ（ｗ１、ｗ２）の数を要素数２４２に設定し、更新されたコンポーネントに付した語彙ラベルを代表元２４３−１に設定し、語彙ラベル集合の要素の組み合わせ（ｗ１、ｗ２）を要素１〜Ｎ（２４３−２〜Ｎ）に設定する。
【００８０】
なお、更新されたコンポーネントと既登録のコンポーネントの類似度Ｒの比較は、全ての既登録のコンポーネントについて行うことができる。
【００８１】
以上の処理により、コンポーネント知識ベース２０５が更新されると、言語知識ベース構築支援プログラム３０１によって自動的に類義語彙が抽出され、ユーザの適否の判断を行った後に、新たな類義語彙が言語知識ベース２０４へ追加されることになる。
【００８２】
そして、類似度が所定の閾値Ｔ以上の既登録のコンポーネントの語彙ラベルの集合Ｗ１とＷ２の任意の要素ｗ１、ｗ２の組合せ（ｗ１、ｗ２）を生成して出力し、ユーザの選択した組み合わせを受け付けて語彙ラベルの要素を絞り込むことで、適切な言語知識ベース２０４を構築できる。
【００８３】
ここで、上記Ｓ３２で行われる類似度Ｒの算出手法について説明する。
【００８４】
２つの集合Ａ、Ｂの類似度Ｒを、
Ｒ（Ａ、Ｂ）＝＃（Ａ∩Ｂ）／＃（Ａ∪Ｂ）  ………（１）
で定義する。ここで＃（Ｘ）は集合Ｘの要素の数を表す。２つの集合Ａ，Ｂは同一の要素を多く含む場合に高い類似度をもつ。なお、集合Ａと集合Ｂが同じ要素からなる場合は集合Ａと集合Ｂの共通集合も合併集合もＡ自身となるためＲ（Ａ、Ｂ）は１を、集合Ａと集合Ｂが同じ要素を全く持たない場合は集合Ａと集合Ｂの共通集合は空集合となるためＲ（Ａ、Ｂ）は０をとる。
【００８５】
コンポーネントの類似度の定義には、類似度の考え方に応じて様々なバリエーションがある。以下では類似度の計算方法の例を３例示す。
【００８６】
上記図８に示す言語知識ベース２０４（オントロジー）を利用すると、例えば、関係名２４１が「直列分割」の場合、「手配」を行うコンポーネントは「照会」を行うコンポーネントと、「照会」の結果に応じて「予約」を行うコンポーネントから構成されることになる。このように、コンポーネントは他のコンポーネントを用いて構成される。この情報は図７のコンポーネント知識ベース２０５の構成情報７０４として、使用するコンポーネントの構成情報７４１−１〜Ｑにそれぞれ記録される。
【００８７】
コンポーネントの構成情報７０４は、そのコンポーネントを構成しているコンポーネントの集合（構成情報７４１−１〜Ｑ）で表現される。ここで、２つのコンポーネントαとコンポーネントβの構成情報が類似している場合、コンポーネントαとコンポーネントβは同じような処理を行っている可能性が高いものとする。この場合、２つのコンポーネントα、βについての構成情報７４１−１〜７４１−Ｑを比較し、同一のコンポーネントの数を数えることによって、上記（１）式に示す集合の類似度に基づくコンポーネントの類似度を定義することができる。
【００８８】
つまり、コンポーネントα、βの構成情報を各々集合Ｖ、集合Ｗとすると、コンポーネントの類似度γは、
γ＝＃（Ｖ∩Ｗ）／＃（Ｖ∪Ｗ）    ………（２）
で与えられる。
【００８９】
しかし、コンポーネントの中には汎用性の高いコンポーネントがある。汎用性の高いコンポーネントとは、例えば「ユーザＩＤの入力」、「日付データ形式のチェック」など、多くのコンポーネントから呼び出されているコンポーネントのことである。求める類似度の精度向上のために、予め定められた数以上のコンポーネントから呼び出されるコンポーネントは類似度の計算から除外し、コンポーネントの類似度δは、
δ＝＃（（Ｖ−Ｃ）∩（Ｗ−Ｃ））／＃（（Ｖ−Ｃ）∪（Ｗ−Ｃ））  ……（３）
を定義する。ここでＣは汎用性の高いコンポーネントの集合である。
【００９０】
したがって、上記（２）式による類似度γは全てのコンポーネントを対象とした値となり、上記（３）式による類似度δは、汎用性の高いコンポーネントを除外して業務フロー２０２を特徴付けるコンポーネントの類似度を示すことができる。
【００９１】
上記図７に示した構成情報７０４とは逆に、利用情報７０５はそのコンポーネントが他のどのコンポーネントで利用されているかを示している。例えば、「手配」という処理を行うコンポーネントは、「照会」を行うコンポーネントを構成情報として含んでいるので、逆に、「照会」を行うコンポーネントは「手配」を行うコンポーネントで利用されていることとなる。
【００９２】
したがって、上記構成情報７０４から類似度γまたはδを求めることと同様に、２つのコンポーネントαとコンポーネントβの利用情報７０５が類似している場合、コンポーネントαとコンポーネントβは同じような処理を行っている可能性が高いものとする。この場合、コンポーネントα、βの利用情報を各々集合Ｘ、集合Ｙとすると、コンポーネントの類似度εは、
ε＝＃（Ｘ∩Ｙ）／＃（Ｘ∪Ｙ）    ………（４）
で与えられる。
【００９３】
また、利用情報７０５を用いた類似度εも、上記（３）式と同様にして、予め定められた数以上のコンポーネントから呼び出されるコンポーネントは類似度の計算から除外して、類似度の精度を向上させることができる。
【００９４】
以上のように、上記Ｓ３２におけるコンポーネントＣ１、Ｃ２の類似度Ｒは、上記（２）〜（４）式の類似度γ、δ、εなどとして求めることができる。
【００９５】
以上、本発明によれば、アプリケーションソフトウェア構築の過程において、業務フローの入力内容とコンポーネント知識ベース（第１のデータベース）の更新内容に基づき、分割語彙（直列分割または並列分割）と類義語彙に関する言語知識ベースの獲得及び更新を行うことが出来る。
【００９６】
そして、コンポーネントを検索し、組合せて、アプリケーションを構築するシステムにおいて、前記従来例では検索に使用する言語知識の構築には、作成者に高いスキルと大きな作業量が要求されるが、本発明を適用することにより、言語知識の構築を容易に行うことができ、言語知識ベースの構築に要する労力を低減できる。
【００９７】
図１２は第２の実施形態を示し、前記第１の実施形態に示した言語知識ベース２０４及び言語知識ベース構築支援プログラム３０１をネットワーク１０に接続されたサーバ１１１０で稼動するようにし、アプリケーション構築処理プログラム２０１が稼動する計算機１０１には、サブフローの入力を検知してサーバ１１１０の言語知識ベース構築支援プログラム３０１へ通知するエージェント３０１０を備え、また、アプリケーション構築処理プログラム２０１は、前記第１実施形態のコンポーネント知識ベース２０５に代わって、コンポーネント提供サーバ１１１のコンポーネントデータベース２０８にアクセスするようにしたもので、その他の構成は前記第１実施形態と同様である。
【００９８】
サーバ１１１０では、言語知識ベース構築支援プログラム３０１が稼動しており、計算機１０１のエージェント３０１０からサブフローの入力があった通知を受けると、上記図１０に示したＳ２４〜Ｓ２７の処理を行って、分割語彙を言語知識ベース２０４に登録する。すなわち、計算機１０１のエージェント３０１０は、上記図１０のＳ２１〜Ｓ２３を実行し、サーバ１１１０の言語知識ベース構築支援プログラム３０１が上記図１０のＳ２４〜Ｓ２７を実行する。
【００９９】
また、コンポーネント提供サーバ１１１のコンポーネント提供プログラム２０７は、コンポーネントデータベース２０８に更新が発生すると、サーバ１１１０の言語知識ベース構築支援プログラム３０１に更新の発生を通知する。言語知識ベース構築支援プログラム３０１は、上記図１１のＳ３２〜Ｓ３６を実行し、類義語彙を言語知識ベース２０４に登録する。
【０１００】
すなわち、コンポーネント提供サーバ１１１のコンポーネント提供プログラム２０７は、上記図１１のＳ３１を実行し、サーバ１１１０の言語知識ベース構築支援プログラム３０１が上記図１１のＳ３２〜Ｓ３６を実行する。
【０１０１】
言語知識ベース２０４を運用するサーバ１１１０を設けることで、複数の計算機１０１で同時にアプリケーションの開発を行う際には、複数のユーザによる言語知識ベース２０４の更新を全てのユーザで共有することができる。このため、ネットワーク１０上でコンポーネントを検索する際に、類義語彙や分割語彙による検索の精度を高めることができる。
【０１０２】
すなわち、アプリケーション構築処理プログラム２０１が稼動する計算機１０１が複数ある場合、あるユーザが入力したサブフローに関する分割語彙は、全ユーザで共有可能なサーバ１１１０の言語知識ベース２０４に集約されるため、各ユーザが作成したサブフローに対応する分割語彙を即座に利用することができる。複数のユーザでアプリケーションの開発を行う際の効率を向上させることが可能となる。また、各計算機１０１では、サブフローの入力をフックするだけの言語知識ベース構築支援エージェント３０１０が稼動すればよいので、計算機１０１の負荷を低減できる。
【０１０３】
なお、図１２では、コンポーネント提供サーバ１１１とサーバ１１１０を分離した例を示したが、コンポーネントデータベース２０８と言語知識ベース２０４を一つのサーバに集約しても良い。
【０１０４】
また、前記第１実施形態において、アプリケーション構築処理プログラム２０１と言語知識ベース構築支援プログラム３０１を分離した構成を示したが、アプリケーション構築処理プログラム２０１の中に言語知識ベース構築支援プログラム３０１を組み込むことも可能である。
【産業上の利用可能性】
【０１０５】
以上のように、本発明は、ネットワーク上のコンポーネントを組み合わせることで新たなアプリケーションソフトウェアを生成する際に利用する言語知識ベースの構築を行うソフトウェアに適用することができる。
【図面の簡単な説明】
【０１０６】
【図１】本発明の第１実施形態を示す計算機システムのブロック図。
【図２】ソフトウェアの構成を示すブロック図。
【図３】業務フローを入力するためのアクティビティ図。
【図４】アプリケーション構築処理プログラムの処理の一例を示すフローチャート。
【図５】入力される業務フローと、出力されるコンポーネントフローの説明図。
【図６】業務フローのアクション状態を、直列分割と並列分割により分割した場合の説明図。
【図７】コンポーネント知識ベースのデータ構造の一例を示す説明図。
【図８】言語知識ベースのデータ構造の一例を示す説明図。
【図９】言語知識ベース構築支援プログラムの機能ブロック図。
【図１０】サブフロー入力があったときに言語知識ベース構築支援プログラムで行われる処理の一例を示すフローチャート。
【図１１】コンポーネント知識ベースが更新されたときに言語知識ベース構築支援プログラムで行われる処理の一例をフローチャート。
【図１２】第２の実施形態を示し、ソフトウェアの構成を示すブロック図。
【符号の説明】
【０１０７】
１０１  計算機
１１１  コンポーネント提供サーバ
１２１  Ｗｅｂサーバ
２０１  アプリケーション構築処理プログラム
２０２  業務フロー
２０３  コンポーネントフロー
２０４  言語知識ベース
２０５  コンポーネント知識ベース
２０７  コンポーネント提供プログラム
２０８  コンポーネントデータベース
３０１  言語知識ベース構築支援プログラム
【図１】
2007025798.tif 000003
【図２】
2007025798.tif 000004
【図３】
2007025798.tif 000005
【図４】
2007025798.tif 000006
【図５】
2007025798.tif 000007
【図６】
2007025798.tif 000008
【図７】
2007025798.tif 000009
【図８】
2007025798.tif 000010
【図９】
2007025798.tif 000011
【図１０】
2007025798.tif 000012
【図１１】
2007025798.tif 000013
【図１２】
2007025798.tif 000014