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