JP2004303248A - ロケーション・アウェアネスのアーキテクチャとシステム - Google Patents

ロケーション・アウェアネスのアーキテクチャとシステム Download PDF

Info

Publication number
JP2004303248A
JP2004303248A JP2004096860A JP2004096860A JP2004303248A JP 2004303248 A JP2004303248 A JP 2004303248A JP 2004096860 A JP2004096860 A JP 2004096860A JP 2004096860 A JP2004096860 A JP 2004096860A JP 2004303248 A JP2004303248 A JP 2004303248A
Authority
JP
Japan
Prior art keywords
location
data
service
provider
plug
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2004096860A
Other languages
English (en)
Other versions
JP4729262B2 (ja
Inventor
Mohammad Shabbir Alam
シャビル アラム モハマド
Warren Vincent Barkley
ビンセント バークレー ウォーレン
Timothy M Moore
エム.ムーア ティモシー
Geoffrey E Pease
イー.ピース ジェフリー
Steven A N Shafer
エー.エヌ.シャファー スティーブン
Florin Teodorescu
テオドレスキュ フローリン
Yinghua Yao
ヨ インファ
Madhurima Pawar
パワー マドゥーリマ
John C Krumm
シー.クルム ジョン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2004303248A publication Critical patent/JP2004303248A/ja
Application granted granted Critical
Publication of JP4729262B2 publication Critical patent/JP4729262B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/52Network services specially adapted for the location of the user terminal
    • HELECTRICITY
    • H02GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
    • H02MAPPARATUS FOR CONVERSION BETWEEN AC AND AC, BETWEEN AC AND DC, OR BETWEEN DC AND DC, AND FOR USE WITH MAINS OR SIMILAR POWER SUPPLY SYSTEMS; CONVERSION OF DC OR AC INPUT POWER INTO SURGE OUTPUT POWER; CONTROL OR REGULATION THEREOF
    • H02M1/00Details of apparatus for conversion
    • H02M1/36Means for starting or stopping converters
    • HELECTRICITY
    • H02GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
    • H02MAPPARATUS FOR CONVERSION BETWEEN AC AND AC, BETWEEN AC AND DC, OR BETWEEN DC AND DC, AND FOR USE WITH MAINS OR SIMILAR POWER SUPPLY SYSTEMS; CONVERSION OF DC OR AC INPUT POWER INTO SURGE OUTPUT POWER; CONTROL OR REGULATION THEREOF
    • H02M3/00Conversion of dc power input into dc power output
    • H02M3/22Conversion of dc power input into dc power output with intermediate conversion into ac
    • H02M3/24Conversion of dc power input into dc power output with intermediate conversion into ac by static converters
    • H02M3/28Conversion of dc power input into dc power output with intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode to produce the intermediate ac
    • H02M3/325Conversion of dc power input into dc power output with intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode to produce the intermediate ac using devices of a triode or a transistor type requiring continuous application of a control signal
    • H02M3/335Conversion of dc power input into dc power output with intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode to produce the intermediate ac using devices of a triode or a transistor type requiring continuous application of a control signal using semiconductor devices only
    • HELECTRICITY
    • H02GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
    • H02MAPPARATUS FOR CONVERSION BETWEEN AC AND AC, BETWEEN AC AND DC, OR BETWEEN DC AND DC, AND FOR USE WITH MAINS OR SIMILAR POWER SUPPLY SYSTEMS; CONVERSION OF DC OR AC INPUT POWER INTO SURGE OUTPUT POWER; CONTROL OR REGULATION THEREOF
    • H02M1/00Details of apparatus for conversion
    • H02M1/0003Details of control, feedback or regulation circuits
    • H02M1/0032Control circuits allowing low power mode operation, e.g. in standby mode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/04Protocols specially adapted for terminals or networks with limited capabilities; specially adapted for terminal portability
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02BCLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO BUILDINGS, e.g. HOUSING, HOUSE APPLIANCES OR RELATED END-USER APPLICATIONS
    • Y02B70/00Technologies for an efficient end-user side electric power management and consumption
    • Y02B70/10Technologies improving the efficiency by using switched-mode power supplies [SMPS], i.e. efficient power electronics conversion e.g. power factor correction or reduction of losses in power supplies or efficient standby modes

Abstract

【課題】 位置サービスと方法は、色々なタイプの位置アウェアネスプロバイダがこのサービスを操作可能にすることで拡張可能な位置アウェアコンピューティングデバイスを実現する。
【解決手段】 方法は、位置コンテクスト要求の受信、1つまたは複数の位置検出デバイスから現在の位置に関連するデータの取得、階層型プロセスおよびメトリック・プロセスの一方又は双方の適用により現在の位置に関係する不整合に対する取得済みデータの調整、アプリケーションからアクセス可能な位置オブジェクトの生成、の各機能を備える。サービスは、位置データを送り届けるように構成された位置管理構成要素、位置データから生成された位置レポートを受信し、位置レポート間のコンフリクトを調整し、位置オブジェクトを生成するように構成したfuserエンジン、および該エンジンからアプリケーションに位置オブジェクトを送る、位置管理構成要素に結合した位置APIを備える。
【選択図】 図4

Description

本発明は、一般的には、コンピュータ・システムに関するものであり、具体的には、コンピュータ・システムおよびコンピュータ・デバイスのロケーション・アウェアネス(location awareness)に関するものである。
インターネットが出現し、コンピュータ・ユーザーが利用できる対話型アプリケーションが増えるにつれ、ユビキタス・コンピューティング(ubiquitous computing)に対する要求がますます高まってきている。このようなコンテクストで、ユビキタス・コンピューティングとは、コンピュータがユーザーの日々のタスクに影響を及ぼすことができるということを意味する。コンピュータが「コンピュータ(計算機)」と呼ばれるのは、「計算する」つまり数学に関するタスクを実行することができるからである。コンピュータは、もはや、単なるコンピューティング・マシンつまり計算機とはみなされず、パーソナル・デジタル・アシスタント(PDA)およびスケジュール管理(PIM)、高機能携帯電話などの形で社会組織にとけ込んでいるパーソナル・コンパニオン(personal companions)なのである。
今やコンピュータは、πを小数点以下20桁まで計算するのにオフィスほどの広さを必要としなくなったが、それどころか、同じ計算能力がありながら手のひらに収まるようになった。より新しいコンピューティング・ツールのパーソナル・コンパニオンのペルソナ(personal companion persona)をよく認識しているソフトウェア開発者は、コンピュータの計算機能に関する側面をユーザーからほぼ見えなくした使い勝手のよいアプリケーションを作成する。このような技術を採用することで、ユーザー・インターフェースは、かつて必要であった従来技術のコンピュータ可読パンチ・カードとは際だって対照的に、人間型のインターフェースに極めてよく似たものとなっている。コンピューティングの遍在するという(ユビキタスな)性質に影響を及ぼす、成長段階にある他の技術として、無線技術がある。無線通信および有線通信ネットワークの利用が増え、新しいタイプの無線ネットワークは、コンピュータ側がコンピュータの通信機能を有効活用する需要を生じさせた。無線とは、もはや、以前にそうであったような、自動車内にハード配線で組み込まなければならない携帯電話を意味していない。近年のリチウム・イオン電池およびその他の小型であるが強力な電池を採用することで、携帯電話、PIM、PDA、およびノートブック・コンピュータを充電せずに一度に何時間も動作させることができる。コンピューティング・デバイスは長時間動作するので、ユーザーはデバイスを使用しながら充電を心配せずにあちらこちらに移動することができる。しかし、ユーザーによる長時間運用が現実になると、以前には必要であると思われなかった、あるいは可能であるとすら考えられなかった新しいコンピューティング製品の開発の好機が巡ってきた。新しいコンピューティング製品の一種は、ロケーション・アウェアネス製品タイプと呼ばれる。
現在のロケーション・アウェアネス・デバイスは断片化されており、ひとまとまりとして動作せず、拡張性も統一性もない。例えば、グローバル・ポジショニング・システム、ホーム・ネットワーキング・システム、ローカル・エリア・ネットワーク(LAN)、およびコンピューティング・システムに接続されている無線電話はすべて、ロケーション・データをコンピュータ・システムに供給することができる。これらのシステムに、ロケーション・データの連携利用を可能にするような公約数的なものはない。それぞれのデバイスはロケーション・データをさまざまな形式で出力する。したがって、必要なものは、ロケーション・アウェアネス製品間の連携を可能にし、ユーザーによるコンピュータ・システム体験を向上させるロケーション・アウェアネス・システムである。
そこで、このロケーション・サービス(location service)は、情報のプロバイダとその情報を提供するために使用される技術に捕らわれないロケーション情報を提供する拡張性のある方法を提供する。この方法は、コンピューティング・デバイスのロケーション・コンテクストの要求を受け取ること、1つまたは複数のロケーション検出デバイス(location detection devices)から現在のロケーションに関連するデータを取得すること、現在のロケーションに関係する不整合性に対して、取得済みデータを調整する(reconciling)こと、アプリケーションにアクセス可能なロケーション・オブジェクトを生成することに向けられる。このサービスは、複数の方法、例えば、階層型プロセスおよびメトリック型プロセス(metric process)のいずれかまたは両方を適用することにより取得済みデータを調整する。
この方法を実施するために、該当するサービスは、ロケーション・データの経路を選択するように構成されているロケーション管理コンポーネント(location management component)と、例えば、データのプロバイダを介して、またデータに関するコンフリクトを解決(resolve)するように構成されているソフトウェアを介して、ロケーション・データから生成された1つまたは複数のロケーション・レポートを受信し、ロケーション・レポート間のコンフリクトを調整し、ロケーション・オブジェクトを生成する、ロケーション管理コンポーネントに結合されているfuserエンジンと、このfuserエンジンからアプリケーションにロケーション・オブジェクトを送信するためにロケーション管理コンポーネントに結合されている1つまたは複数のロケーション・アプリケーション・プログラミング・インターフェース(API)と、を備える。ロケーション・オブジェクトは、サービスが動作しているコンピュータの利用可能な最新のロケーション・コンテクストをアプリケーションに動的に供給する。
他の実施形態は、サービスのセキュリティおよびプライバシー面の課題を対象とする。例えば、ユーザー設定またはデフォルト設定により、取得されるデータについてのプロバイダの信頼性を決定することができる。電子署名を用意しているプロバイダ、または知られている発信元からのプロバイダ、またはユーザーが信頼しているプロバイダは、ロケーション・データについて信頼性の高いプロバイダとして設定できる。さらに、独立のセキュリティおよびプライバシーのフレームワークが、サード・パーティのコードがケーション・サービスのセキュリティを傷つけることのないように、また適切なプライバシー・ポリシーが機能していない場合にアプリケーションがサービスにアクセスできないように、構成される。
本発明の他の特徴および利点は、添付図を参照して進められている説明目的の実施形態の以下の詳細な説明から明白であろう。
請求項で本発明の特徴を詳細に述べているが、本発明は、その目的および利点とともに、添付図面に関する以下の詳細な説明から最もよく理解できると思われる。
図面では、類似の参照番号は類似の要素を指しており、本発明は適当なコンピューティング環境に実装されているものとして説明されている。必要とされているわけではないが、本発明を、パーソナル・コンピュータによって実行されるプログラム・モジュールなどのコンピュータ実行可能命令の一般的コンテクストで、説明する。一般に、プログラム・モジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。さらに、当業者には、本発明が、携帯型デバイス、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベースのまたはプログラム可能な家電製品、ネットワークPC、ミニ・コンピュータ、メインフレーム・コンピュータなど、他のコンピュータ・システム構成でも実施できることは明白であろう。また、本発明は、通信ネットワークを通じてリンクされているリモート処理デバイスによりタスクが実行される分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラム・モジュールは、ローカルとおよびリモートの両方のメモリ記憶デバイス内に配置することができる。
図1は、本発明を実装するのに適しているコンピューティング・システム環境100の一実施例の図である。コンピューティング・システム環境100は、適当なコンピューティング環境の一例にすぎず、本発明の用途または機能性の範囲に関する制限を示唆する意図はない。コンピューティング環境100は、オペレーティング環境例100に示されている1つのコンポーネントまたはその組合せに関係する依存関係または要求条件を備えているものと解釈すべきでない。
本発明は、他の数多くの汎用または専用コンピューティング・システム環境または構成の下で動作する。本発明とともに使用するのに適していると思われるよく知られているコンピューティング・システム、環境、および/または構成の例として、パーソナル・コンピュータ、サーバ・コンピュータ、携帯型またはラップトップ・デバイス、タブレット・デバイス、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベースのシステム、セットトップボックス、プログラム可能な家電製品、ネットワークPC、ミニ・コンピュータ、メインフレーム・コンピュータ、上記システムまたはデバイスを含む分散コンピューティング環境などがあるが、これらに限定されるものではない。
本発明は、コンピュータによって実行される、プログラム・モジュールなどのコンピュータ実行可能命令の一般的コンテクストに関して説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。また、本発明は、通信ネットワークを通じてリンクされているリモート処理デバイスによりタスクが実行される分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラム・モジュールをメモリ記憶デバイスなどのローカルおよび/またはリモート・コンピュータ記憶媒体に配置できる。
図1では、本発明を実装するシステム例は、コンピュータ110の形態をとる汎用コンピューティング・デバイスを備える。コンピュータ110のコンポーネントはこれらに限定されるものではないが、処理装置120、システム・メモリ130、およびシステム・メモリを含むさまざまなシステム・コンポーネントを処理装置120に結合するシステム・バス121を備えることができる。システム・バス121には、さまざまなバス・アーキテクチャを使用するメモリ・バスまたはメモリ・コントローラ、周辺機器バス、およびローカル・バスを含む数タイプのバス構造がある。例えば、このようなアーキテクチャとしては、Industry Standard Architecture(ISA)バス、Micro Channel Architecture(MCA)バス、Enhanced ISA(EISA)、Video Electronics Standards Association(VESA)ローカル・バス、およびMezzanineバスとも呼ばれるPeripheral Component Interconnect(PCI)バスがあるが、それらに限定されない。
コンピュータ110は通常、さまざまなコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ110によってアクセスできる媒体であればどのような媒体でも使用でき、揮発性および不揮発性媒体、取り外し可能および取り外し不可能媒体を含む。例えば、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことができるが、それらに限定されない。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造体、プログラム・モジュール、またはその他のデータなどの情報を格納する方法または技術で実装される揮発性および不揮発性、取り外し可能および取り外し不可能媒体を含む。コンピュータ記憶媒体としては、RAM、ROM、EEPROM、フラッシュ・メモリまたはその他のメモリ技術、CD−ROM、デジタル多目的ディスク(DVD)またはその他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置またはその他の磁気記憶デバイス、または目的の情報を格納するために使用することができコンピュータ110によりアクセスできるその他の媒体があるが、それらに限定されない。通信媒体は、通常、コンピュータ可読命令、データ構造体、プログラム・モジュール、または搬送波またはその他のトランスポート・メカニズムなどの変調データ信号によるその他のデータを実現し、さらに情報配信媒体を含む。「変調データ信号」という用語は、信号内の情報を符号化する方法でその特性のうち1つまたは複数が設定または変更された信号を意味する。例えば、通信媒体としては、有線ネットワークまたは直接配線接続などの有線媒体、および、音響、RF、赤外線、およびその他の無線媒体などの無線媒体があるが、それらに限定されない。上記のいずれの組合せもコンピュータ可読媒体の範囲に収まらなければならない。
システム・メモリ130は、読み取り専用メモリ(ROM)131およびランダム・アクセス・メモリ(RAM)132などの揮発性および/または不揮発性メモリの形態のコンピュータ記憶媒体を備える。起動時などにコンピュータ110内の要素間の情報伝送を助ける基本ルーチンを含む基本入出力システム133(BIOS)は通常、ROM 131に格納される。通常、RAM 132には、処理装置120に直接アクセス可能な、かつ/または処理装置120により現在操作されているデータおよび/またはプログラム・モジュールを格納する。例えば、図1は、オペレーティング・システム134、アプリケーション・プログラム135、その他のプログラム・モジュール136、およびプログラム・データ137を示しているが、それらに限定されない。
コンピュータ110はさらに、その他の取り外し可能/取り外し不可能な揮発性/不揮発性コンピュータ記憶媒体を備えることもできる。例えば(単なる例であるが)、図1は、取り外し不可能な不揮発性磁気媒体の読み出しまたは書き込みを行うハードディスク・ドライブ141、取り外し可能な不揮発性磁気ディスク152の読み出しまたは書き込みを行う磁気ディスク・ドライブ151、およびCD−ROMまたはその他の光媒体などの取り外し可能な不揮発性光ディスク156の読み出しまたは書き込みを行う光ディスク・ドライブ155を示している。オペレーティング環境例で使用できる他の取り外し可能/取り外し不可能な揮発性/不揮発性コンピュータ記憶媒体としては、磁気テープカセット、フラッシュ・メモリ・カード、デジタル多目的ディスク、デジタル・ビデオ・テープ、ソリッド・ステートRAM、ソリッド・ステートROMなどがあるが、それらに限定されない。ハードディスク・ドライブ141は、通常、インターフェース140などの取り外し不可能なメモリ・インターフェースを介してシステム・バス121に接続され、磁気ディスク・ドライブ151および光ディスク・ドライブ155は、通常、インターフェース150などの取り外し可能なメモリ・インターフェースによりシステム・バス121に接続される。
図1に示されている上記のドライブおよび関連コンピュータ記憶媒体は、コンピュータ110用のコンピュータ読み取り可能命令、データ構造体、プログラム・モジュール、およびその他のデータを格納する機能を備える。例えば、図1では、ハードディスク・ドライブ141は、オペレーティング・システム144、アプリケーション・プログラム145、その他のプログラム・モジュール146、およびプログラム・データ147を格納するものとして示されている。これらのコンポーネントは、オペレーティング・システム134、アプリケーション・プログラム135、その他のプログラム・モジュール136、およびプログラム・データ137と同じである場合もあれば異なる場合もあることに注意されたい。オペレーティング・システム144、アプリケーション・プログラム145、その他のプログラム・モジュール146、およびプログラム・データ147に対しては、ここで、異なる番号を割り当てて、最低でも、それが異なるコピーであることを示している。ユーザーは、タブレット、電子デジタイザ164、マイク163、キー・ボード162、および一般にマウス、トラック・ボール、タッチ・パッドなどと呼ばれるポインティング・デバイス161などの入力デバイスを介してコンピュータ110にコマンドおよび情報を入力できる。他の入力デバイス(図に示されていない)としては、ジョイスティック、ゲーム・パッド、衛星放送受信アンテナ、スキャナなどがある。これらの入力デバイスやその他の入力デバイスは、システム・バスに結合されているユーザー入力インターフェース160を介して処理装置120に接続されることが多いが、パラレル・ポート、ゲームポート、またはユニバーサル・シリアル・バス(USB)などの他のインターフェースおよびバス構造により接続することもできる。モニタ191またはその他のタイプの表示デバイスも、ビデオ・インターフェース190などのインターフェースを介してシステム・バス121に接続される。モニタ191はさらに、タッチ・スクリーン・パネルなどと一体化することもできる。モニタおよび/またはタッチ・スクリーン・パネルは、タブレット型パーソナル・コンピュータなどの、コンピューティング・デバイス110が組み込まれているハウジングに物理的に結合できることに注意されたい。さらに、コンピューティング・デバイス110などのコンピュータは、スピーカ197およびプリンタ196などの他の周辺出力デバイスも備えることができ、これらは出力周辺インターフェース194などを介して接続することができる。
コンピュータ110は、リモート・コンピュータ180などの1つまたは複数のリモート・コンピュータへの論理接続を使用してネットワーク環境で動作することも可能である。リモート・コンピュータ180は、パーソナル・コンピュータ、サーバ、ルーター、ネットワークPC、ピア・デバイス、またはその他の共通ネットワーク・ノードでもよく、通常は、コンピュータ110に関係する上述の要素の多くまたはすべてを含むが、メモリ記憶デバイス181だけを図1に示してある。図1に示されている論理接続は、ローカル・エリア・ネットワーク(LAN)171とワイド・エリア・ネットワーク(WAN)173を含むが、他のネットワークを含むこともできる。このようなネットワーキング環境は、オフィス、事業全体のコンピューター・ネットワーク、イントラネット、およびインターネットでは一般的なものである。例えば、本発明では、コンピュータ・システム110は、データがそこから移送されるソース・マシンを含み、リモート・コンピュータ180は、宛先マシンを含むことができる。しかし、ソース・マシンおよび宛先マシンは、ネットワークまたは他の手段で接続されている必要はないが、その代わり、データがソース・プラットフォームによる書き込みおよび宛先プラットフォームによる読み出しを行うことができる何らかの媒体を介して移送されることが可能であることに注意されたい。
LANネットワーキング環境で使用する場合、コンピュータ110はネットワーク・インターフェースまたはアダプタ170を介してLAN 171に接続される。WANネットワーキング環境で使用する場合、コンピュータ110は通常、モデム172またはインターネットなどのWAN 173上で通信を確立するための他の手段を備える。モデム172は、内蔵でも外付けでもよいが、ユーザー入力インターフェース160またはその他の適切なメカニズムを介してシステム・バス121に接続できる。ネットワーク環境では、コンピュータ110またはその一部に関して述べたプログラム・モジュールは、リモート・メモリ記憶デバイスに格納できる。例えば(限定しない例として)、図1には、リモート・アプリケーション・プログラム185がメモリ・デバイス181に置かれているように示されている。図に示されているネットワーク接続は例であり、コンピュータ間に通信リンクを確立するのに別の手段を使用できることは理解されるであろう。
以下の説明では、特に断りのない限り、1つまたは複数のコンピュータにより実行される活動(acts)および動作の記号的表現を参照しながら本発明を説明する。したがって、そのような活動および動作(operation)は、ときには「コンピュータに実行される」と呼ばれることもあるが、構造化された形式でデータを表現する電気的信号の、コンピュータの処理装置による操作(manipulation)を含むことは理解されるであろう。この操作は、データを変換したり、またはコンピュータのメモリシステム内の複数のロケーションにデータを保持したり、当業者であればよく理解している方法でコンピュータの動作を再構成したり、あるいは他の形に変更したりする。データが保持されているデータ構造は、データの形式により定められた特定の特性を備えるメモリの物理的な場所に存在する。しかし、本発明は前述のコンテクストの中で説明されているが、制限する意図はなく、当業者であれば以下で説明する各種の活動および動作がハードウェアに実装できることは周知のことであろう。
図2のブロック図の例で、ロケーション・アウェアネス・サービス210のアーキテクチャの概要を説明している。図に示されているように、ロケーション・サービス210はユーザー・モード・サービス212とすることができ、コンピュータ110または携帯型コンピューティング・デバイスなどのコンピュータ上にインストールすることができる。ロケーション・サービス210は、複数のアプリケーション220(1〜3)から、またデバイス/コンピュータ214の外部からデータを受信する。ロケーション・サービス210は、デバイス内で、ドライバ222(1〜2)などのカーネル・モード215コンポーネントおよびWindows(登録商標)ファイル・システム・コンポーネント224に結合される。ドライバ222(1〜2)およびWindows(登録商標)ファイル・システム・コンポーネント224は、ハードウェア216に結合されているものとして図に示されている。各デバイス・ドライバ222(1〜2)は、それぞれのハードウェア・デバイス226(1〜2)に結合されているものとして図に示されている。Windows(登録商標)ファイル・システム・コンポーネント224は、メモリ・デバイス230に結合されているものとして図に示されており、これは、Windows(登録商標)ファイル・システム・データを保持するためのデータベースとすることもできる。ロケーション・サービス210はさらに、MapPoint(登録商標)アプリケーションまたはロケーション情報のクエリを実行するように構成され、本明細書の実施形態、つまりロケーション・データを供給するデバイス240と整合性がとれている他のアプリケーションに結合することもできる。また、ロケーション・サービス210は、ライトウェイト・ディレクトリ・アクセス・プロトコル(LDAP)250を介してActive Directory 260に結合される。ロケーション・サービス210は、さらに、外部のデバイス/クライアント280に結合することもでき、さらにこれは、通信チャネル214を介してプレゼンス・サーバ(presence server)270に結合することも可能である。より具体的には、ロケーション・サービス210は、例えば、リアルタイム通信(RTC)クライアントにより取り出すことができるロケーション情報を供給することができる。その後、RTCクライアントは、情報を存在サーバ270に送信する。
次に図3を参照すると、ブロック図にロケーション・サービス210が詳細に示されている。図からわかるように、ロケーション・サービス210は、1つまたは複数のロケーション・アプリケーション・プログラミング・インターフェース(API)350、fuserエンジン340、およびロケーション管理コンポーネント330を含む。ロケーション管理コンポーネント330は、プロバイダ・プラグイン310”およびリゾルバ320と情報をやり取りする。一実施形態では、ロケーション管理コンポーネント330は、ユーザー・エージェント332、キャッシュ334、マスター・リゾルバ336、およびプラグイン・マネージャ338を含む。図3はさらに、プロバイダ310’を示しており、これは、センサ特有のデータなど、少なくとも何らかの解釈を必要とする感知されたデータのプロバイダとすることができる。例えば、グローバル・ポジショニング・プロバイダは、緯度と経度を提供することができる。一実施形態では、プロバイダ310’は感知されたデータをプロバイダ・プラグイン310”にデバイスからのデバイス特有のロケーション情報またはセンサ特有のデータとして送信する。プロバイダ・プラグイン310”は、データを正規化し、データを標準形式に変換し、そのデータをロケーション管理コンポーネント330に送信する。他の実施形態では、プロバイダ310’は、データをプロバイダ・プラグイン310”に送信する前にデータを変換することができる。プロバイダ310’の能力は、設計上の要件および制限事項に左右される。例えば、ロケーション管理コンポーネント330は、プロバイダ310’または他の発信元を介して生のデバイス情報を1つまたは複数のデバイスから取得することができる。一実施形態では、ロケーション管理コンポーネント330はデータを正規化し、そのデータをロケーション・レポート(location reports)に変換する。
一実施形態では、ロケーション管理コンポーネント330は、ロケーション・サービス210内に構成される。プロバイダ・プラグイン310”は、データを正規化するが、ロケーション管理システムの一部であるプラグイン・マネージャ338はさらに、そのデータを受け付けてマスター・リゾルバ336に渡す前にデータを正規化する。マスター・リゾルバ336、fuserエンジン340、プラグイン・マネージャ338の各コンポーネントは、情報を受け入れる用意ができていることを示す。一実施形態では、これ以降、データを取り出すアプリケーションおよびコンポーネントは、コンポーネント336、338、および340に取り出す用意のできているデータがある場合のみ取り出しを実行する。
リゾルバ320は、感知され変換されたデータ、場合によっては、デバイス特有のロケーション情報などの生のロケーション・データを受け取り、そのデータを解釈する。リゾルバ320は、ロケーション・サービス210へのプラグインとして実装することができ、デバイス特有のロケーション情報トランスレータ(information translators)およびデータ・ソースを備えることができる。リゾルバ320では、既存のデータから新しいデータを推測するために用意されているデータ・ソースを使用してデバイス特有のロケーション情報をリッチ・ロケーション情報(rich location information)に変換する機能を持つ。一実施形態では、リゾルバ320は、1つまたは複数のデバイスから受信したデータの少なくとも一部を変換することができる。各リゾルバ320は、プロバイダ310から少なくとも1つのタイプの生データまたは部分的に復号化されたデータを解釈することができる可能性もある。例えば、リゾルバ320を802.11タイプのデータのみを解釈する機能専用とすることもできる。すると、リゾルバは802.11タイプのデータのみを解釈するものとしてロケーション管理330に登録し、そのタイプのデータのみを受け取ることになる。さらに、他のリゾルバの情報を変換するように各リゾルバ320を構成することができるが、その場合、リゾルバは生データまたは部分的に復号化されたデータを変換することができないことがある。また、図3はロケーション・サービス210からデータを受信するWindows(登録商標)ファイル・システム・コンポーネント360を示している。
fuserエンジン340は、現在のロケーション・オブジェクトを生成する。ロケーション・サービス210は、プロバイダ・プラグイン310”およびリゾルバ・プラグイン320を含む、1つまたは複数のプラグインを介して現在のロケーション・データを検査する。このコンテクストでは、プラグインを1つまたは複数の動的ロード可能ライブラリまたは動的リンク・ライブラリ(DLL)またはソフトウェア、ファームウェア、またはシステム・コンポーネントの機能を拡張することができる他の動的ロード可能モジュールとして実装することができる。
システムの概要
図4を参照すると、ロケーション・システム210および周辺コンポーネントのブロック図は、一般的に、ロケーション・サービス210がアプリケーションにこだわらないフレームワークとして動作し、情報がそこから取得されるデバイスおよびデータ・ソースに関してもこだわらないことを示している。ロケーション・サービス210は、fuserエンジン340、キャッシュ334、ユーザー・エージェント332、プラグイン・マネージャ338、およびマスター・リゾルバ336を含むものとして示されている。ロケーション・サービス210はさらに、WinFS SQLサーバ450、ロケーション・プロバイダAPI 404、ロケーション・リゾルバAPI 414、ロケーション通知サービスAPI 416、ロケーション・ユーザーAPI 418、およびロケーション管理API 420を含む。WinFS SQLサーバ450は、ロケーション・サービス210を通知サービス460に結合し、さらにユーザー通知API LocUsr 418およびロケーション通知API 416に結合する。API 416および418は、アプリケーション220と情報をやり取りすることができる。
ロケーション・ユーザーAPI 418は、ロケーション・サービス210を実行しているコンピュータの現在のロケーションについてアプリケーションがクエリを実行することを可能にする。ロケーション・リゾルバAPI 414は、サービスに登録するためにプラグインにより実装する必要のある機能を指定する。図に示されているように、ロケーション・ユーザーAPI 418は、WinFSサーバ450からデータを受け取り、そのデータを1つまたは複数のアプリケーション220(1〜n)に渡す。ロケーション管理API 420は、fuserエンジン340、ユーザー・エージェント332、キャッシュ334、プラグイン・マネージャ338、およびマスター・リゾルバ336などの複数のロケーションからデータを受け取り、1つまたは複数のアプリケーション220との間でデータをやり取りする。ロケーション管理API 420は、サービスおよびコンポーネントのパラメータを構成することを可能にする。さらに、ロケーション管理API 420は、プロバイダおよびリゾルバの追加、削除を行うこともできる。ロケーション通知API 416は、通知サービス460からデータを受け取り、データをアプリケーション220に渡す。ロケーション通知API 416は、サービスを実行しているコンピュータのロケーションが変更されたときにそのことを通知するようにアプリケーションが登録することを可能にする。一実施形態では、独立のAPIである、アプリケーション登録APIが、アプリケーションが通知の登録を行うことを可能にし、現在のロケーションを決定することができる。この実施形態では、アプリケーションはまず、ロケーション・データを取得するように登録しなければならない。登録された後、アプリケーションは所定の理由の結果としての通知を受け取ることを選択できる。ロケーション・リゾルバAPI 414は、プラグイン・マネージャ338およびマスター・リゾルバ336とデータを送受信し、そのデータをロケーション・リゾルバのユーザー/Windows(登録商標)データベース408(1)、ロケーション・リゾルバのActive Directory408(2)、およびロケーション・リゾルバのMapPoint(登録商標)408(3)、さらに、ロケーション・データを利用できる他のロケーション・リゾルバに送信する。マスター・リゾルバ336は、ロケーション情報の解決を管理する役割を持つ。プラグイン・マネージャ338がマスター・リゾルバ336にデバイス特有のロケーション情報を渡すと、マスター・リゾルバ336は、空いておりかつ情報の解決を行えるリゾルバにデータを届ける。
特に、図4を参照すると、ロケーション・サービス210を通る流れは、プロバイダ402から例により説明することができる。プロバイダ、例えば802.11プロバイダは走査データを取得する。プロバイダ402は、新しいアクセス・ポイントができたと判断すると、媒体アクセス制御(MAC)アドレスおよび信号強度情報を802.11レポートに組み込む。802.11プロバイダは、情報が準備ができたことをプラグイン・マネージャ338に信号で知らせる。プラグイン・マネージャ338は、情報の集合をピックアップし、マスター・リゾルバ336に、解決すべき新しいロケーション・レポートがあることを信号で知らせる。
次に、マスター・リゾルバ336は、プラグイン・マネージャ338からロケーション・レポートを取り出す。次に、マスター・リゾルバ336は、ロケーション・レポートをユーザー・エージェント332に渡す。
ユーザー・エージェント332は、このロケーション・レポートについてキャッシュ334内をチェックする。キャッシュ334は、場合によっては、ミス(miss)を返すこともある。その場合、キャッシュ334はデータをキャッシュし、バックエンドをチェックする。キャッシュのバックエンドをチェックすることにより、ロケーション・レポートに基づいてユーザーのロケーションを決定することもできる。キャッシュでユーザーのロケーションが決まらない場合、ユーザー・エージェント332がミス(miss)を生成する。
ユーザー・エージェント332がミスを生成した後、マスター・リゾルバ336はロケーション・レポートを、Active Directory(AD)リゾルバ408(2)などのリゾルバ408に渡す。ADリゾルバ408(2)は、ロケーション・レポート内のMACアドレス情報を特定し、Active Directoryに接続し、アクセス・ポイントのロケーションを見つける。次に、ADリゾルバ408(2)は、アクセス・ポイントのロケーションをロケーション・レポートとしてマスター・リゾルバ336に返す。次に、マスター・リゾルバ336は、ロケーション・レポートをユーザー・エージェント332に渡す。ユーザー・エージェント332は、ADリゾルバ408(2)によって返されたロケーション・レポートと一致するのがあるかキャッシュ334をチェックする。キャッシュ332がミスを生成した場合、ユーザー・エージェント332はADレポートをキャッシュする。次に、ユーザー・エージェント332は、WinFS 450をチェックし、ADリゾルバ408(2)によって生成されたロケーション・レポートに関係する保存済みのロケーションを見つける。何も見つからない場合、ユーザー・エージェント332は、追加データのないことをマスター・リゾルバ336に通知する。次に、マスター・リゾルバ336は、取り出すデータがまだ残っていることをfuserエンジン340に信号で伝える。fuserエンジン340は、802.11ロケーション・レポートおよびADロケーション・レポートを含む、2つのロケーション・レポートを取り出す。
次に、fuserエンジン340は、これらのレポートを融合し、融合されたレポート、および両方のロケーション・レポートを表すロケーション・オブジェクトを現在のロケーションとしてWinFS 350に書き込む。
次に、WinFSの上で実行されるように構成することができる、通知サービス460が通知を生成する。生成された通知は、ロケーション通知APIを通り、通知のため登録されているアプリケーションに渡される。
ロケーション・リゾルバAPI 414は、ロケーション・サービス210とリゾルバとの間のインターフェースである。さらに、ロケーション・リゾルバAPI 414により、各リゾルバは、新しいロケーション情報がリゾルバにあることをロケーション・サービス210に通知することができる。ロケーション・リゾルバAPI 414により、リゾルバはこの情報をロケーション・サービス210に転送することができる。
ロケーション・プロバイダAPI 404は、802.11プロバイダ、Bluetoothプロバイダ、グローバル・ポジショニング・システム・プロバイダ、およびロケーション・データの他のタイプのプロバイダを含むことができるプロバイダ402(1〜n)などのロケーション・プロバイダとの間でデータをやり取りする。ロケーション・プロバイダAPI 404は、ロケーション・サービス210とプロバイダとの間のインターフェースである。ロケーション・プロバイダAPI 404により、各プロバイダは、新しいロケーション情報があることをサービスに通知することができ、この情報をサービスに転送する。
一実施形態では、ロケーション・プロバイダAPI 404およびロケーション・リゾルバAPI 414は両方とも、プラグイン・マネージャAPIの一部である。プラグイン・マネージャAPIはさらに、プラグイン・マネージャ338とプロバイダ・プラグイン402との間のインターフェースである、プラグイン・マネージャ・プラグインを含む。プラグイン・マネージャのプラグイン・インターフェースは、データをプロバイダインターフェースとリゾル・バインターフェースの両方に提供する。この実施形態によれば、プロバイダ402であるためには、ロケーション・プロバイダAPIとプラグイン・マネージャのプラグインの両方を実装しなければならない。
fuserエンジン340は、マスター・リゾルバ336から得られたデータを融合する(fuse)機能を持つ。fuserエンジン340は、一般に、コンフリクトを解決し、ロケーション・プロバイダから受け取ったロケーション・アウェアネスの異なる解決(resolution)から受け取った「レポート」を統一する。ロケーションに関するデータは、マスター・リゾルバ336経由で到着し、このマスター・リゾルバ336は、データをフィルタ処理し、データをキャッシュ334に送り、その後fuserエンジン340に送る。
ユーザー・エージェント332は、キャッシュ334をチェックし、さらにキャッシュされているデータを使用して現在のロケーション・レポートを解決できるかどうかを判定する機能を持つ。ユーザー・エージェント332は、さらにWinFS 450をチェックし、現在のロケーション・レポートにユーザーが保存したロケーションが示されているかどうかを調べる。
キャッシュ334は、解決ツリー(resolution trees)を格納する機能を持つ。解決ツリーにより、ロケーション・サービス210は解決サイクルの数を減らすことができる。
図4は、ロケーション・サービス210を使用することにより、現在のロケーションについてのクエリを実行する機能と、ユーザーのロケーションが変更されたときにそのことを通知する機能をアプリケーション220に付加することができるアーキテクチャの一実施形態を示している。図4は、さらに、ロケーションAPI 350が3層になっていることも示している。特に、これらのAPIは、プロバイダ402からロケーション・サービス210、リゾルバ408からロケーション・サービス210、アプリケーション220からロケーション・サービス210への複数の層を実現している。
一実施形態では、リゾルバ・プラグイン408は、リゾルバ・プラグイン408が変換できる情報のタイプおよびその他の機能を登録するように、構成されている。ロケーション・サービス210では、変換可能な情報のタイプおよびその他の機能に関するデータを用いて、リゾルバ・プラグイン408を効率よく使用し、これを使用しない場合には別のところで実行され、処理が重複することになるプロセスを実行することができる。さらに、登録は、fuserエンジン340が知られているタイプとのデータ内のコンフリクトを効率よく解決し、ユーザー・ロケーションが変更されたときにアプリケーション220から通知できるようにするイベント・メカニズムを実現することができる。さらに、ロケーション・サービス210内の登録およびその他のプロセスを使用すると、ロケーション210に関連付けられているロケーション・オブジェクトのインスタンス化で、すべてのロケーション情報を、ロケーション・オブジェクトの拡張機能として、アプリケーション220に渡すことができる。ロケーション・オブジェクトは、一般的なタイプのロケーション情報コンポーネントとして構成することができ、これは異なるタイプまたは新しいタイプのロケーション情報をアプリケーションがコンポーネントに挿入することを可能にする。この一般的なタイプのロケーション情報コンポーネントは、例えば、基本ロケーション・レポートの拡張として構成することができる。
一実施形態では、ロケーション・サービス210は拡張可能であり、開発者は追加プラグインを作成することができる。図に示されているように、プラグイン402、408は、API 414、416、418、420、422の層を介してロケーション・サービス210に結合することができ、これらのAPIにより、ロケーション・サービス210はデバイスおよびデータ・ソースと新しいタイプのロケーション・データとの通信を調整することができる。さらに、各プラグイン402、408、およびロケーション・サービス210内のコンポーネントは、エラーを発生させることなく、1つまたは複数のプラグインまたはコンポーネントを無効にできるようにまたは取り外せるようにモジュール形式で構成することもできる。この実施形態では、ロケーション・サービス210は、無効にされた/取り外されたプラグイン、fuserエンジン340、または通知コンポーネントおよび他のコンポーネントがあっても、ロケーション・サービス210は取り外されたプラグインまたはコンポーネントを必要とするプロセスの一部をスキップするように動作する。例えば、fuserエンジン340が無効にされていた場合、当実施形態によれば、ロケーション・サービス210は、ロケーション・レポートの経路をプラグインからロケーション・ユーザーAPI 418への経路に設定することができる。
他の実施形態では、アプリケーション220のうちの1つを、ロケーション・サービス210に関連付けられているユーザー・インターフェースとして実装することも可能なユーザー制御アプリケーションとすることができる。ユーザー制御アプリケーションは、さらに、プラグイン408および402などのプラグインの追加/取り外しをユーザー側で行うためのAPIと連携して動作するか、またはそれらのAPIを備え、fuserエンジン340の機能を変更することができるプロバイダ・プラグイン402およびリゾルバ498の優先度を変更するように構成することができる。さらに、ユーザー制御アプリケーションは、マスター・リゾルバ336と1つまたは複数のリゾルバ408との間の反復回数を変更するように構成することができる。
図4と合わせて図5Aと5Bを参照すると、それらの図ではロケーション・サービス210の内部動作が説明されている。ブロック510では、プロバイダは生デバイス・データを非同期に受信することができる。ブロック520では、各プロバイダは受信後受信したデータを正規化する。このような正規化により、少なくとも一部のデータは破棄される。ブロック530では、正規化されたデータを標準形式に変換し、ブロック540では、データをマスター・リゾルバ336に送信する。ブロック542では、マスター・リゾルバ336は、ロケーション・プロバイダAPI 404を介して1つまたは複数のプロバイダから標準化され正規化されたデータを受け取ることができる。ブロック550では、マスター・リゾルバ336はデータを1つまたは複数のリゾルバ408に分配することができる。リゾルバ408は、そのデータに作用し、ブロック560に示されているように、新しいデータをマスター・リゾルバ336に返す。ブロック561では、nがn+1になるようにカウンタを増分する。次に、決定ブロック562は、「n」が所定の限界に到達したかどうかを決定する。限界に達していなければ、このプロセスは次に、ライン564により示されているように、反復する。所定の反復回数に達したら、またはマスター・リゾルバ336によって受信されたメトリック(metric)またはキューに応じて、ブロック570に示されているように、データがfuserエンジン340に受け渡される。
ブロック574では、fuserエンジン340は、マスター・リゾルバ336からデータを受信する。ブロック580では、fuserエンジン340がマスター・リゾルバ336から受信したデータを操作し、コンフリクトを解決する。ブロック590では、fuserエンジン340は、コンフリクトを解決した後、ロケーション・サービス210を実行するコンピュータの現在位置をカプセル化したロケーション・オブジェクトを作成する。決定ブロック591で、新しいロケーション・オブジェクトを作成する必要があるかどうかを決定する。必要であれば、ブロック592において、fuser 340が新しいロケーション・オブジェクトを作成した場合、fuser 340はロケーションをWinFS 450に書き込む。ブロック593では、通知サービス460がfuserエンジン340での正しいロケーションであると判断されるロケーションをチェックし、そのロケーションが通知サービス460によってアプリケーション220に関連付けられるロケーションと一致するかどうかを調べる。その後、通知サービス460は、ロケーション通知API 416を介して該当するアプリケーション220に通知する。アプリケーション220は、ロケーション通知API 416を介して、まずサービス210を使用するコンピュータの現在のロケーションのロケーション・サービス210の最良の推測を表すロケーションを求めるクエリを実行することにより、通知サービス460と情報をやり取りする。次に、アプリケーション220をWinFS 450とともに実行される通知サービス460に登録し、ロケーション・サービス210を実行するコンピュータのロケーションが変更されたときにそのことをアプリケーション220に通知するようにする。アプリケーション220がロケーション・サービス210からロケーション・データを受信した場合、返されるデータにはプロバイダ402からのレポートだけでなくリゾルバ408からのレポートも含めることができる。したがって、アプリケーション220は、リゾルバ408の1つにより追加されたコンテクスト情報を含むリッチ・データ(rich data)を受け取ることができる。
図4に示され、図4および5Aと5Bを参照して説明されているアーキテクチャは、運用されると、必要なときに適切な資源を提供することにより、モバイル・ナレッジ・ワーカ(mobile knowledge worker)などのユーザーが職務に応じて方向付けられることを可能にする。このアーキテクチャは、ロケーション情報を決定するアプリケーション220ための方法を提供する。アプリケーション220は、ロケーション情報に基づき、ユーザーから利用できる資源(例えば、Active Directoryなどの他の機能を使用して決定することができる資源)を探索し、ユーザー近傍の資源を見つけることができる。
モバイル・ナレッジ・ワーカに関しては、一例として、複数の企業サイト間を移動するユーザーを含めることができる。各サイトで、このアーキテクチャは、プリンタ、プロジェクタ、ホワイト・ボード、スキャナなどを含むことができる資源の位置をユーザーが突きとめることアプリケーション220がを支援することを、可能にする。一実施形態では、モバイル・ナレッジ・ワーカは、「Near Me」オブジェクトなどのロケーション・オブジェクトをクリックすることによりドキュメントに使用するプリンタを特定することができる。ロケーション・サービス210は、プロバイダ402からデータを受け取り、このデータは、リゾルバを介して解決され、fuserエンジン340により融合され、fuserエンジン340、WinFS 450、および適切なロケーションAPIを介してアプリケーション220に供給される。こうして、1つまたは複数のプリンタ・ネットワークが、プリンタおよびロケーションのリストをアプリケーションに供給するように構成されている場合、そのアプリケーションはデータを組み合わせて、近くにあるプリンタのリストを提供することができる。一実施形態では、ロケーション・オブジェクトは、ユーザーが、クリックするか、または他の方法でリスト内のプリンタの1つを指示し、選択したプリンタに出力することを可能にするリンクによって関連付けられる。
他の実施例では、モバイル・ナレッジ・ワーカは、在宅勤務者または、主な事務所例えば本社以外の外部コンピュータのユーザーとすることができる。例えば、家庭用ノートブック・コンピュータは、家庭用無線ネットワークに接続することができる。一実施形態によれば、ロケーション・サービス210は、プロバイダ402を介してデータを受信し、ユーザーが家庭用ネットワークに接続されていることを示す、ユーザーから見える、アプリケーションに送信する。ユーザーが仕事場に接続できるようにするため、ロケーション・サービス210は、例えば、「My Networks Activity center」などを介して、仕事場に接続する指示をユーザーから受け取ることができる。ユーザーが仕事場のネットワークに接続されていないことを示すデータを受信するので、ロケーション・サービス210は、アプリケーションが、例えば、ネットワーク活動センター、ファイヤ・ウォールなどを介してネットワークに接続できるように、アプリケーションがネットワークを識別することを、可能にするができる。
本明細書の開示から利益を得るモバイル・ナレッジ・ワーカの他の例として、複数のモバイル・ナレッジ・ワーカが含まれる。例えば、複数のモバイル・ナレッジ・ワーカのうちの1人が必要とされる場合、ロケーション・サービス210は、複数のモバイル・ナレッジ・ワーカのうちの少なくとも1人を突き止めることができる。ユーザーが複数の社員のうちの1人を必要とする場合、各社員がそのユーザーに対し、ユーザーのコンピュータ上で実行されているロケーション・サービス210にロケーションを送信できるようにする、許可を与えるようにすることで、一人の社員を特定することができる。例えば、Windows Messenger(登録商標)などのアプリケーション220を、ユーザーが、そのようにする許可を得ている各社員から存在データを受信するように構成することができる。そこで、例えば、ユーザーは、ロケーションに関するデータを使用して、どの社員が最も近いか、最も遠く離れているかを決定し、それに応じてタスクを割り当てることができる。
マスター・リゾルバ
図4と合わせて図6および図7にマスター・リゾルバ336が詳細に説明されている。マスター・リゾルバ336は、プロバイダ402からリゾルバ408に、およびリゾルバ408からfuserエンジン340にデータを分配するプロセスを管理する。マスター・リゾルバ336内では、各デバイスおよび各プロバイダおよび各リゾルバ408からのロケーション・レポートの現在のリストを含む、複数のデータ構造が維持されている。マスター・リゾルバ336はさらに、リゾルバ408により解決されているロケーション・レポート、ロケーション・レポートの現在のサイクル、およびfuserエンジン340に送られる準備のできているレポートのサイクルの追跡を維持する。
一実施形態では、図7のNumIterで示されているように、マスター・リゾルバ336は、リゾルバ408までのすべての反復に対するタイムアウト、一つのリゾルバ反復の情報に関するタイムアウト、およびリゾルバ反復回数を含む、ユーザーによる構成が可能な、少なくとも4つのパラメータを保持する。したがって、本開示の利点に関して当業者であれば周知のように、保持されるパラメータの個数およびタイミングは、設計上の選択に応じて変更することができ、これは本実施形態の範囲内にある。
図6に示されているように、マスター・リゾルバ336は初期化され(ブロック602)、ブロック604でマスター・リゾルバ336がプラグイン・マネージャ338から通知を受け取るまで待機する。通知された後、マスター・リゾルバ336は、プラグイン・マネージャ338により保存されたロケーション・レポートの集まりを取り出して保存する(ブロック605)。次に、決定ブロック606に示されているように、マスター・リゾルバ336は、各リゾルバをチェックし、リゾルバがレポートの解決に利用できるかどうかを調べる。リゾルバが新しいロケーション・レポートの解決に利用できる場合、マスター・リゾルバ336は、そのリゾルバが、保存されているロケーション・レポートの集まりに含まれるロケーション・レポートのタイプの1つに対し構成されているか、つまりブロック607に示されているようにレポートを解決できるかどうか、を調べる。リゾルバによりレポートを解決できる場合、ブロック608に示されているように、マスター・リゾルバ336は最大反復回数に達したかどうかを決定する。最大反復回数に達していない場合、ブロック609で、マスター・リゾルバ336はレポートをユーザー・エージェント332に転送する。ユーザー・エージェント332は、WinFSおよびキャッシュ334とやり取りして、レポートにデータを追加する。キャッシュされているデータを使用することにより、リゾルバに必要以上のデータを送信しないようにして、そのレポートを保護する。ユーザー・エージェント332およびキャッシュ334が必要なデータを追加できない場合、マスター・リゾルバ336はデータを適切なリゾルバに転送し、関連するタイマーを起動し、ブロック610で示されているように、反復回数をインクリメントする。
利用できるリゾルバがない場合、または最大反復回数に達した場合、レポートは融合する準備ができていると判定される(ブロック611)。一実施形態では、マスター・リゾルバ336は、データを解釈するリゾルバに応じて、ロケーション・レポートを送信することができる。
タイマーがタイムアウトになる前に、特定のロケーション・レポートの解決が完了したことをリゾルバ408がマスター・リゾルバ336に通知した場合、マスター・リゾルバ336は、ブロック612でその特定のリゾルバにより生成された以前のロケーション・レポートの集まりを上書きする。
ブロック613では、タイマーがタイムアウトになると、マスター・リゾルバ336は最新のロケーション・レポートを、fuserエンジン340に送る用意ができているロケーション・レポートの集まりに追加する。さらに、マスター・リゾルバ336は、各リゾルバとともに古いすべてのロケーション・レポートを無視するように、そのタイマーに関連付けられているリゾルバをリセットし、、このロケーション・レポートの集まりは、fuserエンジン340に送られる。マスター・リゾルバ336はさらに、空きリゾルバのそれぞれについて、新規ロケーション・レポートの解決に利用できるかどうかをチェックする。
fuserエンジン340は、データにを操作し、ブロック614で、マスター・リゾルバ336はfuserエンジン340から、最新のロケーション・オブジェクト(LatLoc)の形で更新を、受け取る。LatLocを受け取った後、ブロック616で、fuserエンジン340はLatLocをWinFSに転送し、これにより、新しいロケーション・オブジェクトに注目する必要があることを、通知サービス460にトリガして知らせることができる。
一実施形態では、マスター・リゾルバ336は、コンフリクトを解決するためにfuserエンジン340に送る準備のできているロケーション・レポートの現在の集まり、解決する準備のできているロケーション・レポートの最新の集まり、fuserエンジン340に送信する最新のロケーション拡張オブジェクト(location extension object)、およびリゾルバ408により解決されている可能性のある現在のロケーション・レポート、のサイクルを示すカウンタを保持する。一実施形態では、どのロケーション・レポートをマスター・リゾルバ336からfuserエンジン340に送信すべきかについての決定は、このカウンタに基づいて決定される。この実施形態では、このカウンタは、マスター・リゾルバ336に陳腐化したデータを送信することを避けることよって、役立つ。陳腐化したデータは、olderサイクルに割り当てることが適するという状態でタグ付けされることができる。
ある実施形態は、コンピュータのロケーションについてのマスター・リゾルバ336の解釈を表すスナップ・ショットは、いつでも利用できるということを提供する。このスナップ・ショットは、指定時刻にfuserエンジン340に送信する準備のできているデータを表す。それぞれのロケーション・レポートは、関連付けられているプロバイダ402が生成するロケーション・レポートの集まりを識別する。また、ロケーション・レポートは、他のロケーション・レポートから間接的に生成することもでき、その場合、その複数のロケーション・レポートをリンクするようにポインタを構成することができる。
Figure 2004303248
上の表1で、マスター・リゾルバ336に関連付けられているデータ構造例は、リゾルバ408およびその対応する値を示している。これからわかるように、最新のロケーション・レポートは、各リゾルバ408による操作を受けている間保持されている。他の実施形態では、ロケーション・レポートは階層型データ構造である。
Figure 2004303248
図7は、マスター・リゾルバ336の一実施形態による状態図である。状態図は、マスター・リゾルバの開始を702で示している。マスター・リゾルバ336は、ライン704で示されているようにキャッシュ334から通知が来るのを待つ。通知を受け取った後、ノード703で、マスター・リゾルバ336はロケーション・レポートを取り出す(706)。マスター・リゾルバは、プラグイン・マネージャ338にデータがないかチェックする。用意ができたら、マスター・リゾルバ336はデータを取り出して、キャッシュ334の中に一致するデータがないかチェックする。一致するデータがない場合、マスター・リゾルバ336はリゾルバをチェックし、古くなったレポートを上書きする(708)。
ノード709は、リゾルバ408でロケーション・レポートを解決できるかできないかの判別の開始を示す。リゾルバがレポートを解決できる場合(710)、状態図はノード711に進む。リゾルバも、キャッシュ334も、またはユーザー・エージェント332もレポートを解決できない場合、マスター・リゾルバ336はライン712を介してfuserエンジン340に書き込む。ノード715は、fuserエンジン340への書き込みを表す。fuserエンジン340に書き込んだ後、このプロセスは、ライン713で示されているように、反復する。ノード711で、反復回数が限度「n」よりも小さい場合、レポートはリゾルバ408に送られ、同時にタイマーが開始され、、ライン716で示されているようにカウンタが増分される。ノード719で、リゾルバ408から送られた通知が受信され、ライン718で示されているように、ロケーション・レコードが記録される。
リゾルバ
上述のように、リゾルバ408は、マスター・リゾルバ336からロケーションの情報を取り出す。リゾルバ408は、ロケーション・レポートにリッチ情報を入れ、アップグレードされたロケーション・レポートをマスター・リゾルバ336に送り返すように構成することができる。リゾルバは、インストールによって、リゾルバが解決することができるロケーション・データの型に関して、ロケーション・サービス210に通知することが予期されている。リゾルバ408は、一定の型のデータを理解するように構成されている。リゾルバ408がデータのその型に関係する情報を見つけることができる場合、リゾルバは、データを1つまたは複数のロケーション・レポートとしてマスター・リゾルバ336に渡す。
一実施形態では、リゾルバ408は1つまたは複数の発信元と通信して、情報を変換する。また、リゾルバ408は、発信元からのデータのキャッシュとの間でやり取りする。一実施形態では、リゾルバ408は、リゾルバ408がデータの発信元と連絡を取れるか、あるいは取るべきかを判断するポリシーに従う。リゾルバ408はさらに、変換可能なロケーション・レポートのリストなどの、ロケーション・サービス210によりアドレス指定可能なデータ構造、を備えることができるが、これはリゾルバ特有のものであってもよい。リゾルバ内の他のデータ構造は、現在変換途中のレポートおよび任意の変換済みオブジェクトの識別を含む。
ロケーション・レポートのリストを作成する適切なデータ構造を次のように実装することができる。
List[LReport]can_translate;
動作中、リゾルバ408はマスター・リゾルバ336から通知を待つ。通知されると、解決するために、ロケーション・レポートが取り出される。解決することにより、ロケーション・レポートが作成され、マスター・リゾルバ336に返される。
プラグイン・マネージャ
図8Aおよび8Bを参照すると、プラグイン・マネージャ338の機能が示されている。一般に、プラグイン・マネージャ338は、ロケーション・サービス210と登録済みプラグインとの間の情報のやり取りおよびデータ交換を受け持つ。より具体的には、一実施形態では、プラグイン・マネージャ338は、2つの主要な機能が実装し、これは、プラグインとの情報をやり取りするための中央管理機能(central management)を提供することおよびプロバイダを発信元とする更新通知を解釈する中央着信監視機能(central listening function)を提供すること、を含む。中央マネージャとして、プラグイン・マネージャ338は、管理API(LocMgmtAPI)からのユーザー管理要求(user administrative requests)を受け取る中央コンポーネントである。プラグイン・マネージャ338は、それらの要求を、ロケーション・プラグインAPIを介して持ち越されるアクションに変換するが、これはプロバイダに対し、リゾルバに対して、またはその両方に対してとすることができる。プラグイン・マネージャ338の管理制御の役割は、ロケーション・サービス210とリゾルバおよびプロバイダとのインターフェースをとることである。一実施形態では、プラグイン・マネージャ338は、その時点で登録されているすべてのプラグインを表すプロバイダおよびリゾルバ・プラグインを表すオブジェクトの集まりを保持する。プラグイン・マネージャ338は、その集まりのマネージャとして、ロケーション・サービス210に登録されているプラグインのリストを提供すること、およびユーザー/アプリケーションの要求に基づいて、サービス起動時または動的に、プラグインの登録することおよび登録解除すること、を受け持つ。例えば、登録/登録解除は、LocMgmtRegisterPlg/LocMgmtUnregisterPlgとして実装することも可能な管理APIを介して、およびプラグインの構成に対してアプリケーションが読み取り専用/読み書きアクセスを行う場合のアービトレーションを介して、およびプラグインとの間のクエリと設定呼び出し、LocMgmtQuery/SetPlg、および構成データをインターフェースすることを介して、行うことができる。
一実施形態では、プラグイン・マネージャ338は、ロケーション・プロバイダ・プラグインから発信したデバイス更新通知の着信を監視する中央コンポーネントとして実装される着信監視コンポーネントである。
登録されるプラグインの内部表現は、以下の表3に示されている構造を備えるオブジェクトにより一般的な形で説明される。
表3
Figure 2004303248
表3(続き)
Figure 2004303248
表3に示されているデータ構造には6つのデータ構造が含まれる。その1つは、m_ePlgTypeであり、これは、プラグインのタイプを識別する列挙型を指定し、ロケーション・プロバイダ・プラグイン(ePlgProvider)またはロケーション・リゾルバ・プラグイン(ePlgResolver)のいずれかである。第2のデータ構造は、m_wszGuidであり、これは、Globally Unique ID(GUID)でプラグインを一意に識別する。GUIDは、L"a Q1A11' {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}"の形式でフィールドwszPlgGuidに格納でき、またプラグイン自体によりハード・コーディングすることができる。ロケーション・サービス210は、登録時にプラグインのGUIDを取り出す。
第3のデータ構造は、m_wszBinaryであり、これは、プラグインを実装するバイナリの名前を指定する。1つのバイナリで、複数のプラグインを実装できるため、このデータ構造では、一般的に、特定のプラグインが一意に識別されない。
第4のデータ構造は、m_hModuleであり、これは、プラグインを実装するデータ・リンク・ライブラリ(DLL)へのハンドルを指定する。
第5のデータ構造は、mhNtfEventであり、これは、何らかのデバイスのロケーションに関して重要なデータ(デバイス・レポート)に変更があった場合またはロケーション・レポートが推論された場合に、ロケーション・プロバイダ/リゾルバ・プラグインにより送られる通知イベントを、指定する。プラグインは、コールされて初期化関数に入ったときに通知イベントを作成し、このイベントへのハンドルをサービスに送り返すことができる。その後、プラグインに更新されたデバイス・レポート/ロケーション・レポートがあれば、その更新に関してロケーション・サービス210に通知するためにこのイベントを送るだけでよい。
第6のデータ構造は、m_pfnLocPlg*であり、これは、プラグインによってエクスポートされる関数へのポインタを指定する。プラグイン・コンテクストが作成されると(登録時またはサービス起動時に)、ロケーション・サービス210は、それらがロケーション・プラグインAPIとして識別されるような所定の関数へのポインタで、それらを初期化する。
さらに、プラグインは、識別クラスCProvPluginおよびCResPluginを有し、リゾルバ・プラグインまたはプロバイダ・プラグインのいずれかとして識別する。以下の表4に示されている定義例はCPluginから導かれるものであり、定義は以下のとおりである。
Figure 2004303248
マネージャ338は、以下の表5に説明されているようなオブジェクトとしてロケーション・サービス210内で、内部的に表されている。
Figure 2004303248
プラグイン・マネージャ338のメンバは、7つのタイプのデータ構造を持つ。第1のタイプはm_mapProvおよびm_mapResで、これらは登録されているすべてのプロバイダおよびリゾルバ・プラグインの集まりである。これらの集まりには、CPluginオブジェクトへの参照が含まれ、それぞれ特性および各プラグインとのインターフェースを内部的に表す。
第2のタイプのデータ構造は、プラグイン・マネージャ338の通知イベントを指定するm_hNtfEventである。プラグイン・マネージャ338がプロバイダ・プラグインからレポートを更新する毎に、データ構造によりこのイベントが設定される。マスター・リゾルバ336がこのイベントに登録され、プラグイン・マネージャ338の通知が感知され、用意ができたときに更新がプルされる。
第3のタイプのデータ構造は、プラグイン・マネージャ338の初期化および終了ハンドルを指定するIntializeおよびTerminateである。
第4のタイプのデータ構造は、登録済みプラグインの集まりに対する管理制御ハンドラを指定するLoadPlugin、UnloadPlugin、OpenPlugin、およびClosePluginを含む。
第5のタイプのデータ構造は、プラグイン・マネージャ338から更新されたレポートをピックアップする必要が生じたときにマスター・リゾルバ336により呼び出されるハンドラを指定するPullProvReportsを含む。
第6のタイプのデータ構造は、1つまたは複数のレポートをリゾルバ・プラグインにディスパッチする必要がある場合にマスター・リゾルバ336により呼び出されるハンドラを指定するPushResReportsを含む。
第7のタイプのデータ構造は、プラグイン・マネージャ338の管理ハンドラを指定するQueryConfigおよびSetConfigを含む。
その通知リスナーの役割において、プラグイン・マネージャ338は、プラグインによって生成される更新信号を監視する。通知の取り扱いは、その通知と関連するプラグインのタイプに応じて異なる。
一実施形態では、予期しない方法で到着するプロバイダ・プラグインを発信元とする通知は、受け入れおよび/または処理のときに頻度閾値を課すように特別な配慮を払って、プラグイン・マネージャ338によって処理される。閾値自体は、LocMgmtQuery/SetPlgなどの管理呼び出しを介して、ユーザーが構成可能な値とすることができる。
リゾルバ・プラグインから発信される通知は、ロケーション・サービス210によりリゾルバに渡されるロケーション・レポートへの応答として生成されるため、閾値の制限は必要ない。
プロバイダ通知を感知し、更新されたレポートを取り出すためにプラグイン・マネージャ338によって使用される論理は、頻度閾値のチェックのため各プロバイダ・プラグイン・オブジェクト上で動作する有限状態機械として、図8Aに示されている。
通知が感知されたときに開始802から動作が始まる。ノード804により、初期化804、初期状態ハンドラが識別される。このハンドラは、プロバイダに「uninitialized」というマークを付け、プロバイダ・タイマーを所定のプロバイダ閾値Provider.last_ntf_time<−0に設定し、更新通知のためプロバイダに登録する。通知はプル(pull)812を宛先とする。
タイムアウト後、状態機械800は、ノード806に進み、そこで、着信監視状態ハンドラを識別する。着信監視状態ハンドラ806は、プロバイダ時刻を所定のプロバイダ閾値に設定し、未初期化のプロバイダを初期化に設定する。次に、着信監視状態ハンドラ806は、通知イベント、Set PlgMgr Notification eventイベント(信号PlgMgsr)を設定する。プロバイダによって更新通知が生成された場合、状態機械800は、ノード808に進み、そこで、チェック状態ハンドラを識別する。チェック状態ハンドラ808は、プロバイダ・タイマーをリセットし、最後(最新の)の通知時間が所定のプロバイダ閾値以上(TimeNow−Provider.last_ntf_time>=Provider.threshold)かどうかを決定する。そうならば、通知頻度閾値がチェックされて合格しており、プロバイダ通知は、プロバイダの閾値よりも広い時間間隔に含まれていたということである。通知が時間範囲内であった場合、状態機械800は通知をプル812に送る。プロバイダ閾値以上でない場合、通知頻度閾値がチェックされたが不合格であり、通知はプロバイダの設定済み閾値よりも時間的に接近しているということである。
不合格の場合、状態機械800は一時停止814を行うが、これは、プロバイダ通知からプロバイダを登録解除する状態ハンドラとなっており、プロバイダ・タイマーを、最後の通知時間(TimeNow−Provider.last_ntf_time)に等しいプロバイダ閾値に設定する。タイムアウトの後、状態機械800は再開816に移動し、プロバイダ通知の登録を再開する。その後、状態機械800はプル812に移動する。
上述のように、再開816、チェック808、および初期化804はそれぞれ、プル812に向かっており、これにより、プル状態ハンドラが識別される。プル状態ハンドラは、最後の通知時間Provider.last_ntf_time<−TimeNowに応じてプロバイダから更新済みレポートをプルする。また、プロバイダが未初期化状態であれば、そのプロバイダに初期化済みのマークが付けられ、他に未初期化プロバイダがなければ、プラグイン・マネージャ通知イベントが設定される。
状態機械800に関して説明したアクションにより、ロケーション・サービス210は2つの特別なケースでオーバーロードさせる通知レートから保護される。特に、第1の場合、起動時に、各プロバイダは、基本デバイスから初期データの集まりの一部として更新通知を生成することが期待されている。これらの通知が、無条件で処理される場合、各デバイス・データからロケーション・コンテクストを構築することが増大するので、ロケーション・サービス210はきりきり舞い(スピン)する。この状態機械が実装する優れたオプションは、初期化時に、登録されているすべてのプロバイダがそれらの初期状態に到達するのを待ち、その後、更新が利用できるマスター・リゾルバなどの、他のロケーション・サービス210のサブ・システムへのデータおよび信号を収集することにつきる。その結果として起こる特別な場合として、プロバイダ(他のプラグインと同様に)が正しいことをすると信じることができないという仮定に基づくと、プロバイダによる初期通知の遅延が長すぎて、ロケーション・サービス210に許容できない遅延を引き起こす可能性もある。許容できない遅延を防止するために、ロケーション・サービス210は、初期通知を待ちながらプロバイダの閾値に等しいタイムアウトを設定する。このようなタイムアウトが発生した場合、プロバイダは、データが存在していない場合であっても初期化されているとみなされ、ロケーション・サービス210は、ブロック解除される。
第2の特別な場合、ロケーション・サービス210は、各プロバイダに固有の閾値を通じて通知が過剰に行われないように保護される。プラグイン・マネージャ338は、プロバイダ通知を処理するときに、プロバイダ・コンテクストにおいて通知にタイムスタンプを付加する。許容される閾値よりも短い間隔で次の通知が感知された場合、プラグイン・マネージャ338は、プロバイダの通知イベントから登録を解除し、残りの閾値期間にタイマーを起動する。プラグイン・マネージャ338は、プロバイダから最新のレポートをプルし、タイマーがタイムアウトになった後に限り通知の再登録を行う。それまでは、ロケーション・サービス210は絶縁され、不作法にふるまうプロバイダから保護されている。
状態機械800の論理にも拘わらず、プロバイダに対する管理作業が許されており、それは、プラグインのアンロード/登録取消まで、を含んでいる。
一実施形態では、プラグイン・マネージャ338は、受け取ったプロバイダ・レポートの最後のサイクルを維持するように実装されている。最新のプロバイダ・レポートは、デバイスに関連付けられている各プロバイダ402からのレポートを含む。プラグイン・マネージャ338には、最新のプロバイダ・レポートをマスター・リゾルバ406に送信する役割を持つ。この実施形態では、図8Aに関して上で説明したように、プラグイン・マネージャ338はプロバイダからレポートを受け取る際のタイムアウトに関係する少なくとも1つの構成可能パラメータを持つ。ロケーション・サービス210は、高速なまたは有害なプロバイダが、上述のように、ロケーション・サービスをレポート攻めにするのを防止するという点でタイムアウト利用している。以下の表6は、それぞれのレポートの集まりがプロバイダおよびデバイスによってインデックスが付けられて、プロバイダ・レポートの最新の集まりを格納する際のデータ構造構成例を示している。
Figure 2004303248
図8を参照すると、図8Bのブロック810では、プロバイダ402から通知を受け取った後、プラグイン・マネージャ338はタイマーを起動し、サイクルをインクリメントし、プロバイダ402からのレポートを記録する。ブロック820では、プラグイン・マネージャ338は(プロバイダ、デバイス)それぞれのペアについてのロケーション・レポートの最新の集まりのみを格納する。例えば、表1を参照して、指定されたペアから最新のデータのみを取り出し、旧いデータを破棄することにより、冗長さを避けている。ブロック830で、タイマーがタイムアウトになる前に、プロバイダがプラグイン・マネージャ338に通知すると、そのプロバイダ402からのレポートは記録される。ブロック840で、タイマーがタイムアウトになった後、プラグイン・マネージャ338はプラグイン・マネージャのキャッシュから記録されているレポートを抽出し、それをデータ構造「PLUGIN MANAGER」に書き込む。
次に図9を参照すると、プラグイン・マネージャ338によって操作される各プロバイダに適切な状態遷移図が示されている。状態図900は、初期化910から始まる。プロバイダからの通知がライン920で示されているように受信された場合、プラグイン・マネージャは、ノード912で、ロケーション・レポートを記録するようにプラグイン・マネージャ338内のコードを開始させ、タイマーを始動させる。ライン930により、ロケーション・レポートの通知の反復ループおよびノード922のレポートの記録が識別される。ライン940により、タイマーがいつタイムアウトになるかが識別され、ノード932でデータがPLUGIN MANAGERに書き込まれる。タイマーがタイムアウトにならない場合、ライン950により、プロセスがノード912にループバックすることが示される。一実施形態では、ロケーション・レポートを記録するコードは、プラグイン・マネージャ338がレポートを保持する各デバイスのロケーション・レポートの新しい集まりを作成することを規定する。さらに、このコードは、ロケーション・レポートのすべての集まりをグループ化し、サイクルに関係する識別子をレポートに刻印し、プラグイン・マネージャ338の外部に送信する用意ができているレポートにフラグを立てるように構成することができる。
fuser
次に図10を参照すると、ブロックが、fuserエンジン340の基本機能を示している。fuserエンジン340は、ロケーション・レポートおよびキャッシュ334から読み込んだロケーション・レポートに基づいて、コンピュータのロケーションの最良の推測を表す矛盾のない1つのロケーション・オブジェクトを生成する。fuserエンジン340は、本明細書で融合(fusion)と呼んでいるプロセスを通じてこの作業を実行する。融合は、コンフリクトの解決、統合、およびコンフリクトしているレポートの調整(reconciliation)を行う。
図10のブロック1010では、fuserエンジン340がロケーション・レポートの集まり、およびそのロケーション・レポートの集まりに関連するロケーション・レポートの集まり、を受け取る。これらのレポートは、複数のプロバイダおよびリゾルバから個別に送るか、またはそれらのレポートを、マスター・リゾルバ336などから、グループとして受け取ることができる。一部のレポートは、互いにコンフリクトするかも知れない。例えば、ロケーション・レポートに示されているコンピュータのロケーションの部屋番号が異なることもあり得る。ブロック1020で、fuserエンジン340は、コンフリクトしているレポートの間で、加重投票プロセスなどの、1つまたは複数の統計的プロセスを適用することにより、これらのコンフリクトを解決する。重みは所定の発信元の集まりから得られ、プロバイダの重み、リゾルバの重み、リゾルバの分割率(resolver split rate)、空間的不確定性、およびレポートの経過時間(age)を含めることができる。
ブロック1030では、fuserエンジン340は、報告された最終的なロケーション・オブジェクトのさまざまなフィールドを、利用可能なロケーション・レポートで埋めることにより、レポートを統合する。例えば、部屋番号を指定するレポートは部屋フィールドに関係し、ビルディング番号を指定するレポートはビルディング・フィールドに関係する。
一実施形態では、ロケーション・レポートは、fuserエンジン340によって、ロケーション・レポートをリゾルバ・レポートのツリーとして受信し、fuserエンジン340はこれを、単一のロケーション・レポート、またはロケーション・サービス210の外部のアプリケーションなどで使用するロケーション・オブジェクトに変換する。単一のロケーション・レポートは、MapPoint(登録商標)または他の適切なアプリケーションによって定義されているMicrosoft Location Report形式などの所定の形式(format)にまとめることができる。
一実施形態では、ロケーション・サービス210は、2つのタイプのレポートをfuserエンジン340に渡す。あるものは、緯度、経度、および高度を含むメトリック・レポートも含む。メトリック・レポートはさらに、Y軸およびX軸ロケーションを使用可能にする場合のようにx成分およびy成分を含むこともできる。ロケーション・サービス210がfuserエンジン340に渡すことができる他のタイプのレポートとして、例えば、「ビルのフロア、部屋」、「住所、市、州、国」、または「宇宙、銀河、太陽系、惑星」などを示す階層型レポートも含む。さらに、階層型レポートの要素は、fuserエンジン340で階層型レポートを作成したり、またはまとめたりすることを可能にするリンクを含む個別のロケーション・レポートとして表すこともできる。fuserエンジン340に渡されるレポートのタイプは、適切なファネル(funnel)によって受信される。ファネルは、fuser 340がその情報を融合することができるように、fuser 340に渡される情報のタイプを識別する。
一実施形態では、レポートをfuserエンジン340に送る前に、ロケーション・サービス210の他のコンポーネントは、各レポート内の各要素またはレポート自体に、融合を有効にする重みとともにタグを付ける。プロバイダ重み、リゾルバ分割重み、空間的不確定性、リゾルバ重み、およびレポートの経過時間などの重みは、整数または0から1までの間の実数として表すことができる。
重みに関して、一実施形態では、プロバイダ重みはプロバイダの信頼性を表す。詳しく言うと、プロバイダの信頼性は、レポートに関連付けられている指定されたプロバイダが正しいデータを供給しているとロケーション・サービス210により決定される確率である。一実施形態では、プロバイダの信頼性は、ユーザー・インターフェースを介してユーザーにより判定され、このインターフェースによりユーザーは信頼できないプロバイダに低い重みを付けることができる。例えば、ユーザーは、ロケーション・データが不正確であるとことで知られている携帯電話プロバイダに低い重みを付けることができる。
リゾルバ重みは、レポートに関連付けられている指定されたリゾルバが正しいデータを供給しているという、ロケーション・サービス210により決定された、リゾルバの信頼性とすることができる。複数のリゾルバがレポートに関連付けられている場合、1つの確率パラメータで、複数のリゾルバ信頼性パラメータを考慮に入れることができる。
空間的確定性重みは、指定されたレポートの精度に関連付けられた重みとすることができる。例えば、レポートにおいて、802.11タイプのアクセス・ポイントに基づいて部屋番号またはロケーションが指定されており、そのアクセス・ポイントは約100室の部屋に対応している場合、レポートの空間的確定性パラメータは1/100となる。
経過時間重みは、時間の関数である経過時間信頼性とすることができる。レポートは、レポート経過時間に比例して低い重みが付けられる。レポートの経過時間とともに、経過時間重みは小さくなる。一実施形態では、経過時間重みは、時間の負の指数関数を適用することにより決定され、これには、最低の重みとレポートの重みがなくなるタイムアウトを含めることができる。
また、単一のプロバイダ・レポートの分割を複数のリゾルバに分担させて、解決分割重み(resolve split weight)をレポートに適用することもできる。例えば、802.11プロバイダはそのレポートを、緯度、経度を提供する2つの異なるリゾルバに送ることができる。この場合、リゾルバ分割重みは0.5であり、1つのプロバイダ・レポートが2つのリゾルバに分割されたという現実を反映する。このことは、複数のリゾルバに分割することにより、単一のプロバイダ・レポートが大きすぎる重みを付けられることを防止する。
一実施形態では、メトリック・タイプのレポートなどの、ある種のレポートの場合、複数の重みを乗算することにより、複数の重みは、単一の重みに統合される。
式1に示されているように、メトリック・レポートの集まりは、重み付き平均を適用することにより表すことができる。詳しく言うと、式1は、レポートi上に4つの重みが、w1i、w2i、w3i、およびw4iに付けられている場合、fuserは乗算w=w1i2i3i4iによりそれらを1つの重みに統合する。(x,y)、i=1K Nなどのメトリック・レポートの集まりでは、融合されたレポートは以下のように重み付き平均とすることができる。
Figure 2004303248
(式1)
重み付き平均ではなく階層タイプのレポートの場合、fuserエンジン340は、重み付き階層型投票プロセスを適用する。例えば、表3では、4つの階層型レポートの例が取り上げられている。各レポートには、ビルディング、部屋、およびフロアの要素が示されている。重みは、各レポートの各要素に関連付けられている。fuserエンジン340は、レポートのツリーからそれらの要素をまとめる。一実施形態では、このレポートのツリーはマスター・リゾルバ336内で作成される。
Figure 2004303248
表7を参照すると、4つのレポートが考察されており、1から4までのラベルが付いている。重み付き階層型投票は、階層の物理的に最も大きなレベルから始まる。表7では、最大要素がビルディングである。各候補の重みの総和をとる。例えば、表7において、ビルディング40は、0.9+0.8+0.9=2.6という組合せ重みを持ち、これは、ビルディング41に関連付けられた組合せ重み0.3よりも高い組合せ重みとなっている。
一実施形態では、最大レベルの階層要素が考慮対象から除外されると、その最大レベルよりも下のレベルも自動的に排除される。したがって、例えば、ビルディング41が除外されると、ビルディング41の下位レベルも除外れる。こうして、ビルディング41内のフロアがロケーションの対象から外される。残りのフロアのうち、残っている重み付き平均は、フロア3が正しい最高の確率を有していることを示している。フロア3が識別された後、フロア4および1、およびフロア4および1の部屋が排除される。残りの部屋の間では部屋3141が、高い重みを有している。したがって、fuserエンジン340により示されたロケーションは、ビルディング40、フロア3、および部屋3141である。
fuserエンジン340では、ロケーション・サービス210により決定された各種の階層について、表3などのような表を作成することができる。階層は1つまたは複数のレベルからなる。1レベル階層型では、fuserエンジン340は投票方式を適用し、その1レベルに関して、最も確率の高いロケーションを決定する。
通知サービス
通知アプリケーションは、WinFS通知プラットフォームとともに動作する。通知アプリケーションでは、アプリケーションから申し込める通知のタイプ、アプリケーションに通知する場合にそのタイミング、および方法を定義する。通知アプリケーションは、申し込みスキーマ(subscription schemas)、通知スキーマ(notification schemas)、イベント・ソース(event source)、イベント・スキーマ(event schema)、通知生成規則(notification generation rules)、および通知書式設定(notification formatting)を含む。
申し込みスキーマは、Outlookなどのアプリケーションが登録を望む場合に発生するイベントを定義する。例えば、ロケーション・サービスの申し込みスキーマは、現在のロケーションが「home」である場合に、Outlookに通知するように登録することを可能にする。通知スキーマは、通知されたときに、Outlookにどのような情報が届くかを定義する。例えば、通知スキーマは、Outlookが、日時、および現在のロケーションを、受信することを可能にする。イベント・ソースは、イベントの発信元を決定する。イベントとは、通知の登録しているアプリケーションにとって重要と思われる、発生する出来事である。例えば、fuser340が新しいロケーションをWinFSに書き込むことは、1つのイベントである。このイベント・ソースはWinFSである。
イベント・スキーマは、イベントに必要な情報を定義する。例えば、イベントには、日時およびロケーションが必要である。通知生成規則により、イベントと申し込みスキーマとの照合が行われ、アプリケーションに通知する必要があるかを調べる。例えば、現在のロケーションが「home」であるとし、そのロケーションが「home」であったときにアプリケーションに通知するように登録しているとすると、このような一致をチェックし、通知を発生するのが通知生成規則である。通知形式は、通知がアプリケーションに向かう方法で、SQL言語からアプリケーションを抽象化する場合に使用する方法を定義する。
通知サービス460は、ロケーションのリストに関連付けられているアプリケーション識別子のマップを保持することができる。このマッピングにより、通知サービス460に登録されているアプリケーションは、ロケーション・オブジェクトがアプリケーション識別子と一致するロケーションを識別したときに、通知を受信することができる。
通知ディスパッチャに適切なデータ構造の一例として以下のものがある。
Map[Application, List[Location]] registered;
次に図11を参照すると、流れ図に通知サービス460の方法が示されている。ブロック1102で、通知サービスはキャッシュ334から通知が来るのを待つ。他の実施形態では、通知は、fuserエンジン340などのロケーション・サービス210の他のコンポーネントを発信元とすることができる。ブロック1110で、通知サービス460はキャッシュ334から通知を受信する。ブロック1120で、通知サービス460はWinFSからロケーション・オブジェクトを取り出す。決定ブロック1130では、通知サービス460は、アプリケーションへのロケーションにマッチングするデータ構造をチェックする。ロケーション・オブジェクトにマッチングするロケーションがリストに置かれている場合、識別されたアプリケーションに対しブロック1140で通知される。識別されたアプリケーションがない場合、通知サービス460は、キャッシュ334からの他の通知が受信されるまで、ブロック1102で、待機状態に入っている。
プロバイダ
プロバイダは、センサからデバイス特有のロケーション情報を取り出し、情報を正規化し、情報を標準形式に変換し、情報をプラグイン・マネージャ338に送信する。ロケーション・サービス210とともに使用するに適しているプロバイダ402は、タイマーT、およびそれが受け持つ各デバイスから取得される最終レポート、を持つ。タイマーTは、ある時刻に設定することで、プロバイダ・プラグインおよびロケーション・サービス210に殺到することからデバイスを保護するためのスロットル(絞り弁)として働く。
一実施形態では、センサおよび/またはプロバイダは、プロバイダ/センサが機能するロケーション・サービス210のバージョンを示すバージョン番号も発行する。例えば、GUIDで、センサ/プロバイダを一意に識別することができる。一実施形態では、プロバイダは、ロケーション・サービス210によりプロバイダを安全に識別できるように、強い名前(strong name)で1つの集まりとして実装することができる。
さらに、プロバイダ402は各デバイスから得られた最終レポートを保持し、認知されたロケーションに著しい変更が生じたかどうかをチェックする。変更が生じた場合、プロバイダはプラグイン・マネージャ338に通知する。プロバイダ内にデータを保持するデータ構造の例を以下に示す。
Map[Device, Device Report] LastReport;
図12を参照して、プロバイダ402によって実行されるプロセスについて詳述する。詳しく言うと、ブロック1210において、最初にセンサからの通知が届くと、プロバイダはレポートを取り出す。プロバイダは、そのレポートを適切なデータ構造に保存する。次に、ブロック1220で、プロバイダはレポートをロケーション・レポートに変換する。続いて、ブロック1230で、プロバイダはロケーション・レポートをプラグイン・マネージャ338に送り、タイマーTを起動する。
決定ブロック1240で、タイマーTがタイムアウトになったかどうかを判定する。タイムアウトになっていなくて、センサから通知が届いた場合、プロバイダは、ブロック1250で、そのレポートを無視する。タイムアウトになった場合、センサから通知が届くと、プロバイダは、レポートを取り出す(1260)。ブロック1270で、プロバイダはレポートをそのセンサから得られた最終レポートと比較する。決定ブロック1272で、著しい変更が生じているかどうかを判定する。ブロック1280で、著しい変更がある場合、「NeedToSend」がTRUEに設定され、著しい変更はない場合、ブロック1290で、「NeedToSend」はFALSEに設定される。「NeedToSend」がTRUEの場合、ブロック1292で、レポートを送り、タイマーをリセットする。「NeedToSend」がFALSEの場合、ブロック1294で、センサから次の通知が来るのを待つ。
データ構造
本開示の利点に関して当業者には周知のことであるが、ロケーション・サービス210を最大限に利用するために、複数のデータ構造がロケーション・サービス210に用意されている。多くの追加または組み合わせたデータ構造は、本明細書に示されている実施形態の範囲内にある。データ形式(data format)およびデータ構造の例として、ロケーション・レポート(LReport)、ロケーション・レポートの集合(ColLReport)、ロケーション・オブジェクト(Location)、ロケーション拡張オブジェクト(LocattionEX)を含めることができる。
ロケーション・レポートは、プロバイダ・プラグイン310”によって生成されるレポートとすることができる。ロケーション・レポートは、情報の1つの自律的な断片を表すことができ、したがって、プロバイダに複数のセンサに関する情報がある場合、プロバイダは複数のロケーション・レポートを生成することができる。一実施形態では、ロケーション・レポートは、信頼度(confidence)、レポート識別子、レポート・タイプに関するデータを持つデータ構造が含まれる。一実施形態では、ロケーション・サービス210は、ロケーション・レポートから継承した内部ロケーション・レポートを供給することをプロバイダが要求する。内部ロケーション・レポートには、識別子、NDMediaType、FunnelType、および1つまたは複数のfuser重みを含めることができる。
ロケーション・レポートに対応して、他のデータ構造としてロケーション・レポートの集まりがある。ロケーション・レポートの集合は、受信した各ロケーション・レポートについて1つまたは複数のレポートを生成する複数のリゾルバ408に対して適切なものである。SetLReportを使用して、リゾルバが出力するものを表す。データ構造の例として、以下のように構造体が考えられる。
typedef SetLReport = Set[LReport]
ロケーション・サービス210のさまざまなコンポーネントと関連する上述のデータ構造はロケーション・オブジェクトである。ロケーション・オブジェクトは、上述のように、fuserエンジン340により融合プロセスの一部として生成される。ロケーション・サービス210に適合するように構成されているアプリケーションは、サービスを実行しているコンピュータのロケーションを判別するために、ロケーション・レポートの集合であるロケーション・オブジェクトを使用することが予期されている。一実施形態では、この集合には、位置、アドレス、階層型ロケーション、およびメタ・データが含まれる。
一実施形態では、ロケーション・レポートには、2つタイプのレポート、アプリケーション・ロケーション・レポートおよび内部ロケーション・レポートが含まれる。内部ロケーション・レポートは、ロケーション・レポートから継承される。内部ロケーション・レポートとアプリケーション・ロケーション・レポートとの違いは、内部ロケーション・レポートはfuserの利用を想定して構成されているという点にある。内部ロケーション・レポートは、fuser 340、プロバイダ402、およびリゾルバ408により作成することができる。アプリケーション・ロケーション・レポートは、アプリケーションでの使用を想定して構成されている。したがって、アプリケーション・ロケーション・レポートは、fuser重みおよびファネルタイプなどのfuserに必要なデータとは独立している。アプリケーション・ロケーション・オブジェクトは、アプリケーション・ロケーション・レポートの集合を含む。一実施形態では、拡張オブジェクトは、内部ロケーション・レポートの集合とすることができ、ロケーション・オブジェクトは、上述のように、アプリケーション・ロケーション・レポートの明確に定義された集合とすることができる。ロケーション拡張オブジェクトは、ユーザーの現在のロケーションに関する内部ロケーション・レポートの集合を含むことができる。
図4に戻ると、複数のAPIにより、ロケーション・サービス210はアプリケーション、プラグイン、およびロケーション・サービス210内の内部コンポーネントとの間で情報をやり取りすることができることがわかる。上述のAPIの1つは、ロケーション管理API(LocMgmt)420である。ロケーション管理API 420を使用することで、アプリケーションは、リゾルバ・プラグイン408、キャッシュ334、マスター・リゾルバ336、およびfuserエンジン340などのプラグインを構成することができる。LocMgmt 420は、プラグインを構成するための以下の機能を備える。一実施形態では、LocMgmt 420はファイル・ハンドル・モデルに従う。したがって、この実施形態では、プラグインを開くと、そのプラグインのハンドルが作成される。任意の一時点に、プラグインに対してただ1つのreadwriteハンドルを開くことができるが、読み込みについては、同時に複数のハンドルを開くことができる。プラグインは、読み込みおよび書き込みを実行する前に開く必要がある。プラグインを閉じると、そのプラグインのハンドルも閉じる。
プラグインをロケーション・サービスに登録する
入力パラメータ:プラグインGUID、プラグイン名
存在するすべてのプラグインを列挙する
出力パラメータ:GUID、名前、および型を含むすべてのプラグインのリスト
構成情報を読み込むまたは書き込むためプラグインのハンドルを開く
入力パラメータ:プラグインGUID、読み込み、または書き込み
出力パラメータ:プラグインのハンドル
開いているプラグインからパラメータを読み込む
入力パラメータ:プラグインのハンドル
出力パラメータ:プラグイン/パラメータ、成功または失敗
開いているプラグインにパラメータを書き込む
入力パラメータ:プラグインのハンドル、プラグイン/パラメータ
出力パラメータ:成功または失敗
プラグインのハンドルを閉じる
入力パラメータ:プラグインのハンドル
プラグインをサービスから登録解除する
入力パラメータ:プラグインのハンドル
LocMgmt API 420の他の機能として、キャッシュ334を構成するための以下の機能を備える。プラグインとともに使用するモデルの場合と同様、APIはファイル・ハンドル・タイプ・モデルに従うことができる。
構成情報を読み込むまたは書き込むためロケーション・キャッシュへのハンドルを開く
入力パラメータ:読み込みまたは書き込み
出力パラメータ:キャッシュのハンドル
キャッシュからパラメータを読み込む
入力パラメータ:キャッシュのハンドル
出力パラメータ:キャッシュ・パラメータ、成功または失敗
キャッシュにパラメータを書き込む
入力パラメータ:キャッシュのハンドル、キャッシュ・パラメータ
出力パラメータ:成功または失敗
キャッシュのハンドルを閉じる
入力パラメータ:キャッシュのハンドル
LocMgmt 420は、さらに、マスター・リゾルバ336を構成するための以下の機能を備える。APIは、ファイル・ハンドル・モデルに従うように構成することができる。
構成情報を読み込むまたは書き込むためマスター・リゾルバへのハンドルを開く
入力パラメータ:読み込みまたは書き込み
出力パラメータ:マスター・リゾルバのハンドル
マスター・リゾルバからパラメータを読み込む
入力パラメータ:マスター・リゾルバのハンドル
出力パラメータ:マスター・リゾルバ・パラメータ、成功または失敗
マスター・リゾルバにパラメータを書き込む
入力パラメータ:マスター・リゾルバのハンドル、マスター・リゾルバ・パラメータ
出力パラメータ:成功または失敗
マスター・リゾルバのハンドルを閉じる
入力パラメータ:マスター・リゾルバのハンドル ユーザー定義パラメータ
一実施形態では、ロケーション・サービス210は、ユーザー・コンピュータ上に配置され、これは移動できるデバイスでも固定されたデバイスでもよい。ロケーション・サービス210がユーザーに関連付けられている場合、ユーザーが関心を持っているロケーションをキャッシュするようにロケーション・サービス210を構成することができる。例えば、ユーザーは、ネットワークに接続されると、Active Directoryなどのロケーション情報のデータベースにアクセスすることができる。また、ユーザーはローカル・データベースであってもよい。一実施形態では、ロケーション・サービス210は、デフォルトのパラメータを使用し、ユーザーはサービスのパラメータを変更することを選択することもできる。
より具体的には、ユーザーが、リゾルバ・プラグイン408またはプロバイダ・プラグイン402の信頼性などの、ロケーション・サービス210のパラメータを変更することを選択した場合である。それとは別に、統計解析を使用して異なるプロバイダ310およびリゾルバ408の時間の経過によって変わる精度を調べるフィードバック制御システムなどの学習アルゴリズムを使用するように構成することができる。ロケーション・サービス210の構成に応じて、さまざまなプラグインに固有のバイアスが設定されたり、精度、ユーザー設定および応答時間に基づいて、プラグインからの情報をロケーション・サービス210が優先順位付けしたりすることができる。
一実施形態では、ロケーション・サービス210は、個々の情報を個々のアプリケーションに出力するように構成することができる。例えば、センサ特有の情報のみを受信するようにアプリケーションを構成することができる。
セキュリティ
他の実施形態は、ロケーション・サービス210などのロケーション・アウェア・サービスのセキュリティに向けられる。具体的には、ロケーション・サービス210は、セキュリティ問題を回避または対処するための構成および関連するプログラミングを含むことができる。
背景技術の説明として、本明細書で使用する「スプーフィング(spoofing)」は、データの送信者が実際にはそうではない人であると信じ込ませるようにデータの受信者を騙す行為を指す。一具体例として、プラグイン自体の取得元(source)がスプーフィングされ、プラグインが受信するデータの個々のパケットがスプーフィングされる可能性がある。本明細書で使用する「改ざんすること(Tampering)」は、受信者によって受信されたデータを変更する行為を指す。プラグインによって受信されたデータは、無線接続または有線接続で「ハッカー」により改ざんされるおそれがある。本明細書で使用する「否認(Repudiation)」は、送信者が、データが送信されたことを後から否認する出来事を指す。したがって、発信元(source)が、その発信元に関連付けられた、その後に否認されたデータをプラグインに与えることがある。本明細書で使用する「情報開示」は、意図されたものでない当事者に情報を開示する行為を指す。したがって、発信元は、プラグインによって実行されるクエリに基づいて、ユーザーのロケーションを追跡することができる。発信元は、ユーザーのロケーション情報またはプラグインによって実行されるクエリを他の発信元に転送することができる。ユーザーによって保存されたロケーションは、他のユーザーからアクセスされる可能性がある。
本明細書で使用する「サービス拒否(Denial of service)」は、正当なエンティティがロケーション・サービス210などのサービスを使用することを妨げることを指す。例えば、アプリケーションは、情報を求める複数の要求によりロケーション・サービス210に負担をかけすぎる場合がある。アプリケーション220に負担をかけすぎる可能性がある場合として、ロケーション・サービス210をロケーション変更に対して通知されるように複数の登録をすること、ユーザーが適切な量を超えたロケーションを保存すること、プラグインがロケーション・サービス210をデータ攻めにすること、ハッカーがプラグインに送信するデータをコピーし、連続してそのデータをプラグインに送りつけることであり、要するに、プラグインとロケーション・サービス210を攻め立てる場合である。
本明細書では、「特権の昇格」は、攻撃者が他のユーザーの特権でコマンドを実行することを指す。「バッファ・オーバーフロー」が生じると、実行可能コマンドによりおかしくなったプラグインによって取得されたデータはサービスと同じ特権で実行される。新しいプラグインは、故意にまたは偶然に、旧プラグインを上書きする可能性がある。
ロケーション・サービス210は、ユーザーのロケーション情報へのアクセスを保護するように構成される。ロケーション情報は個人情報とみなされ、各実施形態では信頼できないパーティに情報が開示されるのを防止する。
本明細書の各実施形態では、ロケーション情報の発信元、ルックアップ・サービス、ユーザー入力、アプリケーションAPI、およびプラグインとのインターフェースを含む、攻撃者の5つの侵入点に対応している。
ロケーション情報の発信元を保護することに関して、ロケーション情報の発信元はロケーション情報をプロバイダに提供するエンティティである。発信元としては、例えば、GPS、802.11、GPRS、およびNLAがある。
ロケーション・サービス210は、ロケーション情報の多数の発信元をプル(獲得)し、ユーザーが発信元の信頼度を調整できるように、拡張可能である。
さらに、ロケーション・サービス210は、Windows(登録商標).Netプラットフォーム内の保護されたサービスとすることができ、これにより、安定性が得られる。
ロケーション・サービス210は、セキュリティ問題を解決するためにプロバイダがそのデータを暗号化することを可能にするだけでなく、許可をアプリケーション・ドメインに委譲することを可能にして、例えば、サード・パーティのプラグインが、ネットワーク・アクセス環境にないアプリケーション・ドメインで実行することができるようにする。このようなアプリケーション・ドメインは、Microsoftの.Net Common Language Runtime(CLR)を使用して作成することができ、これは、共用型システム、中間言語および動的実行環境を提供し、複数のソース言語を実装できる。
ルックアップ・サービスは、以前のプロバイダまたはリゾルバ情報に基づいてより多くのロケーション情報を取得するために、リゾルバが使用するサービスである。MapPoint、Active Directory、およびWinFSは、ロケーション情報に対する2つの主要なルックアップ機能となる。
ロケーション・サービス210は、エンドをサポートする汎用的なWebサービス・リゾルバを備える。具体的には、一実施形態では、ロケーション・サービス210は、Windows Privacy Platform(WPP)と情報をやり取りするように構成される。WPPは、開発者が、アプリケーション、Webページ、またはサービスの呼び出しに使用されるユーザー情報に関して通知と選択の機能を提供することを可能にする技術フレームワークである。WPPは、オペレーティング・システム上で分散施行システム(distributed enforcement system)のコア・コンポーネントとして実装することができ、Watson(登録商標)、サービス品質管理(SQM)、Fusion(登録商標)、およびプライバシーに影響を及ぼす恐れのある操作を継続する前にユーザー設定を検証するためのネットワーキング層などのシステム・コンポーネント用の情報提供メカニズム(informant mechanisms)を提供する。このポリシー/同意管理のコア・フレームワークは、オペレーティング・システムのさまざまな場所からユーザー履歴を削除するため追加コンポーネント・モデルにより強化される。このコア・プログラミング層(core programmatic layer)の上で、WPPは、ユーザーの同意を得て、プライバシー通知のための一貫したユーザー・インターフェース構造の集まりを備え、機械可読プライバシー・スキーマ(machine-readable privacy schemas)で表されたプライバシー・ステートメント(privacy statements)を作成する。このように、一実施形態では、WPPは、バックエンドのプライバシー・ポリシーの取得と、ユーザー設定との比較とを行えるように、実装することができる。コンフリクトがあると、同意ユーザー・インターフェースが現れてユーザーに警告する。コンフリクトがある場合に、ユーザーに警告するため同意ユーザー・インターフェースがポップアップするように構成することができる。それ以降、ユーザーはWebサービスの例外を設定することを選択できる。
一実施形態では、ロケーション・サービス210は、WPPを使用して、リゾルバのプライバシー・ポリシーを取得してユーザー設定と比較する。コンフリクトがあると、同意ユーザー・インターフェースが現れてユーザーに警告する。ユーザーは、リゾルバの例外を設定することを選択できる。一実施形態では、CLRフレームワークは、リゾルバを安全に識別するように構成される。
ロケーション・サービス210は、サービスをセキュリティ攻撃から守るロケーション・サービス210により制御される中央集中管理キャッシュ332を備えている。さらに、ロケーション・サービス210は、ユーザーの現在のロケーションの完全なコンテクストを取得するリゾルバを拒否するように構成することができる。
ロケーション・サービス210は、ロケーション・オブジェクトが変更されたとき、およびその変更者、ロケーション・ユーザーAPI 418およびロケーション通知API 416およびAPIによって使用される他のアプリケーションが使用されたときおよびその使用者、およびプロバイダとリゾルバがロケーション情報を供給したとき、を記録するように構成することができる。これにより、ある程度のセキュリティ攻撃からロケーション・サービスを保護する。
ロケーション・サービス210は、WPPを操作してアプリケーションのプライバシー・ポリシーを取得し、それらをユーザー設定と比較するように構成することができる。コンフリクトがあると、同意ユーザー・インターフェースがユーザーに警告することがある。それ以降、ユーザーは例外を設定することを選択できる。CLRは、アプリケーションを安全に識別するために使用できる。一実施形態では、マシンの管理者のみがロケーション・サービス210にアプリケーションを登録または登録解除することを許されている。さらに、ロケーション・サービス210は、どのアプリケーションがロケーション情報を使用するかについての診断を容易にするように構成することができる。
一実施形態では、ロケーション・サービス210に関連付けられたるプラグインが、受信されたメッセージをカウントするように構成される。特定の時間フレーム内で受信されたメッセージが大きすぎる場合、メッセージのリスニング(listening)を停止するようにプラグインを構成できる。ランダムに設定された時間の経過後、プラグインはメッセージのリスニングを再開できる。メッセージの数がそれでも大きすぎる場合、プラグインは指数関数的バックオフ(exponential back off)を実行することができる。特に、プラグイン・マネージャ338に関して上で説明したように、各プラグインは同様の抑制(check)と均衡を持つように構成することができる。また、プラグインは、受け取った情報をチェックし、その情報に、実行可能コードを形成するために使用できる特別なキャラクタが含まれているか調べるように構成することもできる。
ロケーション・サービス210のセキュリティ機能は、さらに、アプリケーション220に適合されている機能を備えることもできる。例えば、ロケーション・サービス210は、現在のロケーションについてアプリケーション側で実行できる要求の数に関する絞りを備えるように、また通知の登録を行えるように構成することができる。さらに、不正ユーザーがサービス・パラメータの変更すること、および他のユーザーのプロファイル情報の読み書きをしたりまたは使用したりすることだけでなく、他のユーザーによって格納されているロケーションの読み書きすることまたは使用すること、も防止するように、ユーザー・アクセス制御リストを追加されたデータ構造として保持することができる。
本発明の原理を適用することができる、考え得る多くの実施形態に鑑みて、図面に関して本明細書で説明した実施形態は説明のみを目的としており、本発明の範囲を制限するものとしてみなすべきではないことは理解されるであろう。例えば、当業者であれば、ソフトウェアで示されている説明した実施形態の要素は、ハードウェアで実装することができるが、その逆も可能であること、あるいは説明した実施形態は、本発明の精神から逸脱することなくその配置および詳細を修正できることを理解するであろう。したがって、本明細書で説明した発明は、請求項およびそれと同等の条項の範囲内に納められるようなすべての実施形態を対象としている。
本発明が配置されるコンピュータ・システム例の概要を説明するブロック図である。 本発明の一実施形態によるロケーション・アウェア(location aware)アーキテクチャ例のブロック図である。 本発明の一実施形態によるロケーション・アウェア・アーキテクチャ内のロケーション・サービスのブロック図である。 本発明の一実施形態によるアプリケーション・プログラミング・インターフェースを備えるロケーション・アウェア・システムの接続例を示すブロック図である。 本発明の一実施形態による方法を説明する流れ図である。 本発明の一実施形態による方法を説明する流れ図である。 本発明の一実施形態によるロケーション・サービス内の方法の概要を説明する流れ図である。 本発明の一実施形態によるマスター・リゾルバ(master resolver)を説明する流れ図である。 本発明の一実施形態によるプラグイン・マネージャの流れ図である。 本発明の一実施形態によりプロバイダと情報をやりとりするプラグイン・マネージャの状態遷移図である。 本発明の一実施形態によるプラグイン・マネージャの状態図である。 本発明の一実施形態による方法を説明する流れ図である。 本発明の一実施形態による方法を説明する流れ図である。 本発明の一実施形態によるプロバイダ例の方法を説明する流れ図である。
符号の説明
100 コンピューティング・システム環境
100 オペレーティング環境例
110 コンピュータ
120 処理装置
121 システム・バス
130 システム・メモリ
131 読み取り専用メモリ(ROM)
132 ランダム・アクセス・メモリ(RAM)
133 基本入出力システム
134 オペレーティング・システム
135 アプリケーション・プログラム
136 プログラム・モジュール
137 プログラム・データ
140 インターフェース
141 ハードディスク・ドライブ
144 オペレーティング・システム
145 アプリケーション・プログラム
146 プログラム・モジュール
147 プログラム・データ
151 磁気ディスク・ドライブ
152 取り外し可能な不揮発性磁気ディスク
155 光ディスク・ドライブ
156 取り外し可能な不揮発性光ディスク
160 ユーザー入力インターフェース
161 ポインティング・デバイス
162 キー・ボード
163 マイク
164 電子デジタイザ
171 ローカル・エリア・ネットワーク(LAN)
172 モデム
173 ワイド・エリア・ネットワーク(WAN)
180 リモート・コンピュータ
181 メモリ記憶デバイス
190 ビデオ・インターフェース
191 モニタ
194 出力周辺インターフェース
196 プリンタ
197 スピーカ
210 ロケーション・サービス
212 ユーザー・モード・サービス
214 デバイス/コンピュータ
215 カーネル・モード
216 ハードウェア
220 アプリケーション
222 ドライバ
224 Windows(登録商標)ファイル・システム・コンポーネント
226 ハードウェア・デバイス
230 メモリ・デバイス
240 デバイス
250 ライトウェイト・ディレクトリ・アクセス・プロトコル(LDAP)
260 Active Directory
280 外部のデバイス/クライアント
270 存在サーバ
310 プロバイダ
310” プロバイダ・プラグイン
320 リゾルバ
330 ロケーション管理コンポーネント
332 ユーザー・エージェント
334 キャッシュ
336 マスター・リゾルバ
338 プラグイン・マネージャ
339 マスター・リゾルバ
340 fuserエンジン
350 ロケーション・アプリケーション・プログラミング・インターフェース(API)
360 Windows(登録商標)ファイル・システム・・コンポーネント
402 プロバイダ
404 ロケーション・プロバイダAPI
408(1) ユーザー/Windows(登録商標)データベース
408(2) ロケーション・リゾルバのActive Directory
408(3) ロケーション・リゾルバのMapPoint(登録商標)
414 ロケーション・リゾルバAPI
416 ロケーション通知API
418 ロケーション・ユーザーAPI
419 ユーザー通知API LocUsr
420 ロケーション管理API
450 WinFS SQLサーバ
460 通知サービス
591 決定ブロック
702 マスター・リゾルバ
706 ロケーション・レポート
708 古くなったレポート
800 状態機械
804 初期化
806 ノード
800 状態機械

Claims (42)

  1. コンピュータに実装されるサービスを動作させる方法であって、
    コンピューティング・デバイスのロケーション・コンテクストの要求を受信すること、
    1つまたは複数のロケーション検出デバイスから現在のロケーションに関連するデータを取得すること、
    前記取得されたデータに少なくとも1つのプロセスを適用することにより、前記現在のロケーションに関する不整合性に対して前記取得されたデータを調整すること、および
    1つまたは複数のアプリケーションからアクセス可能なロケーション・オブジェクトを生成すること
    を備え、前記ロケーション・オブジェクトは前記コンピューティング・デバイスの調整されたロケーション・コンテクストを含むことを特徴とする方法。
  2. 前記プロセスは、階層的、メトリック、文字列連結、ユニオン、論理積、不確定性処理、および不整合性解決の各プロセスのうちの1つまたは複数であることを特徴とする請求項1に記載の方法。
  3. 前記取得されたデータを受信することに対する応答として、所定のメトリックに応じて前記取得されたデータを、前記取得されたデータの解決に利用でき、解決することが可能な1つまたは複数のリゾルバに送信すること、をさらに備えることを特徴とする請求項1に記載の方法。
  4. 前記調整されたロケーション・コンテクストは、ロケーション・オブジェクトにカプセル化されていることを特徴とする請求項1に記載の方法。
  5. 生成されたロケーション・オブジェクトを受信することに対する応答として、前記アプリケーションに関連付けられたロケーションの登録に応じて、前記ロケーション・オブジェクトを前記アプリケーションに送信することをさらに備えることを特徴とする請求項1に記載の方法。
  6. 前記取得されたデータの信頼度に応じて、前記取得されたデータに優先度を割り当てることをさらに備えることを特徴とする請求項1に記載の方法。
  7. 前記信頼度は、ユーザーによって割り当てられることを特徴とする請求項6に記載の方法。
  8. 前記信頼度は、前記取得されたデータがセキュリティ保護された電子署名を含むか否かを決定することにより、割り当てられることを特徴とする請求項6に記載の方法。
  9. ロケーション・コンテクストの要求を受信することは、通知コンポーネントでロケーション識別子を受信することを含むことを特徴とする請求項1に記載の方法。
  10. 前記1つまたは複数のロケーション検出プロバイダは、802.11タイプのプロバイダ、ネットワーク・ロケーション・アウェアネス(NLA)プロバイダ、グローバル・ポジショニング・サービス(GPS)プロバイダ、ジェネラル・パケット・ラジオ・サービス(GPRS)プロバイダ・データ、およびBluetoothプロバイダの少なくとも1つを含むことを特徴とする請求項1に記載の方法。
  11. 前記取得されたデータを前記調整することは、1つまたは複数の統計的プロセスを前記取得されたデータに適用し、最もあり得そうなロケーション・コンテクストを決定することを含むことを特徴とする請求項1に記載の方法。
  12. 前記統計的プロセスは、考えられるロケーション・コンテクストの重み付き平均をとることを含むことを特徴とする請求項11に記載の方法。
  13. 前記ロケーション・オブジェクトは、前記コンピュータに実装されたサービス内のfuserエンジンにより生成されることを特徴とする請求項1に記載の方法。
  14. ロケーション・データを送り届けるように構成されているロケーション管理コンポーネントと、
    前記ロケーション管理コンポーネントに結合され、前記ロケーション・データから生成された1つまたは複数のロケーション・レポートを受信し、前記ロケーション・レポート間のコンフリクトを解決し、ロケーション・オブジェクトを生成するように構成されているfuserエンジンと、
    前記ロケーション管理コンポーネントに結合された1つまたは複数のロケーション・アプリケーション・プログラミング・インターフェース(API)であって、少なくとも1つは、前記fuserエンジンから前記ロケーション・オブジェクトをアプリケーションに送信するように構成されたロケーション・アプリケーション・プログラミング・インターフェースと
    を備え、前記ロケーション・オブジェクトは、前記サービスを実行しているコンピュータのロケーション・コンテクストを前記アプリケーションに動的に供給するように構成されていることを特徴とするサービス。
  15. 前記ロケーションAPIの少なくとも1つは、生ロケーション・データのプロバイダから前記ロケーション・データを受信するように構成されている少なくとも1つのプロバイダ・プラグインに結合され、前記プロバイダ・プラグインは、前記生ロケーション・データを正規化するように構成されていることを特徴とする請求項14に記載のサービス。
  16. 前記ロケーションAPIは、前記サービスを実行している前記コンピュータの前記ロケーション・コンテクストに対して、前記アプリケーションがクエリを実行することを可能とするように構成されている少なくとも1つのロケーションAPIを含むことを特徴とする請求項14に記載のサービス。
  17. 前記ロケーションAPIは、プラグインにより実装された機能を指定し、前記サービスに登録するように構成されている少なくとも1つのロケーションAPIを含むことを特徴とする請求項14に記載のサービス。
  18. 前記ロケーションAPIは、前記fuserエンジン、ロケーション・キャッシュ、プラグイン・マネージャ、およびマスター・リゾルバのうちの1つまたは複数から前記ロケーション・データを受信するように構成されている少なくとも1つのロケーションAPIを含み、前記ロケーションAPIは、前記アプリケーションに前記ロケーション・データを渡すように構成されていることを特徴とする請求項14に記載のサービス。
  19. 前記ロケーションAPIは、前記サービスのパラメータが構成されることを可能にするように構成されている少なくとも1つのロケーションAPIを含むことを特徴とする請求項14に記載のサービス。
  20. 前記ロケーションAPIは、前記サービスに対するプラグインの追加および削除を行えるように構成されている少なくとも1つのロケーションAPIを含むことを特徴とする請求項14に記載のサービス。
  21. 前記ロケーションAPIは、前記アプリケーションが、前記サービスを実行している前記コンピュータの前記ロケーション・コンテクストが変更された際の通知を、登録することを可能にするように構成されている少なくとも1つのロケーションAPIを含むことを特徴とする請求項14に記載のサービス。
  22. 前記ロケーションAPIは、少なくとも1つのプラグインとの間で前記ロケーション・データを送受信できるように構成されている少なくとも1つのロケーションAPIを含み、前記プラグインは、前記ロケーション・データに基づき、また推定されるコンテクストデータに基づくリッチ・コンテンツを追加するように構成されていることを特徴とする請求項14に記載のサービス。
  23. 前記プラグインは、ユーザー定義のデフォルト・プラグインであることを特徴とする請求項22に記載のサービス。
  24. 前記ロケーション管理コンポーネントは、
    前記ロケーション情報を送り届けるように構成されているプラグイン・マネージャと、
    前記プラグイン・マネージャに結合され、前記ロケーション情報に適している1つまたは複数のリゾルバに前記ロケーション情報を割り当てるように構成されているマスター・リゾルバと
    を備えることを特徴とする請求項14に記載のサービス。
  25. 動的ロケーション情報をアプリケーション・プログラムに供給する方法であって、
    前記アプリケーション・プログラムから、ロケーション・コンテクスト・データの要求を受信すること、
    1つまたは複数のプロバイダからロケーション・コンテクスト・データを動的に収集すること、
    不整合性を解決するために統計関数により前記ロケーション・コンテクスト・データを調整すること、および
    前記アプリケーション・プログラムに、解決されたロケーション・コンテクスト・データを送信すること
    を備えることを特徴とする方法。
  26. 前記統計関数は、最良推定関数であることを特徴とする請求項25に記載の方法。
  27. ロケーション・コンテクスト・データの前記動的に収集することは、前記ロケーション・コンテクスト・データを収集うるように構成され、および調整するために前記ロケーション・コンテクスト・データを分配するように構成されているロケーション管理コンポーネントによって実行されることを特徴とする請求項25に記載の方法。
  28. 前記ロケーション管理コンポーネントは、1つまたは複数のプロバイダおよび1つまたは複数のリゾルバからロケーション・コンテクスト・データを受信するように構成されていることを特徴とする請求項27に記載の方法。
  29. 前記プロバイダは、生のロケーション情報を、1つまたは複数のアクセス・ポイントおよび前記アクセス・ポイントに関連付けられている信号強度を含む無線ロケーション・データを格納している前記ロケーション管理コンポーネントに、伝達するプラグインを含むことを特徴とする請求項28に記載の方法。
  30. 前記プロバイダは、802.11タイプのプロバイダ・データ、ネットワーク・ロケーション・アウェアネス・プロバイダ・データ、GPSプロバイダ・データ、GPRSプロバイダ・データ、Bluetoothプロバイダ・データ、およびActive Directoryデータのうちの1つまたは複数を含む前記ロケーション管理コンポーネントに生のロケーション情報を伝達するプラグインを含むことを特徴とする請求項28に記載の方法。
  31. 前記Active Directoryデータは、アクセス・ポイントの1つまたは複数のロケーションを識別する媒体アクセス制御(MAC)アドレスを含むことを特徴とする請求項30に記載の方法。
  32. 前記ロケーション・コンテクスト・データを、前記ロケーション・コンテクスト・データ、ユーザー固有データ、およびアプリケーション指定データの履歴の少なくとも1つを保持するように構成されているデータベースに格納することを、さらに含むことを特徴とする請求項25に記載の方法。
  33. 前記ロケーション・コンテクスト・データは、
    センサ固有デバイスからプロバイダにすでに送信されているデバイス固有のロケーション情報と、
    サービスからリゾルバにすでに送信されている発信元固有の情報と、
    前記サービスにより内部的に使用されるロケーション情報と、
    を含むことを特徴とする請求項25に記載の方法。
  34. コンピュータ・システムのロケーション・コンテクストのアウェアネスを使用可能にするコンピュータ実行可能命令を格納するコンピュータ可読媒体であって、前記コンピュータ実行可能命令は、
    前記コンピューティング・デバイスのロケーション・コンテクストの要求を受信すること、
    1つまたは複数のロケーション検出デバイスから現在のロケーションに関連するデータを取得すること、
    前記取得されたデータに不整合がないか調べて調整すること、および
    1つまたは複数のアプリケーションからアクセス可能なロケーション・オブジェクトであって、前記コンピューティング・デバイスの調整されたロケーション・コンテクストを含むロケーション・オブジェクトを生成する動作を実行すること
    を備える動作を実行することを特徴とするコンピュータ可読媒体。
  35. 互換性のない複数のプロトコルに従う複数のロケーション・プロバイダの少なくとも1つから受信したデータからリッチ・ロケーション・コンテクスト・レポートを生成する方法であって、
    前記ロケーション・プロバイダの1つまたは複数からロケーション・レポートの集まりが利用可能であることの通知を受け取った後、前記ロケーション・レポートの集まりを取り出すこと、
    前記ロケーション・レポートの集まりに含まれるロケーション・レポート毎に、リゾルバが前記ロケーション・レポートを解釈可能か否か、そのために利用可能か否か、所定の反復回数を超えていないか否かを決定すること、
    リゾルバが解釈可能で、使用可能であり、所定の反復回数を超えていない場合、前記ロケーション・レポートを前記リゾルバに送信すること、
    前記互換性のないプロトコルに関連付けられた1つまたは複数のリッチ・ロケーション・レポートを1つまたは複数のリゾルバから受信すること、
    前記リッチ・ロケーション・レポートを、標準化されたデータ構造に従う各ロケーション・レポートが含まれるリッチ・ロケーション・レポートの前記集まりに、まとめること、および
    前記リッチ・ロケーション・レポートの前記集まりをfuserエンジンに送信すること
    を備えることを特徴とする方法。
  36. 前記fuserエンジンからロケーション・オブジェクトを受信すること、および
    前記リッチ・ロケーション・レポートの集まりを通知サービスに書き込むこと
    をさらに備えることを特徴とする請求項35に記載の方法。
  37. 前記通知サービスはファイル・システム内に配置されていることを特徴とする請求項36に記載の方法。
  38. 前記所定の時間および前記所定の反復回数のうちの1つまたは複数は、ユーザー・インターフェースを介してユーザー側で構成可能であることを特徴とする請求項35に記載の方法。
  39. コンピュータ・システムのロケーション・コンテクストの複数の非互換プロトコル・アウェアネスに従う複数のロケーション・プロバイダのうちの少なくとも1つから受信したデータから、リッチ・ロケーション・コンテクスト・レポートを生成することを可能にするコンピュータ実行可能命令を格納するコンピュータ可読媒体であって、前記コンピュータ実行可能命令は、
    前記ロケーション・プロバイダの1つまたは複数からロケーション・レポートの集まりが利用可能であることの通知を受け取った後、前記ロケーション・レポートの集まりを取り出すこと、
    前記ロケーション・レポートの集まりに含まれるロケーション・レポート毎に、リゾルバが前記ロケーション・レポートを解釈可能か否か、そのために利用可能か否か、所定の反復回数を超えていないか否かを決定すること、
    リゾルバが解釈可能で、使用可能であり、所定の反復回数を超えていない場合、前記ロケーション・レポートを前記リゾルバに送信すること、
    前記互換性のないプロトコルに関連付けられた1つまたは複数のリッチ・ロケーション・レポートを1つまたは複数のリゾルバから受信すること、
    前記リッチ・ロケーション・レポートを、標準化されたデータ構造に従う各ロケーション・レポートが含まれる一組のリッチ・ロケーション・レポートに、まとめること、および
    前記リッチ・ロケーション・レポートの集まりをfuserエンジンに送信すること
    を備える動作を実行することを特徴とするコンピュータ可読媒体。
  40. 前記動作は、
    前記fuserエンジンからロケーション・オブジェクトを受信すること、および
    前記ロケーション・オブジェクトが1つまたは複数のアプリケーションから利用できることを通知ディスパッチャに通知すること
    をさらに備えることを特徴とする請求項39に記載のコンピュータ可読媒体。
  41. 前記動作は、所定の時間が経過した後に、前記リッチ・ロケーション・レポートを前記fuserエンジンに送信することをさらに備えることを特徴とする請求項39に記載のコンピュータ可読媒体。
  42. 前記所定の時間および前記所定の反復回数の1つまたは複数は、ユーザー・インターフェースを介してユーザー側で構成可能であることを特徴とする請求項41に記載の方法。
JP2004096860A 2003-03-28 2004-03-29 ロケーション・アウェアネスのアーキテクチャとシステム Expired - Fee Related JP4729262B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/402,609 2003-03-28
US10/402,609 US7536695B2 (en) 2003-03-28 2003-03-28 Architecture and system for location awareness

Publications (2)

Publication Number Publication Date
JP2004303248A true JP2004303248A (ja) 2004-10-28
JP4729262B2 JP4729262B2 (ja) 2011-07-20

Family

ID=32825056

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004096860A Expired - Fee Related JP4729262B2 (ja) 2003-03-28 2004-03-29 ロケーション・アウェアネスのアーキテクチャとシステム

Country Status (11)

Country Link
US (1) US7536695B2 (ja)
EP (1) EP1463269B1 (ja)
JP (1) JP4729262B2 (ja)
KR (1) KR101114181B1 (ja)
CN (1) CN1534514B (ja)
AU (1) AU2004200733B2 (ja)
BR (1) BRPI0400785A (ja)
CA (1) CA2460318C (ja)
ES (1) ES2569264T3 (ja)
MX (1) MXPA04002918A (ja)
RU (1) RU2358282C2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010538392A (ja) * 2007-09-06 2010-12-09 マイクロソフト コーポレーション セッションブローカ拡張性アプリケーションプログラムインターフェース

Families Citing this family (137)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004091084A2 (en) * 2003-03-31 2004-10-21 America Online Incorporated Apparatus and method to provide current location information services in a network
US7263509B2 (en) * 2003-04-09 2007-08-28 Lee Shih-Jong J Intelligent spatial reasoning
US8131739B2 (en) * 2003-08-21 2012-03-06 Microsoft Corporation Systems and methods for interfacing application programs with an item-based storage platform
US8238696B2 (en) 2003-08-21 2012-08-07 Microsoft Corporation Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system
US7590643B2 (en) * 2003-08-21 2009-09-15 Microsoft Corporation Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system
US8166101B2 (en) 2003-08-21 2012-04-24 Microsoft Corporation Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system
JP4483259B2 (ja) * 2003-10-16 2010-06-16 富士ゼロックス株式会社 応用プログラム実行システム、そのセンサ、その第1のサーバ、その第2のサーバ、そのオブジェクト及び応用プログラム実行方法
US20050198058A1 (en) * 2004-03-04 2005-09-08 International Business Machines Corporation Services offering delivery method
US7640288B2 (en) * 2004-03-15 2009-12-29 Microsoft Corporation Schema for location awareness
US7283803B2 (en) * 2004-04-16 2007-10-16 Broadcom Corporation Location-aware application based quality of service (QOS) via a broadband access gateway
US20060217880A1 (en) * 2005-03-22 2006-09-28 Jung Edward K Map-based guide system and method
US8635014B2 (en) * 2005-03-22 2014-01-21 The Invention Science Fund I, Llc Map-based guide system and method
US9188454B2 (en) * 2005-03-22 2015-11-17 Invention Science Fund I, Llc Map-based guide system and method
US9214033B2 (en) 2005-06-01 2015-12-15 Invention Science Fund I, Llc Map display system and method
US7734073B2 (en) * 2005-02-25 2010-06-08 The Invention Science Fund I, Llc Image mapping to provide visual geographic path
US7729708B2 (en) * 2005-01-31 2010-06-01 The Invention Science Fund I, Llc Method and system for interactive mapping to provide goal-oriented instructions
US7756300B2 (en) * 2005-02-25 2010-07-13 The Invention Science Fund I, Llc Image mapping to provide visual geographic path
US9286729B2 (en) 2005-02-25 2016-03-15 The Invention Science Fund I, Llc Image mapping to provide visual geographic path
US7522996B2 (en) * 2005-04-30 2009-04-21 Searete Llc Map display system and method
US9702713B2 (en) 2005-01-31 2017-07-11 Searete Llc Map-based guide system and method
US20080215435A1 (en) * 2005-03-22 2008-09-04 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Map-based guide system and method
US8396001B2 (en) * 2005-02-03 2013-03-12 The Invention Science Fund I, Llc Interactive queued mapping method and system
US7974639B2 (en) 2005-02-04 2011-07-05 Qualcomm Incorporated Method and apparatus for performing position determination with a short circuit call flow
US8311733B2 (en) * 2005-02-15 2012-11-13 The Invention Science Fund I, Llc Interactive key frame image mapping system and method
US7805422B2 (en) 2005-02-28 2010-09-28 Microsoft Corporation Change notification query multiplexing
GB2424972A (en) * 2005-04-08 2006-10-11 Motorola Inc Monitoring content topics in a communication system
US8099112B2 (en) 2005-04-18 2012-01-17 Nokia Corporation Network entity, method and computer program product for dynamically changing a request for location information
US7840353B2 (en) * 2005-05-17 2010-11-23 The Boards of Trustees of the University of Illinois Method and system for managing a network of sensors
US8792902B2 (en) * 2005-06-21 2014-07-29 Qualcomm Incorporated Method and apparatus for providing location services with short-circuited message flows
US9154907B2 (en) 2005-06-21 2015-10-06 Qualcomm Incorporated Efficient periodic location reporting in a radio access network
US7738884B2 (en) * 2005-06-28 2010-06-15 Microsoft Corporation Positioning service utilizing existing radio base stations
US20070027996A1 (en) * 2005-08-01 2007-02-01 Microsoft Corporation Configuring application settings based on changes associated with a network identifier
US8068056B2 (en) 2005-08-25 2011-11-29 Qualcomm Incorporated Location reporting with secure user plane location (SUPL)
US8108851B2 (en) 2006-01-30 2012-01-31 International Business Machines Corporation External registration for function configuration within a client platform application
WO2007096713A1 (en) * 2006-02-22 2007-08-30 Nokia Corporation Supporting a positioning of a mobile terminal
US10198709B2 (en) * 2006-03-27 2019-02-05 Hewlett Packard Enterprise Development Lp Managing assets using at least one policy and asset locations
US8015570B2 (en) * 2006-06-30 2011-09-06 Microsoft Corporation Arbitration mechanisms to deal with conflicting applications and user data
US8743778B2 (en) * 2006-09-06 2014-06-03 Devicescape Software, Inc. Systems and methods for obtaining network credentials
US9326138B2 (en) * 2006-09-06 2016-04-26 Devicescape Software, Inc. Systems and methods for determining location over a network
US8667596B2 (en) 2006-09-06 2014-03-04 Devicescape Software, Inc. Systems and methods for network curation
US8549588B2 (en) * 2006-09-06 2013-10-01 Devicescape Software, Inc. Systems and methods for obtaining network access
US8554830B2 (en) * 2006-09-06 2013-10-08 Devicescape Software, Inc. Systems and methods for wireless network selection
US7617331B2 (en) * 2006-11-03 2009-11-10 Honeywell International Inc. System and method of double address detection
BRPI0806197A2 (pt) 2007-01-26 2011-08-30 Interdigital Tech Corp método e aparelho de garantia da segurança de informações de localização e controle de acesso utilizando as informações de localização
US8635680B2 (en) 2007-04-19 2014-01-21 Microsoft Corporation Secure identification of intranet network
WO2008157759A1 (en) * 2007-06-20 2008-12-24 Honeywell International Incorporated Mapping of physical and logical coordinates of users with that of the network elements
US8666542B2 (en) 2007-06-29 2014-03-04 Ncr Corporation Multi-channel controller
US8566431B2 (en) * 2008-01-16 2013-10-22 Razer (Asia-Pacific) Pte. Ltd. Identification device and method for device identification
US8046625B2 (en) 2008-02-22 2011-10-25 Hill-Rom Services, Inc. Distributed fault tolerant architecture for a healthcare communication system
US20090216775A1 (en) * 2008-02-22 2009-08-27 Marc Gregory Ratliff Platform for real-time tracking and analysis
EP3598403B1 (en) * 2008-02-22 2021-10-13 Hill-Rom Services, Inc. Distributed fault tolerant architecture for a healthcare communication system
US8635335B2 (en) 2009-01-28 2014-01-21 Headwater Partners I Llc System and method for wireless network offloading
US8402111B2 (en) 2009-01-28 2013-03-19 Headwater Partners I, Llc Device assisted services install
US8275830B2 (en) 2009-01-28 2012-09-25 Headwater Partners I Llc Device assisted CDR creation, aggregation, mediation and billing
US8346225B2 (en) 2009-01-28 2013-01-01 Headwater Partners I, Llc Quality of service for device assisted services
US8626115B2 (en) 2009-01-28 2014-01-07 Headwater Partners I Llc Wireless network service interfaces
US8391834B2 (en) 2009-01-28 2013-03-05 Headwater Partners I Llc Security techniques for device assisted services
US8340634B2 (en) 2009-01-28 2012-12-25 Headwater Partners I, Llc Enhanced roaming services and converged carrier networks with device assisted services and a proxy
US8406748B2 (en) 2009-01-28 2013-03-26 Headwater Partners I Llc Adaptive ambient services
US8832777B2 (en) 2009-03-02 2014-09-09 Headwater Partners I Llc Adapting network policies based on device service processor configuration
US9137739B2 (en) 2009-01-28 2015-09-15 Headwater Partners I Llc Network based service policy implementation with network neutrality and user privacy
US8589541B2 (en) 2009-01-28 2013-11-19 Headwater Partners I Llc Device-assisted services for protecting network capacity
US8548428B2 (en) 2009-01-28 2013-10-01 Headwater Partners I Llc Device group partitions and settlement platform
US9773268B2 (en) 2008-06-16 2017-09-26 Sunrise R&D Holdings, Llc System of acquiring shopper insights and influencing shopper purchase decisions
US20100263022A1 (en) * 2008-10-13 2010-10-14 Devicescape Software, Inc. Systems and Methods for Enhanced Smartclient Support
WO2010048146A1 (en) * 2008-10-20 2010-04-29 Carnegie Mellon University System, method and device for predicting navigational decision-making behavior
US8554750B2 (en) * 2009-01-15 2013-10-08 Bmc Software, Inc. Normalization engine to manage configuration management database integrity
US9858559B2 (en) 2009-01-28 2018-01-02 Headwater Research Llc Network service plan design
US9557889B2 (en) 2009-01-28 2017-01-31 Headwater Partners I Llc Service plan design, user interfaces, application programming interfaces, and device management
US9572019B2 (en) 2009-01-28 2017-02-14 Headwater Partners LLC Service selection set published to device agent with on-device service selection
US10237757B2 (en) 2009-01-28 2019-03-19 Headwater Research Llc System and method for wireless network offloading
US10779177B2 (en) 2009-01-28 2020-09-15 Headwater Research Llc Device group partitions and settlement platform
US9955332B2 (en) 2009-01-28 2018-04-24 Headwater Research Llc Method for child wireless device activation to subscriber account of a master wireless device
US9565707B2 (en) 2009-01-28 2017-02-07 Headwater Partners I Llc Wireless end-user device with wireless data attribution to multiple personas
US10492102B2 (en) 2009-01-28 2019-11-26 Headwater Research Llc Intermediate networking devices
US11218854B2 (en) 2009-01-28 2022-01-04 Headwater Research Llc Service plan design, user interfaces, application programming interfaces, and device management
US9351193B2 (en) 2009-01-28 2016-05-24 Headwater Partners I Llc Intermediate networking devices
US10783581B2 (en) 2009-01-28 2020-09-22 Headwater Research Llc Wireless end-user device providing ambient or sponsored services
US9755842B2 (en) 2009-01-28 2017-09-05 Headwater Research Llc Managing service user discovery and service launch object placement on a device
US8793758B2 (en) 2009-01-28 2014-07-29 Headwater Partners I Llc Security, fraud detection, and fraud mitigation in device-assisted services systems
US10200541B2 (en) 2009-01-28 2019-02-05 Headwater Research Llc Wireless end-user device with divided user space/kernel space traffic policy system
US10326800B2 (en) 2009-01-28 2019-06-18 Headwater Research Llc Wireless network service interfaces
US9270559B2 (en) 2009-01-28 2016-02-23 Headwater Partners I Llc Service policy implementation for an end-user device having a control application or a proxy agent for routing an application traffic flow
US9578182B2 (en) 2009-01-28 2017-02-21 Headwater Partners I Llc Mobile device and service management
US10841839B2 (en) 2009-01-28 2020-11-17 Headwater Research Llc Security, fraud detection, and fraud mitigation in device-assisted services systems
US10264138B2 (en) 2009-01-28 2019-04-16 Headwater Research Llc Mobile device and service management
US9980146B2 (en) 2009-01-28 2018-05-22 Headwater Research Llc Communications device with secure data path processing agents
US9253663B2 (en) 2009-01-28 2016-02-02 Headwater Partners I Llc Controlling mobile device communications on a roaming network based on device state
US9706061B2 (en) 2009-01-28 2017-07-11 Headwater Partners I Llc Service design center for device assisted services
US9647918B2 (en) 2009-01-28 2017-05-09 Headwater Research Llc Mobile device and method attributing media services network usage to requesting application
US8745191B2 (en) 2009-01-28 2014-06-03 Headwater Partners I Llc System and method for providing user notifications
US10798252B2 (en) 2009-01-28 2020-10-06 Headwater Research Llc System and method for providing user notifications
US10715342B2 (en) 2009-01-28 2020-07-14 Headwater Research Llc Managing service user discovery and service launch object placement on a device
US9954975B2 (en) 2009-01-28 2018-04-24 Headwater Research Llc Enhanced curfew and protection associated with a device group
US9392462B2 (en) 2009-01-28 2016-07-12 Headwater Partners I Llc Mobile end-user device with agent limiting wireless data communication for specified background applications based on a stored policy
US9571559B2 (en) 2009-01-28 2017-02-14 Headwater Partners I Llc Enhanced curfew and protection associated with a device group
US10064055B2 (en) 2009-01-28 2018-08-28 Headwater Research Llc Security, fraud detection, and fraud mitigation in device-assisted services systems
US10484858B2 (en) 2009-01-28 2019-11-19 Headwater Research Llc Enhanced roaming services and converged carrier networks with device assisted services and a proxy
US9609510B2 (en) 2009-01-28 2017-03-28 Headwater Research Llc Automated credential porting for mobile devices
US10057775B2 (en) 2009-01-28 2018-08-21 Headwater Research Llc Virtualized policy and charging system
US10248996B2 (en) 2009-01-28 2019-04-02 Headwater Research Llc Method for operating a wireless end-user device mobile payment agent
US8214434B2 (en) 2009-04-09 2012-07-03 Research In Motion Limited System and method for conflict resolution during the consolidation of information relating to a data service
US8433296B2 (en) 2009-05-01 2013-04-30 Ryan Hardin Exclusive delivery of content within geographic areas
JP5749256B2 (ja) * 2009-06-12 2015-07-15 ソニー株式会社 配信バックボーン
US8243626B2 (en) * 2009-09-23 2012-08-14 Apple Inc. Estimating user device location in a wireless network
US9116003B2 (en) * 2009-10-01 2015-08-25 Qualcomm Incorporated Routing graphs for buildings
US8812015B2 (en) 2009-10-01 2014-08-19 Qualcomm Incorporated Mobile device locating in conjunction with localized environments
US8880103B2 (en) 2009-10-12 2014-11-04 Qualcomm Incorporated Method and apparatus for transmitting indoor context information
US8229962B1 (en) 2009-10-19 2012-07-24 Quest Software, Inc. Location-aware task management systems and methods
US9389085B2 (en) 2010-01-22 2016-07-12 Qualcomm Incorporated Map handling for location based services in conjunction with localized environments
US8433335B2 (en) 2010-06-30 2013-04-30 Research In Motion Limited Method and apparatus for sharing information from a communication device
US8868105B2 (en) * 2011-10-24 2014-10-21 Nokia Corporation Method and apparatus for generating location stamps
US9172583B1 (en) * 2011-11-22 2015-10-27 Crimson Corporation Actively provisioning a managed node
US9043414B1 (en) * 2011-12-13 2015-05-26 Amazon Technologies, Inc. Geo-dynamic email lists
US9158563B2 (en) * 2012-03-27 2015-10-13 Microsoft Technology Licensing, Llc Dynamic plugin(s) for cloud application(s)
US9230556B2 (en) 2012-06-05 2016-01-05 Apple Inc. Voice instructions during navigation
US9269178B2 (en) * 2012-06-05 2016-02-23 Apple Inc. Virtual camera for 3D maps
US9892198B2 (en) * 2012-06-07 2018-02-13 Oath Inc. Page personalization performed by an edge server
US9595017B2 (en) * 2012-09-25 2017-03-14 International Business Machines Corporation Asset tracking and monitoring along a transport route
US9031579B2 (en) * 2012-10-01 2015-05-12 Mastercard International Incorporated Method and system for providing location services
EP3092830B2 (en) * 2014-01-10 2020-02-19 Signify Holding B.V. Feedback in a positioning system
EP3129873A1 (en) 2014-04-09 2017-02-15 Convida Wireless, LLC Service enabler function
US9377971B2 (en) * 2014-04-16 2016-06-28 Canon Kabushiki Kaisha Systems and methods for improving device discovery
WO2015158399A1 (en) * 2014-04-18 2015-10-22 Telecom Italia S.P.A. Method and system for identifying significant locations through data obtainable from a telecommunication network
US9473883B2 (en) 2014-05-31 2016-10-18 Apple Inc. Location service authorization and indication
US20160077892A1 (en) * 2014-09-12 2016-03-17 Microsoft Corporation Automatic Sensor Selection Based On Requested Sensor Characteristics
FR3027409B1 (fr) * 2014-10-17 2021-01-08 Sagem Defense Securite Procede pour la geolocalisation d'unites mobiles evoluant au sein d'une structure fermee
US9591443B2 (en) * 2015-06-01 2017-03-07 Apple Inc. Location service management
US10432561B2 (en) 2016-08-19 2019-10-01 International Business Machines Corporation Proximity-based communication
JP6783382B2 (ja) * 2016-09-09 2020-11-11 華為技術有限公司Huawei Technologies Co.,Ltd. 通知メッセージを関連付けるための方法、装置、およびモバイル端末
CN108693926B (zh) * 2017-04-06 2021-06-29 佛山市顺德区顺达电脑厂有限公司 机架式服务器系统及其组装管理方法
CN108363609B (zh) * 2018-02-07 2021-11-30 腾讯科技(深圳)有限公司 模拟传感器的方法、装置和存储介质
CN110456398B (zh) * 2019-07-30 2021-11-26 广州市百果园信息技术有限公司 地理位置确定方法、装置、存储介质及设备
US11388564B2 (en) * 2019-12-11 2022-07-12 Nec Corporation Infrastructure-free RF tracking in dynamic indoor environments
US11609894B2 (en) * 2021-06-04 2023-03-21 Adobe Inc. Data storage system conflict management
CN113440858A (zh) * 2021-07-02 2021-09-28 珠海金山网络游戏科技有限公司 数据处理方法及装置
CN116149778B (zh) * 2023-04-19 2023-06-27 深圳开鸿数字产业发展有限公司 界面显示方法、终端设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999057839A2 (en) * 1998-05-07 1999-11-11 Samsung Electronics Co., Ltd. Method and apparatus for user and device command and control in a network
JP2000102058A (ja) * 1998-09-25 2000-04-07 Nippon Telegr & Teleph Corp <Ntt> 移動端末の位置検出方法および装置
US6198914B1 (en) * 1997-10-08 2001-03-06 Takao Saegusa Emergency call system
JP2001235528A (ja) * 2000-02-22 2001-08-31 Ntt Docomo Inc 携帯端末
WO2001098936A2 (en) * 2000-06-22 2001-12-27 Microsoft Corporation Distributed computing services platform
WO2002015515A2 (en) * 2000-08-11 2002-02-21 Manugistics, Inc. System and method for integrating disparate networks for use in electronic communication and commerce

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FI92126C (fi) * 1992-11-09 1994-09-26 Nokia Telecommunications Oy Verkkojärjestely
US5699431A (en) * 1995-11-13 1997-12-16 Northern Telecom Limited Method for efficient management of certificate revocation lists and update information
GB2321363A (en) * 1997-01-21 1998-07-22 Northern Telecom Ltd Telecommunications
ATE335367T1 (de) 2000-03-13 2006-08-15 Nokia Corp Dienstanbietung in einem kommunikationssystem
JP2001282813A (ja) * 2000-03-29 2001-10-12 Toshiba Corp マルチメディアデータ検索方法、インデックス情報提供方法、マルチメディアデータ検索装置、インデックスサーバ及びマルチメディアデータ検索サーバ
US6684250B2 (en) * 2000-04-03 2004-01-27 Quova, Inc. Method and apparatus for estimating a geographic location of a networked entity
US7000015B2 (en) * 2000-04-24 2006-02-14 Microsoft Corporation System and methods for providing physical location information and a location method used in discovering the physical location information to an application on a computing device
GB2371178B (en) 2000-08-22 2003-08-06 Symbian Ltd A method of enabling a wireless information device to access data services
US6768994B1 (en) * 2001-02-23 2004-07-27 Trimble Navigation Limited Web based data mining and location data reporting and system
US7454523B2 (en) * 2001-03-16 2008-11-18 Intel Corporation Geographic location determination including inspection of network address
US6950876B2 (en) * 2001-03-19 2005-09-27 Lucent Technologies Inc. Multiple-protocol home location register and method of use
WO2002099597A2 (en) * 2001-06-07 2002-12-12 Unwired Express, Inc. Method and system for providing context awareness
JP2003228534A (ja) * 2001-11-30 2003-08-15 Ntt Docomo Inc 情報配信システム、記述データ配信装置、コンテンツ位置管理装置、データ変換装置、受信端末装置、情報配信方法
US6845241B2 (en) * 2002-01-07 2005-01-18 International Business Machines Corporation Relevance assessment for location information received from multiple sources

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6198914B1 (en) * 1997-10-08 2001-03-06 Takao Saegusa Emergency call system
WO1999057839A2 (en) * 1998-05-07 1999-11-11 Samsung Electronics Co., Ltd. Method and apparatus for user and device command and control in a network
JP2003522427A (ja) * 1998-05-07 2003-07-22 サムスン エレクトロニクス カンパニー リミテッド ネットワークで使用者とデバイス命令及び制御のための方法及び装置
JP2000102058A (ja) * 1998-09-25 2000-04-07 Nippon Telegr & Teleph Corp <Ntt> 移動端末の位置検出方法および装置
JP2001235528A (ja) * 2000-02-22 2001-08-31 Ntt Docomo Inc 携帯端末
WO2001098936A2 (en) * 2000-06-22 2001-12-27 Microsoft Corporation Distributed computing services platform
JP2004531780A (ja) * 2000-06-22 2004-10-14 マイクロソフト コーポレーション 分散型コンピューティングサービスプラットフォーム
WO2002015515A2 (en) * 2000-08-11 2002-02-21 Manugistics, Inc. System and method for integrating disparate networks for use in electronic communication and commerce
JP2004511034A (ja) * 2000-08-11 2004-04-08 マニュギスティックス・インコーポレイテッド 電子通信および電子商取引で使用される異種ネットワークを統合するシステムおよび方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010538392A (ja) * 2007-09-06 2010-12-09 マイクロソフト コーポレーション セッションブローカ拡張性アプリケーションプログラムインターフェース

Also Published As

Publication number Publication date
AU2004200733B2 (en) 2009-02-05
RU2358282C2 (ru) 2009-06-10
ES2569264T3 (es) 2016-05-09
CN1534514B (zh) 2010-05-05
CN1534514A (zh) 2004-10-06
BRPI0400785A (pt) 2005-01-11
CA2460318C (en) 2013-05-07
RU2004109134A (ru) 2005-10-10
MXPA04002918A (es) 2005-09-08
US7536695B2 (en) 2009-05-19
AU2004200733A1 (en) 2004-10-14
EP1463269B1 (en) 2016-03-23
KR101114181B1 (ko) 2014-02-26
EP1463269A2 (en) 2004-09-29
US20040193707A1 (en) 2004-09-30
EP1463269A3 (en) 2006-05-17
JP4729262B2 (ja) 2011-07-20
CA2460318A1 (en) 2004-09-28
KR20040085051A (ko) 2004-10-07

Similar Documents

Publication Publication Date Title
JP4729262B2 (ja) ロケーション・アウェアネスのアーキテクチャとシステム
US10885182B1 (en) System and method for secure, policy-based access control for mobile computing devices
KR102310649B1 (ko) 개인 식별 정보를 제거하기 위한 스크러버
US8375136B2 (en) Defining and implementing policies on managed object-enabled mobile devices
KR101557322B1 (ko) 호스트형 컴퓨터 환경에서 가상 오브젝트 우회
US7640288B2 (en) Schema for location awareness
US7711625B2 (en) Asynchronous events in meta-data driven instrumentation
US10545991B2 (en) Synchronizing local and remote data
US8981902B2 (en) Controlling location information
US11909845B2 (en) Methods and systems for managing applications of a multi-access edge computing environment
CN112313627B (zh) 事件到无服务器函数工作流实例的映射机制
US8200823B1 (en) Technique for deployment and management of network system management services
US7676475B2 (en) System and method for efficient meta-data driven instrumentation
US7734640B2 (en) Resource discovery and enumeration in meta-data driven instrumentation
US7562084B2 (en) System and method for mapping between instrumentation and information model
US7805507B2 (en) Use of URI-specifications in meta-data driven instrumentation
US7681204B2 (en) Event filtering at a performance-based interface
US20230289457A1 (en) Preventing Illicit Data Transfer and Storage
CN116450598A (zh) 一种资源数据处理方法、装置、电子设备及存储介质
US20070299846A1 (en) System and method for meta-data driven instrumentation
CN117786730A (zh) 一种数据处理方法、装置、设备以及存储介质
WO2024010747A1 (en) Approval workflows for anomalous user behavior
US20070299847A1 (en) System and method for instrumentation using a native-asset-interface repository

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070306

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100409

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110318

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110412

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110418

R150 Certificate of patent or registration of utility model

Ref document number: 4729262

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140422

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees