(57)【要約】  コンピューティングシステム内で規則エンジンをプラットフォームとして最適化するためのシステムおよび方法について開示する。コンピューティングシステムは、コンピューティングシステムまたはコンピューティングシステムのユーザの環境や状況など、対象のコンテキストを識別し得る。対象となっている、識別されたコンテキストに基づいて、規則エンジンプラットフォームは、対象のコンテキストに関連する規則または規則のセットを選択的に識別し得る。したがって、対象のコンテキストに無関連である規則または規則のセットは、評価から省かれ得る。したがって、コンピューティングシステムのリソースは、いくつかの実施形態において、規則の間の競合を解決し、対象のコンテキストに適さないアクションを生じることとなる規則を評価することによって、消費されない。【選択図】図２
2015535381.tif 000002
【特許請求の範囲】
【請求項１】
ユーザに関連付けられたシステムによって実行される、規則エンジンを適合させるための方法であって、
第１のサンプリングモジュールからの受信サンプルおよび予想サンプルのうちの少なくとも１つに基づいて、前記システムの第１のコンテキストを決定することと、
第１の複数の規則のうちの少なくとも１つの規則を識別することと、ここで、前記識別された少なくとも１つの規則は前記第１のコンテキストに関連し、
前記第１のコンテキストについての前記識別された関連規則を評価することと、
前記第１のコンテキストに無関連である、前記第１の複数の規則中の残りの少なくとも１つの規則を、前記少なくとも１つの規則が前記第１のコンテキストについて評価されないように無視することと、
を備える方法。
【請求項２】
前記少なくとも１つの関連規則を識別することは、
前記第１の複数の規則から、前記少なくとも１つの規則を含む、前記第１のコンテキストに関連する第２の複数の規則を有する関連規則セットを識別することを備える、請求項１に記載の方法。
【請求項３】
前記関連規則セットの各規則を評価することをさらに備える、請求項２に記載の方法。
【請求項４】
前記第１の複数の規則から、前記第１のコンテキストに関連するとともに評価されるべきである第３の複数の規則を有する第２の規則セットを識別することをさらに備える、請求項２に記載の方法。
【請求項５】
前記第１のコンテキストは前記ユーザのオフィスであり、前記関連規則セットはオフィスコンテキストに関連する、請求項２に記載の方法。
【請求項６】
前記第１のコンテキストは、ロケーションおよびジオフェンスのうちの１つである、請求項１に記載の方法。
【請求項７】
前記第１のサンプリングモジュールは、セルラーモジュール、Ｂｌｕｅｔｏｏｔｈモジュール、Ｗｉ−Ｆｉモジュール、ユーザ入力モジュール、ニアフィールド通信モジュール、衛星測位システムモジュール、または前記システムのメモリに記憶されたアプリケーションモジュールのうちの１つである、請求項６に記載の方法。
【請求項８】
前記第１のコンテキストに関連する少なくとも１つのファクトを識別することをさらに備える、請求項１に記載の方法。
【請求項９】
前記関連規則によって必要とされる前記少なくとも１つのファクトを識別するために、前記関連規則を分解することをさらに備える、請求項８に記載の方法。
【請求項１０】
前記第１のコンテキストに関連する前記少なくとも１つのファクトを識別することは、
前記少なくとも１つのファクトを含む、前記第１のコンテキストに関連する複数のファクトを有する関連ファクトセットを識別することを備える、請求項８に記載の方法。
【請求項１１】
前記第１のコンテキストに基づいて、前記少なくとも１つのファクトをアサートすることをさらに備える、請求項８に記載の方法。
【請求項１２】
前記第１のコンテキストは、前記ユーザが運転中であることを示し、前記少なくとも１つのファクトは、前記第１のコンテキストに基づいて、前記ユーザが遷移中であることを示すようにアサートされる、請求項１１に記載の方法。
【請求項１３】
前記第１のコンテキストに関連しない第２のファクトをデフォルトにアサートすることをさらに備える、請求項８に記載の方法。
【請求項１４】
前記第１のコンテキストに関連しない前記第２のファクトをアサートすることは、
前記第２のファクトを含む、前記第１のコンテキストに関連しない複数のファクトを有する第２のファクトセットを識別することと、
前記第２のファクトセット中の前記複数のファクトの各ファクトをデフォルトにアサートすることと、
を備える、請求項１３に記載の方法。
【請求項１５】
前記関連規則を満足することを求められる、第２のサンプリングモジュールによって提供される、第２の受信サンプルおよび第２の予想サンプルのうちの少なくとも１つについてのサンプリング要件を決定することと、
前記関連規則の前記サンプリング要件に基づいて、最適化方式を計算することと、
前記最適化方式に基づいて、前記第２のサンプリングモジュールのサンプリングレートを修正することと、
をさらに備える、請求項１に記載の方法。
【請求項１６】
前記サンプリングレートを修正することは、
前記第２のサンプリングモジュールへのサブスクリプションを修正することを備える、請求項１５に記載の方法。
【請求項１７】
前記第１のコンテキストに関連する規則セットを満足することを求められる複数のサンプリング要件を決定することと、ここで、前記規則セットは、前記関連規則を含む複数の規則を備え、
前記関連規則のセットの前記複数のサンプリング要件に基づいて、最適化方式を計算することと、
前記最適化方式に基づいて、前記複数のサンプリング要件のそれぞれのサンプリング要件についての少なくとも１つのサンプルを提供するべきである第２のサンプリングモジュールのサンプリングレートを修正することと、
をさらに備える、請求項１に記載の方法。
【請求項１８】
前記最適化方式を計算することは、
前記複数のサンプリング要件を評価することと、
前記複数のサンプリング要件の前記評価から、第１の規則の第１のサンプリング要件が、前記第２のサンプリングモジュールからのサンプルを第１のレートで必要とし、第２の規則の第２のサンプリング要件が、前記第２のサンプリングモジュールからの前記サンプルを、前記第１のレートとは異なる第２のレートで必要とすると決定することと、
前記第１の規則および前記第２の規則にとって満足できる、前記第２のサンプリングモジュールの最適サンプリングレートを指定する最適化パラメータを計算することと、
を備える、請求項１７に記載の方法。
【請求項１９】
前記第１のサンプリングモジュールによって提供されるサンプルを受信することを備え、決定することは、
提供されるべき前記サンプルと、記憶されたコンテキストとの間のマッピングを識別することと、
前記第１のコンテキストが、前記記憶されたコンテキストを含むと決定することとを備える、請求項１に記載の方法。
【請求項２０】
前記サンプルはＷｉ−Ｆｉシグネチャであり、前記記憶されたコンテキストは建物内の部屋である、請求項１９に記載の方法。
【請求項２１】
前記第１のコンテキストと第２のコンテキストとの間の関係を導出することをさらに備える、請求項１に記載の方法。
【請求項２２】
前記第１のコンテキストは、前記ユーザが自宅にいることを示し、前記第２のコンテキストは、前記ユーザがオフィスにいることを示し、前記導出された関係は、前記ユーザが前記自宅から前記オフィスに移動するための移動持続時間を含む、請求項２１に記載の方法。
【請求項２３】
少なくとも１つのサンプリングモジュールを含む複数のモジュールと、前記サンプリングモジュールは前記サンプリングモジュールに関連付けられたサンプルを送るように構成され、
複数の規則を記憶するように構成された規則リポジトリと、前記サンプリングモジュールからの受信サンプルおよび予想サンプルのうちの少なくとも１つに基づいて、前記コンピューティングシステムの対象のコンテキストを決定するように構成されたコンテキスト認識エンジンと、前記対象コンテキストに基づいて、前記対象コンテキストに関連する、前記複数の規則に含まれる規則の第１のセットを識別するとともに規則の前記第１のセットの少なくとも１つの規則を評価するように構成された規則エンジンと、を含む規則エンジンプラットフォームを実行するように動作可能なプロセッサと、
を備えるコンピューティングシステム。
【請求項２４】
前記プロセッサは、前記複数のモジュールのそれぞれのモジュールを実行するようにさらに構成される、請求項２３に記載のコンピューティングシステム。
【請求項２５】
前記規則エンジンは、
前記対象コンテキストに関連しない、前記複数の規則に含まれる規則の第２のセットを、前記第２のセットに含まれるどの規則も、前記対象コンテキストについて評価されないように、無視するようにさらに構成される、請求項２３に記載のコンピューティングシステム。
【請求項２６】
前記規則エンジンは、前記対象コンテキストに関連する、前記複数の規則に含まれる規則の第３のセットを識別するようにさらに構成される、請求項２３に記載のコンピューティングシステム。
【請求項２７】
前記規則エンジンは、競合解決アジェンダによる評価のために前記少なくとも１つの規則を識別するようにさらに構成され、ここで、前記少なくとも１つの規則は、前記対象コンテキストに関連する規則の前記第１および第３のセットのうちの１つに含まれる第２の規則と競合する、請求項２６に記載のコンピューティングシステム。
【請求項２８】
前記コンテキスト認識エンジンは、少なくとも１つのサンプルの受信と前記少なくとも１つのサンプルがないこととのうちの１つに基づいて、前記対象コンテキストを決定するように構成される、請求項２３に記載のコンピューティングシステム。
【請求項２９】
前記対象コンテキストは、前記コンピューティングシステムのユーザが、会議中、話し合い中、電話中、ジオフェンスの近くにいる、人の近くにいる、自宅にいる、会議に遅れる、および運転中のうちの１つであることを示す、請求項２３に記載のコンピューティングシステム。
【請求項３０】
前記対象コンテキストは、瞬間的コンテキスト、期待されるコンテキストおよび頻発するコンテキストのうちの１つである、請求項２３に記載のコンピューティングシステム。
【請求項３１】
前記サンプリングモジュールは、セルラーモジュール、Ｂｌｕｅｔｏｏｔｈモジュール、Ｗｉ−Ｆｉモジュール、ユーザ入力モジュール、ニアフィールド通信モジュール、全地球測位システムモジュール、または前記コンピューティングシステムのメモリに記憶されたアプリケーションモジュールのうちの１つである、請求項２３に記載のコンピューティングシステム。
【請求項３２】
前記規則エンジンは、前記対象コンテキストに基づいて、前記対象コンテキストに関連する少なくとも１つのファクトを識別するようにさらに構成される、請求項２３に記載のコンピューティングシステム。
【請求項３３】
前記規則エンジンは、規則の前記第１のセットの前記少なくとも１つの規則によって必要とされる前記少なくとも１つのファクトを識別するために、前記対象コンテキストに基づいて識別される規則の前記第１のセットに含まれる前記規則を分解するように構成される、請求項３２に記載のコンピューティングシステム。
【請求項３４】
前記規則エンジンは、前記対象コンテキスト、少なくとも１つのサンプルの受信、および前記少なくとも１つのサンプルがないことのうちの１つから、前記識別されたファクトをアサートするようにさらに構成される、請求項３２に記載のコンピューティングシステム。
【請求項３５】
前記規則エンジンは、前記対象コンテキストに関連しない複数のファクトを、ヌルおよび偽のうちの１つにアサートするようにさらに構成される、請求項２３に記載のコンピューティングシステム。
【請求項３６】
前記規則エンジンは、第２のサンプリングモジュールにサブスクライブするように、および前記第２のサンプリングモジュールへの前記サブスクリプションを、前記対象コンテキストに基づいて修正するようにさらに構成される、請求項２３に記載のコンピューティングシステム。
【請求項３７】
前記規則エンジンは、前記第２のサンプリングモジュールが問い合わされるレート、前記第２のサンプリングモジュールがポーリングされるレート、および前記第２のサンプリングモジュールからのサンプリングストリーム中で受信された複数のサンプルが記憶されるレートのうちの１つを修正することによって、前記サブスクリプションを修正するように構成される、請求項３６に記載のコンピューティングシステム。
【請求項３８】
前記対象コンテキストは、前記コンピューティングシステムのユーザが人の近くにいることを示し、さらに、前記規則エンジンプラットフォームは、前記人についてのコンタクト情報を含むサンプルが受信されるように、前記第２のサンプリングモジュールへの前記サブスクリプションを修正するように構成される、請求項３６に記載のコンピューティングシステム。
【請求項３９】
前記規則エンジンプラットフォームは、
前記対象コンテキストに関連する、前記第１のセットの規則を満足することを求められる複数のサンプリング要件を決定し、
前記複数のサンプリング要件に基づいて最適化方式を計算し、および
前記最適化方式に基づいて、少なくとも１つの必要とされるサンプルを提供するように構成された第２のサンプリングモジュールのサンプリングレートを修正する
ように構成された最適化エンジンをさらに含む、請求項２３に記載のコンピューティングシステム。
【請求項４０】
前記規則エンジンは、前記対象コンテキストと第２のコンテキストとの間の関係を導出するようにさらに構成される、請求項２３に記載のコンピューティングシステム。
【請求項４１】
複数の規則を規則リポジトリに記憶するための手段と、
複数のサンプルを提供するように構成された複数のモジュールにサブスクライブするための手段と、
前記サブスクライブする手段に基づいて、対象のコンテキストを識別するための手段と、
前記対象コンテキストに関連する規則の第１のセットを識別するための手段と、
規則の前記第１のセットに含まれる少なくとも１つの規則を評価するための手段と、
を備えるコンピューティングシステム。
【請求項４２】
命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記命令は、コンピューティングシステムによって実行されると、前記コンピューティングシステムに方法を実施させ、前記方法は、
第１のサンプリングモジュールからの受信サンプルおよび予想サンプルのうちの少なくとも１つに基づいて、前記コンピューティングシステムの第１のコンテキストを決定することと、
第１の複数の規則のうちの少なくとも１つの規則を識別することと、ここで、前記識別された少なくとも１つの規則は前記第１のコンテキストに関連し、
前記第１のコンテキストについての前記識別された関連規則を評価することと、
前記第１のコンテキストに無関連である、前記第１の複数の規則中の残りの少なくとも１つの規則を、前記少なくとも１つの規則が前記第１のコンテキストについて評価されないように無視することと、
を備える非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は概して、たとえば、コンピューティングシステムにおいて実装されるポータブル電子デバイスに関する。
【背景技術】
【０００２】
[0002]一般の人々によるポータブル電子デバイスの使用は、地球上のどこにおいても見られる。そのようなポータブル電子デバイスは、ワイヤレス電話アクセス、インターネットアクセス、ｅメールおよびメッセージングサービス、時間およびアクティビティ編成、ロケーションおよびマッピングサービス、メディアプレゼンテーション、ならびに追加サービスなど、１つまたは複数のサービスを、ユーザに提供することができる。そのようなポータブル電子デバイスの例は、モバイルデバイス、スマートフォン、セルラーフォン、携帯情報端末（ＰＤＡ）、タブレットコンピュータ、パーソナルメディアプレーヤならびに同様の機能性を提供する他のどんなタイプのポータブル電子デバイスも含む。
【０００３】
[0003]広範なサービスをユーザに提供する過程において、ポータブル電子デバイスは、多数の属性を収集し、観察し、管理するように動作可能であり得る。ユーザ入力を通して受信された項目が投入された、やることリストなど、いくつかの属性は、デバイスのユーザに関連付けられてよい。他の属性は、デバイスのランダムアクセスメモリ（ＲＡＭ）容量またはデバイスのバッテリに残っている充電レベルなど、デバイスの静的および／または動的特性であり得る。ポータブル電子デバイス上のアプリケーションは、デバイスに、そのような収集または観察された属性に応答して特定の動作を実施させることができる。たとえば、アプリケーションは、観察されたバッテリ充電が減少したとき、デバイスに、Ｗｉ−Ｆｉ（登録商標）接続性を不能にさせることができる。ただし、そのようなアプリケーションは、アプリケーションにおけるあらかじめ規定されたオプションが小さいものであるにもかかわらず、デバイス上での実装の時点では静的である（たとえば、ユーザは、デバイスのバッテリが「減少した」と見なされる場合であっても、アプリケーションを、Ｗｉ−Ｆｉ接続性を可能にするように構成することができる）。バッテリ充電や地理的ロケーションなどの属性を各々が個々に要求する、デバイス上の複数のアプリケーションは、デバイスのプロセッサと電力源の両方にとってコストがかかる。
【発明の概要】
【０００４】
[0004]本発明の実施形態は、規則エンジンプラットフォームを提供するように動作可能なポータブル電子デバイスに関する。一実施形態では、ポータブル電子デバイス内の規則エンジンプラットフォームは、ポータブル電子デバイスの１つまたは複数のモジュール（たとえば、構成要素）向けの複数の規則を受信し得る。さらに、規則エンジンは、ポータブル電子デバイス内のモジュールのうちの１つまたは複数から、１つまたは複数のサンプルを受信し得る。サンプルは、センサからの未加工入力データ、センサからの処理済みデータ、カレンダなどのポータブル電子デバイス上で稼動するアプリケーションからのデータ、ユーザプロファイル、ソーシャルネットワーキング情報、またはモジュールによって提供され得る他のどのデータであってもよい。いくつかの実施形態では、サンプルは、コンテキスト認識エンジンによって導出されるサンプル、たとえば動き状態もしくは分類子（classifier）または社会的環境もしくはサンプルを備える。サンプルまたはサンプルからの推論は、ファクト（fact）としてアサート（assert）されてよく、規則エンジンは、ファクトを１つまたは複数の関連規則と突き合わせる（match）。規則エンジンは、関連規則ベースのアサートされたファクトを評価して、１つまたは複数のアクションを決定する（別の規則を評価することを含む）。いくつかの実施形態では、この規則評価は、もう１つの受信サンプルに基づいて１つまたは複数の推論を行うことを備える。規則が真と評価される場合、規則エンジンはアクションを決定し、この決定は、追加規則を評価することを含み得る。この決定されたアクションは次いで、ポータブル電子デバイス内の他のモジュールに提供され得る。
【０００５】
[0005]本発明の実施形態は、規則エンジンを、ポータブル電子デバイス内のプラットフォームとして最適化するための他の構成要素を含む。多くの実施形態において、規則エンジンをプラットフォームとして最適化するための規則エンジンインターフェースが、規則エンジンに関連して提供される。規則エンジンインターフェースは、１つまたは複数のモジュールからの１つまたは複数のサンプルを受信または監視し、それらの１つまたは複数のサンプルを規則エンジンに適切に適合させるように構成され得る。プラットフォームの補足構成要素として、いくつかの実施形態では、規則リポジトリおよび／または知識リポジトリが提供され得る。規則リポジトリは、規則エンジンによってアクセス可能な複数の規則を記憶するように構成され得る。知識リポジトリは、サンプルや推論など、複数のファクトを記憶するように動作可能であり得る。これらのリポジトリの一方または両方が、資産管理、規則に関連付けられた推論データおよびメタデータ、サンプルまたは規則エンジンと対話するモジュールを維持することができる。
【０００６】
[0006]いくつかの実施形態では、装置が、第１のサンプリングモジュールからの受信サンプルおよび予想サンプルのうちの少なくとも１つに基づいて、システムの第１のコンテキストを決定するための手段と、第１の複数の規則のうちの少なくとも１つの規則を識別するための手段と、ここで、識別された少なくとも１つの規則は該第１のコンテキストに関連し、第１のコンテキストについての識別された関連規則を評価するための手段と、を備える。いくつかの実施形態では、該少なくとも１つの関連規則を識別するための手段は、該第１の複数の規則から、該少なくとも１つの規則を含む、第１のコンテキストに関連する第２の複数の規則を有する関連規則セットを識別するための手段を備える。いくつかの実施形態では、装置は、該関連規則セットの各規則を評価するための手段をさらに備える。いくつかの実施形態では、装置は、第１の複数の規則から、第１のコンテキストに関連するとともに評価されるべきである第３の複数の規則を有する第２の規則セットを識別するための手段をさらに備える。いくつかの実施形態では、第１のコンテキストは、ユーザのオフィスであり、関連規則セットは、オフィスコンテキストに関連する。いくつかの実施形態では、第１のコンテキストは、ロケーションおよびジオフェンスのうちの１つである。いくつかの実施形態では、第１のサンプリングモジュールは、セルラーモジュール、Ｂｌｕｅｔｏｏｔｈ（登録商標）モジュール、Ｗｉ−Ｆｉモジュール、ユーザ入力モジュール、ニアフィールド通信モジュール、衛星測位システムモジュール、またはシステムのメモリ中に記憶されたアプリケーションモジュールのうちの１つである。いくつかの実施形態では、装置は、第１のコンテキストに関連する少なくとも１つのファクトを識別するための手段をさらに備える。いくつかの実施形態では、装置は、該関連規則によって必要とされる該少なくとも１つのファクトを識別するために、該関連規則を分解するための手段をさらに備える。いくつかの実施形態では、第１のコンテキストに関連する該少なくとも１つのファクトを識別するための手段は、該少なくとも１つのファクトを含む、第１のコンテキストに関連する複数のファクトを有する関連ファクトセットを識別するための手段を備える。いくつかの実施形態では、装置は、第１のコンテキストに基づいて、該少なくとも１つのファクトをアサートするための手段をさらに備える。いくつかの実施形態では、第１のコンテキストは、ユーザが運転中であることを示し、第１のコンテキストに基づいて、ユーザが遷移中であることを示すように、該少なくとも１つのファクトがアサートされる。いくつかの実施形態では、装置は、第１のコンテキストに関連しない第２のファクトをデフォルトにアサートするための手段をさらに備える。いくつかの実施形態では、第１のコンテキストに関連しない第２のファクトをアサートするための手段は、第２のファクトを含む、第１のコンテキストに関連しない複数のファクトを有する第２のファクトセットを識別するための手段と、第２のファクトセット中の複数のファクトの各ファクトをデフォルトにアサートするための手段とを備える。いくつかの実施形態では、装置は、関連規則を満足することが求められる、第２のサンプリングモジュールによって提供される第２の予想サンプルと第２の受信サンプルとのうちの少なくとも１つについてのサンプリング要件を決定するための手段と、関連規則のサンプリング要件に基づいて、最適化方式を計算するための手段と、最適化方式に基づいて、第２のサンプリングモジュールのサンプリングレートを修正するための手段とをさらに備える。いくつかの実施形態では、サンプリングレートを修正するための手段は、第２のサンプリングモジュールへのサブスクリプション（subscription）を修正するための手段を備える。いくつかの実施形態では、装置は、第１のコンテキストに関連する規則セットを満足することが求められる複数のサンプリング要件を決定するための手段と、ここで、規則セットは、関連規則を含む複数の規則を備え、関連規則セットの複数のサンプリング要件に基づいて最適化方式を計算するための手段と、最適化方式に基づいて、複数のサンプリング要件のうちのそれぞれのサンプリング要件についての少なくとも１つのサンプルを提供するべき第２のサンプリングモジュールのサンプリングレートを修正するための手段とをさらに備える。いくつかの実施形態では、最適化方式を計算するための手段は、複数のサンプリング要件を評価するための手段と、複数のサンプリング要件の評価から、第１の規則の第１のサンプリング要件が、第２のサンプリングモジュールからのサンプルを第１のレートで必要とし、第２の規則の第２のサンプリング要件が、第２のサンプリングモジュールからのサンプルを、第１のレートとは異なる第２のレートで必要とすると決定するための手段と、第１の規則および第２の規則にとって満足できる、第２のサンプリングモジュールの最適サンプリングレートを指定する最適化パラメータを計算するための手段とを備える。いくつかの実施形態では、装置は、第１のサンプリングモジュールによって提供されたサンプルを受信するための手段をさらに備え、ここで、決定するための手段は、提供されるべきサンプルと、記憶されたコンテキストとの間のマッピングを識別するための手段と、第１のコンテキストが、記憶されたコンテキストを含むと決定するための手段とを備える。いくつかの実施形態では、サンプルはＷｉ−Ｆｉシグネチャであり、記憶されたコンテキストは建物内の部屋である。いくつかの実施形態では、装置は、第１のコンテキストと第２のコンテキストとの間の関係を導出するための手段をさらに備える。いくつかの実施形態では、第１のコンテキストは、ユーザが自宅にいることを示し、第２のコンテキストは、ユーザがオフィスにいることを示し、導出された関係は、ユーザが自宅からオフィスに移動するための移動持続時間を含む。
【０００７】
[0007]いくつかの実施形態では、コンピューティングシステムは、複数の規則を規則リポジトリ中に記憶するための手段と、複数のサンプルを提供するように構成された複数のモジュールにサブスクライブ（subscribe）するための手段と、サブスクライブするための手段に基づいて、対象のコンテキストを識別するための手段と、対象のコンテキストに関連する規則の第１のセットを識別するための手段と、規則の第１のセットに含まれる少なくとも１つの規則を評価するための手段とを備える。いくつかの実施形態では、規則の第１のセットを識別するための手段は、対象のコンテキストに関連しない規則の第２のセットを無視するための手段を含む。いくつかの実施形態では、対象のコンテキストは、コンピューティングシステムのユーザが、（１）会議中、（２）話し合い中、（３）電話中、（４）ジオフェンスの近くにいる、（５）人の近くにいる、（６）自宅にいる、または（７）運転中のうちの１つであることを示す。いくつかの実施形態では、コンピューティングシステムは、対象のコンテキストに関連する少なくとも１つのファクトを識別するための手段をさらに備える。いくつかの実施形態では、コンピューティングシステムは、第２のサンプリングモジュールにサブスクライブし、対象のコンテキストに基づいて、第２のサンプリングモジュールへのサブスクリプションを修正するための手段をさらに備える。
【０００８】
[0008]いくつかの実施形態では、デバイスによって実行される方法は、第１のモジュールによって提供される少なくとも１つのサンプルに基づいて、デバイスの第１のコンテキストを決定することと、第１のコンテキストに基づいて、第１の複数の規則中のサブセットの規則を識別することと、サブセットの規則は第１のコンテキストに適用可能であり；サブセットの規則中の少なくとも１つの規則を評価することとを備える。
【図面の簡単な説明】
【０００９】
【図１】本発明の一実施形態によるポータブル電子デバイスのブロック図。
【図２】本発明の一実施形態による、ポータブル電子デバイス内に設けられる規則エンジンプラットフォームを示すシーケンス図。
【図３Ａ】本発明の一実施形態による、ポータブル電子デバイス内の規則エンジンによって実施される方法を示す流れ図。
【図３Ｂ】本発明の一実施形態による、ポータブル電子デバイス内の規則エンジンによって実施される方法を示す流れ図。
【図４】本発明の一実施形態による、ポータブル電子デバイスによって提供される規則エンジンプラットフォームによって規則を作成するための構成要素を示すブロック図。
【図５】本発明の一実施形態による、ポータブル電子デバイスによって提供される規則エンジンプラットフォームによって規則を動的に作成するための方法を示す流れ図。
【図６】本発明の一実施形態による、規則エンジンによって規則を評価するために使われるべきファクトをアサートする方法を示す流れ図。
【図７Ａ】本発明の一実施形態による、規則エンジンプラットフォームを実装することによって最適化されるシステムのブロック図。
【図７Ｂ】本発明の一実施形態による、規則エンジンプラットフォーム内の規則リポジトリのブロック図。
【図７Ｃ】本発明の一実施形態による、規則エンジンプラットフォーム内の知識リポジトリのブロック図。
【図８】本発明の一実施形態による、規則エンジンを含むシステムを最適化するための方法を示す流れ図。
【図９Ａ】本発明の一実施形態による、規則エンジンを含むシステムを最適化するための方法を示す流れ図。
【図９Ｂ】本発明の一実施形態による、規則エンジンを含むシステムを最適化するための方法を示す流れ図。
【発明を実施するための形態】
【００１０】
[0022]添付の図面に関連するいくつかの本発明の実施形態について、ここで説明する。以下の説明および図面は、本発明を例示するものであり、本発明を限定するものと解釈されるべきでない。本発明の様々な実施形態の完全な理解をもたらすために、多数の具体的な詳細が記載される。ただし、いくつかの事例では、本発明の実施形態の簡明な考察を提供するために、よく知られている、または従来の詳細については記載されない。
【００１１】
[0023]本明細書における「一実施形態」または「実施形態」への言及は、実施形態に関して説明する特定の特徴、構造、または特性が、本発明の少なくとも１つの実施形態中に含まれ得ることを意味する。本明細書中の様々な箇所における「一実施形態では」という句の出現は、必ずしもすべてが同じ実施形態を指すとは限らない。
【００１２】
[0024]本明細書で説明される実施形態は、コンピューティングシステム内のプラットフォームとして規則エンジンを提供するためのシステムと方法とを提供する。規則エンジンプラットフォームは、対象のコンテキストを識別するように構成され得、別のデバイスまたは要素によって決定されたコンテキストにアクセスすることが可能である。識別された対象のコンテキストから、規則エンジンプラットフォームは、対象のコンテキストに関連する規則または規則のセットを選択的に識別し得る。したがって、対象のコンテキストに無関連な規則または規則のセットは、評価から省かれ得る。同様に、対象のコンテキストに関連するファクトまたはファクトのセットが識別され得る。関連ファクトは、関連規則を評価するために使用され得、対象のコンテキストに関連しないファクトは無視され得る。
【００１３】
[0025]図１は、本発明の実施形態が実施され得るシステムを示すブロック図である。システムはポータブル電子デバイス１００であってよく、デバイス１００は、スマートフォン、セルラーフォン、携帯情報端末、タブレットコンピュータ、パーソナルメディアプレーヤなど、どのモバイルデバイスならびに同様または複合機能性を提供する、他のどんなタイプのポータブル電子デバイスであってもよい。デバイス１００は、触覚ボタン、電力デバイス（たとえば、バッテリ）、ならびに通常はポータブル電子デバイスに関連付けられた他の構成要素も含み得ることを諒解されたい。したがって、図１は、いくつかの構成要素が省かれているので、限定的なものと解釈されるべきでない。
【００１４】
[0026]図１に示される実施形態において、デバイス１００は、いくつかの構成要素における動作を実施するための命令を実行するように構成されたプロセッサ１１０を含み、たとえば、ポータブル電子デバイス内での実装に適した汎用プロセッサまたはマイクロプロセッサであってよい。プロセッサ１１０は、ポータブル電子デバイス１００内の複数の構成要素と通信可能に結合される。いくつかの実施形態では、プロセッサ１１０は、ハードウェアモジュール１０１、１０２の内部に存在してよい。この通信結合を実現するために、プロセッサ１１０は、バス１４０を超えて、他の図示される構成要素と通信することができる。バス１４０は、デバイス１００内でデータを転送するように適合されたどのサブシステムであってもよい。バス１４０は、複数のコンピュータバスであり、データを転送するための追加回路構成を含み得る。いくつかの実施形態では、バス１４０は、システムオンチップ（ＳｏＣ）で実装され、チップ上の様々な要素もしくは構成要素および／または１つもしくは複数のプロセッサのコアを接続する。ハードウェアモジュール１０１、１０２は、例として、オーディオサブシステム、カメラサブシステム、センササブシステムなど、モバイルデバイス内の個々のサブシステムを指す場合もある。
【００１５】
[0027]ストレージ１３５とメモリ１２０の両方が、プロセッサ１１０向けの命令とデータとを含み得る。ストレージ１３５は、バス１４０（図示されている）を介してローカルに、またはセルラーデータ、Ｗｉ−ＦｉもしくはＷｉＭａｘ（登録商標）ネットワーク（図示せず）などのネットワークを介してリモートに実装されてよい（たとえば、クラウドストレージ）。いくつかの実施形態では、ストレージ１３５は、たとえば読出し専用メモリ（ＲＯＭ）、フラッシュメモリなどの不揮発性メモリを含む。さらに、ストレージ１３５は、セキュアデジタル（ＳＤ）カードなどの取外し可能記憶デバイスを含み得る。ストレージ１３５は、たとえば、従来の磁気ディスク、ＣＤ−ＲＯＭやＤＶＤベースのストレージなどの光ディスク、磁気テープストレージ、光磁気（ＭＯ）記憶媒体、ソリッドステートディスク、フラッシュメモリベースのデバイス、またはデータを記憶するのに適した他のどのタイプの記憶デバイスであってもよい。
【００１６】
[0028]メモリ１２０は、短期記憶と長期記憶の両方を提供することができ、実際にはいくつかのユニットに分割され得る。メモリ１２０は、スタティックランダムアクセスメモリ（ＳＲＡＭ）および／または動的ランダムアクセスメモリ（ＤＲＡＭ）など、揮発性であってよい。メモリ１２０は、ポータブル電子デバイス１００向けの、コンピュータ可読命令、データ構造、アプリケーションモジュール、および他のデータの記憶を提供することができる。そのようなデータは、ストレージ１３５からロードされ得る。メモリ１２０は、キャッシュに置かれたプロセッサ１１０などのキャッシュメモリも含み得る。いくつかの実施形態では、メモリ１２０は、異なるハードウェアモジュール１０１〜１０２に分散されてよい。
【００１７】
[0029]いくつかの実施形態では、メモリ１２０は、複数のアプリケーションモジュール１０５〜１０６を記憶する。アプリケーションモジュール１０５〜１０６は、プロセッサ１１０によって実行されるべき特定の命令を含む。メモリ１２０は、任意の数のアプリケーションモジュールを記憶することができる。アプリケーションモジュール１０５〜１０６は、たとえば、カレンダアプリケーション、ジオフェンシングアプリケーション、電力管理アプリケーション、スマートアラートアプリケーション、ソーシャルメディアアプリケーション（たとえば、Ｔｗｉｔｔｅｒ（登録商標）やＦａｃｅｂｏｏｋ（登録商標））、またはプロセッサ１１０によって実行されるべき命令を有する、どのアプリケーションタイプモジュールであってもよい。
【００１８】
[0030]後述するように、本発明の実施形態は、デバイス１００のプロセッサ１１０および／またはデバイス１００の他の回路構成による命令の実行とともに実装可能であることを諒解されたい。詳細には、デバイス１００の回路構成は、プロセッサ１１０を含むがこれに限定されず、プログラムの制御、ルーチン、または本発明の実施形態による方法もしくはプロセスを実行するための命令の実行の下で動作し得る。たとえば、アプリケーションモジュール１０５〜１０６は、ファームウェア、ソフトウェアまたはハードウェアで実装されてよく、プロセッサ１１０および／またはデバイス１００の他の回路構成によって実行することができる。さらに、プロセッサ、マイクロプロセッサ、回路構成、コントローラなどの用語は、論理、コマンド、命令、ソフトウェア、ファームウェア、機能性などを実行することが可能な任意のタイプの論理または回路構成を指すことを諒解されたい。プロセッサ１１０の機能（複数可）は、多くの異なるサブモジュールおよびサブシステムにわたって分散されてもよく、必ずしも１つの物理エンティティにおいて全体が行われなければならないとは限らないことにも留意されたい。
【００１９】
[0031]いくつかの実施形態では、メモリ１２０はオペレーティングシステム１２３を含む。オペレーティングシステム１２３は、アプリケーションモジュール１０５〜１０６によって提供される命令の実行を開始し、ハードウェアモジュール１０１〜１０２を管理し、かつ／またはディスプレイモジュール１０３とユーザ入力モジュール１０４とを管理するように動作可能であり得る。オペレーティングシステム１２３は、スレッド化と、リソース管理と、データ記憶制御と、他の同様の機能性とを含む、デバイス１００の構成要素にわたる他の動作を実施するように適合され得る。
【００２０】
[0032]いくつかの実施形態では、ポータブル電子デバイス１００は、複数のハードウェアモジュール１０１〜１０２を含む。ハードウェアモジュール１０１〜１０２の各々は、デバイス１００内の物理モジュールである。ただし、ハードウェアモジュール１０１〜１０２の各々は、構造として永続的に構成されるが、ハードウェアモジュール１０１〜１０２は、特定の機能を実施するように一時的に構成されるか、または一時的にアクティブ化されればよい。一般的な例が、シャッター解放（release）および画像キャプチャのためにカメラモジュール（すなわち、ハードウェアモジュール）をプログラムすることができるアプリケーションモジュールである。ハードウェアモジュール１０１〜１０２は、たとえば、加速度計、Ｗｉ−Ｆｉトランシーバ、衛星ナビゲーションシステム受信機（たとえば、ＳＰＳモジュール）、圧力モジュール、温度モジュール、オーディオ出力および／または入力モジュール（たとえば、マイクロフォン）、カメラモジュール、近接センサ、周辺光センサ（ＡＬＳ）モジュール、静電容量式タッチセンサ、近距離通信（ＮＦＣ）モジュール、Ｂｌｕｅｔｏｏｔｈトランシーバ、セルラートランシーバ、磁力計、ジャイロスコープ、慣性センサ（たとえば、モジュール、コンバイン、加速度計およびジャイロスコープ）、周辺光センサ、相対湿度センサ、または感覚出力を提供し、かつ／または感覚入力を受信するように構成された他のどの同様のモジュールであってもよい。いくつかの実施形態では、ハードウェアモジュール１０１〜１０２の１つまたは複数の機能は、ソフトウェアで実装され得る。一実施形態では、ハードウェアモジュール１０１〜１０２は、たとえば、センサデータ（たとえば、未加工センサ出力）に加えて、いくつかの動作を実施するためのプロセッサと、メモリ（たとえば、キャッシュ）と、他の構成要素とを含むサブシステムとして実装され得る。
【００２１】
[0033]ハードウェアモジュール１０１〜１０２およびアプリケーションモジュール１０５〜１０６に加えて、ポータブル電子デバイス１００は、ディスプレイモジュール１０３とユーザ入力モジュール１０４とを有し得る。ディスプレイモジュール１０３は、デバイス１００からの情報を、ユーザに対してグラフィカルに提示する。この情報は、１つもしくは複数のアプリケーションモジュール１０５〜１０６、１つもしくは複数のハードウェアモジュール１０１〜１０２、それらの組合せ、またはユーザ向けのグラフィカルコンテンツを（たとえば、オペレーティングシステム１２３によって）分解する（resolving）ための、他のどの適した手段からも導出され得る。ディスプレイモジュール１０３は、液晶ディスプレイ（ＬＣＤ）技術、発光ポリマーディスプレイ（ＬＰＤ）技術、または他のディスプレイ技術であり得る。いくつかの実施形態では、ディスプレイモジュール１０３は、静電容量式または抵抗性タッチスクリーンであり、ユーザとの触覚（haptic）および／または触感（tactile）接触に感応し得る。そのような実施形態において、ディスプレイモジュール１０３は、マルチタッチセンシティブディスプレイを備え得る。
【００２２】
[0034]ユーザ入力モジュール１０４は、キーボード、トラックパッド、触覚ボタン、物理スイッチ、タッチスクリーン（たとえば、静電容量式タッチスクリーンや抵抗性タッチスクリーン）、オーディオ（たとえば、発話による）、カメラ（たとえば、ユーザが見ているロケーションを追跡することによる）、または同様のモジュールなど、ユーザからの入力を受諾するためのどの手段であってもよい。したがって、ユーザ入力モジュール１０４は、複数の構成要素に分散されてよい。ユーザ入力モジュール１０４がタッチスクリーンとして提供される実施形態において、ユーザ入力モジュール１０４は、ディスプレイモジュール１０３と統合され得る。別の実施形態においても、ユーザ入力モジュール１０４は、タッチスクリーンインターフェースと触覚ボタン（たとえば、キーボード）の両方を備え、したがって、ディスプレイモジュール１０３と部分的に統合されるだけである。ユーザ入力モジュール１０４は、ユーザ入力を、アプリケーションモジュール１０５〜１０６（たとえば、設定を変えることによって）およびハードウェアモジュール１０１〜１０２（たとえば、カメラモジュールのシャッター解放を引き起こすことによって）に提供することができる。いくつかの実施形態では、ユーザ入力モジュール１０４は、ユーザ入力が音（たとえば、ボイスコマンド）として受信され得るように、マイクロフォン（図示せず）を含む。
【００２３】
[0035]ポータブル電子デバイス１００は、本実施形態では規則エンジンインターフェース１３１、規則エンジン１３２、規則リポジトリ１３３、および知識リポジトリ１３４として示される規則エンジンプラットフォーム１３０を含む。規則エンジンプラットフォーム１３０は、ハードウェアアーキテクチャおよびソフトウェアフレームワークの一方または両方を含むコンピューティングプラットフォームであってよい。いくつかの実施形態では、規則エンジンプラットフォーム１３０は、アーキテクチャ、１つまたは複数のランタイムシステムライブラリ、グラフィカルユーザインターフェースおよび／またはコンピューティングプラットフォームの他の構成要素を提供することによって、モジュール１０１〜１０６が稼動できるようにする。たとえば、規則エンジンプラットフォーム１３０の１つまたは複数の構成要素１３１〜１３４が、オペレーティングシステム１２３と統合されてよい。別の実施形態では、規則エンジンプラットフォーム１３０は、オペレーティングシステム１２３から利用可能なもの以外にも、モジュール１０１〜１０６にサービスを提供するミドルウェアプラットフォームである。サービスは、データ（たとえば、サンプル）または別法では利用不可能または制限される、別のモジュール１０１〜１０６によって提供される他の機能性へのアクセスを含み得る。
【００２４】
[0036]ここでは、メモリ１２０内に実装されるように示されているが、規則エンジンプラットフォーム１３０の構成要素１３１〜１３４は、必ずしも固く統合されるわけではなく、実際にはデバイス１００内で別々に実装されてよい。たとえば、規則エンジン１３２は、特定用途向け集積回路（ＡＳＩＣ）に、またはプロセッサ１１０に存在し得るが、知識リポジトリ１３４は、メモリ１２０内に存在する。代替として、規則エンジン１３２は、モジュール１０１〜１０６にわたって分散された個々の構成要素に分割されてよく、モジュール１０１〜１０６に関連付けられた機能性およびデータへのアクセスを有し得る。いくつかの実施形態では、規則エンジンプラットフォーム１３０の１つまたは複数の構成要素１３１〜１３４が統合される。たとえば、規則エンジンインターフェース１３１のいくつかの機能性が、規則エンジン１３２と統合されてよく、他の機能性は、リポジトリ１３３〜１３４と統合されてよい。
【００２５】
[0037]規則エンジンインターフェース１３１は、規則エンジン１３２と、モジュール１０１〜１０６のうちの１つまたは複数との間の対話（interaction）を円滑にする。多くの実施形態において、モジュール１０１〜１０６と規則エンジン１３２との間の通信は、この時点で処理される。いくつかの実施形態では、規則エンジンインターフェース１３１は、アプリケーションプログラミングインターフェース（ＡＰＩ）、動的リンクライブラリ（ＤＬＬ）、またはモジュール１０１〜１０６のうちの１つもしくは複数が、規則エンジン１３２にデータを送り、および／またはそこからデータを受信することができるようにする他の通信リソースを提供する。
【００２６】
[0038]いくつかの実施形態では、規則エンジンインターフェース１３１は、モジュール１０１〜１０６から受信されたデータを、規則エンジン１３２によって解釈可能な形式に適合させる。規則エンジンインターフェース１３１において受信されたデータはサンプルであってよく、サンプルは、送り手のモジュール１０１〜１０６に関連付けられたどのデータであってもよい。受信サンプルは、記憶され、ファクトをアサートし、かつ／またはコンテキストを導出するのに使われ得る。規則エンジン１３２は、規則が評価されるように、ファクトを、規則ベースからの規則と突き合わせればよい。規則エンジン１３２は、規則エンジンインターフェース１３１を使用してサンプルを要求することができ、たとえば、規則エンジン１３２は、規則を評価するために追加サンプルを必要とする場合があり、サンプル要求を送り、応答としてサンプルを受信するために、規則エンジンインターフェース１３１を使用し得る。
【００２７】
[0039]いくつかの実施形態では、規則エンジンインターフェース１３１は、１つまたは複数のモジュール１０１〜１０６にサブスクライブする（subscribe）ように構成され、そうすることによって、サブスクライブされたモジュール１０１〜１０６から、１つまたは複数のサンプルが受信される。モジュール１０１〜１０６へサブスクライブすることは、サンプルについての要求など、規則エンジン１３２による要求への応答であり得る。規則エンジンインターフェース１３１は、ＡＰＩなど、モジュールに関連付けられたインターフェースを通して、モジュール１０１〜１０６にサブスクライブするようにも構成され得る。規則エンジンインターフェース１３１は、受信サンプルに基づいてファクトをアサートし、および／またはサンプルをリポジトリ１３３〜１３４に記憶し得る。
【００２８】
[0040]広い意味で、ファクトをアサートすることは、ファクトをメモリ（たとえば、メモリ１２０および／またはストレージ１３５）に記憶することを指し、それにより、ファクトが、規則を識別し、評価するのに使われ得る。たとえば、ファクトは、そのファクトをメモリ１２０中の知識リポジトリ１３４に記憶することによって、アサートされ得る。ファクトをアサートすることにより、規則エンジン１３２は、１つまたは複数の規則を識別または評価し得る。一実施形態では、ファクトをアサートすることは、ファクトがメモリ１２０に存在するか、または古くないことを検証することを備える。いくつかの実施形態では、ファクトをアサートすることは、ファクトが、規則を識別し、評価するのに使われ得るように、ファクトを決定することを備え得る。
【００２９】
[0041]モジュール１０１〜１０６にサブスクライブする際、規則エンジンインターフェース１３１は、サンプルについての単一の要求（たとえば、単一のクエリ）を発行し得、または、モジュール１０１〜１０６に永続的にサブスクライブし得る（たとえば、サンプルストリームをポーリングまたは受信する）。そうする際、規則エンジンプラットフォーム１３０は、たとえば、いつおよび／またはどのように１つもしくは複数のモジュール１０１〜１０６が問い合わせされ、および／または使用されるかを制御することによって、１つまたは複数のリソースを監視し、管理し得る。いくつかの実施形態では、規則エンジンプラットフォーム１３０は、モジュール１０１〜１０６がサンプルを提供するのを受動的に待つのではなく、むしろ、そのモジュール１０１〜１０６の実施を能動的に指示し得る。
【００３０】
[0042]いくつかの実施形態では、規則エンジンプラットフォーム１３０は、規則エンジンインターフェース１３１を通してモジュール１０１〜１０６によってサブスクライブされる。たとえば、モジュール１０１〜１０６は、応答としてアクションを要求することによって、規則エンジンプラットフォーム１３０にサブスクライブし得る。規則エンジンインターフェース１３１は、たとえば規則エンジン１３２が規則を評価してアクションを決定する場合、規則インターフェース１３１が有意な応答を提供することができるように、いくつかのサブスクリプション（subscription）を、規則エンジン１３２によって解釈可能な形式に変換することができる。規則エンジンプラットフォーム１３０の特徴として、第２のモジュール１０１〜１０６についてのデータを要求する、モジュール１０１〜１０６のそれぞれの１つが、規則エンジンインターフェース１３１に要求を送り、規則エンジンインターフェース１３１からアクションを受信するであろう。一実施形態では、モジュール１０１〜１０６は、規則エンジンプラットフォーム１３０を有するデバイス１００内で実装された結果として、規則エンジンインターフェース１３１に永続的にサブスクライブされている。
【００３１】
[0043]規則エンジンプラットフォーム１３０は、新たな規則を追加し、または既存の規則を更新もしくは削除するための要求など、規則ベースを更新する要求を受諾するように構成され得る。規則エンジンインターフェース１３１は、規則エンジン１３２による解釈のために、要求を変換する（translate）ように構成され得る。したがって、いくつかの実施形態では、規則エンジンインターフェース１３１は、コンパイラ、インタープリタまたは規則を変換するための同様のリソースであってよい規則変換器（図示せず）を含むか、または変換器と結合される。規則エンジンインターフェース１３１は次いで、規則エンジン１３２が、更新された規則を評価することができるように、規則リポジトリ１３３中の規則ベースを、要求に従って更新し得る。規則エンジンインターフェース１３１におけるこの変換により、規則ベースに対する更新が、ランタイムにおいて実装される。したがって、規則エンジンプラットフォーム１３０は、ランタイムカスタマイズと、コンテキスト認識と、スマートサービスと、デバイス１００の同様の特徴とを可能にする。
【００３２】
[0044]モジュール１０１〜１０６は、規則ベースについての更新を規則エンジンインターフェース１３１に提供し得る。たとえば、ポータブル電子デバイス１００のユーザが、音声ユーザ入力またはタッチユーザ入力として受諾された新たな規則などの規則を、ユーザ入力モジュール１０４を通して入力してよい。いくつかの実施形態では、たとえば、ユーザがモジュール１０１〜１０６の設定を変更する場合、ユーザは、モジュール１０１〜１０６のうちの１つを通して、規則を作成、修正または消去するパラメータを定義することができる。いくつかの実施形態では、ユーザは、ユーザ入力モジュール１０４を使って、高水準言語で書かれた規則を入力し得る。
【００３３】
[0045]規則エンジン１３２は、規則を評価するとともにアクションを決定するためのＲＥＴＥアルゴリズム（たとえば、ＤＲＯＯＬＳ規則エンジン）を実装し得る。簡潔には、規則エンジン１３２は、条件（たとえば、１つまたは複数のサンプルからアサートされたファクトまたはファクトのセット）を識別するとともに規則と突き合わせる（マッチングする）ように構成される。多くの実施形態において、規則は、条件と結果との間の条件付き関係を定義する。この関係はしばしば、口語では「ｉｆ−ｔｈｅｎステートメント」と呼ばれ、「ｉｆ［条件］ｔｈｅｎ［結果］」の形をとり得る。規則エンジン１３２は、ランタイムに規則リポジトリ１３３から、１つまたは複数の規則を、評価のために動的に選択または識別し得る。さらに、規則エンジン１３２は、アクセスおよび評価の持続時間を削減するために、頻繁に評価または期待される規則などの規則をキャッシュしてよい。規則エンジン１３２は、規則を評価した結果からアクションを決定してもよく、結果はアクションであってもよい。したがって、規則エンジン１３２は、宣言型であるとともに、有利には、ポータブル電子デバイス１００内の論理（たとえば、規則）からの別々のデータ（たとえば、ファクトをアサートするのに使われるサンプル）であってよい。
【００３４】
[0046]規則エンジン１３２は、規則とファクトとを、効率的評価のために組織化することができる。いくつかの実施形態では、規則エンジン１３２は、規則リポジトリ１３３中で定義される規則の一部または全部に基づいて、組織的構造（organizational structure）を構築し得る。規則エンジン１３２は、この組織的構造を知識リポジトリ１３４に記憶し得る。組織的構造は、有向グラフまたはトライ（trie）（すなわち、プレフィックスツリー）と同様であってよい。規則エンジン１３２は、規則をその成分に分解し得、たとえば、複数のファクトを必要とする複合規則が、組織的構造にアクセスすることによって、素早く、効率的に評価され得る１つまたは複数の要件に分解され得る。規則エンジン１３２は、評価性能を最適化するために、組織的構造による索引付けとハッシュ化とを提供することができる。たとえば、規則エンジン１３２は、１つまたは複数の規則を効率的に評価するために、組織的構造中のファクトをハッシュすることができる。規則エンジン１３２は、要件が共有され得るように、組織的構造の同一の要件を識別し、まとめることによって、規則評価を最適化することもできる。規則エンジン１３２はしたがって、組織的構造にアクセスすることによって、モジュールにアクションを提供するように構成され得る。規則エンジンプラットフォーム１３０は、効率を増し、速度を増し、電力消費を減らし、システムリソース消費を減らし、および／またはポータブル電子デバイス１００の性能を強化することを意図している同様の属性に影響を与えることによって、ポータブル電子デバイス１００の性能を最適化することができる。したがって、「最適化」は、必ずしも「最良」または規則エンジンプラットフォーム１３０のただ１つの得られる効果／可能性があることを意味するとは限らない。したがって、規則エンジンプラットフォーム１３０は、効率を最大限にすることも、電力消費を最小限にすることも求められないが、これらの側面を向上させることができる。たとえば、規則エンジンプラットフォーム１３０は、速度を増すことができ、同時に、電力消費を増し、これらの増大は、増大した速度が望ましいようないくつかの実施形態では電力消費が直ちに問題となり得るわけではないので、いくつかの実施形態では最適と見なされ得る。いくつかの実施形態では、規則エンジンプラットフォーム１３０は、ポータブル電子デバイス１００内に規則エンジンプラットフォーム１３０を実装しているユーザに、（たとえば、規則エンジンインターフェース１３１を通して）インターフェースを提供し、そうすることによって、速度、電力および他のそのような属性（たとえば、速度と電力との間のトレードオフ値）についての最適化設定またはパラメータが、手動で設定または較正され得る。
【００３５】
[0047]したがって、規則エンジン１３２は、１つまたは複数のサンプルを受信するとともにポータブル電子デバイス１００内で１つまたは複数のアクションを提供することによって、省電力と性能（たとえば、処理速度）とを強化することができ、そうすることによって、モジュール１０１〜１０６の間での直接のデータの送信を最小限にする。図１に示される実施形態では、モジュール１０１〜１０６は、規則エンジンプラットフォーム１３０にサブスクライブし、そうすることによって、アクションが、規則エンジン１３２によって決定され、規則エンジンインターフェース１３１を通して送られる。有利には、モジュール１０１〜１０６のうちの１つはそれ以上、モジュール１０１〜１０６のうちの別の１つにサブスクライブする必要も、その１つに対して要求を行う必要もない。たとえば、モジュール１０１〜１０６のうちの２つが、ポータブル電子デバイス１００のロケーションを求める場合がある。デバイス１００のロケーションは、サンプルとして受信され、ロケーションファクトとしてアサートされ得る。ロケーションを要求する両方のモジュールは、規則エンジン１３２に対して（規則エンジンインターフェース１３１を通して）ロケーションを要求するだけでよく、規則エンジン１３２は、ロケーションファクトに素早くアクセスして、各要求側モジュールにロケーションを（たとえば、規則エンジンインターフェース１３１を通してアクションとして）提供することができる。したがって、衛星測位システム（ＳＰＳ）モジュール（たとえば、モジュール１０１〜１０２のハードウェアモジュール）は、現在のロケーションを２回検出し、次いで、現在のロケーションを２回（各要求側モジュール向けに一度）送る必要はない。さらに、規則エンジンプラットフォーム１３０は、いくつかの規則と、それらにサブスクライブしているいくつかのモジュール１０１〜１０６とを扱うためのスケーラビリティを提供する。
【００３６】
[0048]いくつかの実施形態では、規則エンジン１３２は、規則を真と評価するが、アクションは何もしないことであると決定し得る。したがって、規則エンジン１３２は、規則エンジンインターフェース１３１にアクションを必ずしも提供しなくてよいか、または規則エンジンインターフェース１３１がどのアクションも送出しないように、ヌルアクションを提供すればよい。規則エンジン１３２は、アクションが、何もしないという応答であり得ると決定する場合もある。規則エンジンインターフェース１３１は次いで、何もしないという応答を受信側モジュール１０１〜１０６に提供し得、受信側モジュール１０１〜１０６にヌル値を提供し得る。
【００３７】
[0049]規則エンジンプラットフォーム１３０の補足構成要素として、規則リポジトリ１３３は、規則ベース、つまり、規則エンジン１３２が評価することができる規則を適切に記憶するように構成される。規則リポジトリ１３３は、ランタイムに、ストレージ１３５およびメモリ１２０にわたって分散され得る。他の実施形態では、規則リポジトリ１３３は、プロセッサ１１０にわたって分散され得、および／またはモジュール１０１〜１０６にわたって分散される個々の構成要素に分割され得、および／またはモジュール１０１〜１０６に関連付けられた機能およびデータへのアクセスを有し得る。規則に加えて、規則リポジトリ１３３は、テンプレートと、変数と、パラメータと、規則エンジン１３２がアクションを決定し、および／または決定されたアクションを遂行するのに必要とされる他の情報とを記憶し得る。規則リポジトリ１３３は、追加、更新、または消去された規則など、規則ベースに対する更新を受諾するように構成される。たとえば、モジュール１０１〜１０６は、ユーザ入力に応答して、規則ベースに対する更新を要求し得る。
【００３８】
[0050]規則リポジトリに加えて、規則実行は、プロセッサ１１０および異なるモジュール１０１〜１０６にわたって分散され得る。たとえば、知識ベース１３４は、プロセッサ１１０にわたって分散され得、および／またはモジュール１０１〜１０６にわたって分散される個々の構成要素に分割され得、および／またはモジュール１０１〜１０６に関連付けられた機能性およびデータへのアクセスを有し得る。
【００３９】
[0051]いくつかの実施形態では、規則ベースは、複数のセットに、または１つもしくは複数の階層に、ランタイムに動的に組織化され得、規則エンジン１３２は、階層のセットまたはレベルのうちの１つまたは複数を選択的に評価すればよい。たとえば、ユーザが自宅にいることをファクトが示すとき、規則エンジン１３２は、ユーザが自宅にいるときに適用する規則を評価し得、および／またはユーザが職場にいるときに適用する規則の評価を省いてよい。規則エンジン１３２が規則を真と評価した場合、規則エンジン１３２はアクションを決定する。続いて、規則エンジン１３２は、アクションが受信側モジュール１０１〜１０６に送られ得るか、または追加規則を真と評価させるファクトとしてアクションがアサートされ得るように、アクションを規則エンジンインターフェース１３１に提供し得る。
【００４０】
[0052]規則リポジトリ１３３中に記憶された規則ベースは、たとえば、新たな規則を受信し、または規則を自動作成することによって、ランタイムに動的に更新され得る。さらに、規則リポジトリ１３３は、デバイス１００のコンテキスト認識をサポートするための、規則ベースに対する更新を受諾し得る。規則リポジトリ１３３は、リモートソースからの規則も受諾し得る。たとえば、規則更新は、ファイル（たとえば、ＳＤカードからのバイナリファイル）、ユニフォームリソース識別子（ＵＲＩ）（たとえば、サーバから、もしくはクラウドからのバイナリ規則）、または資産（たとえば、資産ディレクトリからロードされた資産）からロードされ得る。これらの規則更新は、事前コンパイルされ得、規則変換器（図示せず）によってコンパイルされてもよい。
【００４１】
[0053]いくつかの実施形態では、規則エンジンプラットフォーム１３０は、知識リポジトリ１３４をさらに含む。知識リポジトリ１３４は、ＲＡＭなどのメモリ１２０中に含まれ得る。知識リポジトリ１３４は、メモリ１２０に加えて、プロセッサ１１０におけるキャッシュなどのキャッシュまたはバッファ中で分散され得ることを諒解されたい。知識リポジトリ１３４は、ファクトベース、つまり、規則エンジン１３２が規則を評価するのに使うことができるファクトを記憶し得る。ファクトベースは、規則エンジン１３２によって構築された組織的構造の一部であってよい。一実施形態では、モジュール１０１〜１０６からのファクトは、モジュール１０１〜１０６からの、センサ（たとえば、加速度計、カメラ、オーディオなど）サンプルなど、未処理の未加工データ、または処理済みの個々の情報（たとえば、歩行中、運転中、疾走中、休憩中、飛行中などのうちの１つであってもよい動き状態）を含む。ファクトは、モジュール１０１〜１０６のうちの１つまたは複数から受信されたサンプル、推論、予想サンプル（たとえば、まだ受信されていないサンプル）、コンテキスト、別の規則（たとえば、アクションもしくは結果）または規則エンジン１３２によって監視可能な他のどのデータからの、知識リポジトリ１３４中でアサートされる、ゼロ（たとえば、ヌル）以上のデータオブジェクトからなるデータタプルであってよい。
【００４２】
[0054]一実施形態では、たとえば、規則エンジン１３２が初期化された場合またはどのサンプルも受信されていない場合、１つまたは複数のファクトが、デフォルト（たとえば、ヌルまたは偽）にアサートされる。知識リポジトリ１３４中のファクトベースは、ランタイムに動的に更新され得る。たとえば、古くなったサンプルからアサートされたファクトは、現在のサンプルで更新され、デフォルト値から更新され、または新たなサンプルから新たなファクトがアサートされ得る。ファクトベースに対する更新に応答して、規則エンジン１３２は、規則リポジトリ１３３中の規則を識別および／または評価し得る。一実施形態では、受信サンプルがファクトに実質的に影響を与える場合、規則エンジン１３２は、そのファクトをアサートするだけでよい。たとえば、記憶されたロケーションファクトは、新たに受信されたロケーションサンプルについて、ロケーションが同じままである場合、繰り返しアサートされる必要はない。
【００４３】
[0055]一実施形態では、規則エンジン１３２は、１つまたは複数のファクトまたはサンプルを検査して、推論を行い、それらの推論を、知識リポジトリ１３４中のファクトとしてアサートしてよい。たとえば、規則エンジン１３２は、ユーザが職場にいることを示すロケーションサンプルを受信し、ユーザが、会議に出ると計画されておらず、動いていないことを示すファクトを使って、ユーザが職場で対応可能であるというファクトをアサートすることができる。ロケーションサンプルは、ファクトとして個々にアサートされ、記憶され、または破棄され得る。
【００４４】
[0056]さらに、規則エンジン１３２は、知識リポジトリ１３４中にコンテキストを記憶し得る。コンテキストは概して、デバイス１００またはデバイス１００のユーザの環境もしくは状況として理解される。例示的には、コンテキストは、デバイス１００のユーザが、会議中、話し合い中、電話中、ジオフェンスの近くにいる、人の近くにいる、自宅にいる、運転中である、などであってよい。コンテキストは、デバイス１００のユーザが現在、運転中であり、ジオフェンスに近づきつつあるというコンテキストなど、コンテキストまたは予期情報の集合体であり得る。一実施形態では、規則エンジン１３２は、１つまたは複数のサンプルまたはファクトから推論を行うことによって、コンテキストを決定する。代替として、規則エンジン１３２は、コンテキスト認識モジュールなどのモジュール１０１〜１０６から、コンテキストを、サンプルとして受信し得る。規則エンジン１３２は、コンテキストからのファクトをアサートし得、および／またはコンテキストに基づいて、ファクトと規則とを組織化し、評価し得る。
【００４５】
[0057]いくつかの実施形態では、規則エンジンプラットフォーム１３０は、たとえば、明示的定義なしに、デバイス１００のユーザの意図、条件または環境を導出するための１つまたは複数のサンプル、ファクト、または規則を処理することによって、スマートサービスをサポートする。たとえば、モジュール１０１〜１０６は、規則を真と評価させる明示的条件を提供することなく、規則の追加を要求し得る。規則エンジンプラットフォーム１３０は、不確定またはあいまいな条件を有する規則を、評価可能規則に変換し得る。例示的には、知的パーソナルアシスタントアプリケーションモジュール１０５が、ユーザ入力に従って、「友人の誕生日に、ユーザに通知する」という新たな規則の追加を要求し得る。規則エンジンプラットフォーム１３０は、友人の誕生日（たとえば、１２月２０日）のカレンダ日付を含む連絡先／アドレス帳アプリケーションモジュール１０６に対してサンプルを要求することによって、規則を変換し得る。そのサンプルを使って、「日付が１２月２０日である場合、ユーザに、今日が友人の誕生日であると通知する」という明確な規則が規則リポジトリ１３３に追加され得る。別の例では、アプリケーションモジュール１０５が、「ユーザに、食料品を買うよう通知する」という新たな規則の追加を要求する。規則エンジンプラットフォーム１３０は、この規則を、食料品店を含むジオフェンスなど、規則に関連したコンテキストを決定することによって変換し得る。そのサンプルを使って、規則エンジンインターフェース１３１は、「ユーザがジオフェンスの近くにいる場合、ユーザに、食料品を買うよう通知する」という明確な規則を規則リポジトリ１３３に追加し得る。その後、ユーザのロケーションが、ジオフェンスの近くまたはフェンス内であることを示すサンプルが受信されると、規則エンジン１３２は、食料品を買うようユーザに通知するためのアクションを決定する。
【００４６】
[0058]いくつかの実施形態では、リポジトリ１３３〜１３４の一方または両方が、知識および展開の資産管理用のリポジトリとして作用する。リポジトリは、ある物理エンティティ中に集中されても、様々なハードウェアモジュールおよびサブシステムにわたって分散されてもよい。この資産管理は、モジュール１０１〜１０６が、データと、他の同様の制約とにアクセスするための許可を指定するアクセス制御ポリシーを含み得る。リポジトリ１３３〜１３４は、モジュール１０１〜１０６のうちの１つまたは複数が規則にどのように関連付けられているかなど、規則および／またはファクトに関連付けられたメタデータを維持し得る（たとえば、規則エンジンプラットフォーム１３０にサブスクライブしているモジュール１０１〜１０６のリストおよび／またはサンプルがファクトをアサートすることをそこから求められるモジュール１０１〜１０６のリスト）。一実施形態では、リポジトリ１３３〜１３４は、受信サンプルや過去のコンテキストなど、ファクトとしてアサートされないデータを記憶する。たとえば、ロケーションサンプルは、ファクトをアサートするのに使われないが、結果としてロケーションサンプルをモジュール１０１〜１０６に送ることになる規則に必要とされ得る。同様に、コンテキストは、規則エンジン１３２またはコンテキスト認識エンジン（図示せず）が、コンテキストの間の関係を導出するか、または今後のコンテキストを予期することができるように記憶され得る。
【００４７】
[0059]プラットフォーム１３０としての規則エンジン１３２の実装により、規則エンジン１３２は、リポジトリ１３３〜１３４に記憶された情報から、由来情報（provenance information）を提供し得る。規則エンジンプラットフォーム１３０は、由来情報を、ディスプレイモジュール１０３に向かっているユーザに提供し得る。由来情報を、そのような情報を監視するように適合されたモジュール１０１〜１０６に提供してもよい。一実施形態では、由来情報は、規則の評価および対応する、アクションの決定に関連した情報を含み得る。そのような由来情報は、規則を評価させたファクトまたはファクトをアサートするためのサンプルを提供したモジュール１０１〜１０６についての情報を含み得る。
【００４８】
[0060]いくつかの実施形態では、規則エンジン１３２は、由来に関連した情報を、リポジトリ１３３〜１３４に記憶するように構成される。たとえば、規則エンジン１３２は、規則が評価された時間、規則を評価させた条件（たとえば、ファクト）、規則の評価から決定されたアクション、規則を真と評価させた以前の規則、または他の関連情報を記憶し得る。いくつかの実施形態では、規則エンジン１３２は、アクションを受信したモジュール１０１〜１０６またはファクトがそれについてアサートされたサンプルを提供したモジュール１０１〜１０６など、モジュール１０１〜１０６に関連した情報をトレースする。たとえば、リッチサイトサマリ（ＲＳＳ）アプリケーションモジュール１０５〜１０６によって提供されたサンプルに準じるニュースレポート通知が、ディスプレイモジュール１０３上に表示され得る。通知は、ＲＳＳアプリケーションモジュール１０５〜１０６の識別またはニュースレポートが、ユーザにとって興味のあるカテゴリでタグ付けされるという指示など、ＲＳＳアプリケーションモジュール１０５〜１０６についての由来情報で補足され得る。
【００４９】
[0061]一実施形態では、規則エンジン１３２は、モジュール１０１〜１０６のアクティビティに関連した情報を記憶する。多数のサンプルを送り、または多数のアクションを受信するモジュール１０１〜１０６は概して、よりアクティブでないモジュールよりも大量のリソースを消費する。規則エンジン１３２は、電力消費、プロセッサ１１０の負荷に対する影響、別のモジュールに対する影響（たとえば、ｅメールアプリケーションモジュール１０５〜１０６が、新たなｅメールメッセージについてポーリングすることによって、セルラートランシーバモジュール１０１〜１０２のアクティビティを増し得る）、または他のリソース消費など、モジュール１０１〜１０６についてのアクティビティ情報または使用統計を、記憶された情報から導出し得る。
【００５０】
[0062]したがって、規則エンジン１３２は、たとえば、モジュール１０１〜１０６に送られるアクションの頻度もしくは量、モジュール１０１〜１０６向けの規則の評価、またはモジュール１０１〜１０６によって提供されるサンプルからアサートされたファクトを追跡することによって、モジュール１０１〜１０６を監視し得る。たとえば、ロケーションベースのソーシャルネットワーキングアプリケーションモジュール１０５〜１０６（たとえば、Ｆｏｕｒｓｑｕａｒｅ（登録商標））が、「このアプリケーションモジュールが実行中である場合、このアプリケーションに現在のロケーションを送る」という規則を追加し得る。そのような規則は、真と永続的に評価し、したがって、アプリケーションモジュール１０５〜１０６が実行している間、大量のリソースを消費させ得る。規則エンジン１３２は、プロセッサ１１０またはＳＰＳセンサモジュール１０１〜１０２における電力消費または影響など、アプリケーションモジュール１０５〜１０６のリソース消費に関連した情報を記憶し得る。記憶された情報から、規則エンジン１３２は、デバイス１００にとってコストがかかるモジュールなど、モジュール１０１〜１０６についての使用情報を決定することができる。
【００５１】
[0063]図２は、ポータブル電子デバイス内で規則エンジンプラットフォームを提供するためのシーケンス２００を示す。いくつかの実施形態では、シーケンス２００の動作は、置き換えられても、同時発生であってもよい。図示されるシーケンスは、図１のポータブル電子デバイス１００の実施形態において実施することができる。したがって、規則エンジンインターフェース２３０は、規則エンジンインターフェース１３１であっても、それを含んでもよく、規則エンジン２４０は、規則エンジン１３２であっても、それを含んでもよく、リポジトリ２５０は、規則リポジトリ１３３および知識リポジトリ１３４であっても、その一方または両方を含んでもよい。
【００５２】
[0064]図１において、モジュール１０１〜１０６は、モジュールの各々が、概念的に同様の機能を実施するように構成され得ることを示すように抽象的に表されている。この機能は、規則エンジンプラットフォーム１３０にデータを送ること、またはプラットフォーム１３０からデータを受信することであってよい。図２によると、サンプリングモジュール２１０および受信モジュール２２０は、それぞれ、図１に示されるモジュール１０１〜１０６のうちのいずれであっても、それを含んでもよい。いくつかの実施形態では、サンプリングモジュール２１０および受信モジュール２２０は同じモジュールである。
【００５３】
[0065]モジュール１０１〜１０６は、モジュール１０１〜１０６に関連付けられたデータを送ることができ、この送られるデータは、それぞれのモジュール１０１〜１０６についてのサンプルとして解釈され得る。したがって、サンプリングモジュール２１０は、サンプルを送るように構成されたどのモジュール１０１〜１０６であってもよい。サンプルは、センサモジュールからの未加工入力データ（たとえば、ジャイロスコープからの電圧）、センサモジュールからの処理済みデータ（たとえば、磁力計からの基本または順序方位）、アプリケーションモジュールからのデータ（たとえば、メッセージ通信アプリケーションからの通知）、またはモジュール１０１〜１０６によって提供され得る他のどのデータであってもよい。多くの実施形態において、規則エンジンインターフェース２３０は、サンプルが送られる前にサンプリングモジュール２１０にサブスクライブする。
【００５４】
[0066]例示的には、ハードウェアモジュール１０１が慣性センサである実施形態において、ハードウェアモジュール１０１は、測定された向きを含むサンプルまたは測定された向きが閾量を超えて変化したという指示であるサンプルを送ることができる。同様に、アプリケーションモジュール１０５がメッセージ通信アプリケーションである実施形態において、アプリケーションモジュール１０５は、新たなメッセージが受信されたという指示を含むサンプルまたは新たなメッセージのテキストを含むサンプルを送ることができる。両方の例において、モジュール１０１および１０５は、サンプリングモジュール２１０として動作する。したがって、モジュール１０１〜１０６の多くは、サンプリングモジュールとして同時に作用し得る。サンプリングモジュール２１０は、要求またはイベントに応答して（たとえば、所定の時間に）、規則エンジンインターフェース２３０にサンプルを送ることもでき、サンプルは送信請求されなくてもよい。
【００５５】
[0067]サンプルを送るのと同様に、モジュール１０１〜１０６は、アクションなどのデータを受信することができる。アクションを受信するように構成されたモジュール１０１〜１０６は、受信モジュール２２０であり得る。たとえば、ハードウェアモジュール１０１がカメラモジュールである実施形態において、ハードウェアモジュール１０１は、シャッターを解放するためのコマンドを含むアクションを受信し得る。同様に、アプリケーションモジュール１０５がカレンダアプリケーションである実施形態において、アプリケーションモジュール１０５は、新たなイベントをカレンダに追加するためのアクションを受信し得る。両方の例において、モジュール１０１および１０５は、受信モジュール２２０として動作する。したがって、モジュール１０１〜１０６の多くは、受信モジュールとして同時に動作し得る。多くの実施形態において、受信モジュール２２０は、アクションが送られる前に規則エンジンインターフェース２３０にサブスクライブする。
【００５６】
[0068]一実施形態では、シーケンス２００は、規則エンジンインターフェース２３０がサンプリングモジュール２１０にサブスクライブし、またはモジュール２１０を監視した場合に始まる（動作２５１）。このサブスクリプションは、規則エンジン２４０からの要求に応答したものであってよい。サンプリングモジュール２１０にサブスクライブし、またはモジュール２１０を監視する際、規則エンジンインターフェース２３０は、サンプリングモジュール２１０から１つまたは複数のサンプルを受信し得る。一実施形態では、サブスクリプションは、規則エンジンインターフェース２３０による、サンプリングモジュール２１０に対するサンプルについての単独要求であり得る。他の実施形態では、規則エンジンインターフェース２３０は、たとえば、ポーリングし、サンプルのストリームを受信し、または１つもしくは複数のサンプルについてサンプリングモジュール２１０を繰り返し問い合わせる（query）ことによって、サンプリングモジュール２１０に永続的にサブスクライブすることができる。規則エンジンインターフェース２３０は、サンプリングモジュール２１０に関連付けられたインターフェース（たとえば、ＡＰＩ）を通して、サンプリングモジュール２１０に永続的にサブスクライブするようにも構成され得る。
【００５７】
[0069]規則エンジンインターフェース２３０による、サンプリングモジュール２１０へのサブスクリプションは、実施形態によって変わり得る。いくつかの実施形態では、規則エンジンインターフェース２３０は、異なるサブスクリプションに対しては異なるサンプルが提供されるように、サンプリングモジュール２１０への２つ以上のサブスクリプションを有し得る。たとえば、サンプリングモジュール２１０がメッセージ通信アプリケーションである実施形態では、
サンプリングモジュール２１０が、メッセージのサブジェクトまたは本文を含むサンプルを提供するように、規則エンジンインターフェース２３０は、サンプリングモジュール２１０にサブスクライブすることができる。代替として、サンプルは単に、サンプリングモジュール２１０において新たなメッセージが受信されたという通知であるように、規則エンジンインターフェース２３０は、サンプリングモジュール２１０にサブスクライブすることができる。重要なこととして、規則エンジンインターフェース２３０は、サンプリングモジュール２１０を含む複数のサンプリングモジュールに同時にサブスクライブすることができる。
【００５８】
[0070]やはりシーケンス２００の一部として、受信モジュール２２０は、規則エンジンインターフェース２３０にサブスクライブする（動作２５２）。受信モジュール２２０は、規則エンジンインターフェース２３０が送るように構成されている１つまたは複数のアクションにサブスクライブすることができる。たとえば、受信モジュール２２０は、受信モジュール２２０向けのアクションを生じる規則を含むように、規則ベースを更新し得、または受信モジュール２２０は、規則エンジンインターフェース２３０への特定の呼出しを行うことができる。また、受信モジュール２２０は一般的に、規則エンジンインターフェース２３０にサブスクライブすることができる。一実施形態では、サブスクリプションは、規則エンジンインターフェース２３０に対するアクションについての単独要求であってよい。他の実施形態では、受信モジュール２２０は、規則エンジンインターフェース２３０によって提供される１つまたは複数のアクションに永続的にサブスクライブができる。
【００５９】
[0071]例示的な一実施形態では、受信モジュール２２０は、ジオフェンスに基づいて、ユーザに通知する（たとえば、ディスプレイ上に通知を提示する）アプリケーションである。そのような実施形態において、シーケンス２００を実施しているデバイスがジオフェンス外周（perimeter）を通り抜けるとき、受信モジュール２２０には、規則エンジンインターフェース２３０によってジオフェンスアクションが提供されるように、受信モジュール２２０は、規則エンジンインターフェース２３０によって提供されるジオフェンスアクションにサブスクライブする。
【００６０】
[0072]一実施形態では、受信モジュール２２０は、規則エンジンインターフェース２３０によって提供される１つまたは複数のアクションに自動的にサブスクライブされる。この自動サブスクリプションは、規則エンジンプラットフォームを有するポータブル電子デバイスにおいて実装されたことの結果であり得る。そのような実施形態において、規則エンジン２４０は、規則エンジンインターフェース２３０を通して（たとえば、一般的なメッセージ通信バスを経由して）アクションをブロードキャストし得、受信モジュール２２０は、そのアクションを受信するように構成される（たとえば、アクションは、受信モジュール２２０によって、１つまたは複数の他のモジュールと同時期に受信され得る）。
【００６１】
[0073]多くの実施形態において、サンプリングモジュール２１０は、サンプルが生成されるようにトリガされ得る（動作２５３）。たとえば、シーケンス２００を実施しているデバイスが、特定の軸に対して向きを変えた場合、慣性センササンプリングモジュール２１０がトリガされ得る。検出された向きの変化が、慣性センササンプリングモジュール２１０がサンプルを送ることをトリガし得る。いくつかの実施形態では、たとえば、サンプリングモジュールがサンプルの連続ストリームを生じる場合、サンプリングモジュール２１０は、永続的にトリガされ得る。別の実施形態では、サンプリングモジュール２１０は、規則エンジンインターフェース２３０によるサブスクリプションに応答して、サンプルを生じるようにトリガされ得る（たとえば、サンプリングモジュールは、規則エンジンインターフェース２３０からの、問い合わせに対する応答を提供するようにトリガされ得る）。
【００６２】
[0074]サンプリングモジュール２１０が、サンプルを生じるようにトリガされた場合、サンプリングモジュール２１０は、規則エンジンインターフェース２３０にサンプルを送り、または提供するように構成される（動作２５４）。多くの実施形態において、サンプリングモジュール２１０によって規則エンジンインターフェース２３０に送られるサンプルは、サンプリングモジュール２１０への規則エンジンインターフェース２３０のサブスクリプション（動作２５１）に従う。
【００６３】
[0075]いくつかの実施形態では、サンプリングモジュール２１０から受信されるサンプル（動作２５４）は、規則エンジン２４０による解釈に適さない。したがって、規則エンジンインターフェース２３０は、サンプルを、規則エンジン２４０によって解釈可能な形式に適合させるように構成される（動作２５５）。サンプルの適合は、規則エンジンインターフェース２３０によって遂行され得る。たとえば、規則エンジンインターフェース２３０は、サンプルを無秩序化（unmarshal）し得る。他の実施形態では、規則エンジンインターフェース２３０は、規則エンジンアダプタ（図示せず）など、１つまたは複数の追加構成要素とともに、サンプルを規則エンジン２４０向けに適合させるように動作する。
【００６４】
[0076]いくつかの他の実施形態では、規則エンジン２４０は、所定のレートで規則エンジン２４０にサンプルを提供するＡＰＩを含み得る。例によると、ユーザ入力モジュール（たとえば、モジュール２１０、２２０）は、ポータブル電子デバイスのロケーションが１０分おきに更新されるべきであるか、または２分おきの最大周期で、モジュール（たとえば、モジュール２１０、２２０）によってｅメールがダウンロードされるべきであると指定する、ユーザからの入力を受諾し得る。規則エンジン２４０は、ユーザからの入力に従って、サンプリングモジュール２１０のサンプリングレートを指定し得る。規則エンジンインターフェースに含まれるＡＰＩは、ユーザインターフェースモジュール（たとえば、モジュール２１０または２２０）が、サンプルモジュール２１０のサンプリングレートに対するこの変更を行うことを可能にする。
【００６５】
[0077]いくつかの実施形態では、規則エンジン２４０は、異なるアプリケーションから取得される、起こり得る競合要件を扱うように構成され得る。たとえば、デバイス上で稼動しているソーシャルアプリケーションが、ロケーションが１０分おき更新されることを求め、天気アプリケーションが、ロケーションフィックス（fix）を６分おきに求めるケースについて検討する。規則エンジン２４０は、それに応じて、２つのアプリケーションの要望を満たすように、サンプリングレートを適合させ、いくつかのそのような実施形態では、電力を削減するために、複数のアプリケーションにわたってロケーションフィックスを再利用し得る。
【００６６】
[0078]センサのサンプリングを変調する規則エンジンの一部は、集中型ユニットに物理的に存在し得、デバイス内の個々のサブシステムにわたって分散され得ることに留意されたい。
【００６７】
[0079]サンプルを適切に適合させると、規則エンジンインターフェース２３０は、適合されたサンプルを規則エンジン２４０に提供するように構成される（動作２５６）。いくつかの実施形態では、サンプルは、規則エンジン２４０からの要求に応答して提供される。規則エンジンインターフェース２３０は、受信モジュール２２０からのサブスクリプション（動作２５２）に従って、規則エンジン２４０に、サンプルを提供し得る。いくつかの実施形態では、追加サンプリングモジュールから受信され得るサンプル（たとえば、リポジトリ２５０に記憶されている受信サンプル）は、サンプルのセットに追加される。サンプルのフルセットまたは部分セットが次いで、規則エンジン２４０に提供され得る。
【００６８】
[0080]いくつかの実施形態では、規則エンジン２４０は、たとえば、ファクトを追加または更新することによって１つまたは複数の規則の評価に使われるファクトをアサートする（動作２５７）。規則エンジン２４０は、サンプルを、たとえばリポジトリ２５０中または他のメモリ中に記憶することによって、ファクトをアサートし得る。代替として、ファクトは、サンプルから導出された推論、および１つまたは複数の他のファクトまたはサンプルからアサートされ得る。他の実施形態では、規則エンジン２４０は、ファクトベースの規則または予想サンプル（たとえば、サンプルがないこと）をアサートする。一実施形態によると、規則エンジン２４０は、リポジトリ２５０中で定義される規則の一部または全部に基づいて、組織的構造を構築する。１つまたは複数のサンプルに応答して、規則エンジン２４０は、ファクトをアサートすることによって組織的構造を更新することができる。重要なこととして、ファクトは、まさにサンプルが提供される所を超えて、シーケンス２００の異なる動作に続いてアサートされ得る。たとえば、規則の評価（動作２５９）および／またはアクションの決定（動作２６０）が、ファクトをアサートさせ得る（動作２５７）。いくつかの実施形態において、シーケンス２００は、規則の評価またはアクションの決定からファクトがアサートされている（動作２５７）場合、関連規則を選択および評価すること（動作２５８〜２５９）、ならびにアクションを決定すること（動作２６０）によって再開する。
【００６９】
[0081]規則エンジン２４０は、アサートされたファクトについての１つまたは複数の関連規則を選択または識別するように構成される（動作２５８）。規則エンジン２４０は、リポジトリ２５０から、１つまたは複数の関連規則を選択し得る。いくつかの実施形態では、規則は、少なくとも１つのファクトと１つのアクションとの間の条件付き関係を定義する。したがって、規則エンジン２４０は、１つまたは複数の規則を選択または識別し、ここでファクトは、条件の全部または一部を満足する。関連規則を選択する際、規則エンジン２４０は、追加資産（additional assets）も選択し得る。いくつかの実施形態では、資産は、規則を特定のモジュール（たとえば、サンプリングモジュール２１０および／または受信モジュール２２０）に関連付けるメタデータを含む。資産は、いくつかの規則に関連付けられた許可についての１つまたは複数のアクセス制御リストも備え得る。
【００７０】
[0082]１つまたは複数の関連規則の選択または識別は、リポジトリ２５０への、規則についての実際の要求または問い合わせでなくてよい。いくつかの実施形態では、規則エンジン２４０は、リポジトリ２５０からすでに選択されている関連規則を識別する。たとえば、規則エンジン２４０は、評価を予期するコンテキストに基づいて、関連規則をキャッシュすることができる。
【００７１】
[0083]関連規則が選択されていると、規則エンジン２４０は、アサートされたファクトについて、関連規則を評価する（動作２５９）。重要なこととして、規則エンジン２４０による規則実行プロセスは、複雑であり、規則を評価するのに、ファクトとしてアサートされた複数のサンプル（または、１つもしくは複数のサンプルがないこと）を必要とし得る。たとえば、「ポータブル電子デバイスのユーザが会議中である場合、オーディオ通知を不能にする」という規則を評価するために、規則エンジン２４０は、カレンダサンプリングモジュールからの、ユーザが会議に出ると計画されているというサンプル、ならびにＳＰＳ（またはＷｉ−Ｆｉ）サンプリングモジュールからの、会議のロケーション（または部屋）を含むジオフェンス内にデバイスがあるというサンプル、を受信し得る。規則エンジン２４０は、これらの２つのサンプルを、別々のファクトとして、またはユーザが「会議中」であることを示す１つのファクトとしてアサートし得る。アサートされた（１つまたは複数の）ファクトに応答して、オーディオ通知が不能にされる。さらに、規則エンジン２４０は、ファクトとしてアサートされた受信サンプルを、後で規則を評価するために維持するように構成される。
【００７２】
[0084]規則エンジン２４０による、ある規則の評価は、第２の規則の評価を要求し（mandate）得る。１つまたは複数の追加規則の識別および選択は、先行規則または規則のセットの評価に応答して行われ得る。規則エンジン２４０は、規則を評価し、アクションを決定するのに、追加ファクトも必要とし得る（推論からアサートされる例示のファクトが、図６に示されている）。たとえば、Ｂｌｕｅｔｏｏｔｈサンプリングモジュール２１０が、ポータブル電子デバイスがユーザの車のオーディオシステムとペアにされていることを示すサンプルを送る場合、規則エンジン２４０は、ユーザが車の中にいるというファクトをアサートできる。しかし、規則エンジン２４０は、ユーザが動いていることを示すロケーションサンプルが受信されるか、または加速度計サンプルが、車両の予想される速度での（すなわち、歩行速度ほど遅くなく、飛行機の速度ほど速くない）動きを示すまで、ユーザが運転中であるというファクトはアサートしない。その後、規則エンジン２４０は、ユーザが運転中であるという、アサートされたファクトについての規則を評価すればよい。運転中規則は、テキストメッセージング用のタッチ入力をディセーブルにし得、したがって、規則エンジン２４０は、規則に、テキストメッセージング用に発話入力をイネーブルにするように評価させるファクトをアサートし得る。
【００７３】
[0085]規則エンジン２４０が、１つまたは複数の関連規則を真と評価した場合、規則エンジン２４０は、１つまたは複数の関連規則に従ってアクションを決定するように構成される（動作２６０）。アクションは、関連規則を真と評価した結果から決定され得る。多くの実施形態において、決定されたアクションは、規則の結果である。
【００７４】
[0086]一実施形態では、規則エンジン２４０は、アクションは何もしないことであると決定し得る。それに応答して、規則エンジン２４０は、規則エンジンインターフェース２３０にアクションを提供しないか、または規則エンジンインターフェース２３０がどのアクションも送出しないように、ヌルアクションを提供し得る。規則エンジン２４０は、アクションが、どのアクションもとらないという応答であると決定する場合もある。規則エンジンインターフェース２３０は次いで、どのアクションもとらないという応答を、（たとえば、メッセージとして、またはヌル値を戻すことによって）受信モジュール２２０に提供し得る。
【００７５】
[0087]他の実施形態では、リポジトリ２５０から選択されるメタデータは、アクションを補足する。たとえば、規則エンジン２４０が、サンプリングモジュール２１０において新たなメッセージが受信されたというファクトについて、関連規則を真と評価した場合、メタデータは、決定されたアクションが、メッセージのテキスト、または代替として、新たなメッセージが受信されたという通知を送ることを規定し得る。メタデータは、決定されたアクションに従って通知されるべき、ポータブル電子デバイス内の受信モジュール２２０の識別も示し得る。メタデータは、時間または行為パラメータなどの補足パラメータも含み得る。いくつかの実施形態では、メタデータは、決定されたアクションに含まれ、そうすることによって、受信モジュール２２０は、サンプリングモジュール２１０、または受信モジュール２２０へ決定されたアクションを送ることをトリガした特定の規則、を識別することが可能である。
【００７６】
[0088]続いて、規則エンジン２４０は、決定されたアクションを規則エンジンインターフェース２３０に提供する（動作２６１）。規則エンジンインターフェース２３０は次いで、決定されたアクションを、受信モジュール２２０への送信およびモジュール２２０による受信に適した形式に適合させるように構成される（動作２６２）。他の実施形態では、規則エンジンインターフェース２３０は、規則エンジンアダプタなど、１つまたは複数の追加構成要素とともに、アクションを受信モジュール２２０に適合させるように動作する。一実施形態では、規則エンジンインターフェース２３０は、決定されたアクションを秩序化する（marshal）ことができる。シリアライゼーションなど、他の適した適合技法が、規則エンジンインターフェース２３０によって使われ得る。
【００７７】
[0089]規則エンジンインターフェース２３０は次いで、決定されたアクションを受信モジュール２２０に送る（動作２６３）。一実施形態では、受信モジュール２２０の識別は、規則エンジン２４０によって（たとえば、１つまたは複数の規則に関連付けられたメタデータを通して）提供される。いくつかの実施形態では、規則エンジンインターフェース２３０は、決定されたアクションを（たとえば、一般的なメッセージ通信バスを通じて）ブロードキャストし得、受信モジュール２２０は、ブロードキャストからアクションを受信し得る。したがって、受信モジュール２２０は、決定されたアクションを送るとき、具体的に識別され、目標とされる必要はない。受信モジュール２２０は、決定されたアクションを、受信モジュール２２０の実施形態に従って扱う。
【００７８】
[0090]図３Ａは、本発明の一実施形態による、ポータブル電子デバイス内の規則エンジンプラットフォームによって実施される方法３００の例を示す。図３Ａの動作は、例示的であり、必ずしも図示される順序で実施されるとは限らない。方法３００は、図１に示されるポータブル電子デバイス１００の規則エンジンプラットフォーム１３０によって実施することができ、たとえば、動作は、規則エンジンインターフェース１３１および／または規則エンジン１３２によって実施することができる。方法３００を実行する規則エンジンプラットフォームは、モジュールおよびプロセッサなど、規則エンジンプラットフォームが実装されるデバイスの他の構成要素と通信可能に結合され得る。一実施形態では、規則エンジンプラットフォームは、ハードウェア、ストレージ、１つまたは複数のプロセッサ、モジュールまたはポータブル電子デバイスの他の構成要素にわたって分散される個々の構成要素に分割され得る。規則エンジンプラットフォームは、そのような構成要素に関連付けられた機能性およびデータへのアクセスを有し得る。
【００７９】
[0091]最初に、規則エンジンプラットフォームは、規則エンジンプラットフォームと通信可能に結合された１つまたは複数のモジュールの挙動（behavior）に影響を及ぼし、または支配し得る複数の規則を受信する（動作３０５）。規則は、規則エンジンプラットフォームと通信可能に結合されたモジュール（たとえば、モジュール１０１〜１０６）から、リモートソース（たとえば、クラウドやＵＲＩ）から、またはローカルソース（たとえば、メモリもしくは取外し可能フラッシュメモリデバイス内のディレクトリ）から、ランタイムに動的に受信され得るが、規則は、あらかじめ規定され（たとえば、規則エンジンプラットフォームのコンパイル時に受信され）てもよい。受信された規則は、規則リポジトリ（たとえば、規則リポジトリ１３３）中に記憶された既存の規則ベースを更新し得、または規則リポジトリの設計時もしくは他のコンパイル時に受信され得る。一実施形態では、複数の規則は、問い合わせ（クエリ）など、規則エンジンプラットフォームからの要求に応答して受信され得る。
【００８０】
[0092]規則エンジンプラットフォームは、受信された複数の規則に応答して、組織的構造を構築することができる。組織的構造は、規則エンジンプラットフォームが新たに初期化される開始状態を示すことができる。一実施形態では、組織的構造は、規則を真と評価させるいくつかのファクトを含む。ファクトは、最初に、ヌルまたは偽などのデフォルトにアサートされ得る。規則エンジンプラットフォームは、既存の組織的構造を更新する複数の規則も受信し得る。規則エンジンプラットフォームは次いで、既存の組織的構造を、たとえば、既存の要件を修正し、廃止された要件を削除し、新たに共有される要件を識別することによって、複数の受信された規則を組み込むように更新するように構成される。
【００８１】
[0093]複数の規則に加えて、方法３００を実施する規則エンジンプラットフォームは、図１のモジュール１０１〜１０６など、少なくとも１つのサンプリングモジュールから少なくとも１つのサンプルを受信するように構成される（決定ブロック３１０）。ただし、サンプルは、すべての事例において受信されなくてもよい。たとえば、規則エンジンプラットフォームがモジュールに問い合わせしていない場合、またはモジュールによって提供されるサンプルストリームが存在しない場合、サンプルは受信され得ない。しかし、規則エンジンプラットフォームは、たとえば、サンプリングモジュールへのサブスクリプションに基づいて、サンプリングモジュールから受信されるべきサンプルを決定し得る。一実施形態では、規則エンジンプラットフォームは、組織的構造に基づいて、受信されるべきサンプルを決定し得、たとえば、規則エンジンプラットフォームは、規則を分解して、組織的構造を構築するための必要とされるファクトを識別し、そうする際、当該必要とされるファクトがそこからアサートされ得るサンプルを決定し得る。
【００８２】
[0094]サンプルが受信された場合、方法３００を実施する規則エンジンプラットフォームは、ファクトが更新されるべきであることをサンプルが示すかどうか決定し得る（決定ブロック３２０）。たとえば、受信サンプルが新たなデータ（たとえば、新たなメッセージ）または環境の変化（たとえば、新たなコンテキスト）を示す場合、ファクトは、規則エンジンプラットフォームを実装するデバイスの現在の状態を反映するように更新され得る。たとえば、ソーシャルネットワーキングモジュールから新たなメッセージサンプルが受信された場合、新たなメッセージファクトが更新され得る。さらに、サンプルがファクトを全体的に修正した場合、当該ファクトの他の構成成分（たとえば、ファクトまたはサンプル）が有効なままであっても、当該ファクトが更新され得る。たとえば、サンプルまたはファクトの組合せ（たとえば、推論）は、ユーザが睡眠中であるというファクトをアサートさせ得るが、ユーザが動いていることを示す動き状態サンプルの受信は、ファクトが、ユーザが睡眠中でないことを示すように更新されることを求め得る。
【００８３】
[0095]必要に応じて、サンプル受信に準じるファクトが、リポジトリ（たとえば、リポジトリ１３３、１３４）中でアサートされる（動作３２５）。一実施形態では、サンプルまたはサンプルがないことがファクトを実質的に更新する（たとえば、ファクトの真の値を変更する）場合のみ、ファクトがアサートされる。ファクトは、ＲＡＭ、キャッシュメモリ、バッファ、または瞬間的アクセスならびに今後のアクセスのための記憶ロケーションの組合せなどのメモリ中に記憶されることによって、リポジトリ中でアサートされ得る。ファクトは、リポジトリ中にすでに記憶されていてよい、サンプルまたはファクトの組合せ（たとえば、推論）としてアサートされ得る。一実施形態では、ファクトは、更新を反映するように組織的構造を更新することによってアサートされる。さらに、ファクトは、不揮発性メモリなどの持続記憶装置に追加され得る。
【００８４】
[0096]いくつかの実施形態では、サンプル受信に従って複数のファクトがアサートされ得、すなわち、受信サンプルまたは受信サンプルがないことは、２つ以上のファクトの同時期更新を要し得る。特に、これは、１つのサンプルからアサートされるファクトと、当該１つのサンプルを含む複数のサンプルまたはファクトからアサートされる１つまたは複数のファクトとについての場合であり得る。
【００８５】
[0097]リポジトリ中のファクトに従って、方法３００を実施する規則エンジンプラットフォームは、１つまたは複数の規則を識別するように構成される（動作３３０）。図示されるように、規則エンジンプラットフォームは、アサートされたファクトに応答して、規則を識別し得る（たとえば、アサートされたファクトが、規則の条件を満足することを求められる場合）。代替として、規則エンジンプラットフォームの初期化時など、どのファクトも更新されない場合、または（たとえば、クロック信号に従って）特定の時間に規則が識別されるべきである場合、規則が識別され得る。規則は、識別され、続いて、たとえば規則エンジン１３２が規則リポジトリ１３３から規則を選択する場合、規則リポジトリから選択され得る。ただし、規則は、直ちに評価されなくてよいが、規則を真と評価させる追加ファクトがアサートされたとき、評価を迅速化するために、バッファリングまたはキャッシュされ得る。
【００８６】
[0098]いくつかの実施形態では、規則の階層または他の規則に関係した規則の顕著属性などの競合解決アジェンダに従って、規則が識別される。競合解決アジェンダに従って規則を識別することにより、真と評価されるとき、複数の規則がリポジトリ中のファクトに関連するが競合する結果を有し得る事例の出現を減らすことができる。さらに、コンテキストに従って規則が識別され得る。したがって、リポジトリ中のファクトに関連し得るが対象のコンテキスト（たとえば、瞬間的コンテキスト、期待されるコンテキストまたは頻発するコンテキスト）に無関連の規則はバイパスされ、対象のコンテキストに関連する規則を識別する。
【００８７】
[0100]いくつかの実施形態では、各規則が、規則の重要性を示唆する、関連付けられた重みを有する。たとえば、より高い重みをもつ規則は、その規則が、低い重みをもつ規則に優先することを含意する。競合があるケースでは、これらの重みは、競合を解決するのに使うことができ、より高い重みをもつ規則が評価される。
【００８８】
[0101]規則を識別すると、規則エンジンプラットフォームは次いで、規則を評価し得る（動作３３５）。識別された規則を評価することは、（たとえば、サンプルもしくは論理値について）アサートされたファクトまたは追加ファクトを検査することを含み得る。たとえば、ユーザが運転中であるというファクトがアサートされた場合、規則エンジンプラットフォームは、ユーザが運転中である場合について真値を決定する規則を評価し得る。概して、規則の条件（たとえば、ファクト）すべてが満足される場合、規則は真と評価される。一実施形態では、規則が偽と評価される場合、第１の規則よりも劣った顕著属性を有する規則など、別の規則が識別および評価され得る。
【００８９】
[0102]いくつかの実施形態では、複数のファクトが、規則を評価するのに使われる。たとえば、受信された複数のうちの１つの規則が、ユーザが睡眠中であることが真である場合、オーディオ出力がディセーブルにされることを示し得る。この規則は、規則エンジンプラットフォームが推論を行い、したがって、ユーザが睡眠中であるというファクトをアサートするのに、２つのサンプル、すなわち（１）時間および（２）動き状態を必要とし得る。したがって、規則エンジンプラットフォームは、現在時刻が午前２：００であることを示す時間サンプルについてのファクトをアサートし、デバイスが動いていないことを示す別のファクトをアサートする（またはユーザが睡眠中であるという単一のファクトをアサートする）。規則エンジンプラットフォームは次いで、早朝であるとともにデバイスが動いていないので、ユーザが睡眠中であるというファクトに基づいて、規則を評価すればよい。
【００９０】
[0103]一実施形態では、規則は、規則の要件に従って組織的構造をトラバースする（または、「たどる」）（traverse）ことによって評価され得る。たとえば、規則は、３つの要件を有してよく、すなわち、規則が真と評価されるためには、ファクトＡおよびＢが真でなければならず、ファクトＣは偽でなければならない。組織的構造は、ファクトＡを検査し、Ａが真の場合、ファクトＢに進み、Ｂが真の場合、ファクトＣに進むことにより、トラバースされ得る。ファクトＣが次いで、偽の場合、規則は真と評価される。ファクトＡ、Ｂ、およびＣが、異なるレートで、異なる瞬間に生じることが可能である。そのようなケースにおいて、ファクトは、リポジトリ中にキャッシュされ、各新たなファクトが入ってくると、再読込みされ得る。
【００９１】
[0104]１つまたは複数の規則を評価した後、方法３００を実施する規則エンジンプラットフォームは、評価を使って１つまたは複数のアクションを決定する（動作３４０）。いくつかの実施形態では、たとえば規則が真と評価される場合、このアクションは、規則を定義する条件付きステートメントの「ｔｈｅｎ」クローズ中に含められる。代替として、決定されたアクションは、何もしないことであってよい。図１に関係して、規則エンジン１３２はアクションを決定し得る。
【００９２】
[0105]いくつかの実施形態では、規則が真と評価される場合、複数のアクションが決定され得る。規則の結果が、デバイス内の複数のモジュールに影響を与える場合、および／または規則の結果が、複数のモジュールにわたって異なるように実装されるべきである場合、複数のアクションが決定され得る。複数のアクションは概して、各モジュールがアクションを受信するようにブロードキャストされてよい。他の実施形態では、複数のうちのそれぞれのアクションが、特定のモジュールまたはモジュールのタイプ（たとえば、メッセージ通信アプリケーションモジュールやロケーションベースのアプリケーションモジュール）向けに適合される。それぞれのアクションが、たとえば、規則に関連付けられたメタデータに基づいて、特定のモジュールまたはモジュールタイプ向けに適合され得る。
【００９３】
[0106]一実施形態では、アクションは、アクセス制御リストなど、規則に関連付けられたメタデータと関連して決定される。したがって、アクションは、規則の結果が、デバイス内で構成され得る許可と競合しないように決定され得る。代替として、アクションは、規則の結果がそのような許可と一致されるように決定され得る。たとえば、真と評価される規則の結果は、ユーザに通知することであってよいが、デバイス内で構成された許可が、オーディオ通知をディセーブルにしており、したがって、アクションは、ユーザにグラフィカルに通知することと決定され得る。
【００９４】
[0107]デバイス上で稼動する異なるモジュールが、異なる規則セットを提供し得ることが可能である。そのようなケースにおいて、規則エンジンプラットフォームは、プライバシーの理由により、およびあるアプリケーションの規則が他のアプリケーションの規則と干渉しないように、規則セットを別々に評価することを選ぶことができる。たとえば、規則エンジンプラットフォーム１３２は、アクセス制御ポリシーに従って規則を評価し得る。
【００９５】
[0108]いくつかの実施形態では、決定されたアクションが、リポジトリにおけるファクトを更新する（決定ブロック３４５）。したがって、方法３００を実施する規則エンジンプラットフォームは、決定されたアクションからファクトをアサートし得る（動作３２５）。したがって、上述したように、１つまたは複数の追加規則が識別および評価され得る。
【００９６】
[0109]アクションの決定に続いて、方法３００を実施する規則エンジンプラットフォームは、決定されたアクションを送る（動作３５０）。決定されたアクションの送付は、たとえば、規則エンジンプラットフォームのインターフェース（たとえば、規則エンジンインターフェース１３１）によって円滑にされ得る。他の実施形態によると、決定されたアクションは、オペレーティングシステムまたはＡＳＩＣを使って送られ得る。いくつかの実施形態では、決定されたアクションが、デバイス内の複数のモジュールに影響を与える。したがって、規則エンジンプラットフォームは、決定されたアクションを、複数の形式で複数のモジュールに送るように構成され得る。
【００９７】
[0110]図３Ｂは、本発明の一実施形態による、ポータブル電子デバイス内の規則エンジンプラットフォームによって実施される方法３６０の例を示す。図３Ｂの動作は、例示的であり、必ずしも図示される順序で実施されるとは限らない。方法３６０は、図１に示されるポータブル電子デバイス１００の規則エンジンプラットフォーム１３０によって実施することができ、たとえば、方法３６０の動作は、規則エンジンインターフェース１３１および／または規則エンジン１３２によって実施することができる。方法３６０を実行する規則エンジンプラットフォームは、モジュールおよびプロセッサなど、規則エンジンプラットフォームが実装されるデバイスの他の構成要素と通信可能に結合され得る。
【００９８】
[0111]最初に、規則エンジンプラットフォームは、規則エンジンプラットフォームと通信可能に結合された１つまたは複数のモジュールの挙動に影響し、または挙動を支配し得る複数の規則を受信する（動作３６５）。規則は、規則エンジンプラットフォームと通信可能に結合されたモジュールから、リモートソース（たとえば、クラウドやＵＲＩ）から、またはローカルソース（たとえば、メモリもしくは取外し可能フラッシュメモリデバイス内のディレクトリ）から、ランタイムに動的に受信され得るが、規則は、あらかじめ規定され（たとえば、規則エンジンプラットフォームのコンパイル時に受信され）てもよい。受信された規則は、規則リポジトリ（たとえば、規則リポジトリ１３３）中に記憶された既存の規則ベースを更新することもでき、または規則リポジトリの設計時もしくは他のコンパイル時に受信されてもよい。一実施形態では、複数の規則は、問い合わせ（クエリ）など、規則エンジンプラットフォームからの要求に応答して受信され得る。
【００９９】
[0112]規則エンジンプラットフォームは、受信された複数の規則に応答して、組織的構造を構築し得る。組織的構造は、規則エンジンプラットフォームが新たに初期化される開始状態を示すことができる。一実施形態では、組織的構造は、規則を真と評価させるいくつかのファクトを含む。ファクトは、最初に、ヌルまたは偽などのデフォルトにアサートされ得る。規則エンジンプラットフォームは、既存の組織的構造を更新する複数の規則も受信し得る。規則エンジンプラットフォームは次いで、既存の組織的構造を、たとえば、既存の要件を修正し、廃止された要件を削除し、新たに共有される要件を識別することによって、複数の受信された規則を組み込むように更新するように構成される。
【０１００】
[0113]必要に応じて、モジュール１０１〜１０６から受信されたサンプルなど、受信サンプルおよび予想サンプルのうちの１つに従って、ファクトが、リポジトリ中でアサートされる（動作３７０）。一実施形態では、サンプルまたはサンプルがないことがファクトを実質的に更新する（たとえば、ファクトの真の値を変更する）場合、当該ファクトがアサートされるのみである。ファクトは、ＲＡＭ、キャッシュメモリ、バッファ、または瞬間的アクセスならびに今後のアクセスのための記憶ロケーションの組合せなどのメモリ中に記憶されることによって、リポジトリ中でアサートされ得る。ファクトは、リポジトリ（たとえば、リポジトリ１３３、１３４）中にすでに記憶され得るサンプルまたはファクトの組合せ（たとえば、推論）としてアサートされ得る。一実施形態では、ファクトは、更新を反映するように組織的構造を更新することによってアサートされる。さらに、ファクトは、不揮発性メモリなどの持続記憶装置に追加され得る。
【０１０１】
[0114]いくつかの実施形態では、受信または予想サンプルに従って、複数のファクトがアサートされ得、たとえば、受信サンプルまたは予想サンプルは、２つ以上のファクトの同時期更新を要し得る。特に、これは、１つのサンプルからアサートされるファクトと、当該１つのサンプルを含む複数のサンプルまたはファクトからアサートされる１つまたは複数のファクトとについての場合であり得る。
【０１０２】
[0115]リポジトリ中のファクトに従って、方法３００を実施する規則エンジンプラットフォームは、１つまたは複数の規則を識別するように構成される（動作３７５）。図示されるように、規則エンジンプラットフォームは、アサートされたファクトに基づいて、規則を識別し得る（たとえば、アサートされたファクトが、規則の条件を満足することを求められる場合）。代替として、規則エンジンプラットフォームの初期化時など、どのファクトも更新されない場合、または（たとえば、クロック信号に従って）特定の時間に規則が識別されるべきである場合、規則が識別され得る。規則が、識別され、続いて、規則リポジトリ（たとえば、規則リポジトリ１３３）から選択され得る。ただし、規則は、直ちに評価されなくてよいが、規則を真と評価させる追加ファクトがアサートされたとき評価を迅速化するために、バッファリングまたはキャッシュされ得る。
【０１０３】
[0116]いくつかの実施形態では、規則の階層または他の規則に関係した規則の顕著（salience）属性などの競合解決アジェンダに従って、規則が識別される。競合解決アジェンダに従って規則を識別することにより、真と評価されるとき、複数の規則がリポジトリ中のファクトに関連するが競合する結果を有し得る事例の出現を減らすことができる。さらに、コンテキストに従って規則が識別され得る。したがって、リポジトリ中のファクトに関連し得るが対象のコンテキスト（たとえば、瞬間的コンテキスト、期待されるコンテキストまたは頻発するコンテキスト）に無関連の規則はバイパスされて、対象のコンテキストに関連する規則を識別する。
【０１０４】
[0117]いくつかの実施形態では、各規則が、規則の重要性を示唆する、関連付けられた重みを有する。たとえば、より高い重みをもつ規則は、その規則が、低い重みをもつ規則に優先することを含意する。競合があるケースでは、これらの重みは、競合を解決するのに使うことができ、より高い重みをもつ規則が評価される。
【０１０５】
[0118]規則を識別すると、規則エンジンプラットフォームは次いで、規則を評価し得る（動作３８０）。識別された規則を評価することは、（たとえば、サンプルもしくは論理値について）アサートされたファクトまたは追加ファクトを検査することを含み得る。たとえば、ユーザが運転中であるというファクトがアサートされた場合、規則エンジンプラットフォームは、ユーザが運転中である場合について真値に条件付けされた規則を評価すればよい。概して、規則の条件（たとえば、ファクト）すべてが満足される場合、規則は真と評価される。一実施形態では、規則が偽と評価される場合、第１の規則よりも劣った顕著属性を有する規則など、別の規則が識別および評価され得る。
【０１０６】
[0119]いくつかの実施形態では、複数のファクトが、規則を評価するのに使われる。たとえば、受信された複数のうちのある規則が、ユーザが睡眠中であることが真である場合、オーディオ出力がディセーブルにされるべきであることを示し得る。この規則は、規則エンジンプラットフォームが推論を行い、したがって、ユーザが睡眠中であるというファクトをアサートするのに、２つのサンプル、すなわち（１）時間および（２）動き状態を必要とし得る。したがって、規則エンジンプラットフォームは、現在時刻が午前２：００であることを示す時間サンプルについてのファクトをアサートし、デバイスが動いていないことを示す別のファクトをアサートする（またはユーザが睡眠中であるという単一のファクトをアサートする）。規則エンジンプラットフォームは次いで、早朝であるとともにデバイスが動いていないので、ユーザが睡眠中であるというファクトに基づいて、規則を評価できる。
【０１０７】
[0120]一実施形態では、規則は、規則の要件に従って組織的構造をトラバースすることによって評価され得る。たとえば、規則は、３つの要件を有してよく、すなわち、規則が真と評価されるためには、ファクトＡおよびＢが真でなければならず、ファクトＣは偽でなければならない。組織的構造は、ファクトＡを検査し、Ａが真の場合、ファクトＢに進み、Ｂが真の場合、ファクトＣに進むことにより、トラバースされ得る。ファクトＣが次いで、偽の場合、規則は真と評価される。ファクトＡ、Ｂ、およびＣが、異なるレートで、異なる瞬間に生じることが可能である。そのようなケースにおいて、ファクトは、リポジトリ中にキャッシュされ、各新たなファクトが入ってくると、再読込みされ得る。
【０１０８】
[0121]１つまたは複数の規則を評価した後、方法３６０を実施する規則エンジンプラットフォームは、評価から、１つまたは複数のアクションを決定する（動作３８５）。いくつかの実施形態では、たとえば規則が真と評価される場合、このアクションは、規則を定義する条件付きステートメントの「ｔｈｅｎ」クローズ中に含められる。代替として、決定されたアクションは、何もしないことであってよい。
【０１０９】
[0122]いくつかの実施形態では、規則が真と評価される場合、複数のアクションが決定され得る。規則の結果が、デバイス内の複数のモジュールに影響を与える場合、および／または規則の結果が、複数のモジュールにわたって異なるように実装されるべきである場合、複数のアクションが決定され得る。複数のアクションは概して、各モジュールがアクションを受信するようにブロードキャストされてよい。他の実施形態では、複数のうちのそれぞれのアクションが、特定のモジュールまたはモジュールのタイプ（たとえば、メッセージ通信アプリケーションモジュールやロケーションベースのアプリケーションモジュール）向けに適合される。それぞれのアクションが、たとえば、規則に関連付けられたメタデータに基づいて、特定のモジュールまたはモジュールタイプ向けに適合され得る。
【０１１０】
[0123]一実施形態では、アクションは、アクセス制御リストなど、規則に関連付けられたメタデータと関連して決定される。したがって、アクションは、規則の結果が、デバイス内で構成され得る許可と競合しないように決定され得る。代替として、アクションは、規則の結果がそのような許可と一致されるように決定され得る。たとえば、真と評価される規則の結果は、ユーザに通知することであってよいが、デバイス内で構成された許可が、オーディオ通知をディセーブルにしており、したがって、アクションは、ユーザにグラフィカルに通知することと決定され得る。
【０１１１】
[0124]図４および図５に移ると、規則ベースに対する更新を受信するためのシステムおよび方法が示されている。新たな規則を追加するためのシステム４００について、まず始めに、規則エンジンプラットフォーム４６０は、図１の規則エンジンプラットフォーム１３０であってよい。それに応じて、規則エンジンインターフェース４２０は、規則エンジンインターフェース１３１であっても、それを含んでもよく、規則エンジン４４０は、規則エンジン１３２であっても、それを含んでもよく、規則ベース４５０は、図１の規則リポジトリ１３３中に記憶されてよい。
【０１１２】
[0125]規則変換器４３０は、規則エンジンプラットフォーム４６０内で実装することができ、規則エンジンインターフェース４２０および／または規則エンジン４４０と統合されてよい。ただし、規則変換器４３０は、規則エンジンインターフェース４２０または規則エンジン４４０に通信可能に結合されてもよい。いくつかの実施形態では、規則変換器４３０は、コンパイラ、インタープリタまたは規則更新を、規則エンジン４４０によって解釈されるのに適した形式に変換するための他の同様の機構であってよい。
【０１１３】
[0126]規則ソース４１０は、規則ベース４５０に対する更新についての生起ポイント（point of origination）である。規則ソース４１０は、静的であり、事前コンパイルされている規則を提供することができる。代替として、規則ソース４１０は、ユーザ入力に応答して作成されるか、または自動的に作成される動的規則を提供することができる。規則ソース４１０は、規則を追加、更新または消去することによって、規則ベース４５０についての更新を提供することができる。したがって、規則ベース４５０は、規則エンジンプラットフォーム４６０を実装するデバイスのカスタマイズとコンテキスト認識とをサポートするように、ランタイムに更新され得る。
【０１１４】
[0127]いくつかの実施形態では、規則ソース４１０は、図１のモジュール１０１〜１０６のいずれかであっても、それらを含んでもよい。たとえば、ユーザが、新たな規則を作成するか、または既存の規則を修正する、アプリケーションモジュール１０５〜１０６のうちの１つを通して、パラメータを定義することができる。他の実施形態では、規則ソース４１０は、事前コンパイルされた規則を導入することができる。そのような実施形態において、規則ソース４１０は、ファイル（たとえば、ＳＤカードからのバイナリファイル）、ユニフォームリソースロケータ（ＵＲＬ）（たとえば、ＵＲＬからのバイナリ規則）、または資産（たとえば、資産ディレクトリからロードされる資産）であってよい。代替として、規則ソース４１０は、規則エンジンプラットフォーム４６０の一部として含まれる。たとえば、規則ソース４１０は、コンテキスト認識エンジンや周辺インテリジェンスエンジンなどの「スマート」エンジンであってよい。スマートエンジンは、コンテキストに基づいて規則を提供することができる。
【０１１５】
[0128]図４のシステム４００は、図５の方法５００を実装することができる。最初に、規則ベースを更新するための要求が受信される（動作５０５）。図４の実施形態において、規則ソース４１０は、規則エンジンインターフェース４２０を通して、規則ベース４５０に対する更新を要求する。規則ベースを更新するための要求は、新たな規則、更新された規則、または規則を消去するための要求であってよい。要求は、コンテキストが変えられるか、またはユーザがモジュールと対話するときなど、ランタイムにおいて動的に受信され得る。
【０１１６】
[0129]その後、要求は、規則エンジンに適した形式に変換される（動作５１０）。この変換動作は、図４の規則変換器４３０によって実施することができる。変換動作は、規則更新が直ちに効果を発揮するように、ランタイムにおいて動的に行われ得る。いくつかの実施形態では、事前コンパイルされた規則が受信された場合、要求は、変換をほとんどまたはまったく必要としない。代替として、要求は、ハイレベルコードとして受信され、規則エンジンによって解釈され得る形式にコンパイルされる。
【０１１７】
[0130]一実施形態では、要求は、規則ベースを更新する前に有効にされる（決定ブロック５１５）。たとえば、規則を追加するための要求は、より高い優先権の別の規則と競合する場合も、アクセス制御ポリシーと競合するファクトを必要とする場合もある。いくつかの実施形態では、要求は、（たとえば、規則に関連付けられたアクセス制御ポリシーまたはメタデータに従って）消去することができない規則を消去することであり得る。
【０１１８】
[0131]別の実施形態では、要求は、ユーザ入力に応答して有効にされる。たとえば、要求された規則更新の結果、ＳＰＳロケーションをアプリケーションモジュールに送り、したがって、ユーザは、アプリケーションモジュールがＳＰＳロケーションを受信し得るかどうかを示す入力を促され得る。要求が無効の場合、要求は無視されてよい。一実施形態では、要求が受諾され得ないという要求のソースが通知される。
【０１１９】
[0132]要求が有効である場合、要求に従って、規則ベースが更新される（動作５２０）。たとえば、新たな規則が追加されてもよく、既存の規則が修正または消去されてもよい。別の実施形態では、規則ベースは、規則の階層または規則の１つもしくは複数の顕著属性を更新することによって更新される。たとえば、あるコンテキストに関連する規則は、第２のコンテキストには無関連であり、したがって、規則選択／識別中、比較的顕著でない場合がある。さらに、組織的構造は、更新された規則ベースの結果として、更新され得る。たとえば、異なるファクトがアサートされるように、ファクトについての新たな要件が導入されてもよく、ファクトベースが更新されてもよい。いくつかの実施形態では、規則ベースは、要求が処理された後で更新される。要求は、規則ベースに対するその関係または影響を決定することによって処理され得る。新たな規則を追加するための要求について、新たな規則は、たとえば、規則の階層に割り当てられ、または顕著属性を割り当て得る。
【０１２０】
[0133]図６は、デバイスのユーザの遷移中状態に従って規則を評価するための方法６００の例の流れ図を示す。したがって、ユーザの遷移中状態は、複数のサンプルの出現またはないことに基づいて推論される。方法６００は、たとえば、図１の規則エンジンプラットフォーム１３０によって実装することができ、動作は、規則エンジンインターフェース１３１および／または規則エンジン１３２によって実施することができる。方法６００において、規則エンジンは、少なくとも２つのサンプリングモジュール、すなわち（１）動き状態モジュール（たとえば、慣性センサ）および（２）Ｗｉ−Ｆｉモジュールにサブスクライブされる。したがって、動き状態モジュールは、動き状態についてのサンプルを提供するように構成され、Ｗｉ−Ｆｉモジュールは、Ｗｉ−Ｆｉについてのサンプル（たとえば、Ｗｉ−Ｆｉシグネチャおよび／またはＷｉ−Ｆｉ送信）を提供するように構成される。これらのモジュールのそれぞれの１つは、図１に示されるモジュール１０１〜１０６であっても、それを含んでもよい。
【０１２１】
[0134]始めに、方法６００を実装する規則エンジンプラットフォームは、モジュール１０１〜１０６から受信されたサンプルなど、新たな動き状態についてのサンプルが受信されているかどうか決定する（決定ブロック６１０）。いくつかの実施形態では、規則エンジンプラットフォームは、たとえば、ファクトの真の値を検査することによって、動き状態サンプル（たとえば、リポジトリ１３３、１３４）からアサートされたファクトを検査することができる。新たな動き状態サンプルが受信されたことをファクトが示す場合、規則エンジンプラットフォームは、別のファクト検査に進む。第２の検査において、規則エンジンプラットフォームは、動き状態についてのサンプルが、最後の５秒など、第１の時間フレーム内に受信されたかどうか決定する（決定ブロック６２０）。規則エンジンプラットフォームは、たとえば、ファクトのタイムスタンプを検査することによって、第１のファクトと同じファクトを検査して、動き状態サンプルがいつ受信されたか決定することができる。ただし、このファクトは、動き状態サンプルからアサートされた異なるファクトであってよい。
【０１２２】
[0135]新たな動き状態が第１の時間フレーム内に受信された場合、方法６００を実施する規則エンジンプラットフォームは、最後のＷｉ−Ｆｉシグネチャが、最後の３３秒など、第２の時間フレーム内に受信されたかどうか決定する（決定ブロック６３０）。規則エンジンプラットフォームは、Ｗｉ−Ｆｉシグネチャに関連したファクト（たとえば、リポジトリ１３３、１３４中に記憶されたファクト）を検査して、最後のＷｉ−Ｆｉシグネチャサンプルがいつ受信されたか決定すればよい。ここで、推論は、ポータブル電子デバイスが、最後に検出されたＷｉ−Ｆｉシグネチャの外で動いている場合、受信された動き状態サンプルは、デバイスが、ある距離内を移動しており、限られたエリアにおける劇的な動きを単に受けているのではないことを示す。このファクトは、Ｗｉ−Ｆｉシグネチャサンプルからアサートされてもよく、Ｗｉ−Ｆｉシグネチャサンプルがないこととしてアサートされてもよい。
【０１２３】
[0136]最後のＷｉ−Ｆｉシグネチャが、少なくとも３３秒の古さであると決定された場合、方法６００を実施する規則エンジンプラットフォームは、最終評価を実施する。最終評価のために、規則エンジンプラットフォームは、現在の動き状態を評価する（決定ブロック６４０）。規則エンジンプラットフォームは、この評価を、第１のファクトと同じか、または異なるファクトであるファクトを検査することによって行うことができる。たとえば、第１のファクトは、新たな動き状態サンプルに従って、再度アサートされ（すなわち、更新され）てもよく（たとえば、ファクトに関連付けられたタイムスタンプが更新されてよい）、第１のファクトは、どの新たな動き状態サンプルも受信されていないことを示すように、再度アサートされてもよい。他の実施形態では、動き状態サンプルをファクトとしてアサートすることなく推論が行われ得るように、動き状態サンプルがキャッシュされる。
【０１２４】
[0137]規則エンジンプラットフォームによる、動き状態サンプルの評価が、デバイスが静止していないことを示す場合、規則エンジンプラットフォームは、ユーザが遷移中であるという推論を行う（動作６５０）。規則エンジンプラットフォームは、この推論から、規則を評価するのに使われるファクトをアサートし得る。たとえば、ユーザが遷移中の場合に真と評価される規則について、規則エンジンプラットフォームは、アクションを決定し、および／または別の規則を評価させる別のファクトをアサートし得る。さらに、規則エンジンプラットフォームは、方法６００を再度反復してよい。
【０１２５】
[0138]逆に、先行評価のうちのいずれかが否定である場合、方法６００を実装する規則エンジンプラットフォームは、ユーザが遷移中でないという推論を行う（動作６６０）。規則エンジンプラットフォームは、たとえば、ユーザの遷移状態についてのファクトを更新することによって、この推論からのファクトをアサートし得る。規則エンジンプラットフォームはその後、遷移中でないユーザに従って、アクションを決定し、および／または別の規則を評価することができる。さらに、規則エンジンプラットフォームは、方法６００を再度反復してよい。
【０１２６】
[0139]ここで図７Ａを参照すると、ブロック図は、システムを最適化するための規則エンジンプラットフォームの実施形態を示す。システム７００は、図１のポータブル電子デバイス１００内で実装され得る。したがって、規則エンジンプラットフォーム７０５は規則エンジンプラットフォーム１３０であっても、それを含んでもよく、規則エンジンインターフェース７１０は規則エンジンインターフェース１３１であっても、それを含んでもよく、規則エンジン７３０は規則エンジン１３２であっても、それを含んでもよく、規則リポジトリ７１５は規則リポジトリ１３３であっても、それを含んでもよく、知識リポジトリ７２０は知識リポジトリ１３４であっても、それを含んでもよい。同様に、モジュール７５０、７５５は、モジュール１０１〜１０６であっても、それらを含んでもよく、サンプリングモジュールおよび／または受信モジュールとして動作することができる。
【０１２７】
[0140]別の実施形態では、システム７００は、パーソナルデスクトップまたはラップトップコンピュータなど、どのコンピューティングシステムに組み込まれてもよい。システム７００は、ポータブル電子デバイス１００とは異なり得るが、モジュール７５０、７５５は、図１のモジュール１０１〜１０６を参照して記載されたのと同じように、データを提供するとともに、データを受信するように構成され得る。したがって、モジュール７５０、７５５は、サンプリングモジュールおよび／または受信モジュールとして動作するように構成され得る。
【０１２８】
[0141]規則エンジンプラットフォーム７０５に組み込まれない、図７Ａの図示される構成要素は、コンピューティングシステム用の、どの適切な構成要素であってもよい。一実施形態では、これらの構成要素は、当技術分野において知られている。たとえば、ユーザインターフェースモジュール７６０は、ユーザが、スルー、モジュール７５０、７５５またはオペレーティングシステム７７５によって提供されるグラフィカルユーザインターフェース（ＧＵＩ）など、システム７００と対話できるようにし得る。これを実現するために、システム７００は、ディスプレイおよびユーザ入力に適した１つまたは複数のデバイス（たとえば、キーボード、マウス、またはタッチスクリーン）など、１つまたは複数のハードウェアデバイス（図示せず）と通信可能に結合され得る。
【０１２９】
[0142]いくつかの実施形態では、規則エンジン７３０は、コンテキスト認識エンジン７３５と最適化エンジン７４０の一方または両方を含む。コンテキスト認識エンジン７３５と最適化エンジン７４０の両方は、規則エンジン７３０内に組み込まれてもよく、規則エンジン７３０および／または規則エンジンプラットフォーム７０５とは別個であるとともにそれらと通信可能に結合されてもよい。
【０１３０】
[0143]コンテキスト認識エンジン７３５は、システム７００またはシステム７００のユーザのコンテキストを決定するように構成され得る。コンテキストは、たとえば、システム７００のユーザが「会議に遅れるだろう」または「映画館にいる」という推論など、複数のサンプルを必要とするか、または計算コストがかかる高度な推論であり得る。コンテキストは、ユーザが動いているという推論など、比較的小さいサンプル数を必要とするか、または計算上比較的コストがかからないローレベル推論であってもよい。コンテキスト認識エンジン７３５は、１つもしくは複数のサンプル、１つもしくは複数のファクト、１つもしくは複数の規則またはそれらの組合せから、コンテキストを導出することができる。
【０１３１】
[0144]コンテキスト認識エンジン７３５は続いて、コンテキストを規則エンジン７３０に提供し得る。その後、規則エンジン７３０は、コンテキストに基づいて、規則またはファクトを評価または組織化し得る。たとえば、規則の階層またはそれぞれの顕著属性は、コンテキストに適用可能な規則が優先されるように修正され得る。同様に、コンテキストに従って、ファクトがアサートされ得る。一実施形態では、コンテキストに適用可能な規則および／またはファクトが、規則評価を、最適化するために（たとえば、バッファまたはキャッシュ中で）ロードされる。いくつかの実施形態では、コンテキストが、知識リポジトリ７２０中でファクトとしてアサートされる。
【０１３２】
[0145]一実施形態では、コンテキスト認識エンジン７３５は、ファクトまたはコンテキストの間の関係を導出するように構成される。導出された関係は、それ自体がコンテキストであってよく、したがって、ファクトとしてアサートされ得る。さらに、導出された関係は、規則ベースを更新することができる。コンテキスト認識エンジン７３５は、２つのコンテキストまたはファクトの間の共通または反復パターンを決定することによって、コンテキストまたはファクトの間の関係を導出することができる。たとえば、コンテキスト認識エンジン７３５は、ユーザの自宅とオフィスとの間の関係を、（１）ユーザが自宅にいることを示す第１のコンテキスト、（２）ユーザが運転中であることを示す次のコンテキスト、および（３）ユーザがオフィスにいることを示す最終コンテキストから導出することができる。その後、コンテキスト認識エンジン７３５は、通勤時間（たとえば、第２のコンテキストの持続時間）を示す、自宅コンテキストとオフィスコンテキストとの間の関係を導出することができる。導出された関係から、コンテキスト認識エンジンは、「ユーザが５分後に、オフィスでの会議の約束があり、ユーザが自宅にいる場合、ユーザが約束に遅れるというファクトをアサートする」という規則を提供することができる。別の例では、コンテキスト認識エンジン７３５は、（１）ユーザが運転中であるという示す第１のコンテキスト、（２）一日のうちの特定の時刻、および（３）ユーザが自宅にいることを示す次のコンテキスト、の間の関係を導出することができる。コンテキスト認識エンジン７３５は、ユーザが一般に、一日のうちの特定の時刻に、運転中コンテキストから自宅コンテキストに遷移すると決定することができる。したがって、コンテキスト認識エンジン７３５は、ユーザがその特定の時刻に運転中の場合、ユーザが自宅に向かって運転中であるという関係を導出することができる。
【０１３３】
[0146]いくつかの実施形態では、コンテキスト認識エンジン７３５は、コンテキストを導出するために、１つまたは複数のサンプルに関連した、記憶された情報にアクセスする。情報は、たとえば、リポジトリ７１５〜７２０またはストレージ７７０中に記憶され得る。一実施形態では、記憶される情報は、サンプルの、コンテキストへのマッピングを含む。たとえば、Ｗｉ−Ｆｉシグネチャサンプルが、ユーザが職場にいることを示すコンテキストや、ユーザがオフィスビルの特定の部屋にいることを示すコンテキストなど、特定のコンテキストにマップされ得る。マッピングは、ユーザ入力として受信されても、コンテキスト認識エンジン７３５によって、受信サンプルから導出されてもよく、たとえば、ユーザが素早く遷移していることをＳＰＳサンプルが示すとともに、コンテキスト認識エンジン７３５が、システム７００がオーディオシステム（図示せず）とペアであることを示すＢｌｕｅｔｏｏｔｈサンプルを頻繁に受信する場合、コンテキスト認識エンジン７３５は、オーディオシステムペアリングから、ユーザが運転中であることを示すコンテキストへのマッピングを導出することができる。
【０１３４】
[0147]最適化エンジン７４０は、たとえば、プロセッサ７６５に対する計算負荷、メモリ１２０およびストレージ７７０のアクセスまたは電力源（図示せず）の使用を削減することによって、システム７００の性能と電力消費とを最適化するように構成される。一実施形態では、最適化エンジン７４０は、規則の規則構造を分解して、規則が真と評価されるのに必要とされる構成要素を決定する。分解された規則構造から、最適化エンジン７４０は、モジュール７５０、７５５がサンプリングされるレートを指定する最適化方式など、リソースを節約するための最適化方式を計算することができる。たとえば、２つの異なるサンプリングモジュールＸおよびＹに対して求められる２つの異なるサンプルからアサートされる２つのファクトについて、規則は、真と評価することができる。最適化エンジン７４０はしたがって、規則を、Ｘサンプルについての第１の要件と、Ｙサンプルについての第２の要件とに分解する。第１の要件は、規則が真と評価されるためには、Ｘサンプルが、ファクトとして、毎分一度アサートされるだけでよいことを示し得る。有利には、最適化エンジン７４０は、Ｘサンプルが１分間隔で受信または処理される（たとえば、ファクトをアサートするのに使われる）だけのように、モジュールＸのサンプリングレートを、第１の要件に基づく最適化方式に従って修正し得る。それに応じて、最適化エンジン７４０は、Ｘサンプルが最後の１分の間にファクトとしてアサートされる場合、Ｙサンプルが受信または処理される（たとえば、ファクトをアサートするのに使われる）だけのように、モジュールＹのサンプリングレートを、最適化方式に従って修正し得る。さらに、Ｘサンプルがファクトとしてアサートされていない場合、最適化エンジン７４０は、規則が必ずしも偽と評価されるとは限らないので、規則を評価しなくてよい。
【０１３５】
[0148]規則エンジンプラットフォーム７０５は、効率を増し、速度を増し、電力消費を減らし、システムリソース消費を減らすこと、およびシステム７００の性能を強化することを意図している他の同様の属性によって、システム７００の性能を最適化することができる。したがって、「最適化」は、必ずしも「最良」または規則エンジンプラットフォーム７０５のただ１つの得られる効果／可能性があることを意味するとは限らない。したがって、規則エンジンプラットフォーム１３０は、効率を最大限にすることも、電力消費を最小限にすることも求められないが、これらの側面を向上させることができる。たとえば、規則エンジンプラットフォーム１３０は、速度を増すことができ、同時に、電力消費を増し、これらの増大は、増大した速度が望ましいようないくつかの実施形態では電力消費が直ちに問題となり得るわけではないので、いくつかの実施形態では最適と見なされ得る。
【０１３６】
[0149]規則リポジトリ７１５が複数の規則を含む事例において、複数のうちの各規則は、そのそれぞれの成分要件に分解され得る。最適化エンジンはその後、規則と、それらのそれぞれの要件との間の関係を識別することができる。したがって、最適化エンジン７４０は、複数の規則にわたって、競合するか、または共有される要件を調停する最適化方式を計算することができる。規則エンジンプラットフォーム７０５内での最適化エンジン７４０の実装は、最適化エンジン７４０が、明示的要件を含む規則についてさえも、ファクトが規則の要件をどのように満足するか指定することを可能にし得る。たとえば、３つの規則Ａ、ＢおよびＣが各々、真と評価されるために、サンプリングモジュール７５０からのサンプルからアサートされるファクトを必要とし得る。３つの規則についての要件はファクトを共有するが、３つの規則は、ファクトが必要とされるレートにおいて異なってよく、たとえば、規則Ａはファクトを毎秒必要とし、規則Ｂは、ファクトを３０秒おきに必要とし、規則Ｃは、ファクトを毎分必要とする。まったく異なるレートを有する、ファクトについての３つの要件から、最適化エンジン７４０は、たとえば、規則Ａ、ＢおよびＣの要件を満足したまま、サンプリングモジュール７５０のサンプリングレートを修正することによって、サンプリングモジュール７５０のサンプリングを最適化することができる。この例では、最適化エンジン７４０は、サンプリングモジュールの最適サンプリングレートが１５秒であると決定してよく、したがって、サンプリングモジュール７５０からのサンプルは、１５秒間隔でのみ受信または処理され（たとえば、ファクトをアサートするのに使われ）ればよい。
【０１３７】
[0150]いくつかの実施形態では、最適化エンジン７４０は、モジュール７５０、７５５の一方または両方についての１つまたは複数の最適化パラメータを計算することができる。最適化エンジン７４０は、各個々のモジュール７５０、７５５についての特定の最適化パラメータを用いて最適化方式を計算することができるが、複数のモジュール７５０〜６５５に対して１つの最適化パラメータが適用可能である場合がある。たとえば、最適化方式は、モジュール７５０、７５５のサンプルに対する最適レート、またはモジュール７５０、７５５からの異なるタイプのサンプルが処理されるレートを定義するそれぞれの最適化パラメータを含み得る。
【０１３８】
[0151]最適化方式の実装は、実施形態によって変わり得る。いくつかの実施形態では、最適化方式は、規則エンジンプラットフォーム７０５の一部として、最適化エンジン７４０によって実装される。たとえば、規則エンジンインターフェース７１０は、たとえば、受信サンプルが、最適化方式の最適化パラメータによって定義されるサンプリングレートを超える場合、不必要である、モジュール７５０、７５５から受信されたサンプルを無視して（たとえば、サンプルを破棄して）よい。同様に、規則エンジン７３０は、モジュール７５０、７５５へのそのサブスクリプションを、たとえば、モジュール７５０、７５５がポーリングされ、または必要とされるレートを低下させることによって、規則エンジンインターフェース７１０を通して修正してよい。さらに、ファクトは、最適化方式によって定義された最適レートでアサートされ得る。モジュール７５０、７５５へのサブスクリプションを修正することの追加利点として、モジュール７５０、７５５は、非アクティブ化またはスリープし、能動的に問い合わせられ、またはポーリングされたときにアクティブ化または起動する（wake）だけでよい。
【０１３９】
[0152]一実施形態では、最適化方式のそれぞれの最適化パラメータが、１つまたは複数のモジュール７５０、７５５に提供され、そうすることによって、モジュール７５０、７５５は、そのサンプリングレートを、最適化パラメータに従って修正する。別の実施形態では、最適化エンジン７４０は、最適化パラメータに従って、モジュール７５０、７５５の状態に影響を与える。最適化方式が、モジュール７５０、７５５からのサンプルが不必要であることを示す場合、最適化エンジン７４０は、非アクティブ化し、またはスリープするための命令を含む最適化パラメータを、モジュールに提供すればよい。モジュール７５０、７５５からのサンプルが最適化方式に従って必要とされる場合、最適化エンジンは、アクティブ化し、または覚醒するための命令を含む最適化パラメータを、モジュールに提供すればよい。
【０１４０】
[0153]最適化エンジン７４０は、ファクト、規則、コンテキストなどに対する変化など、システム７００にわたる変化に応答して、ランタイムに、最適化方式を動的に更新することができる。最適化方式に対する動的更新は、たとえば、モジュール７５０、７５５用の最適化パラメータを修正することによって、ランタイムに実装されてよい。冗長動作を避けるために、最適化エンジン７４０は、影響を受ける最適化パラメータを更新するだけでよく、したがって、最適化方式全体を再度計算しなくてよい。
【０１４１】
[0154]一実施形態では、最適化方式は、たとえば、１つのモジュールについての要件（requirement）が第２のモジュールについての要件に依存することを、分解された規則構造が示す場合、要件の間の関係を考慮に入れてよい。たとえば、ある受信サンプルが、異なるサンプルが、規則を評価するためのファクトをアサートする必要をトリガし得る。第１のサンプルが受信されると、最適化エンジン７４０は、第１の受信サンプルと、異なるサンプルとを提供する、モジュール７５０、７５５用の１つまたは複数の最適化パラメータを動的に更新する。
【０１４２】
[0155]いくつかの実施形態では、最適化エンジン７４０は、規則リポジトリ７１５に記憶された規則ベースに対する更新を適合させるように適応され得る。追加され、消去され、または修正される規則に応答して、最適化エンジン７４０は、規則リポジトリ７１５中の現在の規則に対する必要に応じて、たとえば、モジュール７５０、７５５用の最適化パラメータを追加し、修正し、または消去することによって、最適化方式を更新することができる。規則ベースに対するいくつかの更新について、最適化エンジン７４０は、規則更新を分解して、修正された要件を決定することができる。最適化エンジン７４０はその後、修正された要件を使って、ランタイムに、最適化方式を更新することができる。
【０１４３】
[0156]最適化エンジン７４０は、コンテキスト認識エンジン７３５から受信されたコンテキストまたはサンプルからアサートされたファクトなど、ファクトまたはコンテキストにおける変化に応答して、最適化方式を更新することもできる。コンテキストまたはアサートされたファクトにおける変化は、異なる規則を真と評価させ、その結果、１つまたは複数の規則の要件に影響を与え得る。他の規則は、コンテキストまたはアサートされたファクトにおける変化によって回避されてよく、したがって、最適化エンジン７４０が最適化方式を更新するとき、無関連規則についての要件が、考慮から除かれ得る。
【０１４４】
[0157]一実施形態では、最適化エンジン７４０は、規則の階層またはそれぞれの顕著属性など、競合解決アジェンダに基づいて、最適化方式を計算する。最適化エンジン７４０は、規則についての要件がアジェンダに従って重みづけされるように、最適化方式を計算してよい。最初に選択または識別されるべき規則についての要件は、最適化方式を計算または更新する際、異なるように重みづけされ得る。たとえば、モジュール７５０、７５５用の最適化パラメータは最初に、要件を平均することによって、モジュール７５０、７５５からのサンプルが処理されるレートを設定し、その後、最適化パラメータを更新する際、ある要件に、より大きい重みが与えられるように階層または顕著属性が変化するサンプリングレートを修正し得る。
【０１４５】
[0158]図７Ｂおよび図７Ｃは、それぞれ、本発明の一実施形態による、図７Ａの規則リポジトリ７１５と知識リポジトリ７２０とを示す。規則リポジトリ７１５中に記憶されている規則ベースは、規則のセット７１７Ａ〜Ｃに組織化され得る。概して、規則の各セット７１７Ａ〜Ｃは、１つまたは複数のコンテキストに関連する。たとえば、ユーザが自宅にいることをファクトが示すとき、規則エンジン７３０は、ユーザが自宅にいるときに適用される第１の規則セット７１７Ａを評価し、および／またはユーザが職場にいるときに適用される第２の規則セット７１７Ｃを無視することができる。常に評価されるべき基本規則セットなど、いくつかの規則セット７１７Ａ〜Ｃは、すべてのコンテキストに関連する。さらに、コンテキストは、同時に関連する複数の規則セット７１７Ａ〜Ｃを有してよい。必要はないが、規則リポジトリ７１５が、どのコンテキストにも関連しない規則の１つまたは複数のセット７１７Ａ〜Ｃを記憶していることが可能である（これらの規則セットは、たとえば、最適化方式が計算される場合、無視されてよい）。
【０１４６】
[0159]規則ベースは、すべての規則のセットと見なすことができ、各規則セット７１７Ａ〜Ｃは、規則ベースのサブセットであり得る。ただし、たとえば、システム７００の初期化時に、または規則７１６Ａ〜Ｄのすべてがそのセットから削除されている場合、いくつかの規則セット７１７Ａ〜Ｃが空であり得ることが企図される。いくつかの実施形態では、規則のセット７１７Ａ〜Ｃは重複する場合があり、したがって、規則７１６Ａ〜Ｄは、２つ以上の規則セット７１７Ａ〜Ｃのメンバであり得る。
【０１４７】
[0160]複数の規則７１６Ａ〜Ｄおよびセット７１７Ａ〜Ｃは、単一のコンテキストに関連することができ、規則７１６Ａ〜Ｄおよびセット７１７Ａ〜Ｃは、規則セット７１７Ａ〜Ｃの階層などの競合解決アジェンダに従って組織化され得る。さらに、競合解決アジェンダは、規則７１６Ａ〜Ｄについてのそれぞれの顕著属性を含み得る。規則エンジン７３０は、競合解決アジェンダに基づいて規則を評価するための順序を決定することができる。一実施形態では、規則７１６Ａ〜Ｄの顕著属性は、規則セット７１７Ａ〜Ｃの階層に従属する。ただし、別の実施形態では、規則７１６Ａ〜Ｄは、それらのそれぞれの顕著属性に従って優先される。したがって、２つの規則が真と評価されるとともに競合している（たとえば、解決できないアクションの決定を生じる）場合、規則エンジン７３０は、競合解決アジェンダに基づいて、適切なアクションを決定してよい。一実施形態では、競合解決アジェンダは、たとえば、コンテキストが変化する場合、または規則ベースが更新される場合、ランタイムにおいて動的に更新可能である。
【０１４８】
[0161]規則リポジトリ７１５中に記憶された規則ベースと同様に、知識リポジトリ７２０中に記憶されているファクトベースは、ファクトのセット７２２Ａ〜Ｃに組織化され得る。概して、ファクトの各セット７２２Ａ〜Ｃは、１つまたは複数のコンテキストにおける１つまたは複数の規則７１６Ａ〜Ｄに関連する。たとえば、ユーザが運転中であることをコンテキストが示すとき、ファクトのセット７２２Ａ〜Ｃは、ユーザが運転中であるときに適用される第１の規則セット７１７Ａを評価することを求められ得る。同様に、ファクト７２１Ａ〜Ｄは、コンテキストについてのすべての評価可能規則に無関連の場合、無視されてよい（たとえば、記憶されなくても、アサートされなくてもよい）。すべてのインスタンスにおいて評価されるべき規則についての基本ファクトセットなど、いくつかのファクトセット７２２Ａ〜Ｃは、すべてのコンテキストに関連する。さらに、コンテキストは、同時に関連する複数のファクトセット７２２Ａ〜Ｃを有してよい。必要はないが、知識リポジトリ７２０が、どのコンテキストにも関連しないファクトの１つまたは複数のセット７２２Ａ〜Ｃを記憶していることが可能である。
【０１４９】
[0162]ファクトベースは、すべての規則のセットと見なすことができ、各ファクトセット７２２Ａ〜Ｃは、ファクトベースのサブセットであり得る。ただし、たとえばシステム７００の初期化時に、いくつかのファクトセット７２２Ａ〜Ｃが空であり得ることが企図される。いくつかの実施形態では、ファクトのセット７２２Ａ〜Ｃは重複する場合があり、したがって、ファクト７２１Ａ〜Ｄは、２つ以上のファクトセット７２２Ａ〜Ｃのメンバであり得る。
【０１５０】
[0163]いくつかの実施形態では、規則エンジン７３０は、コンテキスト認識エンジン７３５によって識別されたコンテキストについての１つまたは複数の関連規則７１６Ａ〜Ｄを識別する。規則エンジン７３０は、瞬間的コンテキストまたは期待され、もしくは頻発するコンテキストなど、対象のコンテキストについての関連規則７１６Ａ〜Ｄを識別することができる。関連規則７１６Ａ〜Ｄを識別する際、規則エンジン７３０は、関連規則７１６Ａ〜Ｄを（たとえば、キャッシュまたは他のＲＡＭメモリ中に）ロードすることができる。一実施形態では、規則エンジン７３０は、コンテキストに関連する１つまたは複数の規則セット７１７Ａ〜Ｃを識別することによって、関連規則７１６Ａ〜Ｄを識別する。たとえば、コンテキスト認識エンジン７３５が、ユーザが運転中であると識別した場合、規則エンジン７３０は、すべてのコンテキストにおいて評価されるべき基本規則についての第１の規則セット７１７Ａと、ユーザが運転中であるコンテキストに関連する第２の規則セット７１７Ｃとをロードすることができる。したがって、関連規則７１６Ａ〜Ｂ、Ｄは、素早い評価のためにロードされる。
【０１５１】
[0164]同様に、規則エンジン７３０は、コンテキスト認識エンジン７３５によって識別されたコンテキストに関連するファクト７２１Ａ〜Ｄを識別することができる。一実施形態では、ただし、ファクト７２１Ａ〜Ｄは、コンテキストについて間接的に識別され、つまり、コンテキストに関連する規則７１６Ａ〜Ｄが最初に識別され、関連ファクト７２１Ａ〜Ｄが、関連規則７１６Ａ〜Ｄの要件から識別される。規則エンジン７３０は、瞬間的コンテキストまたは期待され、もしくは頻発するコンテキストなど、対象のコンテキストについてのファクト７２１Ａ〜Ｄを識別することができる。ファクト７２１Ａ〜Ｄを識別する際、規則エンジン７３０は、ファクト７２１Ａ〜Ｄを（たとえば、キャッシュメモリ中に）ロードすることができる。一実施形態では、規則エンジン７３０は、１つまたは複数のファクトセット７２２Ａ〜Ｃを識別することによって、ファクト７２１Ａ〜Ｄを識別する。
【０１５２】
[0165]ユーザが運転中である例示的な一実施形態では、規則エンジン７３０は、ユーザが運転中であるコンテキストに関連する第１の規則セット７１７Ａをロードしてよい。関連規則セット７１７Ａから、規則エンジン７３０は、瞬間的コンテキストについての関連規則７１６Ａ〜Ｂを評価するのに必要とされる関連ファクトセット７２２Ｂを識別することができる。さらに、コンテキストに固有のファクト７２１Ａ〜Ｄがアサートされてよく、たとえば、ユーザが遷移中であるというファクトが、ユーザが運転中であるというコンテキストに固有なので、アサートされてよい。
【０１５３】
[0166]システム７００の性能を最適化するために、規則エンジン７３０は、対象コンテキストに関連する規則７１６Ａ〜Ｄを識別および／または評価するだけでよい。１つまたは複数の対象コンテキストに無関連な他の規則は、識別および評価中は無視されてよい。同様に、規則エンジン７３０は、対象のコンテキストに関連するファクト７２１Ａ〜Ｄを識別および／またはアサートするだけでよい。１つまたは複数の対象コンテキストに無関連な他のファクトは、たとえば、それらのファクトをアサートしないか、または場合によっては処理しないことによって無視されてよい。一実施形態では、対象のコンテキストに関連する１つまたは複数のファクト７２１Ａ〜Ｄは、識別されると更新される。したがって、１つまたは複数のモジュール７５０、７５５へのサブスクリプションは、関連ファクト７２１Ａ〜Ｄがアサートされるように更新され得る。たとえば、ユーザが運転中であるというコンテキストを識別すると、ファクト７２１Ａが、ユーザが遷移中であることを示すようにアサートされ得る。
【０１５４】
[0167]対象のコンテキストに無関連である規則７１６Ａ〜Ｄは、無視されてよい。たとえば、無関連規則７１６Ａ〜Ｄは、たとえば、キャッシュメモリから無関連規則７１６Ａ〜Ｄを削除することによってアンロードされてよい。さらに、興味をもたれているコンテキストに無関連または不正確であるファクト７２１Ａ〜Ｄは、無視され（たとえば、キャッシュメモリから削除され、もしくは満了させられ）またはデフォルト（たとえば、ヌル値）にアサートし直され得る。したがって、システム７００のリソースは、結局は重要度が低くなる規則およびファクトによって消費されない。
【０１５５】
[0168]いくつかの実施形態では、規則７１６Ａ〜Ｄとファクト７２１Ａ〜Ｄのコンテキスト関連性は、最適化方式に対して補足的である。したがって、規則エンジン７３０は、関連規則７１６Ａ〜Ｄおよび関連ファクト７２１Ａ〜Ｄについてのサンプリング要件を識別し、これらのサンプリング要件を、たとえば、最適化パラメータのサブスクリプションまたはサンプリングレートを更新することによって、最適化方式を計算または更新するのに使えばよい。したがって、規則エンジン７３０は、対象のコンテキストに関連する異なる規則７１６Ａ〜Ｄおよび／またはファクト７２１Ａ〜Ｄに応答して、最適化方式をランタイムにおいて動的に更新することができる。
【０１５６】
[0169]一実施形態では、規則エンジン７３０は、対象のコンテキストに応答して、サンプルを積極的に管理する。規則エンジン７３０は、古いまたは無関連サンプルをストレージから破棄する（たとえば、サンプルが記憶されているリポジトリ７１５、７２０からサンプルを消去する）ことによって、サンプルを管理することができる。さらに、規則エンジン７３０は、対象のコンテキストについて、モジュール７５０、７５５への１つまたは複数のサブスクリプションを修正することができる。たとえば、規則エンジン７３０は、対象のコンテキストにおいて頻繁にアサートされるファクト７２１Ａを識別し、したがって、ファクト７２１Ａがそこからアサートされるモジュール７５０へのサブスクリプションを、モジュール７５０がサンプルについてより頻繁にポーリングされるように修正することができる。
【０１５７】
[0170]さらに、規則エンジン７３０は、スマートサービスを提供するために、サンプルを積極的に管理することができる。規則エンジン７３０は、コンテキスト認識エンジン７３５と対話して、スマートサービスを提供することができる。たとえば、コンテキスト認識エンジン７３５は、たとえば、ＢｌｕｅｔｏｏｔｈサンプルまたはＮＦＣサンプルに基づいて、ユーザが人の近くにいることをコンテキストが示すことを識別することができる。コンテキスト認識エンジン７３５は続いて、ユーザが、他の人の名前、職業、雇用主の名前、誕生日などに素早くアクセスすることができるように、他の人についてのｖＣａｒｄなど、他の人についてのコンタクト情報をロードすることができる。
【０１５８】
[0171]図８に移ると、規則エンジンプラットフォームを実装するシステムを最適化するための方法８００が、一実施形態に従って図示されている。図８の動作は、例示的であり、必ずしも図示される順序で実施されるとは限らない。方法８００は、図１に示されるポータブル電子デバイス１００の規則エンジン１３２または図７に示される最適化エンジン７４０によって実施することができる。
【０１５９】
[0172]始めに、方法８００を実施するエンジンは、複数の規則を分解する（動作８１０）。複数の規則は、エンジンと通信可能に結合されたリポジトリ（たとえば、規則リポジトリ１３３または規則リポジトリ７１５）に記憶された規則ベースであってよい。いくつかの実施形態では、複数の規則は、現在のコンテキストに関連する規則のサブセットまたは規則の階層のサブセットなど、規則ベースのサブセットである。エンジンは、それぞれの規則の成分が別個に識別可能なように、複数の規則を分解して、各規則の条件の各成分を分解することができる。成分は、たとえば、ファクト、コンテキスト、または別の規則（たとえば、規則からのアクション）であってよい。
【０１６０】
[0173]その後、エンジンは、各分解された規則の１つまたは複数のそれぞれのサンプリング要件を識別する（動作８１５）。いくつかの規則について、たとえば、単一のサンプルからアサートされるファクトを規則が必要とする場合、それぞれのサンプリング要件を識別することは直接的であり得る。ただし、他の規則は、複数のサンプルまたはファクトから推論されるコンテキストまたはファクトなど、より高度な条件付き成分を有し得る。したがって、エンジンは、コンテキストまたはファクトの構成サンプリング要件を決定することによって、規則のサンプリング要件を識別することができる。たとえば、規則は、ユーザが「自宅にいる」というファクトを条件としてよく、「自宅にいる」というファクトは、「自宅」Ｗｉ−Ｆｉネットワークに接続しているＷｉ−Ｆｉトランシーバモジュールまたは「自宅」のロケーションを解決するＳＰＳモジュールのいずれかによってアサートされ得る。したがって、エンジンは、Ｗｉ−ＦｉトランシーバサンプルとＳＰＳモジュールサンプルの両方として、要件を識別することができる。いくつかの実施形態では、エンジンは、コンテキスト認識エンジンと対話して、サンプリング要件を識別する。図１に関係して、サンプルが、モジュール１０１〜１０６から受信され、または予想され得る。同様に、図７に関係して、モジュール７５０、７５５からサンプルが受信され得る。
【０１６１】
[0174]いくつかの実施形態では、規則は、１つまたは複数の他の規則に依存し、したがって、その規則のサンプリング要件は、直接識別可能でない。エンジンは、依存規則にとって基本的な１つまたは複数のサンプリング要件を識別するために、規則がそこから依存する規則の要件を識別することができる。たとえば、第１の規則は、第２の規則の評価によって決定されたアクションからアサートされるファクトなど、第２の規則からアサートされるファクトを必要とする。したがって、第１の規則のサンプリング要件を識別することは、第２の規則のサンプリング要件を識別することを必要とする。エンジンは、たとえば、依存規則が複数またはネストされた規則要件を含む場合、複数の規則を反復して、依存規則のサンプリング要件を識別すればよい。
【０１６２】
[0175]複数のうちの各規則についての識別されたサンプリング要件を使って、エンジンは、エンジンが実装されるシステムに役立つ最適化方式を計算する（動作８２０）。一実施形態では、最適化方式は、１つまたは複数のモジュール用の１つまたは複数の最適化パラメータを含み得る。最適化パラメータは、サンプリングモジュールがサンプルを提供するレートまたはサンプルが記憶または処理される（たとえば、ファクトとしてアサートされる）レートを含み得る。この最適化パラメータは概して、そのようなサンプルを必要とする１つまたは複数の規則にとって満足でき、同時に、（たとえば、繰り返しファクトをアサートし、またはコンテキストを決定することによって）計算コストが高い動作または電力消費を最小限にする。
【０１６３】
[0176]一実施形態では、最適化パラメータは、１つまたは複数のモジュールの状態を修正するための命令を含む。したがって、最適化方式は、たとえば、モジュールからのサンプルが不必要である場合、またはどのアクションもモジュールに提供されない場合、非アクティブ化し、またはスリープするための命令を含む最適化パラメータをモジュールに提供することができる。同様に、最適化方式は、モジュールをアクティブ化し、または起動する（awake）ための命令を含む最適化パラメータを提供することができる。そのような最適化パラメータは、最適化方式に従って、あらゆる状態変化について、モジュールに提供されてもよく、モジュールが遵守するポリシー（たとえば、いつ起動し、またはスリープするかというスケジュール）として、モジュールに提供されてもよい。
【０１６４】
[0177]いくつかの実施形態では、方法８００を実施するエンジンは、ローカルストレージ中など、エンジンに記憶され、または場合によってはアクセス可能でよい１つまたは複数のアルゴリズムを使って、最適化方式を計算することができる。アルゴリズムは、複数の規則にわたるサンプリング要件の間の関係を適合するように適応され得る。たとえば、２つ以上の規則が同じファクトを必要とし得るが、ファクトが必要とされるレートは変わり得る。単純な最適化方式は、ファクトが必要とされるレートの平均をとることによって計算することができ、そうすることによってファクトは、平均レートでアサートされるだけである。
【０１６５】
[0178]最適化方式を計算するためのアルゴリズムは、任意の数の要因を考慮に入れることができる。一実施形態では、規則の間の関係が識別され、最適化方式のアルゴリズム計算において使われる。たとえば、真と評価される第１の規則の結果として、第２の規則が評価され得る。第１の規則がめったに真と評価されない場合、第２の規則の要件は、最適化方式に対して比較的影響がなくてよい（たとえば、他の要件が、第２の規則の要件よりも強調されてよい）。さらに、規則または規則のセットが、競合解決アジェンダ（たとえば、規則の階層または顕著性）に従って評価されてよく、最適化方式は、規則についての要件がアジェンダに従って重みづけされるように計算されてよい。
【０１６６】
[0179]一実施形態では、最適化方式を計算するためのアルゴリズムは、瞬間的コンテキスト、期待されるコンテキスト、または頻発するコンテキストなど、１つまたは複数の対象コンテキストを組み込む。したがって、組込みコンテキストに無関連である規則は、最適化方式の計算から除外されてよい。さらに、規則の階層は、コンテキストによって変化してよく、したがって、規則は、異なるコンテキストに対して異なるように重みづけされ得る。さらに別の実施形態では、最適化方式は、コンテキストに従って、規則の間の競合を解決するためのアジェンダを更新する。たとえば、規則の階層は、コンテキストに従って変えられてもよく、規則の異なるサブセットが、最適化方式を更新するのに使われてもよい。
【０１６７】
[0180]最適化方式は、関連最適化パラメータをモジュールに提供することによって実装され得る（決定ブロック８２５）。ただし、いくつかの実施形態では、１つまたは複数のモジュールにおいて最適化方式を実装することは、望ましくないか、または不利な場合がある（決定ブロック８２５）。したがって、最適化方式は、方法８００を実施するエンジン（たとえば、規則エンジン１３２または規則エンジン７３０）において実装されてよい。一実施形態では、最適化方式は、エンジンおよび１つまたは複数のモジュールに分散される。したがって、いくつかのモジュールは、最適化パラメータを受信し、遵守してよく、他の最適化パラメータは、エンジンにおいて実装される。
【０１６８】
[0181]最適化方式が、方法８００を実施するエンジンによって実装される場合、１つまたは複数のサンプルの処理が、最適化方式に従って修正され得る（動作８３０）。一実施形態では、受信サンプルについての１つまたは複数の最適化パラメータに従って、ファクトが、サンプルからアサートされる。したがって、たとえば、受信サンプルが、最適化パラメータによって定義される、含まれる最適サンプリングレートを超える場合、いくつかの受信サンプルは無視（たとえば、却下または破棄）されてよい。
【０１６９】
[0182]代替として、最適化方式の最適化パラメータは、方法８００を実施するエンジンと通信可能に結合されている適用可能モジュールに提供されてよい（動作８３５）。応答して、モジュールは、提供された最適化パラメータを遵守する。たとえば、モジュールは、エンジンにサンプルを送るレートを、最適化パラメータに従って修正してよい。一実施形態では、最適化パラメータは、パラメータが提供されるモジュールの状態に影響する。たとえば、最適化パラメータは、非アクティブ化するか、またはスリープするための、モジュールへの命令を含み得る。同様に、最適サンプリングレートは、アクティブ化し、または起動するための、モジュールへの命令を提供し得る。
【０１７０】
[0183]最適化方式に影響を与える変化は、最適化方式が計算された後に起こり得る（決定ブロック８４０）。最適化方式に影響を与える変化は、たとえば、コンテキスト、規則、ファクトに対する変化、または他の同様の変化であり得る。最適化方式に影響を与える何の変化も起こらない場合、既存の最適化方式が実装されたままであってよい。
【０１７１】
[0184]現在の最適化方式に影響を与える変化が起きた場合、方法８００を実施するエンジンは、変化に従って、最適化方式を更新するように構成される（動作８４５）。エンジンは、変化に応答して、最適化方式をランタイムに更新し、更新された最適化方式を動的に実装することができる。最適化方式を更新する際、エンジンは、変化に従って、１つまたは複数の最適化パラメータを追加、修正または削除してよい。ある最適化パラメータへの変更は、最適化方式を通して他の最適化パラメータに伝播し得る。一実施形態において、最適化方式は、たとえば、分解された規則構造が、あるサンプリング要件が、ファクトがアサートされるために別のサンプリング要件に依存することを示す場合、サンプリング要件の間の関係を考慮に入れることができる。たとえば、第１のモジュールから受信されたサンプルが、ファクトをアサートするために、第２のモジュールからのサンプルの必要をトリガし得るとともに、第１のモジュールからのさらなるサンプルの必要も一時的になくす。
【０１７２】
[0185]同様に、エンジンは、追加、修正または消去された規則など、規則の変化に応答して、最適化方式を更新し得る。いくつかの実施形態では、新たな、または修正された規則が最初に分解され、そうすることによって、規則のサンプリング要件が識別され得る。その後、どの影響される最適化パラメータも更新され得る。
【０１７３】
[0186]エンジンは、ファクトまたはコンテキストの変化に応答して、最適化方式を更新することもできる。ファクトまたはコンテキストにおける変化は、異なる規則を真と評価させ、その結果、１つまたは複数の規則のサンプリング要件に影響を与え得る。他の規則は、ファクトまたはコンテキストの変化によって除去され得、したがって、そのような規則に基づく最適化パラメータは、適用できないサンプリング要件が考慮から除かれるように更新され得る。
【０１７４】
[0187]その後、更新された最適化方式は、実施形態に従って実装されてよい（決定ブロック８２５）。したがって、エンジンは、サンプルが処理されるやり方を修正してよい（動作８３０）。代替として、エンジンまたは、更新された最適化パラメータをモジュールに提供し、または最適化パラメータを消去することによって、モジュールに、最適化パラメータを遵守するのをやめるよう命令することができる（動作８３５）。
【０１７５】
[0188]図９Ａを参照すると、規則エンジンプラットフォームを実装するシステムを最適化するための方法９００が、一実施形態に従って図示されている。図９Ａの動作は、例示的であり、必ずしも図示される順序で実施されるとは限らない。方法９００は、図１に示されるポータブル電子デバイス１００の規則エンジン１３２によって実施することができる。方法９００は、コンテキスト認識エンジン７３５と通信可能に結合され得る、図７の規則エンジン７３０によって実施することもできる。
【０１７６】
[0189]最初に、方法９００が実施されるシステムのユーザの状況または環境を示すサンプルが受信される（動作９０５）。サンプルは、たとえば、カレンダイベント、動き状態、Ｗｉ−Ｆｉシグネチャ、または他のどのタイプのサンプルであってもよい。サンプルは、モジュール（たとえば、モジュール１０１〜１０６またはモジュール７５０、７５５）から受信されてよく、その元の形式から適合されてよい（たとえば、未加工センサデータが処理され得る）。一実施形態では、サンプルは、ファクトとして（たとえば、リポジトリ１３３、１３４またはリポジトリ７１５、７２０に）アサートされる。
【０１７７】
[0190]サンプルから、対象のコンテキストが識別され得る（動作９１０）。対象のコンテキストは、瞬間的コンテキストでも、期待され、または頻発するコンテキストでもよい。コンテキストは、受信サンプルに加え、複数のサンプルから識別され得る。ただし、コンテキストの識別は、１つまたは複数のサンプルがないことを必要とし得る。
【０１７８】
[0191]一実施形態では、サンプルから間接的にコンテキストが識別される。たとえば、コンテキストは、サンプルからアサートされるか、またはサンプルからまだアサートされていない（たとえば、ファクトがヌルである）ファクトから識別される。さらに、対象のコンテキストは、たとえば、１つのファクトに関係した１つのコンテキストの識別が第２のコンテキストを示す、コンテキストおよび／またはファクトの間の、導出された関係から識別され得る。
【０１７９】
[0192]一実施形態によると、識別されたコンテキストに準じる適用可能情報が識別され得る。適用可能情報は、たとえば、識別されたコンテキストに準じる知識リポジトリ（たとえば、知識リポジトリ１３４や知識リポジトリ７２０）からの、サンプルまたはアサートされたファクトであってもよく、モジュール（たとえば、モジュール１０１〜１０６やモジュール７５０、７５５）から取り出してもよい。たとえば、ユーザが美術館に入ったことを示すコンテキストが識別されると、規則エンジンプラットフォームは、（たとえば、コンテキスト認識エンジン７３５またはモジュール７５０、７５５からのＷｉ−Ｆｉサンプルを通して）ユーザが入った美術館の中の部屋を決定し、応答として、その美術館の部屋の中のアーティファクトについての情報をロードすることが可能であり得る（たとえば、知識リポジトリ１３４や知識リポジトリ７２０）。別の例では、ユーザがユーザのオフィスに入ったことをコンテキストが示すとき、規則エンジンプラットフォームは、「オフィス」コンテキストに関連した情報または設定を、知識ベース（たとえば、知識リポジトリ１３４や知識リポジトリ７２０）にロードし得る。
【０１８０】
[0193]対象のコンテキストを識別することによって、コンテキストに関連する規則が、続いて識別され得る（動作９１５）。１つまたは複数の関連規則は、たとえば、方法９００が実施されるシステムにとって基本的な規則であってよい。追加関連規則は、識別されたコンテキストに対して一意であっても、共通ファクトを共有するコンテキストなど、いくつかのコンテキストに関連するだけであってもよい。関連規則は、各規則に関連付けられたそれぞれの顕著属性などの競合解決アジェンダに従って識別され得る。したがって、より高い優先権の関連規則と競合する規則は識別されなくてよい。
【０１８１】
[0194]一実施形態によると、特定のコンテキスト向けの規則のセットのサブセットなど、あるコンテキストにおける規則が識別され得る。たとえば、コンテキストが、「職場」として識別されてよく、規則エンジンプラットフォームは、ユーザのオフィス用のジオフェンスにシステムが入ったことを示すサンプルを受信し得る。応答して、規則エンジンプラットフォームは、ユーザが職場にいることをコンテキストが示すとともにユーザがユーザのオフィスに入ったことをサンプルが示すというファクトに基づいて、ユーザのオフィスについての規則のセットを識別することができる。同様に、コンテキストは、ユーザが家庭状況（family situation）にある（たとえば、ユーザが「自宅」ジオフェンス内またはユーザの家族のメンバに属すと識別される複数のデバイスの近くにいる）ということであってよく、したがって、規則エンジンプラットフォームは、家庭状況に関連した規則または規則のセットを識別することができる。一実施形態では、家庭状況向けの規則は、「職場」コンテキスト用に識別される規則の補完（complement）として定義され得る。第３の例では、ユーザが運転中であることをコンテキストが示してよく、したがって、運転中に関連した規則のみが、規則エンジンプラットフォームによって識別され、ロードされ得る。
【０１８２】
[0195]いくつかの実施形態では、関連規則は、直接識別されない。そうではなく、関連規則は、１つまたは複数の規則セットの選択を通して識別される。規則セットは、対象のコンテキストが識別された場合、関連規則セットが素早く識別され得るように、１つまたは複数のコンテキストに関連付けられ得る。さらに、規則セットは、識別されたコンテキストとの関連性の順で並べられている規則セットの階層などの競合解決アジェンダに従って識別され得る。
【０１８３】
[0196]その後、コンテキスト、関連規則またはこれら２つの組合せが、アサートされるべき関連ファクトを決定するのに使われ得る。いくつかの関連ファクトがアサートされるために、１つまたは複数のモジュールへの１つまたは複数のサブスクリプションが、修正される必要があり得る（決定ブロック９２０）。一実施形態では、関連規則は、たとえば、決定されたアクションがサンプルを戻すべきである場合、アクションを決定するために、１つまたは複数のモジュールへの１つまたは複数のサブスクリプションの変更を必要とする（決定ブロック９２０）。したがって、方法９００を実施するエンジンは、１つまたは複数のモジュールへのサブスクリプションを、関連規則の効率的評価を円滑にするように修正してよい（動作９２５）。
【０１８４】
[0197]一実施形態では、モジュールへのサブスクリプションは、関連規則の評価によって決定され得るアクションに従って修正される。複数のコンテキストにわたって決定されるアクションは、異なる関連規則に準拠して変わり得る。したがって、あるモジュールからのサンプルは、対象のコンテキストには不必要であり得る。したがって、そのモジュールへのサブスクリプションは、そのモジュールからのサンプルが、記憶されないか、または、たとえば、モジュールがポーリングされるレートを削減すること、もしくはストリームからのサンプルが記憶される頻度を削減することによって、低いレートで記憶されるように修正され得る。別のモジュールについては、逆が成り立ってよく、したがって、その別のモジュールへのサブスクリプションは、モジュールがより頻繁に問い合わせされるか、またはサンプルがより頻繁に記憶されるように修正されてよい。
【０１８５】
[0198]一実施形態では、モジュールへのサブスクリプションが、関連規則の評価のためにアサートされるべき関連ファクトに従って修正される。複数のコンテキストにわたってアサートされる関連ファクトは、異なる関連規則に準拠して変わり得る。したがって、モジュールへのサブスクリプションは、１つまたは複数の関連ファクトが、関連規則が評価されるのに必要とされる、そのモジュールから受信されたサンプルからアサートされ得るように修正されてよい。
【０１８６】
[0199]１つまたは複数のサブスクリプションの修正にもかかわらず、１つまたは複数の関連ファクトがコンテキストに基づいてアサートされ得る（動作９３０）。関連ファクトは、アサートされる前に、最初に識別され得る。関連ファクトは、１つもしくは複数のコンテキストまたは１つもしくは複数の関連規則もしくはセットに関連付けられたファクトセットなど、１つまたは複数のファクトセットの選択を通して識別され得る。関連ファクトは、サンプルからのファクトもしくはそのファクトがないこと、対象のコンテキスト、またはもう１つの規則を更新することによってアサートされ得る。関連ファクトを識別または／またはアサートする際、関連ファクトは、より速いアクセスのためにロードされ（たとえば、キャッシュメモリ中にロードされ）得る。
【０１８７】
[0200]いくつかのファクトは、１つまたは複数のコンテキストにわたって有効なままであるので、対象のコンテキストに基づいて、すべての関連ファクトがアサートされるべきであるとは限らない。たとえば、ファクトは、ユーザが可聴メッセージ通知を不能にしたことを示すサンプルについてアサートされてよく、このファクトは、ユーザが、自宅にいる、職場に向かって運転中、および職場にいるというコンテキストにわたって有効なままであり得る。
【０１８８】
[0201]一実施形態では、関連しないファクトが、コンテキストの変化に従って、ヌルまたは偽などのデフォルトにアサートされる（動作９３０）。したがって、関連ファクトが識別されたとき、対象のコンテキストに関連しないファクトは、リソースを消費しない。代替として、無関連ファクトがアサートされない。たとえば、エンジンは、対象のコンテキストに関連するファクトセット中に含まれないファクトをアサートすることを拒絶し得る。したがって、そのような無関連ファクトがそこからアサートされるサンプルは無視されてよいが、これも、サブスクリプションに対する変更の帰結であり得る。
【０１８９】
[0202]続いて、識別された関連規則が評価され得る（動作９３５）。有利には、関連規則および関連ファクトはすでに識別され、可能性としては高速アクセスのためにロードされ、またはキャッシュされている。したがって、エンジンは、関連ファクトを使って、識別された関連規則を評価する必要があるだけであり得る。したがって、エンジンが、すべての規則を評価し、次いで、コンテキストまたは競合解決アジェンダに基づいて、どのアクションをとるべきか決定するのにリソースを消費しないように、無関連な規則およびファクトは無視されてよい。関連ファクトで関連規則を評価する際、１つもしくは複数のアクションが決定されてよく、および／または１つもしくは複数のファクトがアサートされてよい。
【０１９０】
[0203]図９Ｂを参照すると、規則エンジンプラットフォームを実装するシステムを最適化するための方法９５０が、一実施形態に従って図示されている。図９Ｂの動作は、例示的であり、必ずしも図示される順序で実施されるとは限らない。方法９５０は、図１に示されるポータブル電子デバイス１００の規則エンジン１３２によって実施することができる。方法９５０は、コンテキスト認識エンジン７３５と通信可能に結合され得る、図７の規則エンジン７３０によって実施することもできる。
【０１９１】
[0204]最初に、対象のコンテキストが、受信サンプルおよび予想サンプルのうちの少なくとも１つに基づいて決定され得る（動作９５５）。受信サンプルまたは予想サンプル（たとえば、サンプルがないこと）は、方法９５０が実施されるシステムのユーザの状況または環境を示し得る。サンプルは、たとえば、カレンダイベント、動き状態、Ｗｉ−Ｆｉシグネチャ、または他のどのタイプのサンプルであってもよい。サンプルは、モジュール（たとえば、モジュール１０１〜１０６またはモジュール７５０、７５５）から受信されてよく、その元の形式から適合されてよい（たとえば、未加工センサデータが処理され得る）。
【０１９２】
[0205]一実施形態では、サンプルはファクトとしてアサートされる。必要に応じて、モジュール１０１〜１０６から受信されたサンプルなど、受信サンプルおよび予想サンプルのうちの１つに準じるファクトが、リポジトリ中でアサートされる。一実施形態では、ファクトは、サンプルがファクトを実質的に更新する（たとえば、ファクトの真の値を変更する）場合のみ、アサートされる。ファクトは、リポジトリ１３３、１３４やリポジトリ７１５、７２０などのリポジトリ中でアサートされ得る。ファクトは、リポジトリ中にすでに記憶されていてよい、サンプルまたはファクトの組合せ（たとえば、推論）としてアサートされ得る。一実施形態では、ファクトは、更新を反映するように組織的構造を更新することによってアサートされる。さらに、ファクトは、不揮発性メモリなどの持続記憶装置に追加され得る。
【０１９３】
[0206]いくつかの実施形態では、受信または予想サンプルに従って、複数のファクトがアサートされてよく、たとえば、受信サンプルまたは予想サンプルは、２つ以上のファクトの同時期更新を要し得る。特に、これは、１つのサンプルからアサートされるファクトと、複数のサンプルまたはその１つのサンプルを含むファクトからアサートされる１つまたは複数のファクトとに対して成り立ち得る。
【０１９４】
[0207]対象のコンテキストは、瞬間的コンテキストでも、期待され、または頻発するコンテキストでもよい。コンテキストは、受信サンプルに加え、複数のサンプルから識別され得る。ただし、コンテキストの識別は、いくつかの実施形態では、１つまたは複数のサンプルがないことを必要とし得る。
【０１９５】
[0208]一実施形態では、サンプルから間接的にコンテキストが識別される。たとえば、コンテキストは、サンプルからアサートされるか、またはサンプルからまだアサートされていない（たとえば、ファクトがヌルである）ファクトから識別され得る。さらに、対象のコンテキストは、たとえば、１つのファクトに関係した１つのコンテキストの識別が第２のコンテキストを示す、コンテキストおよび／またはファクトの間の、導出された関係から識別され得る。
【０１９６】
[0209]対象のコンテキストを識別することによって、少なくとも１つの規則が複数の規則から識別されてよく、ここにおいて、少なくとも１つの規則は、対象のコンテキストに関連する（動作９６５）。１つまたは複数の関連規則は、たとえば、方法９５０が実施されるシステムにとって基本的な規則であってよい。追加関連規則は、識別されたコンテキストに対して一意であっても、共通ファクトを共有するコンテキストなど、いくつかのコンテキストに関連するだけであってもよい。関連規則は、各規則に関連付けられたそれぞれの顕著属性などの競合解決アジェンダに従って識別され得る。したがって、より高い優先権の関連規則と競合する規則は識別されなくてよい。いくつかの実施形態では、対象のコンテキストに関連する規則のサブセットが、複数の規則から識別され、少なくとも１つの規則は、規則のサブセットのメンバであり得る。
【０１９７】
[0210]続いて、識別された関連規則は、コンテキストについて評価され得る（動作９７０）。有利には、少なくとも１つの関連規則は、すでに識別され、可能性としては高速アクセスのためにロードされ、またはキャッシュされている。したがって、エンジンは、識別された関連規則を評価する必要があるだけであり得る。したがって、エンジンが、すべての規則を評価し、次いで、コンテキストまたは競合解決アジェンダに基づいて、どのアクションをとるべきか決定するのにリソースを消費しないように、無関連な規則は無視されてよい（動作９７５）。関連規則を評価する際、１つもしくは複数のアクションが決定されてよく、かつ／または１つもしくは複数のファクトがアサートされてよい。一実施形態では、少なくとも１つの関連規則は、対象のコンテキストに関連する規則の識別されたサブセットからのものである。
【０１９８】
[0211]本明細書に記載される、規則エンジンおよび／または規則エンジンプラットフォームの実施形態は、ポータブル電子デバイスなどのシステムのすべての機能を制御、監視および／または管理するのに使われ得る。そのような機能は、コンテキスト認識、モジュール機能（たとえば、センササブシステムやアプリケーション）、ならびに他のシステム機能（たとえば、電力管理、ユーザ入力受諾および処理など）を含み得るが、それらに限定されない。したがって、本明細書に記載される規則エンジンおよび／または規則エンジンプラットフォームは、センサ、アプリケーション、サブシステム、および他のモジュールまたは機能をどのように、および／またはいつ稼動するべきか決定するためのコントローラとして使われ得る。同様に、本明細書に記載される規則エンジンおよび／または規則エンジンプラットフォームは、システムのセンサ、アプリケーション、サブシステム、および他のモジュールまたは機能の較正、タイミング、活動状態（たとえば、オンまたはオフ）および他の関連機能に影響し得る。
【０１９９】
[0212]本明細書で説明した実施形態は、記載される機能を提供するのに適した様々な異なる手段によって実装され得る。一実施形態では、本明細書に記載されるコンピューティングシステムは、複数の規則を規則リポジトリ中に記憶するための手段と、複数のサンプルを提供するように構成された複数のモジュールにサブスクライブするための手段と、サブスクライブする手段に基づいて、対象のコンテキストを識別するための手段と、対象のコンテキストに関連する規則の第１のセットを識別するための手段と、規則の第１のセットに含まれる少なくとも１つの規則を評価するための手段とを含む。
【０２００】
[0213]本明細書の教示は、コンピューティングシステムなどの装置に組み込まれ（たとえば、装置内に実装され、または装置によって実施され）て、その装置の性能を最適化することができる。本明細書に記載される実施形態は、キャッシュ化およびチップセット最適化に対応可能であり得る。いくつかの実施形態では、この最適化は、ＲＡＭメモリ、フラッシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭ（登録商標）メモリ、レジスタ、または装置上での実装に適した他の記憶ユニットなどのメモリを犠牲にして起こる。たとえば、本明細書において教示される１つまたは複数の態様は、電話（たとえば、セルラーフォン）、個人情報端末（ＰＤＡ）、タブレットコンピュータ、モバイルコンピュータ、ラップトップコンピュータ、娯楽デバイス（たとえば、音楽もしくはビデオデバイス）、デスクトップコンピュータ、クライアントコンピューティングシステム、サーバコンピューティングシステムまたは他の同様のコンピューティングシステム中に組み込まれ得る。これらのシステムは、様々な電力要件およびデータ要件を有する場合がある。
【０２０１】
[0214]情報および信号は様々な異なる技術および技法のいずれかを使用して表すことができることを、当業者は理解されよう。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界もしくは磁性粒子、光場もしくは光子、またはそれらの任意の組合せによって表され得る。
【０２０２】
[0215]さらに、本明細書で開示した実施形態に関して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装できることを当業者なら諒解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、上記では概してそれらの機能性に関して説明した。そのような機能がハードウェアとして実装されるか、ソフトウェアとして実装されるかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明された機能を具体的な適用例ごとに多様な方法で実装し得るが、そのような実装の決定は、本発明の範囲からの逸脱を生じるものと解釈されるべきではない。
【０２０３】
[0216]本明細書で開示される実施形態に関して説明される様々な例示的な論理ブロック、モジュール、および回路は、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または、本明細書で説明される機能を実施するように設計されたそれらの任意の組合せによって、実装または実施され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、またはマイクロコントローラであり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、ＤＳＰとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、ＤＳＰコアと連携する１つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装され得る。
【０２０４】
[0217]本明細書で開示されている実施形態に関して説明されている方法またはアルゴリズムのステップは、ハードウェアで直接、プロセッサにより実行されるソフトウェアモジュールにより、またはこれら２つの組合せにより具現化することができる。ソフトウェアモジュールは、ＲＡＭメモリ、フラッシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、リムーバブルディスク、またはポータブル電子デバイスに適した、当技術分野で知られている任意の他の形態の記憶媒体中に常駐し得る。例示的な記憶媒体は、プロセッサがその記憶媒体から情報を読み取ることができ、その記憶媒体に情報を書き込むことができるように、プロセッサに結合可能である。代替として、記憶媒体はプロセッサに一体化され得る。プロセッサおよび記憶媒体はＡＳＩＣ内に存在することができ得る。ＡＳＩＣはユーザ端末中に常駐し得る。代替として、プロセッサおよび記憶媒体は、ユーザ端末内の個別構成要素として常駐することができる。
【０２０５】
[0218]１つまたは複数の例示的な実施形態では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。コンピュータプログラム製品としてソフトウェアに実装された場合、機能は、１つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され得る。コンピュータ可読媒体は、あるロケーションから別のロケーションへのコンピュータプログラムの転送を可能にする任意の媒体を含む、コンピュータ記憶媒体と通信媒体の両方を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の利用可能な媒体でよい。限定ではなく例として、そのようなコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、または所望のプログラムコードを、命令またはデータ構造の形で運び、または記憶するのに使われ得るとともに、コンピュータ（たとえば、コンピューティングデバイスとして構成されたポータブル電子デバイス）によってアクセスされ得る他のどの媒体も備え得る。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、ソフトウェアが、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。本明細書で使用するディスク（disk）およびディスク（disc）は、コンパクトディスク（disc）（ＣＤ）、レーザーディスク（登録商標）（disc）、光ディスク（disc）、デジタル多用途ディスク（disc）（ＤＶＤ）、フロッピー（登録商標）ディスク（disk）およびＢｌｕ−ｒａｙ（登録商標）ディスク（disc）を含み、ディスク（disk）は、通常、データを磁気的に再生し、ディスク（disc）は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。コンピュータ可読媒体は、いくつかの実施形態では、非一時的であってよい。
【０２０６】
[0219]開示した実施形態の前述の説明は、いかなる当業者も本発明を実施または使用できるようにするために提供されるものである。これらの実施形態への様々な修正は当業者には容易に明らかであり、本明細書で定義した一般原理は、本発明の趣旨または範囲から逸脱することなく他の実施形態に適用され得る。したがって、本発明は、本明細書に示す実施形態に限定されるものではなく、本明細書で開示する原理および新規の特徴と一致する最も広い範囲を与えられるべきある。
【図１】
2015535381.tif 000003
【図２】
2015535381.tif 000004
【図３Ａ】
2015535381.tif 000005
【図３Ｂ】
2015535381.tif 000006
【図４】
2015535381.tif 000007
【図５】
2015535381.tif 000008
【図６】
2015535381.tif 000009
【図７Ａ】
2015535381.tif 000010
【図７Ｂ】
2015535381.tif 000011
【図７Ｃ】
2015535381.tif 000012
【図８】
2015535381.tif 000013
【図９Ａ】
2015535381.tif 000014
【図９Ｂ】
2015535381.tif 000015
【手続補正書】
【提出日】平成27年6月30日(2015.6.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ユーザに関連付けられたシステムによって実行される、規則エンジンを適合させるための方法であって、
第１のサンプリングモジュールからの受信サンプルおよび予想サンプルのうちの少なくとも１つに基づいて、前記システムの第１のコンテキストを決定することと、
第１の複数の規則のうちの少なくとも１つの規則を識別することと、ここで、前記識別された少なくとも１つの規則は前記第１のコンテキストに関連し、
前記第１のコンテキストに関連する複数のファクトを有する関連ファクトセットを識別することと、
前記関連ファクトセットから、前記第１のコンテキストに関連する少なくとも１つのファクトを識別することと、
前記少なくとも１つのサンプルが、実質的に前記複数のファクトのうちの少なくとも１つを更新する場合、前記第１のコンテキストに基づき前記少なくとも１つのファクトをアサートすることと、前記少なくとも１つのファクトをアサートすることは、前記第１の複数の規則を備える組織的構造を更新することを備え、
前記第１のコンテキストについての前記識別された関連規則を評価することと、
前記第１のコンテキストに無関連である、前記第１の複数の規則中の残りの少なくとも１つの規則を、前記少なくとも１つの規則が前記第１のコンテキストについて評価されないように無視することと、
を備える方法。
【請求項２】
前記少なくとも１つの関連規則を識別することは、
前記第１の複数の規則から、前記少なくとも１つの規則を含む、前記第１のコンテキストに関連する第２の複数の規則を有する関連規則セットを識別することを備える、請求項１に記載の方法。
【請求項３】
前記関連規則セットの各規則を評価することをさらに備える、請求項２に記載の方法。
【請求項４】
前記第１の複数の規則から、前記第１のコンテキストに関連するとともに評価されるべきである第３の複数の規則を有する第２の規則セットを識別することをさらに備える、請求項２に記載の方法。
【請求項５】
前記第１のコンテキストは前記ユーザのオフィスであり、前記関連規則セットはオフィスコンテキストに関連する、請求項２に記載の方法。
【請求項６】
前記第１のコンテキストは、ロケーションおよびジオフェンスのうちの１つである、請求項１に記載の方法。
【請求項７】
前記第１のサンプリングモジュールは、セルラーモジュール、Ｂｌｕｅｔｏｏｔｈ（登録商標）モジュール、Ｗｉ−Ｆｉモジュール、ユーザ入力モジュール、ニアフィールド通信モジュール、衛星測位システムモジュール、または前記システムのメモリに記憶されたアプリケーションモジュールのうちの１つである、請求項６に記載の方法。
【請求項８】
前記関連規則によって必要とされる前記少なくとも１つのファクトを識別するために、前記関連規則を分解することをさらに備える、請求項１に記載の方法。
【請求項９】
前記第１のコンテキストは、前記ユーザが運転中であることを示し、前記少なくとも１つのファクトは、前記第１のコンテキストに基づいて、前記ユーザが遷移中であることを示すようにアサートされる、請求項１に記載の方法。
【請求項１０】
前記第１のコンテキストに関連しない第２のファクトをデフォルトにアサートすることをさらに備える、請求項１に記載の方法。
【請求項１１】
前記第１のコンテキストに関連しない前記第２のファクトをアサートすることは、
前記第２のファクトを含む、前記第１のコンテキストに関連しない複数のファクトを有する第２のファクトセットを識別することと、
前記第２のファクトセット中の前記複数のファクトの各ファクトをデフォルトにアサートすることと、
を備える、請求項１０に記載の方法。
【請求項１２】
前記関連規則を満足することを求められる、第２のサンプリングモジュールによって提供される、第２の受信サンプルおよび第２の予想サンプルのうちの少なくとも１つについてのサンプリング要件を決定することと、
前記関連規則の前記サンプリング要件に基づいて、最適化方式を計算することと、
前記最適化方式に基づいて、前記第２のサンプリングモジュールのサンプリングレートを修正することと、
をさらに備える、請求項１に記載の方法。
【請求項１３】
前記サンプリングレートを修正することは、
前記第２のサンプリングモジュールへのサブスクリプションを修正することを備える、請求項１２に記載の方法。
【請求項１４】
前記第１のコンテキストに関連する規則セットを満足することを求められる複数のサンプリング要件を決定することと、ここで、前記規則セットは、前記関連規則を含む複数の規則を備え、
前記関連規則のセットの前記複数のサンプリング要件に基づいて、最適化方式を計算することと、
前記最適化方式に基づいて、前記複数のサンプリング要件のそれぞれのサンプリング要件についての少なくとも１つのサンプルを提供するべきである第２のサンプリングモジュールのサンプリングレートを修正することと、
をさらに備える、請求項１に記載の方法。
【請求項１５】
前記最適化方式を計算することは、
前記複数のサンプリング要件を評価することと、
前記複数のサンプリング要件の前記評価から、第１の規則の第１のサンプリング要件が、前記第２のサンプリングモジュールからのサンプルを第１のレートで必要とし、第２の規則の第２のサンプリング要件が、前記第２のサンプリングモジュールからの前記サンプルを、前記第１のレートとは異なる第２のレートで必要とすると決定することと、
前記第１の規則および前記第２の規則にとって満足できる、前記第２のサンプリングモジュールの最適サンプリングレートを指定する最適化パラメータを計算することと、
を備える、請求項１４に記載の方法。
【請求項１６】
前記第１のサンプリングモジュールによって提供されるサンプルを受信することを備え、決定することは、
提供されるべき前記サンプルと、記憶されたコンテキストとの間のマッピングを識別することと、
前記第１のコンテキストが、前記記憶されたコンテキストを含むと決定することとを備える、請求項１に記載の方法。
【請求項１７】
前記サンプルはＷｉ−Ｆｉシグネチャであり、前記記憶されたコンテキストは建物内の部屋である、請求項１６に記載の方法。
【請求項１８】
前記第１のコンテキストと第２のコンテキストとの間の関係を導出することをさらに備える、請求項１に記載の方法。
【請求項１９】
前記第１のコンテキストは、前記ユーザが自宅にいることを示し、前記第２のコンテキストは、前記ユーザがオフィスにいることを示し、前記導出された関係は、前記ユーザが前記自宅から前記オフィスに移動するための移動持続時間を含む、請求項１８に記載の方法。
【請求項２０】
少なくとも１つのサンプリングモジュールを含む複数のモジュールと、前記サンプリングモジュールは前記サンプリングモジュールに関連付けられたサンプルを送るように構成され、
規則エンジンプラットフォームを実行するように動作可能なプロセッサと、を備え、
前記規則エンジンプラットフォームは、
複数の規則を記憶するように構成された規則リポジトリと、
前記サンプリングモジュールからの受信サンプルおよび予想サンプルのうちの少なくとも１つに基づいて、前記コンピューティングシステムの対象のコンテキストを決定するように構成されたコンテキスト認識エンジンと、
前記対象コンテキストに基づいて、前記対象コンテキストに関連する、前記複数の規則に含まれる規則の第１のセットを識別し、前記対象コンテキストに関連する複数のファクトを有する関連ファクトセットを識別し、前記関連ファクトセットから、前記対象コンテキストに関連する少なくとも１つのファクトを識別し、前記少なくとも１つのサンプルが、実質的に前記複数のファクトのうちの少なくとも１つを更新する場合、前記対象コンテキストに基づき前記少なくとも１つのファクトをアサートし、前記少なくとも１つのファクトをアサートすることは、前記第１の複数の規則を備える組織的構造を更新することを備え、規則の前記第１のセットの少なくとも１つの規則を評価するように構成された規則エンジンと、
を含む、コンピューティングシステム。
【請求項２１】
前記プロセッサは、前記複数のモジュールのそれぞれのモジュールを実行するようにさらに構成される、請求項２０に記載のコンピューティングシステム。
【請求項２２】
前記規則エンジンは、
前記対象コンテキストに関連しない、前記複数の規則に含まれる規則の第２のセットを、前記第２のセットに含まれるどの規則も、前記対象コンテキストについて評価されないように、無視するようにさらに構成される、請求項２０に記載のコンピューティングシステム。
【請求項２３】
前記規則エンジンは、前記対象コンテキストに関連する、前記複数の規則に含まれる規則の第３のセットを識別するようにさらに構成される、請求項２０に記載のコンピューティングシステム。
【請求項２４】
前記規則エンジンは、競合解決アジェンダによる評価のために前記少なくとも１つの規則を識別するようにさらに構成され、ここで、前記少なくとも１つの規則は、前記対象コンテキストに関連する規則の前記第１および第３のセットのうちの１つに含まれる第２の規則と競合する、請求項２３に記載のコンピューティングシステム。
【請求項２５】
前記コンテキスト認識エンジンは、少なくとも１つのサンプルの受信と前記少なくとも１つのサンプルがないこととのうちの１つに基づいて、前記対象コンテキストを決定するように構成される、請求項２０に記載のコンピューティングシステム。
【請求項２６】
前記対象コンテキストは、前記コンピューティングシステムのユーザが、会議中、話し合い中、電話中、ジオフェンスの近くにいる、人の近くにいる、自宅にいる、会議に遅れる、および運転中のうちの１つであることを示す、請求項２０に記載のコンピューティングシステム。
【請求項２７】
前記対象コンテキストは、瞬間的コンテキスト、期待されるコンテキストおよび頻発するコンテキストのうちの１つである、請求項２０に記載のコンピューティングシステム。
【請求項２８】
前記サンプリングモジュールは、セルラーモジュール、Ｂｌｕｅｔｏｏｔｈモジュール、Ｗｉ−Ｆｉモジュール、ユーザ入力モジュール、ニアフィールド通信モジュール、全地球測位システムモジュール、または前記コンピューティングシステムのメモリに記憶されたアプリケーションモジュールのうちの１つである、請求項２０に記載のコンピューティングシステム。
【請求項２９】
前記規則エンジンは、規則の前記第１のセットの前記少なくとも１つの規則によって必要とされる前記少なくとも１つのファクトを識別するために、前記対象コンテキストに基づいて識別される規則の前記第１のセットに含まれる前記規則を分解するように構成される、請求項２０に記載のコンピューティングシステム。
【請求項３０】
前記規則エンジンは、前記対象コンテキストに関連しない複数のファクトを、ヌルおよび偽のうちの１つにアサートするようにさらに構成される、請求項２０に記載のコンピューティングシステム。
【請求項３１】
前記規則エンジンは、第２のサンプリングモジュールにサブスクライブするように、および前記第２のサンプリングモジュールへの前記サブスクリプションを、前記対象コンテキストに基づいて修正するようにさらに構成される、請求項２０に記載のコンピューティングシステム。
【請求項３２】
前記規則エンジンは、前記第２のサンプリングモジュールが問い合わされるレート、前記第２のサンプリングモジュールがポーリングされるレート、および前記第２のサンプリングモジュールからのサンプリングストリーム中で受信された複数のサンプルが記憶されるレートのうちの１つを修正することによって、前記サブスクリプションを修正するように構成される、請求項３１に記載のコンピューティングシステム。
【請求項３３】
前記対象コンテキストは、前記コンピューティングシステムのユーザが人の近くにいることを示し、さらに、前記規則エンジンプラットフォームは、前記人についてのコンタクト情報を含むサンプルが受信されるように、前記第２のサンプリングモジュールへの前記サブスクリプションを修正するように構成される、請求項３１に記載のコンピューティングシステム。
【請求項３４】
前記規則エンジンプラットフォームは、
前記対象コンテキストに関連する、前記第１のセットの規則を満足することを求められる複数のサンプリング要件を決定し、
前記複数のサンプリング要件に基づいて最適化方式を計算し、および
前記最適化方式に基づいて、少なくとも１つの必要とされるサンプルを提供するように構成された第２のサンプリングモジュールのサンプリングレートを修正する
ように構成された最適化エンジンをさらに含む、請求項２０に記載のコンピューティングシステム。
【請求項３５】
前記規則エンジンは、前記対象コンテキストと第２のコンテキストとの間の関係を導出するようにさらに構成される、請求項２０に記載のコンピューティングシステム。
【請求項３６】
複数の規則を規則リポジトリに記憶するための手段と、
複数のサンプルを提供するように構成された複数のモジュールにサブスクライブするための手段と、
前記サブスクライブする手段に基づいて、対象のコンテキストを識別するための手段と、
前記対象コンテキストに関連する規則の第１のセットを識別するための手段と、
規則の前記第１のセットに含まれる少なくとも１つの規則を評価するための手段と、
を備えるコンピューティングシステム。
【請求項３７】
命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記命令は、コンピューティングシステムによって実行されると、前記コンピューティングシステムに方法を実施させ、前記方法は、
第１のサンプリングモジュールからの受信サンプルおよび予想サンプルのうちの少なくとも１つに基づいて、前記コンピューティングシステムの第１のコンテキストを決定することと、
第１の複数の規則のうちの少なくとも１つの規則を識別することと、ここで、前記識別された少なくとも１つの規則は前記第１のコンテキストに関連し、
前記第１のコンテキストに関連する複数のファクトを有する関連ファクトセットを識別することと、
前記関連ファクトセットから、前記第１のコンテキストに関連する少なくとも１つのファクトを識別することと、
前記少なくとも１つのサンプルが、実質的に前記複数のファクトのうちの少なくとも１つを更新する場合、前記第１のコンテキストに基づき前記少なくとも１つのファクトをアサートすることと、前記少なくとも１つのファクトをアサートすることは、前記第１の複数の規則を備える組織的構造を更新することを備え、
前記第１のコンテキストについての前記識別された関連規則を評価することと、
前記第１のコンテキストに無関連である、前記第１の複数の規則中の残りの少なくとも１つの規則を、前記少なくとも１つの規則が前記第１のコンテキストについて評価されないように無視することと、
を備える非一時的コンピュータ可読記憶媒体。
【請求項３８】
前記少なくとも１つのサンプルが前記複数のファクトのうちの少なくとも１つの真値を変更する場合、前記少なくとも1つのサンプルは実質的に前記複数のファクトのうちの少なくとも１つを更新する、請求項１の方法。
【請求項３９】
前記少なくとも１つのサンプルが前記複数のファクトのうちの少なくとも１つの真値を変更する場合、前記少なくとも1つのサンプルは実質的に前記複数のファクトのうちの少なくとも１つを更新する、請求項２０のコンピューティングシステム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０２０６
【補正方法】変更
【補正の内容】
【０２０６】
[0219]開示した実施形態の前述の説明は、いかなる当業者も本発明を実施または使用できるようにするために提供されるものである。これらの実施形態への様々な修正は当業者には容易に明らかであり、本明細書で定義した一般原理は、本発明の趣旨または範囲から逸脱することなく他の実施形態に適用され得る。したがって、本発明は、本明細書に示す実施形態に限定されるものではなく、本明細書で開示する原理および新規の特徴と一致する最も広い範囲を与えられるべきある。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
［１］  ユーザに関連付けられたシステムによって実行される、規則エンジンを適合させるための方法であって、
第１のサンプリングモジュールからの受信サンプルおよび予想サンプルのうちの少なくとも１つに基づいて、前記システムの第１のコンテキストを決定することと、
第１の複数の規則のうちの少なくとも１つの規則を識別することと、ここで、前記識別された少なくとも１つの規則は前記第１のコンテキストに関連し、
前記第１のコンテキストについての前記識別された関連規則を評価することと、
前記第１のコンテキストに無関連である、前記第１の複数の規則中の残りの少なくとも１つの規則を、前記少なくとも１つの規則が前記第１のコンテキストについて評価されないように無視することと、
を備える方法。
［２］  前記少なくとも１つの関連規則を識別することは、
前記第１の複数の規則から、前記少なくとも１つの規則を含む、前記第１のコンテキストに関連する第２の複数の規則を有する関連規則セットを識別することを備える、［１］に記載の方法。
［３］  前記関連規則セットの各規則を評価することをさらに備える、［２］に記載の方法。
［４］  前記第１の複数の規則から、前記第１のコンテキストに関連するとともに評価されるべきである第３の複数の規則を有する第２の規則セットを識別することをさらに備える、［２］に記載の方法。
［５］  前記第１のコンテキストは前記ユーザのオフィスであり、前記関連規則セットはオフィスコンテキストに関連する、［２］に記載の方法。
［６］  前記第１のコンテキストは、ロケーションおよびジオフェンスのうちの１つである、［１］に記載の方法。
［７］  前記第１のサンプリングモジュールは、セルラーモジュール、Ｂｌｕｅｔｏｏｔｈモジュール、Ｗｉ−Ｆｉモジュール、ユーザ入力モジュール、ニアフィールド通信モジュール、衛星測位システムモジュール、または前記システムのメモリに記憶されたアプリケーションモジュールのうちの１つである、［６］に記載の方法。
［８］  前記第１のコンテキストに関連する少なくとも１つのファクトを識別することをさらに備える、［１］に記載の方法。
［９］  前記関連規則によって必要とされる前記少なくとも１つのファクトを識別するために、前記関連規則を分解することをさらに備える、［８］に記載の方法。
［１０］  前記第１のコンテキストに関連する前記少なくとも１つのファクトを識別することは、
前記少なくとも１つのファクトを含む、前記第１のコンテキストに関連する複数のファクトを有する関連ファクトセットを識別することを備える、［８］に記載の方法。
［１１］  前記第１のコンテキストに基づいて、前記少なくとも１つのファクトをアサートすることをさらに備える、［８］に記載の方法。
［１２］  前記第１のコンテキストは、前記ユーザが運転中であることを示し、前記少なくとも１つのファクトは、前記第１のコンテキストに基づいて、前記ユーザが遷移中であることを示すようにアサートされる、［１１］に記載の方法。
［１３］  前記第１のコンテキストに関連しない第２のファクトをデフォルトにアサートすることをさらに備える、［８］に記載の方法。
［１４］  前記第１のコンテキストに関連しない前記第２のファクトをアサートすることは、
前記第２のファクトを含む、前記第１のコンテキストに関連しない複数のファクトを有する第２のファクトセットを識別することと、
前記第２のファクトセット中の前記複数のファクトの各ファクトをデフォルトにアサートすることと、
を備える、［１３］に記載の方法。
［１５］  前記関連規則を満足することを求められる、第２のサンプリングモジュールによって提供される、第２の受信サンプルおよび第２の予想サンプルのうちの少なくとも１つについてのサンプリング要件を決定することと、
前記関連規則の前記サンプリング要件に基づいて、最適化方式を計算することと、
前記最適化方式に基づいて、前記第２のサンプリングモジュールのサンプリングレートを修正することと、
をさらに備える、［１］に記載の方法。
［１６］  前記サンプリングレートを修正することは、
前記第２のサンプリングモジュールへのサブスクリプションを修正することを備える、［１５］に記載の方法。
［１７］  前記第１のコンテキストに関連する規則セットを満足することを求められる複数のサンプリング要件を決定することと、ここで、前記規則セットは、前記関連規則を含む複数の規則を備え、
前記関連規則のセットの前記複数のサンプリング要件に基づいて、最適化方式を計算することと、
前記最適化方式に基づいて、前記複数のサンプリング要件のそれぞれのサンプリング要件についての少なくとも１つのサンプルを提供するべきである第２のサンプリングモジュールのサンプリングレートを修正することと、
をさらに備える、［１］に記載の方法。
［１８］  前記最適化方式を計算することは、
前記複数のサンプリング要件を評価することと、
前記複数のサンプリング要件の前記評価から、第１の規則の第１のサンプリング要件が、前記第２のサンプリングモジュールからのサンプルを第１のレートで必要とし、第２の規則の第２のサンプリング要件が、前記第２のサンプリングモジュールからの前記サンプルを、前記第１のレートとは異なる第２のレートで必要とすると決定することと、
前記第１の規則および前記第２の規則にとって満足できる、前記第２のサンプリングモジュールの最適サンプリングレートを指定する最適化パラメータを計算することと、
を備える、［１７］に記載の方法。
［１９］  前記第１のサンプリングモジュールによって提供されるサンプルを受信することを備え、決定することは、
提供されるべき前記サンプルと、記憶されたコンテキストとの間のマッピングを識別することと、
前記第１のコンテキストが、前記記憶されたコンテキストを含むと決定することとを備える、［１］に記載の方法。
［２０］  前記サンプルはＷｉ−Ｆｉシグネチャであり、前記記憶されたコンテキストは建物内の部屋である、［１９］に記載の方法。
［２１］  前記第１のコンテキストと第２のコンテキストとの間の関係を導出することをさらに備える、［１］に記載の方法。
［２２］  前記第１のコンテキストは、前記ユーザが自宅にいることを示し、前記第２のコンテキストは、前記ユーザがオフィスにいることを示し、前記導出された関係は、前記ユーザが前記自宅から前記オフィスに移動するための移動持続時間を含む、［２１］に記載の方法。
［２３］  少なくとも１つのサンプリングモジュールを含む複数のモジュールと、前記サンプリングモジュールは前記サンプリングモジュールに関連付けられたサンプルを送るように構成され、
複数の規則を記憶するように構成された規則リポジトリと、前記サンプリングモジュールからの受信サンプルおよび予想サンプルのうちの少なくとも１つに基づいて、前記コンピューティングシステムの対象のコンテキストを決定するように構成されたコンテキスト認識エンジンと、前記対象コンテキストに基づいて、前記対象コンテキストに関連する、前記複数の規則に含まれる規則の第１のセットを識別するとともに規則の前記第１のセットの少なくとも１つの規則を評価するように構成された規則エンジンと、を含む規則エンジンプラットフォームを実行するように動作可能なプロセッサと、
を備えるコンピューティングシステム。
［２４］  前記プロセッサは、前記複数のモジュールのそれぞれのモジュールを実行するようにさらに構成される、［２３］に記載のコンピューティングシステム。
［２５］  前記規則エンジンは、
前記対象コンテキストに関連しない、前記複数の規則に含まれる規則の第２のセットを、前記第２のセットに含まれるどの規則も、前記対象コンテキストについて評価されないように、無視するようにさらに構成される、［２３］に記載のコンピューティングシステム。
［２６］  前記規則エンジンは、前記対象コンテキストに関連する、前記複数の規則に含まれる規則の第３のセットを識別するようにさらに構成される、［２３］に記載のコンピューティングシステム。
［２７］  前記規則エンジンは、競合解決アジェンダによる評価のために前記少なくとも１つの規則を識別するようにさらに構成され、ここで、前記少なくとも１つの規則は、前記対象コンテキストに関連する規則の前記第１および第３のセットのうちの１つに含まれる第２の規則と競合する、［２６］に記載のコンピューティングシステム。
［２８］  前記コンテキスト認識エンジンは、少なくとも１つのサンプルの受信と前記少なくとも１つのサンプルがないこととのうちの１つに基づいて、前記対象コンテキストを決定するように構成される、［２３］に記載のコンピューティングシステム。
［２９］  前記対象コンテキストは、前記コンピューティングシステムのユーザが、会議中、話し合い中、電話中、ジオフェンスの近くにいる、人の近くにいる、自宅にいる、会議に遅れる、および運転中のうちの１つであることを示す、［２３］に記載のコンピューティングシステム。
［３０］  前記対象コンテキストは、瞬間的コンテキスト、期待されるコンテキストおよび頻発するコンテキストのうちの１つである、［２３］に記載のコンピューティングシステム。
［３１］  前記サンプリングモジュールは、セルラーモジュール、Ｂｌｕｅｔｏｏｔｈモジュール、Ｗｉ−Ｆｉモジュール、ユーザ入力モジュール、ニアフィールド通信モジュール、全地球測位システムモジュール、または前記コンピューティングシステムのメモリに記憶されたアプリケーションモジュールのうちの１つである、［２３］に記載のコンピューティングシステム。
［３２］  前記規則エンジンは、前記対象コンテキストに基づいて、前記対象コンテキストに関連する少なくとも１つのファクトを識別するようにさらに構成される、［２３］に記載のコンピューティングシステム。
［３３］  前記規則エンジンは、規則の前記第１のセットの前記少なくとも１つの規則によって必要とされる前記少なくとも１つのファクトを識別するために、前記対象コンテキストに基づいて識別される規則の前記第１のセットに含まれる前記規則を分解するように構成される、［３２］に記載のコンピューティングシステム。
［３４］  前記規則エンジンは、前記対象コンテキスト、少なくとも１つのサンプルの受信、および前記少なくとも１つのサンプルがないことのうちの１つから、前記識別されたファクトをアサートするようにさらに構成される、［３２］に記載のコンピューティングシステム。
［３５］  前記規則エンジンは、前記対象コンテキストに関連しない複数のファクトを、ヌルおよび偽のうちの１つにアサートするようにさらに構成される、［２３］に記載のコンピューティングシステム。
［３６］  前記規則エンジンは、第２のサンプリングモジュールにサブスクライブするように、および前記第２のサンプリングモジュールへの前記サブスクリプションを、前記対象コンテキストに基づいて修正するようにさらに構成される、［２３］に記載のコンピューティングシステム。
［３７］  前記規則エンジンは、前記第２のサンプリングモジュールが問い合わされるレート、前記第２のサンプリングモジュールがポーリングされるレート、および前記第２のサンプリングモジュールからのサンプリングストリーム中で受信された複数のサンプルが記憶されるレートのうちの１つを修正することによって、前記サブスクリプションを修正するように構成される、［３６］に記載のコンピューティングシステム。
［３８］  前記対象コンテキストは、前記コンピューティングシステムのユーザが人の近くにいることを示し、さらに、前記規則エンジンプラットフォームは、前記人についてのコンタクト情報を含むサンプルが受信されるように、前記第２のサンプリングモジュールへの前記サブスクリプションを修正するように構成される、［３６］に記載のコンピューティングシステム。
［３９］  前記規則エンジンプラットフォームは、
前記対象コンテキストに関連する、前記第１のセットの規則を満足することを求められる複数のサンプリング要件を決定し、
前記複数のサンプリング要件に基づいて最適化方式を計算し、および
前記最適化方式に基づいて、少なくとも１つの必要とされるサンプルを提供するように構成された第２のサンプリングモジュールのサンプリングレートを修正する
ように構成された最適化エンジンをさらに含む、［２３］に記載のコンピューティングシステム。
［４０］  前記規則エンジンは、前記対象コンテキストと第２のコンテキストとの間の関係を導出するようにさらに構成される、［２３］に記載のコンピューティングシステム。
［４１］  複数の規則を規則リポジトリに記憶するための手段と、
複数のサンプルを提供するように構成された複数のモジュールにサブスクライブするための手段と、
前記サブスクライブする手段に基づいて、対象のコンテキストを識別するための手段と、
前記対象コンテキストに関連する規則の第１のセットを識別するための手段と、
規則の前記第１のセットに含まれる少なくとも１つの規則を評価するための手段と、
を備えるコンピューティングシステム。
［４２］  命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記命令は、コンピューティングシステムによって実行されると、前記コンピューティングシステムに方法を実施させ、前記方法は、
第１のサンプリングモジュールからの受信サンプルおよび予想サンプルのうちの少なくとも１つに基づいて、前記コンピューティングシステムの第１のコンテキストを決定することと、
第１の複数の規則のうちの少なくとも１つの規則を識別することと、ここで、前記識別された少なくとも１つの規則は前記第１のコンテキストに関連し、
前記第１のコンテキストについての前記識別された関連規則を評価することと、
前記第１のコンテキストに無関連である、前記第１の複数の規則中の残りの少なくとも１つの規則を、前記少なくとも１つの規則が前記第１のコンテキストについて評価されないように無視することと、
を備える非一時的コンピュータ可読記憶媒体。
【国際調査報告】
2015535381.tif 000016