(57)【要約】  協働エンジンは推論ロジックを用い、ある結果に対する要求を電子的に処理する。その要求の解決には不十分な目標が得られた場合、部分的な結果が１以上の未解決の目標の関数として生成される。セキュリティの制限によって情報の完全な交換が阻まれている複数のドメイン又はシステムからの情報や、それらへの情報を処理するために、ある結果に対する要求を２以上の協働エンジンで、作業空間の連鎖を利用して処理しても良い。一つの協働エンジンの作業空間への入力は可能な限り解かれ、その処理に基づいて部分的な結果が生成され、更なる処理のために別の協働エンジンの作業空間に送信される。本発明は、通信ネットワークのユーザ間でのデータ通信若しくは電話通信の経路決定、電子データネットワークの構成要素に対する管理動作の処理、又は、商取引に利用できる。【表1】
2008517387.tif 000002
【特許請求の範囲】
【請求項１】
推論ロジックを利用する協働エンジンで、ある結果に対する要求を電子的に処理する方法であり、部分的な結果を１以上の解くことのできない目標の関数として生成するステップを含む方法。
【請求項２】
前記要求を解くのには不十分な目標を与える、請求項１に記載の方法。
【請求項３】
前記部分的な結果が、要求された結果を部分的には解くことができる目標を少なくとも一つ含む、請求項１又は請求項２に記載の方法。
【請求項４】
検索可能な目標を少なくとも一つ検索するステップを含む、請求項１から請求項３までのいずれか一項に記載の方法。
【請求項５】
前記方法が、解くことのできない目標を識別するステップを更に含み、
その目標が前記要求を部分的には解くことができ、
前記部分的な結果が、前記解くことのできない目標として識別されたものの関数として生成される、
請求項１から請求項４までのいずれか一項に記載の方法。
【請求項６】
１以上の解くことのできない目標の関数として部分的な結果を生成するステップが、
解くことのできない目標と、前記解くことのできない目標を参照する目標との集合を生成するステップ、及び、
前記集合を前記部分的な結果に入れるステップ、
を含む、請求項１から請求項５までに記載の方法。
【請求項７】
１以上の解くことのできない目標の関数として部分的な結果を生成するステップが、
解くことのできない目標の集合の一部を生成し、前記集合の一部に既に含まれている目標のいずれかによって参照されている目標を前記集合の一部に入れるステップ、及び、
前記集合の一部を前記部分的な結果に入れるステップ、
を含む、請求項１から請求項５までに記載の方法。
【請求項８】
前記部分的な結果を生成するステップが更に、前記部分的な結果の中で目標を少なくとも一つマスクするステップを含む、上記の請求項のいずれかに記載の方法。
【請求項９】
前記目標をマスクするステップが、
(i)前記目標、若しくは前記目標を参照する１以上の目標を修正するステップ、又は、
(ii)前記目標、若しくは前記目標の中の値を、生成された目標若しくは値で置き換えるステップ、
のいずれか、若しくは両方を含み、
前記生成された目標若しくは値が、前記目標をマスクするステップ、又は同じセキュリティドメインでの他の処理を行う協働エンジンにのみ知らされる、
請求項８に記載の方法。
【請求項１０】
前記協働エンジンが送信側の協働エンジンを有し、
前記方法が、
(i)ある結果に対する別の要求に前記部分的な結果を添付し、前記別の要求を、少なくとも一つの別の協働エンジン、又はロジックの実行部に送信するステップ、又は、
(ii)前記部分的な結果を記憶するステップ、
のいずれかを含む、上記の請求項のいずれかに記載の方法。
【請求項１１】
前記別の要求を送信するステップより前に、１以上の検索可能な目標から認証トークンを動的に生成し、前記認証トークンを前記別の要求に添付するステップ、を含む、請求項１０に記載の方法。
【請求項１２】
前記動的に生成された認証トークンが、それ以前に前記少なくとも一つの別の協働エンジンへ送信された認証トークンとは異なる、請求項１１に記載の方法。
【請求項１３】
推論ロジックを利用する協働エンジンで、ある結果に対する要求を電子的に処理する方法であり、
前記協働エンジンが受信側の協働エンジンを有し、
前記要求を部分的には解くことができ、かつ、検索可能ではない目標、を少なくとも一つ前記要求が含み、
前記方法が、検索可能な目標と、前記要求に含まれる目標との関数として前記要求を処理するステップを含む、
方法。
【請求項１４】
前記要求が、動的に生成された認証トークンを含み、
前記方法が、前記認証トークンを確認するステップ、及び、前記確認に成功すれば処理を進め、前記確認に失敗すれば前記処理を終了させるステップ、を有する、
請求項１３に記載の方法。
【請求項１５】
前記協働エンジンが、送受信を行う協働エンジンを含み、
前記方法が
(i)前記要求が、その要求する結果を部分的には解くことのできる目標を少なくとも一つ含む場合、検索可能な目標と、前記要求に含まれる少なくとも一つの目標との関数として前記要求を処理するステップ、及び、
(ii)それ以外の場合に、検索可能な目標の関数として前記要求を処理するステップ、
を含む、請求項１から請求項１４までのいずれかに記載の方法。
【請求項１６】
(i)前記要求を２以上の協働エンジンで処理し、
(ii)検索可能な目標の中にも、該当する場合では、前記要求に含まれる目標の中にも、要求された結果を解くには不十分な目標しか与えられていなければ、部分的な結果を生成し、
(iii)前記部分的な結果が生成された場合、前記部分的な結果を含む、ある結果に対する別の要求を少なくとも一つの別の協働エンジンに送る、
上記の請求項のいずれかに記載の方法。
【請求項１７】
前記推論ロジックが規則に基づくロジックを含む、上記の請求項のいずれかに記載の方法。
【請求項１８】
前記要求が、通信ネットワークのユーザからの、又は前記ユーザへの電子通信用の経路要求である、上記の請求項のいずれかに記載の方法。
【請求項１９】
前記ユーザに対する電子通信の処理に関する事実又は規則である検索可能な目標を少なくとも一つ検索するステップを含む、請求項１８に記載の方法。
【請求項２０】
前記要求が、電話による接続用の経路要求である、請求項１８に記載の方法。
【請求項２１】
前記ユーザとの電話による接続用の経路の決定に関する事実又は規則である検索可能な目標を少なくとも一つ検索するステップを含む、請求項２０に記載の方法。
【請求項２２】
前記要求が、ネットワークのユーザからの、又は前記ユーザへの通信メッセージ用の経路要求である、請求項１８に記載の方法。
【請求項２３】
前記ユーザに対する通信メッセージ用の経路の決定に関する事実又は規則である検索可能な目標を少なくとも一つ検索するステップを含む、請求項２２に記載の方法。
【請求項２４】
前記要求が、電子データネットワークのコンポーネントを管理する動作に対する要求である、請求項１から請求項１７までのいずれか一項に記載の方法。
【請求項２５】
前記コンポーネントの管理に関する事実又は規則である検索可能な目標を少なくとも一つ検索するステップを含む、請求項２４に記載の方法。
【請求項２６】
前記要求が商取引の要求である、請求項１から請求項１７までのいずれか一項に記載の方法。
【請求項２７】
前記商取引の処理に関する事実又は規則である検索可能な目標を少なくとも一つ検索するステップを含む、請求項２６に記載の方法。
【請求項２８】
前記要求が、オフィスオートメーション、ワークフロー、カレンダー、又は書類管理の処理に対する実行要求である、請求項１から請求項１７までのいずれか一項に記載の方法。
【請求項２９】
オフィスオートメーション、ワークフロー、カレンダー、又は書類管理の処理に関する事実又は規則である検索可能な目標を少なくとも一つ検索するステップを含む、請求項２８に記載の方法。
【請求項３０】
推論ロジックを利用し、ある結果に対する要求を電子的に処理する協働エンジンであり、部分的な結果を１以上の解くことのできない目標の関数として生成する手段を含む協働エンジン。
【請求項３１】
前記要求に含まれる部分的な結果を処理する手段を含む、請求項３０に記載の協働エンジン。
【請求項３２】
前記要求を解くのには不十分な目標しか利用可能でなければ、部分的な結果を生成するようになっている、請求項３０又は請求項３１のいずれかに記載の協働エンジン。
【請求項３３】
推論ロジックを利用し、ある結果に対する要求を電子的に処理する協働エンジンであり、前記要求に含まれる部分的な結果を処理する手段を含む協働エンジン。
【請求項３４】
少なくとも一つの通信ネットワークに接続され、前記通信ネットワークのユーザからの、又は前記ユーザへの電子通信用の経路要求を処理するようになっている、請求項３０から請求項３３までのいずれか一項に記載の協働エンジン。
【請求項３５】
前記ユーザに対する電子通信の処理に関する事実又は規則である検索可能な目標を少なくとも一つ検索するようになっている、請求項３４に記載の協働エンジン。
【請求項３６】
少なくとも一つの電子データネットワークに接続され、前記電子データネットワークの少なくとも一つのコンポーネントに関する管理動作の決定要求を処理するようになっている、請求項３０から請求項３３までのいずれか一項に記載の協働エンジン。
【請求項３７】
前記電子データネットワークのコンポーネントの管理に関する事実又は規則である検索可能な目標を少なくとも一つ検索するようになっている、請求項３６に記載の協働エンジン。
【請求項３８】
少なくとも一つの電子データネットワークに接続され、前記電子データネットワークに接続されたユーザとの商取引の決定要求を処理するようになっている、請求項３０から請求項３３までのいずれか一項に記載の協働エンジン。
【請求項３９】
前記ユーザとの商取引の処理に関する事実又は規則である検索可能な目標を少なくとも一つ検索するようになっている、請求項３８に記載の協働エンジン。
【請求項４０】
少なくとも一つの電子データネットワークに接続され、前記電子データネットワークに接続されたユーザについて、オフィスオートメーション、ワークフロー、カレンダー、又は書類管理の処理に対する実行要求を処理するようになっている、請求項３０から請求項３３までのいずれか一項に記載の協働エンジン。
【請求項４１】
前記ユーザについて、オフィスオートメーション、ワークフロー、カレンダー、又は書類管理の処理に関する事実又は規則である検索可能な目標を少なくとも一つ検索するようになっている、請求項４０に記載の協働エンジン。
【請求項４２】
前記推論ロジックが規則に基づくロジックを利用する、請求項３０から請求項４１までのいずれか一項に記載の協働エンジン。
【請求項４３】
推論ロジックを利用する協働エンジンで、ある結果に対する要求を電子的に処理する方法であり、１以上の検索可能な目標の関数として部分的な結果を処理するステップを含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、推論ロジックを用いてある結果に対する要求を電子的に処理する方法又は装置に関する。本発明は特に、コンピュータによる推論ロジックを利用し、複数のグループからの入力を共同で処理する方法又は装置に向けられている。ここで、各グループのプライベートな入力は他のグループには開示されない。
【背景技術】
【０００２】
この明細書の最後には、以下で使用される語句の用語集を設けている。その用語集に含まれる例示と説明とは明確化又は説明を目的とするものであり、限定を意図するものではない。
【０００３】
ビジネスでは、処理の自動化に推論ロジックを利用する場合が増えている。推論規則の宣言的な性質がビジネスルールを容易に定義可能にするからであり、ビジネス上の要求の変化に合わせて推論規則が即座に変更可能だからである。単純化すれば、推論は、ある作業空間の中で推論規則を適用することにより、既知の事実から新たな事実を得る処理である。この文脈では、「事実」はある要素の既知の値を表し（例えば「顧客＝会社Ａ」。ここで、「会社Ａ」は単なる値でも、ある複雑な構造体の現在の状態でもあり得る。）、「規則」は事実間の関係を表し、典型的には「ＡならばＢである」という形式を取る（例えば「顧客＝会社Ａならば、割引＝10％」）。
【０００４】
より一般的には、推論ロジックは推論目標を解くことによって結果を得る。その推論目標は典型的には事実と規則であるが、他の構造（例えば制約条件）をある作業空間の中に含んでいても良い。「作業空間」は、与えられた計算によって推論目標が解かれるメモリ領域である。推論ロジックは次に解くべき目標を、初期入力と既に解かれた目標との関数として決める。ある結果に必要な目標が全て解かれたとき、推論はその結果を与える。これは、必要な目標が一つでも解けなければ結果が得られないことを意味する。推論ロジックは、典型的にはデータを１以上記憶する知識ベースから目標を検索する。しかし、その他の実装も可能である。推論ロジックは、推論エンジンと呼ばれる専用のロジックとして実装されても良く、アプリケーションプログラム等の大規模なロジックの一部として含まれても良い。非特許文献１には、推論ロジックの概論、及び知識ベースシステム（と他のインテリジェントなシステム）の実用的な応用が与えられている。
【０００５】
複数のグループが協調的な情報交換や共同事業にインターネット等の通信ネットワークを利用する場合が増えている。そのような協働処理の自動化では協調計算がよく呼び出される。その計算タスクは複数のグループの入力に基づいている。
従来の命令型プログラミングは、自動化された協働処理の実装に利用可能である。命令型プログラミングは計算を、プログラムの状態とそのプログラムの状態を変化させる命令とで記述する。命令型プログラム（例えば、ＣＯＢＯＬ、Ｃ、Ｃ＋＋、Ｊａｖａ（登録商標）等の言語で書かれたプログラム）は、コンピュータによって実行されるコマンドの列である。記述方法は、良く知られているものと同様である。各ステップは命令であり、状態は物理的世界に保持される。命令型プログラミングでは、計算を制御するロジックが個々のシステムの規則に埋め込まれる。
【０００６】
プログラムのロジックがビジネスルールの大部分又は全てを含むので、そのようなシステムには大きな障害が生じる。処理の発生の仕方に変更が必要なほどビジネスルールが変更される度に、プログラムのロジックが再評価され、変更され、再テストされなければならないことになる。あるシステムを新たなビジネスルールに合うように変更するには、そのシステムの規則及びその変更の難しさに応じて数ヶ月又は数年を要するので、あるシステムをビジネスルールに則って維持するには将来の見通しが必要である。
【０００７】
命令型プログラミングは状態に基づくので、入出力が、普通はパラメータとして表現された値（すなわち、一対の値）である。命令型プログラミングを利用する特注の自動化協働処理ソリューションを実装するには、システム間でパラメータが通信されなければならない。そのパラメータは、異なるシステムで同じ意味を持つように定義されなければならず、システム間で転送され、かつ、システム間でマップされなければならない。
【０００８】
そのようなシステムは「強結合」であり、各システムが、それに接続された他のシステムの動作の仕方を高精度に予測する。その結果、協働処理の自動化を望む複数のグループが典型的には、それらのシステムの設計、購入、及び実装を共同で行い、互換性を保たなければならないことになる。一つのグループが他の多くのグループとの協働を望むとき、そのグループは、多くの異なるシステムを設定し、購入し、かつインストールするか、又は、単一の標準的なシステムについて、他のグループから同意を取り付けなければならない。そのような強結合システムはまた、変化にかなり敏感である。一つのグループがそのシステムをアップグレードすれば、そのアップグレードされたシステムはしばしば、他のシステムの幾つか又は全部との互換性を失う。多くのグループで同時にアップグレードを行うのは極めて難しく、又は不可能である。実用的な意味では、これらのソリューションは少数の協働グループに対してのみ実行可能であり、より大きな組織では、通常は、二、三の、長期にわたるパートナーへの接続にのみ利用される。
【０００９】
通信処理を簡素化する一つの方法は、標準化されたフォーマットを取引、例えば電子データ交換（ＥＤＩ）の記述に使用することである。ＥＤＩは、取引者間での企業間取引用の通信方式を提供する。その標準は、発注書、船積み書類、及び請求書等のビジネス書類と帳票との交換に使用されるフォーマット、文字の集合、及びデータ要素を定める。その標準は、個々の書類にどの情報が義務づけられ、どの情報が選択可能であるのかを提示し、かつ、その書類の構成に規則を与える。取引者同士は更に、送信されるべき特定の情報、及びそれらの使用方法について同意しなければならない。従って、それらの取引者間には手続上及び技術上の詳細な同意が必要である。典型的なＥＤＩの導入では、単に二つの企業間で利用される取引であっても、その定義の設計、同意、及び実装に合わせて６〜１８ヶ月が必要である。ＥＤＩは取引者間での標準化・自動化された通信には役立つが、取引の定義には融通があまり利かず、コンピュータによる交渉がサポートされていない。
【００１０】
自動化された協働処理の実装については、推論ロジックは明らかに、命令型プログラミングに取って代わるものである。プログラムのロジックにビジネスルールが埋め込まれていない点で、推論ロジックの使用は有利である。命令型プログラミングで実装されたシステムより、新たなビジネスルールをかなり容易に、素早く、かつ確実に組み込むことができる。
【００１１】
更に、推論の規則は本質的にかなり柔軟である。それ故、推論はビジネス上の取引を記述するのにかなり適している。取引の記述に利用される基本的な事項については尚も同意が必要ではある。しかし、各グループがこれらの同意事項に関与する方法の定義に規則を利用可能である。その上、規則が、命令型プログラミングでのような単なる値ではなく、関係を表しているので、規則が交渉事項を表すことができ、コンピュータによる交渉が可能である。
【００１２】
推論ロジックを用いた協働処理は幾つか、提案されている。例えば、電子商取引という状況では電子マーケット（オークション）が、推論を用いた自動化の一つの応用である。例えば非特許文献２では、推論エンジンを用いたビジネス上の契約の交渉と自動化、及び、ビジネスルールの集合としての契約の表現に対するアプローチが概説されている。しかし、公知の推論処理技術では、必要な目標が欠けていれば結果が解けないので、これらの提案では協働処理が一つの作業空間（それは事実上、一つの推論エンジンを意味する。）で行われなければならない。それ故、公知の推論ロジックを用いて協働処理を行うには、一つのグループが、協働するグループの全てから入力を検索し、又はそれらのグループの全てへ入力を送られねばならない。もし、全ての入力の十分な開示を当てにできるグループが一つもなければ、又は、プライベートな入力の開示に対して合法的な障害があれば、協働処理は完結され得ず、これらの提案は実用的ではない。
【００１３】
暗号理論は、処理対象のプライベートな入力の値を開示することなくそれらを共有する安全な分散型プロトコルを提案する。これらのプロトコルは、信頼できる模範的な第三者に検証可能な秘密を共有させることに依拠する。暗号化された秘密を表すのには比較的大量のデータが必要であり、かつ、通信ラウンドは最低２回が想定されるので、通常は、セキュアプロトコルに関する大幅なネットワークオーバヘッドがある。その上、暗号化の複雑な計算が計算上のオーバヘッドを高くする。
【００１４】
商用アプリケーションに機能を追加する場合、一般的な経験則として、新たな機能に対するオーバヘッドが50％を超えることは、その実装の可能性を疑うべきことを示す。更に、オーバヘッドが100％であることは、その実装を容認できないことを意味する。セキュアプロトコルは計算上のオーバヘッドを極めて大量に増やす。典型的には６桁（100,000,000％）より多い。例えば非特許文献３では、二つの数の比較のための効率的なプロトコルが提示され、ペンティアムIII（登録商標）450MHzのコンピュータを用いて二つの20ビットの数を比較した場合、計算上のオーバヘッドが290ミリ秒であることが報告されている。セキュアプロトコルを使わなければ、二つの（32ビットの）数の比較が100ＣＰＵサイクルで可能であるので、上記の報告された値との比は約3.5／秒対4,500,000／秒であり、オーバヘッドの比では100万対1より高い。
【００１５】
多くのビジネスアプリケーションでは、複数のグループ間での計算が複数、短時間のフレームで、より極端な場合ではほぼリアルタイムで、実行されることが要求される。それ故、それらのビジネスアプリケーションにとってセキュアプロトコルは実用的ではない。地理的に分散されたホスト間で処理を実行しようとするときは問題は更に悪化する。セキュアプロトコルは典型的には、信頼できる第三者による計算の実行に等しい「理想的な」レベルのセキュリティを与えようとする。現実には、理想的なセキュリティでは実用上の効率が不十分であれば、許容可能なレベルのセキュリティを与えるソリューションが選択されれば良い。セキュリティをある程度犠牲にすること、すなわち、プライベートなデータについては情報の開示をある程度制限することは、実用上はしばしば許容可能である。
【非特許文献１】Adrian A. Hopgood, Intelligent Systems for Engineers and Scientists, CRC Press, 2000, 2nd Edn.
【非特許文献２】Benjamin N. Grosof, Daniel Reeves and Michael P. Wellman, Automated Negotiation and Declarative Contract Descriptions, Proceedings of the Fifth International Conference on Automated Agents, 2001
【非特許文献３】Ioannis Ioannidis and Ananth Grama, An Efficient Protocol for Yao's Millionaires' Problem, Proceedings of the 36th Hawaii International Conference on System Sciences, 2003
【発明の開示】
【発明が解決しようとする課題】
【００１６】
本発明の目的は、推論ロジックを用いて複数のグループの入力を共同で処理するための実用的な方法及びシステムであり、一つのグループが全ての入力を知らなくても良く、かつ各グループのプライベートな入力が他のグループには開示されない方法及びシステム、を提供することにある。
【課題を解決するための手段】
【００１７】
一つの広い形式では、本発明は、推論ロジックを利用する協働エンジンで、ある結果に対する要求を電子的に処理する方法を提供する。その方法は、部分的な結果を１以上の解くことのできない目標の関数として生成するステップを含む。
典型的には、要求を解くのには不十分な目標が与えられ、部分的な結果が生成される。
その部分的な結果は通常、要求された結果を部分的には解くことができる目標を少なくとも一つ含む。
【００１８】
上記の方法は、解くことのできない目標を識別するステップを含んでも良い。その目標は、結果に対する要求を部分的には解くことができるものである。その部分的な結果は、解くことのできない目標として識別されたものの関数として生成される。
【００１９】
上記の方法は、検索可能な目標を少なくとも一つ検索するステップを含んでも良い。検索可能な目標はそれぞれ、協働エンジンがある目標を要求することによって検索可能な目標である。各目標は、結果に対する要求を推論によって解くのに利用可能な、事実、規則、又は他の構成要素を含んでも良い。その要求は目標の関数として処理される。十分な目標が与えられれば、その要求された結果が与えられる。
【００２０】
典型的には、推論は規則に基づくロジックを含む。
この明細書では、「推論エンジン」という語句が、ある処理、又は、ある処理を実行する装置を意味する。その装置は、データベース又は他の知識ベースから所望の情報を得ようとするものである。典型的には、その装置は演算装置又は演算システムであり、その処理はソフトウェアで動作する。「協働エンジン」は、複数のドメイン若しくはシステムからの情報、又はそれらへの情報の処理に対応した推論エンジンである。それらの複数のドメイン又はシステムには、典型的には、相互の完全な情報のフローを妨げるセキュリティ上の制約が課せられている。
【００２１】
１以上の解くことのできない目標の関数として部分的な結果を生成するステップでは、解くことのできない目標とその目標を参照する目標との集合が生成され、その集合が部分的な結果に入れられても良い。解くことのできない目標の集合の一部が生成されて部分的な結果に入れられても良い。
【００２２】
部分的な結果を生成するステップでは更に、部分的な結果の中で目標が少なくとも一つマスクされても良い。これは、その目標、若しくはその目標を参照する１以上の目標を修正すること、又は、その目標、若しくはその目標の中の値を、生成された目標若しくは値で置き換えること、のいずれか、若しくは両方を含んでも良い。その生成された目標若しくは値は、それをマスクする協働エンジンにのみ知らされる。その協働エンジンは、同じセキュリティドメインの他の処理を行うものでも良い。
その協働エンジンは、送信側の協働エンジン、受信側の協働エンジン、又は送受信を行う協働エンジンであっても良い。
【００２３】
送信側の協働エンジンである場合、上記の方法が更に次のステップのいずれかを含んでも良い。(i)ある結果に対する別の要求に部分的な結果を添付し、その別の要求を、少なくとも一つの別の協働エンジン、又はロジックの実行部に送信するステップ、(ii)その部分的な結果を記憶するステップ。上記の別の要求を送信する前に、１以上の検索可能な目標から認証トークンが動的に生成され、その別の要求に添付されても良い。その動的に生成された認証トークンは、以前に上記の別の協働エンジンへ送信されたものとは異なっているはずである。
【００２４】
受信側の協働エンジンである場合、もし、結果に対する要求が、その要求された結果を部分的には解くことのできる目標を少なくとも一つ含み、かつ、その目標が検索可能な目標ではなければ、検索可能な目標と、その要求に含まれる少なくとも一つの目標との関数としてその要求が処理される。その要求は、認証用に動的に生成された認証トークンを含んでも良い。その認証トークンが確認されれば、その要求の処理が進められる。その認証に失敗すれば、その処理は終了する。
【００２５】
送受信を行う協働エンジンである場合、もし、結果に対する要求が、その要求された結果を部分的には解くことのできる目標を少なくとも一つ含めば、検索可能な目標と、その要求に含まれる少なくとも一つの目標との関数としてその要求が処理される。そうでなければ、検索可能な目標の関数としてその要求は処理される。
【００２６】
本発明の一つの実施形態では、結果に対する要求が２以上の協働エンジンで処理される。検索可能な目標の中にも、該当する場合は、その要求に含まれる目標の中にも、一つの協働エンジンでその要求された結果を解くには不十分な目標しか与えられていなければ、部分的な結果が生成される。この部分的な結果は別の要求に添付され、少なくとも一つの別の協働エンジンに送られる。
こうして、本発明は、複数グループによる、推論ロジックを用いた汎用的な計算処理を可能にする。「作業空間の連鎖」を利用することにより、一つの協働エンジンの作業空間で有効な入力が可能な限り解かれ、その処理に基づいて部分的な結果が生成され、他の協働エンジンの作業空間での別の処理に送られる。この連鎖に参加可能な処理空間の数には理論上限界はない。更に、協働エンジンは、処理を始めた協働エンジンから受け取った部分的な結果に応じ、新たな部分的な結果を生成して送ることができる。このように、交渉の効率的な拡大がサポートされる。
【００２７】
部分的な結果には、典型的には、特定の計算に含まれる目標の集合の一部しか含まれず、しかも、その特定の計算に含まれる目標の集合は、典型的には、その計算で解くことができる目標の集合よりかなり小さい。従って、エンジン間で送信されるデータの各サイズは小さく維持される。更に、二つの協働エンジンの間で要求される送信は、それらの間で値がマスクされるときでさえも、往々にして一回だけである。これは、先行技術に対する大幅な改善である。公知の推論技術は、計算で得られた目標を全て送信するか、又は、各目標を別々に送信しなければならない。セキュアプロトコルでは、付加的なデータが暗号化されて送信されねばならず、送信が二回以上行われねばならない。
【００２８】
部分的な結果を得るときの計算上のオーバヘッドは、最終的な結果の計算に比べれば小さい。これは、解くことのできない目標をリストに加えてそのリストを伝送するときのオーバヘッドが、それらの目標を識別し、検索し、かつ解くときのオーバヘッドより低いからである。同様に、部分的な結果のマスクに伴う処理は、極めて自明な推論計算の完結に利用される処理より負荷が軽い。従って、部分的な結果をマスクするときのオーバヘッドは、典型的には、実際の計算処理より極めて小さい。最悪でも、それと同じオーダーである。これは、マスクするときのオーバヘッドが計算処理より通常、何桁も大きいセキュアプロトコルに対し、大幅な改善である。
【００２９】
本発明の別の効果は、部分的な結果を持続的な記憶装置、例えばディスクやテープに保存でき、その後、別の入力が利用可能であるときに処理できることである。その結果、推論処理を中断して事実の発見を待つことができ、又は、一つの部分的な結果を、続いて要求される２以上の結果の生成に繰り返し再利用できる。
【００３０】
本発明の更に別の効果は、大量のリソースを必要とする計算を複数の協働エンジンで分担できることである。本発明は、部分的な結果を生成してそれらを他の協働エンジンに渡して処理を続けることにより、推論処理の分割に汎用的なメカニズムを与える。容易に理解されるように、そのような分割のトポロジーを任意に複雑化し、更なる処理用に部分的な結果を受け取るいずれの協働デバイスも、その処理の一部を１以上の他の協働デバイスに任せられるようにできる。
【００３１】
幾つかの実施形態では、ある結果に対する要求を、検索可能な目標と、その要求に含まれる少なくとも一つの目標との関数として処理することが、検索可能な目標とその要求に含まれる目標との差別化を含んでも良く、更に、そのような差別化をその処理に利用しても良い。
部分的な結果の生成が、ある結果に対する要求の一部として、又は推論ロジックによる推論を通して規定され、又は禁止されても良い。もし部分的な結果が禁止され、かつ、結果を部分的に解くことができるものとして識別される目標が一つでも解かれなければ、エラーが生成されても良い。
【００３２】
本発明による方法は多くの実用的な応用に役立つ。例えば、結果に対する要求が、以下のいずれかであっても良い。
(i)通信ネットワークのユーザからの、又はユーザへの電子通信用の経路要求（本発明による方法は、そのユーザに対する電子通信の処理に関する事実又は規則である検索可能な目標を少なくとも一つ検索するステップを含んでも良い）；
(ii)電話による接続用の経路要求（本発明による方法は、そのユーザとの電話による接続の経路の決定に関する事実又は規則である検索可能な目標を少なくとも一つ検索するステップを含んでも良い）；
(iii)ネットワークのユーザからの、又はユーザへの通信メッセージ用の経路要求（本発明による方法は、そのユーザに対する通信メッセージ用の経路の決定に関する事実又は規則である検索可能な目標を少なくとも一つ検索するステップを含んでも良い）；
【００３３】
(iv)電子データネットワークのコンポーネントを管理する動作に対する要求（本発明による方法は、そのコンポーネントの管理に関する事実又は規則である検索可能な目標を少なくとも一つ検索するステップを含んでも良い）；
(v)商取引の要求（本発明による方法は、その商取引の処理に関する事実又は規則である検索可能な目標を少なくとも一つ検索するステップを含んでも良い）；又は、
(vi)オフィスオートメーション、ワークフロー、カレンダー、又は書類管理の処理に対する実行要求（本発明による方法は、状況に応じ、オフィスオートメーション、ワークフロー、カレンダー、又は書類管理の処理に関する事実又は規則である検索可能な目標を少なくとも一つ検索するステップを含んでも良い）。
【００３４】
本発明によって提供される、推論ロジックを利用する協働エンジンによって結果に対する要求を電子的に処理する方法は、別の観点では、１以上の検索可能な目標の関数として部分的な結果を処理するステップを含む。
【００３５】
もう一つの広い形式では、本発明は協働エンジンを提供する。その協働エンジンは、推論ロジックを利用し、ある結果に対する要求を電子的に処理する。その協働エンジンは、部分的な結果を１以上の解くことのできない目標の関数として生成する手段を含む。その協働エンジンは、もし要求を解くのには不十分な目標しか利用可能でなければ、部分的な結果を生成するようになっている。
本発明によって提供される、推論ロジックを利用して結果に対する要求を電子的に処理する協働エンジンは、別の観点では、要求に含まれる部分的な結果を処理する手段を含む。
【００３６】
本発明による装置は多くの実用的な応用に役立つ。例えば、
(i)協働エンジンが、少なくとも一つの通信ネットワークに接続され、その通信ネットワークのユーザからの、又はユーザへの電子通信用の経路要求を処理するようになっていても良い（その場合、その協働エンジンが、そのユーザに対する電子通信の処理に関する事実又は規則である検索可能な目標を少なくとも一つ検索しても良い）；
(ii)協働エンジンが、少なくとも一つの電子データネットワークに接続され、そのネットワークの少なくとも一つのコンポーネントに関する管理動作の決定要求を処理するようになっていても良い（その場合、その協働エンジンが、そのネットワークのコンポーネントの管理に関する事実又は規則である検索可能な目標を少なくとも一つ検索しても良い）；
(iii)協働エンジンが、少なくとも一つの電子データネットワークに接続され、そのネットワークに接続されたユーザとの商取引の決定要求を処理するようになっていても良い（その場合、その協働エンジンが、そのユーザとの商取引の処理に関する事実又は規則である検索可能な目標を少なくとも一つ検索しても良い）；又は、
(iv)協働エンジンが、少なくとも一つの電子データネットワークに接続され、そのネットワークに接続されたユーザについて、オフィスオートメーション、ワークフロー、カレンダー、又は書類管理の処理に対する実行要求を処理するようになっていても良い（その場合、その協働エンジンが、状況に応じ、そのユーザについて、オフィスオートメーション、ワークフロー、カレンダー、又は書類管理の処理に関する事実又は規則である検索可能な目標を少なくとも一つ検索しても良い）。
【発明の効果】
【００３７】
本発明は、推論ロジックを用いて処理されるべき計算に対し、単一の推論作業空間に取り込まれるべき入力の全てを要求しなくても、その計算を可能にする。その結果、プライベートな入力、又はロケーションに依存した入力を、他のグループに送ることなく、かつ従来の技術よりネットワークや計算上のオーバヘッドを大幅に抑えたまま、複数のグループでの計算に利用可能にする。各協働エンジンは個別のデバイスに埋め込めるので、既存のインフラに容易に追加できる。更に、各協働エンジンの協働及び管理を、一カ所で協働エンジン別に定義し、制御できる。推論に基づく計算の分散に対する他のモデルもサポートされる。そのモデルの中には、部分的な結果を後に継続して利用するために保存することや、複数の協働デバイスを用いた複雑な計算の並列処理に一般化することも含まれる。
【００３８】
本発明の理解と実施との助けになるように、その実施形態の一例について、添付の図面を参照しながら、以下、説明する。尚、図面では、同様な符号は同様な構成要素を示す。
【発明を実施するための最良の形態】
【００３９】
本発明の理解には先行技術による推論ロジックの理解が役に立つだろう。公知の推論ロジックは、所望の結果の決定に必要な目標を識別して処理することを基本とする。この状況では、目標が、情報のある部分の値で定義されても、１以上の他の目標の解き方で定義されても良い。値を定義する目標は一般には「事実」と呼ばれ、単純な値（例えば「10」）を定義しても、複雑な状態（例えば、顧客記録や対象の状態）を定義しても良い。他の目標の解き方を定義する目標は一般には「規則」と呼ばれ、事実間の関係（例えば「顧客＝客Ａならば値引き＝10％」）；事実に対する制約条件（例えば「10％＜値引き＜15％」）；又は、事実と規則との組み合わせの関係（例えば「顧客＝客Ａならば10％＜値引き＜15％」）；のいずれを定義しても良い。実装される推論ロジックごとに目標の正確な性質が決まる。同様に、実装される推論ロジックごとに、結果に対する要求の性質が変わる。例えば、実装に応じ、結果に対する要求は、１個以上の値の要求、１個以上の新たな値の宣言、又は、それらの、若しくは他の形式との組み合わせを含んでも良い。
【００４０】
推論ロジックは、結果の決定に必要な目標を識別し、更に、既に識別された目標を解くのに必要な別の目標を識別して検索する。一つの目標から次の目標へと移行する過程を連鎖と呼んでも良い。当該技術分野で公知の連鎖には主に、前向き連鎖と後向き連鎖という、二つの形式がある。前向き連鎖では、最初の目標を解くことが１以上の二次的な目標に影響し、それらもまた解くことができる。後向き連鎖では、１以上の二次的な目標の結果が最初の目標を解くのに有効であるので、それら二次的な目標が解けるまで、最初の目標を解くことが延期される。
【００４１】
典型的には、所望の結果が解けるまで、又は、別の目標が一つでも識別されるまで、推論処理は継続される。但し、その処理を、例えば外部からのコマンドにより、それよりも早く終了させることは可能である。もし、別の目標が発見できないという理由で、結果が決まる前に推論処理が停止した場合、結果は何も生成されない。これは、結果の決定には不十分な目標しか得られないことを示し、しばしば、推論ロジックによってエラーとして通知される。
【００４２】
推論処理では、検索不可能であるという理由、又は、解くことができない二次的な目標に依存するという理由で、発見された目標を解くことができないことを、ロジックが識別しても良い。推論ロジックは、そのような解くことのできない目標に印を付ける。それにより、そのロジックがこれらの目標を再び解こうとすることがないようにする。もし解くことのできない目標にそのような印が付けられなければ、推論ロジックはそれらを再び解くとするので、無限ループに陥るかも知れないだろう。公知の推論ロジックは、そのような解くことのできない目標を結果の決定に利用できないので、解くことのできない目標を廃棄する。
【００４３】
従って、公知の推論ロジックは次の二つの特徴を持つ。解くことのできない目標を識別して廃棄する。解くことのできない目標を新たには一つも識別できないときは処理を停止するので、結果を生成しないこともあり得る。
図1a〜1cに、先行技術による推論ロジックの簡単な例を示す。これらの例示は、規則と事実との例の参照用である。規則と事実とは目標と総称する。以下の表1にそれらを挙げる。
【００４４】
【表１】
2008517387.tif 000003
【００４５】
表1に示されているように、規則Ｒ１及びＲ２は形式が同様である（Ｘ及びＹならばＺ）。但し、規則が、推論ロジックにとって理解可能な如何なる形式をも取り得ることは容易に理解されるだろう。
【００４６】
図1aでは、推論作業空間Ｗ１の中で後向き連鎖を用い、結果Ｅを事実Ａ、Ｂ、及びＤから解いている。結果Ｅが要求されれば、規則Ｒ２がその要求を解くことができることをロジックが推測する。更に、規則Ｒ１が事実Ｃを解くことができることをロジックは推測する。それには、規則Ｒ２が必要である。こうして、規則Ｒ１及びＲ２を解くことにより、事実Ｅを解く。
【００４７】
図1bでは、推論作業空間Ｗ１の中で前向き連鎖を用い、結果Ｅを事実Ａ、Ｂ、及びＤから解いている。例えば、事実Ａに新たな値が宣言されれば、ロジックは、事実Ａによって規則Ｒ１が影響されることを推測し、その規則を解く（それには事実Ｂも必要である）。規則Ｒ１を解くと、事実Ｃに新たな値が宣言されるので、ロジックは規則Ｒ２を処理する（それには事実Ｄも必要である）。こうして、規則Ｒ１及びＲ２を解くことにより、事実Ｅを解く。
【００４８】
図1aと図1bとの論理図の間での最も重要な違いは、推論の方向を示す矢印の向きである。後向き連鎖では推論が結果から連鎖し、前向き連鎖では推論が結果に向かって連鎖する。推論ロジックに適用される一般的な方法は、前向きと後向きとのいずれの連鎖にも、それら二つの組み合わせにも、適用可能である。
【００４９】
図1cでは、事実Ｄが解けないので、結果Ｅが解けない。この例では、事実Ｄを生成可能な規則としての目標がなく、かつ、事実Ｄの値を作業空間Ｗ１の中からは検索できないので、事実Ｄを解くことができない。図1aと図1bとに示されているロジックでは、規則Ｒ２と同じ作業空間の中で事実Ｄの値を解くことができなければ、規則Ｒ２を解くことができない。それ故、公知の推論ロジックは、作業空間Ｗ１の中で事実Ｄの値を解くことができる場合しか、結果Ｅを解くことができない。作業空間Ｗ１の中で事実Ｄの値を探して取り込む方法はある。しかし、事実Ｄが他の作業空間にとってのプライベートなデータを表している等の理由で事実Ｄが検索不可能である、という状況には、それらの方法は対応していない。
【００５０】
図1cでは、目標Ｄが「検索不可能」と呼ばれるべきものである一方、目標Ａ、Ｂ、Ｒ１、及びＲ２が「検索可能」と呼ばれるべきものである。この明細書では、検索可能な目標が、要求によって知識ベースから作業空間に取り込むことのできる目標である。推論ロジックがある目標に対する要求を知識ベースに対して送ることができ、かつ、その応答として必要な目標を受け取ることができれば、その目標は検索可能である。
【００５１】
以下、図2a〜2c、及び表1を参照しながら、本発明による推論ロジックの単純な例について説明する。図2a〜2cに示されているように、結果Ｅを、二つに分離された作業空間Ｗ１、Ｗ２の中で解く。それらでは、事実Ａ及びＢが作業空間Ｗ１の外には開示されず、事実Ｄが作業空間Ｗ２の外には開示されない。
【００５２】
図2aでは、作業空間Ｗ１及びＷ２の中で後向き連鎖を用いて結果Ｅを解いている。作業空間Ｗ１の中では事実Ｃを事実Ａ及びＢから解く。しかし、作業空間Ｗ１の中では事実Ｄを解くことはできない。その場合、結果を生成することなく停止するのではなく、事実Ｃを含む作業空間Ｗ１の内容から部分的な結果を生成する。この例では、事実Ｃが既に事実Ａ及びＢをマスクしているので、部分的な結果が修正されることなく、作業空間Ｗ２に渡される。従って、事実Ａ及びＢが開示されない。作業空間Ｗ２では、部分的な結果の中の事実Ｃを規則Ｒ２と事実Ｄと組み合わせて利用し、結果Ｅを解く。
【００５３】
図2bでは、同じシナリオが示されている。但し、両方の作業空間の中で、後向き連鎖に代え、前向き連鎖が利用されている。作業空間Ｗ１の中で事実Ａの新たな値が宣言されれば、規則Ｒ１が解かれ、事実Ｃの新たな値を宣言する。事実Ｃによって規則Ｒ２が影響を受ける。しかし、作業空間Ｗ１では事実Ｄを解くことができないので、規則Ｒ２も解くことができない。この例では、事実Ｃを含む部分的な結果が作業空間Ｗ２に渡される。その部分的な結果の中の事実Ｃの値が作業空間Ｗ２に宣言されることにより、規則Ｒ２、更に結果Ｅが解かれる。尚、後向き連鎖と前向き連鎖との組み合わせも可能であることは容易に理解されるだろう。
【００５４】
図2cでは図2aと同様に、後向き連鎖を用いて結果Ｅを解いている。しかし、処理の順序が逆である。この例では、作業空間Ｗ２では規則Ｒ２を解くことができないので、事実Ｄと規則Ｒ２とを含む部分的な結果が生成される。これは作業空間Ｗ１に渡されても良いが、事実Ｄと規則Ｒ２との両方が開示されてしまう。しかし、部分的に解かれた規則Ｒ２から既知の事実Ｄを除くことにより、事実Ｄと規則Ｒ２とをマスクできる。この例では、事実Ｄが真であることがわかっているので、規則Ｒ２「Ｃ及びＤならばＥ」が新たな規則Ｒ３「ＣならばＥ」にリファクタリングされる。規則Ｒ３を含む部分的な結果はその後、作業空間Ｗ１に送られる。作業空間Ｗ１では、部分的な結果の中の規則Ｒ３を利用し、事実Ａ及びＢから事実Ｃを解き、それにより、結果Ｅを解く。
【００５５】
規則Ｒ３は作業空間Ｗ１、Ｗ２のいずれにとっても検索可能な目標ではない。知識ベースには規則Ｒ３は物理的に存在しないので、「規則Ｒ３を検索せよ」等の要求には結果を返すことができない。識別子「Ｒ３」、又は規則Ｒ３の検索に利用可能な他の選択原理は存在しない。それに対し、規則Ｒ２は検索可能な目標である。「結果Ｅを解き、かつ事実Ｄを参照する目標を全て検索せよ」等の要求により、作業空間Ｗ２の中から規則Ｒ２を検索できる。もし規則Ｒ２が作業空間Ｗ１に開示されても良ければ、規則Ｒ２は作業空間Ｗ１にとって検索可能な目標である。「結果Ｅを解く目標を全て検索せよ」等の要求により、作業空間Ｗ２の中から目標の集合（この例では規則Ｒ２と事実Ｄ）は検索可能であるが、規則Ｒ３は検索されない。（例えば、作業空間Ｗ１に対してはプライベートであって開示が許されていないという理由で）この集合の中の目標が一つでも作業空間Ｗ１にとっては検索可能でなければ、作業空間Ｗ１にとってはその集合の全体が検索可能ではない。特定の結果に対する要求という状況では、規則Ｒ３はこの目標の集合を処理する結果から得られる。それ故、規則Ｒ３に対する要求は、例えば「結果Ｅを試しに解いた結果を返せ」というような結果に対する要求という形式を取らねばならない。そのような結果に対する要求は、知識ベースに対する目標の要求ではなく、処理に対する要求である。
【００５６】
容易に理解されるように、図2a及び図2bに示されている部分的な結果はまた、図2cで利用されているものと同じ技術を利用してマスクされても良い。この場合、解かれた事実Ｃは規則Ｒ２からは除去されるので、規則Ｒ２「Ｃ及びＤならばＥ」はリファクタリングされ、新たな規則、例えば「ＤならばＥ」が生成される。この新たな規則はその後、部分的な結果の中に含まれて作業空間Ｗ２に渡される。作業空間Ｗ２では、その新たな規則を用いて結果Ｅを解く。この新たな規則が、事実Ｃと同じく、検索可能な目標ではないことも、容易に理解されるだろう。
【００５７】
図2a〜図2cに示されているロジックは、「作業空間の連鎖」を通し、複数の推論作業空間での単一の計算の処理に利用可能である。「作業空間の連鎖」では、一つの作業空間で有効な入力が解かれ、その処理に基づいて部分的な結果が生成される。この部分的な結果はその後、二番目の作業空間に渡され、その二番目の作業空間で有効な入力を用いた別の処理を受ける。
【００５８】
図3に示されている協働デバイス100及び105はそれぞれ、サーバ、ワークステーション、ラップトップ等、汎用の演算装置であっても良い。その他に、マイクロプロセッサを付属のメモリ及び入出力装置と共に用いて組み込まれた専用の装置や、１以上の集積回路と付属のハードウェア等の電子回路であっても良い。協働デバイス100及び105は、好ましくは、例えば時分割処理、又はマルチプロセッサを利用し、複数の協働計算を同時に処理できるように構成されている。
【００５９】
通信ポート50は、各協働デバイスを外部のコンポーネントへ接続するのに利用される。ここで、外部のコンポーネントには他の協働デバイスが含まれる。この明細書では、「協働デバイス又は協働エンジンが他のデバイス又はエンジンと通信する」とは、そのような通信での通信ポート50の利用を暗に示す。通信ポート50は、イーサネット（登録商標）ポート、ＵＳＢポート、シリアルポート等、当該技術分野では公知のもののいずれか、又はそれらの組み合わせであっても良い。各協働デバイスは、外部のグループから要求を受信し、外部のグループへ結果を送信する。ここで、外部のグループには、人、コンピュータプログラム、コンピュータロジックの実行部、又は、要求の送信若しくは結果の受信のいずれか若しくは両方が可能な他のエージェントのいずれか、又はそれらの組み合わせが含まれる。更に、協働計算が、日時や特定の状態等のイベントに応じ、ある協働デバイスによって自動的に開始されても良い。
【００６０】
協働デバイス100及び105は、典型的には、独立なデバイスとして構成されている。但し、それらが、例えば、適合する演算装置に差し込まれた回路基板や、別の集積回路に接続された１以上の集積回路等、１以上の他のデバイスに結合したコンポーネントとして構成されていても良い。
【００６１】
協働デバイス100は協働エンジン20を含み、協働デバイス105は協働エンジン25を含む。協働エンジン20及び25は本発明によるロジックを実行する。そのロジックは、１以上のコンピュータプログラムとして実現されても、１以上の集積回路等の電子回路として実現されても良い。協働エンジン20及び25はそれぞれ、１以上の作業空間（図示せず）にアクセス可能である。作業空間は、本発明のロジックによって推論目標を解くのに利用されるメモリ領域である。その作業空間のためのメモリは、１以上の専用の集積回路で実現されても、協働デバイスのメモリの中に維持されても良い。それらの作業空間を管理するためのロジックは、本発明のロジックの一部として、１以上のコンピュータプログラム、コンピュータによって実行可能なコードのライブラリ、マイクロプロセッサ用の機械コード、又は１以上の集積回路等の電子回路に組み込まれていても良い。
【００６２】
推論処理では、協働エンジン20はデータ記憶装置30に接続されてそこから目標を検索し、協働エンジン25はデータ記憶装置35に接続されてそこから目標を検索する。データ記憶装置30及び35は、索引付けされたファイルやデータベース等の１以上のコンピュータプログラムによって実現されても、不揮発性メモリと付属の制御ロジックとによって実現されても良い。データ記憶装置30及び35は、図示のように協働デバイス100及び105に内蔵されても、外付けされても良い。
【００６３】
各協働エンジンは推論ロジックを実装する。その推論ロジックは、公知の推論ロジックに以下の三つの特徴を追加することで、単一の計算処理を複数のエンジン全体に分散できる。
1)解くことのできない目標を識別したとき、それを廃棄せずに、解くことのできない目標のリストに追加する。公知の推論ロジックと同様、解くことのできない目標には、解くことができないという印を付け、協働エンジンが無限ループに陥らないようにする。解くことができない目標のリストは、要素のベクタ若しくはアレイ、動的なアレイ、又は、同様な構造体として実装されても良い。
【００６４】
2)解くことができない目標を新たには一つも識別できないとき、部分的な結果を生成しても良い。その部分的な結果は、解くことのできない目標の関数として生成される。ここで、それら解くことのできない目標には、その時点で作業空間の中に存在するもの、及び、解くことのできない目標のリストに含まれるものが含まれる。それらは全て、最終的な結果を解くことができる目標であることがわかっているからである。こうして、部分的な結果は、二番目の協働エンジンが所望の最終的な結果を解くのに利用可能な知識を表現する。但し、二番目の協働エンジンは、その部分的な結果の中から、解くことのできない目標を１以上解くことができることが前提である。典型的には、部分的な結果は、解くことのできない目標とそれらが参照する目標とを含む。それらの目標は、協働エンジンにとって許容可能なフォーマットで符号化されている。当該技術分野では、推論目標用の符号化として多くの種類が知られている。その中には、ＲｕｌｅＭＬ等、自由に利用可能な符号化が含まれる。
【００６５】
3)部分的な結果が得られたとき、その中から目標が解読され、推論ロジックによって利用可能な状態に置かれる。それにより、それらの目標が通常の方法で推論処理に利用される。当該技術分野では、語彙分析や構文解析等の解読技術が知られている。解読された目標は、推論ロジックで理解可能な形式でインスタンス化される。それには、典型的には、作業空間に取り込まれた目標のインスタンス化に既に利用されているものと同じ又は類似のロジックが利用される。解読された目標は、協働エンジンの中の一時的なデータ記憶装置又は知識キャッシュの中に、推論ロジックが必要に応じてそれらを検索できるような形式で格納されても良い。一時的なデータ記憶装置の中の目標は、必要がなくなれば、除去されても良い。
【００６６】
三つの改良点を実装した協働エンジンが部分的な結果を送受信できること（すなわち、「送受信可能な」協働エンジンであること）が理解されるだろう。別の実施形態では、それら三つの特徴のうち、いずれかの組み合わせが実装されても良い。例えば、改良点1及び2のみの実装によって送信専用の協働エンジンが構築されても良い。それにより、部分的な結果の生成と送信とが可能で、受信はできないエンジンが与えられる。同様に、改良点3のみの実装によって受信専用の協働エンジンが構築されても良い。
【００６７】
好ましくは、部分的な結果を生成するとき、協働エンジンはまた、その部分的な結果の中の目標をマスクしても良い。更に好ましくは、そのためのロジックが、協働エンジンによって理解可能な目標の集合の中に実現される。但し、そのロジックはまた、コンピュータプログラム、マイクロプロセッサの機械コード、又は１以上の集積回路等の独立なロジックで実現されても良い。目標は、それ自身の変更によってマスクされても良い（例えば、ある事実としての目標が、その事実の値の変更によってマスクされても良い）。その他に、その目標を参照する目標の変更によってマスクされても良い（例えば、ある規則としての目標が、一部の除去された事実又は規則を含む）。しかし、マスクされない目標があっても良い。以下の観察が正しいことが理解されるだろう。
【００６８】
目標は、検索できない場合、又は、解くことのできない二次的な目標を１以上参照する場合、解くことができない。
作業空間の中に取り込むことができない目標は、マスクすることも、その作業空間にとってプライベートなものにすることもできない。
二次的な目標（例えば、事実としての目標）を一つも参照しない目標は、検索できない場合のみ、解くことができない。その場合は、上記の段落に記載された目標である。
解かれた目標は常に、それを参照するいずれの目標からも除去可能である。従って、部分的な結果の中に入れる必要は全くない。
二次的な目標を１以上参照する目標は、修正され、リファクタリングされ、又は一部が除去された二次的な目標、及び、付加された二次的な目標を解くことができた。
【００６９】
これらの観察から、以下の４つのマスク技術が、部分的な結果に含まれる目標を、（例えば、その目標、又はそれによって参照される目標がプライベートである等の理由で）必要な程度まで十分にマスクすることが理解されるだろう：
a)解かれた二次的な目標は、変更によってマスクされても良い。例えば「Ａ＜＄993.02ならばＣ」の中の「993.02」を不等号の向きに丸めても良い。その結果、例えば「Ａ＜＄950ならばＣ」となっても良い。
b)解かれた二次的な目標は、一部の除去によってマスクされても良い。例えば、「Ａ及びＢならばＣ」のＢが除去され、Ｂの値に応じて「ＡならばＣ」又は「Ｃではない」となっても良い。
c)解かれた二次的な目標は、リファクタリングによってマスクされても良い。例えば、「Ａ＞100ならばＡ＝100」が「Ａ≦100」にリファクタリングされても良い。すなわち、直接的な参照（等号＝）が間接的な参照（不等号≦）に変更されても良い。
d)二次的な目標を１以上参照する目標が、解かれた目標又は解かれていない目標のいずれか又は両方を除去し、又は付加しても良い。例えば「Ａ＜Ｂ＋ＣならばＤ」が、ＡとＢとを参照する他の目標に応じて「Ａ＜ＸならばＤ」又は「Ａ＋Ｙ＜ＺならばＤ」にリファクタリングされても良い。
【００７０】
容易に理解されるように、協働エンジンで利用される目標の表現に応じ、値をマスクするための別の技術が実装可能である。更に、アプリケーション独自の情報が値のマスクに利用されても良い。例えば、プライベートな値「100」が固有の識別子「abc」に置き換えられても良い。その識別子「abc」は、後の処理で元のプライベートな値へアクセスすることにより、元の値「100」に置き換えることができる。また、別の実施形態では、プライベートなデータがマスクできない場合の動作が規定されても良いことも理解されるだろう。その場合、例えば、エラーが生成されても、そのデータがマスクされないままであっても、その他の処理が呼び出されても良い。
【００７１】
好ましくは、協働エンジンが、受信された部分的な結果から解読された目標と、データ記憶装置から検索された目標とを差別化しても良い。更に、この差別化を処理に利用しても良い。その一方で、推論ロジックによる目標へのアクセスは全て、常に、その差別化には依らない。全ての目標へのアクセスに差別化を反映させないことにより、推論ロジックが適切な目標を、それらの供給源に関わらず、全て確実に利用できる。差別化の機能によって協働エンジンは目標の供給源を、例えば目標間の競合を自動的に解消する等の処理に入れることができる。例えば、インスタンス化された各目標にその供給源を用いて印を付ける、又は、ハッシュテーブルや同様な構造体を利用して目標とその供給源との間の関係を維持する等、目標の差別化の組み込み方法には種類が多い。
【００７２】
協働エンジンは、公知の推論エンジンを修正することによって構築されても、本発明の特徴を含む新たな推論エンジンとして構築されても良い。公知の推論エンジンのロジックは、解くことのできない目標を識別すること、別の目標を識別できないことを検出すること、及び、入力に応じて処理を開始することが可能である。それ故、既存のロジック又は新たなデザインの中に、本発明のロジックのためのロケーションを容易に識別できる。例えば、Ｊａｖａ（登録商標）やＣ＋＋等のオブジェクト指向のプログラム言語で書かれたコンピュータプログラムで実現された既存の推論エンジンが、適切なクラスの適切なメソッドに変更を加えること、新たに得られたクラスを定義すること、又は、別のメソッド若しくはクラスのいずれか若しくは両方を創設することによって修正されても良い。対応する技術が、機械コードでの実装や電子回路の設計の修正に利用されても良い。推論エンジンの既存の実装には、ハードウェアとコンピュータソフトウェアとの両方で、多くのものがある。そのような実装は、独占的なものであっても、自由に利用可能なものであっても良い。
【００７３】
以下、図4に示されているロジックについて、図3の装置を参照しながら説明する。図示された例では、結果に対する要求41が協働デバイス100によって受信される。協働デバイス100は協働エンジン20で要求41を、データ記憶装置30から検索された目標の関数として処理する。その結果、部分的な結果45が生成され、ある結果に対する要求の中に入れられて協働デバイス105に送られ、更に計算される。協働デバイス105は協働エンジン25でこの要求を、部分的な結果45の中の目標とデータ記憶装置35から検索された目標との関数として処理し、最終的な結果49を生成する。この例では、最終的な結果49が各協働デバイスによって外部のグループ（図示せず）に送信される。図3では、矢印の付いた線が要素間のデータ通信を表している。
【００７４】
ブロック2010で、協働エンジン20が要求41を受信することにより、ロジックは始まる。協働エンジン20は、要求41に含まれる部分的な結果を解読し、かつデータ記憶装置30へ問い合わせて目標を検索することにより、要求41に関する推論目標をインスタンス化する（ブロック2010）。好ましくは、協働エンジン20はそれを、部分的な結果から得られる目標とデータ記憶装置30から得られる目標とを差別化できる方法で行う（例えば、目標間の競合を解消する等）。一方、推論ロジックは、差別化に関わらず、全ての目標にアクセス可能である。この例では、協働エンジン20によって受信された要求には部分的な結果が含まれていない。
【００７５】
協働エンジン20は、推論ロジックを利用し、インスタンス化された目標をその作業空間の中で処理する（ブロック2020）。その推論ロジックは、現在の目標を解くのに必要な別の目標をデータ記憶装置30から検索してインスタンス化する。推論ロジックは更に、各目標を解いた結果としてある動作を行っても良く、行わなくても良い。推論ロジックは当該技術分野では公知であり、前向き若しくは後向きに連鎖するロジック、又は、それら若しくは他の推論ロジックの組み合わせを含んでも良い。
【００７６】
推論エンジン20は（ブロック2020で）目標を解くことができないと判断すれば、その解くことのできない目標を、解くことのできない目標のリストに加える（ブロック2024）。
推論エンジン20は（ブロック2029で）解かれていない次の目標が少なくとも一つあり、かつ、それを解くことができると判断すれば、ロジックをブロック2020に戻す。
次の目標がなければ、協働エンジン20により、この計算に適用可能な目標が全て識別されて処理されたことになる。その結果、作業空間42の中には、解かれた目標と解かれていない目標との両方が含まれているが、識別可能な目標は他にはないので、作業空間42の中にある解かれていない目標は、解くことができないことがわかる。
【００７７】
協働エンジン20は部分的な結果45を生成するか否かを決める（ブロック2030）。要求41によって要求された目標が１以上解かれておらず、かつ、部分的な結果が禁止されていなければ、協働エンジン20は部分的な結果の生成を決める。要求41によって明示的に、又は要求41に関連する目標の処理を通して暗示的に、部分的な結果が規定され、又は禁止されても良い。協働エンジン20が部分的な結果を生成しないことを決めた場合（ブロック2030）、ロジックはブロック2090に進み、最終的な結果が与えられる。この場合、もし1以上の目標が解かれていなければ、最終的な結果がエラーであっても良い。協働エンジンが部分的な結果の生成を決めた場合、そのロジックは空の部分的な結果45を創出し、ブロック2040に進む。
【００７８】
協働エンジン20は、解かれていない目標ごとに、目標の集合を部分的な結果45に加える（ブロック2040）。ここで、解かれていない目標は、その時点で作業空間42の中に置かれているもの、及び、解くことのできない目標のリストに含まれているものである。このロジックは、部分的な結果に既に含まれている解かれていない目標によって参照される目標に加え、解かれていない目標の各々によって参照される目標を全て、部分的な結果に繰り返し追加する。その他に、別のロジック又は推論目標が、部分的な結果に含まれる目標の最適化、整頓、又はリファクタリングに利用されても良い。ある実施形態では、ロジックがまず、現時点で解かれていない目標を全て、解くことのできない目標のリストに加え、次に、解くことのできない目標のリストに含まれる目標とそれらが参照する目標とを全て部分的な結果に加える。
次の解かれていない目標があると協働エンジン20が判断すれば（ブロック2049）、ロジックはブロック2040に戻る。
【００７９】
協働エンジン20が、部分的な結果に含まれるプライベートな目標を識別する（ブロック2050）。協働エンジンは、データ記憶装置30に問い合わせて各目標に対するアクセス上の条件を決めることにより、上記の識別を行っても良い。協働エンジン20は更に、プライベートなデータの修正、又はプライベートなデータを参照する目標のリファクタリングのいずれか又はその両方により、プライベートなデータをマスクする。
協働エンジン20は必要に応じ、別の目標を部分的な結果45に追加し、部分的な結果45に含まれている目標間の競合やあいまいさの可能な扱い方を定義しても良い（ブロック2050）。これは、目標に基準又は制約条件を与えて目標間に順序を定義することにより、行われても良い。例えば、基準又は目標の形式で与えられた順序に関する情報をデータ記憶装置30に格納して利用しても良い。推論ロジックでの順序に関する目標及び基準は、当該技術分野では公知である。
【００８０】
協働エンジン20は部分的な結果を１以上の次の協働エンジンに送信する（ブロック2090）。協働エンジン20はその送信を行うとき、要求41から直接、又は推論目標を解くことによって次の協働デバイスを少なくとも一つ識別する。部分的な結果はその協働デバイスに送信され、そのデバイスに付属の協働エンジンによって処理される。この例では、部分的な結果45が、ある結果に対する要求に添付され、協働デバイス105に送信される。その要求は、協働エンジン25が上記のロジックを使って処理する。
【００８１】
協働エンジン25は、部分的な結果45から解読された目標を、データ記憶装置35から検索された目標と共にインスタンス化する（ブロック2010）。協働エンジン25は、要求された結果を生成するのに必要な目標を全て解く。従って、解くことのできない目標のリストには解かれていない目標がない。協働エンジン25はそれ故、部分的な結果45を生成しないことを決め（ブロック2030）、ブロック2090に進み、最終的な結果49を生成して送信する。
【００８２】
図4に示されているロジックは、送受信を行う協働エンジンにより、部分的な結果を送受信可能である。別の例では、ある結果に対する要求を協働エンジン25によって受信することにより、ロジックが始まる。更に、その結果を生成するのに必要な目標を１以上解けなければ（ブロック2030）、協働エンジン25が部分的な結果を生成しても良い。その部分的な結果は、その後、協働エンジン20に送られ、更に処理される。容易に理解されるように、送信のみ、又は受信のみを行う協働エンジンが、幾つかの部分を除いて同様なロジックを利用しても良く、それらは本発明の範囲からは除外されない。
【００８３】
図5に、会社Ａで利用される協働エンジン20に対する目標の例を示し、図6に、会社Ｂで利用される協働エンジン25に対する目標の例を示す。この例では、目標が規則と事実とを含む。これは簡単化された例であり、規則が例示的なものに過ぎないこと、及び、規則が協働エンジン20及び25によって理解可能であれば如何なる形式でも良いことは理解されるだろう。図5に示されているデータの集合31と規則の集合32とはデータ記憶装置30に記憶されている。会社Ａによる購買に関し、データの集合31は事実の例を示し、規則の集合32は規則の例を示す。作業空間の状態42は、ある特定の時点での協働エンジン20の内部の状態を表す。部分的な結果45は、協働エンジン20によって生成される特定の結果を示す。図6に示されているデータの集合36と規則の集合37とはデータ記憶装置35に記憶されている。会社Ｂによる販売に関し、データの集合36は事実の例を示し、規則の集合37は規則の例を示す。作業空間の状態47及び48は、ある特定の時点での協働エンジン25の内部の状態を表す。部分的な結果49は、要求に対する結果の例を示し、協働エンジン25によって生成される。
【００８４】
会社Ａが会社Ｂからある量のボルトを購入する処理を自動化する例について、図3〜6を参照しながら説明する。購買要求41に応じ、協働エンジン20は目標として「価格」及び「量」を設定し、データの集合31と規則の集合32とを用いて処理を進める。協働エンジン20は、作業空間の状態42に示されている状態に到達する。そこでは、「価格」と「量」とを解く規則が作業空間の中に取り込まれ、その規則によって参照される事実がデータ記憶装置30から検索され、更に解かれている。別の目標は識別できない。規則4201、4202、及び4203は、解かれていない目標「価格」及び「量」を参照しているので、それらは、作業空間の状態42では解かれていない。従って、協働エンジン20は部分的な結果45を作成し、解かれていない目標4201、4202、及び4203を部分的な結果に加える。この例では、作業空間の状態42に到達する前には、解くことのできない目標が一つも識別されていないので、解くことのできない目標のリストが空である。更に、解かれていない目標は、解かれた二次的な目標しか参照していないので、部分的な結果には他の目標が含まれていない。
【００８５】
協働エンジン20はその後、データ記憶装置30をチェックし、部分的な結果45に含まれている目標がプライベートか否かを決定する。規則3201がプライベートか否かに関わらず、事実3102はプライベートであるので、それを参照する目標は、規則4203を含め、プライベートである。規則4203がプライベートな事実を参照しているので、協働エンジン20は部分的な結果を修正し、規則4203から新たな規則4501を得る。規則4501はプライベートな事実、この場合では、預金残高3102を開示する値＄997.56、をマスクすることによって生成される。規則の中の条件節を削除することにより、その値はマスクされる。その除外では、条件節の中の不等号（より大）が帰結節の中にリファクタリングされる。特に「反転」の結果、不等号（より小さいか、等しい）に変更される。この例では、「価格×量＞＄997.56ならば価格×量＝997.56」が「価格×量≦997.56」にリファクタリングされる。規則はもはや等号を含まないので、プライベートな値の直接的な参照ではない。
その値を更に、不等号の向きで妥当な値の倍数に丸めてマスクしても良い。この例では、その値を＄50の倍数に丸め、＄950.00にしている。この処理の後、部分的な結果45ではプライベートなデータが直接的にも間接的にも参照されていない。この例では、マスクのロジックが推論規則の中に組み込まれている（図示せず）。
【００８６】
協働エンジン25は部分的な結果45を受信し、データの集合36と規則の集合37とを用いてその部分的な結果を解く処理を進める。規則の集合37の中の規則を処理した後、協働エンジン25は「量」の値（部分的な結果45の中の規則に合う値1000）、値引き（10％）、及び価格（＄1.08）を解く。その結果、作業空間の状態47に示されている状態が得られる。しかし、協働エンジン25が規則4701を考慮するときは、1000×＄1.08が＄950より大きいので、「量」の新たな値を解くだろう。これに応じ、協働エンジン25は、「値引き」の新たな値を解き、作業空間の状態48に示されている状態に到達する。要求された目標「価格」及び「量」が解け、作業空間の状態48に含まれる全ての値が全ての規則に合致するので、協働エンジン25は、協働エンジン20に返すことのできる最終的な結果49を生成する。
【００８７】
容易に理解されるように、協働エンジン20及び25は、プライベートな目標を他の協働エンジンには開示することなく、推論ロジックを利用して複数のグループでの計算結果について交渉する。上記の例では、部分的な結果45に含まれている目標が、一度の交信での交渉を可能にしている。もし協働エンジン25が目標を一つでも解けなければ、二番目の部分的な結果が協働エンジン20に送られ、更に処理されても良い。こうして、交渉の拡大がサポートされる。
【００８８】
そのような計算に利用される協働エンジンの数には理論上限界がないことが理解されるだろう。別の例では、協働エンジン25が、解かれていない目標を一部だけ解き、部分的な結果を生成して三番目の協働エンジンに送る（図示せず）。部分的な結果を生成するか否かを規定することで、各協働エンジンは最終的な結果の生成時期を制御できる。例えば、協働エンジン20が協働エンジン25に部分的な結果を要求することにより、協働エンジン25が最終的な結果を生成しないようにし、三番目の協働エンジンも計算に利用可能であるようにしても良い。同様に、協働エンジン20が協働エンジン25に最終的な結果を要求することにより、協働エンジン25に、最終的な結果の生成、それが不可能な場合はエラーの生成を強制しても良い。
【００８９】
部分的な結果はまた、協働エンジン以外の宛先に送られても良い。部分的な結果はロジックの実行部に送られ、１以上の協働デバイスへ転送され、又は他の処理を受けても良い。部分的な結果はまた、（例えば、協働デバイスに共有される）一時的な記憶装置に格納され、又はその記憶装置から検索されても良い。部分的な結果は更に、ディスクやテープ等の永続的な記憶装置に保存されても良い。
【００９０】
別の実施形態では、本発明が、インテリジェントネットワーク（ＩＮ）通信ネットワークにおいて、電話の呼の経路制御に適用される。
その通信ネットワークが発呼側と着呼側との両グループの設定を考慮するならば、顧客にとっては大きな追加効果があるだろう。各グループの設定を別々に考慮する公知の技術より、両グループの設定の組み合わせに良く合った呼の経路を決定できるだろう。呼分配を含む呼についてはまた、呼の経路と中継線の利用とを発呼側のネットワークで組み合わせて判断できれば、呼の経路制御と中継線の利用との効率化の点で大きな効果があるだろう。呼を直接、最終の宛先に送ることができるだろう。従来の呼分配では、呼が発呼側のグループのネットワークによって着呼側のグループのネットワークに送られ、その後、その呼が最終の宛先に分配される。そのような呼分配では、呼が二番目の区間で二番目の呼を含み、それが通常、元の着呼側のグループに課金される。
【００９１】
公知の推論ロジックでは、単一の推論エンジンが推論結果を生成しなければならない。しかし、ユーザの設定には、電話番号や詳細な連絡先等、他のネットワークとは共用できないプライベートな情報が含まれることもある。それと同時に、電話回線網では典型的には、毎秒数十、数百、更には数千の経路を制御しなければならず、経路の決定に要する時間には厳しい制約がある。例えば、経路の設定要求に対して250ミリ秒未満で応答を返さねばならない場合もある。本発明は、推論ロジックの利用により、発呼側と着呼側との両グループの設定を利用した経路の計算に対する実用的なソリューションを提供する。
【００９２】
発呼側のグループ、アリスと、着呼側のグループ、ボブとの間での呼の経路制御の例を考えよう。この例では、アリスが携帯電話を使い、取引相手のボブの携帯電話に午後6：00に電話をかける。アリスとボブとは異なる携帯電話網の顧客である。アリスは、幾つかの取引相手が自宅で仕事をすること、及び、時には彼等の携帯電話への通話を自宅の電話に転送することを知っている。アリスは自分への通話を、勤務時間中は自宅の電話に転送することを望み、もし受信者の現地時間が午後5：30以降であれば、留守番電話（ボイスメール）に転送することを望んでいる。ボブは、彼の携帯電話への通話を全て自宅の電話に転送する「在宅」モードを有効にできることを望んでいる。彼はまた、午後9：00以降では、特定の重要な発信者からの通話を除き、全ての通話を留守番電話に転送することも望んでいる。
【００９３】
図7に示されているように、アリスとボブとの設定は規則と事実とで表現され、それぞれが知識ベース33及び38に格納されている。例えば規則3302は、取引相手への通話は午後5：30以降では彼等の自宅の電話ではなく、彼等の留守番電話に送るというアリスの設定を規定している。規則3801は、「在宅」モードがアクティブであるときはボブの携帯電話への通話を、まず彼の自宅の電話に送り、次に留守番電話に送るというボブの設定を規定している。これは単純化された例であり、それらの規則は例示に過ぎないことは理解されるだろう。
【００９４】
図3に示されているように、アリスの携帯電話網は協働デバイス100に接続され、ボブの携帯電話網は協働デバイス105に接続されている。知識ベース33はデータ記憶装置30に格納され、知識ベース38はデータ記憶装置35に格納されている。アリスがボブの番号をダイヤルするとき、アリスの携帯電話網は、呼の処理を求めるＩＮクエリーを発信する。このクエリーはある結果に対する要求として協働デバイス100に転送され、協働エンジン20で処理される。ここで、この例では、その要求、部分的な結果、及び最終的な結果が図3、4には示されていない。
【００９５】
図4に示されているように、協働エンジン20は「受信者が取引先である」を解く。しかし、「宛先」を解くことができないので、規則3302は解くことができない。解くことのできる目標は他にはないので、協働エンジン20は部分的な結果44を生成する。この例では、事実3301がプライベートであるので、規則3302がリファクタリングされ、事実3301が除去される。その結果、新たな規則4401が得られる。協働デバイス100はその後、部分的な結果44を含む要求を協働デバイス105に送る。協働デバイス105はその要求を協働エンジン25で処理する。
【００９６】
協働エンジン25は部分的な結果44を受信して処理する。この例では、ボブが「在宅」モードを有効にしているので、協働エンジン25が規則3801から「宛先＝自宅、留守番電話」を解く。協働エンジン25は更に、部分的な結果44から規則4401を解くことができる。それにより、「宛先＝1234 987654」という解が得られる。協働エンジン25は続いて最終的な結果46を生成できる。この例では、協働デバイス105が最終的な結果46を協働デバイス100に送る。協働デバイス105は最終的な結果46を元のクエリーの応答として返しても良く、それにより経路を与える。
【００９７】
アリスの設定をボブの設定に変更できるロジックの実装方法には多数の種類がある。この例では、協働エンジン25が、部分的な結果44から得られる目標と、データ記憶装置38から検索される目標とを差別化する。それにより、アリスの規則4401が、その時点でボブの設定でも許容可能である宛先を規定している場合にのみ、ボブの設定に変更可能である。アリスの規則4401は「宛先＝留守番電話」を規定し、ボブの設定3801もまた、許容可能な宛先として留守番電話を規定しているので、アリスの設定の変更が許可される。他の実装としては、宛先がプライバシーの順に表にされ、プライバシーが同程度以下の宛先を選択するアリスの規則からの変更のみが許可される。こうして、自宅の電話から留守番電話への変更が許可され、自宅の電話から携帯電話への変更が禁止される。理想的には、そのようなロジックはまた、規則として実装されるだろう。その場合、ロジックはユーザごとに調整されても良い。いずれの実装でも、宛先が一つも選択できないというような矛盾が規則間に生じれば接続ができない。従って、発呼側のネットワークに返される結果により、今回は呼が完結できないことをアリスに通知するアナウンスの実行が命じられても良い。
【００９８】
上記の例では、もしアリスが午後5：30より前に発呼すれば、協働デバイス100に返される最終的な結果がボブの自宅の電話番号を含み、アリスの発呼がボブの自宅の電話に直接送られただろう。従来の呼分配では、アリスの発呼がボブの携帯電話に送られる。ボブの携帯電話で呼分配が可能であれば、二番目の発呼がＰＳＴＮ（公衆交換電話網）でボブの自宅の電話に送られるだろう。この場合、アリスの通話の間に二つの発呼用のネットワーク資源が消費されるだろう。
【００９９】
アリスとボブとの間の通話の経路は、プライベートな情報を開示することなく、両グループの設定を用いて効率良く計算される。部分的な結果44の生成及びマスク処理のオーバヘッドは小さく、ネットワーク伝送のオーバヘッドもまた小さい。協働デバイス100から協働デバイス105への送信は一回だけであり、その内容、すなわち部分的な結果44は小さい（通常、アリスの設定より大幅に小さい）。協働デバイス105から協働デバイス100への一回の応答が最終的な結果46を含む。その応答はまた小さい（通常、部分的な結果44より小さい）。その他に、アリス又はボブの設定の全てを規則やパラメータとして送る等の技術では、送信のオーバヘッドが大きく、処理のオーバヘッドもおそらく大きい。限られた時間枠の中で経路を計算しなければならないので、計算上やネットワークのオーバヘッドが高い公知のセキュアプロトコルは、アリスとボブとの設定の保護には利用できないだろう。
【０１００】
容易に理解されるように、最終的な結果46がアリスの設定以外の設定からの情報を含むことを、アリスのネットワークが知る必要はない。ネットワークの観点からは、クエリーが送信され、応答が受信される。ＩＮネットワークの場合、ネットワークのロジックや操作モードが変更されなくても良い。その結果、協働デバイスを既存のネットワークに組み込む作業が最低限のものですむ。
【０１０１】
また、次のことも容易に理解されるだろう。ある呼に関するネットワークのうちの一つだけが協働デバイスを利用する場合、たとえ協働処理の効果は得られなくても、そのネットワークは、設定の処理に推論ロジックを利用する効果を享受できる。各グループのネットワークが協働デバイスを利用するときは、協働処理による追加の効果、すなわち、経路を両グループの設定の組み合わせにより良く合わせること、及び、協働エンジン間での交渉を可能にすることが実現される。更に、３以上の協働デバイス、従って３以上のネットワークがそのような協働処理に含まれても良い。
【０１０２】
協働推論処理を用いた経路の生成はかなり柔軟である。例えば、ボブの規則又はネットワークのいずれか又は両方が、ボブの電話番号の一部又は全部の送出を禁止しても良い。協働エンジン25はその代わり、仮想的な電話番号をアリスのネットワークに返す。アリスのネットワークが、ボブのネットワーク上に設定されたこの仮想的な電話番号に接続を生成するとき、ボブのネットワークはＩＮクエリーを生成し、この仮想的な電話番号に対する正しい宛先を決定する。その結果、協働エンジン25によって以前に決定された経路で通話が行われる。
【０１０３】
別の例では、ボブが「宛先が留守番電話であり、かつ発信者が取引先であれば、留守番電話．メッセージ＝ビジネスメッセージ」という追加の規則を持つ。アリスのネットワークはボブの留守番電話を制御できないので、（協働エンジン25で）この規則を解いて「留守番電話．メッセージ＝ビジネスメッセージ」を与えれば、ボブのネットワークで処理されなければならない情報が結果として得られる。これを実装する方法の一つとして、ボブのネットワークに属する仮想的な電話番号、例えば「宛先＝1234 555555」への宛先を協働エンジン25で解く。アリスのネットワークがボブのネットワーク上の12345に発呼するとき、ボブのネットワークはＩＮクエリーの結果を利用し、その呼をボブの留守番電話に送り、適切なメッセージを再生する。
【０１０４】
また、次のことも容易に理解されるだろう。ショートメッセージサービス（ＳＭＳ）、Ｅメール、及びインスタントメッセージ等の電気通信の他の形式が、同様な方法で送られても良い。各グループでの推論規則が、上記の例で示されているものに限らず、様々な入力を含んでも良い。
【０１０５】
本発明は、２以上の作業空間で推論ロジックを解く問題に一般的なソリューションを提供する。他の解かれた目標によってのみ参照される解かれた目標や、計算期間では参照されないデータ記憶装置の中の目標を部分的な結果は含まなくても良いので、複数のグループによる公知の推論処理と比べ、本発明は、エンジン間で送信されるデータ量の各々を大幅に減少させる。これは、公知の推論ロジックに比べて大幅な改善である。公知の推論ロジックでは、使わないかも知れない目標を含め、可能な目標を全て、単一の推論エンジンに伝送し、又は複数のネットワークへ送信し、離れたデータ記憶装置に存在する新たな目標をそれぞれ識別しなければならない。
【０１０６】
部分的な結果は典型的には、計算で解かれる目標の集合を一部しか含まないので、部分的な結果には含まれないプライベートな目標は多い。部分的な結果に含まれないプライベートな目標は効果的にマスクできるので、それらの開示を回避できる。更に、プライベートではないが、「ロケーションに依存する」入力が、相互に連結された複数の協働エンジンの一つによってローカルに処理されても良い。それにより、結果が生成可能である。入力は送信するには過大であるという理由、又は伝送によって損傷するという理由で、ロケーションに依存しても良い。
【０１０７】
本発明の幾つかの実施形態では、部分的な結果に含まれるプライベートな値がマスクされなくても良い。しかし、そのような実施形態でも、交渉の拡大や、エンジン間での送信のオーバヘッドの減少等、本発明の他の効果が残されている。
【０１０８】
容易に理解されるように、新たな規則等の新たな目標を追加すること、又は、目標の一つの集合を別のものに完全に変更することにより、協働エンジン20及び25の動作を変更しても良い。従って、協働エンジンはプログラム可能であり、関連する規則や事実に応じ、一つのタイプの計算、又は多くの異なるタイプの計算を行うように導入されても良い。
【０１０９】
好ましくは、協働エンジン20及び25は更に、それらの間で交換される部分的な結果の内容を保護しても良い。部分的な結果はプライベートなデータに、間接的に関与する目標を含むので、あるシナリオでは、悪質なグループが、相互に関連する部分的な結果を十分に得れば、プライベートなデータを再構成できる。従って、悪質なグループは、その目的で複数の相互に関連する部分的な結果を生成しようとするだろう。先行技術の多くは、それらへの対処として、要求の監査、各グループに対するある時間内での要求の数の制限、及び、パスワード等の静的な認証トークンを用いたグループの認証を利用できる。本発明はこれらの技術のいずれを単独で利用する場合にも、組み合わせて利用する場合にも有利である。本発明の好ましい実施形態は更に、一つのグループが動的な認証トークンを利用して自身の正当性を別のグループに対して動的に認証する、という技術を提供する。認証トークンは、両方のグループで知られているプライベートな事実である。受信側のグループにはそのプライベートな事実が既に知られているので、そのプライベートな事実を開示するのではない。好ましくは、動的な認証が新たに行われるごとに、異なる事実に基づき、新たな認証トークンが利用される。それにより、認証に成功する回数が、共有されるプライベートな事実の数、又はその機能で制限される。
【０１１０】
一つの好ましい実施形態では、二つの協働エンジンの間での動的な認証が、以前、両方のエンジンによる協働計算で解かれた事実を利用して組み込まれている。従って、認証トークンから連続して生成できる事実の集合が、生成される結果と共に増大する。但し、結果を生成することなく、膨大な数の認証を行えば、認証トークンは使い果たされるだろう。公知の推論ロジックの利用により、以前に行われた協働計算から得られた事実が識別され、その事実から動的な認証トークンが生成される。その事実にプライベートな事実を比較することで、そのトークンは認証される。この実施形態は、以前の計算で得られた事実を必要とするので、最初の計算については利用可能な事実がないだろう。この場合、ロジックは、それ以前には認証されていない協働エンジンからの最初の認証要求として空トークンを許可して認証する。但し、限られた権利しか認めない。その他に、最初のトークンが各協働エンジンに与えられ、最初の動的な認証が成功であるとされる。一つの協働計算から得られた事実はその直後の協働計算では認証への利用を禁止する。それにより、更に高度のセキュリティが得られる。
【０１１１】
好ましくは、従来の認証技術を動的な認証に組み合わせ、更に高度のセキュリティを与える。
更に、セキュアな送信プロトコルが認証トークン及び部分的な結果の送信の保護に利用されても良い。当該技術分野では、ＳＳＬやＩＰＳｅｃ等のセキュアな送信プロトコルが知られている。
動的認証の一例について、図4〜6を参照しながら説明する。これらの図面を参照しながら以前に説明したものと同じ例を考慮する。協働エンジン20はプライベートな事実を動的な認証トークンとして利用することを決める（図4のブロック2090）。この例では、その事実が事実3101（最近の注文＝PO1234）であり、会社Ｂとの以前の取引に関連する事実である。協働エンジン20はこの事実を動的な認証トークンとして、部分的な結果45に添付する。協働エンジン25は、認証用の事実が会社Ａに関連すること、及びその事実が、データの集合36に含まれる対応する事実3601に一致することを確かめることにより、部分的な結果45を動的に認証する（図4のブロック2010）。
【０１１２】
本発明の別の応用
協働デバイスを使用できる応用範囲は広い。上記の例による電子商取引及び通信経路制御に加え、協働デバイスは、特定のタスク、又は広範囲での協働や交渉の実施に導入され、プログラムされても良い。
図8に、複数の演算装置が複数グループによる処理を実施する分散型データ処理システムを示す。
図8に示されているように、分散型データ処理システムは、ローカルエリアネットワーク（ＬＡＮ）50及びＬＡＮ55等、複数のネットワークを含んでも良い。各ＬＡＮは独立の演算装置を複数含んでも良い。容易に理解されるように、各ＬＡＮは、会社等、別々のグループに所有されていても良い。ＬＡＮは地理的に分離され、インターネットや他のネットワークで接続されていても良い。
【０１１３】
個々の演算装置は、サーバ100、101、及び105等の（複数の演算装置で共用される）サーバであっても、クライアント200、201、205、206、及び207等のクライアントであっても良い。個々のクライアントは、ワークステーション、ノート型コンピュータ、パーソナルコンピュータ等であっても良い。それらはユーザインタフェース周辺装置（例えばキーボードやモニタ）を含み、ユーザに処理を開始させることができる。データ記憶装置30及び35等のデータ記憶装置がサーバ又はクライアントに連結され、推論目標を含むデータの記憶に利用されても良い。
【０１１４】
あるグループによって所有されているＬＡＮの各々では、演算装置が複数のコンピュータアプリケーションを実行し、そのグループでのある範囲の協働タスクを行っても良い。そのようなアプリケーションは、ワークフロー、企業間取引、オフィスオートメーション、設計、及びグループウェアアプリケーションを含んでも良く、クライアント又はサーバのいずれか又は両方で実行される。図8に示されているように、協働アプリケーション60はＬＡＮ50上の演算装置で実行され、協働アプリケーション65はＬＡＮ55上の演算装置で実行される。各協働アプリケーションのインスタンスは、１以上の協働エンジン20及び25を利用し、１以上の対応する協働アプリケーションのインスタンスと共同で処理されるように構成されていても良い。
【０１１５】
サーバ、クライアント、又はその両方が、協働エンジンを実行する協働デバイスであっても良い。協働エンジンのロジックを実行するサーバを以下、協働サーバという。協働サーバ100及び101はそれぞれ、別々の協働エンジン20を使用し、データ記憶装置30の中にある１以上の規則の集合に規則を追加することにより、特定の協働タスクを実行するようにプログラムされていても良い。協働サーバ101はまた、協働アプリケーション60の一部又は全部の別のロジックも実行する。協働サーバ105は協働エンジン25を使用し、データ記憶装置35の中にある１以上の規則の集合に規則を追加することにより、特定の協働タスクを実行するようにプログラムされていても良い。
クライアント200及び205も協働デバイスである。クライアント200は協働エンジン20のロジックを実行し、クライアント205は協働エンジン25のロジックを実行する。
【０１１６】
容易に理解されるように、協働アプリケーションと協働エンジンとは、弱く結合されていても（例えば、協働アプリケーションが、別々の演算装置で実行される協働エンジンを利用する）、論理レベルで強く結合されていても（例えば、協働エンジンが特定の協働アプリケーションとのみ通信する）、物理レベルで強く結合され、同じ演算装置で実行されても良い（例えば、協働エンジンが協働アプリケーションに埋め込まれている）。分散型データ処理システム、又は、分散型データ処理システムの一部を含むネットワークはそれらのいずれの形式を含んでも良い。
【０１１７】
更に理解されるように、ワークフロー及び企業間取引等のアプリケーションが、協働エンジンによって理解可能な目標の中に完全に組み込まれていても良く、従って、協働アプリケーションを実行しない１以上の協働サーバに配布されても良い。一例としては、ＬＡＮ50を所有する会社が、ＬＡＮ55を所有する会社から商品を購入しても良い。データ記憶装置30の中にある規則に応じ、協働サーバ100は協働サーバ105と共に協働計算を行っても良い。そのような計算は自動化され、周期的に、又は、在庫の少ないとき等、協働サーバによって検出されたイベントに応じて行われても良い。
【０１１８】
他のアプリケーションが、協働アプリケーション60及び65等、別のロジックを含んでいても良い。協働アプリケーション60及び65が、オフィスオートメーションのアプリケーション、又は、設計、力学モデルの形成、若しくは財務のモデル化等、ビジネスの種類に更に大きく依存したアプリケーションであっても良い。そのような協働アプリケーションは、自分のために計算を行う協働サーバと交信しても良く、自分のロジックの中に協働エンジンを組み込んで自分に協働能力を加えても良い。
【０１１９】
図8を参照しながら、一例を説明する。
・１以上のクライアント200、201のそれぞれが、協働アプリケーション60のインスタンスを実行し、１以上のクライアント205、206で実行される１以上の協働アプリケーション65と協働してある結果を生成する。協働サーバ100、105、又は、クライアント200と205との協働エンジンのいずれか、又はそれら全部が上記の協働の結果を計算するのに利用されても良い。
・１以上のクライアント201で実行される１以上の協働アプリケーション60が協働サーバ100にアクセスして協働計算を要求する。協働サーバ100は、１以上の協働エンジン20又は25と協働してその計算を完遂し、要求された結果を生成する。
・クライアント200で実行される協働アプリケーション60は、同じクライアントの演算装置で実行される協働エンジンを利用し、１以上のクライアント205で実行される対応のアプリケーション65の１以上のインスタンスと協働して協働計算を完遂する。
【０１２０】
協働計算はまた、シンクライアントにより、協働アプリケーションを実行することなく要求されても良い。シンクライアントは、ウェブブラウザ、Ｊａｖａ（登録商標）アプレット、又はリモートコマンドシェル（例えばtelnet、rsh）の中にウェブフォームを含んでも良い。例えば、ユーザがクライアント207を使って協働サーバ105に協働計算の要求を出しても良い。協働サーバ105は、協働サーバ100、１以上の協働エンジン20、又はその両方と協働してその結果を決定しても良い。
【０１２１】
（図示されていない）別の応用では、協働エンジンとデータ記憶装置とがネットワーク管理回路に組み込まれ、そのデータ記憶装置の中にある目標を用いてプログラムされることにより、ある協働ネットワーク管理回路を創設する。その協働ネットワーク管理回路は他の協働ネットワーク管理回路と協働し、エラーの検出、サービスレベルの管理、及びネットワーク管理タスクを実行可能である。例えば、もし、あるネットワークと他のネットワークとのセグメントの一つに含まれるコンポーネントに欠陥が生じれば、一方のネットワークの主要なセグメントに含まれる１以上の協働ネットワーク管理回路が、他のネットワークの主要なセグメントに含まれる１以上の協働ネットワーク管理回路と協働してトラフィックの経路を再構成できるだろう。それらの回路は、複数グループによる、規則に基づくエラー検出と、例えばバンド幅の追加に関する交渉を含むトラフィック経路の再決定とを自動的に行う。その目標としては、サービスレベルに関する合意（ＳＬＡ：Service Level Agreement）等、取引上の検討事項を反映したビジネスルールを実装できるだろう。
【０１２２】
他の応用分野には金融が含まれる。例えば２以上の金融機関が、関係するグループには財務の詳細を開示することなく財務計算を決定するのに、本発明を利用しても良い。そのような機関は、銀行、クレジット会社、及び税務署を含み、典型的には、情報開示について法的な制限を受ける。
【０１２３】
容易に理解されるように、全ての場合において、あるドメインにとってはプライベートなデータがマスクされ、関与する１以上の協働エンジンによってプライベートに維持される。ドメインの境界は物理的な境界に一致しなくても良い。例えば、一つのネットワーク又はデータ記憶装置の中に複数のドメインがあっても良く（例えば、会社の各部局にドメインが一つずつあっても良く）、一つのドメインの中に複数のネットワーク又はデータ記憶装置があっても良い（例えば、一つの会社に複数のＬＡＮやデータ記憶装置があっても良い）。
【０１２４】
以上は本発明の実施形態の一部の説明に過ぎない。当業者には、本発明の範囲を外れることなく、修正や追加が容易であろう。
【０１２５】
用語集
「目標」
推論の対象である。推論ロジックは目標の解決を、現在のタスクとして設定して処理する。その目標を解く処理はしばしば、更に別の目標の発見につながる。推論の「前向き」連鎖ではこれら別の目標が、最初の目標を解いた「結果」として解かれる。推論の「後向き」連鎖ではこれら別の目標が、最初の目標を解くための「前提条件」として解かれる。
【０１２６】
目標は一般に「事実」と「規則」とに分けられる。ここで、事実は、指定された幾つかの要素に対する値であり、規則は通常「ＸならばＹ」という形式の関係である。規則は、事実を解くのにしか検索されないので、後向き連鎖には、事実のみを目標として見る傾向がある。一つの規則を解くことは別の規則を識別させて解かせるので、前向き連鎖には、規則を目標として考慮する傾向がある。
【０１２７】
「制約条件に基づくロジック」等、推論ロジックの他の形式も存在する。制約条件に基づくロジックの一つの形式では、前向きの推論の一種が利用される。そこでは、規則及び事実で表された典型的な目標が「制約条件で表された目標」で補われる。この「制約条件で表された目標」は、「Ｘならば」という述部を持たない規則（例えば「10＜Ｙ＜100」）の前向き連鎖である。
【０１２８】
尚、全ての目標は実質上、１以上の規則で表された目標として表すことができる：
a)（事実）：Ｘが値を持たなければ、Ｘ＝100；
b)（制約条件）：Ｙ≦10ならばＹ＝11とし；Ｙ≧100ならばＹ＝99とする。
【０１２９】
「解くことのできない目標」
推論ロジックが決めた目標は解くことが「できない」。それは通常、その目標を解くために必要なものが欠けているからである。例えば、推論ロジックが、目標Ｘの参照を試みたが、利用可能な如何なる情報源からも目標Ｘを検索できないことを発見した、とする。この状況では、目標Ｘは解くことができないとみなされる。更に、二番目の目標Ｙが目標Ｘを「直接的に」参照する、とする。この状況では、目標Ｘを解くことができない結果、目標Ｙも解くことができない。三番目の目標Ｗが（例えば目標Ｙを直接的に参照することで）目標Ｘに「間接的に」参照する、とする。この状況では、ＷからＸへの間接的な筋道が、目標Ｗを解く唯一の方法であれば、目標Ｗもまた、解くことができない。
【０１３０】
例：目標Ｘは、事実で表された目標である。例、購入品に対する値引率（Ｘ＝？）。
目標Ｙは、規則で表された目標である。例、その値引率に関する規則。
目標Ｗは、目標Ｙを通して目標Ｘを参照する事実で表された目標である。
（Ｘ＞10％ならば、Ｗ＝Ｘ×1.5）
以上の場合、目標Ｘの値が検索できなければ、又は決められなければ、目標Ｘは解くことができない。その結果、目標Ｙは解くことができない。規則Ｙが、目標Ｗを解くことができる唯一の規則であれば、又は、目標Ｗについての残りの規則が全て、目標Ｘ、若しくは解くことのできない他の目標を参照すれば、目標Ｗも結局、解くことができない。
【０１３１】
「検索可能な目標」
推論ロジックによって目標の情報源へ送られた要求を利用してその推論ロジックによって検索可能な目標。例えば、その推論ロジックがその情報源から受け取った通信に応じて行った要求と対比される。
検索可能な目標は、要求により、ある作業空間に取り込むことができる目標である。協働エンジンＡがある目標を情報源から検索でき、かつ、応答としてその要求された目標を受け取れば、その目標は検索可能である。
【０１３２】
「部分的な結果」
ある結果に対する要求に関連する、１以上の目標の集合。それらは、その要求を部分的には解くことができるが、それらだけでは、その要求を解くには不十分である。
部分的な結果に含まれる目標の少なくとも一つは、検索不可能な目標である。部分的な結果に含まれる検索不可能な目標は、他の目標の処理結果であるので、如何なる知識ベースからも検索できない。（部分的な結果の中の検索不可能な目標はまた、静的な記憶装置から検索されるものというよりは、他の既知の目標から動的に生成される「動的な」目標として記述可能である。又は、知識ベースに維持された先行技術による目標とは異なり、必要に応じて生成される「一時的な」目標である。）
これは、以下のことを意味する。
【０１３３】
c)そのような検索不可能な目標は、如何なる知識ベースにも物理的には存在しない。目標Ｘは如何なる知識ベースにも存在しないので、協働エンジンＡによる「私に目標Ｘを送れ」という要求はそのような目標をもたらすことはできない（実際、その目標は如何なる知識ベースにも存在しないので、その検索に利用可能な識別子「Ｘ」が存在しない）。
d)そのような検索不可能な目標は、単一の要求によって個別に検索することはできない。協働エンジンＡは「Ｘを解く目標を全て送れ」という要求を送っても良い。この要求に対する応答は「複数の目標の集合」であり、単一の目標ではない。
e)そのような検索不可能な目標は、「特定の要求」という状況でのみ計算可能である。もし、応答側のエンジンが「Ｘを解く目標を全て送れ」という要求に応じたならば、その結果は、対応する部分的な結果に含まれる目標の集合と同じではないだろう。その部分的な結果は実質上、ある特定の要求に対する特定の値の集合に照らして上記の要求の結果を求め、上記の目標を処理することで構成されるだろう。
f)それ故、部分的な結果の目標の検索要求は「目標」に対する要求ではなく、「結果」に対する要求である。例えば、推論エンジンＡは「A＝1、B＝2、C＝3のときにＸを『解くことができる』目標を全て送れ」という要求を送っても良い。第一に、これは、ある目標に対する単なる「要求」ではなく、目標の「交換」である。第二に、返されるのは「結果」であり、目標ではない。それは、与えられた目標の処理にある要求を利用した結果であり、部分的な、又は最終的な結果を生成した結果である。それらの動作は、送信側の協働エンジンの保護された動作である。
【図面の簡単な説明】
【０１３４】
【図１】先行技術による推論ロジック
【図２】本発明による推論ロジックの基本的な例
【図３】本発明による複数グループ間での処理を行う、相互に接続された二つの協働デバイスを含む分散型データ処理システムのブロック図
【図４】図3の各協働デバイスで実行される推論ロジックを示すフローチャート
【図５】図4のロジックの記述に利用される規則と事実との一例
【図６】図4のロジックの記述に利用される規則と事実との他の例
【図７】図4のロジックの記述に利用される規則と事実との更に他の例
【図８】複数の協働デバイスが本発明による複数グループ間での処理を行う、分散型データ処理システムの図
【図１】
2008517387.tif 000004
【図２】
2008517387.tif 000005
【図３】
2008517387.tif 000006
【図４】
2008517387.tif 000007
【図５】
2008517387.tif 000008
【図６】
2008517387.tif 000009
【図７】
2008517387.tif 000010
【図８】
2008517387.tif 000011
【国際調査報告】
2008517387.tif 000012
2008517387.tif 000013