特許第6030664号(P6030664)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マイクロソフト コーポレーションの特許一覧

特許6030664ルールに基づくコンテキスト取得のための方法
<>
  • 特許6030664-ルールに基づくコンテキスト取得のための方法 図000003
  • 特許6030664-ルールに基づくコンテキスト取得のための方法 図000004
  • 特許6030664-ルールに基づくコンテキスト取得のための方法 図000005
  • 特許6030664-ルールに基づくコンテキスト取得のための方法 図000006
  • 特許6030664-ルールに基づくコンテキスト取得のための方法 図000007
  • 特許6030664-ルールに基づくコンテキスト取得のための方法 図000008
  • 特許6030664-ルールに基づくコンテキスト取得のための方法 図000009
  • 特許6030664-ルールに基づくコンテキスト取得のための方法 図000010
  • 特許6030664-ルールに基づくコンテキスト取得のための方法 図000011
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6030664
(24)【登録日】2016年10月28日
(45)【発行日】2016年11月24日
(54)【発明の名称】ルールに基づくコンテキスト取得のための方法
(51)【国際特許分類】
   G06N 5/04 20060101AFI20161114BHJP
【FI】
   G06N5/04
【請求項の数】10
【全頁数】21
(21)【出願番号】特願2014-547534(P2014-547534)
(86)(22)【出願日】2012年12月14日
(65)【公表番号】特表2015-506043(P2015-506043A)
(43)【公表日】2015年2月26日
(86)【国際出願番号】US2012069950
(87)【国際公開番号】WO2013090853
(87)【国際公開日】20130620
【審査請求日】2015年11月24日
(31)【優先権主張番号】13/325,874
(32)【優先日】2011年12月14日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】500046438
【氏名又は名称】マイクロソフト コーポレーション
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】ナス,スーマン
【審査官】 長谷川 篤男
(56)【参考文献】
【文献】 特開2009−104593(JP,A)
【文献】 特開2010−102552(JP,A)
【文献】 特開2002−324196(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 5/04
G06Q 10/00
(57)【特許請求の範囲】
【請求項1】
ルールに基づくコンテキスト取得のための方法であって、
コンテキスト取得システムにおいてアプリケーションからターゲット・コンテキストの要求を受け取る工程と、
ルールベースの推論のキャッシュを使用して、前記ターゲット・コンテキストに関連するコンテキスト・ルールを識別する工程と、
前記要求の結果として検知プロシージャを開始せずに、以前取得したコンテキスト及び前記コンテキスト・ルールに基づいて、前記ターゲット・コンテキストの推論値を決定する工程
前記以前取得したコンテキスト及び前記コンテキスト・ルールに基づいて、前記ターゲット・コンテキストの前記推論値を決定することができない場合、ルールベースの取得プランナを使用して前記ターゲット・コンテキストの前記推論値を取得するための検知プランの第1のステップを実行する工程であって、前記第1のステップが、前記コンテキスト・ルール又はコスト又はその任意の組合せに基づいて決定される、工程と、
前記ターゲット・コンテキストの前記推論値が得られるまで、前記検知プランの複数の後続ステップのいずれかを実行する工程であって、前記複数の後続ステップの各々が、前記コンテキスト・ルール、前記コスト又は前記検知プランの先行するステップの結果、又はその任意の組合せに基づいて個々に決定される、工程
を含む、方法。
【請求項2】
前記コンテキスト取得システム内で前記ターゲット・コンテキストの正確な値が見つかる場合、前記正確な値を前記アプリケーションに出力する工程を含む、請求項1に記載の方法。
【請求項3】
前記ターゲット・コンテキストの前記推論値を前記アプリケーションに出力する工程を含む、請求項1に記載の方法。
【請求項4】
前記アプリケーションが、モバイル・コンピューティング・デバイス内に実装されるコンテキスト・アウェア・アプリケーションを備える、請求項1に記載の方法。
【請求項5】
コンテキスト・ルール・マイナ内において前記コンテキスト・ルールを作成する工程と、前記ルールベースの推論のキャッシュ内の前記ターゲット・コンテキストに関連する前記コンテキスト・ルールを結合して、前記ターゲット・コンテキストの論理式のツリーを作成する工程を含む、請求項1に記載の方法。
【請求項6】
前記論理式のツリーを使用して、前記ターゲット・コンテキストの前記推論値を取得するための前記検知プランを決定する工程を含む、請求項5に記載の方法。
【請求項7】
前記検知プランの前記第1のステップを実行する工程又は前記検知プランの前記複数の後続ステップのいずれかを実行する工程が、コンピューティング・デバイス内で実装されるセンサを使用して前記ターゲット・コンテキストに関連する検知されたコンテキストを得る工程を含む、請求項1に記載の方法。
【請求項8】
前記コストは、前記ターゲット・コンテキストに関連するセンサ・データを取得する計算コスト又はバッテリコスト又はその双方を含み、前記検知プランの前記第1のステップ及び前記複数の後続ステップは、前記コストに従って昇順で実行されるように選択される、請求項1に記載の方法。
【請求項9】
コンテキスト・ルール・マイナを使用して前記ルールベースの推論のキャッシュ内の検知されたコンテキストから得られるコンテキスト履歴に従って、前記コンテキスト・ルールを生成する工程を含む、請求項1に記載の方法。
【請求項10】
ルールに基づくコンテキスト取得のためのシステムにおいて、
ルールベースの推論のキャッシュであって、
アプリケーションからターゲット・コンテキストの要求を受け取り、
前記ターゲット・コンテキストに関連するコンテキスト・ルールであって、当該ルールベースの推論のキャッシュ内に格納されるコンテキスト・ルールを識別し、
前記要求の結果として検知プロシージャを開始せずに、以前取得したコンテキスト及び前記コンテキスト・ルールに基づいて、前記ターゲット・コンテキストの推論値を決定する
ように構成される、ルールベースの推論のキャッシュと、
ルールベースの取得プランナであって、
前期以前取得したコンテキスト及び前記コンテキスト・ルールに基づいて、前記ターゲット・コンテキストの前記推論値を決定することができない場合、前記ターゲット・コンテキストの前記推論値を取得するための検知プランの第1のステップであって、前記コンテキスト・ルール又はコスト又はその任意の組合せに基づいて決定される検知プランの第1のステップを実行し、
前記コンテキスト・ルール、前記コスト又は前記検知プランの前記第1のステップの結果又はその任意の組合せに基づいて決定される、前記検知プランの第2のステップを実行する、
ように構成される、ルールベースの取得プランナと
を備える、システム。
【発明の詳細な説明】
【背景技術】
【0001】
携帯電話のような多くのモバイル・コンピューティング・デバイスは、動的フィードバックをユーザに提供するために、様々なコンテキスト・アウェア・アプリケーションを使用するように構成されている。本明細書で使用されるとき、「コンテキスト・アウェア」という用語は、変化する環境を検出又は検知して適切に反応するように、モバイル・コンピューティング・デバイスに実装される、特定のアプリケーション又はプログラムの機能を指す。このようなコンテキスト・アウェア・アプリケーションは、多くの場合、ユーザのコンテキストを連続して、又は頻繁に検知することに依拠する。ユーザのコンテキストには、例えば特に、場所、交通手段(transportation mode)、ユーザのグループ状態又はユーザの作業状態のような情報が含まれることがある。しかしながら、ユーザのコンテキストを検知することは大量の電池残量を消費する可能性があるので、コンテキスト情報を取得することは、バッテリで動作するモバイル・デバイスにおいて高価なものである可能性がある。
【発明の概要】
【0002】
以下は、本明細書に記載される幾つかの態様の基本的な理解を提供するために、本革新の簡単な要約を提示するものである。この要約は、特許請求に係る主題の包括的な概要ではない。特許請求に係る主題の重要な又は本質的な要素を特定することも、本革新の範囲を画定することも意図されていない。その唯一の目的は、後に提示するより詳細な説明の前置きとして、特許請求に係る主題の幾つか概念を簡単な形で提示することである。
【0003】
一実施形態は、ルールに基づくコンテキスト取得のための方法を提供する。この方法は、コンテキスト取得システムにおいてアプリケーションからターゲット・コンテキストの要求を受け取ることと、ルールベースの推論のキャッシュを使用して、ターゲット・コンテキストに関連するコンテキスト・ルールを識別することとを含む。この方法はまた、以前取得したコンテキスト及び上記コンテキスト・ルールに基づいて、ターゲット・コンテキストの推論値を決定することを含む。ターゲット・コンテキストの推論値が、以前取得したコンテキスト及び上記コンテキスト・ルールに基づいて決定できない場合、この方法は、ルールベースの取得プランナを使用してターゲット・コンテキストの推論値を取得するための検知プラン(sensing plan)の第1のステップを実行することを更に含む。検知プランの第1のステップは、コンテキスト・ルール又はコスト又はその任意の組合せに基づいて決定される。この方法はまた、ターゲット・コンテキストの推論値が得られるまで、検知プランの複数の後続ステップのいずれかを実行することを含む。後続ステップのそれぞれは、コンテキスト・ルール、コスト又は検知プランの前のステップの結果又はその任意の組合せに基づいて個々に決定される。
【0004】
別の実施形態は、ルールに基づくコンテキスト取得のためのシステムを提供する。このシステムは、アプリケーションからターゲット・コンテキストの要求を受け取り、ターゲット・コンテキストに関連するコンテキスト・ルールを識別するように構成されるルールベースの推論のキャッシュを含み、コンテキスト・ルールは、ルールベースの推論のキャッシュ内に格納される。このシステムはまた、ターゲット・コンテキストの推論値を取得するための検知プランの第1のステップを実行するように構成されたルールベースの取得プランナを含む。検知プランの第1のステップは、コンテキスト・ルール又はコスト又はその任意の組合せに基づいて決定される。ルールベースの取得プランナは更に、検知プランの第2のステップを実行するように構成され、この第2のステップは、コンテキスト・ルール、コスト又は検知プランの第1のステップの結果又はその任意の組合せに基づいて決定される。
【0005】
さらに、別の実施形態は、コンピュータ読取可能命令を格納するための1つ又は複数の非一時的なコンピュータ読取可能記憶媒体を提供する。コンピュータ読取可能命令は、1つ又は複数の処理デバイスによって実行されるとき、ルールに基づくコンテキスト取得システムを提供する。コンピュータ読取可能命令は、アプリケーションからターゲット・コンテキストの要求を受け付け、ルールベースの推論のキャッシュを使用してターゲット・コンテキストに関連するコンテキスト・ルールに従ってターゲット・コンテキストの推論値を決定しようと試みるように構成されたコードを含む。コンピュータ読取可能命令はまた、コンテキスト・ルールに従って推論値が決定されない場合、ルールベースの取得プランナを使用して検知プランの複数のステップのそれぞれを展開して実行するように構成されるコードを含む。
【0006】
この「発明の概要」の記載は、以下の「発明を実施するための形態」において更に説明される概念の選択を簡略化した形で紹介するのに提供されている。この「発明の概要」の記載は、特許請求に係る主題の主要な特徴又は本質的な特徴を特定するようには意図されておらず、また、特許請求に係る主題の範囲を限定するように用いられるようにも意図されていない。
【図面の簡単な説明】
【0007】
図1】ルールに基づくコンテキスト取得方法を実装することができる例示システムのブロック図である。
【0008】
図2】コンピューティング・システム内に実装することができるコンテキスト取得システムの一実施形態を示す図である。
【0009】
図3】コンテキスト情報を推論するためのルールを作成するのにコンテキスト取得システム内で使用することができるコンテキスト・ルール・マイナ(context rule miner)の一実施形態を示す図である。
【0010】
図4】推論によりコンテキスト情報を提供するためにコンテキスト取得システム内で使用することができるルールベースの推論のキャッシュの一実施形態を示す図である。
【0011】
図5】特定のコンテキスト情報を推論するためのルールを定義するルールベースの推論のキャッシュによって利用可能なAND/ORツリーを示す概略図である。
【0012】
図6】コンテキスト情報を取得するための検知プランを作成するためにコンテキスト取得システム内で使用することができるルールベースの取得プランナの一実施形態を示す図である。
【0013】
図7】モバイル・コンピューティング環境内のルールに基づくコンテキスト取得のための方法を示すプロセス・フロー図である。
【0014】
図8】コンピューティング環境内のコンテキスト・アウェア・アプリケーションによって使用されるコンテキスト情報を取得するように適合されたコードを格納する有形のコンピュータ読取可能媒体を示すブロック図である。
【0015】
図9】コンテキスト取得システムの例示的実施形態を示すブロック図である。
【発明を実施するための形態】
【0016】
本開示及び図を通して、同様の構成要素及び特徴を指すのに同じ参照符号が使用される。100番台の数字は最初に図1に見られる特徴を指し、200番台の数字は最初に図2で見られる特徴を指し、300番台の数字は最初に図3で見られる特徴を指し、他も同様である。
【0017】
本明細書に開示される実施形態は、コンテキスト取得システムを使用してコンテキスト情報を決定するための方法及びシステムを示す。コンピューティング・デバイスのユーザが、コンテキスト取得システムにコンテキスト情報を決定する権限を与えることができる。様々な実施形態では、コンテキスト情報は、バイナリ値、すなわち真(true)又は偽(false)の形とすることができる。例えば特定のコンテキストが、ユーザが運転しているかどうかに関連する場合、ユーザが運転していると判断されると、コンテキストの値は真である。そうでない場合、コンテキストの値は偽である。さらに、一部の実施形態では、コンテキスト情報は、実際の価値(real value)の形とすることができる。
【0018】
コンテキスト情報は、特定のコンテキスト・アウェア・アプリケーションによって要求される特定のターゲット・コンテキストを含むことができる。ターゲット・コンテキストを、ルールベースの推論のキャッシュ及びルールベースの取得プランナを使用して、コンテキスト取得システムにより決定することができる。ルールベースの推論のキャッシュを使用して、特定のターゲット・コンテキストに関連するコンテキスト・ルールを識別することができる。ここで、コンテキスト・ルールは、特定のターゲット・コンテキストの値を決定するための推論プロシージャを定義する論理式のツリーへと結合され得る。コンテキスト・ルールは、例えばユーザが屋外にいるかどうかを、ユーザが運転中であるか、自宅にいるか又は会議中であるかのような複数の他の条件に基づいて判断するために使用される、論理式を含むことができる。様々な実施形態では、コンテキスト・ルールは、特定のターゲット・コンテキストに応じて、例えばユーザが電話で話しているかどうかなどの一般的なものであってよく、あるいは例えば特定のユーザが特定の連絡相手と電話で話しているかどうかなどの特定的なものであってもよい。ルールベースの推論のキャッシュは、コンテキスト取得システムによって利用されるコンテキスト・ルールを作成するように構成されたコンテキスト・ルール・マイナを含むこともできる。さらに、ルールベースの取得プランナを使用して、ターゲット・コンテキストの推論値を取得するための検知プランを決定して実行することができる。推論値は、コンテキスト・ルールと、可能な複数の検知プロシージャのうちのいずれかから得られる検知されたコンテキストとの双方に基づくものとすることができる。
【0019】
予備的な事項として、図面の一部は、機能、特徴、モジュール、要素等と様々に呼ばれる1つ又は複数の構造的構成要素のコンテキストにおける概念を説明する。図面に示される様々な構成要素を、例えばソフトウェア、ハードウェア(例えば個別の論理構成要素等)、ファームウェア等によって又はこれらの実装の任意の組合せによって任意の手法で実装することができる。一実施形態では、様々な構成要素は、実際の実装における対応する構成要素の使用を反映してもよい。他の実施形態では、図面に示される任意の単一の構成要素を、複数の実際の構成要素によって実装することが可能である。図面における任意の2つ又はそれ以上の別個の構成要素の描写が、単一の実際の構成要素によって実行される異なる機能を反映してもよい。以下で検討される図1は、図に示す機能を実装するのに使用され得る1つのシステムに関する詳細を提供する。
【0020】
他の図は、フローチャート形式で概念を説明する。この形式では、ある動作が、ある順序で行われる別個のブロックを構成するものとして説明される。このような実装は例示であって、限定ではない。本明細書に記載される幾つかのブロックを一緒にまとめて単一の動作で実行することができ、幾つかのブロックを、複数の構成要素ブロックに分割することができ、また幾つかのブロックは、並列にブロックを実行することを含め、本明細書に示す順序とは異なる順序で実行されることも可能である。フローチャートに示されるブロックを、ソフトウェア、ハードウェア、ファームウェア、手動処理等又はこれらの実装の任意の組合せによって実装することができる。本明細書で使用されるとき、ハードウェアは、コンピュータ・システム、特定用途向け集積回路(ASIC)のような個別の論理構成要素等、並びにその組合せを含むことができる。
【0021】
用語に関して、「ように構成される」という文言は、特定された動作を実行するように任意の種類の機能を構築することができる任意の方法を含む。その機能は、例えばソフトウェア、ハードウェア、ファームウェア等又はその任意の組合せを使用して動作を実行するように構成されることが可能である。
【0022】
「論理」という用語は、タスクを実行するための任意の機能を含む。例えばフローチャートに示される各動作は、その動作を実行するための論理に対応する。動作は、例えばソフトウェア、ハードウェア、ファームウェア等又はその任意の組合せを使用して実行されることが可能である。
【0023】
本明細書で使用されるとき、「構成要素」、「システム」、「クライアント」等の用語は、コンピュータ関連のエンティティ、すなわちハードウェア、(例えば実行中の)ソフトウェア及び/又はファームウェアのいずれか、あるいはその組合せを指すように意図される。例えば構成要素は、プロセッサで実行中のプロセス、オブジェクト、実行ファイル、プログラム、関数、ライブラリ、サブルーチン及び/又はコンピュータ、あるいはソフトウェアとハードウェアの組合せとすることができる。
【0024】
例として、サーバで実行中のアプリケーションと、そのサーバの双方を構成要素とすることができる。1つ又は複数の構成要素がプロセス内に存在する可能性があり、1つの構成要素が、1つのコンピュータに局在化されるか、及び/又は2つ若しくはそれ以上のコンピュータ間で分散される可能性がある。「プロセッサ」という用語は、一般的に、コンピュータ・システムの処理ユニットのようなハードウェア構成要素を指すと理解される。
【0025】
さらに、特許請求に係る主題は、標準的なプログラミング及び/又はエンジニアリング技法を使用して方法、装置又は製品として実装されて、開示する主題を実装するようにコンピュータを制御するソフトウェア、ファームウェア、ハードウェア又はそのいずれかの組合せをもたらすことがある。本明細書で使用されるとき、「製品」という用語は、任意の非一時的なコンピュータ読取可能デバイス又は媒体からアクセス可能なコンピュータ・プログラムを含むように意図される。
【0026】
非一時的なコンピュータ読取可能媒体には、これらには限られないが、磁気記憶デバイス(例えば特に、ハードディスク、プロッピーディスク及び磁気ストライプ)、光ディスク(例えば特に、コンパクトディスク(CD)及びディジタル多用途ディスク(DVD))、スマートカード、及びフラッシュ・メモリ・デバイス(例えば特に、カード、スティック及びキー・ドライブ)が含まれ得る。対照的に、概してコンピュータ読取可能媒体は、無線信号等のための伝送媒体のような通信媒体を更に含むことがある(すなわち、必ずしも記憶媒体ではない)。
【0027】
図1は、ルールに基づくコンテキスト取得方法を実装し得る例示的システム100のブロック図である。ルールに基づくコンテキスト取得方法を使用して、コンテキスト・アウェア・アプリケーションを実行するコストを低減することができる。様々な実施形態において、システム100は、特に携帯電話、タブレット、携帯情報端末(PDA)、電子リーダ又はメディア・プレーヤのような、モバイル・コンピューティング・デバイス内に組み込まれることがある。さらに、一部の実施形態において、システム100は、コンピューティング・デバイスによって実行されるコンテキスト・アウェア・アプリケーション又はプログラムで使用するためのコンテキスト情報を検知することができる任意のタイプのコンピューティング・デバイスに組み込まれることもある。コンテキスト・アウェア・アプリケーションの一例は、ユーザが特定の場所にいるとき、ある特定のタスクを実行するようにユーザにリマインドするよう構成される「位置ベースのリマインダ」アプリケーションである。別の例は、ユーザが一日を通してどのくらいの運動を行うかをログに記録するように構成される「ランニング・トラッカー」アプリケーションである。さらに別の例は、ユーザの現在の位置、交通手段及びグループ化状態を利用して、ローカル検索の結果又は電話に配信されるクーポンを個人化するように構成される「ローカル検索/クーポン」アプリケーションである。
【0028】
システム100は、格納された命令を実行するように適合されたプロセッサ102並びにプロセッサ102によって実行可能な命令を格納するメモリ・デバイス104を含むことができる。プロセッサ102は、シングルコア・プロセッサ、マルチコア・プロセッサ、コンピューティング・クラスタ又は任意の数の他の構成とすることができる。メモリ・デバイス104は、ランダム・アクセス・メモリ(RAM)、読取専用メモリ(ROM)、フラッシュ・メモリ又は任意の他の適切なメモリ・システムを含むことがある。これらの命令は、コンテキスト・アウェア・アプリケーションによる使用のため、コンテキスト情報を取得するためにルールベースの方法を実行する。プロセッサ102は、バス106を介して1つ又は複数の入力デバイス及び出力デバイスに接続され得る。
【0029】
システム100はまた、コンテキスト・ルール110と、コンテキスト履歴112と、コンテキスト取得モジュール114とを格納するように適合された記憶デバイス108も含むことができる。コンテキスト・ルール110及びコンテキスト履歴112を使用して、様々なコンテキスト・アウェア・アプリケーションの関連するターゲット・コンテキストを効率的に取得することができる。さらに、コンテキスト取得モジュール114を使用して、このようなターゲット・コンテキストを取得するための方法を実行することができる。記憶デバイス108はまた、アプリケーション・プログラミング・インタフェース(API)116と、任意の数のアプリケーション118とを格納するようにも適合され得る。アプリケーション118は、API116を介して互いに通信するコンテキスト・アウェア・アプリケーションとすることができる。記憶デバイス108は、ハード・ドライブ、光学式ドライブ、サムドライブ、ドライブのアレイ又はその任意の組合せを含むことができる。
【0030】
システム100内のユーザ・インタフェース(UI)120は、システム100を、特にタッチスクリーン、スピーカ又はポインティング・デバイスのような任意の数のユーザ・インタフェース・デバイス122に接続することができる。システム100は、バス106を介して、システム100をディスプレイデバイス126に接続するのに適合されたディスプレイ・インタフェース124にリンクされることがあり、ディスプレイデバイス126は、特にコンピュータのモニタ又はモバイル・デバイスのディスプレイ画面を含むことができる。さらに、ネットワーク・インタフェース・コントローラ(NIC)128は、バス106を介してシステム100をネットワーク130に接続するように適合されることが可能である。ネットワーク130を通じて、ウェブベースのアプリケーション132をコンピュータの記憶デバイス108内にダウンロードし、格納することができる、又はウェブ・ブラウザを通じてこれにアクセスすることができる。様々な実施形態では、ウェブベースのアプリケーション132は、コンテキスト・アウェア・アプリケーションとすることができる。さらに、システム100による使用のために、ネットワーク130を介して電子テキスト及び画像ドキュメント134をダウンロードすることができる。
【0031】
図2は、コンピューティング・システム202内に実装され得るコンテキスト取得システム200の一実施形態である。コンピューティング・システム202のユーザは、コンテキスト取得システム200が固有のコンテキスト情報を決定することを許可することがある。様々な実施形態では、コンピューティング・システム202は、コンテキスト情報を検知してコンテキスト・アウェア・アプリケーション若しくはプログラムを実装するように構成されるモバイル・コンピューティング・デバイス内又は任意のタイプのコンピューティング・デバイス内に組み込まれることがある。例えば一部の実施形態では、コンピューティング・システム202は、図1に関して説明したシステム100とすることができる。さらに、コンテキスト取得システム200は、任意の数のコンテキスト・アウェア・アプリケーション204に通信可能に結合されることがある。コンテキスト取得システム200を使用して、ルールベースのコンテキスト取得プロシージャを通じて、コンテキスト・アウェア・アプリケーション204に所望のコンテキスト情報を提供することができる。
【0032】
様々な実施形態では、ルールベースのコンテキスト取得プロシージャは、コンテキスト取得システム200によって様々な構成要素を使用して実装され得る。このような構成要素には、特に、ルールベースの推論のキャッシュ206、コンテキスト・ルール・マイナ208、ルールベースの取得プランナ210、分類子格納モジュール212、生センサ・データのキャッシュ214が含まれ得る。ルールベースの推論のキャッシュ206を使用して、コンテキスト・ルールに基づいて所望のコンテキスト情報を推論しようと試みることができる。コンテキスト・ルールは、例えばユーザが運転中であるか、屋外にいるか、屋内にいるか、自宅にいるか又は会議中であるかのような、特定のターゲット・コンテキストの値を定義するのに使用される論理式を含むことができる。
【0033】
コンテキスト・ルールは、相関ルール・マイニング(association rule mining)アルゴリズムのような複数のデータ・マイニング・アルゴリズムのうちのいずれかを使用して導出され得る。例えば一部の実施形態では、相関ルール・マイニング技法を使用してコンテキスト・ルールを決定するのに、アプリオリ・アルゴリズム(Apriori algorithm)を用いることができる。さらに、このようなコンテキスト・ルールは、コンテキスト履歴に基づいてコンテキスト・ルール・マイナ208によって作成することができる。ここで、コンテキスト履歴は、コンテキスト取得プロシージャの以前のインスタンスからデータを検知することを含んでよい。さらに、コンテキスト・ルールは、コンテキスト取得システム200の開発者からの入力に応答して、あるいは一部の実施形態ではコンピューティング・システム202のユーザからの入力に応答して、コンテキスト・ルール・マイナ208によって作成されることもある。
【0034】
コンテキスト取得システム200は、コンテキスト・ルール・マイナ208内のコンテキスト・ルールを生成するために、コンテキスト・アウェア・アプリケーション204からの入力に依拠することがある。例えば様々な実施形態では、「put関数」216を使用して、コンテキスト履歴をコンテキスト取得システム200内に投入することができる。put関数216は、矢印218によって示されるように、ルールベースの推論のキャッシュ206において、特定のコンテキスト情報に関連する情報、並びにこのようなコンテキスト情報の対応する値を受け取ることを含むことができる。ルールベースの推論のキャッシュ206は、将来の利用のために、特定のコンテキスト情報の値を記録することができる。さらに、ルールベースの推論のキャッシュ206はまた、新しいコンテキスト・ルールの生成に使用される特定のコンテキスト情報の値を、コンテキスト・ルール・マイナ208へ送信することもできる。様々な実施形態では、put関数216から得られる特定のコンテキスト情報は、「コンテキスト履歴」と呼ばれることがある。
【0035】
ルールベースの推論のキャッシュ206は、「get関数」220に応答してコンテキスト取得プロシージャを開始することができる。get関数220は、矢印218によって示されるように、ルールベースの推論のキャッシュ206においてコンテキスト・アウェア・アプリケーション204からの特定のコンテキスト情報の要求を受け取ることを含むことができる。get関数220は、所望のコンテキスト情報又は「ターゲット・コンテキスト」に関連する情報を含むことができる。ルールベースの推論のキャッシュ206は、ターゲット・コンテキストの値がルールベースの推論のキャッシュ206内に既に存在するかどうかを判断するために、ローカル・ファイルを検索することができる。ターゲット・コンテキストの正確な値がルールベースの推論のキャッシュ206内で識別される場合、これはコンテキスト・アウェア・アプリケーション204に自動的に返される。しかしながら、ターゲット・コンテキストの正確な値がルールベースの推論のキャッシュ206内で見つからない場合、ルールベースの推論のキャッシュ206は、矢印222によって示されるように、コンテキスト・ルール・マイナ208に直接問い合わせて、適切なコンテキスト・ルールがターゲット・コンテキストを取得するために利用可能であるかどうかを判断することができる。さらに、ルールベースの推論のキャッシュ206は、矢印224によって示されるように、ターゲット・コンテキストの要求を、ルールベースの取得プランナ210に転送することもできる。
【0036】
ルールベースの取得プランナ210は、コンテキスト履歴と、コンピューティング・システム内の利用可能なセンサとに基づいて特定のターゲット・コンテキストを取得するためのプランを展開することができる。ルールベースの取得プランナ210は、コンテキスト・ルール・マイナ208に通信可能に結合され、矢印226によって示されるように、ターゲット・コンテキストに関連するコンテキスト・ルールを得るためにコンテキスト・ルール・マイナ208と通信することができる。ルールベースの取得プランナ210は、ターゲット・コンテキストを取得する検知プランを作成するため、適切なコンテキスト・ルールを使用することができる。一部の実施形態では、矢印228によって示されるように、検知プランを分類子格納モジュール212に送信し、これにより、検知プランによって指定された各検知プロシージャについて、対応する分類子を識別することができる。例えば検知プランによって指定される分類子は、「Is Walking」分類子230又は「Is At Home」分類子232とすることができる。さらに、分類子格納モジュール212は、様々なコンテキスト情報に関連する分類子のライブラリを含むことができる。
【0037】
分類子格納モジュール212及び生センサ・データのキャッシュ214は、矢印234によって示されるように、通信可能に結合され、分類子に関連する情報を交換するように構成され得る。例えば適切な分類子を、分類子格納モジュール212から生センサ・データのキャッシュ214へ送信することができる。生センサ・データのキャッシュ214は、要求された検知プロシージャの結果が、キャッシュ214内に既に含まれているかどうかを判断することができる。要求された検知プロシージャの結果が見つかった場合、この結果は、ルールベースの取得プランナ210に返され、検知プランの次のステップを決定するのに使用され得る。しかしながら、要求された検知プロシージャの結果が見つからない場合、コンピューティング・システム202は、様々なセンサのいずれかを用いて、特定の分類子に関連するコンテキスト情報を得ることができる。例えばIs Walking分類子230がルールベースの取得プランナ210によって指定されている場合、加速度計又は全地球測位システム(GPS)を調べて、コンピューティング・システム202のユーザが歩行中であるかどうかを推定することができる。別の例として、Is At Home分類子232が指定されている場合、マイクロフォン、GPS又は加速度計を調べて、コンピューティング・システム202のユーザが自宅にいるかどうかを推定することができる。さらに、様々な実施形態では、分類子格納モジュール212又は生センサ・データのキャッシュ214又はその双方が、ルールベースの取得プランナ210内に含まれることがある。
【0038】
様々な実施形態において、ターゲット・コンテキストの値がコンテキスト取得システム200によって決定されると、この値は、get関数220を開始したコンテキスト・アウェア・アプリケーション204に返されることがある。ターゲット・コンテキストは、コンテキスト・アウェア・アプリケーション204の機能を助けるのに用いられることがあり、コンテキスト・アウェア・アプリケーション204が動的なフィードバックをコンピューティング・システム202のユーザに提供できるようにすることができる。さらに、コンテキスト・アウェア・アプリケーション204の挙動は、特定のアプリケーション又は環境に従ってターゲット・コンテキストの値に応じて変更されることがある。
【0039】
コンテキスト取得システム200は、図2に示される構成に限定されないことを理解されたい。むしろ、コンテキスト取得システム200の構成要素は、複数の可能な構成のいずれかの構成で配置されてよい。例えば様々な実施形態では、コンテキスト・ルール・マイナ208を、ルールベースの推論のキャッシュ206内に含めることができる。一部の実施形態において、put関数216及びget関数220は、アプリケーション・プログラミング・インタフェース(API)を介してコンピューティング・システム202内に実装され得る。さらに、図2に関して述べたコンテキスト取得システム200の構成要素の必ずしもすべてが、あらゆる場合に存在するというわけではなく、任意の数の追加構成要素がシステム200内に含まれることがある。
【0040】
図3は、コンテキスト情報を推論するためのルールを作成するのにコンテキスト取得システム200内で使用され得る、コンテキスト・ルール・マイナ208の一実施形態である。同じ番号の項目は、図2に関して述べた通りである。コンテキスト・ルール・マイナ208を使用して、コンピューティング・システム202によって得られるコンテキスト情報に関連する様々なコンテキスト・ルール300を作成することができる。このようなコンテキスト情報をコンテキスト履歴302と呼ぶことができる。コンテキスト履歴302を、コンピューティング・システム202によって、特にGPS、加速度計、マイクロフォン、Wi−Fi接続又はタッチスクリーンを含む、様々なセンサのいずれかを使用して得ることができる。さらに、様々な実施形態では、コンテキスト履歴302は、矢印304によって示されるように、コンテキスト・ルール・マイナ208の入力とすることができ、コンテキスト・ルール300は、矢印306によって示されるようにコンテキスト・ルール・マイナ208の出力とすることができる。
【0041】
さらに、一部の実施形態では、コンテキスト・ルール300は、コンテキスト・ルール・マイナ208によって、コンテキスト取得システム200の開発者の入力に応答して、あるいはコンピューティング・システム202のユーザからの直接入力に応答して作成され得る。コンテキスト取得システム200の開発者によってプログラムされるコンテキスト・ルールは、「汎用コンテキスト・ルール(universal context rule)」と呼ばれ、特定のユーザの入力に応じて作成されるルールは、「個人コンテキスト・ルール(personal context rule)」と呼ばれることがある。さらに、様々な実施形態において、特定のコンピューティング・システムは、製造工程中に汎用コンテキスト・ルールを用いてブーストトラップされることがあり、個人コンテキスト・ルールは、そのコンピューティング・システムによって、ユーザの特徴、環境又は好みが確立されるにつれて時間とともに学習されることがある。
【0042】
図4は、推論によるコンテキスト情報を提供するためにコンテキスト取得システム200内で使用され得るルールベースの推論のキャッシュ206の一実施形態である。同じ番号の項目は、図2及び図3に関して述べた通りである。図2に関して述べたように、ルールベースの推論のキャッシュ206は、矢印400によって示されるように、put関数216から得られるコンテキスト情報を用いることができる。このようなコンテキスト情報には、コンピューティング・システム202内で見つかった複数のセンサのいずれかから取得される、検知コンテキスト402を含むことができる。様々な実施形態では、検知コンテキスト402の値は、矢印406によって示されるように、推論エンジン404内に格納され、これにより、同じ値を有する後続のターゲット・コンテキストを自動的に返すことが可能になる。さらに、検知コンテキスト402は、矢印408によって示されるように、ルールベースの推論のキャッシュ206内にコンテキスト履歴302として格納され得る。様々な実施形態では、コンテキスト・ルール・マイナ208は、ルールベースの推論のキャッシュ206内に組み込まれることがあり、矢印410によって示されるようにコンテキスト履歴302を入力として直接受け取り、矢印412によって示されるようにコンテキスト・ルール300を出力として作成することができる。
【0043】
図2に関連して述べたように、ルールベースの推論のキャッシュ206は、get関数220から得られる特定のターゲット・コンテキストの要求に応答してコンテキスト取得プロシージャを開始することができる。様々な実施形態では、get関数220は、矢印414によって示されるように、特定のターゲット・コンテキストの要求をルールベースの推論のキャッシュ206へ直接送信することができる。ルールベースの推論のキャッシュ206は、検知されたコンテキストを検索して、ターゲット・コンテキストの正確な値が既に得られたかどうかを判断することができる。ターゲット・コンテキストの正確な値が見つからない場合、ルールベースの推論のキャッシュ206は、要求を推論エンジン404に転送することができる。様々な実施形態において、推論エンジン404は、矢印416によって示されるように、コンテキスト・ルール・マイナ208によって生成されるコンテキスト・ルール300を利用するように構成され得る。推論エンジン404を使用して、矢印420によって示されるように、コンテキスト・ルール300と検知されたコンテキスト402とに基づいて、推論コンテキスト418を生成することができる。様々な実施形態において、推論コンテキスト418は、ターゲット・コンテキストの推論値に等しい可能性がある。さらに、推論エンジン404によって生成される推論コンテキスト418は、矢印422によって示されるように、get関数220によって要求されるターゲット・コンテキストの値として出力され得る。
【0044】
様々な実施形態において、ルールベースの推論のキャッシュ206は、コンテキスト・ルール・マイナ208によって生成されるコンテキスト・ルール300を使用して、可能な各コンテキスト値について特定のコンテキスト・ルールを定義する、論理式又は論理演算のツリーを作成することができる。例えば特定の論理式のツリーは、ターゲット・コンテキストの特定の推論値に対するコンテキスト・ルールを指定することができる。各論理式のツリーは、複数の関連するコンテキスト・ルール300の組合せを含むことができる。さらに、論理式のツリーは、ブール式に基づくものとすることができ、ブール式は、評価されるとき真(true)又は偽(false)の値を生成する論理式である。一部の実施形態では、論理式のツリーは、図5に関して以下に述べるように、AND/ORツリーとすることができる。
【0045】
図5は、特定のコンテキスト情報を推論するためのルールを定義するために、ルールベースの推論のキャッシュ206によって利用可能であるAND/ORツリー500の概略図である。同じ番号の項目は、図2図3及び図4に関して述べた通りである。AND/ORツリー500を使用して、「Indoor(屋内):True」というターゲット・コンテキスト値502を定義することができ、Indoor:Trueというターゲット・コンテキスト値502は、ユーザが屋内にいることを示す。しかしながら、ルールベースの推論のキャッシュは、各ターゲット・コンテキスト値について同様のAND/ORツリーを含んでもよい。例えば「Indoor:False」というターゲット・コンテキスト値に対して別個のAND/ORツリーが存在し得る。
【0046】
AND/ORツリー500は、論理演算に基づいてIndoor:Trueというターゲット・コンテキスト値502の論理定義を提供することができる。論理演算は、AND演算子504及びOR演算子506を含む、論理演算子を使用して実行され得る。AND演算子504は、2つの可能な値の双方について肯定的、すなわち「真」の結果が、AND演算の肯定的、すなわち真の結果を確立することを示すことができる。例えば「Driving(運転中):False」というコンテキスト値508及び「Walking(歩行中):False」というコンテキスト値510は、AND演算の肯定的な結果を構成する。別の例として、「Alone(1人):False」というコンテキスト値512及び「Walking:False」というコンテキスト値514もまた、図5に示すように、AND演算の肯定的な結果を構成することができる。
【0047】
OR演算子506は、2つまたはそれ以上の可能な値のいずれかに対する肯定的すなわち真の結果が、OR演算に対する肯定的すなわち真の結果を確立することを示すことができる。したがって、OR演算子506から分岐している可能なコンテキスト値のうちの1つが真である場合、Indoor:Trueというターゲット・コンテキスト値502もまた真であることが確認され得る。例えばIndoor:Trueというコンテキスト値516が真である場合、Indoor:Trueというターゲット・コンテキスト値502は真であるという結果になる。さらに、「At Home(自宅にいる):True」というコンテキスト値518、「In Meeting(会議中):True」というコンテキスト値520又は「In Office(オフィスにいる):True」というコンテキスト値522が真である場合、Indoor:Trueというターゲット・コンテキスト値502もまた真であると推論することができる。この推論は、ユーザが自宅にいる、会議中である又はオフィスにいるということと、屋外にいるということは、同時にはありそうにない又はあり得ないという事実に基づくことができる。したがって、ユーザは屋内にいる(indoor)と推論することができる。さらに、ユーザは、ユーザが運転中でもなく歩行中でもないか、又は1人でもなく歩行中でもない場合も、屋内にいると推論され得る。
【0048】
様々な実施形態では、AND/ORツリー500を、特定の個人及び各ユーザの環境特性に合わせることができる。さらに、AND/ORツリー500内の一部の論理要素を、普遍的であると想定することができ、いずれかの検知されるコンテキスト402の収集の前にユーザのコンピューティング・デバイスにあらかじめプログラムすることができる。例えばユーザが運転中である場合、ユーザが歩行中でもあることはないと普遍的に想定され得る。
【0049】
一部の実施形態では、AND/ORツリー500のような論理式のツリーを正規化して、短縮バージョンの論理式のツリーを作成することができる。例えばブール式の標準的なルールを利用して、論理式のツリー内の冗長を取り除くことができる。これは、論理式のツリー内でANDレベルとORレベルを交互にすることによって、あるいは論理式のツリー内で冗長式を吸収するか又は折り畳むことによって、実現され得る。
【0050】
図6は、コンテキスト情報を取得するための検知プランを作成するコンテキスト取得システム200内で使用され得るルールベースの取得プランナ210の一実施形態である。同じ番号の項目は、図2図3図4及び図5に関して述べた通りである。ルールベースの取得プランナ210は、ルールベースの推論のキャッシュ206から又は直接コンテキスト・アウェア・アプリケーション204から、特定のターゲット・コンテキスト600の要求を受け取ることができる。さらに、ルールベースの取得プランナ210は、キャッシュされたセンサ・データ602、キャッシュされたコンテキスト604、コンテキスト履歴302、検知コスト606又はコンテキスト・ルール300、又はそのいずれかの組合せのような様々な入力を受け取ることができる。キャッシュされたセンサ・データ602は、put関数216の複数のインスタンスから得られる検知されたコンテキスト402に関連する格納されたデータを含むことができる。キャッシュされたコンテキスト604は、get関数220の複数のインスタンスから得られる推論されたコンテキスト418に関連するデータを含むことができる。検知コスト606は、様々な可能な検知プロシージャのそれぞれの計算コスト又はバッテリコストを含むことがある。さらに、各センサは、指定された動作コストを有することがある。様々な実施形態では、例えばGPSセンサの計算コストは、マイクロフォン・センサの計算コストよりも高い可能性がある。
【0051】
ルールベースの取得プランナ210は、動的な検知プランを提供するために、条件付きプランニング技法を利用することがある。一部の実施形態では、ルールベースの取得プランナ210は、例えば相関ルール・マイニング・アルゴリズムのような動的プログラミングに基づくソリューションに従って、検知プランを展開することができる。検知プランは、ルールベースの取得プランナ210に通信可能に結合された検知プラン実行モジュール608によって実装され得る。検知プラン実行モジュール608は、コンピューティング・システム202内の検知プロシージャを実行するように構成され得る。検知プロシージャには、例えばGPSデバイスを使用してGPS位置を決定すること、加速度計を使用して加速度を測定すること又はマイクロフォンを使用して室内に複数の人々がいるかどうかを判断することが含まれる。
【0052】
さらに、条件付きプランニング技法は、「次のテスト(next test)」関数610を含むことがあり、次のテスト関数610は、検知プランの次のステップを指定することができる。一部の実施形態では、検知プランの各ステップを、検知コスト606と、コンテキスト・ルール300と検知プランの前のステップの結果とに基づいて、ルールベースの取得プランナ210によって決定することができる。検知プランの前のステップの結果は、「テスト結果(test result)」関数612によってルールベースの取得プランナ210に提供されることがある。さらに、キャッシュされたセンサ・データ602、キャッシュされたコンテキスト604又はコンテキスト履歴302、又はそのいずれかの組合せを、ルールベースの取得プランナ210によって利用して、検知プランの各ステップを決定することもできる。一部の実施形態では、次のテスト関数610及び次の結果関数612は、検知プラン実行モジュール608によって実行されることがある。
【0053】
図7は、モバイル・コンピューティング環境内におけるルールに基づくコンテキスト取得の方法700を示すプロセス・フロー図である。モバイル・コンピューティング環境は、コンテキスト・アウェア・アプリケーション又はプログラムを実行することができる任意のタイプのモバイル・デバイス又はシステムを含んでよい。さらに、一部の実施形態では、方法700は、特に家庭内のコンピューティング・システム、テレビ又はデスクトップ・コンピュータのような、非モバイル・コンピューティング環境内におけるルールに基づくコンテキスト取得に使用することができる。
【0054】
様々な実施形態において、方法700に従って取得又は推論され得るコンテキストは、特定のユーザの環境、特徴又は好みに関連する任意のタイプの非決定的な、すなわち可変の情報を含むことがある。方法700を使用して、特定のアプリケーションに所望のターゲット・コンテキストを提供することができる。例えばアプリケーションが、ユーザが屋内にいるか屋外にいるか、自宅にいるか会議中であるか、あるいは運転中であるか歩行中であるかを知りたいことがある。アプリケーションは、各特定のターゲット・コンテキストの要求を送信することによって、方法700に従ってこのようなコンテキスト情報を取得することができる。例えばあるターゲット・コンテキストは、ユーザが屋外にいるかどうかについてのものとし、別のターゲット・コンテキストは、ユーザが会議中であるかどうかについてのものとすることができる。さらに、各ターゲット・コンテキストの値は、真又は偽とすることができる。例えばユーザが屋外にいる場合、対応するターゲット・コンテキストの値を真とすることができる。様々な実施形態では、方法700は、ターゲット・コンテキストの正確な値を利用できないことがあるので、ターゲット・コンテキストの推論値を生成することがある。ターゲット・コンテキストの推論値は、ターゲット・コンテキストに関連する特定のコンテキスト・ルールに基づくものとすることができる。
【0055】
方法700はブロック702で開始し、ブロック702では、コンテキスト取得システムにおいてアプリケーションからターゲット・コンテキストの要求を受け取る。この要求は、アプリケーションが望む特定のターゲット・コンテキストを指定することがある。様々な実施形態において、アプリケーションは、アプリケーション・プログラミング・インタフェース(API)を介してコンテキスト取得システムと通信することができる。APIを、モバイル・コンピューティング環境内に格納することができる。具体的には、アプリケーションは、APIを介して、ルールベースの推論のキャッシュ又はルールベースの取得プランナ、又はその双方と直接に通信することができる。
【0056】
ブロック704において、ターゲット・コンテキストに関連するコンテキスト・ルールが、ルールベースの推論のキャッシュを使用して識別され得る。ターゲット・コンテキストに関連するコンテキスト・ルールは、コンテキスト・ルール・マイナによって生成され、かつルールベースの推論のキャッシュによってターゲット・コンテキストに関するコンテキスト・ルールのそれぞれの間の関係に従って編成される、複数のコンテキスト・ルールを含むことがある。さらに、ルールベースの推論のキャッシュは、コンテキスト取得システム内の構成要素とすることができ、コンテキスト・ルール・マイナ及び推論エンジンを含むことができる。コンテキスト・ルール・マイナを使用して、コンテキスト履歴に基づいてコンテキスト・ルールを生成することができ、コンテキスト履歴は、検知されたコンテキストを使用して決定されることがある。検知されたコンテキストは、検知プロシージャから得られたデータを含むことができる。様々な実施形態では、検知プロシージャは、モバイル・コンピューティング環境内のセンサの使用を含む任意のプロシージャを含むことができる。センサの例には、特にGPSデバイス、加速度計、スピーカ、マイクロフォン、タッチスクリーン、カメラ、光インジケータ又はWi−Fi接続が含まれる。
【0057】
一部の実施形態において、ルールベースの推論のキャッシュは、コンテキスト・ルール・マイナによって生成されたコンテキスト・ルールを利用して、可能な各ターゲット・コンテキストの論理式のツリーを作成することができる。論理式のツリーは、論理演算に基づいて特定のターゲット・コンテキストを定義するフローチャートとすることができる。論理演算を使用して、推論に基づいてターゲット・コンテキストの値を決定することができる。ターゲット・コンテキストの値を推論することで、実行される検知プロシージャの数を減らすことによって、ターゲット・コンテキストを決定するための計算コスト又はバッテリコストを低減することができる。一部の実施形態では、ターゲット・コンテキストの正確な値がルールベースの推論のキャッシュ内に含まれる場合、正確な値をアプリケーションに自動的に返すことができる。
【0058】
ブロック706において、ターゲット・コンテキストの推論値を、以前取得したコンテキスト及びターゲット・コンテキストに関連するコンテキスト・ルールに基づいて決定することができる。以前取得したコンテキストには、例えばコンテキスト履歴と、開発者によって組み込まれたあらかじめプログラムされたコンテキストとが含まれる。いずれの検知プロシージャも実行することなくターゲット・コンテキストの推論値を得ることができる場合、方法700はブロック706において終了し、ターゲット・コンテキストの推論値をアプリケーションに返すことができる。一部の実施形態において、ターゲット・コンテキストの正確な値又は推論値は、コンテキスト取得システムからアプリケーションへAPIを介して送信され得る。しかしながら、ターゲット・コンテキストの正確な値又は推論値が、ルールベースの推論のキャッシュによって直接決定されない場合、方法700はブロック708において継続する。
【0059】
ブロック708において、検知プランの第1のステップが、ルールベースの取得プランナによって実行され得る。検知プランの第1のステップを、ターゲット・コンテキストに関連するコンテキスト・ルール又はコスト、又はその任意の組合せに基づいて決定することができる。コストは、計算コスト、又はターゲット・コンテキストに関連するセンサ・データを取得するエネルギー若しくはバッテリコストを含むことがある。第1のステップは、ターゲット・コンテキストに関連するセンサ・データを獲得するために実行され得る第1の検知プロシージャを含むことがある。さらに、第1のステップは、ターゲット・コンテキストの推論値を得る可能性を高めるように、ターゲット・コンテキストに関連する特定されたコンテキスト・ルールを増補することができるように選択され得る。さらに、第1のステップは、少なくとも部分的に、いずれの検知プロシージャが低コストであるかに従って選択され得る。様々な実施形態では、ターゲット・コンテキストの推論値が、検知プランの第1のステップから決定される場合、推論値をアプリケーションに返すことができる。そうでない場合、方法700はブロック710において継続する。
【0060】
ブロック710において、ターゲット・コンテキストの推論値が得られるまで、ルールベースの取得プランナによって、検知プランの複数の後続ステップのいずれかを実行することができる。各ステップは、モバイル・コンピューティング環境又はコンピューティング・デバイス内で実装される複数のセンサのいずれかを使用してターゲット・コンテキストに関連する検知されたコンテキストを獲得するために実行され得る、検知プロシージャを含んでよい。各後続ステップを、ターゲット・コンテキストに関連するコンテキスト・ルール、コスト、又は検知プランの前のステップの結果、又はその任意の組合せに基づいて、個々に決定することができる。一部の実施形態では、例えばターゲット・コンテキストの論理式のツリーを利用して、検知プランの次のステップを決定することができる。各々の前のステップの結果は、ルールベースの取得プランナによって、ターゲット・コンテキストの推論値を得る可能性を高めるように、前の検知プロシージャからのセンサ・データを増補する次の検知プロシージャを決定するために使用され得る。さらに、一部の実施形態では、最も低コストのステップから始まる昇順のコストに従ってステップが実行されるように、検知プランの第1のステップ及び後続ステップを選択することができる。
【0061】
様々な実施形態において、コンテキスト取得システムは、検知プランの各ステップの後にターゲット・コンテキストの推論値を決定しようと試みることがある。さらに、ルールベースの取得プランナは、推論値が決定されるまで検知プランの次のステップを生成し続けることができる。推論値が得られると、方法700のインスタンスを開始したアプリケーションに、この推定値を出力することができる。
【0062】
一部の実施形態では、検知プランの2つの連続したステップ、例えば第1のステップ及び第2のステップが、指定された時間枠内で実行される場合、これらのステップは並列であるか又は同時に起こると考えることができる。指定された時間枠を「バスケット・サイズ」と呼ぶことができる。バスケット・サイズを、特定のターゲット・コンテキストに従って又はステップによって指定された特定の検知プロシージャに従って、動的に変更してもよい。例えばユーザが過去5分以内に歩行していた場合、ユーザは歩行中であると推論され得る。しかしながら、ユーザが過去5分以内に電話で話していたからといって、ユーザが電話で話し中であると推論されないことがある。
【0063】
様々な実施形態では、ルールベースの取得プランナは、次の擬似コードに基づいて検知プランの各ステップを決定することができる:
上記の擬似コードによると、「Init(X)」プロシージャを利用して、所望のターゲット属性又はターゲット・コンテキスト Xを求めて、ルールベースの取得プランナを開始する(initiate)ことができる。検知プランのトレースは、「Update」プロシージャを使用して、検知プランの前のステップの検知されたコンテキスト(attrib)の戻り値を含むように更新され得る。次いで「Next」プロシージャを使用して、検知されたコンテキスト(attrib)の戻り値と、次のステップを取得するコスト(cost)とに基づいて検知プランの次のステップを決定することができる。さらに、「NextHelper」プロシージャが、検知プランの次のステップを決定するのを助けるのに使用される。特定の検知されたコンテキストの状態(s)を決定するのに使用することができる可能なステップのそれぞれに対して、「NextHelper」プロシージャを使用して、特定のトレースの値が既にわかっていて、キャッシュ内にあるかどうかを判断することができる。トレースの値がわかっている場合、トレースによって定義されるターゲット・コンテキストを決定するコストはゼロである。反対に、トレースの値がわかっていない場合、「NextHelper」プロシージャは、検知プロシージャに基づいて、最も低コスト(minCost)で最も有益な検知されたコンテキスト(bestAttrib)を生じると予測される検知プランの次のステップを決定することができる。様々な実施形態において、ルールベースの取得プランナは、ターゲット・コンテキストの式のツリーが満たされ、ターゲット・コンテキストが推論され得るまで、検知プランのステップを継続的に計画し、実行することができる。
【0064】
方法700は、方法700のステップがいずれかの特定の順序で行われなければならないこと、あるいはあらゆる場合に全てのステップが含まれなければならないことを示すように意図されていない。さらに、具体的な適用に従って、方法700にステップを追加してもよい。例えば一部の実施形態では、方法700を単純化するために、冗長なコンテキスト・ルールが、ルールベースの推論のキャッシュ内で抑制されてもよい。このような冗長なルールの抑制は、特定のターゲット・コンテキストの論理式のツリーから特定の論理式又は演算を削除することによって実現され得る。さらに、論理式のツリーを、ルールベースの推論のキャッシュ内のコンテキスト・ルール・マイナによって生成された新しいコンテキスト・ルールに従って、連続的に又は定期的に更新又は変更することができる。
【0065】
図8は、コンピューティング環境内のコンテキスト・アウェア・アプリケーションによって使用されるコンテキスト情報を取得するように構成されたコードを格納する有形のコンピュータ読取可能媒体800を示すブロック図である。有形のコンピュータ読取可能媒体800は、プロセッサ802によってコンピュータ・バス804を通じてアクセスされ得る。さらに、有形のコンピュータ読取可能媒体800は、プロセッサ802にこの方法のステップを実行させるように構成されたコードを含むことができる。本明細書で説明される様々なソフトウェア構成要素は、図8に示されるように、有形のコンピュータ読取可能媒体800に格納され得る。例えばコンテキスト取得モジュール806は、複数のコンテキスト・ルールのいずれかに基づいてコンテキスト情報を推論するか、又はルールベースの取得プランに基づいてコンテキスト情報を取得するための方法を実行するように構成され得る。様々な実施形態において、ルールベースの取得プランは、推論と検知技法の双方に依拠して、所望のコンテキスト情報を効率的に決定することができる。さらに、有形のコンピュータ読取可能媒体800は、図8には示されていない任意の数の追加ソフトウェア構成要素を含むこともできる。
【0066】
図9は、コンテキスト取得システム200の例示的実施形態のブロック図である。同じ番号の項目は、図2及び図3に関して述べた通りである。様々な実施形態において、図3に関して述べたコンテキスト・ルール・マイナ208は、コンテキスト履歴302及びコンテキスト・ルール300を格納するように構成される記憶デバイス又はメモリ・デバイスを含むことがある。コンテキスト・ルール・マイナ208は、ブロック900によって示されるように、マイニングプロシージャを実行することによって、コンテキスト履歴302を利用してコンテキスト・ルール300を生成するように構成され得る。
【0067】
様々な実施形態において、get関数220は、図2に関して述べたように、ルールベースの推論のキャッシュ206においてコンテキスト・アウェア・アプリケーション204から特定のコンテキスト情報の要求を受け取ることを含み得る。ブロック902において、ルールベースの推論のキャッシュ206は、所望のターゲット・コンテキストがキャッシュ904に置かれているかどうかを判断することができる。ターゲット・コンテキストがキャッシュ904内で見つかる場合、このターゲット・コンテキストを結果906として出力することができる。一部の実施形態では、結果906は、ターゲット・コンテキストを要求した特定のコンテキスト・アウェア・アプリケーション204へ直接送信され得る。
【0068】
ターゲット・コンテキストが、キャッシュ904内で見つからない場合、ルールベースの推論のキャッシュ206は、ブロック908において、キャッシュ904及びコンテキスト・ルール300からターゲット・コンテキストを推論しようと試みることができる。ブロック910において、ルールベースの推論のキャッシュ206は、所望のターゲット・コンテキストがブロック908において正常に推論されたかどうかを判断することができる。ターゲット・コンテキストが推論された場合、ターゲット・コンテキストを結果906として出力することができる。
【0069】
ターゲット・コンテキストが推論されていない場合、ブロック912において、ルールベースの取得プランナ210内でプロキシ・センサを選択し、これを使用して検知プランのステップを行う。様々な実施形態では、ブロック912において、センサ、分類子及びコスト914、並びにコンテキスト・ルール300を使用して、プロキシ・センサを決定することができる。検知プランのステップの出力は、コンテキスト取得システム200の次のインスタンスのための追加のコンテキスト情報として使用されるように、キャッシュ904に送信することができる。
【0070】
ブロック916において、ルールベースの推論のキャッシュ206は、所望のターゲット・コンテキストの値が検知プランのステップから正常に決定されたかどうかを判断することができる。ターゲット・コンテキストが決定された場合、ターゲット・コンテキストを結果906として出力することができる。ターゲット・コンテキストが決定されない場合、ブロック912において、ルールベースの取得プランナ210内で次のプロキシ・センサを選択し、これを使用して検知プランの次のステップを行うことができる。ターゲット・コンテキストがコンテキスト取得システム200によって正常に決定されるまで、検知プランの任意の数のステップに対してこれを繰り返すことができる。
【0071】
本主題を、構造的特徴及び/又は方法論的動作に特有の言語で説明してきたが、添付の特許請求の範囲において定義される主題は、そのような具体的な特徴又は動作に必ずしも限定されないことを理解されたい。むしろ、上述の具体的な特徴及び動作は、特許請求の範囲を実装する例示的な形態として開示されている。
図1
図2
図3
図4
図5
図6
図7
図8
図9