(57)【特許請求の範囲】
【請求項１】
１つまたは複数のプロセッサと、該１つまたは複数のプロセッサに動作可能に結合されるメモリと、該メモリにロード可能であって前記１つまたは複数のプロセッサ上で実行可能な１つまたは複数のアプリケーションおよびプログラムと、１つまたは複数の入力デバイスとを備えたコンピューティングデバイスの操作方法であって、前記１つまたは複数のプロセッサが前記メモリにロードされた前記プログラムを実行するときに、前記操作方法は、
前記１つまたは複数のプロセッサが、現在のデバイスロケーションに関係するロケーション情報を、前記コンピューティングデバイスの前記１つまたは複数の入力デバイスから、またはネットワークを介して受け取るステップ、
前記１つまたは複数のプロセッサが、前記ロケーション情報を前記メモリ内に記憶するステップ、
前記１つまたは複数のプロセッサが、前記ロケーション情報を用いて現在のロケーションを自動的に決定するステップであって、該自動的に決定するステップは、
前記メモリ上に記憶された１つまたは複数の階層型走査可能ツリー構造を提供することであって、該ツリー構造は、個々のノードを含み、該個々のノードは、デバイスロケーションに関連付けられ、かつノード固有のエンティティＩＤ（ＥＩＤ）を有し、該ＥＩＤは、前記個々のノードに関連付けられた商品またはサービスに、属性を割り当てることのできる基盤として働くこと、および、
前記ツリー構造の少なくとも１つの上にある少なくとも１つのノードを走査して前記現在のロケーションを前記メモリに提供すること
を含むステップ、
前記１つまたは複数のプロセッサが、前記現在のロケーションについて、前記メモリ上に記憶されたポリシー集合をローカルに評価して、該評価の結果、前記ポリシー集合の中から得られたポリシーセットを前記メモリに提供するステップ、および、
前記１つまたは複数のプロセッサが、前記得られたポリシーセットを、前記１つまたは複数のプロセッサ上で実行可能な前記１つまたは複数のアプリケーションに対して施行するステップ
を備えることを特徴とするコンピューティングデバイスの操作方法。
【請求項２】
請求項１のコンピューティングデバイスの操作方法において、
前記１つまたは複数のプロセッサが、得られたポリシーセットを前記メモリに前記提供するステップの前に、様々な複数のポリシーソースから前記ポリシーを受け取るステップ
をさらに備えることを特徴とするコンピューティングデバイスの操作方法。
【請求項３】
１つまたは複数のプロセッサと、該１つまたは複数のプロセッサに動作可能に結合されるメモリと、該メモリにロード可能であって前記１つまたは複数のプロセッサ上で実行可能な１つまたは複数のアプリケーションおよびプログラムと、１つまたは複数の入力デバイスとを備えたコンピューティングデバイスの操作方法であって、前記１つまたは複数のプロセッサが前記メモリにロードされた前記プログラムを実行するときに、前記操作方法は、
前記１つまたは複数のプロセッサが、現在のデバイスロケーションに関係するロケーション情報を、前記コンピューティングデバイスの前記１つまたは複数の入力デバイスから、またはネットワークを介して受け取るステップ、
前記１つまたは複数のプロセッサが、前記ロケーション情報を前記メモリ内に記憶するステップ、
前記１つまたは複数のプロセッサが、前記ロケーション情報を用いて現在のロケーションを自動的に決定するステップであって、該自動的に決定するステップは、
前記メモリ上に記憶された１つまたは複数の階層型走査可能ツリー構造を提供することであって、該ツリー構造は、個々のノードを含み、該個々のノードは、デバイスロケーションに関連付けられ、かつノード固有のエンティティＩＤ（ＥＩＤ）を有し、該ＥＩＤは、前記個々のノードに関連付けられた商品またはサービスに、属性を割り当てることのできる基盤として働くこと、および、
前記ツリー構造の少なくとも１つの上にある少なくとも１つのノードを走査して前記現在のロケーションを前記メモリに提供すること
を含むステップ、
前記１つまたは複数のプロセッサが、前記現在のロケーションについて、前記メモリ上に記憶されたポリシー集合をローカルに評価して、該評価の結果、前記ポリシー集合の中から得られたポリシーセットを前記メモリに提供するステップ、
前記１つまたは複数のプロセッサが、前記得られたポリシーセットを、前記１つまたは複数のプロセッサ上で実行可能な前記１つまたは複数のアプリケーションに対して施行するステップ、
前記１つまたは複数のプロセッサが、前記コンピューティングデバイスの現在のロケーションが変化したかどうかを判定し、該コンピューティングデバイスの現在のロケーションが変化した場合は、前記自動的に決定するステップに従って、受信したロケーション情報を用いて新しい現在のロケーションを自動的に再度決定するステップ、
前記１つまたは複数のプロセッサが、前記新しい現在のロケーションを決定するのに応答して、前記ポリシー集合をローカルに再評価して、該再評価の結果、前記新しい現在のロケーションについて、前記ポリシー集合の中から新たに得られたポリシーセットを前記メモリに提供するステップ、および、
前記１つまたは複数のプロセッサが、前記新たに得られたポリシーセットを前記１つまたは複数のアプリケーションに対して施行するステップ
を備えることを特徴とするコンピューティングデバイスの操作方法。
【請求項４】
請求項１または３のコンピューティングデバイスの操作方法において、
前記１つまたは複数のプロセッサが、前記ロケーション情報を前記受け取るステップは、前記１つまたは複数のプロセッサが、様々なタイプのロケーション情報を提供する様々な複数のロケーションプロバイダからロケーション情報を受け取るステップを含むことを特徴とするコンピューティングデバイスの操作方法。
【請求項５】
請求項１または３のコンピューティングデバイスの操作方法において、
前記１つまたは複数の階層ツリー構造は、少なくとも１つのプライマリツリー構造と、少なくとも１つのセカンダリツリー構造と、前記プライマリツリー構造と前記セカンダリツリー構造間の少なくとも１つのリンクとを含み、
該リンクは前記コンピューティングデバイスの現在のロケーションを決定するために走査可能であることを特徴とするコンピューティングデバイスの操作方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は一般的にコンテキストアウェア（context-aware）コンピューティングまたはユービキタス（ubiquitous computing）コンピューティングの領域に関する。
【０００２】
【従来の技術】
ワールドワイドウェブ（ＷＷＷ）は、世界中のどのような位置（location）にあるどのようなソースからでもコンテンツを利用可能にするために生み出された。ウェブのユーザは一般にウェブを介して、無限の数に思われるリソースに広くアクセスすることができる。これに関しては、ウェブは非常にうまくいっている。しかしながら、ウェブが進化する中で、いくつかの必要性が多分に満たされないままになっている。具体的には、人々は、コンテキストの面を有する情報にアクセスする必要性を持ちつづけている。すなわち、個人はしばしば、何らかのコンテキストを伴うコンピューティング環境にいることに気付くことになる。それにもかかわらず、この環境のコンテキストを現在のコンピューティング環境に組み込むことは容易ではない。一例として、位置のコンテキストを考えてみる。人々は一般に、地理範囲を伴う情報、データ、リソースなどにアクセスする必要がある。例えばある個人が、自分が現在いる場所の近くにあるサービスまたは製品を利用したいと思う場合がある。これに関し、サービスや物品などをこの個人が利用できるようにするには、この個人のコンテキスト上の位置を理解することが望ましい。「電子商取引」の重要性が増大し続けるにつれて、人、場所、サービス、および物品を効率的な形で統合する必要性が、クリティカルに重要になってくるであろう。
【０００３】
今日までに、人、場所、サービス、および物品を統合する多くの試みがなされてきた。これらの様々な試みは一般に、異なる方向から、しばしば相容れない形でこの問題に取り組んできた。一例として、位置のコンテキストを考えてみる。いくつかのサービスは、サービスに関する情報を保持する大規模なデータベースを定義することによって人とサービスを統合しようとしてきた。例えば、ウェブを介してアクセス可能なデータベース中にレストランのリストを保持し、各レストランを、それがある場所の郵便番号に関連付ける。ユーザが特定のレストランの位置を突き止めたいときは、単にユーザがいる場所の郵便番号を入力して、その郵便番号の中で対応するレストランのリストを見ればよい。このレストランリストから、当該のレストランを１つか２つ選択することができる。この手法は、いくつかの理由で望ましくない。第１に、システムの動作は中央サーバに依存し、この中央サーバが、ユーザのクエリー（照会；query）を受け取り、クエリーを実行してユーザに情報を返すことを担う。サーバ障害が起きた場合、サービスもまた障害をきたす。加えて、この特定のサービスは、レストランを見つけるのには適しても、おそらく他のビジネスには適さない場合がある。さらに、結果をユーザに返すときの細分性により、ユーザにいくらかの探索負荷が押し付けられる場合がある（すなわちユーザは、近くの郵便番号に含まれるレストランのリストを得るが、さらにそのリストを探索して、どれが当該のレストランかを選択しなければならない）。さらに、レストランのリストは、最短距離で経路を定めることを不可能にする何らかのタイプの物理的障壁（すなわち川や山など）によって阻まれたレストランをいくつか含む場合もある。
【０００４】
サービスおよび製品のプロバイダは、近くのエンドユーザに接続したい。エンドユーザは、これらのサービスおよび物品を最も近くて便利な位置で消費したい。虫歯を埋めるためまたは流しの詰まりを除くために歯医者または配管工を必要とする場合に、「ネット上の遠く離れた」どこかに住む歯医者または配管工のサービスを得ることは適切ではない。競技場にいながら最も近いホットドッグを探すには、競技場にいる必要がある。
【０００５】
【発明が解決しようとする課題】
コンピューティングデバイスがそれらの特定のコンテキストに参与できるコンテキストアウェアなコンピューティングを生み出せるようにする、未だ解決されていない必要性がある。特定の状況では、公的と私的の両方の世界視野（view）で、物理的位置間に関係的位置のアウェアネス（認識；awareness）を形成する必要がある。しかし今日、コンテキストアウェアなコンピューティングの可能性を開くことになる標準化された１つの世界視野はない。コンテキストアウェアなコンピューティングは、それ自体単独で非常に大きなフィールドではある単なる位置のアウェアネス以上のものである。
【０００６】
本発明は、標準化された、コンテキストアウェアなインフラストラクチャおよび関連するシステムを開発することに関係してなされたもので、これにより、コンテキストアウェアなコンピューティングのポテンシャルを開くものである。
【０００７】
【課題を解決するための手段】
コンテキスト指向のコンピューティングシステムおよび方法について述べる。記載された一実施形態では、コンテキストに応じて様々なポリシーの適用および施行を可能にする点でコンテキスト指向（一例ではロケーション指向）であるデバイスおよび方法が提供される。具体的には、記載された方法および構造により、様々なコンピューティングデバイスが自動的にそれらのコンテキストを決定することができる。コンテキストを決定すると、ポリシーの集り（a collection of policies）を評価して得られるポリシーセットを提供することができ、これらのポリシーが所与のコンテキストに適用される。次いで、得られたポリシーセットは、通常はデバイスのオペレーティング・システムを介して施行される。ポリシーの施行は、デバイス上またはデバイスから離れたところで実行されているアプリケーションに新しい設定または状態を発布することを含む可能性がある。これらのデバイスおよび方法は有利にも、デバイスのコンテキストが変化するのに伴って、得られるポリシーセットを適合させることができ、したがって、デバイスのコンテキストが変化するのに伴ってポリシーを動的に決定して自動的に施行することができる。
【０００８】
【発明の実施の形態】
概要
標準的な解決法を提供するために、以下に述べる実施形態は、世界の一様な定義を提供する。この一様な定義は、ノードの階層ツリーによって定義され、各ノードは、世界の何らかの態様を表す。各ノードは、ブランチによって他の少なくとも１つのノードに接続される。ノードの例示的な分類は、物理レベル（例えば政治的エンティティ（entity）、インフラストラクチャエンティティ、および公共の場所などの、物理的位置）、ならびに非物理レベル（例えば軍隊のＡＰＯ（軍郵便局））で行う。この階層ノード構造をマスタワールド（Ｍａｓｔｅｒ  Ｗｏｒｌｄ）と呼び、これは世界規模の標準化された視野である。マスタワールドの各ノードには、コンテキストアウェアなコンピューティングを補助する様々な属性を関連付ける。例示的な属性をわずかながら挙げると、固有ＩＤ、名前、地理エンティティクラス、緯度／経度、相対重要度、コンテキスト上の親が挙げられる。マスタワールドを使用すると、世界のどの場所でも、定義可能な任意の細分性で、その相対位置を決定することができるので、マスタワールドは有用である。
【０００９】
個人の位置、または個人が関心を持つ場所が決定されると、その位置を参照する様々なサービスを、その位置に基づいて個人に提供することができる。すなわち、マスタワールドの中のノード位置にサービスを結び付けることができる価値が、マスタワールドモデルから提供される。
【００１０】
この概念に基づき、２つの追加の概念が価値を追加する。すなわち、いわゆるセカンダリワールド（Ｓｅｃｏｎｄａｒｙ  Ｗｏｒｌｄ）および「ジオゾーン（ｇｅｏｚｏｎｅ）」の概念である。
【００１１】
セカンダリワールドは強力なコンピューティングメカニズムであり、これにより、個々のエンティティ（ビジネスや組織など）は、マスタワールドの世界視野に必ずしも従う必要のないそれら自体の特定の世界を定義することができる。すなわち、マスタワールドは本質的に、世界の物理的な階層表現であり、セカンダリワールドは、個々のエンティティそれぞれの世界視野の物理的かつ／または論理的表現とすることができる。セカンダリワールドの特に有用な面の１つは、セカンダリワールドが少なくとも１つの地点でマスタワールドにリンクすることである。したがって、いずれかのセカンダリワールド内では、セカンダリワールド内でのユーザ位置だけでなくマスタワールド内でのユーザ位置も決定することができる。セカンダリワールドのノードには、様々なサービスを結び付けることができる。計算されたユーザ位置に基づいて、セカンダリワールドノードに関連するこれらの様々なサービスをユーザに提供することができる。さらに、ユーザのコンテキストがマスタワールドに対して相対的に決定されるので、特定のセカンダリワールドに関連しない場合のある他のサービスを提供することもできる。
【００１２】
ジオゾーンは本質的に、マスタワールドを個々のゾーンに細分する空間索引付けメカニズムである。記載された実施形態では、これらのゾーンは、密度関数に依存する４分木（quadtree）アルゴリズムを使用することによって細分される（ただし他の多くの空間索引手法も使用できる）。所望の密度レベルが達成されると（密度は１ゾーンあたりの当該地点によって定義することができる）、マスタワールド上の各ノードに特定のジオゾーンを割り当てる。ジオゾーンにより、近接計算を速く直接的な方式で計算することができる。
【００１３】
マスタワールドおよびセカンダリワールドの有用な面の１つは、これらが、固定コンピューティングデバイス（すなわちデスクトップデバイス）やモバイルコンピューティングデバイス（すなわち携帯電話、ラップトップその他）など、様々なコンピューティングデバイスから「到達可能」なことである。すなわち、マスタワールド（または少なくともその一部）と１つ以上のセカンダリワールドは、コンピューティングデバイス上でローカルに維持することもでき、あるいは例えばウェブまたは他の何らかのメカニズムを介してアクセスすることもでき、それにより、ユーザはユーザのコンテキストを引き出すことができる。例えば、ユーザがセカンダリワールド内でユーザのコンテキストを引き出せるように、セカンダリワールドをコンピューティングデバイス上にダウンロードすることができる。ユーザのコンテキストがマスタワールドと１つ以上のセカンダリワールドとから決定されると、コンテキストアウェアな解決法の様々な堅固な集合がユーザに利用可能になる。例えば、特定のセカンダリワールドサービスまたはマスタワールドサービスを提供することができる。さらに、ユーザの位置を他のセカンダリワールドが知る（または他のセカンダリワールドに知らせる）ことができるので、他のセカンダリワールドからのサービスを提供することもできる。このようにして、マスタワールドは、２つ以上のセカンダリワールドを相互にリンクすることができる。
【００１４】
もう１つの面は、記載された実施形態が、デバイスの位置を決定する際に各コンピューティングデバイスの計算力を利用することである。このとき、デバイスから到達可能な（及び、おそらくデバイス上でローカルに維持される）マスタワールドと１つ以上のセカンダリワールドがあるおかげで、デバイスそのものがそれ自体のコンテキストを決定する。
【００１５】
一実施形態では、先に論じたコンテキストアウェアな構造すなわちマスタワールドと１つ以上のセカンダリワールドとを利用するように構成された、クライアント側デバイスが提供される。マスタワールドまたはその一部は、デバイス上でローカルに利用可能か、または例えばウェブを介して別の位置からアクセス可能とすることができる。この実施形態では、クライアントデバイスには位置サービスが組み込まれている。述べる位置サービスは、デバイスの位置を決定することができ、様々なアプリケーション（そのデバイス上またはそのデバイスから離れた所で実行されている）からのクエリーに答えることができるソフトウェアモジュールである。位置サービスは、マスタワールドと１つ以上のセカンダリワールドを使用してデバイスの位置を決定する。アプリケーションは、１つ以上のアプリケーションプログラムインタフェース（ＡＰＩ）またはイベントを介して位置サービスに照会して、アプリケーションがサービスを提供するのに用いるロケーション情報を得る。
【００１６】
位置サービスは、デバイスに情報を伝える１つ以上の位置プロバイダを利用する。この情報は、位置プロバイダ固有の情報とすることもでき、マスタワールドまたはセカンダリワールドのノードに直接にマッピングできる情報とすることもできる。例示的な位置プロバイダには、全地球測位サービス（ＧＰＳ）プロバイダ、携帯電話プロバイダ（セルプロバイダ）、ブルートゥース（Ｂｌｕｅｔｏｏｔｈ）プロバイダ、ユーザインタフェースプロバイダなどを含めることができる。位置プロバイダは、デバイスの現在の位置の何らかの局面を示す情報を提供する。この情報を使用して、位置サービスがデバイスの位置を確認する。
【００１７】
クライアントデバイスの特に有利なメカニズムの１つは、標準的または共通の位置プロバイダインタフェースである。位置プロバイダインタフェースは、様々な位置プロバイダが位置サービスに情報を提供できるようにし、それにより、位置サービスはその情報を利用してその位置を決定することができる。本質的に、多重位置プロバイダインタフェースは、異なる複数の位置プロバイダが位置に関するロケーション情報（またはヒント）をデバイス上の位置サービスに提供できるようにする共通インタフェースである。位置プロバイダは、絶えず、または間隔を空けて、またはデバイスからポーリングを受けたときに、ロケーション情報を提供することができる。位置サービスが情報を使用する前にその情報の相対的な質を評価できるように、ロケーション情報は信頼度および正確度の推定値と共に提供することができる。様々なプロバイダはまた、それら自体を自己監視する能力も有し、この能力は、情報をインテリジェントに位置サービスに伝えるプロバイダの能力を補助する。共通インタフェースを有することにより、位置プロバイダの集合は動的に拡張可能である。すなわち、位置サービスまたはデバイスによって実施される機能が介入することなく、位置プロバイダを集合に追加または集合から除去することができる。位置プロバイダは、デバイスが動作している間に追加または除去することができる。このことは、将来開発される位置プロバイダに対応する際に特に有用である。この特定の実施形態では、２つの抽象化レベルが提供される。すなわち、（１）位置プロバイダから情報を受け取るプロバイダインタフェース、および（２）アプリケーションが様々な情報を得ることを可能にするＡＰＩ／イベントレイヤである。
【００１８】
この実施形態の１つの焦点は、異なる様々なソースからコンテキスト情報（例えばロケーション情報）を収集し、その情報からデバイスの現在のコンテキストを決定し、現在のコンテキストを何らかのレベルで１つ以上のアプリケーションに提供することのできるデバイスであり、アプリケーションは、デバイスのコンテキストを用いて、サービスを提供するか、またはデバイスがそのコンテキスト環境に参与できるようにする。
【００１９】
記載された実施形態では、デバイスは、その位置に関するロケーション情報またはヒントを受け取る。この情報は、位置サービスによって照合され、マスタワールドおよび／またはセカンダリワールドの中のノードにマッピングされる。次いで、階層ツリーを走査して、セカンダリワールドとマスタワールドの両方におけるデバイスの正確な位置を決定することができる。この時点で、デバイスはそのコンテキストを決定し終えている。よく信用できる情報だけを用いてコンテキストが決定されるように、収集された情報は調停を受けることができる。ロケーション情報をキャッシュして「現在ロケーション情報」を提供することができるが、これは、定義可能な期間にわたり、ある程度正確なものとなる。したがって、何らかの理由で他の位置プロバイダが利用不可能な場合に、このキャッシュを用いて位置を確認することができる。
【００２０】
デバイスの位置が決定されると、デバイスは、セキュリティポリシーを情報に適用することができる。これを行った後で、デバイスは、様々なアプリケーションからのクエリーに答えることを開始することができる。
【００２１】
記載された実施形態の一態様は、「お気に入りの位置（ｆａｖｏｒｉｔｅ  ｌｏｃａｔｉｏｎｓ）」態様である。これは、デバイスがそのコンテキストを決定すると、デバイスは自動的に構成され、それにより種々の位置に適合することができるものである。
【００２２】
さらに、様々なタイプの位置プロバイダが、異なるタイプの情報を伝えることができる。例えば、いわゆる「シン（thin）プロバイダ」は、位置サービスによって適切なノード情報に変換される情報を提供する。いわゆる「シック（thick）プロバイダ」は、ロケーション情報を得て、それをマスタワールドまたはセカンダリワールドに直接にマッピングできる形で提供するロジックを含む。
【００２３】
別の実施形態では、デバイスのコンテキストまたは位置をできるだけ正確に決定することに対処する位置変換サービスが提供される。この実施形態では、様々な位置プロバイダから情報を受け取る。この情報は、位置、正確度、信頼度（すべて位置プロバイダから提供される）、信用度（デバイスまたはユーザから位置プロバイダに割り当てられる）、タイムスタンプ（ロケーション情報の古さを決定するのに役立つ）を含む。位置変換処理は、どの位置プロバイダが有効かつアクティブかを決定することを含む。位置プロバイダは、信頼度および信用度のレベルに従ってランク付けすることができる。これにより、位置プロバイダを順序付けしたリストが定義される。すべての位置プロバイダが非アクティブになる恐れのある状況に対しても備える。この場合、「現在の位置」を時が経つにつれて信頼度が低下する位置プロバイダとして使用する。
【００２４】
２つ以上の位置プロバイダからの情報が競合する場合は、信用度レベルのより高い情報を用いる基準を採用することができる。次いで、すべての位置プロバイダから提供される情報（競合がないと仮定する）を用いて、ツリー構造と、ノードのエンティティＩＤ（ＥＩＤ）とを決定することができる。ツリーはマスタワールドとすることができ、ＥＩＤはマスタワールド上のノードである。ツリーはセカンダリワールドとすることもでき、ＥＩＤ（または位置固有の識別子すなわち「ＬＵＩＤ」）はセカンダリワールド上のノードである。この情報を収集した後は、単にツリーを走査するだけで完全なロケーション情報を決定することができる。デバイスの位置を決定すると、キャッシュを現在の位置（タイムスタンプを含む）で更新することができる。
【００２５】
別の実施形態では、コンテキストアウェアなコンピューティング環境におけるプライバシー問題に対処する。この実施形態では、位置サービスは、特定デバイスの位置に関係するロケーション情報を獲得している。プライバシーマネージャが、情報を要求するかもしれないアプリケーションにどのレベルの情報を提供するかを決定する。プライバシーマネージャは、コンピューティングデバイス自体に常駐してもよく、信用できる第三者が代理になってもよい。
【００２６】
この実施形態によれば、プライバシーレベルの段階が定義される。各レベルは、特定のデバイスの位置に関して具体性がより高いまたは低い情報を含むように定義される。ユーザが、ロケーション情報を要求するかもしれないエンティティにプライバシーレベルを割り当てることができる。さらに、マスタワールドおよびセカンダリワールドの各ノードにプライバシーレベルを関連付けることもできる。アプリケーションからのクエリーが受信されると、プライバシーマネージャはまず、そのクエリーが誰からのものかと、そのアプリケーションまたはエンティティに関連するプライバシーレベルを決定する。次いでプライバシーマネージャは、マスタワールドおよびセカンダリワールドの１つ以上を評価して、対応するプライバシーレベルを有するノードを見つける。対応するノードが見つかったときは、その特定の細分性で要求側アプリケーションまたはエンティティに情報を提供する。
【００２７】
別の実施形態では、位置ビーコンの形で位置プロバイダを提供するシステムおよび方法について述べる。この実施形態では、様々な領域（公共／私的領域）中に設置することのできる位置ビーコンが提供されて、伝送範囲内にあるどのようなコンピューティングデバイスにもその位置が指示される。送信される情報により、デバイスはその位置またはコンテキストを決定することができる。位置ビーコンは、位置サービス固有の情報を送信することができ、位置サービスはその情報を用いる。送信する情報は、ＥＩＤ／ＵＲＬの対、およびＬＵＩＤ／ＵＲＬの対を含むことができる。ＥＩＤは、マスタワールドの中にあるノードのノード識別を提供し、関連するＵＲＬは、マスタワールドと通信するためのプロトコルを提供する。例えばこのＵＲＬは、そのＥＩＤを使用する追加コンテキスト情報を提供することのできるサーバにリンクすることができる。ＬＵＩＤは、現在位置に対応するセカンダリワールド上のノードを示し、ＵＲＬは、セカンダリワールドと通信するためのプロトコルを提供する。例えばこのＵＲＬは、セカンダリワールドをホスティングするサーバとリンクすることができる。この場合、このサーバに照会して、セカンダリワールドに関するより多くの情報（すなわちセカンダリワールドツリー構造、関連リソースの位置など）を発見することができる。ＥＩＤおよびＬＵＩＤを（ＵＲＬと共に）使用することにより、デバイスは今や、マスタワールドまたはセカンダリワールドを走査してその位置を決定することができる。ビーコンは、様々な技術を使用して実装することができる（無線、ＲＦ、ＩＲ）。改ざんを防止するために、ビーコンは「１度だけプログラムできる」デバイスとすることができる。ただし、プログラム可能なビーコンを提供してもよい。送信される情報の真実性を確認するために、ビーコン情報と共に提供される検証可能な署名の形でも、セキュリティを提供することができる。
【００２８】
ビーコンのコンテキストアウェアなコンピューティングの有用な一面は、「位置イネーブルドアクセス（ｌｏｃａｔｉｏｎ−ｅｎａｂｌｅｄ  ａｃｃｅｓｓ）」の概念である。すなわち、ロケーション情報の受信に加えて（またはそれと別に）、ビーコンは、スマートデバイスがソフトウェアコードにアクセスすることを可能にするコードダウンロードポインタを送信することもでき、このソフトウェアコードにより、スマートデバイスはその現在のコンテキストに参与することができる。
【００２９】
例示的なコンピューティングシステム
この文書においては、任意のタイプのコンピューティングデバイスを一般的に指すのに、用語「コンピューティングデバイス」を使用する。例示的なコンピューティングデバイスの特徴は、これは通常、１つ以上のプロセッサと、コンピュータ可読媒体（記憶装置やメモリなど）と、１つ以上のプロセッサ上で実行されてプロセッサにプログラム済みの機能を実施させるソフトウェアとを備えることである。特定の実施形態では、モバイルコンピューティングデバイス（例えばラップトップコンピュータなど）、および／またはハンドヘルドコンピューティングデバイス（例えばパームＰＣ、無線電話機など）の状況で実装する。
【００３０】
図１は、記載された実施形態との関連で使用するのに適したコンピューティングデバイスのほんの一例を構成する概略図である。特定の実施形態の利用を念頭に置いた１つ以上のコンピューティングデバイス（例えばパームＰＣ、無線電話機など）に、図示のコンピューティングデバイスの一部を組み込むこともできることを理解されたい。
【００３１】
コンピュータ１３０は、１つ以上のプロセッサまたはプロセッシングユニット１３２と、システムメモリ１３４と、システムメモリ１３４を含めた様々なシステムコンポーネントをプロセッサ１３２に結合するバス１３６とを備える。バス１３６は、メモリバスまたはメモリコントローラ、周辺バス、ＡＧＰ（ａｃｃｅｌｅｒａｔｅｄ  ｇｒａｐｈｉｃｓ  ｐｏｒｔ）、および様々なバスアーキテクチャのいずれかを使用するプロセッサバスまたはローカルバスを含めた、いくつかのタイプのバス構造のうちのいずれか１つ以上を表す。システムメモリ１３４は、読出し専用メモリ（ＲＯＭ）１３８およびランダムアクセスメモリ（ＲＡＭ）１４０を含む。ＲＯＭ１３８には、起動中などにコンピュータ１３０内の要素間で情報を転送するのを補助する基本ルーチンを含むＢＩＯＳ（ｂａｓｉｃ  ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｓｙｓｔｅｍ）１４２が記憶されている。
【００３２】
コンピュータ１３０はさらに、ハードディスク（図示せず）に対して読み書きするためのハードディスクドライブ１４４と、リムーバル磁気ディスク１４８に対して読み書きするための磁気ディスクドライブ１４６と、ＣＤ−ＲＯＭやその他の光学媒体などリムーバル光ディスク１５２に対して読み書きするための光ディスクドライブ１５０とを備える。ハードディスクドライブ１４４、磁気ディスクドライブ１４６、および光ディスクドライブ１５０は、ＳＣＳＩインタフェース１５４または他の何らかの適したインタフェースによってバス１３６に接続される。ドライブおよびそれらに関連するコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピュータ１３０に対するその他のデータの、不揮発性記憶域を提供する。本明細書に述べる例示的な環境は、ハードディスク、リムーバル磁気ディスク１４８、およびリムーバル光ディスク１５２を採用するが、磁気カセット、フラッシュメモリカード、ディジタルビデオディスク、ランダムアクセスメモリ（ＲＡＭ）、読出し専用メモリ（ＲＯＭ）など、コンピュータからアクセス可能なデータを記憶することのできる他のタイプのコンピュータ可読媒体をこの例示的な動作環境で使用することもできることを、当業者は理解されたい。
【００３３】
ハードディスク１４４、磁気ディスク１４８、光ディスク１５２、ＲＯＭ１３８、またはＲＡＭ１４０には、いくつかのプログラムモジュールを記憶することができるが、これらのプログラムモジュールには、オペレーティングシステム１５８ａ、１５８ｂ、１つ以上のアプリケーションプログラム１６０ａ、１６０ｂ、その他のプログラムモジュール１６２ａ、１６２ｂ、およびプログラムデータ１６４ａ、１６４ｂが含まれる。ユーザは、キーボード１６６やポインティングデバイス１６８などの入力デバイスを介してコンピュータ１３０にコマンドおよび情報を入力することができる。その他の入力デバイス（図示せず）には、マイクロホン、ジョイスティック、ゲームパッド、衛星受信アンテナ、スキャナなどを含めることができる。これらおよび他の入力デバイスは、バス１３６に結合されたインタフェース１７０を介してプロセッサ１３２に接続される。モニタ１７２または他のタイプの表示装置もまた、ビデオアダプタ１７４などのインタフェースを介してバス１３６に接続される。モニタに加え、パーソナルコンピュータは通常、スピーカやプリンタなど他の周辺出力デバイス（図示せず）も備える。
【００３４】
コンピュータ１３０は一般に、リモートコンピュータ１７６など１つ以上のリモートコンピュータへの論理接続を用いて、ネットワーク化された環境で動作する。リモートコンピュータ１７６は、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス（peer deviceｓ）、またはその他の一般的なネットワークノードとすることができ、これは、図１にはメモリ記憶装置１７８しか示していないが、通常はコンピュータ１３０に関して先に述べた要素の多くまたはすべてを備える。図１に示す論理接続は、ローカルエリアネットワーク（ＬＡＮ）１８０およびワイドエリアネットワーク（ＷＡＮ）１８２を含む。このようなネットワーキング環境は、オフィス、企業全体のコンピュータネットワーク、イントラネット、およびインターネットによくあるものである。
【００３５】
ＬＡＮネットワーキング環境で使用するときは、コンピュータ１３０は、ネットワークインタフェースまたはアダプタ１８４を介してローカルネットワーク１８０に接続される。ＷＡＮネットワーキング環境で使用するときは、コンピュータ１３０は通常、モデム１８６を備えるか、あるいはインターネットなどのワイドエリアネットワーク１８２を介して通信を確立するための他の手段を備える。モデム１８６は内蔵でも外付けでもよく、シリアルポートインタフェース１５６を介してバス１３６に接続される。ネットワーク化された環境では、パーソナルコンピュータ１３０に関して示したプログラムモジュールまたはこれらの一部をリモートメモリ記憶装置に記憶することができる。図示するネットワーク接続は例示的なものであり、コンピュータ間に通信リンクを確立する他の手段も使用できることを理解されたい。
【００３６】
一般に、コンピュータ１３０のデータプロセッサは、様々な時にコンピュータの様々なコンピュータ可読記憶媒体に記憶された命令を使用してプログラムされる。プログラムおよびオペレーティングシステムは通常、例えばフロッピー（登録商標）ディスクやＣＤ−ＲＯＭなどで配布される。これらから、コンピュータの補助記憶にインストールまたはロードされる。実行されるとき、プログラムおよびオペレーティングシステムは、少なくとも部分的にコンピュータの電子的な主記憶にロードされる。これらおよび他の様々なタイプのコンピュータ可読記憶媒体が、以下に述べるステップをマイクロプロセッサまたはその他のデータプロセッサと共に実施するための命令またはプログラムを含むとき、本明細書に述べる発明は、このような媒体を含む。本発明はまた、以下に述べる方法および技法に従ってコンピュータがプログラムされたとき、そのコンピュータも含む。
【００３７】
本明細書では例示のために、プログラムと、オペレーティングシステムなど他の実行可能プログラムコンポーネントとを別個のブロックとして示すが、このようなプログラムとコンポーネントは、様々な時にコンピュータの様々な記憶コンポーネント中にあり、コンピュータのデータプロセッサによって実行されることを理解されたい。
【００３８】
世界の定義
今日、コンテキストアウェアなコンピューティングの問題を解決する試みに伴う問題の１つは、提案されるあらゆる解決法が独自の手法、データ構造、プロセスなどを有することである。様々な手法の間での標準化は、仮にあったとしてもごくわずかである。記載された実施形態では、地球のユニバーサルな視野を定義することにより、基礎的なレベルで標準化が達成される。すなわち、ユニバーサルに受け入れられる地球の定義を提案するが、この定義は、コンテキスト依存コンピューティングを可能にするために様々なコンピューティングシナリオで使用可能である。この文書では、コンテキスト依存コンピューティングの具体的な一例を位置依存コンピューティングの形で提供する。これは、以下に論じる様々な実施形態を採用できるコンテキストのほんの一例をなすだけであることを理解されたい。その他の「コンテキスト」には、階層構造にうまくはまる情報ならどのようなものも含めることができる。これらには、組織内の役割／人員、デバイスの範疇化、現在アクティビティ、現在環境、アクティブデバイスなどが含まれるが、これらに限定するものではない。
【００３９】
（マスタワールド）
マスタワールドは、地球の物理的位置または地理区分を分類整理した、政治的に公正かつ公的に受け入れられる階層ツリー構造として定義される。マスタワールドは、地球全体の政治的、行政的、かつ地理的なエンティティの多くの様々なクラスが含まれるようにして定義される。政治的競合の領域は、コンピューティングデバイスの言語／現場に基づく世界視野を提示することによって反映される。
【００４０】
図２に、マスタワールドの一部を表す例示的な階層ツリー構造２００を示す。マスタワールドは複数のノード２０２を含み、各ノードは、地球の何らかのタイプの地理区分（例えば政治的または自然エンティティ）を表す。図示の例では、マスタワールドのノードは次のグループに構成される。すなわち（１）政治的または自然エンティティ（例えば大陸、国、海洋、州、郡、市など）、（２）インフラストラクチャエンティティ（例えば郵便番号、市外局番、時間帯など）、（３）公共場所エンティティ（例えば公園、遊歩道、空港、競技場など）、および（４）非物理的エンティティ（軍事郵便番号地域、休暇地域、地理的に断続している可能性のあるテレビジョンネットワークの系列局受信エリアなど）である。
【００４１】
図２の例では、ツリー構造の最上位ノードは地球を表す。最上位ノードの下にある各ノードは、地球の地理区分を表す。この例では、いずれかのビジネスまたはサービスとの関連を有するノードは１つもない。すなわち、マスタワールドの一部であるノードエンティティと、アクティビティが行われる非地理的場所との間に区別がある。マスタワールドは、公共の場所に対するノード（すなわち空港、遊歩道など）を含むものの、ビジネスまたはサービスのプロバイダの個別リストは含まない。各ノードは、ＩＤ（ＥＩＤすなわちエンティティＩＤ）で一意的に識別される。固有のＥＩＤに加えて、ＵＲＬもツリー構造に関連付けられ、後で明らかとなるようにツリー構造に対するコンテキストを提供する。
【００４２】
一例として、次のことを考えてみる。すなわち、シアトル−タコマ国際空港（ＳｅａＴａｃ）がマスタワールドに含まれるが、ＳｅａＴａｃにおける個々の航空会社のビジネス位置への参照は、ＳｅａＴａｃ空港ＥＩＤでタグ付けされたツリーの「葉」とすることができる（以下の「セカンダリワールド」セクションおよび表を参照）。同様に、シアトルセンタをマスタワールド上のノードとすることができ、シアトルアートフェスティバル、バンパーシュート、シアトルソニックスＮＢＡチーム、およびシアトルセンタのスターバックスコーヒーショップは、シアトルセンタＥＩＤでタグ付けすることができる。別の例としては、マスタワールドはまた、すべての各州間（高速道路）出口に対するノードも含む。例えば、ワシントン州、出口１０９、Ｉ−９０は、マスタワールドのノードの１つである。ワシントン州エレンズバーグ、キャニオンロード１７００に位置するベストウェスタンインは、この出口のＥＩＤでタグ付けすることができる。
【００４３】
したがって、マスタワールドは、一様な位置定義方式を提供する。次いで、一様な位置定義をユニバーサルに使用して、物品またはサービスに属性を割り当てることができる。コンピューティングデバイスが特定の一様な位置定義に対応するようにその位置を決定したときは常に、その一様な位置定義を共有する位置依存の物品またはサービスを利用することができる。マスタワールドは、標準化された世界視野であるため有用である。その標準化された正確な地理範囲属性は、プロバイダと消費者の両方から容易にアクセスすることができる。サービスおよび製品のプロバイダ（またはサーチエンジン、ネットワーク、およびイエローページのデータベースディレクトリなどの第三者）は、標準化された永続的な地理参照を、対象のすべての商取引位置または地点に割り当てることによって、マスタワールドのノードを使用することができる。これらの対象の商取引位置または地点は、ツリー構造上の「葉」と考えることができる。
【００４４】
図示の例では、マスタワールドのノードは、その使用を容易にする１つ以上の属性を有する。このすぐ下の表に例示的な属性を述べる。
【００４５】
【表１】
0004806143.tif 000002
【００４６】
上に列挙した属性は、例示的な属性だけを構成するものである。上に参照したこれらの属性とは異なる、かつ／またはこれらに対する追加の、他の属性を使用することもできる。以下に、上記の属性を採用した数個の例示的エンティティまたはノードのレコードを示す。
【００４７】
【表２】
0004806143.tif 000003
【００４８】
【表３】
0004806143.tif 000004
【００４９】
マスタワールドはまた、それ自体と様々な「セカンダリワールド」との間の公分母リンクのリポジトリとしても働き、かつセカンダリワールドを他のセカンダリワールドに接続する導管としても働く。内容、サービス、およびデバイスのプロバイダは、マスタワールドを用いて、公衆に利用可能なそれらの提供物を、地理的位置および対応する複数ブランチ階層構造に関連付けることができる。この位置は、ツリー構造内の単一エンティティと関連付けられることになり、したがって、地理的計算および時間／距離の計算と、必要な親／子関係のナビゲーションが可能になる。
【００５０】
（マスタワールドの索引（ジオゾーン））
定義により、マスタワールドは、地球全体をカバーするエンティティ（ノード）の階層構造を形成する。階層内での上方向へのナビゲーションはごく自然である。下方向への効率的なナビゲーションは、地理的近接のアウェアネスを必要とする。さらに、照会において値を首尾よく返すために、あるいは元のソースノード以外のノードに付いている近い「葉」への距離をより正確に計算するために、ブランチからブランチにジャンプすることが必要なシナリオもあり得る。マスタワールドは、地理的近接によってピアレベルのノードを識別できる索引方式を利用する。この索引付け方式は、４分木アルゴリズムを利用してマークし、いわゆる「ジオゾーン」を定義する。
【００５１】
４分木は本質的に、規則的にサイズが減少する同質のセルに、有効範囲を分割する、空間索引である。ツリーの各象限が、４つまでの子を有する。４分木セグメント化プロセスは、各象限の中の項目（例えば対象の地点）の数の密度を含めた多くの様々な最終結果基準に基づいて、マップ全体が分割されるまで継続することができる。この手法により、空間選択および内容識別を加速させる空間索引の一形式がもたらされる。
【００５２】
空間索引付け方式を完了して定義済みジオゾーンを各ノードに提供するには、４分木アルゴリズムをノードに適用するが、この４分木アルゴリズムは、例えばいずれか１つのゾーン中で発生する対象の地点の所望の密度に基づくことができる。すべてのゾーンが定義されると、各ゾーンに固有のＩＤ（例えば上／左と下／右の、緯度と経度の対）が与えられる。次いで、マスタワールドの各ノードに、それが位置するゾーンが割り当てられる。４分木アルゴリズムは周知であり、当業者には理解されるであろう。
【００５３】
（マスタワールドの位置）
理解できるように、標準化された一様な世界の表現を、走査可能な階層ツリー構造の形で有することにより、コンテキスト依存、より具体的には位置依存の物品およびサービスをリンクできる方式が、大幅に容易になる。
【００５４】
記載された実施形態では、コンピューティングデバイスは、マスタワールドの少なくとも一部にアクセスすることができる。例えばコンピューティングデバイスは、コンピューティングデバイスのオペレーティングシステム部を含む内部記憶装置に、マスタワールドが保存されるようにすることもでき、あるいはデバイスは、インターネットなどのネットワーク媒体を介してマスタワールドにアクセスすることもできる。マスタワールドツリー構造は各コンピューティングデバイスからアクセス可能なので、各デバイスは、それ自体のコンテキストを、またはノードによって参照される位置を判定する力を有する。すなわち、コンピューティングデバイスは、実行しているソフトウェアを介してその特定の位置すなわちノードを決定することができる。コンピューティングデバイスは、関連ノードを決定した後は、単にツリーを走査するだけでその完全な位置を確認することができる。
【００５５】
例えば、コンピューティングデバイスは現在、レッドモンド市に対応するノードにそれ自体が位置していると判定した場合、マスタワールドツリー構造を走査して、ワシントン州、米国、北アメリカ大陸にそれ自体があることを確認することができる。その正確な位置を確認することにより、コンピューティングデバイス（またはそのユーザ）は今や、提供されるであろう位置依存サービスを利用する立場にある。この特有のモデルは、中央サーバを利用して異なるいくつかのデバイスに対する位置を確認する現在のモデルに勝る、非常に大きな改善である。現在のモデルでは、各デバイス（またはユーザ）は、その位置に関する情報を提供し（例えばユーザはおそらく、そのデバイスが現在位置する郵便番号または市を入力し）、ユーザの郵便番号の中で例えばマクドナルドレストランを見つけるためにクエリーを入力する場合がある。次いでサーバは、この情報を取り入れ、例えばその郵便番号または市に含まれるすべてのマクドナルドレストランの位置についてユーザに教える。このモデルでは、サーバが失敗した場合、コンピューティングデバイスはどれもそのサービスを利用することができない。本モデルでは、各コンピューティングデバイスは自立している。それぞれがそれ自体の位置を決定することができ、したがって各デバイスは位置依存サービスを利用することができる。例えば、コンピューティングデバイスがマスタワールドの特定ノード上に位置することを理解した場合、このコンピューティングデバイスは、それが位置するその特定ノードに対応するＥＩＤを有するマクドナルドを見つけるためのクエリーを実行することができる。前述のジオゾーンを使用することにより、特定のローバスト性（robustness）がもたらされる。ジオゾーンにより、最も近い地理区分を効率的な方式で素早く探索することができる。例えば、ある個人がコピーをとるために最も近いキンコーズ（Kinko's）を探しており、そのコンピューティングデバイスの位置するノードに対応するジオゾーン中にキンコーズが１軒もない場合は、近隣のジオゾーンを素早く探索することができる。
【００５６】
（セカンダリワールド）
記載された実施形態では、セカンダリワールドの概念を使用して、追加コンテキストに対するサポートを提供する。セカンダリワールドは、第三者の組織または会社によって定義することができ、その組織に固有の物理的かつ／または論理的エンティティを構成するノードを含む。セカンダリワールドは公的なものとすることも私的なものとすることもできるので、セカンダリワールドのノードは、セカンダリワールドを定義した特定組織の外部の多くのコンテキストを有してもよく、また有さなくてもよい。セカンダリワールドは、マスタワールドを複製するのではなく、マスタワールドを一意的かつ組織固有の形で補足する。マスタワールドは広く受け入れられる基準として定義されるが、各セカンダリワールドは、組織専有の世界視野が多様に表されたものとして定義される。記載された実施形態では、各セカンダリワールドは、マスタワールドのノードとリンクされたノードを少なくとも１つ有する。これにより、マスタワールドにおけるコンテキストまたは位置がセカンダリワールドに与えられる。また、コンテキストアプリケーションの中には、いくつかのセカンダリワールドにアクセスすることができ、各セカンダリワールドは追加のコンテキスト固有の位置データを提供することに留意されたい。
【００５７】
図２に、複数のノード２０６を備えた例示的なセカンダリワールド２０４を示す。各ノード２０６は、物理的または論理的エンティティを構成する。例えばノードは、会社、その部門、地域、キャンパス、建物、様々な建物の中のフロア、および様々なフロア上の部屋を構成することができる。ノードの少なくとも１つは、マスタワールドのノードとリンクされる。セカンダリワールドのノードは、マスタワールドのノードと同じ属性を有することができる。
【００５８】
セカンダリワールドの一例として、ボーイングが、その雇用者にとって重要なエンティティのリストを含むセカンダリワールドを定義すると考えてみる。ルートエンティティは「ボーイング社」となり、その子は会社の部門（セントルイス軍事部門、エヴェレットプラント、企業本部など）とすることができる。さらにツリー構造を下ると、個々のノードは、個々の建物（ハンガー１２）、この建物内のオフィス（オフィス１００１）、建物領域（ハンガー１２の南西象限）などを表すように定義することができる。各エンティティまたはノードは、固有の識別子（ローカルな固有ＩＤすなわち「ＬＵＩＤ」）と、そのノードが発生するツリーに関連するＵＲＬとを有する。ＵＲＬは、セカンダリワールドツリー構造内にいるユーザがどのようにこの世界と対話するかを決定できるように、セカンダリワールドツリー構造を一意的に識別する。この態様については、後でより詳細に論じる。次いでボーイングはＬＵＩＤを使用して、設備、サービス、部署、またさらには人員をも、物理的または論理的位置に関連付けることができる。
【００５９】
より具体的な例として、図３を考察されたい。この図には、例示的なマスタワールド３００の一部およびセカンダリワールド３０２が示してある。マスタワールド３００は、世界、米国、ワシントン、レッドモンド、および郵便番号＝９８０５２のノードを含む。例示的なセカンダリワールド３０２は、マイクロソフトコーポレーションによって定義された階層ツリー構造であり、以下のノードを含む。すなわち、マイクロソフト、レッドモンドキャンパス、１マイクロソフトウェイ、ビルディング２６、３階、会議室３１７３、ビルディング２４、２階、会議室１３４２である。この例では、セカンダリワールド３０２は、レッドモンドノードからマスタワールドの中に「ポイント接触」する。この例では、ビデオプロジェクタがノード「会議室１３４２」に関連付けられて示されている。この場合、このビデオプロジェクタはセカンダリワールドの中のノードではない。そうではなく、このビデオプロジェクタは、他の何らかのリソース発見サービス（例えばアクティブディレクトリ）中の項目であり、「会議室１３４２」へのポインタの位置属性を含む。ただし、キーサービスの位置を表すためのノードをこれらの世界に生み出すことができるときもある。しかしノード自体がそれらのサービスを表すことにはならない。
【００６０】
マスタワールドと同様、セカンダリワールドも、有利なことにユーザのコンピューティングデバイスからアクセス可能である。例えばセカンダリワールドは、完全にまたは部分的にダウンロードして記憶装置に記憶し、必要なときにアクセスすることもできる。これは、１回使用するためだけにしかダウンロードできないものとすることができる。セカンダリワールドにより、コンピューティングデバイスは、セカンダリワールド内におけるそのコンテキストを確認することができる。この例では、コンピューティングデバイスは、セカンダリワールドを使用してセカンダリワールド内のその位置を計算することになる。コンピューティングデバイスはこれを、それ自体が現在位置するノードからルートノードへとツリー構造を走査することによって行うことができる。これにより、例えば、コンピューティングデバイス（したがってユーザ）は完全なセカンダリワールドコンテキストを得ることができる。セカンダリワールドの位置がわかった後は、ユーザは、セカンダリワールドのノードに関連する物品またはサービスを利用する立場にある。すなわち、コンピューティングデバイスは、そのセカンダリワールドコンテキストを決定すると、セカンダリワールドへのアクティブな参加者になる準備が整う。
【００６１】
物品またはサービスをセカンダリワールドの個々のノードに関連付けることにより、非常に高い価値を獲得することができる。例えば、会議室１３４２にはビデオプロジェクタが関連付けられている。すなわち、ビデオプロジェクタの位置は会議室１３４２にある。会議室３１７３にいる個人が、会議室１３４２にあるようなビデオプロジェクタを使用する必要のあるプレゼンテーションを行うと仮定する。個人は通常、おそらく物理的にその建物にあちこち呼びかけて利用可能なビデオプロジェクタがあるかどうかチェックする以外に、ビデオプロジェクタの位置を確認する手段を有しないことになる。この例では、ユーザのコンピューティングデバイスはセカンダリワールド内におけるその位置を確認することができるので、会議室１３４２中のビデオプロジェクタを突き止めることができる。コンピューティングデバイスはこれを、単にセカンダリワールドツリー構造を走査して対象のリソースを見つけるソフトウェアを実行することによって行う。
【００６２】
また、マスタワールドの中へのリンクがあるので、コンピューティングデバイスは両方の世界内のそのコンテキスト（位置）を引き出すことができることにも留意されたい。これにより、コンピューティングデバイス、したがってユーザは、セカンダリワールドに関連する物品およびサービスを利用することができ、かつ、マスタワールドにおけるユーザ位置に基づいて消費することが可能な位置依存サービスに参加することもできる。
【００６３】
図４は、記載された実施形態による方法のステップを記述した流れ図である。すぐ後に述べるこれらのステップはコンピューティングデバイスによって実施されるが、このコンピューティングデバイスは、図示の例ではハンドヘルドモバイルコンピューティングデバイスである。
【００６４】
ステップＳ４００で、コンピュータ可読媒体上にある第１および第２の階層ツリー構造にアクセスする。この例では、これらのツリー構造はデバイスに記憶してもよく、あるいはインターネットなどのネットワークを介してアクセス可能としてもよい。例示的な第１のツリー構造はマスタワールドであり、例示的な第２のツリー構造はセカンダリワールドである。あるいは、ツリー構造は両方ともセカンダリワールドとすることもできる。デバイスからツリー構造にアクセスがあると、ステップＳ４０２で、ツリー構造の複数のノードを走査して、コンピューティングデバイスのコンテキストを引き出す。この例では、コンピューティングデバイスは、一方のツリーのノードにおけるその位置について知らせる情報を受け取る。この情報は、適した任意の方法でコンピューティングデバイスに入来することができる。例えば、ユーザがユーザインタフェース（ＵＩ）を介してこの情報を入力してもよく、あるいは別のコンピューティングデバイスからこのコンピューティングデバイスに位置をブロードキャストしてもよい（例えばブルートゥース技術やユニバーサルプラグアンドプレイ（ＵＰｎＰ）を介して）。どのようにこの情報をコンピューティングデバイスに伝えることができるかについての具体的な例を、以下により詳細に提供する。どのようにこの情報をコンピューティングデバイスに伝えるかにかかわらず、コンピューティングデバイスは、情報を得ると、一方または両方のツリー構造を走査してそのコンテキストを引き出すソフトウェアを実行する。コンテキストは、この例ではデバイスの位置である。
【００６５】
（セカンダリワールドの定義）
前述のように、記載された実施形態の特に価値ある一面は、個々の組織がそれら自体のセカンダリワールドを定義できることである。これにより、物品およびサービスを提供する際の非常に高いフレキシビリティが組織に与えられ、より一般的に言えば、これらの組織の効率が上がる。一実施形態では、個々の組織がそれら自体のセカンダリワールドを定義および維持することを可能にするソフトウェアツールが提供される。
【００６６】
一実施形態では、各セカンダリワールドは、名前空間（例えばＸＭＬ名前空間）として一意的に識別することができる。これにより、セカンダリワールドとマスタワールドとの間のどのような名前のオーバーラップも衝突を生じないことが保証される。一例として次のことを考えてみる。マスタワールドは、都市を指す「シカゴ」として識別されるエンティティを含む。全米プロバスケットボール協会（ＮＢＡ）によって確立されたセカンダリワールドと、キャタピラ社によって確立された異なるセカンダリワールドもまた、「シカゴ」という名のエンティティを有し、これらのエンティティは、マスタワールドの「シカゴ」とは完全に異なるエンティティを指す。例えば、ＮＢＡの「シカゴ」はＮＢＡの市場地域を指し、キャタピラの「シカゴ」は販売地区を指す。各名前空間は他のあらゆる名前空間と一意的に異なるので、マスタワールドとセカンダリワールドとの間を名前空間で分離することにより、同一の名前の付いたエンティティ間の衝突がないことを保証することができる。
【００６７】
図５は、コンテキストアウェアなデータ構造を構築する方法のステップを記述した流れ図である。これらのステップは、コンピューティングデバイス上で実行されるソフトウェアツールによって実施される。
【００６８】
ステップＳ５００で、物理的かつ／または論理的エンティティに関係する情報を指定する入力をソースから受け取る。この例では、システム管理者が、定義したいと思うセカンダリワールドの構造に関する情報を物理的に入力することができる。この情報は、建物、部門、会議室などに関する情報を含むことができる。次いでステップＳ５０２で、この情報を処理して、コンテキストを有する階層ツリー構造を定義する。この例では、コンテキストは位置である。ただし、その他のコンテキストを採用することもできることを理解されたい。階層ツリー構造中の各ノードは、別々の物理的または論理的エンティティを表す。次いでステップＳ５０４で、階層ツリー構造の少なくとも１つのノードを、コンテキストを有する別のツリー構造とリンクする。この例では、この別のツリー構造はマスタワールドを構成することができる。ツリー構造が構築されてリンクされると、これらのツリー構造は、１つ以上のノードからコンテキストを引き出すことのできる方式で走査される準備が整う。
【００６９】
サービスとしての位置
上の例では、コンピューティングデバイスは、それ自体の位置を判定することができる。これから述べる実施形態では、コンピューティングデバイスは、異なるいくつかの情報ソースから提供されるロケーション情報を用いてその位置を判定する。デバイスは、提供される情報を取り入れ、その情報を処理して、１つ以上の階層ツリー上にある特定ノードを判定することができる。これを行うと、デバイスはその完全な位置を決定することができ、この位置は、特にデバイスのユーザが消費できる位置依存サービスがあるときにわかると、有用なものである。
【００７０】
図６に、例示的なコンピューティングデバイス６００の高レベルの図を示すが、このコンピューティングデバイス６００は、コンポーネントの中でもとりわけ、コンテキストサービスモジュール６０２と、１つ以上のコンテキストプロバイダ６０４ａ〜６０４ｃとを備える。コンテキストサービスモジュール６０２は、適した任意のハードウェア、ソフトウェア、ファームウェア、またはこれらの組合せの中に実装することができる。この特定の例では、コンテキストサービスモジュールは、１つ以上のデバイスプロセッサによって実行されるソフトウェア中に実装される。コンテキストサービスモジュール６０２は、１つ以上のコンテキストプロバイダ６０４ａ〜６０４ｃからコンテキスト情報を受け取り、その情報を処理して現在のデバイスコンテキストを決定する。この特定の例では、デバイスコンテキストはデバイスの位置である。したがって、コンテキストプロバイダは、ロケーション情報を、処理されるように、様々な形でコンテキストサービスモジュール６０２に提供する位置プロバイダである。位置プロバイダ６０４ａ〜６０４ｃは、コンテキスト情報（ロケーション情報）の様々なソース６０６ａ〜６０６ｃから情報を受け取る。
【００７１】
この文書に関しては、コンテキストプロバイダは、デバイス上に実装してもデバイスから離れた所に実装してもよいソフトウェアコンポーネントを構成する。コンテキストプロバイダにはまた、適した任意のハードウェア、ファームウェア、またはこれらの組合せを含めることができる。コンテキストプロバイダの役割は、ソース６０６ａ〜６０６ｃから情報を受け取り、その情報をコンテキストサービスモジュール６０２に伝え、それによりコンテキストサービスモジュールがその情報を使用して現在のデバイスコンテキストを決定できるようにすることである。
【００７２】
デバイスのコンテキストがデバイスの位置である場合、ソース６０６ａ〜６０６ｃは、デバイスの現在位置に関係する様々な情報を位置プロバイダ６０４ａ〜６０４ｃに提供する。一例として、情報ソースには、ＧＰＳシステム、携帯電話またはセルＩＤ、ロケーション情報を送信する無線送信機、位置ビーコン、８０２．１１送信機、およびその他の様々な情報ソースのような、様々な情報送信機を含めることができる。情報ソースにはまた、例えばブルートゥース技術を介してロケーション情報を提供することのできるその他のコンピューティングデバイスを含めることもできる。さらに、情報ソース６０６ａ〜６０６ｃには、デバイスが情報を処理してその位置を決定できるように、例えば物理的にロケーション情報をデバイス６００に入力する人物を含めることもできる。
【００７３】
デバイス６００がソース６０６ａ〜６０６ｃからロケーション情報を受け取ると、デバイス６００は、位置プロバイダ６０４ａ〜６０４ｃを使用してその情報を処理し、その情報を位置サービスモジュール６０２に提供する。位置サービスモジュール６０２は、ロケーション情報を処理し、位置サービスモジュールからアクセスできる１つ以上の階層ツリー構造上で現在位置に対応する特定ノードを決定する。次いで位置サービスモジュール６０２は、ツリー構造を走査して、デバイスに対する完全な位置を判定する。完全な位置が判定されると、デバイス６００は、１つ以上のアプリケーション６０８ａ〜６０８ｃとの対話を開始することができ、これらのアプリケーション６０８ａ〜６０８ｃは、１つ以上の位置依存サービスをデバイスに提供できるように、デバイスの特定位置についてデバイスに照会することができる。この例では、アプリケーション６０８ａ〜６０８ｃをデバイスとは別に示してある。しかし、例えばブラウザアプリケーションなどのように、アプリケーションはデバイス上で実行してもよいことを理解されたい。
【００７４】
図示のように、アプリケーション６０８ａ〜６０８ｃはデバイスを呼び出して、デバイスがどこにあるか尋ねることができる。デバイスは、呼出しを受け取って適切な仕方でアプリケーションに応答するように構成される。アプリケーションがデバイスのロケーション情報を得ると、アプリケーションは、位置固有サービスをデバイスに提供することができる。
【００７５】
次の例を考えてみる。自分は旅行者であり、ＳｅａＴａｃ国際空港に関するマスタワールドツリーおよびセカンダリワールドツリーを含んだハンドヘルドモバイルコンピューティングデバイスを有する。コンコースＣから中国行きの飛行機で出発する予定である。ＳｅａＴａｃ国際空港のセカンダリワールドは、「到着」、「出発」、「コンコース」、「航空会社」、「航空会社に割り当てられたゲート」、および「ゲート位置」のノードを有するように設計されている。空港に到着すると、あなたのコンピューティングデバイスは、空港に入るときに種々のソースからロケーション情報を受け取り、この情報を使用して、あなたの位置が到着ノードにあることを判定する。ＳｅａＴａｃ国際空港は、あなたが空港にいる間にあなたを補佐するためのアプリケーションを実行しているサーバのバンクを有する。サービスを見つけるのに役立つアプリケーション、設備（例えば喫茶店やレストラン）を突き止めるのに役立つアプリケーション、方向（例えば自分の出発ゲートへの行き方）を示すアプリケーション、自分のフライトの状況に関する最新情報を提供するアプリケーション、さらには自分のフライトに対して自分を自動的にチェックインするアプリケーションがある。また、空港の中を歩くのに伴って自分の位置が変化することも考えてみる。しかし、あなたのコンピューティングデバイスは、連続するロケーション情報更新を受け取ることができ、したがって、空港の中を移動するのに伴ってその位置の判定を継続することができる。ある地点では、スターバックスコーヒーショップを通過するとき、あなたのハンドヘルドデバイスは、スターバックスでラッテを購入してハンドヘルドデバイスを提示すれば、それに５０セントの値引きを受けることを知らせる。この例では、セカンダリワールドの有用性が実例によって示されている。特定の顧客が施設のどこにいるかを知ることにより、ＳｅａＴａｃ国際空港は、以前は不可能だったサービスのホストを提供することができる。
【００７６】
さらに、自分は空港にいて、自分のフライトが中止されたと仮定する。あなたは今晩宿泊する場所を見つけなければならない。したがって、最も近いダブルツリーホテルに決定しようと思う。というのは、チェックインのときにそこで出される温かいチョコレートチップクッキーが大好きだからである。最も近いダブルツリーホテルを見つけるために、自分のコンピューティングデバイス上でサーチエンジンを実行する。サーチエンジンアプリケーションはまず、あなたの位置に対応するマスタワールドノードのＥＩＤで示される、マスタワールドにおけるあなたの現在位置を判定する。サーチエンジンアプリケーションは、探索を実行して、あなたのＥＩＤに合致するＥＩＤを含む属性を有するダブルツリーホテルを探す。見つかった場合、サーチエンジンアプリケーションは、単に結果をあなたに示す。対応するＥＩＤを有するダブルツリーホテルが見つからない場合は、近隣のジオゾーンを使用してダブルツリーホテルを探索することができる。サーチエンジンアプリケーションは、ホテルへの車での行き方も提供することができる。サーチエンジンアプリケーションは、マスタワールドにおけるあなたの位置を確認することができたので、このことを行うことができた。サーチエンジンアプリケーションは、あなたからの労力をほとんどまたは全く要することなく、このことを素早く自動的に行った。
【００７７】
さらに、空港からホテルへ車に乗っていくとき、朝に行うことになっているプレゼンテーションのコピーを１００枚印刷できるように、最も近いキンコーズを見つけようとすると仮定する。自分のハンドヘルドコンピューティングデバイスが携帯電話で、通信事業者がスプリントであると考えてみる。スプリントは、例えばセルネット（cell nets）で示すことのできるそれ自体のセカンダリワールドを定義している。スプリントのセカンダリワールドが自分のコンピューティングデバイス上にあるおかげで、スプリントのセカンダリワールドにおける自分の位置を確認することができ、したがって、マスタワールドにおける自分の位置を確認することができる。キンコーズもまた、マスタワールドとリンクするセカンダリワールドを有すると考えてみる。サーチアプリケーションを自分のデバイス上で実行することにより、最も近いキンコーズの位置ならびにそこへの車での行き方を確認することができる。これはすべて、自分のデバイスがマスタワールドと１つ以上のセカンダリワールドとにアクセスできるので可能である。この例では、マスタワールドは、２つ以上のセカンダリワールドを共にデイジーチェーン接続するメカニズムを提供する。これは、セカンダリワールドがマスタワールドの中への参照またはリンクを少なくとも１つ有するので可能である。
例示的なデバイスアーキテクチャ
図７に、コンピューティングデバイス６００をもう少し詳細に示す。この特定の実施形態では、デバイス６００は、以下のコンポーネントを含むアーキテクチャを有する。すなわち、位置サービスモジュール７２０、位置プロバイダインタフェース７００、アプリケーションプログラムインタフェース（ＡＰＩ）／イベントモジュール７０２、プライバシーマネージャ７０４、位置変換モジュール７０６、１つ以上のアプリケーション７１８ａ、７１８ｂ、７１８ｃ、および１つ以上の位置プロバイダ７１６ａ〜７１６ｈである。このアーキテクチャにはまた、アクティブディレクトリ７０８、ウェブサービス７１０、位置データベース７１２、および個人場所７１４も含まれる。このアーキテクチャは、適した任意のハードウェア、ソフトウェア、ファームウェア、またはこれらの組合せの中に実装することができる。前述のアーキテクチャは、各コンピューティングデバイスがそれ自体のコンテキストまたは位置を決定することを可能にする点で有利である。
【００７８】
（共通の位置プロバイダインタフェース）
記載された実施形態の特に有利な一面は、位置プロバイダ７１６ａ〜７１６ｈがそれを介して通信する標準的なインタフェースを形成する、共通インタフェース７００を採用することである。共通インタフェースを有することにより、位置プロバイダは、位置プロバイダの集合から動的に追加または除去することができるので、（将来のプロバイダをサポートするために）拡張可能である。特定の位置プロバイダ７１６ａ〜７１６ｈに必要なのは、共通インタフェースをサポートするように書かれることだけである。
【００７９】
この例では、いくつかの位置プロバイダ７１６ａ〜７１６ｈがある。これらの位置プロバイダは、ロケーション情報を種々の形で提供する。例えばＧＰＳ位置プロバイダは、ＧＰＳ固有のロケーション情報を提供することができる。同様に、ＩＰ／サブネット位置プロバイダは、インターネットプロトコル固有の情報を提供することができる。移動電話位置プロバイダは、セルＩＤの形でロケーション情報を提供することができる。さらに、位置ユーザインタフェース（ＵＩ）は、市、通り、または建物を指定するユーザ入力の形でロケーション情報を提供することができる。様々な位置プロバイダから提供されるロケーション情報はすべて、現在のデバイス位置を決定できるように位置サービスモジュール７２０によって処理される。現在のデバイス位置を決定するために、位置サービスモジュール７２０は、アクティブディレクトリ７０８、ウェブサービス７１０、または位置データベース７１２を調べなければならない場合がある。図示の例では、アクティブディレクトリ７０８は例えば、セカンダリワールドと、ネットワーキング接続性に基づいて位置を決定するのに役立つサブネットや「サイト」の情報など他のネットワーキングメタデータとを維持することができる。ウェブサービス７１０は、マスタワールドまたはセカンダリワールドを保持することができ、これらの属性を使用して位置を見つけることができる。例えば、携帯電話がそのセルタワーＩＤを知っている場合、位置プロバイダはセカンダリワールドに照会して、そのセルタワーＩＤに合致するノードを確認することができる。位置データベース７１２は基本的に、ローカルにホスティングまたはキャッシュされるバージョンのウェブサービスである。
【００８０】
（位置プロバイダ）
先に示したようにこのアーキテクチャでは、位置サービスモジュール７２０にロケーション情報を提供することのできる、様々な複数の位置プロバイダを考えている。この情報は、多くの様々な形および品質レベルで入来することができる。次いでこの情報は、位置サービスモジュール７２０によって処理されて、現在のデバイス位置が決定される。こうするために、サービスモジュール７１８は、ロケーション情報から特定のノードＩＤ（ＥＩＤおよび／またはＬＵＩＤ）と、そのノードが関連付けられているツリー構造に関連するＵＲＬとを確認する。位置サービスモジュールは、ノードＩＤを確認すると、ＵＲＬを使用してツリー構造（またはより正確にはツリー構造を管理するサーバ）に照会して、ツリー構造に関するより多くの情報を確認することができる。例えば、位置サービスモジュール７２０が特定のセカンダリワールドからＬＵＩＤを確認した場合、位置サービスモジュール７２０は、アクティブディレクトリ７０８（または別の位置データベースであるイントラネットサーバ）に照会して、ノードの親と子を発見することができる。これにより、次いで位置サービスモジュールは、セカンダリワールドを構築することができる。
【００８１】
位置プロバイダ７１６ａ〜７１６ｈは、位置サービスモジュール７２０に多くの様々な方式でロケーション情報を提供することができる。例えばいくつかの位置プロバイダ７１６ａ〜７１６ｈは、情報を連続的に提供することができる（例えばＧＰＳプロバイダはＧＰＳ座標を連続的に提供することができる）。あるいは位置プロバイダは、特定時刻や定義可能イベントの発生時などにロケーション情報を定期的に提供することもできる。例えばユーザは、ロケーション情報を更新すべき特定時刻を定義することができる。あるいはロケーション情報は、デバイスの位置が変化したとき（すなわち位置変化イベント）だけ更新してもよい。さらに、位置プロバイダは、位置サービスモジュール７２０からポーリングを受けたときにロケーション情報を提供することもできる。例えば、位置サービスモジュール７２０が位置プロバイダインタフェース７００を呼び出して、１つ以上の位置プロバイダにロケーション情報を要求することができる。
【００８２】
具体的な位置プロバイダ７１６ａ〜７１６ｈの１つがキャッシュとして示されている。このキャッシュプロバイダ７１６ｃは、本質的に、現在のデバイスコンテキストまたは位置を維持する。すなわち、位置サービスモジュール７２０がその現在位置を確認すると、位置サービスモジュール７２０は、この位置をキャッシュに書き込む。これによりデバイス６００は、他のすべての位置プロバイダがロケーション情報を提供できない場合でも、ある程度の信頼度でその位置を確認することができる（例えばＧＰＳプロバイダは、それに情報を供給するＧＰＳ送信機が必要数の衛星に接触できないためにＧＰＳ情報を受信できないことがある）。
【００８３】
（信頼度および正確度のパラメータ）
記載された実施形態の重要かつ有用な特徴の１つは、１つ以上の位置プロバイダが、位置サービスモジュール７２０に提供する情報に信頼度パラメータおよび／または正確度パラメータを割り当てるように構成されることである。信頼度パラメータは、プロバイダが位置サービスモジュール７２０に提供する情報に対するプロバイダの信頼の程度を提供する。例えば、ＧＰＳ送信機が、信頼性の高い情報を提供するために５台または６台の衛星から情報を受け取らなければならないと仮定する。このとき、３台の衛星しか利用可能でないと仮定する。この場合、ＧＰＳ送信機は、３台の衛星だけに基づく情報を送信することになる。次いでＧＰＳプロバイダは、ＧＰＳ送信機から受け取る情報が所望の５台以上ではなく３台の衛星だけに基づいていたことを知る。この場合、ＧＰＳプロバイダは、所望の５台以上の衛星に基づく場合よりも低い信頼度レベルのロケーション情報であることを示すように、ロケーション情報に関する信頼度パラメータを設定することができる。この場合、位置サービスモジュール７２０は、デバイスの位置を決定するときにすべての位置プロバイダに対する信頼度パラメータを考慮することができる。これについては後でより詳細に論じる。
【００８４】
正確度パラメータに関しては、位置プロバイダから受け取るロケーション情報の正確さの程度が様々であると考えてみる。ある情報は１マイル以内の正確度であり、他の情報は１００フィート以内の正確度である場合がある。位置プロバイダは、位置プロバイダが位置サービスモジュール７２０に提供するロケーション情報に正確度パラメータを割り当てるように構成することが望ましい。正確度パラメータは、情報の正確度の指標を位置サービスモジュールに与える。
【００８５】
位置サービスモジュール７２０が信頼度および正確度のパラメータを使用するとき、モジュールは、各プロバイダから受け取るロケーション情報をどのように使用するか決定することができる。例えば、位置サービスモジュール７２０は、信頼度パラメータの低い情報はどれも完全に無視することができる。一方、情報の正確度とその信頼度との間のバランスをとることもできる。例えば、正確度レベルの低い情報を、その信頼度レベルが高いときだけ使用するようにプログラムすることもできる。モジュール７１８は、これらのパラメータを使用して情報に重みを割り当てることができ、したがって、情報の信頼度および正確度の重み付けに応じて位置が計算される。
【００８６】
信頼度パラメータの別の使用法は次のようなものである。位置サービスモジュールがデバイス位置を決定し、その位置をキャッシュに書き込んだと仮定する。位置がキャッシュに書き込まれるとき、この位置にはおそらく高い信頼度レベルが割り当てられる。さらに、他のすべての位置プロバイダがロケーション情報を提供できないとも仮定する。ある期間にわたり、位置サービスモジュール７２０は、キャッシュ位置を現在位置として使用することができ、その情報が概して正確であると適度に確信することができる。この場合、位置サービスモジュールは、時の経過と共に直線的に低下する信頼度レベルを情報に割り当てることができ、したがってある時点で、その情報の使用を停止するか、その情報を保証できないことをユーザに通知する。
【００８７】
（位置、信用度、およびタイムスタンプ）
位置プロバイダがそれらの情報を位置サービスモジュール７２０に提供するとき、この情報は、信頼度および正確度のパラメータに加えて、周知のフォーマットをとる実際のロケーション情報、信用度パラメータ、およびタイムスタンプを含むことができる。信用度パラメータは、位置サービスモジュール７２０から１つ以上の位置プロバイダに割り当てられる測定基準であり、位置サービスモジュールが特定の位置プロバイダに対して有する信用を定義する。タイムスタンプは、ロケーション情報が位置プロバイダによって提供された時刻を定義する測定基準である。これは、情報が古くなったかどうかを位置サービスモジュール７２０が確認するのを補助し、リフレッシュが必要である。
【００８８】
位置サービスモジュール７２０は、すべてのロケーション情報を得ると、デバイスの位置の決定を開始することができる。
【００８９】
図８は、デバイスコンテキストを決定する方法のステップを記述した流れ図であり、デバイスコンテキストは、この例ではデバイス位置である。これらのステップは、位置サービスモジュール７２０によって実施される。
【００９０】
ステップＳ８００で、現在のデバイスコンテキストを得る。現在のコンテキストは、キャッシュに記憶されている、最後に計算されたデバイスコンテキストとすることができる。ステップＳ８０２で、いくつかのコンテキストプロバイダのうちのいずれがコンテキスト情報の提供に利用可能かどうかを判断する。位置サービスモジュールはこれを、コンテキストプロバイダをポーリングして、どのプロバイダがアクティブかつ有効かを確認することによって行うことができる。ステップＳ８０４で、すべてのプロバイダが非アクティブかどうかを判断する。すべてのプロバイダが非アクティブである場合は、ステップＳ８０６で、現在のコンテキストに対する信頼度を時の経過と共に下げ、現在のコンテキストをデバイスコンテキストとして使用する。次いでステップＳ８０２で、現在アクティブかつ有効なプロバイダがあるかどうか監視を継続する。ステップＳ８０４で、１つ以上のコンテキストプロバイダがアクティブであると決定された場合は、ステップＳ８０８で、アクティブかつ有効なコンテキストプロバイダを順序付ける。コンテキストプロバイダを順序付けまたはソートするとき、位置サービスモジュール７２０は、プロバイダの情報の信頼度および／または位置サービスモジュールが位置プロバイダに対して有する信用度に応じて行う。これにより、位置プロバイダをランク付けしたリストがもたらされる。ステップＳ８１０で、コンテキスト情報が正しく見えるかどうかを確認するためにチェックする。例えば、コンテキストがデバイスの位置である場合、位置サービスモジュール７２０は、５秒前に現在位置がワシントンのレッドモンドであったことを知っている場合がある。したがって、現在位置が中国の北京であることを示すロケーション情報は間違っていることになる。次いでステップＳ８１２で、コンテキスト情報のいずれかが、デバイスの現在のコンテキストまたは他のプロバイダからのコンテキスト情報と競合するかどうかを判断する。例えば、位置サービスモジュール７２０は、各コンテキストプロバイダからのコンテキスト情報をキャッシュ中の情報と比較することができる。キャッシュされている情報と競合する情報がある場合は、そのコンテキストプロバイダからの情報を無視することができる。同様に、コンテキスト情報がコンテキストプロバイダ間で極端に異なる場合は、ステップＳ８１４で、事前定義済みの信用度レベルを有するコンテキストプロバイダを選択することができ、おそらくそれらの情報だけを使用することができる（ステップＳ８１６）。競合がない場合は、ステップＳ８１６で、すべてのコンテキストプロバイダから提供される情報に基づいて現在のコンテキストを決定（ｄｅｔｅｒｍｉｎｅ）する。記載された実施形態では、このステップは、この情報を使用して前述の１つ以上の階層ツリー構造の特定ノードにマッピングすることによって実施する。例えば、デバイスの位置は、情報を特定ノードにマッピングし、次いでルートノードに到達するまでツリー構造を完全に走査することによって確認することができる。次いでステップＳ８１８で、おそらくキャッシュに書き込むことによって現在のコンテキストを更新し、ステップＳ８０２に戻って、アクティブかつ有効なコンテキストプロバイダを判断する。
【００９１】
前述の方法では、位置サービスモジュールがロケーション情報を受け取って、現在位置を表す可能性がほぼ高いと思われるロケーション情報だけを使用する方式が提供される。競合する情報は、割り引いて考えるか無視することができ、それにより、最も信用でき、正確であり、信頼できる情報を利用して、デバイスの現在位置が決定される。
【００９２】
（自己監視）
信頼度および正確度のパラメータに加えて、１つ以上の位置プロバイダは有利にも、起こり得る様々な異常に備えてそれら自体の動作を自己監視するようにプログラムされる。位置プロバイダは、異常の発生時に位置サービスモジュール７２０に通知するように構成される。例えば、位置プロバイダが情報を受け取る先のソースがある期間にわたってオフラインになり、したがって位置プロバイダがどのような追加情報も受け取ることができない場合がある。この場合、位置プロバイダは「プロバイダアウト（ｐｒｏｖｉｄｅｒ  ｏｕｔ）」メッセージを生成し、それを位置サービスモジュール７２０に送ることができる。位置サービスモジュール７２０は、「プロバイダアウト」メッセージを受け取ると、それが行うどのような位置計算からもこのプロバイダからのロケーション情報を除外するステップを採ることができる。位置プロバイダのソースがオンラインに戻ったときは、位置プロバイダは、ロケーション情報を位置サービスモジュール７２０に送信できることをモジュールに通知する「プロバイダオン（ｐｒｏｖｉｄｅｒ  ｏｎ）」メッセージを生成することができる。当然ながら、位置サービスモジュールは、その他の動作異常の発生時にも位置プロバイダから通知を受けることができ、前述の例は、ある特定の場合を構成するだけである。
【００９３】
（アプリケーション）
位置サービスモジュール７２０は、デバイスの位置を決定すると、１つ以上のアプリケーション７１８ａ〜７１８ｃからクエリーを受けることができる。図７の例では、アプリケーションには、ウェブサイトアプリケーション、アウトルック（Ｏｕｔｌｏｏｋ）アプリケーション、およびサービス発見アプリケーションが含まれる。この例では、ウェブサイトアプリケーションは、位置固有のサービスを提供できるウェブサイトアプリケーションならどのようなものでもよい。例えば、デバイス６００のユーザが、アマゾンコムのウェブサイトにアクセスして気に入った本を買う場合がある。ユーザがアマゾンコムの本を買うとき、アマゾンコムはここで、ユーザが支払わなければならない税金を計算しなければならない。この例では、アマゾンコムのウェブサイト上で実行されるスクリプトが、ユーザの位置について知るためにデバイス６００に照会することができる。この特定の例では、デバイスはクエリーに応答して、ユーザが購入しようとしている状態を返すことができる。次いで、アマゾンコムは自動的に課税することができる。アマゾンコムはまた、最適な発送方法（ＵＰＳまたはエクスプレスメール（Ｅｘｐｒｅｓｓ  Ｍａｉｌ））を選択できるように、この個人がどこにいるかを知りたい場合もある。個人がどこにいるかに応じて、一方の方法が他方よりも好ましい場合がある。アウトルックアプリケーションは、位置サービスモジュールに照会して位置を確認する場合がある。というのは、アウトルックアプリケーション（またはオペレーティングシステム、例えばＷｉｎｄｏｗｓ（登録商標））がコンピューティングデバイスの位置に基づいてデバイス設定を変更することができるからである。例えばユーザは、仕事ではある特定のプリンタ上で印刷し、家では別の特定のプリンタ上で印刷する場合がある。ユーザがその日は家に帰っている、とアウトルックアプリケーションが判断した場合、アウトルックアプリケーションは、ユーザの家のプリンタに関するデバイス設定を自動的に変更することができる。印刷設定は、個人場所データ記憶装置７１４から得ることができる。したがって、デバイスは、ユーザの位置に応じて使用されるように自動的に構成される。サービス発見アプリケーションは、デバイスがどこにあるかに応じて特定のサービスを提供できるように、デバイスに照会してその位置を判断することができる。例えば、ユーザが最も近いカラープリンタを突き止めるようアプリケーションに依頼する場合、サービス発見アプリケーションは、位置サービスモジュールに照会してデバイスの現在位置を確認することができ、したがってこの情報を用いて最も近いカラープリンタを見つけることができる。また、アウトルックアプリケーションは、職場の位置（個人が仕事中のとき）または家の位置（個人が家にいるとき）に電子メールを送るようにそれ自体を構成することができることも考慮されたい。さらに、アウトルックカレンダーをロケーションアウェアにすることもできる。例えば、時間帯を変更したときでも自分の日時の約束が正しい時間枠中に現れることになる。
【００９４】
想像できるように、可能性は無限であると思われる。この機能は、マスタワールドと１つ以上のセカンダリワールドとを使用することによって可能となる。
【００９５】
（アプリケーションプログラムインタフェース／イベント）
記載された実施形態では、アプリケーション７１８ａ〜７１８ｃは、１つ以上のアプリケーションプログラムインタフェース（ＡＰＩ）および／またはイベントを介して位置サービスモジュール７２０と通信する。アプリケーションは、ＡＰＩに対する関数呼び出しを行って、位置サービスモジュールにその現在位置について照会することができる。同様に、アプリケーションは、イベント登録プロセスを用いて位置通知の登録をすることができる。例えば、アプリケーションは、ユーザが自分の位置を変更したときの通知の登録をすることができる。アプリケーションがデバイスの構成（プリンタ構成など）を変更できるように、ユーザが職場または家に着いたときに通知を受けるようアプリケーションが要求する場合を考えてみて欲しい。
【００９６】
図９は、記載された実施形態による方法のステップを記述した流れ図である。記述されているこれらのステップは、デバイス６００によって行われる。ステップＳ９００で、デバイスの現在のコンテキストに関係する情報を受け取る。この特定の例では、情報の一部を１つ以上のコンテキストプロバイダから受け取るが、コンテキストプロバイダは、この場合は位置プロバイダである。ステップＳ９０２で、デバイス上でデバイスによって情報を処理して、デバイスの現在のコンテキストを確認する。図示の例では、デバイスは、マスタワールドと１つ以上のセカンダリワールドのうち、１つ以上を維持する（またはこれらにアクセスすることができる）。デバイスは、すべてのロケーション情報を受け取ると、これらの世界を定義する階層ツリー構造中の特定ノードにこれらの情報をマッピングする。次いで、ツリー構造を走査して、デバイスの完全なコンテキスト（すなわち位置）を確認する。ステップＳ９０４で、デバイスの現在のコンテキストすなわち位置に関係する情報を要求する呼び出しを、１つ以上のアプリケーションから受け取る。図示の例では、アプリケーションは、１つ以上のＡＰＩを呼び出して情報を要求することもでき、あるいはイベント通知の登録をすることもできる。次いでステップＳ９０６で、現在のデバイス位置に関係する少なくともいくつかの情報をアプリケーションに供給する。後で論じるように、アプリケーションに情報を返す前にセキュリティポリシーまたはプライバシーポリシーを情報に適用することもできる。
【００９７】
（プライバシーマネージャ）
一実施形態では、プライバシーマネージャ７０４（図７）が提供される。プライバシーマネージャはデバイス上に組み込まれたものとして示してあるが、信用できるサーバなど、モバイルコンピューティングデバイスの一部ではない信用できるエンティティによって実装することもできる。プライバシーマネージャは、適した任意のハードウェア、ソフトウェア、ファームウェア、またはこれらの組合せの中に実装することができる。図示の例では、プライバシーマネージャは、モバイルコンピューティングデバイスに組み込まれたソフトウェアモジュールを構成する。
【００９８】
プライバシーマネージャ７０４は、コンピューティングデバイスによって収集された情報に関連するプライバシー問題に対処する。具体的には、位置サービスモジュールは、コンピューティングデバイスの位置に関する詳細な情報を計算することができる。場合によっては、様々なアプリケーションに提供される情報をフィルタリングすることが望ましいことがある。すなわち、信用できないアプリケーションに自分の具体的なロケーション情報を提供されたくない、とユーザが思う場合がある可能性は、全体的に高い。これらの場合、ユーザは位置サービスモジュール７２０に、このようなアプリケーションにはユーザがワシントン州にいることだけを通知するよう望むことができる。
【００９９】
図１０に、記載された実施形態によるプライバシー保護方法のステップを記述した流れ図を示す。これらのステップは、プライバシーマネージャ７０４によって実施することができる。
【０１００】
ステップＳ１０００で、複数のプライバシーレベルを定義する。例示的なプライバシーレベルを、直下の表に示す。
【０１０１】
【表４】
0004806143.tif 000005
【０１０２】
上に示した表では、異なる１０個のプライバシーレベルが定義されており、それぞれにおよそのスケールが関連付けられている。例えば、プライバシーレベル０は、ロケーション情報が返されないことを意味する。プライバシーレベル９０は、非常に詳細なロケーション情報が返されることを意味する。
【０１０３】
ステップＳ１００２で、１つ以上の階層ツリー構造中にある個々のノードに様々なプライバシーレベルを割り当てる。例えば、マスタワールドおよびセカンダリワールドの各ノードにプライバシーレベルを関連付けることができる。マスタワールドツリー構造のルートノードはプライバシーレベル１０を有することができ、セカンダリワールド中の現在位置を表すノードはプライバシーレベル９０を有することができる。ステップＳ１００４で、コンピューティングデバイスのコンテキストを決定する。この例ではコンテキストはデバイス位置であり、これをどのように行うかについての例は先に述べた。位置サービスモジュールを呼び出す個々のアプリケーションには、プライバシーレベルを関連付けることができる。これらのプライバシーレベルは、個々のユーザが割り当てることができる。例えば、信用できるアプリケーションはプライバシーレベル９０を有し、信用できないアプリケーションはプライバシーレベル３０を有する。ステップＳ１００６で、１つ以上のアプリケーションからコンテキストクエリーを受け取る。このときアプリケーションは、位置サービスモジュール７２０（図７）を呼び出してデバイスの位置を確認する。ステップＳ１００８で、アプリケーションに関連するプライバシーレベルを決定する。例えば、信用できないアプリケーションがロケーション情報を要求する呼出しを行う場合、プライバシーマネージャ７０４は、このアプリケーションがプライバシーレベル３０を有すると決定する。次いでプライバシーマネージャは、１つ以上の階層ツリー構造を走査（ステップＳ１０１０）して対応するプライバシーレベルを有するノードを見つけるので、そのノードに関連する情報を選択することができる。この例では、走査は、ユーザの位置する州に対応するノードを見つけるためにセカンダリワールドからマスタワールドにジャンプすることを含むことがある。対応するノードが見つかると、ステップＳ１０１２で、このノードに関連するコンテキスト情報（例えばロケーション情報）を返す。この場合、位置サービスモジュールは、ユーザの位置がワシントン州であることをアプリケーションに通知することになる。
【０１０４】
一例として、次のことを考えてみる。様々な位置の詳細な天気まで提供するウェブサイトがある。したがって、自分の現在の完全な郵便番号に対応する地理領域に対する天気情報を受け取ることができるように、このウェブサイトにプライバシーレベル６０を割り当てることができる。別のウェブサイトは、信用できるウェブサイトであるコーポレーションイントラネットウェブサイトである。したがって、このウェブサイトに関連するどのようなアプリケーションにもプライバシーレベル９０が割り当てられ、それにより、これらのアプリケーションには自分の所在に関する正確なロケーション情報を提供することができる。
【０１０５】
したがってこの例では、コンピューティングデバイスは、そのクエリーのソース（すなわちアプリケーション）を決定し、そのアプリケーションに返す情報をアプリケーションの識別に応じて調整することができる。コンピューティングデバイスは、マスタワールドと１つ以上のセカンダリワールドにアクセスできるので、これを行うことができる。上述の説明は、この効用を成す方式のほんの一例を構成するにすぎない。
【０１０６】
位置プロバイダとしての位置ビーコン
一実施形態では、位置プロバイダの１つは、コンピューティングデバイスが、その現在のコンテキストにアクティブに参与できるようにするための情報を、指示または送信する、位置ビーコンを含む。位置ビーコンは、電源が得られるように既存のインフラストラクチャ、例えば煙探知機や壁の排気口に後付けすることのできる、スタンドアロンデバイスで構成することができる。
【０１０７】
図１１に、構造物１１０２上に搭載された例示的なビーコン１１００を示す。構造物１１０２は、会議室や公共の場所の壁、煙探知機、電気ソケットなど、適した任意の構造とすることができる。記載された実施形態では、位置ビーコンは、会議室、建物ロビー、空港ゲート、公共の場所などの特別な位置に永続的に搭載することのできる、小型で安価なデバイスである。ビーコンは、ラップトップ、タブレットＰＣ、ハンドヘルドコンピュータ、移動電話、ウェアラブルコンピュータなど、範囲内にあるすべての移動デバイスに物理的位置をＥＩＤおよび／またはＬＵＩＤの形で通知する。
【０１０８】
記載された実施形態では、位置ビーコンは、モバイルコンピューティングデバイスに理解される標準情報を指示することにより、その特定の位置を識別することができる。この例では、ビーコンは、ＥＩＤ／ＵＲＬのペアおよびＬＵＩＤ／ＵＲＬのペアを含む１つ以上の位置識別子のペアを送信することができる。ビーコンはまた、複数のＬＵＩＤを送信することもできる。ＥＩＤおよびＬＵＩＤは、マスタワールドとセカンダリワールドのそれぞれにおける現在のノード位置を提供する。ＵＲＬは、マスタワールドおよびセカンダリワールドに対する到達可能な位置を提供する。例えば、セカンダリワールドに関連するＵＲＬは、デバイスがセカンダリワールドに関する情報を照会するのに使用できるサービス位置を提供することができ、したがってデバイスは、そのコンテキストを引き出して、セカンダリワールドの中のそのノードに関連するリソースまたはサービスを利用することができる。
【０１０９】
ビーコンはまた、ビーコンが有効かつ本物であることを確認するためにデバイスが使用できる、ディジタル署名を送信することもできる。適した任意の署名方法または検証方法を用いることができる。加えて、コンテキストアウェアな環境で特に役立つが、ビーコンは、範囲内のデバイスにコードダウンロードポインタを送信するようにプログラムすることもできる。コードダウンロードポインタにより、コンピューティングデバイスは、それらの環境と対話することを可能にするソフトウェアコードにアクセスすることができる。次の例を考えてみる。あなたが自分の携帯電話のコンピューティングデバイスを持って会議室の中に歩いていくと、会議室内のビーコンは、すぐにあなたの位置をＥＩＤ／ＵＲＬのペアおよびＬＵＩＤ／ＵＲＬのペアの形で送信する。あなたのデバイスは、その情報のペアを使用して、前述のようにマスタワールドおよびセカンダリワールドにおけるその位置を確認する。ビーコンはまた、あなたの携帯電話を使用して会議室内のビデオプロジェクタを操作できるようにするソフトウェアコードを指すコードダウンロードポインタも送信する。このようにして、ビーコンは単なる位置ビーコン以上の働きをする。ビーコンは、あなたが自分のコンピューティングデバイスを介して自分の周囲にアクティブに参与することを可能にする。
【０１１０】
ビーコンは、適した任意の方法、例えば赤外線や無線周波を含めた無線方法で情報を送信することができる。一実施形態では、ブルートゥース短距離無線周波通信を用いて、低コストかつ低電力の代替方法を提供することもできる。
【０１１１】
コンテキスト指向企業用コンピューティングポリシー
（概要）
コーポレーションまたは「企業」はしばしば、コーポレーションまたは企業のメンバがメンバ同士と、かつ、コーポレーションのコンピューティング環境にいる間に使用できるコーポレーションまたは企業のリソースとリンクできるようにするのに使用される大規模なコンピュータネットワークを管理する。例えば、会社は通常、様々なメンバに、メンバの様々な業務の遂行を補助するのに使用されるコンピューティングデバイス（すなわちコンピュータ、ラップトップ、ハンドヘルドデバイス、モバイルまたは携帯用コンピューティングデバイスなど）を提供することができる。企業にとっての継続的な困難は、コンピューティングデバイスに関するポリシーを効果的かつ効率的に発布し施行する方式を見つけることである。企業ポリシーは、企業によって確立された規則の集りと考えることができ、企業のコンピューティングデバイスに関してコンピューティング環境の様々なパラメータを定義するように施行可能である。誰が、またはどのデバイスがどのリソースにアクセスできるか、どのようにリソースを使用すべきか、どのようにコンピューティングデバイスを使用すべきか、どこでコンピューティングデバイスを使用すべきであり、どこで使用すべきでないかなどに関する考慮はすべて、何らかの形で、その企業用システム管理者が定義するポリシーの影響を受ける可能性がある。
【０１１２】
過去においてポリシーは、主としてユーザまたはデバイスのネットワーク識別に基づいて、および／またはおそらくデバイスの機能または能力に基づいて定義され施行されてきた。例えば、会社に利用されている種々のタイプのリソースにそれぞれ関連する複数のサーバを有する会社の状況を考えてみる。あるサーバは会社の財務リソースに関連する。これらのリソースは、会社の財務グループ中の個人にしか必要とされない。したがって、ユーザの識別（すなわち、そのユーザは財務グループの中にいるか？）に基づいて、および／またはサーバにアクセスしようとするコンピュータ（すなわち、そのコンピュータは専用の財務グループコンピュータか？）に基づいてこれらのサーバへのアクセスを制限するポリシーをシステム管理者が定義することができる。このシナリオでは、ユーザおよびデバイスの識別、および／またはこれらの物理的位置に基づいてポリシーを確立することができる。
【０１１３】
企業ポリシーを確立し施行するための従来のモデルは、将来的には、ユーザがユーザ自身を見い出すというフレキシブルなコンピューティング環境を考慮した新しい発明的モデルに大いに道を譲らなければならなくなりつつある。
【０１１４】
記載された実施形態によれば、有利にもコンピューティングデバイスのコンテキストのみならずデバイスのコンテキストの変化も考慮した、企業ポリシーの確立および施行の方法およびシステムが提供される。デバイスのコンテキストを確認し、次いで、このコンテキストに関連するポリシーを施行する。デバイスのコンテキストが変化した場合は、適切ならば新規または追加のポリシーを施行することができる。残りの考察を通して例として用いる特定の実施形態では、デバイスのコンテキストはデバイスの特定位置を構成する。ただし、位置はデバイスコンテキストの一例として用いるにすぎず、記載の原理をどのように特定の例で採用できるかを読者が理解するのを助けるために用いるものであることを理解および認識されたい。したがって、その他のデバイスコンテキストを使用することもできる。一例として、コンピューティングデバイスのコンテキストは、デバイスの環境にある任意のものに関係するものでよく、またコンピューティングデバイスの周りで起こっていることに関係してもよい。コンピューティングデバイスのコンテキストの定義態様として、周囲温度や照明条件などを考えることができる。
【０１１５】
記載された実施形態では、コンピューティングデバイスにポリシーが備わるが、そのいくつかは企業用コンピューティングに関係するものである。これらのポリシーは、システム管理者がそれらのコンテキスト依存性によって定義することができ、したがって、コンピューティングデバイスのコンテキストが変化したときは、そのデバイス上で適用されるポリシーセットもまた変化する。ポリシーは、コンテキストまたは具体的な例では位置の、一般的な抽象表現または論理表現で表すことができる。このコンテキストの一般的な抽象表現または論理表現は、有利にも、プライマリおよびセカンダリ階層ツリー構造を利用してコンテキスト、具体的には位置を確認する前述の技法およびシステムを用いることによって提供することができる。前述のようにポリシーが施行されるようにするためには、コンテキストまたは位置を確認するための適した任意の方式を利用することができることを認識および理解されたい。
【０１１６】
図示の例では、各コンピューティングデバイスはソフトウェア中に実装されたポリシーエンジンを有し、このポリシーエンジンは、コンテキスト情報またはコンテキストの変化に関連する情報を受け取る。この受信情報に基づいて、ポリシーエンジンは様々なポリシーを評価して得られるポリシーセットを提供する。このポリシーセットは、通常はデバイスのオペレーティングシステムを介してデバイスについて施行される。例えば、あるコンピューティングデバイスが、前述のようにデバイス上でセカンダリワールドを使用することによって確認される特定の安全なコンピューティング領域に位置する。この安全なコンピューティング領域中では、このコンピュータのユーザは、確立されたポリシーに従って機密性質の文書を自由に扱うことができる。しかし、安全なコンピューティング領域を離れると、コンピューティングデバイスはその位置を決定し（すなわち、もはや安全なコンピューティング領域に位置しないと決定し）、ポリシーエンジンはポリシーを評価して得られる新しいポリシーセットを提供し、次にこのポリシーセットが施行される。新しいポリシーは、安全な領域の外では機密文書にアクセスすることまたはそれを使用することを許可しない。あるいは、安全な領域の外では文書の機密部分がブランクとされる。
【０１１７】
例示的なアーキテクチャ
図１２では、コンテキスト指向企業用コンピューティングポリシーを実施するように構成された例示的なアーキテクチャまたはシステムを１２００に一般に示す。このアーキテクチャは、適当な任意のハードウェア、ソフトウェア、ファームウェア、またはこれらの組合せの中に実装することができる。図示の例では、このアーキテクチャは、企業用コンピューティングデバイスの一部を構成するソフトウェア中に実装されている。余談になるが、記載された実施形態の態様は、企業用コンピューティングデバイスのコンテキストで述べるものの、企業用コンピューティングデバイスに依存せずに実施することもできることを認識および理解されたい。
【０１１８】
システム１２００は、コンテキスト情報またはコンテキスト変化イベントを提供するコンテキストサービス１２０２を備える。適したコンテキストサービスについては、図６を参照して先述してある。ロケーションサービスの形をとるコンテキストサービスの特定の例については、図７を参照して先述してある。ポリシーエンジン１２０４が備わるが、これは、ポリシーを評価し、デバイスの現在コンテキストに基づいて、適用される結果的なポリシーセットを決定することを担う。次いで、得られたポリシーセットがデバイスについて施行される。ポリシーの施行は、デバイス上またはデバイスから離れたところで実行できる様々なアプリケーション１２０６に新しい設定または「状態（state）」を発布することを含む可能性がある。
【０１１９】
デバイス、すなわちより具体的にはポリシーエンジン１２０４は、異なるいくつかのポリシーソースからポリシーを受け取ることができる。例示的なポリシーには、デバイスに関係し、デバイスの所有者からくるデバイスポリシー１２０８や、デバイスがその内部で動作できる１つ以上のネットワークに関係し、それらのネットワークを管理するネットワーク管理者からくるネットワークポリシー１２１０や、デバイスが関連する企業に関係し、企業管理者からくる企業ポリシー１２１２を含めることができる。これらのポリシーはすべて、ポリシーエンジンへの入力として提供することができる。ポリシーエンジンは、現在のデバイスコンテキストの結果としてポリシーを評価して得られるポリシーセットを決定し、このポリシーセットが次にデバイスについて施行される。ポリシーエンジン１２０４はまた、ユーザ識別および属性１２１４と、デバイス識別および属性１２１６を入力として受け取ることもできる。これらの入力はすべて、ポリシーエンジン１２０４によって実施される評価の考慮に入れることができる。
【０１２０】
ポリシーオーサリング
一実施形態では、ポリシー出所の領域で利点が達成される。具体的には、この場合システム管理者は、多くの様々なコンテキストに適用できるリッチかつ堅固かつフレキシブルなポリシーセットを作成し定義する機会を得ることができる。このことは、ユーザまたはデバイスの識別および／あるいはおそらくデバイスの静的位置に基づくポリシー定義しか可能でなかった、相対的にフレキシブルでない過去のシステムからの注目すべき脱却となる。記載された実施形態によれば、ポリシー設定を定義し、次いで動的な方式で施行することができる。
【０１２１】
図１３に、異なる複数のポリシーセットを含むポリシー集合（a policy collection）１３００を示すが、例示的なポリシーセットを１３０２、１３０４、および１３０６に示す。ポリシーセット１３０２は、「コンテキストタイプ１」として指定された第１のデバイスコンテキストに関連し、ポリシーセット１３０４は、「コンテキストタイプ２」として指定された第２のデバイスコンテキストに関連し、ポリシーセット１３０６は、「ロケーション（location）」として指定された、位置の形をとる第３のデバイスコンテキストに関連する。システム管理者１３０８は、様々なポリシーを定義し、それらのポリシーを特定のコンテキストタイプに関連付けることができる。次いで、定義されたポリシーはまとまって、ポリシーエンジン（例えばポリシーエンジン１２０４）によって評価することのできるポリシー集合を形成し、したがって、デバイスのコンテキストが変化するのに伴って、デバイスに適用される結果的なポリシーセットも変化する。さらに、ポリシー施行技術を構築している時点では、ポリシーが作成される様々なコンテキストがわかっていなくてもよい。
【０１２２】
一例として、次のことを考えてみる。特定の企業において、いくつかのコンピューティングデバイスは企業の構内を離れることのない特別なコンピューティングデバイスであると考える。おそらく、これらのコンピューティングデバイスに関連する機密性質のリソースがある。例えば、企業が新しい所有権を主張できるソフトウェア（proprietary software）をコンピューティングデバイス上でテストしている場合がある。この場合、システム管理者は、特別なコンピューティングデバイスが企業の構内を離れた場合にこのコンピューティングデバイスはロックがかかって誰にも使用できなくなるか、所有権を主張できるソフトウェアを除去するかのいずれかになることを確立するポリシーを定義する。記載された実施形態によれば、これらの特別なコンピューティングデバイスは、デバイスに搭載されたロケーションサービスからそれらの位置を決定することができる。例示的なロケーションサービスについては先述してある。コンピューティングデバイスが企業の構内を離れたときは、ロケーションサービスがデバイスのポリシーエンジン１２０４（図１２）にロケーション情報を提供する。例えば、適切なセカンダリワールド内の新しいノードにデバイスが移動した場合、この情報を用いてポリシー再評価がトリガされる。次いでポリシーエンジンは、ポリシー集合１３００を評価して、デバイスの新しい位置に特有の、得られる新しいポリシーセットを提供する。次に、新しいポリシーが前述のようにデバイスのオペレーティングシステムを介して施行される。記載された実施形態ではポリシーエンジンはオペレーティングシステムの信用できるリソースなので、ポリシーの施行は安全である。この特定の例では、施行は、デバイスを誰にも使用できないようにロックすること、または所有権を主張できるソフトウェアをデバイスから永久に除去することを含む。
【０１２３】
図１４は、記載された実施形態によるポリシーオーサリング方法のステップを記述した流れ図である。この方法は、適当な任意のハードウェア、ソフトウェア、ファームウェア、またはこれらの組合せの中で実施することができる。図示の例では、この方法はソフトウェア中で実施される。
【０１２４】
ステップ１４００において、コンテキストの一般的な抽象表現または論理表現を提供する。図示の例では、このステップは、前述のプライマリ階層構造およびセカンダリ階層構造を使用することによって実施する。この具体的な例では、プライマリ階層構造およびセカンダリ階層構造は、プライマリワールドおよび１つ以上のセカンダリワールドを構成する。ステップ１４０２において、コンテキストの一般的な抽象表現または論理表現に応じて、１つ以上のポリシーを表現する。位置の例では、位置の抽象表現、すなわちプライマリワールドおよび／あるいは１つ以上のセカンダリワールドに応じてポリシーを表現する。このステップは、ポリシー集合を構成することになるポリシーをシステム管理者が定義することによって実施することができる。次いでステップ１４０４において、表現したポリシーが１つ以上のコンピューティングデバイスによって使用可能となるようにする。図示の例では、コンピューティングデバイスは企業用コンピューティングデバイスを含む。ポリシーは、適当な任意の形でデバイスについて使用可能とすることができる。例えばポリシーは、企業内ネットワークを介して、または無線で、またはその他の形でデバイスに提供することができる。
【０１２５】
ポリシーの動的な評価および施行
ポリシー集合を前述のように定義すると、ポリシー集合は次に、適合可能であり動的でありコンテキストを反映しやすいポリシー評価および施行環境の基礎として使用することができる。ポリシー集合は、変化するものの中でもとりわけ物理的および／または論理的な位置について定義されたポリシーを有することができる。プライマリワールドからは物理的な位置を提供することができ、１つ以上のセカンダリワールドからは物理的および論理的な位置を提供することができる。
【０１２６】
図１５は、記載された実施形態によるポリシー評価および施行方法のステップを記述した流れ図である。この方法は、適当な任意のハードウェア、ソフトウェア、ファームウェア、またはこれらの組合せの中で実施することができる。図示の例では、この方法は、企業用コンピューティングデバイスなど１つ以上のコンピューティングデバイス上で実行されているソフトウェア中で実施される。
【０１２７】
ステップ１５００において、１つ以上のポリシーセットを含むポリシー集合を提供する。各ポリシーセットは、１つ以上の個別ポリシーを有することができる。ポリシーは、前述のようにコンテキストの一般的な抽象表現または論理表現で表すことができる。ポリシーは、企業用コンピューティングデバイスに記憶することができ、コンピューティングデバイスによって適当な任意の方式で獲得することができる。あるいはポリシーは、サーバなどアクセス可能なコンピューティングデバイスに記憶してもよい。ステップ１５０２において、コンピューティングデバイスのコンテキストを決定（ｄｅｔｅｒｍｉｎｅ）する。このステップは、コンテキストプロバイダからデバイスに提供されるコンテキスト情報を処理できるソフトウェアをデバイスが有する限り、前述の技法を用いて実施することができる。ある特定の実装形態では、コンテキスト情報はロケーション情報の形で提供される。コンピューティングデバイスは、より間接的な方式でそのコンテキストを決定することもできることを認識および理解されたい。具体的には、コンピューティングデバイスは、コンテキストサービスを使用して直接にデバイスコンテキストを決定するのではなく、他のデバイス、ネットワーク、ウェブサイトなどからそのコンテキストを決定することもできる。一例として、コンピューティングデバイスがその位置をロケーションサービスから決定するが、その位置に関連する別のコンテキストを決定したいと思う場合を考えてみる。コンピューティングデバイスは、その位置がわかっていることにより、その特定位置に特有のコンテキストのリストを保持するウェブサイトにアクセスすることができる。このウェブサイトはおそらく、温度、照明条件、花粉数などを追跡する。したがって、このステップはまた、コンピューティングデバイスがそのコンテキストを間接的に決定することによって実施することもできる。
【０１２８】
ステップ１５０４において、コンテキスト情報に基づいてポリシー集合を評価して得られるポリシーセットを提供する。このステップは、コンピューティングデバイス上のポリシーエンジンによって実施することができる。すなわち、このステップは、コンピューティングデバイス自体においてローカルに実施することができる。別法としてこのステップは、適当なネットワークを介してアクセス可能なサーバなど別のコンピューティングデバイスによって、コンピューティングデバイスからリモートのところで実施することもできる。この場合、ポリシーエンジンは、ポリシーの施行対象であるサブジェクトコンピューティングデバイスからリモートに位置することが可能である。次いでステップ１５０６において、得られたポリシーセットをデバイスについて施行する。このステップは、ポリシーエンジンが、デバイス上またはデバイスから離れたところで実行されているか実行できる様々なアプリケーションに、得られた設定または状態が発布されるようにすることによって実施することができる。別法としてこのステップは、前述のサーバなどのリモートコンピューティングデバイスが、得られたポリシーセットをコンピューティングデバイスにあてがうことによって実施することもできる。ステップ１５０８において、コンテキストの変化があったかどうかを判定する。このステップは、デバイスがコンテキストプロバイダからコンテキスト情報を受け取り、次いでこのコンテキスト情報を用いて、プライマリ階層ツリー構造および／またはセカンダリ階層ツリー構造に基づいてデバイスが実際にコンテキストの変化を受けたかどうかを判定することによって実施することができる。このステップはまた、デバイスが前述のように間接的にそのコンテキストを決定することによって実施することもできる。デバイスがコンテキストの変化を受けた場合は、本方法は分岐してステップ１５０２に戻り、デバイスの新しいコンテキストを決定し、前述のステップを繰り返すことができる。一方、デバイスがコンテキストの変化を受けていない場合は、本方法は分岐してステップ１５０６に戻り、現在結果のポリシーセットの施行を継続する。
【０１２９】
このプロセスは、新しいデバイスコンテキストまたはユーザコンテキストに動的に適合可能なポリシーを有するシステムを実現する。この場合、携帯用の企業用コンピューティングデバイスが、それらの現在コンテキストを自動的に決定することができ、様々なコンテキストに適合されたポリシーが自動的に実装されるようにすることができる。デバイスコンテキスト、例えば物理的または論理的な位置が変化するのに伴って、デバイスについて施行されるポリシーも変化することができる。ポリシーは、システムリソースを適切に保護および管理するための堅固なツールセットを今や自由に使えるシステム管理者が、物理的および／または論理的な位置によって表現することができる。
【０１３０】
前述の原理を読者が理解するのをさらに補助するために、以下の例を提供する。以下は、この発明的な原理を採用できる例示的なシナリオを構成するにすぎないことを認識および理解されたい。これらの具体的なシナリオは、特許請求する主題（subject matter）の適用をいかなる形でも限定するものではない。
【０１３１】
(例１)
ある特定のユーザが、強力な（例えば１２８ビット）暗号化機能付きの企業用コンピューティングデバイスを有する。このユーザは、米国を離れて外国に渡り、様々な顧客を訪ねなければならない。連邦規定は、１２８ビット暗号化機能付きのコンピューティングデバイスの輸出は禁じているが、６４ビット暗号化機能付きのデバイスの輸出は許可している。したがって、ユーザのデバイスが米国を離れたことをデバイスが前述のロケーションサービスによって決定したとき、デバイスに搭載されたポリシーは、暗号化強度が自動的に低下するようにする。
【０１３２】
(例２)
ユーザが、特定の証明書で暗号化されたファイルシステムの一部を自分のコンピューティングデバイス上に有すると仮定する。これらの特定ファイルは米国を離れないことが企業によって望まれている。ユーザのコンピューティングデバイスが、デバイスの位置がもはや米国にはないことを確認した場合、コンピューティングデバイスに搭載されたポリシーは、証明書が永久に削除されるようにする。この場合、ユーザのファイルシステムの暗号化部分にアクセスするためには、ユーザは米国に戻って証明書を再入手しなければならない。
【０１３３】
(例３)
ユーザのコンピューティングデバイスがＩＳＰとの接続を確立しようとするときにコスト節約のために市内電話番号（または１−８００番号）を使用することを必要とするポリシーを、コンピューティングデバイスが有することができる。このポリシーは、ユーザが町から離れているとき、コンピューティングデバイスがユーザの現在位置に関連する市内番号だけに電話をかけてＩＳＰとの接続を確立するようにする。
【０１３４】
(例４)
企業用コンピューティングデバイスがコーポレーションのキャンパスから離れているときはユーザログインを使用しなければならず、デバイスへのログインに２度失敗すると自動的にデバイスがロックされるポリシーを、システム管理者が確立する。このロックは、デバイスがコーポレーションのキャンパスに戻るまで、そのままかかっていることになる。したがって、ユーザのデバイスが盗難にあった場合でも、盗んだ人がデバイスにログインすることはあり得ない。
【０１３５】
(例５)
コーポレーションのキャンパスの外からのコンピューティング時に複数の認証方法（すなわちスマートカード、パスワード、バイオメトリック）を必要とするポリシーが、システム管理者によって確立される。したがって、ユーザがコーポレーションのキャンパスからコンピューティングデバイスを移動させたときは、デバイスはデバイスがもはやそこにないことを検出し、ポリシーエンジンは強化された認証が行われるようにする。
【０１３６】
(例６)
コンピュータの使用およびそのような使用が行われる位置を監査またはおそらく課金のためにログしなければならないポリシーを、システム管理者が確立する。したがって、ユーザは移動し、このポリシーは、すべてのコンピュータ使用が、それに関連する位置と共にログされることを保証する。
【０１３７】
(例７)
一体化した企業は、多くの建物のある広いキャンパスを有する。従業員は通常、ミーティングやプレゼンテーションなどのために、一日を通して様々な建物の間を移動する必要がある。従業員の中には、電話またはメッセージを取り逃さないことを欠くことが出来ない者もいる。したがってシステム管理者は、すべてのまたは選択されたコンピューティングデバイスがコーポレーションのキャンパスではそれらの位置を中央サーバに報告しなければならないポリシーを作成する。報告された位置に基づいて、電話を自動的に特定の個人がいる会議室またはミーティング室に直接ルーティングすることができる。
【０１３８】
(例８)
システム管理者は、コーポレーションのキャンパスにあるときは企業用コンピューティングデバイス上のすべてのゲームがディセーブルになるポリシーを確立する。したがって、コンピューティングデバイスの位置がコーポレーションのキャンパス内であるとコンピューティングデバイスが決定したときは、ポリシーエンジンは、デバイス上のすべてのゲームがディセーブルになるようにする。コンピューティングデバイスがもはやコーポレーションのキャンパスにないとデバイスが決定したときは、ポリシーエンジンはポリシー集合を再評価し、ゲームがイネーブルになるようにする。
【０１３９】
(例９)
コンピューティングデバイスがコーポレーションのキャンパスにあるとき、物理的に最も近いプリンタがそのコンピューティングデバイスに対するデフォルトプリンタになるべきであるというポリシーを確立する。したがってコンピューティングデバイスは、その位置を決定し、この決定および支配中のポリシーに基づいて、最も近い物理プリンタを自動的にデフォルトプリンタに選択する。デバイスがコーポレーションキャンパスの付近を移動するのに伴い、ポリシーエンジンによって受け取られたロケーション情報によってエンジンがポリシー集合を再評価して、最も近い物理プリンタがデフォルトプリンタに選択されることを確実にする。このポリシーは、デバイスが移動してコーポレーションのキャンパスから離れたときにディセーブルにすることができる。
【０１４０】
(例１０)
企業は、従業員のモバイルホンとモバイルコンピュータとが異なる物理的位置を報告したとき、従業員が自分のコンピュータから離れている可能性が高いと判定する。（この例では、コンピューティングデバイスは両方とも、それぞれの物理的位置を決定してそれを中央サーバに報告することができる点でコンテキスト使用可能である。）したがって管理者は、セキュリティのために、このような場合にモバイルコンピュータに対するログインがディセーブルになるポリシーを作成する。したがって、モバイルホンとモバイルコンピューティングデバイスとが同じ物理的位置を報告するときにだけ、ログインがイネーブルになる。
【０１４１】
(結び)
以上に述べた実施形態は、コンテキスト指向コンピューティングの世界を向上させる、一様で標準化された方式を提供する。これらの実施形態は、個人の周りの世界における個人の位置を標準的な方式で確認することにより、周りの世界を独自に体験する方式を個人に提供する。これらの実施形態はまた、グッズおよびサービスの様々な消費者のコンテキスト（例えば位置）に反応しやすくそれらを理解する形で、サービスプロバイダが自分のグッズおよびサービスを独自に配置する方式も提供する。独自かつ有用なアーキテクチャおよびデータ構造を採用して、ユーザのコンピューティング体験を容易にし、個人中心の体験を提供する。
【０１４２】
本発明を構造上の特徴および／または方法論的ステップに特定した言葉で述べたが、頭記の特許請求の範囲に定義する本発明は、述べた特定の特徴またはステップに必ずしも限定されないことを理解されたい。そうではなく、これらの特定の特徴およびステップは、特許請求する本発明を実施するのに好ましい形として開示するものである。
【図面の簡単な説明】
【図１】本発明の実施形態の、使用できる例示的なコンピューティングデバイスの図である。
【図２】本発明の実施形態の、例示的なマスタワールドおよび例示的なセカンダリワールドの概念図である。
【図３】本発明の実施形態の、マスタワールドおよびセカンダリワールドとこれらの相互関係との例示的かつ具体的な図である。
【図４】本発明の実施形態の、方法のステップを記述した流れ図である。
【図５】本発明の実施形態の、方法のステップを記述した流れ図である。
【図６】本発明の実施形態の、例示的なコンピューティングデバイスアーキテクチャの高レベルの図である。
【図７】本発明の実施形態の、例示的なコンピューティングデバイスアーキテクチャのややさらに具体的な図である。
【図８】本発明の実施形態の、方法のステップを記述した流れ図である。
【図９】本発明の実施形態の、方法のステップを記述した流れ図である。
【図１０】本発明の実施形態の、方法のステップを記述した流れ図である。
【図１１】本発明の実施形態の、例示的な位置ビーコンの側面図である。
【図１２】記載された一実施形態によるアーキテクチャを示すブロック図である。
【図１３】記載された一実施形態によって提供することのできるポリシー集合を示すブロック図である。
【図１４】記載された実施形態による方法のステップを記述した流れ図である。
【図１５】記載された実施形態による方法のステップを記述した流れ図である。
【符号の説明】
１３０  コンピュータ
１３２  プロセッサ
１３４  システムメモリ
１３６  バス
１３８  ＲＯＭ
１４０  ＲＡＭ
１４２  ＢＩＯＳ
１４４  ハードディスクドライブ
１４６  磁気ディスクドライブ
１４８  磁気ディスク
１５０  光ディスクドライブ
１５２  光ディスク
１５４  ＳＣＳＩインタフェース
１５６  シリアルポート
１５８ａ、１５８ｂ  オペレーティングシステム
１６０ａ，１６０ｂ，１６０ｃ  アプリケーションプログラム
１６２ａ，１６２ｂ  その他のプログラムモジュール
１６４ａ，１６４ｂ  プログラムデータ
１６６  キーボード
１６８  ポインティングデバイス
１７０  キーボード／マウスインタフェース
１７２  モニタ
１７４  ビデオアダプタ
１７６  リモートコンピュータ
１７８  メモリ記憶装置
１８０  ローカルエリアネットワーク
１８２  ワイドエリアネットワーク（ＷＡＮ）
１８４  ネットワークインタフェース（ＬＡＮ）
１８６  モデム
２００，３００  マスタワールド
２０２，２０６  ノード
２０４，３０２  セカンダリワールド
６００  コンピューティングデバイス
６０２  コンテキストサービスモジュール
６０４ａ，６０４ｂ，６０４ｃ  コンテキストプロバイダ
６０６ａ，６０６ｂ，６０６ｃ  コンテキストソース情報
６０８ａ，６０８ｂ，６０８ｃ，７１８ａ，７１８ｂ，７１８ｃ，１２０６  アプリケーション
７００  位置プロバイダインタフェース
７０２  アプリケーションプログラムインタフェース／イベントモジュール
７０４  プライバシーマネージャ
７０６  位置変換モジュール
７０８  アクティブディレクトリ
７１０  ウェブサービス
７１２  位置データベース
７１４  個人場所
７１６ａ〜７１６ｈ  位置プロバイダ
７２０  位置サービスモジュール
１１００  ビーコン
１１０２  構造物
１２００  例示的なアーキテクチャまたはシステム
１２０２  コンテキストサービス
１２０４  ポリシーエンジン
１２０８  デバイスポリシー
１２１０  ネットワークポリシー
１２１２  企業ポリシー
１２１４  ユーザ識別および属性
１２１６  デバイス識別および属性
１３００  ポリシー集合
１３０２，１３０４，１３０６  ポリシーセット
１３０８  システム管理者
【図１】
0004806143.tif 000006
【図２】
0004806143.tif 000007
【図３】
0004806143.tif 000008
【図４】
0004806143.tif 000009
【図５】
0004806143.tif 000010
【図６】
0004806143.tif 000011
【図７】
0004806143.tif 000012
【図８】
0004806143.tif 000013
【図９】
0004806143.tif 000014
【図１０】
0004806143.tif 000015
【図１１】
0004806143.tif 000016
【図１２】
0004806143.tif 000017
【図１３】
0004806143.tif 000018
【図１４】
0004806143.tif 000019
【図１５】
0004806143.tif 000020