(57)【要約】      （修正有）【課題】分散型タスクを実行する。【解決手段】分散ネットワーク（３２）のノードからノードに移動する能力を有するノウボット・プログラムを処理するための分散ネットワーク（３２）に用いられる方法。この方法において、各ノードのノウボット操作環境がノウボット・プログラムにとって有用なサービス・ファシリティを提供する。ノウボット・プログラムがサービス・ファシリティを使用することを可能にする一方、ノウボット・プログラムによるノウボット操作環境のファシリティへの直接のアクセスを許可しないスーパーバイザプロセスがノウボット操作環境において動作する。【選択図】図２
2007109246.tif 000002
【特許請求の範囲】
【請求項１】
分散処理システムの一つのノードにおいて実行されるノウボット・プログラムを処理するための分散処理システムに用いられる方法であり、その実行の殆どいかなる時点で中断されることが可能であり、更なる実行のために分散処理システムの他のノードに移動することが可能な方法であって、
その一つのノードにおいて、ノウボット・プログラムの現在の実行状態を捕捉し、
ノウボット・プログラムの捕捉された状態及びプログラム・コードを他のノードに配信し、
他のノードにおいて、捕捉された状態及びプログラム・コードに基づいて中断した点から実行を継続することから成るを特徴とする方法。
【請求項２】
捕捉された状態及びプログラム・コードとともに、ノウボット・プログラムの実行中に伝送されたファイルシステム又は他の情報を配信することを特徴とする請求項１に記載の方法。
【請求項３】
伝送されたファイルシステム又は他の情報内の情報は、ノウボット・プログラムを実行することなしにアクセス可能であることを特徴とする請求項２に記載の方法。
【請求項４】
捕捉ステップは言語インタープリタのコーティング方法を使用すること特徴とする請求項１に記載の方法。
【請求項５】
分散処理システムにおいて動作しているノウボット・プログラム、ノウボット・サービスステーション、エクステンション、又は他のアプリケーションとの通信を可能化する方法であって、
ノウボット・プログラム、ノウボット・サービスステーション、エクステンション、及び他のアプリケーションの各々が、それが提供するサービスを識別可能にするとともに、それらの各々がそれが必要とするサービスを見つけることを可能にするコネクタ・メカニズムを提供し、
ノウボット・プログラムがコネクタ・メカニズムに関連するコネクタオブジェクトを介してノウボット・サービスステーションと通信することを可能化することから成るを特徴とする方法。
【請求項６】
コネクタオブジェクトは分散した環境において動作しているスーパーバイザプロセスによって提供され、コネクタオブジェクトは必要とされたサービスに対する制御されないアクセスを防止することを特徴とする請求項５に記載の方法。
【請求項７】
コネクタ・メカニズムは、コネクタ・ブローカー及びコネクタ・マネージャを含むことを特徴とする請求項５の方法。
【請求項８】
コネクタオブジェクトは、型付きデータであることを特徴とする請求項５の方法。
【請求項９】
分散処理システム内の２つの無関係なノウボット・プログラム、ノウボット・サービスステーション、エクステンション、又は他のアプリケーション間の交渉を可能にする方法であって、
分散処理システムのノードの操作環境において、２つのノウボット・プログラム、ノウボット・サービスステーション、エクステンション、又は他のアプリケーションのうちの一方からの、他のノウボット・プログラム、ノウボット・サービスステーション、エクステンション、又は他のアプリケーションに提供されるやりとり関する情報を受け取り、
そのノードの操作環境において、２つのノウボット・プログラム、ノウボット・サービスステーション、エクステンション、又は他のアプリケーションの他方から、ノウボット・プログラム、ノウボット・サービスステーション、エクステンション、他のアプリケーションの他方が関与したいと考えるやりとりに関する情報を受け取り、
他のノウボット・プログラム、ノウボット・サービスステーション、エクステンション、又は他のアプリケーションに対して一方のノウボット・プログラム、ノウボット・サービスステーション、エクステンション、又は他のアプリケーションについて通知し、 ２つのノウボット・プログラム、ノウボット・サービスステーション、エクステンション、又は他のアプリケーションがやりとりに関して通信することを可能にすることから成ることを特徴とする方法。
【請求項１０】
第３のノウボット・プログラムが２つのノウボット・プログラムから情報を受け取ることを特徴とする請求項９に記載の方法。
【請求項１１】
分散処理システムの操作環境で完全にサポートされない言語でプログラムされるノウボット・プログラムについてその操作環境によって動作を可能にするための方法であって、 ノウボット・プログラムに、ノウボット・プログラムの完全なサポートのために必要な操作環境の特徴を識別する標識を付け、
操作環境において、その操作環境が識別された特徴の全てをサポートしているか否か決定するためにノウボット・プログラムの標識を調べ、
全ての識別された特徴がサポートされているか否かに基づいて、動作を行うことから成ることを特徴とする方法。
【請求項１２】
その動作は、処理のために他の操作環境にノウボット・プログラムを送出することから成ることを特徴とする請求項１１に記載の方法。
【請求項１３】
その動作は、ノウボット・プログラムからプログラムではない特定のデータを取り出すことから成ることを特徴とする請求項１１に記載の方法。
【請求項１４】
分散処理システムのノードで提供されている操作環境を実行しているノウボット・プログラムとの通信を補助する方法であって、
交換される情報の種類を一意に識別する名前空間を保持し、
交換される情報の種類を識別するために名前空間中の名前を使用することから成ることを特徴とする方法。
【請求項１５】
ノウボット・プログラムは、交換される情報の種類の名前を含むインタフェースを登録することを特徴とする請求項１４に記載の方法。
【請求項１６】
分散処理システムのノードで提供される操作環境において動作しているノウボット・プログラムに関連した動作の実行タイミングを制御する方法であって、
操作環境のトリガ・プロトコルを提供し、
ノウボット・プログラムが操作環境での状態を登録することを可能にし、
その状態の発生時に操作環境が動作の実行を起こすようにさせることから成ることを特徴とする制御方法。
【請求項１７】
各々が少なくともその状態及び動作を特定するトリガ・ステートメントがトリガ・プロトコルにより定義されることを請求項１６に記載の方法。
【請求項１８】
操作環境は、状態を登録した全てのノウボット・プログラムのための登録したトリガ・ステートメントの表を保持していることを特徴とする請求項１６に記載の方法。
【請求項１９】
実行は、ノウボット・プログラムに含まれるプログラムによって開始されることを特徴とする請求項１６に記載の方法。
【請求項２０】
ノウボット・プログラム及び分散処理システムのノードで提供される操作環境において動作しているアプリケーション間の相互作用を制御する方法であって、
ノウボット・プログラムに対して信頼されたサービスを提供する、操作環境の信頼される部分を定義し、
操作環境において動作しているアプリケーションの部分が信頼されるものとして登録されることを要求し、
登録が要求されたアプリケーションの部分が登録されている場合にのみ、ノウボット・プログラムと操作環境で動作しているアプリケーションとの間の操作環境を介した間接的な相互作用を許可することから成るを特徴とする制御方法。
【請求項２１】
ノウボット・プログラムがエクステンションを使用しなければ安全でない機能を含む定義された機能をそのエクステンションを使用して実行することを可能にする方法であって、
操作環境及びノウボット・プログラムが動作する通訳型言語に対して安全なエクステンションをコード化し、
エクステンションを使用することによりノウボット・プログラムが定義された機能を実行することを許可することから成ることを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、分散型タスク実行に関する。
【発明の詳細な説明】
【０００２】
用語集
便宜のために、本文において使用した特定の用語の説明を補足する短い用語集を以下に記載した。
【０００３】
「ネットワーク」は、一組のコンピュータ及びそれらを相互接続する通信媒体である。
【０００４】
「ネットワーク参加者」は、タスクの実行を必要とし得る、分散ネットワークにアクセスする主体（エンティティ）である。
【０００５】
「パケット」は、分散処理システムにおいてデータを運ぶための基本的なコンテナであり、通常、ルーティングにおいて使用されるアドレス指定情報を含む。
【０００６】
「プロトコル」は、分散処理システムの各要素が互いに通信するために従わなければならない、構造、フォーマット、手順及び／又は機能を定義する一組の一般的に承認された規則である。
【０００７】
「リソース」は、分散処理システム内のロケーションでアクセス可能な情報又はサービスである。
【０００８】
「タスク」は、一つ以上のリソースを使用することで実行され得る何かである。
【０００９】
「ディジタル・オブジェクト」は、一般に、その「ハンドル」と呼ばれる付随したユニークな識別子を含む（ほぼいかなる種類の情報のデジタル表現も含む）
のディジット列を意味する。
【００１０】
「レポジトリ」は、ディジタル・オブジェクトを通常長期的に記憶し、それらを適用可能な約定及び条件に応じてネットワークを通してアクセス可能にするリソースである。
【００１１】
「データベース」は、質問を分析して答えを供給するように構成された、組織化された情報のかたまりである。ディジタル・オブジェクトは、データベース又はデータベースの要素をそれ自身に含むことが可能である。
【００１２】
「権利保持者」は、ディジタル・オブジェクトの法律的に実施可能な「権利」
を有する人もしくは主体である。
【００１３】
「分散処理システム」は、ノウボット・システム及びノウボット・システムの外部にある構成要素、例えばデータを紙上にデジタル表現したものを含めて、磁気ディスケット、光ディスク及び他の大規模な記憶媒体等を含むことが可能である。
【００１４】
「ノウボット・プログラム（ＫＰ）」は実行可能なコンピュータープログラムであって、１つのロケーションから他のロケーションまで移動可能なものであっても良い。それは、タスクを実行する一連のステップを定義し、他のデータも含む「命令シーケンス」を含む。
【００１５】
「クーリエ」は分散処理システム内を移動しているノウボット・プログラムの例を称するために時おり使用される。
【００１６】
「ノウボット・システム」は、ノウボット・プログラムを作成し、格納し、コンピュータ間を移動させ、プログラムを実行し、移動し、あて先コンピュータ又はネットワークで必要とされるように結果を格納するシステム（プログラムを含む）である。
【００１７】
「ノウボット・サービス局（ＫＳＳ）」は、ネットワーク上のロケーションで作動しているソフトウェア及び／又はハードウェアであり、ノウボット・プログラムを生成し、格納し、実行し、削除する等の動作が可能である。
【００１８】
「ノウボット・オペレーティング・システム（ＫＯＳ）」は、ノウボット・サービス局の主要なソフトウェアコンポーネントから成る。
【００１９】
「ノウボット操作環境（ＫＯＥ）」は、ノウボット・プログラムを取り扱うための媒体であって、一群のノウボット・サービス局から成る。ノウボット・システムが、操作環境を提供する。
【００２０】
「ノウボット・フレームワーク」は、タスク実行のためのカレンシー（ノウボット・プログラム）及びプログラムを取り扱うための媒体（ノウボット・サービス環境）を定義する概念上のモデルである。
【００２１】
「メタデータ」はディジタル・オブジェクトに関連する情報であり、オブジェクトに含まれるか又はどこか他に格納され得る。
【００２２】
「キー・メタデータ」は、ディジタル・オブジェクトに関連する情報であって、オブジェクト内に含まれるものである。
【００２３】
「プロスペクティブ（将来の）ノウボット・プログラム」は、ノウボット操作環境の外部のソースからのノウボット・サービス局によって受信されるノウボット・プログラムである。
【００２４】
「エクステンション・メカニズム」は、ノウボット・サービス局にエクステンションを付加することを可能にするメカニズムである。
【００２５】
「バスティオン（要塞）オブジェクト」は、ノウボットオペレーティング・システムによってつくられるオブジェクトであり、システムオブジェクトに対して制限されたインタフェースを設定する。
【００２６】
はじめに
最も基礎的な意味において、本発明はコンピュータ間でプログラムを生成し、格納し、移動させ、プログラムを実行し、移動し、あて先コンピュータで必要とされるように結果を、格納するシステム（これをノウボット・システムと称する）に関する。コンピュータの大部分又は全ては「オンライン」であり、一般的なコンピュータネットワーク環境の一部を構成するけれども、本概念はまた、例えばデータの紙上のデジタル表現（例えばバーコード）を含む、磁気ディスケット、光ディスク及び他の大規模な記憶媒体等の他のメディアを介してのプログラムのオフライン動作にも適用される。さらに、システムのコンピュータは、ネットワークにおいて常に同時に接続される必要はなく、かかる連結性は、時々変移し得る。「システム」という名称は一般的に、これらのプログラムが生成され、管理される方法、それらの相互作用の方法、それらの格納された情報との相互に作用の方法、システムの一部であるプログラム及びコンピュータの定義の範囲外に存在すると考えられる人々及びプログラムを含む外部のシステムとの相互作用の方法等に関して、いくらかの体系的な規則性があることを意味している。
【００２７】
説明のために、システムの部分或いは全体に言及するときに「ノウボット・システム」（ノウボットは、ナショナル・リサーチ・イニシアティブ（Ｎａｔｉｏｎａｌ Ｒｅｓｅａｒｃｈ Ｉｎｉｔｉａｔｉｖｅｓ）のための会社の登録商標である）という用語をしばしば使用する。ノウボット（Ｋｎｏｗｂｏｔ（Ｒ））システムはシステムの一部である構成要素と、システム外にあって、システムによって画定される方法によってのみ相互作用する構成要素とを区別することを可能にする明確な境界を有する。ノウボット・システムの内部のものと外部のものを合わせて分散システムと呼ぶことができる。システム内部にあると考えられる部分は、規定の方法によってのみ他の部分と相互作用する。適切な挙動を定義する規則は、要するに、構成要素が常に適切に機能しているシステムの構成要素とみなされるためにどのようにして生成され、どのように動作することができるかを決定する仕様である。
【００２８】
ノウボット・システムは、主としてソフトウェア・システムであり、そのコンポーネントは規定の方法で作動するプログラムである。ソフトウェアは、コンピュータに基づく（ハードウェア）環境で動作し、しばしばハードウェア上のリソースを生成し、割り当て、管理する基礎的なプログラムであるソフトウェアベースのオペレーティング・システムと協働して動作する。ノウボット・システムの基本的デザインは、システムが動作するコンピュータがオペレーティング・システムを有しており、オペレーティング・システムがその上で動作しているノウボット・システムによって必要とされる機能を提供するという仮定に基づいている。データ通信（ネットワーク）環境への基幹的なコンピュータの組み込みをサポートし、オペレーティング・システムの全体的な制御下で並列に動作する多数のプログラムを「時分割」することが可能である限り、いかなるオペレーティング・システムも適当であると考えられる。加えて、コンピュータ間を移動可能なプログラム（ノウボット・プログラム又はＫＰｓと呼ばれる）は、それらが意図された通りに実行を開始し、又は再開することができるために充分な情報を含んでおり、コンピュータは必要なサポート環境（例えばインタープリタ、スケジューラ及び記憶装置）を提供する。ノウボット・システムは、広範な種類のハードウェア及びオペレーティング・システム上に実現可能である。
【００２９】
また、ノウボット・システムの動作の規則に従って情報が１つのコンピュータから他のコンピュータに時々通過し得るために、ノウボット・システムの部分となるコンピュータは少なくとも間欠的に共通の通信ネットワークに接続しているものと仮定する。
【００３０】
ノウボット・システムは、共通の操作環境に多数の多様かつ別個のシステム及びリソースを結びつけ、それらの間の相互連結システムとして動作する。１つのシステム又はそのリソースに関する情報は、中間のメカニズム（ノウボット・システム）を介して他のシステムに通知することができる。ノウボット・システムは、参加しているシステム及びリソースとは別個にそれ自身でタスクが実行されるようにすることができる。ノウボット・システムは、また、これら参加しているシステム及びリソースが与えられたタスクを実行することを容易化することができる。
【００３１】
一群のソフトウェア、ハードウェア及び通信ファシリティをノウボット・システムとして機能するためにどのように構成することができるかについて、一体としてみたときに述べている各概念について以下の部分に論ずる。ほぼ全ての概念が、一組の規定の規則に従って動くソフトウェア・アーティファクトに基づいている。これらのアーティフアクトは、後のアクセスのために「レポジトリ」に離れて格納される「実行プログラム」及び「ディジタル・オブジェクト」を含む。一般的に言って、本発明の概念は特定のハードウェア、通信ネットワーク又はオペレーティング・システムの特性よりはむしろソフトウェア・アーティファクトの定義及び挙動に根ざしている。しかしながら、必用な場合、ソフトウェアの一部分又は全ては、超大規模集積回路技術によって許容され得る限り、特定の例においては集積回路（例えば半導体チップ）のシステム交換されても良い。
【００３２】
ノウボット・プログラムは、与えられたマシンにおいて実行される基本ソフトウェア要素である。ノウボット・プログラムの例が、クーリエであり、システム内でそれが一つのコンピュータから他のコンピュータに移動するとき、或いは外界との入出力を行うときにノウボット・プログラムが取る形式である。ノウボット・プログラムは、種々の方法で表現され得る情報（データ）を含む（運ぶ）ことができる。ノウボット・システムにおいては、ノウボット・プログラムの発着を取扱うため、ノウボット・プログラム間及び他のノウボット・プログラムとの情報の交換のため、そして、「レポジトリ」と呼ばれている情報アクセス・サブシステムを含むノウボット・システムの他の部分とのノウボット・プログラムの相互作用、そして、人間を含む外部のサブシステムとの視認可能、聴取可能、或いは触知可能な表現による相互作用のための準備が成されている。
【００３３】
ノウボット・プログラムの重要な特徴は、権利保持者に代わってデータを保護し、約定及び条件に従ってそのアプリケーションを制御し、データを解釈し、視認可能、聴取可能、或いは触知可能な種々の方法、であり表現の選択に影響する人間の反応を可能化する方法でそれを表現する能力である。
【００３４】
ノウボット・システムがソフトウェア・ベースのオープン・アーキテクチャ相互連結構造を有する故、インターネットとして知られる他の非常に成功したソフトウェア・ベースのオープン・アーキテクチャ相互連結システムを論議することは有用である。インターネットは、何百万ものコンピュータ及び何万ものネットワークを結びつけ急速に発展しつつある、グローバルな「ネットワークのネットワーク」である。インターネットは、「パケット交換」環境によってコンピュータをお互いにリンクするための一組の最小限の要件により、また、インターネットの一部であるコンピュータ間で、どのように、いついかなる方法で情報を交換するかを統括する一定のフォーマット及び手続きの規則（「プロトコル」）を観測することを通して実現されている。
【００３５】
図１に示すように、インターネット１０は事実上世界のどこに位置するコンピュータ・ユーザに対しても通信フレームワーク１２を提供する。いかなるコンピュータ１４ａも、共通に理解されているパケット・プロトコル１６及び共通に認められたアドレッシング・スキーム１８を観測することによって他のどのユーザ１４ｂにもデジタル情報を送ることができる。パケット・プロトコルは、受け取り人のアドレスを含むデジタル情報を運ぶパケットの構造及び取り扱いに対する最小限の規則を設定する。アドレス指定スキームは、二重アドレスの防止を含むアドレス割り当ての最小の規則を設定する。パケット・プロトコル及びアドレス指定スキームに従うコンピュータは、パケットがその宛て先に着信すること及び受け取り人がパケットで運ばれるデジタル情報にアクセス可能であることを比較的確信し得る。他方、インターネット・フレームワークは、パケットをフォーマットし、送信し、受信し、分解し、或いは組み立てるために使用される物理的なハードウェア/ソフトウェア・ネットワークのコンポーネント２０を定義しようとすることは殆ど全くせず、その代わりにユーザ、ユーザのグループ及びベンダにそれらの事項を任せている。このため、実装方法及び製品についてはオープンかつ分散した市場をもたらす結果となった。
【００３６】
パケット・プロトコルのハードウェア／ソフトウェアの要件は最小限であり、本質的にいかなるデジタル情報もそれらで運ばれることができるため、紙の小切手が経済的価値の交換のための法貨を提供するのと同様に、それらは分散型ネットワークにおけるデジタル情報の交換のための「カレンシー（通貨）」２２を提供している。連邦準備銀行手形交換所の明確な通過規定が小切手交換の普遍的な手段を提供するのと同様に、インターネット・フレームワークの明確なアドレス指定スキーム及び他の特徴により、パケットの交換の普遍的手段２４が提供されている。しかし、インターネット・フレームワークは、手形交換所システムが（用紙の寸法及び他の小切手の様式の要件が満たされる限り）どのようにして小切手がつくられ、配達され、受領され、使用されるかについては制限していないのと同様に、ユーザがパケットを生成し、送信し、受信し、使用する物理的な方法について何も制限を設けていない。
【００３７】
広く分散したネットワーク（すなわちフレームワーク）上でのデジタル情報の交換のための媒体及びカレンシーを物理的な実装部（図１上のやや離れた表現１２及び２０によって示唆される）から切断するという概念は強力なものであり、その結果、実装部の中央制御の必要なしにインターネットに個人及び非商業的及び商業的企業が参加して利益を得ることが可能になり、インターネットの大成功に至った。同時に、インターネット・コミュニティは、一般に認められたインターネット・フレームワークに具現される原則を高揚し、改善するために絶えず機能している。この機能を達成しているのは、その概念がどのようなソースからも生成されても良く、テストされ、広く役に立つとわかる場合、最終的に認められたフレームワークの一部になるような、分散したプロセスである。この意味で、提案された原則がフレームワークの一部になって、広く採用されるかどうかは主としてその品質によって一般的に決定される。
【００３８】
これが実施されているインターネット・フレームワーク及び物理的なネットワークの他の強力な特徴は、通信及び他の物理的なネットワークの他のフレームワークと簡単に共存し得るその能力である。インターネットは、現在多くの異なる型のネットワーク及び通信メディアを収容しており、原則として、殆どいかなるネットワーク及び通信メディアも、インターネットの一部になることができる。
最後に、インターネット・フレームワークは、非常に規模拡大性が高く、それによって全世界のユーザ数が比較的簡単に急増する結果となった。
【００３９】
発明の概要
一つの特徴によれば、本発明は、一般的に言って、分散処理システムのノードからノードに移動する能力を有するノウボット・プログラムを処理するための分散処理システムにおいて用いる方法を特徴としている。この方法においては、各々のノードの操作環境が、ノウボット・プログラムにとって有用なサービスファシリティを提供する。また、操作環境においては、ノウボット・プログラムがサービスファシリティを使用することを可能にする一方、ノウボット・プログラムによる操作環境のファシリティへの直接のアクセスを許さないスーパーバイザプロセスが動作している。
【００４０】
本発明の実施例は、以下の特徴のうちの少なくとも１つを含むことができる。
バスティオン・オブジェクトは無制限の環境において無制限の環境を保護するために生成され、バスティオン・オブジェクトはノウボット・プログラムが動作している制限された環境に渡される。バスティオン・オブジェクトが、ノウボット・プログラムが安全な方法でサービスファシリティにアクセスするためのインタフェースを提供し、そのインターフェースはサービスファシリティが無制限の環境において提供するインタフェースと実質的に同一のインタフェースである。バスティオン・オブジェクトは、サービスファシリティに対してノウボット・プログラムが行う全ての方法コールの型チェックを実行する。
【００４１】
他の特徴によれば、本発明は、一般的に言って、それが分散処理システムの一つのノードにおいて実行され、その実行の殆どいかなる時点でも中断されることができて、更なる実行のために分散処理システムの他のノードに移動し得るノウボット・プログラムを処理するための分散処理システムに用いられる方法を特徴とする。１つのノードにおいて、ノウボット・プログラムの現在の実行状態が捕捉され、ノウボット・プログラムの捕捉された状態及びプログラム・コードは、他のノードに提供される。ノウボット・プログラムの実行は、他のノードにおいて捕捉された状態及びプログラム・コードに基づいて中断した点から続行される。
【００４２】
本発明の実施例は、以下の特徴のうちの少なくとも１つを含むことができる。捕捉された状態及びプログラム・コードと共に情報の伝送されたファイルシステム又はノウボット・プログラムの実行中につくられる他の情報が提供される。伝送されたファイルシステム又は他の情報内の情報は、ノウボット・プログラムを実行することなしにアクセス可能である。捕捉ステップは言語インタープリタのコード化体系を使用することから成っている。
【００４３】
他の特徴によれば、本発明は、一般的に言って、分散処理システム、ノウボット・サービスステーション、エクステンション又は他のアプリケーションにおいて動作しているノウボット・プログラムとの通信を可能にする方法を特徴とする。各ノウボット・プログラム、ノウボット・サービスステーション、エクステンション及び他のアプリケーションがそれが提供するサービスを識別し、それらの各々がそれが必要とするサービスを見つけることを可能にするためのコネクタ・メカニズムが、提供されている。ノウボット・プログラムは、コネクタ・メカニズムと関連したコネクタオブジェクトを介してノウボット・サービスステーションと通信することが可能に成されている。
【００４４】
本発明の実施例は、以下の特徴のうちの少なくとも１つを含むことができる。
コネクタオブジェクトは分散した環境において動作しているスーパーバイザプロセスによって提供され、コネクタオブジェクトは必要とされるサービスへの制御されないアクセスを防止する。コネクタ・メカニズムは、コネクタ・ブローカー及びコネクタ・マネージャを含む。コネクタオブジェクトは、型付きデータである。
【００４５】
他の特徴によれば、本発明は、一般的に言って分散処理システムにおける２つの無関係なノウボット・プログラム、ノウボット・サービスステーション、エクステンション又は他のアプリケーション間の交渉を可能にする方法を特徴とする。分散処理システムのノードの操作環境において、他のノウボット・プログラム、ノウボット・サービスステーション、エクステンション又は他のアプリケーションに提供される処理に関しては、情報は２つのノウボット・プログラム、ノウボット・サービスステーション、エクステンション又は他のアプリケーションのうちの一方から受け取る。ノードの操作環境において、２つのノウボット・プログラム、ノウボット・サービスステーション、エクステンション及び他のアプリケーションの他方が関係したい処理に関しては、情報は他方のノウボット・プログラム、ノウボット・サービスステーション、エクステンション又は他のアプリケーションから受け取る。他方のノウボット・プログラム、ノウボット・サービスステーション、エクステンション又は他のアプリケーションは、一方のノウボット・プログラム、ノウボット・サービスステーション、エクステンション又は他のアプリケーションについて通知される。その後、２つのノウボット・プログラム、ノウボット・サービスステーション、エクステンション又は他のアプリケーションは、処理に関する通信が可能になる。本発明の実装において、第３のノウボット・プログラムが２つのノウボット・プログラムから情報を受け取る。
【００４６】
他の特徴によれば、本発明は、一般的に言って、操作環境によって完全にサポートされない言語でプログラムされたノウボット・プログラムについて分散処理システムの操作環境による動作を可能にする方法を特徴とする。ノウボット・プログラムには、ノウボット・プログラムの完全なサポートに要求される操作環境の特徴を識別するための標識（ラベル）が付加される。操作環境は、操作環境が識別された特徴の全てをサポートするか否かを判別するためにノウボット・プログラムの標識を調べる。全ての識別された特徴がサポートされているか否かに基づいて動作が行われる。
【００４７】
本発明の実施例は、以下の特徴のうちの１つ以上を含むことができる。動作は、処理のための他の操作環境にノウボット・プログラムを送出することを含む。
又は、動作はプログラムではない具体的なデータをノウボット・プログラムから取り出すことを含む。
【００４８】
他の特徴によれば、本発明は、一般的に言って、分散処理システムのノードで提供される操作環境において、実行されるノウボット・プログラムとの通信を補助する方法を特徴とする。交換される情報の種類を一意に識別する名前空間が維持される。名前空間において、名前は、交換される情報の種類を識別するために使われる。
【００４９】
本発明の実施例は、以下の特徴のうちの１つ以上を含むことが可能である。ノウボット・プログラムは、交換されるべき情報の種類の名前を含むインタフェースを登録する。
【００５０】
他の特徴によれば、本発明は、一般的に言って、分散処理システムのノードで提供される操作環境において動作しているノウボット・プログラムに関連する動作の実行のタイミングを制御する方法を特徴とする。トリガ・プロトコルが、操作環境において提供される。ノウボット・プログラムは、操作環境にある条件（状態）を登録することが可能である。操作環境は、その状態が発生したときに動作の実行を起こするようになされている。
【００５１】
本発明の実施例は、以下の特徴の１つ以上を含むことが可能である。トリガ・プロトコルは、その各々が少なくとも条件及び動作を識別するトリガ文を定義する。操作環境は、条件を登録した全てのノウボット・プログラムのための登録したトリガ表現の表を保持している。ノウボット・プログラムに含まれるプログラムによって実行が起こされる。
【００５２】
他の特徴によれば、本発明は、一般的に言って、ノウボット・プログラム及び分散処理システムのノードで提供される操作環境において動作しているアプリケーション間の相互作用を制御する方法を特徴とする。操作環境の信頼された部分が定義され、ノウボット・プログラムに対する信頼されたサービスを提供する。操作環境において動作しているアプリケーションの部分は、信頼されるものとして登録されることが要求される。登録されることが要求されるアプリケーションの部分が登録されている場合にのみ、ノウボット・プログラム及び操作環境において動作しているアプリケーション間の、操作環境を介した間接的な相互作用が許可される。
【００５３】
他の特徴によれば、本発明は、一般的に言って、ノウボット・プログラムが、エクステンションの使用によって、そうでなければ安全でない機能を含む定義された機能を実行することを可能にする方法を特徴とする。安全なエクステンションは、操作環境及びその下でノウボット・プログラムが動作する通訳言語にコード化される。ノウボット・プログラムは、エクステンションを使用することによって定義される機能を実行することが可能になされている。これは、単に請求項の忠実な言い換えとなるであろう。
【００５４】
本発明の他の効果及び特徴は、以下の説明及び請求項から明らかになる。
【００５５】
好ましい実施例の説明
図２に示すように、本発明においては、新しく、より強力なフレームワーク（ノウボット(Knowbot)・フレームワーク２８と呼ばれる）は、単にデジタル情報を伝達する（インターネット・フレームワークの場合のような）ためだけではなく、分散型システム３２（例えば、インターネット又は他のネットワーク）で利用可能なリソースを用いてネットワーク参加者３０ａ、３０ｂに代わってタスクをなすためにも創られる。我々は、用語「ネットワーク参加者」に、ネットワーク内のコンピュータ及び他のハードウェアやソフトウェアのみならず、スタンドアローンのパソコンを有する個人及び組織を含め、タスクがなされることが要求されるいかなる主体（エンティティ）をも含める。「タスク」は、ネットワーク上のリソースによってなされ得る何れをも意味する。タスクは広範囲にわたる複雑さを有し、通常、デジタル情報を含む単純なインターネット・パケットの配信実行による単なるデジタル情報の通信以上のことを含む。特に、タスクはしばしば、そのタスクがなされることが要求される主体の位置（ロケーション）及びリモート位置でとられるプロセス・ステップを含む。「リソース」により、我々は、タスクの実行に寄与し得るネットワークが利用可能ないかなるものをも意味し、これには、コンピュータ・ソフトウェア、格納されたデジタル・オブジェクト及び多種多様なサービスが含まれてもよい。
【００５６】
ノウボット・フレームワークは、なされる如何なる任意の複雑さのタスクを有する「カレンシー（通貨）」、及びなされるタスクの一部としてのカレンシーを扱う「媒体」を規定する。このカレンシーは、ノウボット・プログラムと呼ばれる。ノウボット・プログラムは、参加者に代わって、なされるべきタスクの実行をアシストするネットワーク参加者の移動使節である。このタスクは、ユーザのシステムにおいてローカルに実行されるか、又は他のシステム、及び他のローカル及び／又はリモート位置のリソースとの対話処理を含む。ノウボット・プログラムを取り扱う媒体は分散ノウボット動作環境又は単にノウボット動作環境と呼ばれる。ノウボット動作環境は、無数の及び無限の多様性の、我々が呼ぶところの、ネットワーク上で動作するノウボット・サービス局（ソフトウェア及び／又はハードウェア）として分散され得る。これらの局はノウボット・プログラムを生成、格納、削除し、あるいは、ノウボット・プログラム自身によって、又はそのような行動を許可することが認可されたユーザによって確定された全ての可能な操作を実行する。ノウボット・フレームワークは、ノウボット・プログラム構造に対する規則３８（例えば、なされるべきタスクに関連したいくつかの情報をプログラムは含まなければならない）の最小セット、及びノウボット動作環境内で実行される機能に対する規則４０（例えば、通常のノウボット・サービス局は、ノウボット・プログラムを作り、送り、受け、モニターし、削除することが可能なこと）の最小セットを規定する。
【００５７】
我々はノウボット・プログラム及びサービス環境に関する特有の原理について更に後述するが、一般に、ノウボット・フレームワークの拡張がインターネット・フレームワークと同様に展開されることが考察される。すなわち、ハードウェア及びソフトウェアの実現に関する自由市場の力の組合せによって、及びフレームワーク原理に関するノウボット・ユーザのコミュニティ内のオープン・スタンダードな開発プロセスによってである。インターネット・フレームワークのように、ノウボット・フレームワークは、ネットワーク内でタスクをするための他の技術と自由に共存し、容易に拡張できるようになっている。
【００５８】
図３は、本質的に無限の数及び多様性の、ノウボット・サービス局５６ａ、５６ｂ、．．．．を介して、ノウボット・プログラム５４ａ、５４ｂ、．．．を取り扱う極めて多様な機能５２ａ、５２ｂ、．．．を備えたノウボット動作環境５０を、それぞれを分散ネットワーク上の実行ソフトウェア及びハードウェアの形で示している。ノウボット・サービス局の例は、個々のユーザのＰＣ又はラップトップ（サービス局５６ａ）上、デジタル・オブジェクトの供給者である参加者のデータベース・サーバ又はレポジトリ（サービス局５６ｅ）上、スマート・カードあるいは他のパーソナル・デジタル装置や人工物（アーティファクト）上、又は電話会社の中央局交換機（サービス局５６ｂ）上の実行ソフトウェアを含む。
【００５９】
ノウボット動作環境によって提供される最も基本的な機能のいくつかは、どのように情報が集められ、構成され、エンド・ユーザ参加者に提示されるか、及び実行されるタスクへの要求がどのようにエンド・ユーザ参加者から引き出されるかを含む集約及び提示サービス、どのように問合せがレポジトリ参加者及び他のリソースに提示されるか、どのように結果が整理されこれらのリソースに提示されるかを含む検索及び統合サービス、ノウボット・プログラム及びノウボット・サービス局の真正さ及び性能を確認し、デジタル・オブジェクトの権利が約定及び条件に従いこれらのプログラム及びサービス局によって有効に保護されることを確認する保証／保護サービスを含む。これらのサービスは、更に詳細に以下に議論される。
【００６０】
図３に示すように、ＫＳＳはノウボット・プログラム（ＫＰ）がタスクを実行することを可能にする基盤である。また、ＫＳＳは非公式にはホストと称される。
【００６１】
ノウボット・サービス局
ノウボット・サービス局は、オペレーティングシステムに類似しているが、参加者が任意のプログラム及びファイルを作り、任意のプログラムを実行することを許さない。しかし、選択されたユーザには特別にシステム状態の柔軟性を与え、サービス局を管理しその性能をアップグレードすることを許す。一般に、サービス局は、参加者仕様及び／又はそれ自身の内部要求に応答してノウボット・プログラムを作成する。また、将来のノウボット・プログラムは、サービス局でないユーザのＰＣのような外部のソースから届き、ノウボット環境で用いることをサービス局によって認証されるかもしれない。また、将来のノウボット・プログラムは、ＣＤ−ＲＯＭのような外部媒体によって届けられるかもしれない。サービス局も他のサービス局から受け取ったノウボット・プログラムを処理し、それ自身の環境内にノウボット・プログラムを格納し管理する。
【００６２】
図４に示すように、各サービス局で実行される機能は、一般に、４つの主要なカテゴリに分類できる。すなわち、（ｉ）ノウボット・プログラムの作成、送信、受信、認証、実行、格納、モニター、削除を含むノウボット・プログラムの基本的な管理６０、（ii）参加者が実行タスクを定めるのを支援し、有用な形式及び時間に実行結果を提供する参加者６３との対話処理６２、（iii）リソースによって理解される形式及び時間での情報又は行動に対する要求を運び、その情報又は行動の結果を処理することを含む、実行されたタスクを得るリソース６５としての参加者との対話処理６４、及び（iv）他のサービス局６６との対話処理６６、及び適切で許される場合に外部の、おそらく信頼できない動作の限られたセットを可能にする、ノウボット・フレームワークの一部ではないハードウェア及びソフトウェアとの対話処理、である。
【００６３】
ノウボット・プログラム５４ｅないし５４ｐは、ノウボット動作環境下で様々なメカニズムによって、例えばインターネット・パケットで移送されて、ノウボット・サービス局からノウボット・サービス局へ通過できる。また、ノウボット・プログラム５４ｑないし５４ｔは、ある期間、所与のノウボット・サービス局に留まり、その意味においてホストのノウボット・サービス局はノウボット・プログラムのホテル及び／又は処理プラントとしてみなすことができる。
【００６４】
図５を参照すると、一般的なノウボット・サービス局の一般的な構造は、ノウボット・プログラム、及びＰＥＲＬ又はＰＹＴＨＯＮなど（これらに限定されないが）の言語で書かれたノウボット・プログラムを翻訳するノウボット・プログラム・インタープリタ６２の記憶装置６０を含む。コアのノウボット・オペレーティングシステム６８は、基本的なキーファンクション（後述する）、及び所定のインタフェースを提供してオペレーティングシステムと対話するアプリケーション・プログラムを容易に記述できるようにするノウボット・オペレーティングシステムのアプリケーション・プログラム・インタフェース（ＡＰＩ）６４を提供する。ノウボット・オペレーティングシステム・エクステンション機能（ＡＰＩ）６６はエクステンション７０とのインタフェースを提供する。このエクステンションは、自然言語処理などのオペレーティングシステムの基本機能を補うほとんど無制限に多様なサービス及び機能を含む。
【００６５】
簡単なノウボット・サービス局は、基本機能の小さなセットを実行できさえすればよく、ＶＬＳＩチップ上に、又はソフトウェア・プログラムの形で容易に実現することができる。他のより複雑なノウボット・サービス局は、ネットワーク上のそれらの位置、及び対話が期待される主体に対し適した様々な特殊な機能を有する。
【００６６】
最小限の基本的な機能性を有する単純なノウボット・サービス局に議論を変える。図１４に示すように、ノウボット・サービス局の核心は、サービス局内の活動を監督する一種のトラフィック警官及び状態ハンドラとして働く操作トランザクション・マネージャ７０である。トランザクション・マネージャは、ノウボット・プログラムが届くサービス局のノウボット・プログラム受信器７２、及びノウボット・プログラムが出て行くサービス局のノウボット・プログラム送信器７４と対話する。入力スケジューラ７６は、ノウボット・プログラムの到着をトレースし続け、適切な時間にサービス局において取り扱われることを確実ならしめる。出力スケジューラ７８は、同じようにサービス局から送られる予定のノウボット・プログラムをトレースし続け、それらがやがて送信されることを確実ならしめる。
【００６７】
外部ソースから届くノウポット・プログラムは、直接受信器へ行く。受信器は、アクセス制御を提供し、入って来るノウボット・プログラムが適切にサービス局に入るかどうか評価する。もしそうならば、プログラムを記憶装置８２に格納する。そうでなければ、プログラムを捨てるか、それに関していくつかの修正動作をする。例えば、サービス局と同一位置のリソースからローカルに生成されたノウボット・プログラムは、トランスレータ又は指定子により生成又は取り扱われ、更なる処置のためトランザクション・マネージャに渡される。トランザクション・マネージャは次の処理又は送信のため、ローカルに生成されたプログラムを記憶装置に入れるか、又は直接、直ぐに発信するために送信機に手渡す。
【００６８】
入力及び出力スケジューラは、ノウボット・プログラム記憶装置への入力に関して取る行動を確定する。行動には、プログラムに要求されたステップを直ちに、又はある時間の後、又は他の事象の発生の後に実行することを含まれてもよい。そのような処理ステップを実行する時間が来たとき、入力スケジューラはトランザクション・マネージャに通知する。プログラムを送信する時間が来たとき、出力スケジューラは送信器に通知する。
トランザクション・マネージャは、サービス局の全てのトランザクションを管理して、ステータスの定期点検を実行する。それは、進行中のトランザクションの情報を得続けて、ステータス及びエラー状態を他のサービス局に通知する（通知を提供する１つの方法は、他のサービス局に新しいノウボット・プログラムを送ることである）。トランザクション・マネージャはサービス局によって作成されたノウボット・プログラムに関する情報を維持し、適切なときにノウボット・プログラムを削除する。トランザクション・マネージャは他のサービス局で生じたノウボット・プログラムを削除する場合、通常他のサービス局にかかる動作を通知する。
【００６９】
トランザクション・マネージャは、インタープリタ８４の援助を呼出し、ノウボット・プログラムを実行する。これは、例えば、受信ノウボット・プログラムがローカルのユーザ、ローカルのレポジトリ、又は他のサイトを目的とするか否かを確定する場合に生ずる。インタープリタは、プログラムを「翻訳」し、どんな行動を取るべきかを確定する（例えば、ノウボット・プログラムを実行する）。ローカルなユーザを目的とする場合、翻訳の結果は次にユーザと通信する指定子に渡される。例えば、指定子は、どのような画像がスクリーンに現れるか、又は、ユーザに代わってどれくらいの数の所与のタイプの行動がなされるかなどの提示を扱う。この情報は、ノウボット・プログラムから導出される。
【００７０】
ローカルなレポジトリ８６を目的とする場合（例えば、そのプログラムにより表されるタスクがレポジトリ内のある情報にアクセスすることである場合）、翻訳されたノウボット・プログラムはどのレポジトリにアクセスするべきかを確定し、実行方法（例えば、連続的又は並列、細分性のレベル、如何に情報を整理、組み合わせるか等）を計画する。次に、プログラムとともにその翻訳の結果を、レポジトリと交信する一つ以上のトランスレータに渡す。トランスレータは、プログラムから表示される要求をローカルなレポジトリの言語に変換する。ローカル・レポジトリは、要求を直接実行することができる。他のサイトに適した場合には、トランザクション・マネージャはネットワークを介して意図するサイトに発信のため送信器に渡す。それは、通常は他のサービス局であるがレポジトリ、ゲートウェイ、又はノウボット動作環境の外部のリソースであってもよい。
【００７１】
レポジトリの検索結果は、それをフォーマットし、記憶装置８２に入れ、トランザクション・マネージャに通知するトランスレータに渡される。次に、トランザクション・マネージャは、終了したトランザクションに印をつけて、出力スケジューラ・モジュールにエントリする。
【００７２】
出力スケジューラは、様々な返送ポリシーを提供する。通常、その結果はプログラムの形で返され、その場合、送信器７４は出力スケジューラによって指示された時間及び方法でプログラムを送る。それに加えて、その結果は他の媒体と交信され（例えば、電子メール又はファイル転送）、又は配信のための適切な「マークアップ言語」により利用できるようにされる。マークアップ言語は、そのサブストラクチャを示す情報の自己記述形式を提供し、ダウンストリームでの他の翻訳が可能である。その結果は、ユーザに返されるか、記憶又は進行のために、指定された中間の位置に返される。
【００７３】
ＫＳＳの完全性が保証される場合のみ、ノウボット・プログラムの完全性は保証される。ＫＳＳの完全性を維持することは、銀行又は軍隊において作業の重大な一部として用いられるコンピュータなどのいかなる高いセキュリティのハードウェアの完全性を維持することと同様である。
【００７４】
ＫＯＳは、実際にＫＯＳの別の装置を実行させる多数の協働プロセスから成る。システム・ハードウェア及び低位のシステム・ソフトは、このＫＯＳアーキテクチャ（例えば、ＵＮＩＸ（登録商標）ワークステーション及びＵＮＩＸ（登録商標）オペレーティングシステム）を支える十分な力を有しなければならない。
【００７５】
ＫＯＳカーネル４６８（図５）と呼ばれる（ＵＮＩＸ（登録商標）カーネルとの混乱を防ぐため付言すると、単なる「カーネル」ではない）１つの指定されたプロセスがある。他のプロセス４３は、実行中のＫＰに割り当てられる（ＫＰにつき１つのプロセス）。ＫＯＳカーネルは、全ての関連するＫＰプロセスの迫跡を続ける。新しいＫＰプロセスを作成することを決めた場合、ＫＯＳカーネルはそれをＫＰブートストラップから分離して、初期化して新しいＫＰプロセスになるＫＰの記述（例えば、ファイル名）を渡す。ＫＰユーザ符号がひとたび実行されれば、ＫＰブートストラップ・プログラムはＫＰスーパーバイザ（下記を参照のこと）になる。パイソン（Python）で書かれたＫＰの場合、ＫＰブートストラップ・プログラムはパイソン・スクリプトである。
ＫＯＳエクステンション７０は、特定のＫＳＳに通常永久に常駐する（しかし、おそらくそれらはシステム管理者の判断により動的にロードされ、又は少なくとも開始及び停止される）。ＫＯＳエクステンションはＫＰではなく、通常、ＫＰと異なりＫＯＳカーネルと同一のシステム特権を有する。ＫＰは、互いにするのと大ざっぱに同一の方法でエクステンションと対話する。しかしながら、ＫＰは周知のＫＯＳエクステンションが任意のＫＰよりも、より信頼し得ることを通常仮定している。
【００７６】
ノウボット・プログラムの論理構造及び動作
図６に、ノウボット・プログラムの論理構造を、ネットワークを通しプログラムを案内するのを手伝い、その動作のための指示を提供する情報フィールドの形で示す。フィールドの正確な順序は重要ではなく、フィールドはノウボットがノウボット動作環境を移動するに従いサービス局によって付け加えられ変更される場合がある。記憶装置において、様々な実現手段が可能であり、多数のフィールドは不必要で省略される場合がある。
【００７７】
第１のフィールドは、このノウボット・プログラムをその時ノウボット動作環境に存在する他の全てのノウボット・プログラムから区別するグローバルにユニークな識別子１１０である。それは、また、長期間に亘りノウボット・プログラムを区別するのに役立つ。識別子の一部は、ノウボット・プログラムを作成したノウボット・サービス局の識別（アイデンティティ）から導出することができる。識別子は、ノウボット・プログラムを記憶装置から読み出し、又はノウボット・プログラムを参照するのに用いることができる。このユニークな識別子がセマンティクスを有する場合、それを作成したノウボット・サービス局は、そのセマンティクスが何であるか、又はこの情報がシステム、時間及び日付フィールドに含まれるかを明らかにするタイプ及びバージョン・インジケータを提供する。
【００７８】
このグローバルにユニークな識別子（また、ハンドルと呼ばれる）は、ノウボット・プログラムがノウボット動作環境の中に存在するときに、ノウボット・プログラムの存在、位置及び行動が確実に制御され確定されることを可能にする。
【００７９】
ハンドルに関する更なる情報は、１９９３年１０月２２日に出願の米国特許出願第０８／１４２１６１号及び１９９６年５月１３日に出願の第０８／６４５４９１号（「ハンドル」の特許出願）、及びワールド・ワイド・ウェッブhttp://www.cnri.reston.va.usで得られる、カーン及びウィレンスキ（Kahn & Wilensky）の１９９５年５月１３日の「分散デジタル・オブジェクト・サービスのフレームワーク（A Framework for Distributed Digital object Services）」に記載され、これら全体を引用する。
【００８０】
次の（任意の）フィールドは、ノウボット・プログラムの真正さを保証するために用いられる、特にそれを発したことを主張する環境によって実際に作成された認証情報１１２である。ノウボット・プログラムの一部又は全ては、希望により暗号化される。
【００８１】
その次のフィールドは、ノウボット・プログラムによって表されるタスクがいつ、どれくらいしばしば実行されるかに関するスケジューリング情報１１４を含む。これはそのフィールドにおけるコスト及び時間の制約に依存する。このフィールドは、また、要求されるステータス情報（エラー情報通知を含む）を識別する。スケジューリング情報は、通常、内容特定情報がプログラムのどこか他の所に位置することを仮定する。スケジューリング情報は、例えば、いつノウボット・プログラムが機能を実行するか、どれくらい存在するか、いつ及びどのようにステータス情報を返すかなどを指し示す。タスクを始める指示の特有の例は以下を含む。（ａ）「明日午後２時にレポジトリＸ上でこのノウボット・プログラムを実行せよ」であり、レポジトリの作動中のノウボット・プログラムにレポートを返す。（ｂ）「毎日正午にレポジトリＹ上でこのノウボット・プログラムを実行せよ」であり、その結果は、起きたことはその日の新しいことであると言うことであるかもしれない。（ｃ）「事象Ｚまで待って（例えば、我々は我々がどのカレンシーを用いたいかを知っている場合）、次にその事象の結果を用いてノウボット・プログラムを実行せよ」。（ｄ）「このノウボット・プログラムを実行し、もしも事象Ｗ（例えば、この株の値が１５以下になったら）が生じたら、行動Ｑ（例えば、それを売れ）を取り、２０以上になったら、それを買え」。ノウボット・プログラムは、また、他のスリープ解除基準及びトリガー条件を含んでいてもよい。
【００８２】
次のフィールド（ナビゲーション情報１１６）は、ノウボット動作環境における将来のプログラムのナビゲーションを制御する情報、及び／又はプログラムがとったナビゲーション経路の履歴に関する情報を取り込んでもよい。
【００８３】
次のフィールド（約定及び条件１１８）は、プログラムに代わって実行されるタスクの支払いの認可又は用いる契約条件などの領域に関する。この情報は、支払い及び他の契約条件を認証するための公開暗号キー暗号化又は等価なメカニズムを用いて保護される。支払い情報は、許可された信用限度を示し、支払いの認証を確実にし、完全にノウボット・プログラムに含まれるか、又はデジタル・キャッシュ支払いシステム又は他の電子支払いメカニズムに関連している。
【００８４】
次のフィールド、すなわち作成日時、システムのフィールド１２０は、プログラムがコピーされるかその履歴の記録が必要とされる場合の追跡メカニズムを提供する。他のプログラムに埋め込まれたプログラムが、それ自身の作成日時、システムを有する場合がある。このフィールドは、また、情報を得ることができるノウボット・プログラムを識別する。
【００８５】
次のフィールド（動作１２２）は、通常ノウボット・プログラムの内容と共に実行される指示シーケンスを含む。ノウボット・サービス局で翻訳可能ないかなる言語も許される。指示シーケンスは、それを翻訳する自然言語理解プログラムと関連して用いられる自然言語（例えば、英語）のデジタル表現であってもよい。指示シーケンスの単純な形式は、例えば、「識別子Ｘを有するオブジェクトにアクセスせよ」、又は「特定の名前の人によって書かれたオブジェクトを捜せ」などの、フォーマットされた検索コマンド又はアクセス・コマンドであるかもしれない。それはまた、例えば、それは「私を実行し、実行結果の名の宛先に結果を渡せ」などの、実行されるべきプロセスを識別する。
【００８６】
次のフィールド、パス１２４は、通常、プログラムを取り扱った最も最近のサービス局を識別し、また、取り扱った時間と共に前にプログラムを取り扱った一連のサービス局に関する情報を含んでもよい。以前の軌跡のみならず将来の軌跡に関する不完全な情報を含んでもよいナビゲーション・フィールドとは対照的に、パス・フィールドは、実際にとられたパスの明確な記録を生ずることを目的とする。
【００８７】
次のフィールド、データの記述１２６は、通常、データのユニークな識別子、各データ部分の使用に関する権利（下記を参照のこと）、要求の報告（もしある場合）、及び命令シーケンスの使用の指示を含む。その指示は実行可能なプログラムの形であってもよい。
【００８８】
最終的なフィールド、データ１２８は、以下の１つ以上を含む。
【００８９】
ａ．我々が広くディジット・シーケンス（例えば、二進数又はビット）及び関連する「ハンドル」と呼ぶユニークな識別子を意味するデジタル・オブジェクト。デジタル・オブジェクト及びレポジトリに関する更なる情報は、ハンドル特許出願及びカーン及びウィレンスキの論文にある。デジタル・オブジェクトは、権利（例えば、著作権）又は他の権利又は利益が要求される情報又は材料を含んでもよい。デジタル・オブジェクトそれ自身に関連する権利は他にもある。このようにデジタル・オブジェクトは従来の作品のデジタル表現（例えば、文学的な、又は画像の）を含んでもよく、より広くは、コンピュータ・ユーザの表したいものを生成することができるいかなるデジタル材料をも含む。したがって、デジタル・オブジェクトは、一つ以上の既存の作品を含む又はそれに基づくデータ及びプログラムを含んでもよい。デジタル・オブジェクトは、ネットワークを介して供給され、全体又は一部がコンピュータ・スクリーン（又は他の出力装置、例えばプリンタ）に描かれてもよい。デジタル・オブジェクトは、音声、ビデオ又は三次元のシーン又は人工物のデジタル表現、及び多くの異なる方法で描かれ、及び初めて描かれる得るビット・シーケンスを含むかもしれない。デジタル・オブジェクトにおいて要求される権利の概念において、我々は法の下の権利（例えば著作権、特許、企業秘密、商標）、個人的行動（例えば、秘密、協同企業又は交渉を経た）の結果としての権利を意味する。
【００９０】
ｂ．一連のビット（おそらくデータ型を有する）
ｃ．他の主体（例えばデジタル・オブジェクト）への間接的な基準
ｄ．上記のセット
ｅ．上記の組合せ（セットを含む）
内容記述フィールドによって、デジタル・オブジェクトは完全な内容に関する権利及び許可を認識されて別々に識別され処理されることが可能になる。デジタル・オブジェクト自体がノウボット・プログラムでもよい。
【００９１】
ノウボット・プログラムは、タスクを実行する必要から互いに交信する。かかる通信のための手段は以下である。
１．多数の他のノウボット・プログラムに達するために、又は目標のノウボット・プログラムの位置が正確に知られていないときに、マルチキャスト通信が用いられる。２．ソースのノウボット・プログラムは、目標を作成したノウボット・サービス局を経ることによって目標ノウボット・プログラムにメッセージを送る。３．１つのノウボット・プログラムから他へ直接通信するためのメカニズムが用いられてもよい。
【００９２】
どのようにノウボット・プログラムが送受信されるかを規定するプロトコル又はプロトコルのセットに加えて、システムは、メッセージが送受信される方法を規定する１つ又は複数のプロトコルを含んでもよい。ある場合には、ノウボット・プログラム自身を送るよりはむしろメッセージを送る方がより有効である。例えば、ノウボット・プログラムがノウボット・サービス局に届き、進行する前に他のノウボット・プログラムからのメッセージを待ってもよい。
【００９３】
ノウボット・プログラムは、ノウボット・サービス局内において互いに対話してもよい。ノウボット・プログラムは、ノウボット・サービス局においてクローンを作られてもよい。各ノウボット・プログラムのクローンは、その親及び兄弟と独立に動作してもよい。ノウボット・プログラム及びそれらのクローンは、それらの活動を調整し、タスクを協力して実行してもよい。より一般的には、それらがクローンか否かに関わらず、いかなるノウボット・プログラムも他のノウボット・プログラムと仕事を調整してもよい。
【００９４】
ノウボット・プログラムは持続的であり、すなわち、それらはノウボット動作環境において用心深い存在を維持するという期待をもって作成される。通常、持続性のノウボット・プログラムは特定のノウボット・サービス局に駐在するが、絶え間なくノウボット動作環境を移動する持続性のノウボット・プログラムもある。
【００９５】
単純なユーザ照会又はシステム照会を運ぶノウボット・プログラムは複雑な検索プロセス又は分散タスク実行を生成する場合がある。いくつかのレポジトリ又はデータベースは、検索又は他のタスク実行を満たすために全ての必要な構成要素を得るために調べられなければならない。（レポジトリは、多重データベース又は知識ベースを含む）。これらの構成要素は、単一の応答又は多重応答としてユーザに供給される。一定の場合には、ユーザは要求し、システムは全て又はいくつかの構成要素を別々に供給することを許す。
【００９６】
ノウボット・プログラムは、照会又は検索に対応しない複雑なタスクを実行する（おそらく、他のノウボット・プログラム、レポジトリ、データベース及び／又は知識ベースと共に）。例えば、ネットワーク、コンピュータ、又はネットワークあるいはコンピュータのセット内で、プログラムの作動、パラメータの設定、ソフトウェア・パッチの挿入など、何かを行ってもよい。認証及びセキュリティ及び記録の保守に関する更なる情報及びノウボット・プログラムの例は、１９９５年５月３０日出願の米国特許出願番号第０８／４５３４８６号に記載され、ここに引用する（「ノウボット」アプリケーション）。
【００９７】
図７に示すように、ノウボット・プログラム（ＫＰ）２１０は、インターネット３６のような分散型システム内のノード２３０、２３２、２３４の間を移動することができる制御データ２１２及びスレッド２１４の組合せとして見ることができる。ノウボット・プログラムは、はっきりしたエントリ・ポイント２１８及び状態２２０を有する。ＫＯＳ２１６の基礎をなすサービスは４つの主要なカテゴリへに分けられる。すなわち、（１）安全な実行時環境２２２、（２）移動及び状態管理２２４、（３）エクステンション・メカニズム、及び（４）ＫＰ、ＫＳＳ、エクステンション及び信頼アプリケーション２２６間の通信、である。
【００９８】
ノウボット・プログラムは、自主的な及びネットワーク効率の良いアプリケーションに適したエージェント・ベースのプログラミング・スタイルを可能にする。エージェントは自主的で、それらのソースから切り離されても動作をし続けりことができ、ネットワーク帯域を節約するために、対話する他のプログラム又はデータ近くに移動することができる。
【００９９】
ここで議論される実現はパイソン、オブジェクト指向スクリプト言語及びＩＬＵ（ゼロックスＰＡＲＣで開発された多目的言語オブジェクト・インタフェース・システム）を用いる。しかしながら、ＫＯＳアーキテクチャは、言語・伝達中立である。
【０１００】
ノウボット・プログラミング言語を用いるのに適した他の言語の例は、ＴＣＬ（ツール・コマンド言語）、及びサン・マイクロシステムズ（Sun Microsystems）からのＪａｖａ（登録商標）言語。これらの言語（又はバイトコード）インタープリタ及びＫＯＳ間のインタフェースは、ＩＬＵオブジェクト又は他の輸送フレームワークのオブジェクトとして公式化される。
【０１０１】
安全な環境
ホストがネットワークから受信したプログラムを実行する場合、どうにかしてそれらのプログラムが未許可の動作を実行しないことを確実にしなければならない。これを確実にする１つの方法は、認可されたユーザからプログラムを受けるだけのことである。普通の暗号手法は、各プログラムの起源を認証するのに用いられる。認可されたユーザが未許可の動作を実行する場合、ユーザの身元は従って確定される。
【０１０２】
例えば、自由な広報サービスを行ったり、匿名性が必要な場合など、ユーザ認証が好ましくない状況がある。かかる状況において、いかなる害も及ぼさないために、実行プログラムの力を制限しなければならない。これは、表わされるパワーを不必要に阻止することなくなされなければならない。すなわち、プログラムを実行しないという取るに足らない制限された環境は、理論的には唯一「安全な」解であるが殆ど実際的な価値はない。
【０１０３】
悪いプログラム（しばしば、トロイの馬と呼ばれる）が試みる攻撃のいくつかのタイプがある。すなわち、サービス拒絶攻撃であり、プログラムが、ＣＰＵサイクル、メモリあるいはディスク容量、又はネットワーク割り込みなどの共有リソースの（ほとんど）全てを割り当て、ホストから他のユーザに提示するサービスを阻止すること、ホストのファイルシステムに格納された情報を削除、変更又は不法に転送する攻撃、及びホストをクラッシュさせる攻撃である。効果は他のサービス拒絶攻撃と同じあるが、ホスト・クラッシュ攻撃は通常ホストのソフトウェアのバグを使用するので防ぐのが難しい。大部分のサービス拒絶攻撃は、プログラムが用いることのできる各リソースの量的制限を実現することによって防ぐことができる。この領域はかなりよく理解されており、例えば、ディスク割当て及びリソース制限を設定するＵＮＩＸ（登録商標）ファシリティを用いることによってよい保護が得られる。
【０１０４】
より高い抽象レベルでは、パイソン・インタープリタを変更し、実行される仮想マシン指示の数、又はプログラムに代わって割り当てられるオブジェクトの全数を制限することは可能である。ＵＮＩＸ（登録商標）環境において、非特権ユーザとしてプロセスを実行することによってファイルシステムに格納された情報への未許可のアクセスを防ぐことが可能である。
【０１０５】
ノウボット動作環境は、ノウボット・プログラムがアクセスを有する情報リソースに対するより優れた制御を必要とする。パイソン・インタープリタは、任意の制限された実行環境の作成を可能にする。かかる方式において、制限されたパイソン実行環境は、常により制限の少ない「制御」環境で支えられ、それは制限された環境下での重大な動作の実現を制御する。特に、制御環境は、制限された環境で利用可能な組み込み機能のセットを定め（機能テーブルを提供することによって）、制限された環境がどのようにモジュールを取り入れるかを制御する。パイソンの要注意情報への全てのアクセスは組み込み関数かエクステンション・モジュールを用いるので、制御環境は容易に全ての危険な動作を取り去るか保護されたバージョンに置き換えることができる。
【０１０６】
重要なポイントは、制限された環境が制御環境で定められた特殊機能を呼ぶか、さもなければ制御環境のいかなるオブジェクトにもアクセスしないことである。制御環境は制限された環境が呼ぶことができる機能を宣言するので、それらの機能は要求された動作を実行する前にそれらの引き数の正当性を慎重に検査するように書かれる。例えば、制御環境はカレント・ディレクトリのファイルだけを受け付けるファイルを開く機能を提供してもよい。
【０１０７】
パイソンのこれらの能力を用いることによって、プロトタイプ・システムは、ＫＯＳがＫＰによって損傷されるのを妨ぐためのいくつかの安全機能を提供する。図１０に示すように、ＫＰプロセスは、ＫＯＳ２１６によって提供される信頼コード２４４を実行するスーパーバイザ２４２及び信頼できないＫＰユーザ・コード（スレッド）２１４に分割される。ユーザ・コードは危険な動作へのアクセスを媒介する制限された実行環境内で実行する。制限された環境は、ユーザ・コードに代わってリモート手続き呼出し（ＲＰＣ）のような制限された動作２４６の全てを実行するスーパーバイザ２４２によって影響される。制限された環境は、一定の潜在的に危険な動作がアクセスできない例外があるが、その中で実行される信頼できないコードには見分けがつかない。
【０１０８】
多くの潜在的に危険な動作がある。例えば、ネットワーク接続の生成、ローカル・ディスク上のファイルの変更、同じノードで実行している他のＫＰとの通信である。信頼コードは、いくつかの動作全体を取り除き、セキュリティ・ポリシーを実施する他の動作のまわりにラッパを作成する。例えば、スーパーバイザは特定のディレクトリだけの読み書き動作を可能にするオープンな動作を提供してもよい。ユーザ・コードに利用可能なオープンな動作は、実際のシステム・コールをする前に安全チェックを行うスーパーバイザを呼ぶ。
【０１０９】
ＫＯＳセキュリティ・モデルも、オブジェクトのインスタンス変数へのアクセスを不能にし、全てのメソッド（方法）の呼出し（コール）に実行時タイプ（型）チェックを実行することによってタイプ・セーフなアクセスを保証する。信頼コードは、特定のインスタンス・メソッドの呼出しを許可するだけのバスティオン・オブジェクト（bastion object）２４８を作成する。
【０１１０】
広く展開された移動エージェント・システムは、上記したよりも強いセキュリティ対策さえ用いる。例えば、ＫＯＳは、デジタル・サイン又は暗号化に基づいて、ＫＰの所有者を識別し、その完全性を検査することが可能でなければならない。エージェントが作成されるとき、その所有者によって署名又は暗号化されてサーバーに提出され、エージェントが２つのサーバー間を移動するときは、発する側のサーバーがエージェントを暗号化する。
【０１１１】
ＫＯＳスーパーバイザ
ＫＯＳスーパーバイザ２４２は、無制限モードで動作する信頼コードである。
それは、どのオブジェクトが「組み込まれた」オブジェクト又は取り入れられたモジュールとして制限ユーザ・コードに利用可能かについて制御を行う。通常、スーパーバイザは、危険であるが役に立つ機能を、その引き数を十分に検査する自身の機能で置き換えて、その機能の「真の」バージョンを呼出す。この置き換え機能は、制限モードから呼ばれ、非制限モードで動作する。制限コードは、呼出し（及び、渡すこと）を除き、そのような機能とは関係無く実行する。特に、無制限の環境を利用するのに、いかなる「裏口」も用いることができない。
【０１１２】
バスティオン・オブジェクト
図１１に示すように、そのメソッドが非制限モードで動作するオブジェクト３１０を制限モードに渡すには、非制限モードにおいて作成されたオブジェクトを単に渡すだけでは十分でない。なぜなら、制限コードはこのオブジェクト属性に十分にアクセスできるからである。その代わりに、バスティオン・オブジェクトが作成され非制限モードから制限環境に渡されなければならない。バスティオン・オブジェクト３１４が無制限環境によって手作りされ、同一の機能ＡＰＩを、基礎をなす無制限オブジェクトに提示する。違いは、そのメソッド属性３１５が真のオブジェクト（のサブセット）のバウンド・メソッドのリファレンス３１６であるようにバスティオンが備えられていなければならないことである。
【０１１３】
クライアント／サーバ環境において、バスティオンはリモート・オブジェクトにクライアント・アクセスを提供するために用いられる。信頼オブジェクトは、分散オブジェクト層へのリモート手続き呼出しを可能にするインスタンス変数及びメソッドを含む。この機能性を制限環境にエクスポートするのは望ましくないので、ＫＰスーパーバイザはその代わりに外部にエクスポートされるＡＰＩ又はリモート・オブジェクトのみを表すバスティオンを作成する。バスティオン自身は、非制限モードにおいて手作りされて、他のインスタンス変数又はメソッドを欠いている。特に、それはリモート手続き呼出し基盤のいずれにもアクセスすることができない。
【０１１４】
同様のメカニズムはサーバー側でも用いられるが、結び付けメソッドの方向は変わる。これは、呼出しが外部のＲＰＣに応答して、無制限シェルから制限付きシェルに行われるからである。制限付きシェル・オブジェクトは、ＡＰＩの実際の問題ドメインの実現を含み、用いられる実際のＲＰＣメカニズムに関係なく実現されなければならない。無制限シェルは、ＲＰＣの受領者であり、真のオブジェクトと呼ばれるサーバー側のオブジェクトを含む。この構成を容易にするために、バスティオン・オブジェクトは実現オブジェクトで置き換えられ、実現オブジェクトからの結合メソッドは真のオブジェクトに備えられる。このようにメソッドパラメータ・リスト内で自身に渡されるオブジェクトは、真のオブジェクト及び無制限環境へのフックのない実現オブジェクトである。
【０１１５】
ＫＰの移動
ＫＰは２つのプリミティブ（基本要素）、すなわち、現在のプログラムを移動させる移動及び新しい位置で現在のプログラムのコピーを作成するクローン、を用いて分散ＫＯＳ（例えば、異なるインターネット・ノードに位置する）間を移動することができる。
【０１１６】
図８に示すように、移動のため、ＫＯＳはＭＩＭＥフォーマットにより実現され、ＫＰのソース・コード２５２、プログラム２５４の現在の状態の符号化されたバージョン、アプリケーション固有のデータ２５８を含む「スーツケース」２５６、及び受信ＫＯＳによって取り扱われる方法を記述したメタデータ２６０を含むコンテナ２５０を作成する。ＫＰ呼出しは宛先ＫＯＳの名前を用いて移動する。スーパーバイザ２４２は、ＫＰを中断して、不変形式の現在の状態２５４を捕捉し、実行を再開する指定ＫＯＳに送る。（クローン呼出しがリターンし、実行は元のＫＯＳで継続することを除いてはクローン呼出しは移動と同様である。）
メタデータ２６０は、ＫＰの起源２６２、ＫＰエントリ・ポイント２６４を含むモジュールの名前、及び例外及びエラーを取り扱う指示２６６を含む。移動の支援のため、ＫＯＳは実行ＫＰの中断、状態の直列化、その状態に基づく他のノードでのＫＰの再開が可能でなければならない。パイソン実現の１つにおいて、ＫＰは常に単一エントリー・ポイントで実行を再開する（主たるメソッド）。より強力なシステムは、移動ＫＰが現在の呼出しスタックを保存して、プログラムのいかなるポイントでも実行を再開することを可能にする真のスタック可動性の支援を含む。
【０１１７】
ＫＰの状態２５４は、コネクタ（下記を参照のこと）を含み、ＫＰオブジェクト・インスタンス２６８内に格納された全てのデータ、及び制限ＫＰ環境２７０内に存在する他のオブジェクトのリファレンスを含むが、スーパーバイザ内のオブジェクトはこの状態の一部とはみなされない。
【０１１８】
他に、オブジェクトが居たノードから移動したノードを示すリファレンスの連鎖を用いた解を記述する。スーツケース２５６は、符号化されたプログラム状態とは独立にデータを運ぶ。スーツケースには、ＫＰオブジェクトのインスタンス変数として格納されないアプリケーション作成のデータ（例えば、訪問したＫＯＳのログ又はリモート検索の結果）を保持する。便宜のために、スーツケースは階層型ファイルシステムとして動作する。
【０１１９】
スーツケースは、アプリケーションに比べて２つの重大な利点を提供する。すなわち、スーツケースのファイルは、ＫＰを実行することなくアクセスすることができる。したがって、リモート動作を実行するのにＫＰを用いるアプリケーションは、パイソン・インタープリタ及びＫＰを始めるオーバーヘッドを負うことのなく結果を読み出すことができる。また、スーツケースは、カスタムメイドのデータ表現を作成するアプリケーションに対し、よりよい性能を与える。例えば、ウェブ・ページにインデックスを付けるＫＰは、直接スーツケースにバイナリ形式でインデックスを書くことができ、後に直接インデックスを検索サービスへ転送してもよい。
【０１２０】
プログラム状態の輸送
プログラムの状態は、大ざっぱに３つの構成要素から成る。すなわち、プログラム・テキスト（ソース・コード又はある形式の（仮想）機械語）、プログラム・データ、及びその実行スタックである。テキスト形式の輸送ソース・コードは簡単であるが、受ける側での解析を必要とする。パイソンは、容易に輸送できる、携帯可能な（バイトオーダー及びワード・サイズとは独立に）仮想機械語を符号化するコード・モジュールの「コンパイルされた」形式を有する。プログラムに独特なこれらのモジュールだけが輸送されることを必要とする。他のモジュール（例えば、標準のパイソン・ライブラリの一部、又は標準のノウボット・サービスの実現手段）は、すでに受信ホストが利用できる。
【０１２１】
カーネル・オブジェクトへの移動リファレンス
パイソンは、一まとまりのパイソン・オブジェクトをバイト・ストリームに変換する一般的なインタフェースを有する（「ピックリング」、この逆の動作を「逆ピックリング」と呼ぶ）。全てのパイソン・オブジェクトが届き得る単一の「ルート」オブジェクトがあるとき、単にそのルートをピックリングすること（従って、そのルートから届き得るすべてをピックリングすることを暗に意味する）は「逆ピックリング」がプログラムの状態を生まれ変わらせる場合にバイト・ストリームを生成することに相当する。かかるルートは実際にあり、パイソン・インタープリタは、取り入れた全てのモジュールのデータを含むテーブルを維持する。しかしながら、２つの問題が残る。すなわち、単純記憶メモリ（simple-minding memory）がダンプすると、カーネル・オブジェクトが問題を起こし、インタープリタ・スタックを別々に保存して再構築しなければならない。
【０１２２】
パイソンの標準ピックル・インタフェースは、オープン・ファイル、ウインドウ又はネットワーク接続などのカーネル・オブジェクトを参照するオブジェクトを扱わない。しかしながら、どのようにピックリング又は逆ピックリングされるかをオーバーライドするクラスを可能にする。重要なのは、ノウボット・プログラムにＩ／Ｏのための高水準の抽象化を与えることで、これらの抽象を表すオブジェクトがカーネル・オブジェクトにリファレンスを渡すことを必要としないピックリング及び逆ピックリングメソッドを提供することである。
【０１２３】
一般的な指針としてオブジェクトの抽象レベルが高くなると、それを移動させることがより簡単になる。
【０１２４】
ＫＰの状態を符号化する方法の例としては、ＭＩＭＥ表現を用いることがある。
【０１２５】
インタープリタ・スタックの移動
実行パイソン・プログラムをトランスペアレントに移動するための他のハードルは、インタープリタ・スタックである。これは、呼ばれてはいるが、まだリターンしていない機能（及び、メソッド）のリストである。スタックは、通常リターンアドレスと同様、各呼出しのローカル変数、及びレジスタ内容又は例外取り扱い状態などの他の状態を含む。
【０１２６】
パイソン・インタープリタは、明示的に全ての状態を格納するように変更されてもよい。
【０１２７】
ノウボット・プログラムの構造
ＫＰは、基本オブジェクトの組み立てられた集合として名目上表され、そのうちの少数はＫＰ固有のフォーマットを有する（例えば、実行中のプログラム状態の表現が互換性のあるインタープリタによって必然的に理解される）。これらのフォーマットの多数が、アクセスできなくてもよい（例えば、テキスト又はイメージ・データ、より構造的なテーブルのような情報又は単純なデータベースでさえ、しばしばテキストラインとして表される）。
【０１２８】
いくつかのＫＰは、それらの内部データのいくつかを他のものによる検査から隠す必要がある。これを行う適切な方法は、データを暗号化し、符号化された表現の暗号化オブジェクトとして格納することである。標準の暗号に基づく認証技術が、オブジェクトの完全性を確実にするのに用いられる。
【０１２９】
符号化された表現は任意に入れ子にされ得るので、たとえ我々が「１つのＫＰ表現」と言っても、１つの表現は実際にいかなる数の独立の（又は、依存した）ノウボット・プログラムを含む場合がある。特に、１つのＫＰが持ち運ぶあるオブジェクトは知的所有権保護のため個別のＫＰによって保護され、かかるオブジェクトは埋め込まれたＫＰ表現として表される。
【０１３０】
ノウボット・プログラムのメタデータは、キー・メタデータ及び非キー・メタデータを含む。ノウボット・プログラムのキー・メタデータは、それが書かれたプログラミング言語（例えば、パイソン）を識別しなければならない。非キー・メタデータは、その実行状態（例えば、実行中であるか、休止しているか、ディスクに格納されているか）を含まなければならない。ノウボット・プログラムのデジタル・オブジェクト・データは、多数のサブコンポーネントを含む。すなわち、ユーザ・プログラム・コード、例えば選択され、おそらく言語固有バイト・コードなどの言語インタープリタだけが理解する方法で符号化されたプログラミング言語のソース・コード、言語インタープリタのみがアクセスできるような、前の実行時から保存されたプログラム状態などのプログラム固有データ、及び非プログラム固有データ、例えばプログラムが請求により提供する、おそらくレポジトリ・アクセス・プロトコル（ＲＡＰ）がアクセスできるテキスト又は画像データである。
【０１３１】
ノウボット・プログラムのデータ、メタデータ及びキー・メタデータへの全てのアクセスは、ＫＯＥによって媒介される。ノウボット・プログラムの実行開始に用いられるＫＯＥ自身から要求を除き、ＫＯＥは、殆どの要求をノウボット・プログラムに渡す。他の例外は、ＫＯＥ自身によって維持されるいくつかのメタデータ、又は不変のキー・メタデータの要求を含む。
【０１３２】
ノウボット・プログラムがデジタル・オブジェクトのプレーンな（ＫＯＳではない）レポジトリに格納される場合（多分、ＫＯＳ間の通過の場合）、レポジトリは、ノウボット・プログラムの他のレボジトリ又はＫＯＳへの輸送を許可する要求を除き、ノウボット・プログラムのデータ、メタデータ及びキー・メタデータへのアクセス要求を拒否することを要求される。
【０１３３】
ＫＰへのアクセス制御
アクセス制御は、２つの関連した概念をいう。すなわち、ノウボット・プログラムのデータ及びメソッド呼出しアプリケーション・プログラミング・インタフェース（ＡＰＩ）へのアクセス、及びノウボット・プログラム自身の匿名性である。ノウボット・プログラムは、認可主体及びそれらのアクセス・レベルの明示のリストの提供、又はパスワード又は同様の証明書を検査することによってアクセス制限を指定する。ＫＯＳ又はレポジトリによって直接実行されるノウボット・プログラムのデータ又はメタデータへのこれらのアクセスについては、第１の形式だけが利用できる。
【０１３４】
この目的のため、各ノウボット・プログラムは、ハンドルによって表される少なくとも１つの名前を有さなければならない。他の誰かと見られないように、名前はＫＯＳによって確認されなければならない。デジタル・オブジェクトがレポジトリに最初に預けられるときに標準の認証技術は適用され、レポジトリはそれらの間でオブジェクトを渡すときに互いを信頼し、受信器はノウボット・プログラムの名前が、直接（送信者によって）又は間接的に（最初にオブジェクトを受信したどれによってでも）、適切に確認されたことを仮定することができる。ＫＰには関連する２種類の名前があり得る。１つは、ＫＰの寿命にわたって不変のアーカイブの名前である。もう１つは、ＫＰの所与のインスタンス化に一時的に適用されるだけの動的な名前である。両方のハンドルが所与のノウボット・プログラムに用いられる。
【０１３５】
ノウボット・プログラムの最も有力なタイプは、検索・読出しノウボット・プログラムである。これらのノウボットは、検索が進行するうちに検索基準が、例えば一般的なものから特有のものに変化する、多重データベースに対して複雑な検索を実行する能力を有する。例えば、広域情報サービス（ＷＡＩＳ）タイプ検索は、一般的な検索フレーズを用いる適当なＷＡＩＳインデックスを第１に見つけることを含み、次に特有のキーワードを含む文書からそのインデックスを捜す。現在、これはＷＡＩＳによるマニュアルのプロセスであるが、ノウボット・プログラムによってこのタスクを自動化する大きなポテンシャルが存在する。
【０１３６】
コネクタを介してのノウボット・プログラム通信
図９に示すように、ＫＰ及びＫＯＳカーネルを含む独立実行プロセスは、コネクタを用いて互いに通信する。オブジェクトを作成するメカニズムを加え、リファレンスを共有し、コネクタはＩＬＵオブジェクトの上位に階層化される。コネクタは制限された実行環境の完全性を保存する。これはオブジェクトＲＰＣメカニズム２８８に低レベルのアクセスを提供する妥協によって得られる場合がある。クライアントＫＰ２７６は、コネクタ名２７８及びコネクタ・タイプ２８０を指定することにより、サービスを要求するためにコネクタを用いる。ＫＰスーパーバイザ２４２は、次にサービスを提供するプロセス２８６と通信するクライアント側代理オブジェクト（コネクタ）２８４を作成する。
【０１３７】
プログラム提供サービス２９０が、コネクタ２９４をクラス・オブジェクト２９６のインスタンスに結び付ける接続ブローカ２９２を用いてサービスを発行する。サービス・クラス・インスタンスは記号的なコネクタ名２９８、ＫＯＳに登録したコネクタ・インタフェース・タイプ３００に結び付けられる。
【０１３８】
ノウボット・プログラムは、インタフェース定義言語を用いてインタフェースタイプ、及び自身のクラス・オブジェクトを規定する。ＫＰは、これらの明確なインタフェースへのコネクタを用いて互いに通信する。例えば、ミッションがリモート・データベースを捜すことであるＫＰは、データベースを管理しているＫＯＳに移動し、データベース検索インタフェースのためのコネクタを要求する。
【０１３９】
ＫＰは、名前によって特定のコネクタを調べるか、又は所与のタイプのインタフェースを提供する一群のコネクタを要請することができる。コネクタ及びＩＬＵの使用は、ノウボット実行時環境に対して言語独立性を提供する。移動を支援するいかなる言語もＩＬＵ結び付け、ノウボット・プログラムを書くのに用いられる危険な動作へのアクセスを制限する安全な方法を有している。
【０１４０】
他に、コネクタの基本的特性がいくつかある。コネクタは、他のオブジェクトによって供給され得る。クライアントはノウボット・サービス局から他のノウボット・サービス局へ移動するときにコネクタを持ち運ぶことができ、それらが表すサービスとの接触を維持する。このコネクタ・アーキテクチャは、アッドオン・ディレクトリ、又はより特有の特性に基づいてコネクタを追跡する「トレーダ」サービスの作成を可能にする。ディレクトリ・インタフェースをクライアントにエクスポートするＫＰによって、ディレクトリ・サービスが実現されてもよい。
【０１４１】
コネクタ・ブローカ
コネクタ・ブローカ２９２及び関連するコネクタ・マネージャ２９９は、ＫＰにサーバーとして一つ以上のインタフェースを登録させ、クライアントとして一つ以上のインタフェースと対話させる。コネクタ・ブローカは、ＫＰスーパーバイザの一部である。それは、ＫＯＳカーネルにおいて動作するコネクタ・マネージャ２９９とインタフェースをとる。１カーネルにつき１つのコネクタ・マネージャ・インスタンスがある。１つのＫＰは、同一又は異なるタイプの１つ以上のインタフェースを登録してもよい。インタフェースを登録するため、ＫＰは、インスタンス、インタフェースの識別及びそのタイプ、及びラベル・ストリング（名前）のリストによりコネクタ・ブローカのレジスタ・メソッド３１０を呼ぶ。
【０１４２】
ラベル・ストリングは、同一のＫＯＳで同一のインタフェース・タイプに対しすでに登録されていてはならない。同一のインスタンスは、二回登録されてはならない。インタフェースを撤回するために、コネクタ・ブローカのアンレジスタ・メソッド３１２がインスタンスを引き数として呼ばれる。ＫＰプロセスが出ていくときに、残りの全ての登録インタフェースは自動的に登録が取り消される。
【０１４３】
ＫＰは、そのコネクタ・ブローカのルックアップ・メソッド３１４を呼ぶことによって、特定のタイプを有するインタフェース及び／又は一つ以上の照会ストリングに一致するラベル・ストリングを探してＫＯＳとしての登録インタフェースのセットをサーチする。戻り値は、所与のタイプの代理オブジェクトのリストである。
【０１４４】
ＫＰ実行
以下は、ＫＯＥにおいて通信又は実行しているノウボット・プログラムのいくつかの例である。
【０１４５】
非移動ＫＰ
ＫＰ通信の単純な例は、ユーザから特定のＫＯＳに提示され、その位置でデータベース検索を実行するノウボット・プログラムである。ノウボット・プログラムは直接ＫＯＳに提示され、しばらくの間そこで実行され、その実行の結果がユーザに戻される。検索結果はノウボット・プログラムの非プログラム固有データ（デジタル・オブジェクトとしてのインスタンス化の）として格納され、ノウボット・プログラムの助けなしで読み出すことができる。ここで１つのＫＯＳだけが含まれ、ノウボット・プログラムは移動する必要はない。この状態の移行は、「作成された」（提示の直後に）から「実行中」（検索の実行時）を経て「完了」（済んだとき）である。これは、多かれ少なかれ、従来のシステムのリモート・ジョブ実行と等価である。
【０１４６】
一つの移動ノウボット・プログラム
いくぶんより複雑なシナリオは、異なる位置で多重データベースのデータベース検索を実行するいくつかのＫＯＳを訪問する１つのノウボット・プログラムを含む。訪問されるＫＯＳの仕事の流れは、ノウボット・プログラムにプログラムされるか又は動的に確定されてもよく、すでに訪問されたＫＯＳのリストは、そのプログラム特有のデータに符号化される。前の例のように、検索結果は非プログラム固有データとして格納され、ノウボット・プログラムがそのタスクを完了した後で読み出すことができる。
【０１４７】
ノウボット・プログラムは、検索結果をそれ自身の内に格納することができるという事実に依っている。ノウボット・プログラムが他のＫＯＳに移動するとき、ＫＯＳは自動的にプログラム状態を格納し、その状態は自動的に復元される。
【０１４８】
多数で協力するノウボット・プログラム
いくつかの問題は、例えば、多重データベースをサーチして、結果を結合するなど、独立に実行され得るいくつかの部分に容易に分解される。サーチは、特に異なるホスト上で行われる場合、並列に実行することができる。個別のプログラムが結果を結合することができる。
【０１４９】
例えば、我々が３つの異なるデータベースをサーチし、結果を結合する場合、重要なデータベースと同じ場所に位置するＫＯＳに３つのノウボット・プログラムを提示する。これらの３つのプログラムは、タスクを完了したらホームのＫＳＳに戻るように設計されている。
【０１５０】
ホームＫＳＳにおいて、第４のノウボット・プログラムが実行される。このプログラムは、照会結果を抽出し、結合して最終結果を得て、ユーザにこの情報を表示する。この例に協力を導入するために、更に我々は、１つの検索からの部分的な結果は他の検索プロセスを短くするために用いられることを仮定する。例えば、アルファ・ベータ・ゲーム・ツリーの切り取りアプリケーション、又は、例えば我々が特定のアイテムの最も低い価格を捜している場合である。
【０１５１】
我々の単純な例において、各ノウボット・プログラムは、単に定期的に他の２つの各々と接続でき、検索結果の概要を送信することができる。接続のために、ノウボット・プログラムは、プログラムが開始された時に非プログラム固有データとしてプログラムに格納された互いのハンドルを知る必要がある。
【０１５２】
他のノウボット・プログラムを生むノウボット・プログラム
多くの状況において、協力しているノウボット・プログラムの集合は、前の例より動的なキャラクタを有する。たとえば、検索されるデータベースのセットはラン・タイムのみによって知られ、又は計算集約的なジョブ（大きな数は重要な数又は因数に分解する数であることを証明するような）は、増加する速度のためにいかなる数の利用可能なホストに分散され得る。ノウボット・プログラムは、他のノウボット・プログラムを生むことが可能である。実際、２つの異なる動作が可能である。すなわち、現在のいくつかのプログラム状態を含む現在のノウボット・プログラムの「クローン」を生むこと、及び格納されたノウボット・プログラムの「新鮮な」コピーを生むことである。
【０１５３】
ノウボット・プログラムが生まれるＫＯＳは、ノウボット・プログラムを生むホストＫＯＳと同じものであってもよいし、異なるものであってもよい。異なるＫＯＳにクローンを生むことは、実際に移動動作の前半である。後半は、一度クローンを作る動作が成功であると確定したら現在のノウボット・プログラムを去ることである。生む側及び生まれた側のノウボット・プログラムは互いのハンドルを知っていると推定される。
【０１５４】
ＫＯＳ及びＫＰは、利用できるリソースに関して交信することが必要である。
一定のアプリケーション（因数分解の例のような）では、ノウボット・プログラムがＫＯＳに現在の負荷が何であるかについて明示的に尋ねることは意味があり、それによってノウボット・プログラムは他のプ口グラムを生むべきかどうか決めることができる。逆に、ＫＯＳは特定のノウボット・プログラム（又は、ノウボット・プログラムのグループ）があまりに多くのリソースを使用していることに気付き、そのリソース使用を低減するよう頼んでもよい。
【０１５５】
段階的なプロトコルが用いられなければならず、それによって、ＫＯＳは、最初にいくつかのリソースをあきらめるようノウボット・プログラムに丁寧に依頼し、次に厳然とそれを要請する。最後に、ノウボット・プログラムが協力しない場合、プログラムは無条件で終了される。
【０１５６】
関連のないノウボット・プログラム間のランデブー
これまでのところ、我々は同一のユーザによって同一のタスク（グループ）の一部として提示されたノウボット・プログラム間の通信だけ考察してきた。関連のないＫＰも、ＫＯＳを介して通信することができる。
【０１５７】
ノウボット技術を用いて実現される中古品市場を考察する。これは、新聞で見られるように実際の販売の責務と結合した項目別広告という形をとる。ＫＯＳは、（将来の）買い手及び売り手間の仲介ファシリティを提供することによってかかる市場を容易にできる。
【０１５８】
売り手は、ＫＯＳに売りに出されているものを告げるノウボット・プログラムを提示する。ＫＯＳは、この情報を売り手のインデックスに加える。買い手は、ＫＯＳにそれが捜しているものを告げるノウボット・プログラムを提示する。ＫＯＳは、この記述に一致するノウボット・プログラムのハンドルのリストを買い手に与える。買い手のノウボット・プログラムは、発売中のアイテムについてのより多くの情報を得るため、及びおそらく売値について交渉するために、売り手のノウボット・プログラムの各々又はいくつかと対話する。
【０１５９】
このテーマについての変化は以下を含む。すなわち、ＫＯＳに代わる第３のタイプのノウボット・プログラム、ブローカ。買い手は受動的に登録し、売り手は最初に提示されたときに買い手と接触する。買い手及び売り手は、リモート通信を用いて遠隔で登録する（市場で実行することなく）、などである。
【０１６０】
他言語ノウボット・プログラムとの通信
ノウボット・プログラムを書くために用いられる異なるプログラミング言語全てがＫＯＳでサポートされるというわけではない。ＫＯＳがプログラミング言語をサポートする場合でも、ノウボット・プログラムは実行のためにサポートされていない言語エクステンションを必要とする。ノウボット・プログラムはラベルをつけられ（例えば、特有のキー・メタデータによって）、提示に際し全ての要求される特徴をサポートするかどうかＫＯＳは確定することができる。
【０１６１】
ＫＯＳは、実行のために提示されたサポートされていないノウボット・プログラムをおそらくは拒否する一方、受動デジタル・オブジェクトとして受け入れることができる。
サポートされていないノウボット・プログラムには２、３の動作が許可される。
それらは、他のＫＯＳに輸送される。他のノウボット・プログラムは、アクセス制限に従い、キー・メタデータ及び非プログラム固有データを読み出し、又はそれらの非プログラム固有データを変更することさえ許されてもよい。
【０１６２】
適切な規則のセットを用いることで、上記したような市場が、サポートされていないノウボット・プログラムの関与、少なくとも売買したい商品を広告する程度は可能にする。ブローカ・ノウボット・プログラムは、活発にサポートされていないノウボット・プログラムを捜す。一度、一致を見つけたら、一方又は双方をそれらの実行がサポートされる他のサイトに移動する。
【０１６３】
ＫＰの例
パイソンに書かれる完全なノウボット・プログラムの例は、図１３に示される。このＫＰは、いわゆる検索ブール・インタフェースを実現するサービスを２０のランダムなＫＯＳまで検索し、それらのサービスのリストをそのスーツケースに格納する。そのコードは、４つのインスタンス・メソッドを有するＫＰのクラス定義を示す。ＫＰが新しいＫＯＳで届く時に呼び出される主なメソッドは、その第２の引き数としてバスティオンＫＯＳオブジェクトを受信する。バスティオン・オブジェクトは、コネクタ・ルックアップ及び移動のようなＫＯＳサービスへのアクセスを提供する。ノウボット技術のほかの応用は、計算をデータのより近くに移動することによってネットワーク帯域をより効率的に利用する、又は緩く結合した自主的なノウボット・プログラムの上に広範囲の分散型システムを実現するアプリケーションを含む。ネットワーク帯域節約のノウボット・プログラムの１つの例は、画像データベースの検索を実行するものである。ネットワークを介し各画像をローディングし、それにある計算をする代わりに、ＫＰはデータベースに移動し、そこで検索を実行し結果を持って戻る。
【０１６４】
他の例
検索例は、より一般的な索引付けノウボット・プログラムに拡張することができ、ＫＰは、データベースに移動しその内容のインデックスを構築する。ＫＯＳは、多重検索サービスが各々、データベースの全内容をコピーすることなくそれら自身のカスタマイズされたデータベースのインデックスを構築することを可能にする。知的所有権管理、キャッシング及び応答制御が、自主的なノウボット・プログラムを作成する能力の価値ある領域である。ノウボット・プログラムは、アクセスが制限されたデータのクーリエとして行動し得る。ＫＰは、データの暗号化バージョンを運び、それを解読し、又は信頼されたアプリケーションに渡すために認証又は支払いを必要とし、おそらく解読キーを運ぶ他のＫＰと対話する。ノウボット・プログラムを実行するプロキシ・サーバは、オブジェクトのキャッシング及び応答を提供する。コンテント・プロバイダは、ＫＰによって管理される一群のオブジェクトを送ることによってプロキシ・サーバと対話する。マネージャ・プログラムは、アクセス制御を強いて、特殊化したロギング（ヒットカウント）を実行し、又はコンテント・プロバイダからコピーしたデータベースを用いて動的なページを生成する。マネージャも、マネージャが新鮮さを決定するのにサイト固有のコードを含むことができるので、キャッシュ・コンシステンシ・プログラムの処理を手伝う。
【０１６５】
ネームスペース管理
移動ＫＰのための１つの問題はネーミングである。ＫＰは、特定のＫＳＳで２４時間のサービスを提供し、次の２４時間は全く異なるＫＳＳにサービスを提供してもよい。ネーミングは、ＫＰの現在の位置に関係なく適用しなければならない。我々は、最初にネームスペースの異なるレベルを区別する。名前の１つのカテゴリは、ノウボット・プログラムが生まれ、その人生の全体にわたって存続する場合に、ノウボット・プログラムに名前をつけるものである。また、ＫＰのアスペクトにインタフェースを提供するＫＯＳ内にネームスペースがある。このネームスペースは、ＫＰネームスペースのＫＯＳカーネルを横断してもよい。他のネームスペースは、データ型を登録するために用いられ、クライアント及びサーバーＫＰは一貫して情報を交換できる。
【０１６６】
ノウボット・プログラム・ハンドル（名前）
あらゆるノウボット・プログラムは、ＫＯＳ仕様のハンドルによって表される少なくとも１つの名前を有する。ノウボット・プログラムは、他のハンドルを含んでもよい。すなわち、その「所有者」のハンドル、特定のプログラムのハンドル、プログラムのその特定の実行のハンドルである。これらの終わりだけはユニークである、つまり、他のハンドルは、いくつかのノウボット・プログラムによって共有される。ノウボット・プログラムが異なるＫＯＥに移動するときに、特定の実行のハンドルは変化してもよいし変化しなくてもよい。ノウボット・プログラムがそれ自体のコピーを生むとき、ＫＯＳはそのために新しい実行ハンドルを選ぶ。デジタル・オブジェクトは、これまで実行されなかった場合はプログラム・ハンドルを、実行された場合は実行ハンドルを有することを要求される。
【０１６７】
生むこと又は移動によって互いに関連する全てのノウボット・プログラムによって共有される第４のタイプのハンドルを有することは便利である。
ＫＯＥに関しては、ハンドル（「ハンドル」アプリケーションに記載されている）はノウボット・プログラムへのレジストリとして用いられる。ＫＰがＫＳＳからＫＳＳへ移動しても、ハンドル又はＫＰの名前はその生涯の間変わらない。名前が解くことはＫＰが位置から位置へ移動するに従い変化する。名前が解くことは、ＫＳＳのネームスペースによってアクセスされたＫＰＳ（登録したインタフェースなど）の位置依存属性である。
【０１６８】
タイプ・ネームスペース
ネームスペースは、タイプ（特性、キャラクター列、整数、クラス、コネクタ、など）をユニークに識別するのに設けられ、関連のないクライアント及びサーバー・ノウボット・プログラムが、確実に正しい情報を交換することができる。例えば、１つのＫＰがｇｅｔ＿ｐｒｉｃｅと呼ばれるメソッドを有するインタフェースを登録し、それがタイプ価格を戻す場合、そのメソッドの呼出しを望むクライアントＫＰは、適切にビットを読み出して、格納するために価格がいくらであるかを知ることを必要とする。したがって、タイプ・ネームスペースは、特定のＫＳＳに用いられ交換される全てのタイプの中央情報センタである。タイプ・ネームスペースは、そのルートにおいて３つのレベルを有する。すなわち、標準のタイプ、草案標準タイプ及び非標準タイプである。標準の領域は、ＫＯＳ標準インターフェースの間で交換されるそれらのタイプの領域である。例えば、コネクタ・マネージャ・タイプの全ては、この領域にある。標準の領域はまた、ＫＯＳエクステンション・タイプを収納する。ローカル（又はリモート）データベースにアクセスするためにＫＯＳのエクステンションの間で交換されるタイプはこのカテゴリである。タイプが標準タイプのネームスペースの一部になる前に、テスト及び洗練の期間の間、まず草案領域になければならない。最後のネームスペースは、実行中にタイプが挿入、削除されるネームスペース領域である非標準ネームスペースである。タイプ自身は、それら自身ハンドル・ネームスペースの一部であるサブディレクトリに居る。例えば、価格タイプ及び全く異なる価格タイプが衝突しないために、我々はそれらを登録するＫＰの名前に対応するサブディレクトリのこれらのタイプを置く。ＫＰの名は、そのハンドルである。
【０１６９】
パイソンに書かれるＫＰ
図１２に示すように、パイソンに書かれるＫＰは、最上位オブジェクト３４０を有しなければならない。これは、ピックル・ツリーのルートを形成するために用いられるオブジェクトであり、ＫＰの順番に並べられた及び移動できる状態である。これは、また、受信ＫＯＳでの逆ピックリングの際、実行再開のために用いられるオブジェクトである。
【０１７０】
他のオブジェクトはＫＰの中に存在するが、それらは最上位ＫＰオブジェクトによって制御される。最上位ＫＰオブジェクトは、以下のサインを有する主エントリポイント機能を有する。すなわち、＿ｍａｉｎ＿（ｓｅｌｆ、ｋｏｓ）であり、ここでｓｅｌｆはインスタンス・メソッドへの標準の第１の引き数であり、ｋｏｓはＫＯＳインフラストラクチャによって渡されるバスティオン・オブジェクトである。ＫＰが新しいＫＯＳに届き、逆ピックリングされた１つの実施において、ＫＯＳはこの主機能を呼ぶことによって実行を再開する。この機能は、ｋｏｓオブジェクトを用いてＫＯＳインフラストラクチャと対話する。
【０１７１】
最上位ＫＰオブジェクトの＿ｍａｉｎ＿メソッドに渡されるｋｏｓオブジェクトは、基礎をなすＫＯＳインフラストラクチャの全ての機能にアクセスするために用いられる。
【０１７２】
ＫＯＳ ＡＰＩは、フックとしてノウボット・プログラミング言語内に用いられ、ノウボット・オペレーティングシステム及びそのエクステンションとのインタフェースをとるインタフェース定義のセットである。例えば、ＫＯＳ ＡＰＩは、ノウボット・プログラム可動性のための低レベル・ファシリティを提供する。また、ノウボット・プログラムが終了に際しリモートの送り主に戻るのを可能にするファシリティがある。実現には、クローンを作る場所に戻される全ての結果により様々な場所で同様のコードを実行するためにノウボット・プログラムのクローンを作る又は分岐する能力を含む。
【０１７３】
ＫＯＳへの問い合わせ
ＫＯＳは、ノウボット・プログラムが、それが現在管理しているノウボット・プログラムのセットに問い合わせるためのメカニズムを提供する。この問合せメカニズムは、キー・メタデータ及びメタデータからの値に基づく認定された選択をサポートする。得られた一致するノウボット・プログラムのセットは、発呼者が適切なアクセス権を有するものを含むのみである。問合せは、一致するノウボット・プログラムに１セットのハンドルを戻す。
【０１７４】
利用できるリソースのおよその量（例えばメモリ又はＣＰＵサイクル）又はあるエクステンションのアベイラビリティなどノウボット・プログラムの適当な動作に必要な他の特性についてもＫＯＳは問い合わせを受ける。ＫＯＳは、戻された情報を発呼者のアクセス権に応じて検閲する。
【０１７５】
ＫＯＳは、ノウボット・プログラムが実行時に重大な状態に達すると、家に電話をかけ、確認を求めることができる手段を提供する。サーバーＫＯＳは、実行ノウボット・プログラムから要求を受信し、それに着手したクライアントＫＳＳに質問を表示する。サーバーＫＯＳは、サービスを要求しているクライアントＫＯＳと接触する。クライアントＫＳＳは、応答を待っているクライアントＫＳＳのディスプレイ上に質問ウインドウを表示する。その応答が得られると、クライアントＫＳＳは答えをサーバーＫＳＳに転送し、それは次に応答を実行ノウボット・プログラムに転送する。このシナリオにおいて、サーバーＫＳＳが応答を待つ間に、実行ノウボット・プログラムを「待機」状態に移したことは可能である。この場合、サーバーＫＳＳは、ノウボット・プログラムをスケジューリングし、「目ざめさせ」、実行が中断したところから開始される。
【０１７６】
ＫＯＳエクステンション
あらゆるＫＯＳがノウボット・プログラムに与える標準ノウボット・プログラム及びデジタル・オブジェクト・サービスのセットの他に、ローカルなデータベースの検索、ＫＯＳと共に位るリソースへのアクセスなどＫＯＳは更なるサービスをエクスポートする。これらのエクステンションは、ノウボット・プログラムが利用できるようにされなければならない。ノウボット・プログラムは、名前（例えば、エクステンション・ハンドル）によって特定のエクステンションををサポートするかどうかをホストＫＯＳに尋ねる。
【０１７７】
ＫＯＳが特定のエクステンションをサポートすることをノウボット・プログラムが一旦確認したら、そのエクステンションについてのそのＡＰＩをそのＫＯＳの実現に結び付ける。同一のメカニズムが異なるノウボット・プログラム間での通信に用いられる。たとえ、通信の実際の実現がＫＯＳによって媒介されるとしても、ノウボット・プログラムは直接互いに通信する概念を受け入れる。すなわち、セキュリティ違反、リソース濫用又は監視している他の規則の違反を検出しない限り、ＫＯＳはトランスペアレントである。
【０１７８】
トリガー言語
トリガー・プロトコルは、ＫＰ対話処理を引き起こす条件をＫＯＳに告げるトリガー言語を実現する。ＫＰを書くのにどの言語が用いられるかに拘わらず、事象に基づいてスケジューリングに参加するために、それはＫＯＳトリガー・プロトコル（ＫＴＰ）の一部又は全体を実施しなければならない。
【０１７９】
ＫＴＰは、解析可能で速く効率的な条件つきのコード・ブロックに容易にコンパイルされる単純な記述言語である。例えば、ワールドワイド・ウェブ・サイト文書階層の変更ページに対応する可変カウンターを増加させるバッチ・プロセスを有するＫＰを仮定する。ＫＰはウェブ・サイトに対応するＫＯＳに定期的、効率的に、トリガーによって表される条件文の新しいヒットをスキャニングしつつ留まる。ＫＴＰは、ＫＰ又はＫＯＳの対話処理がいつ起きるかを確定するために実行されるプログラムを引き起こす。
【０１８０】
４つのスケジューリング・パラダイムがある。すなわち、定期的、遅れて、即座の、及び条件つきのトリガー・メカニズムによる、である。条件つきのトリガーは最も複雑で、ノウボット・プログラムが強力な情報発見ツールを実現することを可能にする。
【０１８１】
トリガーは、ノウボット・プログラムがＫＯＳに「条件」を登録することを可能にする。満たされると、即座に、ノウボット・プログラムは起こされる。
【０１８２】
ＫＯＳトリガー言語は、ノウボット・プログラムのスケジューリング制約及びその同類を特定することを目的とする単純な記述言語である。たとえば、ＫＰが特定の日付及び時間に動作するように用いることができる。繰り返し、例えば、１時間ごと、週日の夜、月の最後の金曜日などである。システムの状態が真になる条件、あるタイプの他のＫＰが到着したとき、システムの負荷が一定の閾値に達したとき、他のＫＰが特定のフラグを上げたとき等である。
【０１８３】
トリガー言語の構文の実現は、パイソンのような又はＬｉｓｐ状であってもよい。トリガー言語プログラムは、任意の数のトリガー文から成る。トリガー文の配列は、それらの意味には重要でない。トリガー文は、３つの部分から成る。すなわち、状態、許容差、行動である。
【０１８４】
条件は、変数、番号、ストリング、算術、比較及びブーリアンをサポートする単純な言語のブール演算式である。
【０１８５】
許容差は、同一の言語の表現であり、秒単位の時間間隔として行動の緊急度を示している。条件が許容度の時間間隔内で速く振動する場合、行動は一度だけ実行される。これはヒントだけである、すなわち、その意味は、正確な仕様としてではなく、頻繁な冗長トリガーを避けるのに役立つものとしてである。
行動は、状態が真になるときになされる（おそらくリモート）メソッド呼出しの仕様である。
【０１８６】
テーブルは、全てのトリガー表現を含むＫＯＳにおいて作成されてもよい。テーブルの各エントリは、追加のフィールドを有してもよい。トリガーされ続ける（もしあれば）ときの表現の値、既にトリガーするように設定されたかを告げるフラグ、行動が実行されるときの時間（許容差に基づく）である。時間が来たときに、表現は再評価される、現在の値が格納され、フラグ及び時間はクリアされ、次に、行動が実行される（全て自動的に）。
【０１８７】
行動は、形式オブジェクト・メソッド（引き数）を有する。オブジェクトは、メソッド呼出しを受信するオブジェクトを指定する。通常、これはハンドルである。キーワード「ｓｅｌｆ（自己）」は、現在のトリガー・プログラムが関連するＥＰを指定するために用いられる。メソッドは、呼ばれるメソッドの名を指定する。
【０１８８】
信頼されたアプリケーション
ＫＯＥに関するいかなるアプリケーションも、ＫＯＥによって維持される信頼された環境の一部として認定されなければならない。認定されたＫＰは、ＫＯＥに登録される。アプリケーション全てではなく、信頼されなければならない部分のいくつかのアプリケーションは登録される必要がある。例えば、ユーザー・インタフェースは登録される必要はない。
【０１８９】
ユーザー・インタフェース
形式ベースの、及び他のユーザー・インタフェースは、エンドユーザによって用いられ、ノウボット・プログラムを構成、カスタマイズする。他のユーザー・インタフェース構成要素は、ユーザによって始められたローミング・ノウボット・プログラムにステータス情報を報告する。さらに、他のインタフェースはアドミニストレータによって用いられ、ノウボット・オペレーティング・システム上のリソース割当てを管理しモニターするためにその制御の下で用いられる。かかる全ての場合において、グラフィカル・ユーザー・インタフェース・フレームワークが、ノウボット動作環境内のユーザー・インタフェースをサポートするために用いられる。グレイル（Grail）は、インターネット情報ソースの多くの異なるタイプを有する通信のブラウザ・フレームワークの１つの例である。現在、それはＨＴＭＬ２．０準拠であって、レポジトリ・ベースのシステムと対話することができ、プラットホーム独立のグラフィカル・ユーザー・インタフェースの伸長可能なオープン・アーキテクチャを提供する。グレイルはパイソンにおいて実現される。
【０１９０】
ノウボット・プログラムが世に放たれタスクを実行し、それらはステータス情報を又はタスクの結果を定期的に報告する。必然的に、かかる報告はユーザとの対話を有し、おそらくは検索パラメータを明確にするために、追加の資金を要求し、又は単に生きておりタスクに取り組んでいることを知らせる。グレイルはパーソナルＫＳＳに関し全てのユーザー・インタフェース活動の焦点として役立つ。
【０１９１】
多数の標準検索・読出しノウボット・プログラムが存在し、ユーザがノウボット・プログラムを構築するときに利用できる、他の共通のノウボット・プログラム構成要素がある。これらの標準のノウボット・プログラム構成要素を構築及びカスタマイズするのに形式ベースの対話を提供するグレイル・エクステンションが書かれてもよい（他の様々なプラットホームにポピュラな一種の視覚のプログラミング環境）。開発者はまた、より複雑なノウボット・プログラム又は構成要素を造るのに、標準のプログラム開発、テスト及びデバッグ・ツールを必要とする。グレイルは、基礎をなす言語ツール及びエディタにインタフェースをとる、この点の能力においても開発者に役立つ。パイソン・ノウボット・プログラムの場合、グレイルはネイティブのデバッギング及びテスティング・エクステンションさえ含み、開発者がそのようなプログラムを直接書いて、テストすることを可能にする。非パイソン・ノウボット・プログラムについては、それらの外国語ツールとインタフェースをとるグレイル・エクステンションが書かれる。
【０１９２】
また、グレイル・エクステンションは、ＫＳＳアドミニストレータがそれらの環境内で現在生きているノウボット・プログラムをモニターし、管理するために必要とするツールを提供する。グレイルは、ＫＳＳ内のノウボット・プログラムに直接接続するための方法をＫＳＳアドミニストレータに提供し、ＫＳＳアドミニストレータが、例えば、いくつかのノウボット・プログラムを休止させたり、追い出したりすることを可能にする。
【０１９３】
他の実施例は、以下の請求項の範囲内である。
【図面の簡単な説明】
【０１９４】
【図１】インターネット・フレームワークのブロック図である。
【図２】ノウボット・フレームワークのブロック図である。
【図３】ノウボット動作環境のブロック図である。
【図４】ノウボット・サービス局のブロック図である。
【図５】ノウボット・サービス局のブロック図である。
【図６】ノウボット・プログラムの内容の図である。
【図７】ノウボット・プログラム及びノウボット・オペレーティングシステムのブロック図である。
【図８】ノウボット・プログラムを移送するためのパッケージの図である。
【図９】コネクタ・ファシリティのブロック図である。
【図１０】ＫＰプロセスのブロック図である。
【図１１】要塞オブジェクトを図示する。
【図１２】ノウボット・プログラムの最上位構造を図示する。
【図１３】ウボット・プログラムの１例である。
【図１４】ランザクション・マネージャのブロック図である。
【図１】
2007109246.tif 000003
【図２】
2007109246.tif 000004
【図３】
2007109246.tif 000005
【図４】
2007109246.tif 000006
【図５】
2007109246.tif 000007
【図６】
2007109246.tif 000008
【図７】
2007109246.tif 000009
【図８】
2007109246.tif 000010
【図９】
2007109246.tif 000011
【図１０】
2007109246.tif 000012
【図１１】
2007109246.tif 000013
【図１２】
2007109246.tif 000014
【図１３】
2007109246.tif 000015
【図１４】
2007109246.tif 000016