(57)【要約】【課題】本発明は、効率的な知的分散環境を実現するマルチエージェントシステムの構築を可能にするエージェント装置の提供を目的とする。【解決手段】マルチエージェントシステムを構成するエージェント装置として、他エージェント装置から送られてくるメッセージを受信すると、そのメッセージに付加されているメッセージの配送先情報とメッセージの指定する処理情報との対データの繋がりで定義されるサービスリストを抽出し、システムの持つ知識に基づいて、そのサービスリストを詳細化して、受信したメッセージに詳細化したサービスリストを付加して他エージェント装置に送信するという処理を行うものを備える。このエージェント装置が用意されることで、サービスリストの詳細化を一度に行わなくてもよいことから、知識の分散管理を実現できるとともに、分散管理される知識を簡単に利用できるようになる。【選択図】図１
2006318462.tif 000002
【特許請求の範囲】
【請求項１】
マルチエージェントシステムで用いられるエージェント装置において、
他エージェント装置から送られてくるメッセージを受信する受信手段と、
上記受信手段の受信したメッセージに付加されて、該メッセージの配送先情報と該メッセージの指定する処理情報との対データの繋がりで定義されるサービスリストを抽出する抽出手段と、
システムの持つ知識に基づいて、上記抽出手段の抽出したサービスリストを詳細化する詳細化手段と、
上記受信手段の受信したメッセージに、上記詳細化手段の詳細化したサービスリストを付加して他エージェント装置に送信する送信手段とを備えることを、
特徴とするエージェント装置。
【請求項２】
請求項１に記載のエージェント装置において、
上記詳細化手段は、処理が完了するまでの詳細化を実行することを、
特徴とするエージェント装置。
【請求項３】
請求項１に記載のエージェント装置において、
上記詳細化手段は、後続のエージェント装置に詳細化処理の一部を委ねる形式で詳細化を実行することを、
特徴とするエージェント装置。
【請求項４】
請求項３に記載のエージェント装置において、
上記詳細化手段は、自装置の属するシステム以外のシステムの持つ全知識を入手できない場合には、入手知識に基づいて、後続のエージェント装置に詳細化処理の一部を委ねる形式で詳細化を実行することを、
特徴とするエージェント装置。
【請求項５】
請求項１に記載のエージェント装置において、
上記詳細化手段は、メッセージの配送先が複数となるときには、メッセージを複製するとともに、その複製数をサービスリストに記録しつつ詳細化を実行することを、
特徴とするエージェント装置。
【請求項６】
マルチエージェントシステムで用いられるエージェント装置の実現に用いられるプログラムが記録されるプログラム記録媒体であって、
他エージェント装置から送られてくるメッセージを受信する受信処理と、
上記受信処理で受信したメッセージに付加されて、該メッセージの配送先情報と該メッセージの指定する処理情報との対データの繋がりで定義されるサービスリストを抽出する抽出処理と、
システムの持つ知識に基づいて、上記抽出処理で抽出したサービスリストを詳細化する詳細化処理と、
上記受信処理で受信したメッセージに、上記詳細化処理で詳細化したサービスリストを付加して他エージェント装置に送信する送信処理とをコンピュータに実行させるプログラムが記録されることを、
特徴とするプログラム記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチエージェントシステムで用いられるエージェント装置と、そのエージェント装置の実現に用いられるプログラムが記録されるプログラム記録媒体とに関し、特に、効率的な知的分散環境を実現可能にするエージェント装置と、そのエージェント装置の実現に用いられるプログラムが記録されるプログラム記録媒体とに関する。
【背景技術】
【０００２】
エージェントシステムとは、共通の言語（例えばＡＣＬ(Agent Communication Language))を使ってソフトウェアを連携させることで、コンピュータシステム上で、利用者に働きかけて要求を確認し作業を組み立てて行う自律的なソフトウェアの技術であり、インターネットの普及に伴って、インターネット上に分散される情報を統合的に取り扱うことで、様々なエージェント処理を実現することが可能になるものとして期待されている。
【０００３】
しかしながら、エージェント世界でソフトウェアを連携させるには、依頼元の要求に応えるサービスを提供できるエージェントがどこにあるのかが分からなくてはならない。また、ＡＣＬはメッセージの文法を定めるだけで、メッセージの中身を表すための用語については定めていないので、この用語体系の翻訳機能についても持つ必要がある。
【０００４】
マルチエージェントシステムは、基本的には、情報要求側エージェントと情報提供側エージェントとで構成されているが、従来では、これらのエージェントの間に仲介エージェントを用意して、この仲介エージェントに、依頼元の要求に応えるサービスを提供するエージェントの選択機能を持たせるとともに、エージェント間の用語体系（オントロジーと呼ばれている）の違いを吸収する翻訳機能を持たせるという構成を採っていた。そして、この仲介エージェントに、複数の情報提供側エージェントから送られてくる回答を統合する機能を持たせるという構成を採っていた。
【０００５】
本発明者らは、ネットワークに分散配置される商品情報やサービス情報のカタログ情報をあたかも１つのカタログ情報として見せる仮想カタログシステムを特許出願するとともに学会で発表してきたが、この仮想カタログシステムのエージェントシステムでも、図２７に示すように、ユーザエージェント（エージェント世界とブラウザとの間を繋ぐもの）と、データベースエージェント（エージェント世界とデータベースとの間を繋ぐもの）との間に、仲介エージェントを用意する構成を採って、この仲介エージェントに、ユーザエージェントの必要とするカタログ情報を管理するデータベースエージェントの選択機能を持たせるとともに、エージェント間の用語体系の違いを吸収する翻訳機能を持たせるという構成を採っている。そして、この仲介エージェントに、複数のデータベースエージェントから送られてくる回答を統合する機能を持たせるという構成を採っている。
【０００６】
すなわち、図２７に示す仮想カタログシステムでは、データベースエージェントが、仲介エージェントに対して、データベースを抽象化した仮想知識ベースの持つ能力をアドバタイズ（宣伝）することで、その仮想知識ベースで扱うことのできるカテゴリや、その仮想知識ベースで用いるオントロジーなどを通知する構成を採っている。
【０００７】
このように構成されるときにあって、ユーザエージェントは、ユーザがブラウザを介して検索要求を発行すると、その検索要求をＡＣＬメッセージに変換して仲介エージェントに送り、これを受けて、仲介エージェントは、先に受け取ったアドバタイズ情報から、そのＡＣＬメッセージを扱えるデータベースエージェントを選択するとともに、そのＡＣＬメッセージの持つ用語をその選択したデータベースエージェントの扱える用語に翻訳してから、そのＡＣＬメッセージをデータベースエージェントに送る。
【０００８】
この検索要求のＡＣＬメッセージを受け取ると、データベースエージェントは、そのＡＣＬメッセージからＳＱＬ（データベース操作言語）コマンドを生成してデータベースを検索し、検索結果をＡＣＬメッセージとして組み立てて、仲介エージェントに送る。この検索結果のＡＣＬメッセージを受け取ると、仲介エージェントは、複数のデータベースエージェントから送られてくる検索結果の回答を１つのメッセージとしてまとめて、ユーザエージェントに回答する。
【０００９】
このようにして、本発明者らが開示した仮想カタログシステムは、ネットワークに分散配置される商品情報やサービス情報のカタログ情報をあたかも１つのカタログ情報として見せることを実現しているが、この実現にあたって、ユーザエージェントとデータベースエージェントとの間に、仲介エージェントを用意する構成を採って、この仲介エージェントに、ユーザエージェントの必要とするカタログ情報を管理するデータベースエージェントの選択機能を持たせるとともに、エージェント間の用語体系の違いを吸収する翻訳機能を持たせるという構成を採っているのである。そして、この仲介エージェントに、複数のデータベースエージェントから送られてくる回答を統合する機能を持たせるという構成を採っているのである。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
確かに、マルチエージェントシステムを構築するにあたって、エージェント間の仲介処理を実行する仲介エージェントを用意して、この仲介エージェントに、依頼元の要求に応えるサービスを提供するエージェントの選択機能を持たせたり、エージェント間の用語体系の違いを吸収する翻訳機能を持たせたり、回答結果の統合機能を持たせるという構成を採ることは極めて有効な方法である。
【００１１】
しかしながら、このような構成を採ると、次のような問題点がある。
【００１２】
すなわち、エージェントを選び出す機能や、選び出した各エージェントとの間のやり取りを行うためのメッセージを翻訳する機能や、複数の回答メッセージを統合する機能などが全て仲介エージェントに集中することから、仲介エージェントの負荷が増大し、これにより、エージェント間で大量のやり取りが起こる場合に、応答性が悪くなるという問題点がある。
【００１３】
そして、回答メッセージの統合が必要ない場合にも、必ず仲介エージェントを経由しなければならないといったように、仲介エージェントを必要としない場合にも、必ず仲介エージェントを経由しなければならず、経路的に無駄がでるという問題点がある。
【００１４】
この問題点を解決するために、仲介エージェントの持つ複数の機能を分割して、それぞれ別のエージェントに担当させるという方法を採ることが考えられる。例えば、図２８に示すように、メッセージの翻訳機能やエージェントの選択機能を、仲介エージェントとは別のエージェントに仲介させるという構成を採ることが考えられる。
【００１５】
しかしながら、この方法を用いると、例えば、「目的のエージェントを選び出して、そのエージェントにメッセージを送る」という行動を行うために、エージェントの選択機能を持つエージェントに対して、アクセス先となるエージェントの選択を依頼し、続いて、メッセージの翻訳機能を持つエージェントに対して、メッセージの翻訳を依頼してから、その翻訳メッセージをその選択エージェントに渡すという処理を行わなければならないというように、複数のエージェントにまたがるまとまった処理を実行する場合に、それをまとめて１回で実行できなくなることになる。
【００１６】
これから、各機能を担う仲介エージェントは、まとめ役の仲介エージェントとの間でやり取りを重ねて行うことになり、やり取りの数がかえって増加することになる。
【００１７】
本発明はかかる事情に鑑みてなされたものであって、効率的な知的分散環境を実現可能にする新たなエージェント装置の提供と、そのエージェント装置の実現に用いられるプログラムが記録される新たなプログラム記録媒体の提供とを目的とする。
【課題を解決するための手段】
【００１８】
図１に本発明の原理構成を図示する。
【００１９】
図中、１ａは本発明に関連する技術で構成される１つ又は複数の第１のエージェント装置、１ｂは本発明を具備する１つ又は複数の第２のエージェント装置、１ｃは本発明に関連する技術で構成される複数の第３のエージェント装置である。
【００２０】
第１のエージェント装置１ａは、抽象レベルの記述形式をとる処理要求のメッセージを発行し、第２のエージェント装置１ｂは、第１のエージェント装置１ａの発行するメッセージの処理を具体化し、第３のエージェント装置１ｃは、第２のエージェント装置１ｂにより具体化されたメッセージに従って順番に起動されて、第１のエージェント装置１ａの要求する処理を実行してその処理結果を回答する。
【００２１】
この第１のエージェント装置１ａは、システムの持つ知識に基づいて、他エージェント装置に送信するメッセージの配送先情報とそのメッセージの指定する処理情報との対データの繋がりで定義されるサービスリストを生成する生成手段１０と、他エージェント装置に送信するメッセージに、生成手段１０の生成するサービスリストを付加して送信する送信手段１１とを備える。
【００２２】
この生成手段１０は、基本的には、抽象レベルの記述形式をとるサービスリストを生成するが、可能な場合には、詳細レベルの記述形式をとるサービスリストを生成したり、一部に詳細レベルの記述形式を含む抽象レベルの記述形式をとるサービスリストを生成する。
【００２３】
一方、第２のエージェント装置１ｂは、他エージェント装置から送られてくるメッセージを受信する受信手段２０と、受信手段２０の受信するメッセージに付加される抽象レベル（詳細レベルを含む場合もある）のサービスリストを抽出する抽出手段２１と、システムの持つ知識に基づいて、抽出手段２１の抽出する抽象レベルのサービスリストを詳細化する詳細化手段２２と、受信手段２０の受信するメッセージに、詳細化手段２２の詳細化するサービスリストを付加して他エージェント装置に送信する送信手段２３とを備える。
【００２４】
この詳細化手段２２は、処理が完了するまでの詳細化を実行したり、後続のエージェント装置に詳細化処理の一部を委ねる形式で詳細化を実行することがある。また、メッセージの配送先が複数となるときには、メッセージを複製するとともに、その複製数をサービスリストに記録しつつ詳細化を実行する。
【００２５】
一方、第３のエージェント装置１ｃは、他エージェント装置から送られてくるメッセージを受信する受信手段３０と、受信手段３０の受信するメッセージに付加される詳細レベル（抽象レベルを含む場合もある）のサービスリストを抽出する抽出手段３１と、抽出手段３１の抽出するサービスリストの先頭の配送先情報が自装置を指定するときに、そのサービスリストの先頭の処理情報の指定する処理を実行する実行手段３２と、実行手段３２の実行対象となるサービスリスト部分を削除する削除手段３３と、実行手段３２の実行結果のメッセージに、削除手段３３の削除処理から除外されたサービスリストを付加して他エージェント装置に送信する送信手段３４とを備える。
【００２６】
この実行手段３２は、抽出手段３１の抽出するサービスリストに複製数が記録されるときには、その複製数分のメッセージが出揃ってから処理情報の指定する処理を実行する。また、サービスリストの先頭の処理情報に続く１つ又は複数の処理情報についての処理能力を持つときには、その処理情報の指定する処理についても実行することがある。
【００２７】
更に、第３のエージェント装置１ｃは、受信手段３０の受信するメッセージを保存する保存手段３５と、実行手段３２の実行結果とシステムの持つ知識とに基づいて、受信したサービスリストの配送先情報と処理情報のいずれか一方又は双方を修正する修正手段３６と、受信したサービスリストを参照することで、送信するメッセージが自装置の所に戻ってくるのか否かを判断する判断手段３７と、判断手段３７が自装置の所に戻ってくるメッセージであることを判断するときに、そのメッセージが戻ってくる時点で自装置が実行することになる処理情報をそのメッセージのサービスリストから取り外す除外手段３８と、除外手段３８の取り外し対象としたメッセージが戻ってくる時点で、除外手段３８の取り外した処理情報をそのメッセージの持つサービスリストに復帰させる復帰手段３９と、自装置配下のエージェント装置のメッセージの処理状態を収集する収集手段４０とを備える。
【００２８】
この除外手段３８は、自装置が実行することになる処理情報に続く他エージェント装置の実行する処理情報についても、サービスリストから取り外すことがある。
【００２９】
ここで、第１のエージェント装置１ａや第２のエージェント装置１ｂや第３のエージェント装置１ｃの持つ機能は、具体的にはプログラムで実現されるものであり、このプログラムは、フロッピィディスクなどに記録されたり、回線を介して接続されるディスクなどに記録され、それらから第１のエージェント装置１ａや第２のエージェント装置１ｂや第３のエージェント装置１ｃにインストールされてメモリ上で動作することで、本発明により構築されるマルチエージェントシステムを実現することになる。
【００３０】
このように構成される本発明の第２のエージェント装置１ｂを備えるマルチエージェントシステムでは、ユーザから処理要求が発行されると、第１のエージェント装置１ａの生成手段１０は、その処理要求を実現するための抽象レベルの記述形式をとるサービスリストを生成し、送信手段１１は、第２のエージェント装置１ｂに処理要求のメッセージを通知するときに、そのメッセージにそのサービスリストを付加して送信する。
【００３１】
この第１のエージェント装置１ａの処理を受けて、第２のエージェント装置１ｂでは、受信手段２０が第１のエージェント装置１ａからの処理要求のメッセージを受信すると、抽出手段２１は、その受信されたメッセージに付加される抽象レベルのサービスリストを抽出する。これを受けて、詳細化手段２２は、システムの持つ知識に基づいて、抽出された抽象レベルのサービスリストを詳細化し、送信手段２３は、受信手段２０の受信するメッセージに詳細化されたサービスリストを付加して、第３のエージェント装置１ｃに送信する。
【００３２】
この第２のエージェント装置１ｂの処理を受けて、第３のエージェント装置１ｃでは、受信手段３０が第２のエージェント装置１ｂからの処理要求のメッセージを受信すると、抽出手段３１は、その受信されたメッセージに付加される詳細レベルのサービスリストを抽出する。これを受けて、実行手段３２は、抽出されたサービスリストの先頭の配送先情報が自装置を指定するときに、そのサービスリストの先頭の処理情報の指定する処理を実行し、このとき、削除手段３３は、実行手段３２の実行対象となるサービスリスト部分を削除する。実行手段３２による実行結果が得られると、送信手段３４は、実行手段３２の実行結果のメッセージに削除手段３３の削除処理から除外されたサービスリストを付加して、他の第３のエージェント装置１ｃに送信する。
【００３３】
このようにして、第３のエージェント装置１ｃは、図２に示すように、メッセージに付加される詳細レベルのサービスリストの持つ配送先情報の順番に従って起動されて、そのサービスリストの持つ処理情報（処理依頼のサービス名や入力状態や出力状態で構成される）の指定する処理を実行していくことになる。そして、最後に起動される第３のエージェント装置１ｃが、サービスリストの持つ配送先情報に従って、処理結果を処理要求発行元の第１のエージェント装置１ａに回答する。
【００３４】
このとき、第３のエージェント装置１ｃの実行手段３２は、第２のエージェント装置１ｂの詳細化手段２２がメッセージを複製するとともに、その複製数をサービスリストに記録しつつ詳細化を実行するときには、受け取ったサービスリストに記録される複製数分のメッセージが出揃ってから処理情報の指定する処理を実行する。
【００３５】
また、第３のエージェント装置１ｃの実行手段３２は、サービスリストの先頭の処理情報に続く１つ又は複数の処理情報についての処理能力を持つときには、その処理情報の配送先となる他の第３のエージェント装置１ｃに代わって、その処理情報の指定する処理についても代行して実行してしまうことがある。
【００３６】
更に、第３のエージェント装置１ｃでは、保存手段３５は、受信手段３０の受信したメッセージを保存する。この保存されるメッセージには、メッセージの振る舞いを示すサービスリストが付加されているので、システムに障害が発生したときなどには、これを参照することで障害解析を正確かつ簡単に行うことができるようになる。
【００３７】
また、修正手段３６は、実行手段３２の実行結果とシステムの持つ知識とに基づいて、受信したサービスリストの配送先情報と処理情報のいずれか一方又は双方を修正（追加したり削除したり変更する）する。この修正処理により、実行手段３２の実行結果によりサービスリストが変動するような場合に、それに対処できるようになる。
【００３８】
また、除外手段３８は、判断手段３７が自装置の所に戻ってくるメッセージであることを判断するときには、それが戻ってくる時点で実行することになる処理情報（それに続く他の第３のエージェント装置１ｃの実行する処理情報も含むことがある）をサービスリストから取り外し、これを受けて、復帰手段３９は、そのメッセージが戻ってくる時点で、除外手段３８の取り外した処理情報をそのメッセージの持つサービスリストに復帰させる。この処理により、自処理の内容が他の第３のエージェント装置１ｃに漏洩するのを防止できるようになる。
【００３９】
また、収集手段４０は、自装置配下の第３のエージェント装置１ｃのメッセージの処理状態を収集する。このとき収集されるメッセージには、メッセージの振る舞いを示すサービスリストが付加されているので、自装置配下の第３のエージェント装置１ｃがどのような状態にあるのかを正確に把握できるようになる。
【発明の効果】
【００４０】
以上説明したように、本発明により構築されるマルチエージェントシステムによれば、ネットワークを介して分散配置されるエージェントなどのソフトウェアの間でやり取りされるメッセージに、メッセージの配送先情報とメッセージの指定する処理情報との対データの繋がりで定義されるサービスリストを付加し、配送先のソフトウェアにより処理の終了したサービスリスト部分を削除しつつ、そのサービスリストの付加されたメッセージをソフトウェアからソフトウェアへと配送していくことで処理を実行する構成を採ることから、特定のソフトウェアに負荷をかけることなく効率的な分散環境を構築できるようになる。
【００４１】
具体的に説明するならば、本発明により構成されるマルチエージェントシステムによれば、１対１でないメッセージの送信が可能になる。そして、処理要求を実現するエージェントの選び出しを行う際に、複数のエージェントをまたがって行う処理全般を選び出すという拡張が可能になる。
【００４２】
そして、エージェントを追加するときに、その追加エージェントの追加を仲介エージェントのようなエージェントに登録するだけでよく、また、その追加エージェントを使って行う複合的な処理内容についても仲介エージェントのようなエージェントの知識に追加するだけでよく、その他のエージェントには変更や追加を行う必要がないので、エージェントの追加・拡張や、それに基づく複合的な処理内容の追加・拡張が簡単に実現できる。
【００４３】
そして、メッセージの処理状態をメッセージ自体に持たせる構成を採ることから、複数のエージェントに渡るような複雑な処理手順を踏む必要がある場合にも、１つのエージェントがその処理手順の面倒を見て複数のエージェントにメッセージを順番に配るような処理を行う必要がないので、エージェントの持つ機能を分散できるとともに、１つのエージェントに負荷が集中するのを回避でき、負荷の分散を効率的に行うことが可能になる。
【発明を実施するための最良の形態】
【００４４】
以下、仮想カタログシステムに適用した実施の形態に従って本発明を詳細に説明する。
【００４５】
図３に、本発明の適用される仮想カタログシステムのシステム構成を図示する。
【００４６】
この図に示す仮想カタログシステムは、ネットワーク９００に、商品／サービス・データベース１００と、データベースエージェント２００と、ブラウザ３００と、ユーザエージェント４００と、仲介エージェント５００と、第１の翻訳エージェント６００と、第２の翻訳エージェント７００と、統合エージェント８００と、ネットワーク９００とが接続されることで構成されている。
【００４７】
これらのデータベースエージェント２００と、ユーザエージェント４００と、仲介エージェント５００と、第１の翻訳エージェント６００と、第２の翻訳エージェント７００と、統合エージェント８００とは、ＡＣＬ(Agent Communication Language) により通信を行うことで相互に通信が可能となっている。
【００４８】
ＡＣＬは、エージェント間でやり取りするメッセージを規定するエージェント間通信言語であり、情報の内容などの知識を表現する知識表現言語ＫＩＦ（Knowledge Interchange Format) と、パーフォーマティブと呼ばれるエージェント間通信のトランザクションの動詞部分を規定する言語のＫＱＭＬ（Knowledge Query and Manipulation Language)と、エージェントで使用する用語体系の種別を示すオントロジー（Ontology）とからなっている。
【００４９】
エージェントがＡＣＬにより通信を行うためには、実際の情報をエージェントの持つ知識（仮想知識ベース：ＶＫＢ）として抽象化する必要がある。図３のシステムでは、扱う情報が商品／サービス・データベース１００であることから、商品／サービス・データベース１００の情報を抽象化したものがデータベースエージェント２００の持つＶＫＢとなる。
【００５０】
ＶＫＢへのアクセスは、ＶＫＢにより記述されている知識の一部を条件によって切り出すこと、切り出した知識に対する操作（取り出す、消去する、書き換えるなど）を指定することからなる。ＡＣＬでＶＫＢにアクセスする場合には、ＫＩＦのリレーションにより対象となるＶＫＢ上の知識を切り出し、それに対する操作をＫＱＭＬのパーフォーマティブで指定する。
【００５１】
このＫＩＦのリレーションとしては、「ＶＫＢのレコードの特定のフィールドとその値とを対応付けるリレーション」や、「数値同士を比較する算術的なリレーション」や、「リレーション同士の論理的な組み合わせを定義するリレーション」や、「条件にあてはまるもの適用して二次的な結果を得るリレーション」などがある。
【００５２】
データベースエージェント２００は、仮想カタログシステムを実現するために、仲介エージェント５００に対して自分の持つ能力をアドバタイズする。
【００５３】
このアドバタイズ情報としては、ＶＫＢの名前、ＶＫＢで扱うことのできるカテゴリ、ＶＫＢに現れるフィールド、ＶＫＢで用いるオントロジー、ＶＫＢへのアクセスに利用できるリレーションなどがある。下記にアドバタイズ情報の一例を示す。
【００５４】
((database百道浜市場）
(=> (member ?x百道浜市場）
(isa ?x 農産物) 
(field-definition 百道浜市場  商品名 'is-text)
(field-definition 百道浜市場  カテゴリ名 'is-text)
(field-definition 百道浜市場  カテゴリコード 'is-number)
(field-definition 百道浜市場  生産社名 'is-text)
・・・
(default-ontolgy standard.database.kif) 
(allows-relational-db-query 百道浜市場))) 
このアドバタイズ情報では、ＶＫＢの名前が百道浜市場であり、扱うカテゴリは農産物であり、フィールドとして、商品名／カテゴリ名／カテゴリコード／生産者名などが存在し、標準のオントロジーを用い、エージェント間で取り決めたリレーショナルデータベース的な問い合わせ方法が利用可能である。
【００５５】
図１で説明したように、本発明では、図３に示すように構成されるようなマルチエージェントシステムで、メッセージに、メッセージの配送先情報とそのメッセージの指定する処理情報との対データの繋がりで定義されるサービスリストを付加する構成を採っている。
【００５６】
図４に、図３の仮想カタログシステムに対して本発明を適用する場合に用いるサービスリストの一例を図示する。
【００５７】
この図に示すサービスリストは、配送先のエージェントで実行すべきサービス名と、サービス名の指す処理が実行される前のメッセージの状態（入力のオントロジーなど）と、サービス名の指す処理が実行された後のメッセージの状態（出力のオントロジーなど）と、配送先のエージェント名との対データを一サービスリスト単位として、そのサービスリスト単位がリスト状に繋がることで構成されている。
【００５８】
このサービスリストは、処理の内容及び手順を指示するという性質を持つ。例えば、図５（ａ）に示すサービスリストは、先ず最初に、第１の翻訳エージェント６００（ｔ１）で、メッセージで指定される検索内容をＡオントロジーからＤオントロジーに翻訳し、続いて、データベースエージェント２００（ｄｂ１）で、その検索内容の検索を行うことで検索結果を得て、続いて、第２の翻訳エージェント７００（ｔ２）で、その検索結果をＤオントロジーからＡオントロジーに翻訳し、続いて、統合エージェント８００で、３つのデータベースエージェント２００で検索される検索結果を統合して、それをユーザエージェント４００に回答することを指示している。
【００５９】
ここで、サービスリストに記録されるサービス名や入力状態や出力状態や配送先エージェント名が決定できないことで抽象レベルにあるときには、図５（ｂ）に示すように、その旨を示す記号「＊」が付けられることになる。
【００６０】
更に説明するならば、サービスリストのサービス名は、サービスリストの入力状態とサービスリストの出力状態との間の関係を宣言的に記述するものである。この関係の示す内容は、エージェント内の処理、メッセージに施す処理、メッセージの配送経路やサービス名を含むサービスリストの再設定や具現化、メッセージの次のエージェントへの送信などに関する、どれか又は複数の制約が含まれたものと考えることができ、各エージェントは、その制約に従いながら、個々のエージェントの仕様や実装に依存した処理を行うことになる。
【００６１】
どのような物事もサービス名の指す処理の対象となるものであるが、以下に説明する実施例では、説明の便宜上、データベースの検索、メッセージを配送先に適合するための翻訳、エージェントへの配送経路の設定、複数のメッセージのマージを想定している。
【００６２】
ユーザエージェント４００の主な機能は、ブラウザを通して入力されてきた検索要求をＡＣＬメッセージに変換するとともに、その検索要求から抽象レベルのサービスリストを作成して、その抽象レベルのサービスリストをそのＡＣＬメッセージに付加して仲介エージェント５００に送信することである。
【００６３】
仲介エージェント５００の主な機能は、ユーザエージェント４００から抽象レベルのサービスリストを持つＡＣＬメッセージが送られてくると、データベースエージェント２００から送られてきた上述のアドバタイズ情報を参照することで、そのＡＣＬメッセージに付加されている抽象レベルのサービスリストを詳細化することで具体化し、送られてきたＡＣＬメッセージのサービスリストをこの詳細レベルのサービスリストに置き換えてから、データベースエージェント２００に送信することである。
【００６４】
データベースエージェント２００の主な機能は、仲介エージェント５００から詳細レベルのサービスリストを持つＡＣＬメッセージが送られてくると、そのＡＣＬメッセージに付加されている詳細レベルのサービスリストに応答して、そのＡＣＬメッセージで指定される検索内容をＳＱＬ（データベース操作言語）コマンドに変換して検索処理を実行し、このとき、必要に応じて、第１の翻訳エージェント６００や第２の翻訳エージェント７００に翻訳依頼のＡＣＬメッセージを送信することである。
【００６５】
第１の翻訳エージェント６００や第２の翻訳エージェント７００の主な機能は、ユーザエージェント４００の使用している用語体系と、データベースエージェント２００の使用している用語体系とを合わせることで、ユーザエージェント４００が異なる用語体系を持つ複数のデータベースエージェント２００にアクセスできるようにすることである。
【００６６】
ここで、第１の翻訳エージェント６００は、ＡオントロジーからＤオントロジーへの翻訳処理を実行し、第２の翻訳エージェント７００は、ＤオントロジーからＡオントロジーへの翻訳処理を実行することを想定している。
【００６７】
第１の翻訳エージェント６００は、例えば、図６に示すように、百道浜市場データベースがＤオントロジーを使用しているときにあって、ユーザがＡオントロジー体系の検索画面を利用して検索要求を発行するときには、ＡオントロジーからＤオントロジーへの翻訳を実行する翻訳関数を使って、Ａオントロジー体系の検索画面で使用される項目名の「産地」を、Ｄオントロジーで使用される「生産地」に変換するとともに、Ａオントロジー体系の検索画面で入力されるカテゴリコードの「01597218」を、Ｄオントロジーで使用される「30168945」に変換するといった翻訳処理を実行する。
【００６８】
図７に、ユーザエージェント４００の実行する処理フローの一例、図８及び図９に、仲介エージェント５００の実行する処理フローの一例、図１０に、データベースエージェント２００や第１の翻訳エージェント６００や第２の翻訳エージェント７００の実行する処理フローの一例、図１２及び図１３に、統合エージェント８００の実行する処理フローの一例を図示する。
【００６９】
次に、これらの処理フローに従って、本発明について詳細に説明する。
【００７０】
ユーザエージェント４００は、ユーザから商品／サービス・データベース１００に対する検索要求があると、図７の処理フローに示すように、先ず最初に、ステップ１で、searchをサービス名とし、取り扱うオントロジーを入力状態／出力状態とし、配送先エージェント名を未定とするサービスリスト単位と、配送先エージェント名を自エージェント名とするサービスリスト単位とを作成することで抽象サービスリストを作成する。
【００７１】
すなわち、ユーザエージェント４００の取り扱うオントロジーをＡオントロジーとするならば、
〔* ｓｅａｒｃｈ，ｉｎＡ，ｏｕｔＡ，* 〕
〔 ， ， ，ｕａ〕
という抽象サービスリストを作成するのである。
【００７２】
続いて、ステップ２で、検索内容をメッセージ本体とするＡＣＬメッセージを作成する。例えば、農産物をカテゴリとする商品／サービス・データベース１００を検索対象として、その中から、青森県を産地として、１０ｋｇ当たり１５００円以下のりんごを扱う生産者を検索したいという要求が発行されるときには、そのような検索内容をメッセージ本体とするＡＣＬメッセージを作成するのである。
【００７３】
続いて、ステップ３で、作成したＡＣＬメッセージに、作成した抽象サービスリストを付加して、仲介エージェント５００に送って処理を終了する。
【００７４】
このユーザエージェント４００の発行する検索要求のＡＣＬメッセージを受け取ると、仲介エージェント５００は、図８及び図９の処理フローに示すように、先ず最初に、ステップ１で、受け取ったＡＣＬメッセージの検索内容から、検索要求の指定するカテゴリを取り出す。すなわち、農産物をカテゴリとする検索内容であるときには、カテゴリとして農産物が指定されていることを取り出すのである。
【００７５】
続いて、ステップ２で、保持してあるデータベースエージェント２００からのアドバタイズ情報を参照することで、取り出したカテゴリを扱うデータベースエージェント２００を選び出す。上述したように、データベースエージェント２００は、前もって、自分の取り扱うことのできるカテゴリなどの能力情報を仲介エージェント５００にアドバタイズするので、そのアドバタイズ情報に従って、検索内容の指定するカテゴリを扱うデータベースエージェント２００を選び出すのである。
【００７６】
続いて、ステップ３で、選び出したデータベースエージェント２００が複数であるのか否かを判断して、複数であることを判断するときには、ステップ４に進んで、ユーザエージェント４００から受け取ったサービスリストの持つ２つのサービスリスト単位の間に、サービス名のmerge を付加して、その入力状態に、このmerge を実行する統合エージェント８００の取り扱う入力のオントロジーと、選び出したデータベースエージェント２００の数を分母とし“１”を分子とする“１／ｎ”とを登録し、その出力状態に、このmerge を実行する統合エージェント８００の取り扱う出力のオントロジーと、「ｎ個×（１／ｎ）＝１」から導出される“１”とを登録し、配送先エージェント名に、このmerge を実行する統合エージェント８００のエージェント名を登録する。
【００７７】
すなわち、統合エージェント８００の取り扱うオントロジーをＡオントロジーとし、選び出したデータベースエージェント２００の数を“３”とし、統合エージェント８００のエージェント名をｍ１とするならば、ユーザエージェント４００から受け取ったサービスリストの持つ２つのサービスリスト単位の間に、
〔ｍｅｒｇｅ，ｏｕｔＡ：１／３，ｏｕｔ：１，ｍ１〕
というサービスリスト単位を挿入するのである。
【００７８】
続いて、ステップ５で、選び出したデータベースエージェント２００の数に合わせて、メッセージを複製する。すなわち、選び出したデータベースエージェント２００の数がｎ個であるならば、メッセージがｎ個となるようにと複製処理を実行するのである。この複製処理により複製されるメッセージは同じＩＤを持つことになる。
【００７９】
ステップ５での複製処理を終了し、また、ステップ３で、選び出したデータベースエージェント２００が１つであることを判断すると、ステップ６に進んで、サービスリストの先頭のサービスリスト単位の持つ配送先エージェント名に、選び出したデータベースエージェント２００のエージェント名を登録する。
【００８０】
すなわち、選び出したデータベースエージェント２００のエージェント名がｄｂ１、ｄｂ２、ｄｂ３であるときには、ステップ４／ステップ５を経由することで作成された３つのメッセージの先頭のサービスリスト単位の持つ配送先エージェント名（ユーザエージェント４００から送られてきた抽象サービスリストでは未定とされていたもの）に、
〔* ｓｅａｒｃｈ，ｉｎＡ，ｏｕｔＡ，ｄｂ１〕
〔* ｓｅａｒｃｈ，ｉｎＡ，ｏｕｔＡ，ｄｂ２〕
〔* ｓｅａｒｃｈ，ｉｎＡ，ｏｕｔＡ，ｄｂ３〕
というように、ｄｂ１、ｄｂ２、ｄｂ３というエージェント名を登録するのである。
【００８１】
続いて、ステップ７で、選び出したデータベースエージェント２００の中から１つを選択し、続くステップ８で、全て取り出したのか否かを判断して、全て取り出したことを判断するときには、ステップ９（図９の処理フロー）に進んで、これまでの処理により詳細化したサービスリストをメッセージに付加してデータベースエージェント２００に送信して処理を終了する。
【００８２】
一方、ステップ８で、データベースエージェント２００を取り出せたことを判断するときには、ステップ１０（図９の処理フロー）に進んで、保持してあるデータベースエージェント２００からのアドバタイズ情報を参照することで、その取り出したデータベースエージェント２００の取り扱うオントロジーを調べ、続くステップ１１で、そのオントロジーをsearchのサービスリスト単位の入力状態と出力状態とに登録する。
【００８３】
すなわち、選び出したデータベースエージェント２００の取り扱うオントロジーがＤオントロジーであるときには、例えば、
〔* ｓｅａｒｃｈ，ｉｎＡ，ｏｕｔＡ，ｄｂ１〕
の入力状態と出力状態とにＤオントロジーを登録することで、
〔ｓｅａｒｃｈ，ｉｎＤ，ｏｕｔＤ，ｄｂ１〕
というように、searchのサービスリスト単位を詳細化するのである。
【００８４】
続いて、ステップ１２で、取り出したデータベースエージェント２００の取り扱うオントロジーが検索要求発行元のユーザエージェント４００の使用するオントロジー（ユーザエージェント４００から送られてきた抽象サービスリストに記録されている）と異なるのか否かをチェックする。
【００８５】
このチェック処理に従って、データベースエージェント２００の取り扱うオントロジーと、検索要求発行元のユーザエージェント４００の使用するオントロジーとが同一であることを判断するときには、直ちにステップ７に戻る。
【００８６】
一方、この両者のオントロジーが異なることを判断するときには、ステップ１３に進んで、サービスリストの持つsearchのサービスリスト単位の前後に、サービス名のtranslate を付加して、その入力状態に、翻訳元のオントロジーを登録し、その出力状態に翻訳先のオントロジーを登録し、配送先エージェント名に、このtranslate を実行する第１の翻訳エージェント６００や第２の翻訳エージェント７００のエージェント名を登録してから、ステップ７に戻る。
【００８７】
すなわち、選び出したデータベースエージェント２００の使用するオントロジーがＤオントロジーで、検索要求発行元のユーザエージェント４００の使用するオントロジーがＡオントロジーで、ＡオントロジーからＤオントロジーへの翻訳処理を実行する第１の翻訳エージェント６００のエージェント名がｔ１で、ＤオントロジーからＡオントロジーへの翻訳処理を実行する第２の翻訳エージェント７００のエージェント名がｔ２であるとするならば、検索内容をデータベースエージェント２００に通知可能にするために、サービスリストの持つsearchのサービスリスト単位の前に、
〔ｔｒａｎｓｌａｔｅ，ｉｎＡ，ｉｎＤ，ｔ１〕
というサービスリスト単位を挿入し、検索結果をユーザエージェント４００に通知可能にするために、サービスリストの持つsearchのサービスリスト単位の後に、
〔ｔｒａｎｓｌａｔｅ，ｏｕｔＤ，ｏｕｔＡ，ｔ２〕
というサービスリスト単位を挿入するのである。
【００８８】
このようにして、仲介エージェント５００は、ユーザエージェント４００から抽象レベルのサービスリストを持つ検索要求のメッセージが送られてくると、図１３及び図１４に示すように、その抽象レベルのサービスリストを詳細化することで具体化して、その詳細化したサービスリストを持つメッセージをデータベースエージェント２００に送信する。
【００８９】
なお、図１４では、１つのデータベースエージェント２００がユーザエージェント４００と同じオントロジーを使用することで、第１の翻訳エージェント６００と第２の翻訳エージェント７００による翻訳処理が施されないことを想定している。
【００９０】
この図１３及び図１４に示す詳細レベルのサービスリストは、図１５に示すように、先ず最初に、必要に応じて、第１の翻訳エージェント６００で、メッセージで指定される検索内容をＡオントロジーからＤオントロジーに翻訳し、続いて、データベースエージェント２００で、その検索内容の検索を行うことで検索結果を得て、続いて、必要に応じて、第２の翻訳エージェント７００で、その検索結果をＤオントロジーからＡオントロジーに翻訳し、続いて、統合エージェント８００で、データベースエージェント２００で検索される検索結果を統合して、それをユーザエージェント４００に回答することを指示している。
【００９１】
次に、データベースエージェント２００／第１の翻訳エージェント６００／第２の翻訳エージェント７００／統合エージェント８００の実行する処理について説明する。
【００９２】
これらのエージェントは、基本的には、図１０の処理フローに従う処理を実行するものであるが、統合エージェント８００については、説明の便宜上、図１１及び図１２に示す詳細な処理フローに従ってその実行処理を説明する。
【００９３】
データベースエージェント２００／第１の翻訳エージェント６００／第２の翻訳エージェント７００は、詳細レベルのサービスリストを持つメッセージが送られてくると、図１０の処理フローに示すように、先ず最初に、ステップ１で、受信したメッセージの持つメッセージ本体を取り出す。この実施例の場合には、メッセージ本体は検索内容か検索結果である。
【００９４】
続いて、ステップ２で、受信したメッセージの持つサービスリストを取り出す。このサービスリストは、上述したように、配送先のエージェントで実行すべきサービス名と、そのメッセージの入力状態と、そのメッセージの出力状態と、配送先のエージェント名との対データを一サービスリスト単位として、そのサービスリスト単位がリスト状に繋がることで構成されている。
【００９５】
続いて、ステップ３で、サービスリストの中から先頭のサービスリスト単位を抽出し、続くステップ４で、その先頭のサービスリスト単位の配送エージェント名が自エージェントを指しているのか否かを判断して、自エージェントを指していないことを判断するときには、自処理の実行が指示されていないので、そのまま処理を終了する。
【００９６】
一方、自エージェントを指していることを判断するときには、ステップ５に進んで、必要に応じて指定された入力状態と出力状態とを参照しつつ、先頭のサービスリスト単位の持つサービス名の指定する処理を実行することでメッセージ本体に必要な変更を施す。
【００９７】
すなわち、第１の翻訳エージェント６００であれば、translate というサービス名の指定に従って、メッセージ本体で与えられる検索内容の用語体系をＡオントロジーからＤオントロジーに翻訳し、データベースエージェント２００であれば、searchというサービス名の指定に従って、メッセージ本体で与えられる検索内容に従って商品／サービス・データベース１００を検索し、第２の翻訳エージェント７００であれば、translate というサービス名の指定に従って、メッセージ本体で与えられる検索結果の用語体系をＤオントロジーからＡオントロジーに翻訳する処理を行う。
【００９８】
続いて、ステップ６で、処理を終了したことに対応して、先頭のサービスリスト単位を削除しつつ、サービスリストを付加しながら処理結果の出力メッセージを組み立て、続くステップ７で、その組み立て出力メッセージを他エージェントに送信して処理を終了する。
【００９９】
この図１０の処理フローに従って、仲介エージェント５００が図１３及び図１４に示した、
〔ｔｒａｎｓｌａｔｅ，ｉｎＡ，ｉｎＤ，ｔ１〕
〔ｓｅａｒｃｈ，ｉｎＤ，ｏｕｔＤ，ｄｂ１〕
〔ｔｒａｎｓｌａｔｅ，ｏｕｔＤ，ｏｕｔＡ，ｔ２〕
〔ｍｅｒｇｅ，ｏｕｔＡ：１／３，ｏｕｔ：１，ｍ１〕
〔 ， ， ，ｕａ〕
という詳細レベルのサービスリストを作成すると、先ず最初に、第１の翻訳エージェント６００が起動されて、図１６（ａ）に示すように、メッセージ本体で与えられる検索内容をＡオントロジーからＤオントロジーに翻訳し、続いて、データベースエージェント２００が起動されて、図１６（ｂ）に示すように、Ｄオントロジーで表現される検索を得て、続いて、第２の翻訳エージェント７００が起動されて、図１７に示すように、データベースエージェント２００の検索した検索結果をＤオントロジーからＡオントロジーに翻訳するのである。
【０１００】
この処理の終了時点のサービスリストは、図１７に示すように、
〔ｍｅｒｇｅ，ｏｕｔＡ：１／３，ｏｕｔ：１，ｍ１〕
〔 ， ， ，ｕａ〕
というものになっている。
【０１０１】
このサービスリストの持つサービス名のmerge に応答して起動されるのが統合エージェント８００である。
【０１０２】
次に、図１１及び図１２の処理フローに従って、統合エージェント８００の実行する処理について説明する。
【０１０３】
統合エージェント８００は、詳細レベルのサービスリストを持つメッセージが送られてくると、図１１及び図１２の処理フローに示すように、先ず最初に、ステップ１で、受信したメッセージの持つメッセージ本体を取り出す。統合エージェント８００に送られてくるメッセージは、データベースエージェント２００により得られる検索結果であるので、このステップ１では、メッセージが自エージェント宛であるときには検索結果を取り出すことになる。
【０１０４】
続いて、ステップ２で、受信したメッセージの持つサービスリストを取り出し、続くステップ３で、サービスリストの中から先頭のサービスリスト単位を抽出する。続いて、ステップ４で、その先頭のサービスリスト単位の配送エージェント名が自エージェントを指しているのか否かを判断して、自エージェントを指していないことを判断するときには、自処理の実行が指示されていないので、そのまま処理を終了する。
【０１０５】
一方、自エージェントを指していることを判断するときには、ステップ５に進んで、受信したメッセージのＩＤを取り出し、続くステップ６で、同一メッセージＩＤのプールが存在するのか否かを判断する。
【０１０６】
このステップ６の判断処理により、同一メッセージＩＤのプールが存在しないことを判断するときには、ステップ７に進んで、メッセージＩＤ対応にプールを作成し、続くステップ８で、プールの出力値として、サービスリスト単位の持つ出力値“１”（図８の処理フローのステップ４で出力状態に登録した「ｎ個×（１／ｎ）＝１」から導出される“１”）を設定する。続いて、ステップ１０に進んで、作成したプールに、ステップ１で取り出したメッセージ本体（検索結果）を格納する。
【０１０７】
一方、ステップ６の判断処理により、同一メッセージＩＤのプールが存在することを判断するときには、ステップ９に進んで、メッセージＩＤ対応に作成されているプールにアクセスし、続くステップ１０で、そのアクセスしたプールに、ステップ１で取り出したメッセージ本体（検索結果）を格納する。
【０１０８】
ステップ１０での格納処理を終了すると、続いて、ステップ１１（図１２の処理フロー）に進んで、ステップ３で抽出したサービスリスト単位の持つ分割値（図８の処理フローのステップ４で入力状態に登録した“１／ｎ”）の累積値を求め、続くステップ１２で、その累積値がステップ８で設定した出力値“１”に到達したのか否かを判断する。
【０１０９】
この判断処理により、受信したメッセージの先頭のサービスリスト単位の持つ分割値の累積値が出力値“１”に到達しないときには、そのまま処理を終了する。一方、出力値“１”に到達することを判断するとき、すなわち、図８の処理フローに従って複製したメッセージの全てが出揃うと判断するときには、ステップ１３に進んで、プール内に格納される複数のメッセージ本体（検索結果）を１つに統合し、続くステップ１４で、その統合した統合結果の出力メッセージを他エージェントに送信して処理を終了する。
【０１１０】
このようにして、統合エージェント８００は、検索要求のカテゴリを扱うデータベースエージェント２００が複数あるときには、図１８に示すように、それらのデータベースエージェント２００から得られる検索結果をマージするように処理するのである。
【０１１１】
このようにして送信される統合結果の出力メッセージには、
〔 ， ， ，ｕａ〕
というサービスリストが付加されており、このサービスリストを受けて、検索要求発行元のユーザエージェント２００は、統合エージェント８００により統合された検索結果を得ることになる。
【０１１２】
これにより、青森県を産地として、１０ｋｇ当たり１５００円以下のりんごを扱う生産者を検索したいという要求が発行されるときにあって、別々のデータベースエージェント２００から、津軽農場という生産者と弘前農場という生産者とが検索されるときには、この２つの生産者の検索結果がマージされて検索要求発行元のユーザエージェント４００に回答され、これにより、ユーザは、あたかも１つの商品／サービス・データベース１００からの検索結果を得ることができるのである。
【０１１３】
この実施例の説明から分かるように、メッセージに付加されるサービスリストは、エージェントを辿る間に状態遷移していく一連の処理の流れを表しているという性質を持つ。
【０１１４】
これから、各エージェントが他エージェントから受け取ったメッセージを保存しておく構成を採ると、障害が発生したときに、その障害原因を簡単かつ正確に特定できることになる。そして、各エージェントは、自配下のエージェントのメッセージの処理状態を参照することで、処理の進行状態などを簡単かつ正確に把握できるようになる。
【０１１５】
図１９に、データベースエージェント２００／第１の翻訳エージェント６００／第２の翻訳エージェント７００／統合エージェント８００の実行する処理フローの他の一例を図示する。
【０１１６】
この処理フローと図１０の処理フローとの違いは、図１０の処理フローでは、受信したメッセージの持つサービスリストの先頭のサービスリスト単位の指定する処理のみを実行する構成を採ったが、この処理フローでは、ステップ６及びステップ７に示すように、それに続くサービスリスト単位の指定する処理が自エージェントで可能である場合には、それについても代行して実行し、そして、それに合わせて、ステップ８で、実行したサービスリスト単位部分をサービスリストから削除するという構成を採っている点にある。
【０１１７】
例えば、データベースエージェント２００が、
〔ｓｅａｒｃｈ，ｉｎＤ，ｏｕｔＤ，ｄｂ１〕
〔ｔｒａｎｓｌａｔｅ，ｏｕｔＤ，ｏｕｔＡ，ｔ２〕
〔ｍｅｒｇｅ，ｏｕｔＡ：１／３，ｏｕｔ：１，ｍ１〕
〔 ， ， ，ｕａ〕
というサービスリストを持つメッセージを受け取るときに、図２０に示すように、このデータベースエージェント２００（ｄｂ１）が第２の翻訳エージェント７００（ｔ２）の翻訳機能についても持つときには、第２の翻訳エージェント７００に代わって、その翻訳処理についても実行してしまう構成を採るのである。
【０１１８】
サービスリストは、順番通り実行されなくてはならないことから、自エージェントの実行できない処理の後にある処理が自エージェントで実行できるとしても、それを代行して実行することはできないが、自エージェントで実行できる処理が続いているときには、それらの全てについて代行して実行することが可能である。
【０１１９】
このような代行処理は、例えば、サービスリストの詳細化を行うことがエージェントが、処理依頼先のエージェントの持つ能力を完全に把握していない場合や、複数のエージェントが、同一のサービスリストを段階的に詳細化していくことで発生することになるが、この代行処理の機能を備えることで最適化が図られることになる。
【０１２０】
なお、この実施例では、自分で実行できる処理を順番に実行していく構成を採っているが、自分で実行できる処理の組み合わせについてもまとめて一度に実行できる機能を持つときには、サービスリストの先頭から複数のサービスリスト単位をまとめて取り出して、それと自分で実行できる処理とのマッチングを判断して、まとめて一度に実行できるものがある場合には、まとめて一度に実行するようにすることが好ましい。
【０１２１】
図２１及び図２２に、データベースエージェント２００／第１の翻訳エージェント６００／第２の翻訳エージェント７００／統合エージェント８００の実行する処理フローの他の一例を図示する。
【０１２２】
この処理フローと図１０の処理フローとの違いは、図１０の処理フローでは、先頭のサービスリスト単位の処理を実行した後、処理結果の出力メッセージをそのまま送信する構成を採ったが、この処理フローでは、その先頭のサービスリスト単位以降のサービスリスト単位に自エージェントを指定しているものがあるのか否かを判断して、自エージェントを指定しているものがあることを判断するとき、すなわち、自エージェントに戻ってくるメッセージであることを判断するときには、サービスリストからその処理のサービス名を取り外す構成（入力状態や出力状態についても取り外してもよい）を採って、メッセージが戻ってきた時点で、それを自エージェントで実行する構成を採っている点である。
【０１２３】
すなわち、ステップ７で、受信した自分宛のメッセージの持つサービスリストの先頭のサービスリスト単位の指定する処理を実行すると、ステップ８で、残りのサービスリストに自エージェント名を配送先とするものがあるのか否かを判断して、あるときには、ステップ９で、それに割り付けられるサービス名をサービスリストから取り外して退避させる。
【０１２４】
そして、自分宛のメッセージを受信するとき、ステップ５で、先頭のサービスリスト単位のサービス名が取り外されているのか否かを判断して、サービス名が取り外されていることを判断するときには、ステップ６で、その取り外したサービス名の処理を実行するのである。
【０１２５】
上述したことから分かるように、本発明では、メッセージを単一のやり取りとして捉えるのではなくて、様々なエージェントを辿る間に状態遷移していく一連のやり取りの流れを表すものとして捉えている。そして、そのメッセージがどういう状態遷移を得て、目的のエージェントに辿りつくのかというメッセージを中心とする視点で一連の処理の流れを定義するという、いわばメッセージ指向に立ったアプローチの技術思想に立っている。
【０１２６】
この本発明のアプローチでは、様々な処理の手順を明示的に外部にくくり出すことで、従来であれば、仲介エージェントがまとめてやっていた処理を他のエージェントで処理したり、仲介エージェントが決めていた処理手順を他のエージェントで決めることが可能になり、メッセージのやり取りの回数についても効率が図られるという特徴がある。
【０１２７】
しかしながら、メッセージに施される処理が全てサービスリストに書かれていることから、その内容が見られて悪用される恐れがある。また、サービスリストに処理内容を全て書くことで、メッセージの大きさが大きくなるということも起こる。更に、上述した代行処理により、他のエージェントが自分の実行すべき処理を代行して実行してしまうことで、セキュリティ上の問題が発生する可能性がある。
【０１２８】
そこで、この図２１及び図２２の処理フローでは、自分の所に戻ってくるメッセージについては、サービスリストに書かれている戻ってきた時点で実行する処理情報（サービス名や入力状態や出力状態）を他のエージェントに隠す構成を採っているのである。そして、自分の所に戻ってきた時点で、サービスリストを復元するという構成を採っているのである。
【０１２９】
ここで、自分の所に戻ってきた時点で実行する処理情報に続く他のエージェントの実行する処理情報についても、他のエージェントに隠す構成を採って、自分の所に戻ってきた時点で復元するという構成を採ってもよい。
【０１３０】
サービスリストの復元は、具体的には、次のような仕組みにより実現される。すなわち、エージェントは、メッセージを送り出す前に、自分の所に戻ってきた時点で実行する処理情報を自エージェント内のサービスリストの保存プールに保存するとともに、送り出すサービスリストに対して、その保存した処理情報の代わりに、その保存した処理情報を参照するためのパラメータを付加する。そして、メッセージを受け取るときに、サービスリストに参照パラメータが記録されていて、それが自分の保存する処理情報の参照パラメータであることを判断するときには、その保存する処理情報をサービスリストに復元することで行う。
【０１３１】
この図２１及び図２２の処理フローに従うと、他のエージェントに自処理の内容を隠すことができ、他のエージェントに自処理を代行されてしまうことを防げ、メッセージの大きさを小さくできるという利点の他に、別のシステム空間（別の知識空間）に入り込むときに、その入り込む際に用いられるエージェントを経由して元のシステム空間に戻ることを保証するというような機能が実現可能になる。
【０１３２】
図２２に、データベースエージェント２００／第１の翻訳エージェント６００／第２の翻訳エージェント７００／統合エージェント８００の実行する処理フローの他の一例を図示する。
【０１３３】
この処理フローと図１０の処理フローとの違いは、図１０の処理フローでは、先頭のサービスリスト単位の処理を実行した後、そのサービスリスト単位を削除するだけの構成を採ったが、この処理フローでは、処理の実行結果に応じて、残りのサービスリストを修正した方がよいときには、それを修正する構成を採っている点である。
【０１３４】
すなわち、ステップ５で、受信した自分宛のメッセージの持つサービスリストの先頭のサービスリスト単位の指定する処理を実行すると、ステップ６で、その実行結果によりサービスリストを修正した方がよいのか否かを判断して、修正した方がよいことを判断するときには、ステップ８で、サービスリストを修正するのである。
【０１３５】
旅行のエージェント処理を実行するエージェントシステムを具体例にして説明するならば、当初は、どの飛行会社のフライトを利用するというような制約のないサービスリストが作成されているときに、ホテルの予約を行うエージェントが、予約のとれたホテルと契約する特定の飛行会社のフライトに割り引きの優遇措置があることを判断すると、フライトの予約を行うエージェントに送信するサービスリストの配送先のエージェント名を、その割り引きの優遇措置の使える飛行会社に限定するような修正を行うのである。
【０１３６】
この処理フローに従うと、当初作成したサービスリストを適切なものに動的に変更できることで、より実用的なエージェントシステムを構築できるようになる。
【０１３７】
次に、サービスリストの詳細化について説明する。
【０１３８】
本発明では、抽象レベルのサービスリストが作成されると、アドバタイズ情報などにより得られるシステムの持つ知識に従って、これを詳細化することになる。
【０１３９】
このサービスリストの詳細化は、一か所のエージェントで行うことも可能であるが、後続の１つ又は複数のエージェントにその一部の詳細化を委ねる形で実行する方法を採ることもある。サービスをよりよく知った後続のエージェントが、サービスリストを詳細化していくことが効率的であるし、メッセージの処理がある程度進んだ時点で、サービスリストを詳細化していくことが効率的なことがあるからである。
【０１４０】
例えば、ホテル予約とフライト予約とからなる旅行のエージェント処理を実行するときに、図２４に示すように、プラニングエージェントが、「* 旅行の検索」という抽象レベルのサービスリストを受け取ると、この抽象レベルのサービスリストを「Ｃ社ホテル検索／Ｂ社フライト検索」というように詳細化して、それをホテル検索エージェントとフライト検索エージェントに渡していくようにすることで、Ｃ社ホテルの予約とＢ社フライトの予約を実現するという方法を採ってもよい。
【０１４１】
あるいは、図２５に示すように、プラニングエージェントが、「* 旅行の検索」という抽象レベルのサービスリストを受け取ると、この抽象レベルのサービスリストを「* ホテル検索／* フライト検索」というように一部詳細化し、これを受けて、ホテル検索エージェントが、「Ｃ社ホテル検索／* フライト検索」というように一部詳細化してＣ社ホテルを検索し、フライト検索エージェントが、「Ｂ社フライト検索」というように詳細化することでＢ社フライトを検索して、Ｃ社ホテルの予約とＢ社フライトの予約を実現するという方法を採ってもよいのである。
【０１４２】
これらの方法を採るときに、アルゴリズムの異なる複数のプラニングエージェントを使ってプラニングを行い、その結果をマージしてユーザに通知する方法を採ることも可能である。
【０１４３】
サービスリストの詳細化を一度に行わなくてもよいことから、本発明に従うと、１つのシステムから別のシステムに入り込んでそれを利用できるので、知識の分散管理を実現でき、また、分散管理される知識を簡単に利用できるという特徴がある。
【０１４４】
すなわち、他のシステムの持つ知識の全てを知らなくても、その一部の知識を入手できる場合には、そこまでの知識を使ってサービスリストの詳細化を行うことで、そのシステムに入り込み、その後は、そのシステム内でサービスリストの詳細化を行ってもらって、その詳細化されたサービスリストによる処理結果を受け取ることで、そのシステムの持つ知識の全てを知らなくてもそのシステムを利用できるので、知識の分散管理を実現でき、また、分散管理される知識を簡単に利用できるという特徴がある。
【０１４５】
例えば、図２６に示すように、組織Ａのデータベースと組織Ｂのデータベースとがある場合に、組織Ｂの仲介エージェントが、組織Ａの持つ仲介エージェントの知識以外に組織Ａの持つデータベースに関する知識を持たなくても、組織Ａの仲介エージェントに対してサービスリストの詳細化を依頼して、その詳細化されたサービスリストによる処理結果を受け取ることで、組織Ａの持つデータベースにアクセスできるのである。
【０１４６】
この図２６について詳細に説明するならば、組織Ｂのユーザエージェントが、組織Ｂの仲介エージェントに検索要求のメッセージを送る。この時点では、サービスが検索要求であることを指定し、どのエージェントに検索要求を配送するかは未定義である。
【０１４７】
組織Ｂの仲介エージェントは、サービスと知識に基づいて、検索要求のある自組織のデータベースのエージェントを選び出す。このとき、組織Ａの仲介エージェントも選び出す。続いて、各サービスを詳細化する。自組織のデータベースのエージェントについては、「検索→統合→ユーザ」といったような詳細化を行い、組織Ａの仲介エージェントについては、「* 検索」という抽象レベルの詳細化を行う。この後、詳細化したサービスリストを持つメッセージを他エージェントに送る。このとき、組織Ａの仲介エージェントに送るメッセージについては、組織Ａの知識空間に合った形式に変換して送る。
【０１４８】
組織Ａの仲介エージェントは、組織Ｂの仲介エージェントからのメッセージを受け取ると、サービスと知識に基づいて、検索要求のある自組織のデータベースのエージェントを選び出して、「検索→変換→統合→ユーザ」といったような詳細化を行ってから、メッセージを他エージェントに送る。
【０１４９】
この詳細化されたサービスリストにより組織Ａのデータベースが検索され、その検索結果が組織Ａの変換エージェントを介して組織Ｂの統合エージェントに戻されて、組織Ｂのユーザエージェントを操作するユーザは、組織Ａのデータベースについても検索対象とすることができるようになる。
【０１５０】
最後に、本発明の扱う知識分散について説明する。
【０１５１】
仲介エージェントによる仲介環境は、異種のアプリケーションを結び付けるための強力なアプローチである。この仲介環境をまとめると次のようになる。
【０１５２】
各アプリケーションに対応したエージェントを作成し、それらの扱う知識をモデル化する。すなわち、何をしているのかという定義を宣言的に与え、扱うデータや知識の形式について一定の記述を用意する。
【０１５３】
そして、作成したモデルに従ってアクセスされるように、各エージェントは、自分が何をするものか、どのような形式に従ってやり取りを受け付けることができるのかということを仲介エージェントに通知する。
【０１５４】
この通知される知識に基づいて、仲介エージェントは、相手に応じたやり取りの変換や、メッセージを伝える相手のエージェントの選択を行う。それとともに、仲介エージェントは、個々のエージェントの処理に基づいて、より大きな処理の流れを組み立てる。例えば、メッセージを変換してから適切なエージェントに送り、返ってくるメッセージを変換して質問元のエージェントに回答するといったような処理の流れを生成するのである。この組み立ては、推論で行ったり、予め与えられる情報を使って行うことになる。
【０１５５】
この仲介環境で、他のエージェントと通信できるということは、少なくとも、そのエージェントの出してくる入出力の形式や、そのエージェントで使っている言葉などを知識として知っておく必要がある。
【０１５６】
このような仲介環境でモデルを構築していく場合、いずれ同じようなモデル空間（知識空間）があちらこちらにできることが起こる。そうすると、モデル空間同士を結び付ける必要がでてくる。その場合、全体を再設計するのは不可能である。また、それぞれのモデル空間は別々の管理下にあり、結び付けた後も、それぞれ勝手に変更される可能性がある。
【０１５７】
これから、モデル空間を結び付けるときに、それぞれが持つ知識空間を分散して管理できることが機能として必要になってくる。このモデル空間の結び付きも様々である。階層化された結び付き方もあるし、特定の詳細化されたモデル空間にぶら下がって見えるような結び付き方もある。
【０１５８】
このような分散されたモデル空間を結び付ける要求に対して、本発明は極めて有効な手段を提供している。
【０１５９】
すなわち、本発明で用いるサービスリストは、その詳細化を後続のエージェントに委ねることが可能である。これから、別のモデル空間の全てを知る必要がなく、そのモデル空間への窓口となるエージェント（図２６に示す組織Ａの仲介エージェントのようなエージェント）についての知識さえあれば、そのエージェントにサービスリストを持つメッセージを送ることができ、その後は、そのモデル空間の知識に従ってサービスリストを詳細化してもらうことで、そのモデル空間に入り込むことが可能になるからである。
【０１６０】
このように、本発明は、分散されたモデル空間を分散環境を壊さずに結び付けることを可能にするので、ネットワークを介して接続されるソフトウェアを連携させるあらゆるシステムに対して、その適用が可能になる。
【０１６１】
図示実施例に従って、本発明を説明したが、本発明はこれに限定されるものではない。例えば、本発明は、狭義のエージェントにその適用が限られるものではなくて、分散された環境の下でメッセージのやり取り行う全てのソフトウェアに対してそのまま適用できるのである。
【図面の簡単な説明】
【０１６２】
【図１】本発明の原理構成図である。
【図２】本発明の説明図である。
【図３】本発明の適用されるシステムの説明図である。
【図４】サービスリストの説明図である。
【図５】メッセージの説明図である。
【図６】用語変換の説明図である。
【図７】ユーザエージェントの実行する処理フローである。
【図８】仲介エージェントの実行する処理フローである。
【図９】仲介エージェントの実行する処理フローである。
【図１０】エージェントの実行する処理フローである。
【図１１】統合エージェントの実行する処理フローである。
【図１２】統合エージェントの実行する処理フローである。
【図１３】メッセージの一例である。
【図１４】メッセージの一例である。
【図１５】実施例の処理説明図である。
【図１６】メッセージの一例である。
【図１７】メッセージの一例である。
【図１８】メッセージの一例である。
【図１９】エージェントの実行する処理フローである。
【図２０】メッセージの一例である。
【図２１】エージェントの実行する処理フローである。
【図２２】エージェントの実行する処理フローである。
【図２３】エージェントの実行する処理フローである。
【図２４】サービスリストの詳細化の説明図である。
【図２５】サービスリストの詳細化の説明図である。
【図２６】知識の分散管理の説明図である。
【図２７】仮想カタログシステムの説明図である。
【図２８】仲介エージェントの機能を分散したシステムの説明図である。
【符号の説明】
【０１６３】
１ａ  第１のエージェント装置
１ｂ  第２のエージェント装置
１ｃ  第３のエージェント装置
１０  生成手段
１１  送信手段
２０  受信手段
２１  抽出手段
２２  詳細化手段
２３  送信手段
３０  受信手段
３１  抽出手段
３２  実行手段
３３  削除手段
３４  送信手段
３５  保存手段
３６  修正手段
３７  判断手段
３８  除外手段
３９  復帰手段
４０  収集手段
【図１】
2006318462.tif 000003
【図２】
2006318462.tif 000004
【図３】
2006318462.tif 000005
【図４】
2006318462.tif 000006
【図５】
2006318462.tif 000007
【図６】
2006318462.tif 000008
【図７】
2006318462.tif 000009
【図８】
2006318462.tif 000010
【図９】
2006318462.tif 000011
【図１０】
2006318462.tif 000012
【図１１】
2006318462.tif 000013
【図１２】
2006318462.tif 000014
【図１３】
2006318462.tif 000015
【図１４】
2006318462.tif 000016
【図１５】
2006318462.tif 000017
【図１６】
2006318462.tif 000018
【図１７】
2006318462.tif 000019
【図１８】
2006318462.tif 000020
【図１９】
2006318462.tif 000021
【図２０】
2006318462.tif 000022
【図２１】
2006318462.tif 000023
【図２２】
2006318462.tif 000024
【図２３】
2006318462.tif 000025
【図２４】
2006318462.tif 000026
【図２５】
2006318462.tif 000027
【図２６】
2006318462.tif 000028
【図２７】
2006318462.tif 000029
【図２８】
2006318462.tif 000030