(57)【要約】  【課題】ユーザの介入を必要とせずにユーザの状況に応じてデバイスを管理する方法、システム、およびプログラムを提供すること。  【解決手段】  本発明の例示的な実施形態は、デバイスを管理するための手段を含む。かかる例示的な方法は、複数のユーザ計量を受信するステップと、複数のユーザ計量に応じて関連計量を生成するステップと、少なくとも１つのユーザ計量および少なくとも１つの関連計量を有するユーザ計量ベクトルを生成するステップと、複数の計量範囲を有するユーザ計量空間を生成するステップと、ユーザ計量ベクトルがユーザ計量空間の外にあるか否かを判定するステップとを含む。ユーザ計量ベクトルがユーザ計量空間の外にある場合、例示的な実施形態は、アクションを識別するステップと、アクションを実行するステップとを含む。【選択図】  図９
2006039750.tif 000002
【特許請求の範囲】
【請求項１】
デバイスを管理する方法であって、
複数のユーザ計量を受信するステップと、
前記複数のユーザ計量を基に関連計量を生成するステップと、
少なくとも１つのユーザ計量および少なくとも１つの関連計量を有するユーザ計量ベクトルを生成するステップと、
複数の計量範囲を有するユーザ計量空間を生成するステップと、
前記ユーザ計量ベクトルが前記ユーザ計量空間の外にあるか否かを判定するステップと、
前記ユーザ計量ベクトルがユーザ計量空間の外にある場合、アクションを識別するステップと、
前記アクションを実行するステップと、
を有する、方法。
【請求項２】
前記複数のユーザ計量を基に関連計量を生成するステップは、前記ユーザ計量をフィルタリングするステップを有する、請求項１の方法。
【請求項３】
前記複数のユーザ計量を基に関連計量を生成するステップは、第１のフィルタリングしたユーザ計量と第２のフィルタリングしたユーザ計量との間の関係を判定するステップを有する、請求項２の方法。
【請求項４】
第１のフィルタリングしたユーザ計量と第２のフィルタリングしたユーザ計量との間の関係を判定するステップは、第１のフィルタリングしたユーザ計量を第２のフィルタリングしたユーザ計量と比較するステップを有する、請求項３の方法。
【請求項５】
前記複数のユーザ計量を基に関連計量を生成するステップは、前記第１のフィルタリングしたユーザ計量と前記第２のフィルタリングしたユーザ計量との間の前記関係の大きさを判定するステップを有する、請求項３の方法。
【請求項６】
前記複数のユーザ計量を基に関連計量を生成するステップは、前記複数のユーザ計量が既定の計量パターンに一致するか否かを判定するステップを有する、請求項１の方法。
【請求項７】
前記複数のユーザ計量が前記既定の計量パターンに一致する場合、関連計量を検索するステップを有する、請求項６の方法。
【請求項８】
少なくとも１つのユーザ計量および少なくとも１つの関連計量を有するユーザ計量ベクトルを生成するステップは、少なくとも１つのユーザ計量を前記ユーザ計量ベクトルに関連付けるステップ、および、少なくとも１つの関連計量を前記ユーザ計量ベクトルに関連付けるステップを有する、請求項１の方法。
【請求項９】
アクションを識別するステップは、
ユーザの位置を判定するステップと、
前記ユーザの位置を基にアクションＩＤを選択するステップと、
を有する、請求項１の方法。
【請求項１０】
アクションを識別するステップは、
ユーザの移動を判定するステップと、
前記ユーザの移動を基にアクションＩＤを選択するステップと、
を有する、請求項９の方法。
【請求項１１】
デバイスを管理するシステムであって、
複数のユーザ計量を受信するための手段と、
前記複数のユーザ計量を基に関連計量を生成するための手段と、
少なくとも１つのユーザ計量および少なくとも１つの関連計量を有するユーザ計量ベクトルを生成するための手段と、
複数の計量範囲を有するユーザ計量空間を生成するための手段と、
前記ユーザ計量ベクトルが前記ユーザ計量空間の外にあるか否かを判定するための手段と、
前記ユーザ計量ベクトルがユーザ計量空間の外にある場合、アクションを識別するための手段と、
前記アクションを実行するための手段と、
を有する、システム。
【請求項１２】
前記複数のユーザ計量を基に関連計量を生成するための手段は、前記ユーザ計量をフィルタリングするための手段を有する、請求項１１のシステム。
【請求項１３】
前記複数のユーザ計量を基に関連計量を生成するための手段は、第１のフィルタリングしたユーザ計量と第２のフィルタリングしたユーザ計量との間の関係を判定するための手段を有する、請求項１２のシステム。
【請求項１４】
第１のフィルタリングしたユーザ計量と第２のフィルタリングしたユーザ計量との間の関係を判定するための手段は、第１のフィルタリングしたユーザ計量を第２のフィルタリングしたユーザ計量と比較するための手段を有する、請求項１３のシステム。
【請求項１５】
前記複数のユーザ計量を基に関連計量を生成するための手段は、前記第１のフィルタリングしたユーザ計量と前記第２のフィルタリングしたユーザ計量との間の前記関係の大きさを判定するための手段を有する、請求項１３のシステム。
【請求項１６】
前記複数のユーザ計量を基に関連計量を生成するための手段は、前記複数のユーザ計量が既定の計量パターンに一致するか否かを判定するための手段を有する、請求項１１のシステム。
【請求項１７】
前記複数のユーザ計量が前記既定の計量パターンに一致する場合、関連計量を検索するための手段を有する、請求項１６のシステム。
【請求項１８】
少なくとも１つのユーザ計量および少なくとも１つの関連計量を有するユーザ計量ベクトルを生成するための手段は、少なくとも１つのユーザ計量を前記ユーザ計量ベクトルに関連付けるための手段、および、少なくとも１つの関連計量を前記ユーザ計量ベクトルに関連付けるための手段を有する、請求項１１のシステム。
【請求項１９】
アクションを識別するステップは、
ユーザの位置を判定するための手段と、
前記ユーザの位置を基にアクションＩＤを選択するための手段と、
を有する、請求項１１のシステム。
【請求項２０】
アクションを識別するための手段は、
ユーザの移動を判定するための手段と、
前記ユーザの移動を基にアクションＩＤを選択するための手段と、
を有する、請求項１９のシステム。
【請求項２１】
デバイスを管理するためのコンピュータプログラムプロダクトであって、
記録媒体と、
前記記録媒体上に記録された、複数のユーザ計量を受信するための手段と、
前記記録媒体上に記録された、前記複数のユーザ計量を基に関連計量を生成するための手段と、
前記記録媒体上に記録された、少なくとも１つのユーザ計量および少なくとも１つの関連計量を有するユーザ計量ベクトルを生成するための手段と、
前記記録媒体上に記録された、複数の計量範囲を有するユーザ計量空間を生成するための手段と、
前記記録媒体上に記録された、前記ユーザ計量ベクトルが前記ユーザ計量空間の外にあるか否かを判定するための手段と、
前記ユーザ計量ベクトルがユーザ計量空間の外にある場合、アクションを識別するための、前記記録媒体上に記録された手段と、
前記記録媒体上に記録された、前記アクションを実行するための手段と、
を有する、プロダクト。
【請求項２２】
前記記録媒体上に記録された、前記複数のユーザ計量を基に関連計量を生成するための手段は、前記記録媒体上に記録された、前記ユーザ計量をフィルタリングするための手段を有する、請求項２１のコンピュータプログラムプロダクト。
【請求項２３】
前記記録媒体上に記録された、前記複数のユーザ計量を基に関連計量を生成するための手段は、前記記録媒体上に記録された、第１のフィルタリングしたユーザ計量と第２のフィルタリングしたユーザ計量との間の関係を判定するための手段を有する、請求項２２のコンピュータプログラムプロダクト。
【請求項２４】
前記記録媒体上に記録された、第１のフィルタリングしたユーザ計量と第２のフィルタリングしたユーザ計量との間の関係を判定するための手段は、前記記録媒体上に記録された、第１のフィルタリングしたユーザ計量を第２のフィルタリングしたユーザ計量と比較するための手段を有する、請求項２３のコンピュータプログラムプロダクト。
【請求項２５】
前記記録媒体上に記録された、前記複数のユーザ計量を基に関連計量を生成するための手段は、前記記録媒体上に記録された、前記第１のフィルタリングしたユーザ計量と前記第２のフィルタリングしたユーザ計量との間の前記関係の大きさを判定するための手段を有する、請求項２３のコンピュータプログラムプロダクト。
【請求項２６】
前記記録媒体上に記録された、前記複数のユーザ計量を基に関連計量を生成するための手段は、前記記録媒体上に記録された、前記複数のユーザ計量が既定の計量パターンに一致するか否かを判定するための手段を有する、請求項２５のコンピュータプログラムプロダクト。
【請求項２７】
前記複数のユーザ計量が前記既定の計量パターンに一致する場合、関連計量を検索するための、前記記録媒体上に記録された手段を有する、請求項２６のコンピュータプログラムプロダクト。
【請求項２８】
前記記録媒体上に記録された、少なくとも１つのユーザ計量および少なくとも１つの関連計量を有するユーザ計量ベクトルを生成するための手段は、前記記録媒体上に記録された、少なくとも１つのユーザ計量を前記ユーザ計量ベクトルに関連付けるための手段、および、前記記録媒体上に記録された、少なくとも１つの関連計量を前記ユーザ計量ベクトルに関連付けるための手段を有する、請求項２１のコンピュータプログラムプロダクト。
【請求項２９】
前記記録媒体上に記録された、アクションを識別するステップは、
前記記録媒体上に記録された、ユーザの位置を判定するための手段と、
前記記録媒体上に記録された、前記ユーザの位置を基にアクションＩＤを選択するための手段と、
を有する、請求項２１のコンピュータプログラムプロダクト。
【請求項３０】
前記記録媒体上に記録された、アクションを識別するための手段は、
前記記録媒体上に記録された、ユーザの移動を判定するための手段と、
前記記録媒体上に記録された、前記ユーザの移動を基にアクションＩＤを選択するための手段と、
を有する、請求項２９のコンピュータプログラムプロダクト。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の範囲は、データ処理であり、更に具体的には、デバイスを管理するための方法、システム、およびプログラムである。
【背景技術】
【０００２】
従来のネットワークは、様々なデバイスを含む。ユーザは、多くの場合、様々なデバイスを用いたり、またはユーザの現在の状況に応じてデバイスの具体的な設定を調整したりする。すなわち、多くの場合、ユーザの現在の状況が動機となって、ユーザは、現在の状況にもっと積極的に役立つ方法でデバイスが動作するようにデバイスの設定を変更する。例えば、頭痛のするユーザは、強い光によって不快感を覚えることがある。ユーザは、光を弱めるか、または消灯して、光によって悩まされないようにすることができる。しかしながら、従来のネットワーク接続デバイスでは、ユーザの状況に応答して特定のデバイスを個別に管理するために、ユーザが介入する必要がある。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ユーザの介入を必要とせずにユーザの状況に応じてデバイスを管理する方法があれば、好都合であろう。
【課題を解決するための手段】
【０００４】
本発明の例示的な実施形態は、デバイスの管理方法を含む。かかる例示的な方法は、複数のユーザ計量（metrics）を受信するステップと、複数のユーザ計量を基に関連計量（a relational metric）を生成するステップと、少なくとも１つのユーザ計量および少なくとも１つの関連計量を有するユーザ計量ベクトルを生成するステップと、複数の計量範囲を有するユーザ計量空間を生成するステップと、ユーザ計量ベクトルがユーザ計量空間の外にあるか否かを判定するステップと、を含む。ユーザ計量ベクトルがユーザ計量空間の外にある場合、例示的な実施形態は、アクションを識別するステップと、アクションを実行するステップと、を含む。
【０００５】
多くの例示的な実施形態では、複数のユーザ計量を基に関連計量を生成するステップは、ユーザ計量をフィルタリングするステップを含む。いくつかの例示的な実施形態では、複数のユーザ計量を基に関連計量を生成するステップは、第１のフィルタリングしたユーザ計量と第２のフィルタリングしたユーザ計量との間の関係を判定するステップを含む。いくつかの実施形態では、第１のフィルタリングしたユーザ計量と第２のフィルタリングしたユーザ計量との間の関係を判定するステップは、第１のフィルタリングしたユーザ計量を第２のフィルタリングしたユーザ計量と比較するステップを含む。多くの例示的な実施形態では、複数のユーザ計量に応じて関連計量を生成するステップは、第１のフィルタリングしたユーザ計量と第２のフィルタリングしたユーザ計量との間の関係の大きさを判定するステップを含む。
【０００６】
いくつかの例示的な実施形態では、複数のユーザ計量を基に関連計量を生成するステップは、複数のユーザ計量が既定の計量パターンに一致するか否かを判定するステップを含む。かかる実施形態の多くは、複数のユーザ計量が既定の計量パターンに一致する場合、関連計量を検索するステップを含む。いくつかの例示的な実施形態では、少なくとも１つのユーザ計量および少なくとも１つの関連計量を含むユーザ計量ベクトルを生成するステップは、少なくとも１つのユーザ計量をユーザ計量ベクトルに関連付けるステップ、および、少なくとも１つの関連計量をユーザ計量ベクトルに関連付けるステップを含む。    
【０００７】
いくつかの例示的な実施形態では、アクションを識別するステップは、ユーザの位置を判定するステップと、ユーザの位置を基にアクションＩＤを選択するステップと、
を含む。多くのかかる実施形態では、アクションを識別するステップは、ユーザの移動を判定するステップと、ユーザの移動を基にアクションＩＤを選択するステップと、を含む。
【０００８】
本発明の前述および他の目的、特徴、および利点は、添付図面に例示するような本発明の例示的な実施形態の以下の具体的な説明から明らかであろう。図面において、同様の参照番号は、概ね、本発明の例示的な実施形態の同様の部分を表す。
【発明を実施するための最良の形態】
【０００９】
序論
本発明について、デバイスの管理方法の点から、本明細書において詳細に述べる。しかしながら、開示する方法に従って動作する適切なプログラミング手段を含むいかなるコンピュータシステムも、本発明の範囲内に該当することは、当業者には認められよう。
【００１０】
適切なプログラム手段は、コンピュータシステムに本発明の方法のステップの実行を指示するためのいずれかの手段を含む。これは、例えば、コンピュータメモリに結合された処理ユニットおよび演算論理回路から成るシステムであって、コンピュータメモリに格納する機能を有するものであり、このコンピュータメモリは、データおよびプログラム命令、処理ユニットによって実行される本発明の方法のプログラムステップを格納するように構成された電子回路を含む。また、本発明は、いずれかの適切なデータ処理システムと共に用いるため、ディスケットまたは他の記録媒体等のコンピュータプログラムプロダクトにおいて具現化することができる。
【００１１】
コンピュータプログラムプロダクトの実施形態は、磁気媒体、光媒体、または他の適切な媒体を含む、機械読み取り可能情報のためのいずれかの記録媒体を用いることによって実施することができる。適切なプログラミング手段を有するあらゆるコンピュータシステムが、プログラムプロダクトに具現化される本発明の方法のステップを実行可能であることは、当業者にはすぐに認められよう。本明細書において記載する例示的な実施形態のほとんどは、コンピュータハードウエアにインストールされて実行されるソフトウエアを指向するが、ファームウエアまたはハードウエアとして実施される代替的な実施形態が本発明の範囲内であることは、当業者にはすぐに認められよう。
【００１２】
定義
「８０２．１１」は、ワイヤレスＬＡＮ技術のための、ＩＥＥＥが開発した仕様ファミリを指す。８０２．１１は、ワイヤレスクライアントと基地局との間、または２つのワイヤレスクライアント間の、無線インタフェースを規定する。
【００１３】
「ＡＰＩ」は、「アプリケーションプログラミングインタフェース」の略語である。ＡＰＩは、ソフトウエアアプリケーションを構築するための、ルーチン、プロトコル、およびツールの集合である。
【００１４】
「Bluetooth」は、ＬＡＮまたは他のネットワーク上での、クライアントデバイス間、またはクライアントデバイスとリソースとの間のＲＦ結合のための短距離無線技術の業界仕様を指す。Bluetooth Special Interest Groupと呼ばれる運営団体が、Bluetoothに準拠するデバイスを試験し認定する。Bluetooth仕様は、設計仕様を提供する「FoundationCore」、および、相互運用性のガイドラインを提供する「FoundationProfile」から成る。
【００１５】
「データ通信のための結合」は、ワイヤレス、８０２．１１ｂ、Bluetooth、赤外線、無線、インターネットプロトコル、ＨＴＴＰプロトコル、ｅメールプロトコル、ネットワーク接続、直接接続、専用電話線、ダイヤルアップ、ＲＳ−２３２（ＥＩＡ２３２）またはユニバーサルシリアルバスによるシリアル接続、配線によるパラレルポート接続、電力線プロトコルに従ったネットワーク接続、および、当業者に想起されるデータ通信のための他の形態の接続等、いずれかの形態のデータ接続を意味する。データ通信のための結合は、データ通信のためのネットワーク接続による結合を含む。本発明の様々な実施形態において有用なネットワークの例は、ケーブルネットワーク、イントラネット、エクストラネット、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、および、当業者に想起される他のネットワーク構成を含む。テレビチャネル、ケーブルチャネル、ビデオ提供業者、電気通信ソース等の間のあらゆるネットワーク接続による結合の使用は、本発明の範囲内である。
【００１６】
「ドライバ」は、デバイスを制御するプログラムを意味する。デバイス（プリンタ、ディスクドライブ、キーボード）は、通常ドライバを有する。ドライバは、デバイスと、このデバイスを用いるソフトウエアプログラムとの間の翻訳機として機能する。各デバイスは、そのドライバが知っている専用のコマンド集合を有する。ソフトウエアプログラムは、一般に、汎用コマンドを用いることによってデバイスにアクセスする。従って、ドライバは、プログラムから汎用コマンドを受け、次いで、それらをデバイスのための専用コマンドに翻訳する。
【００１７】
「ＥＳＮ」は、「エレクトロニックシリアルナンバー」の略語である。ＥＳＮは、例えばコーヒーポット等のデバイス内にプログラムされて、そのデバイスを一意に識別する通し番号である。
【００１８】
「フィールド」。本明細書において、「フィールド」および「データ要素」という語は、文脈によって他の意味を示さない限り、一般に同意語として用いられ、デジタルデータの個々の要素を指す。データ要素の集合を、「レコード」または「データ構造」と称する。レコードの集合を、「テーブル」または「ファイル」と称する。ファイルまたはテーブルの集合を、「データベース」と称する。データ要素に加えて、メンバメソッド（member method）、関数、またはソフトウエアルーチンを含む複合データ構造は、「クラス」と称する。クラスのインスタンスを、「オブジェクト」または「クラスオブジェクト」と称する。
【００１９】
「ＨＡＶｉ」は、「Home AudioVideo Interoperability」を表し、特に家庭用娯楽環境のためのベンダー中立のオーディオ−ビデオ規格の名前である。ＨＡＶｉによって、異なる家庭用娯楽および通信デバイス（ＶＣＲ、テレビ、ステレオ、セキュリティシステム、ビデオモニタ等）を、ネットワーク接続し、サービスゲートウエイ、ＰＣ、テレビ等の１つの主デバイスから制御することができる。ＩＥＥＥ１３９４すなわち「Firewire」仕様を相互接続媒体として用いて、ＨＡＶｉにより、異なるベンダーからの製品が、規定された接続および通信プロトコルならびにＡＰＩに基づいて、互いに適合することができる。ＨＡＶｉの分散アプリケーションシステムが提供するサービスには、アドレシング方式およびメッセージ転送、リソース発見のためのルックアップ、ローカルまたは遠隔イベントの通知および受信、ならびに等時性データストリームのストリーミングおよび制御が含まれる。
【００２０】
「HomePlug」は、HomePlug Powerline Allianceを表す。HomePlugは、高速家庭用電力線ネットワーク接続製品およびサービスのオープン仕様作成のためのフォーラムを提供するために形成された非営利目的の団体である。HomePlug仕様は、電力線ネットワーク接続規格を用いて、家庭用電力口を介して家庭にインターネット通信およびマルチメディアを配信するために設計されている。
【００２１】
HomePlugプロトコルによって、HomePlug対応デバイスは、無線周波数信号（ＲＦ）を用いて電力線を介して通信を行うことができる。HomePlugプロトコルは、直交周波数分割多重（ＯＦＤＭ：Orthogonal FrequencyDivision Multiplexing）を用いて、ＲＦ信号を多数のもっと小さいサブ信号に分割し、これらを、電力線を介して異なる周波数で、１つのHomePlug対応デバイスから他のHomePlug対応デバイスに送信する。
【００２２】
「ＨＴＴＰ」は、「Hyper TextTransport Protocol」を表し、ワールドワイドウエブのための標準的なデータ通信プロトコルである。
【００２３】
「ＩＤ」は、「アイデンティフィケーション（識別子）」の略語であり、本明細書中では、慣例的にデータ要素中に表される名詞と共に用いられる。このため、「ｕｓｅｒ  ＩＤ」はユーザの識別子を指し、「ｕｓｅｒＩＤ」は、ユーザ識別子が格納されているデータ要素の名前である。「ＩＤ」の使用の更に別の例では、「ｍｅｔｒｉｃ  ＩＤ」は計量の識別子であり、「ｍｅｔｒｉｃＩＤ」は、計量の識別子が格納されているデータ要素の名前である。
【００２４】
「ＩＥＥＥ１３９４」は、４００Ｍｂｐｓ（毎秒４億ビット）までのデータ転送レートをサポートする外部バス規格である。最初にＩＥＥＥ１３９４を開発したＡｐｐｌｅ社は、商標名「FireWire」を用いる。他の会社は、i. ｌｉｎｋおよびＬｙｎｘ等の他の名前を用いて自社の１３９４製品を表す。
【００２５】
単一の１３９４ポートを用いて、６３までの外部デバイスを接続することができる。高速であることに加えて、１３９４は、等時性データ転送をサポートする。つまり、保証された速度でデータを送信する。これは、ビデオ等、リアルタイムで高レベルのデータを転送する必要のあるデバイスにとって理想的である。
【００２６】
「Internet（インターネット）」は、多数のコンピュータを接続するグローバルネットワークであり、ネットワーク接続プロトコルスタックのネットワーク層として、「インターネットプロトコル」すなわち「ＩＰ」を用いる。インターネットは、設計上、分散型である。インターネット上の各コンピュータは独立している。インターネット上の各コンピュータのオペレータは、どのインターネットサービスを用いるか、どのローカルサービスをグローバルインターネットコミュニティに利用可能とするかを選択することができる。インターネットにアクセスするためには、様々な方法がある。America Online等の多くのオンラインサービスが、いくつかのインターネットサービスに対するアクセスを提供する。また、商用インターネットサービスプロバイダ（ＩＳＰ）によってもアクセスすることができる。「internet（インターネット）」（大文字で始まらない）は、ネットワークプロトコルスタックのネットワーク層としてＩＰを用いるいずれかのネットワークである。
【００２７】
「ＪＡＲ」は、「Ｊａｖａ（登録商標）アーカイブ」の略語である。ＪＡＲは、Ｊａｖａアプリケーションが用いるコンポーネントをバンドルするために用いられるファイルフォーマットである。ＪＡＲファイルは、アプレットのダウンロードを簡略化する。なぜなら、多くのコンポーネント（.classファイル、画像、サウンド等）は、単一のファイルにパッケージ化することができるからである。また、ＪＡＲはデータ圧縮をサポートし、これによって更にダウンロード時間が短縮する。慣例的に、ＪＡＲファイルは、「.jar」拡張子で終了する。
【００２８】
「ＪＥＳ」は、Java EmbeddedServer（Ｊａｖａ埋め込みサーバ）の略語である。ＪＥＳは、ＯＳＧｉを商用に実施したものであり、埋め込みデバイスに対するアプリケーションおよびサービスの開発、展開、およびインストールのためのフレームワークを提供する。
【００２９】
「ＬＡＮ」は、「ローカルエリアネットワーク」の略語である。ＬＡＮは、比較的小さい領域に及ぶコンピュータネットワークである。多くのＬＡＮは、単一の建物または建物群に限定されている。しかしながら、１つのＬＡＮは、電話線または無線電波によって、いかなる距離を介しても、他のＬＡＮに接続することができる。このように接続されたＬＡＮのシステムは、ワイドエリアネットワーク（ＷＡＮ）と呼ばれる。インターネットは、ＷＡＮの１例である。
【００３０】
「Lon Works」は、Echelon（登録商標）から入手可能なネットワーク接続プラットフォームである。Lon Worksは、現在、家電制御および照明制御等の様々なネットワークアプリケーションで用いられている。Lon Worksネットワーク接続プラットフォームは、「LonTalk」と呼ばれるプロトコルを用い、これは、Lon Works対応デバイス内にインストールされた「ニューロンチップ（Neuron Chip）」内に埋め込まれている。
【００３１】
ニューロンチップは、多数のプロセッサ、読み取り−書き込みおよび読み取り専用メモリ（ＲＡＭおよびＲＯＭ）、ならびに通信およびＩ／Ｏサブシステムを有するチップ上システムである。読み取り専用メモリは、オペレーティングシステム、LonTalkプロトコル、およびＩ／Ｏ機能ライブラリを含む。チップは、構成データおよびアプリケーションプログラムのための不揮発性メモリを有し、これは、Lon Worksネットワークを介してデバイスにダウンロードすることができる。ニューロンチップは、標準的なＯＳＩネットワークモデルの最初の６層を提供する。すなわち、ニューロンチップは、物理層、データリンク層、ネットワーク層、トランスポート層、セッション層、およびプレゼンテーション層を提供する。
【００３２】
ニューロンチップは、アプリケーション層のプログラミングを提供しない。Lon Worksネットワークのためのアプリケーションは、「Neuron C」と呼ばれるプログラミング言語で書かれる。Neuron Cで書かれたアプリケーションは、通常、イベント駆動であり、従ってネットワーク上のトラヒックが減少することになる。
【００３３】
「ＯＳＧＩ」は、Open ServicesGateway Initiativeを示し、これはサービスゲートウエイのための仕様を開発する業界団体であり、サービスバンドルの送出、コンプライアントなデータ通信を提供するソフトウエアミドルウエア、およびサービスゲートウエイを介したサービスのための仕様に携わる。Open Services Gateway仕様は、Ｊａｖａベースのアプリケーション層フレームワークであり、サービスプロバイダ、ネットワークオペレータ、デバイス製造業者、および家電製造業者に、ベンダー中立のアプリケーションおよびデバイス層のＡＰＩおよび機能を与える。
【００３４】
「ＯＳＩ  Ｍｏｄｅｌ」すなわちOpenSystem Interconnectionモデルは、７層のプロトコルを実施するためのネットワーク接続フレームワークを規定する。制御は、１つの層から次の層に渡される。１つのネットワーク局においてアプリケーション層から開始し、最下層まで進み、チャネルを介して次のネットワーク局に進み、階層を逆行する。
【００３５】
ＯＳＩモデルの第７の層は、アプリケーション層である。アプリケーション層は、アプリケーションおよびエンドユーザプロセスをサポートする。アプリケーション層は、ファイル転送、ｅメール、および他のネットワークソフトウエアサービスのためのアプリケーションサービスを提供する。
【００３６】
ＯＳＩモデルの第６の層は、プレゼンテーション層である。プレゼンテーション層は、データ提示における相違からの独立を提供する。プレゼンテーション層は、アプリケーションデータフォーマットからネットワークデータフォーマットに、およびその逆への変換を行う。プレゼンテーション層は、時に、「シンタクス層」と呼ばれる。
【００３７】
ＯＳＩモデルの第５の層は、セッション層である。セッション層は、ネットワーク接続アプリケーション間の接続を確立し、管理し、終了させる。セッション層は、ネットワーク接続アプリケーション間の会話、交換、および対話をセットアップし、調整し、終了させる。
【００３８】
ＯＳＩモデルの第４の層は、トランスポート層である。トランスポート層は、ネットワーク接続システムまたはホスト間のトランスペアレントな転送を提供する。また、トランスポート層は、フロー制御を担い、完全なデータ転送を保証する。
【００３９】
ＯＳＩモデルの第３の層は、ネットワーク層である。ネットワーク層は、１つのネットワークノードから別のネットワークノードにデータを送信するため、仮想回路として知られる論理経路を生成する。ルーティング、転送、アドレッシング、およびパケット順序付けが、ネットワーク層の機能である。
【００４０】
ＯＳＩモデルの第２の層は、データリンク層である。データリンク層は、データパケットをビットに復号し、ビットをデータパケットに符号化する。データリンク層は、送信プロトコルを提供し、物理層におけるデータフロー送信を管理する。
【００４１】
データリンク層は、２つのサブ層に分けられる。データリンク層の第１のサブ層は、メディアアクセス制御（ＭＡＣ：Media Access Control）層である。ＭＡＣサブ層は、ネットワーク上のコンピュータがデータを送信するためのアクセスおよび許可を制御する。データリンク層の第２のサブ層は、論理リンク制御（ＬＬＣ：Logical Link Control）層である。ＬＬＣ層は、物理層におけるデータフロー送信を制御する。
【００４２】
ＯＳＩモデルの第１の層は、物理層である。物理層は、電気および機械レベルで物理ネットワークを介したビットストリームを送信する（電気インパルス、光または無線信号）。物理層は、データを送受信するためのハードウエアを提供する。
【００４３】
「ＳＭＦ」は、ＩＢＭ（登録商標）社から入手可能な「Service Management FrameworkTM」を表す。ＳＭＦは、サービスゲートウエイ上でネットワーク送信されたアプリケーションを管理するため、ＯＳＧｉを商用に実施したものである。
【００４４】
「ＵＳＢ」は、「ユニバーサルシリアルバス」の略語である。ＵＳＢは、１２Ｍｂｐｓのデータ転送レートをサポートする外部バス規格である。単一のＵＳＢポートを用いて、マウス、モデム、およびキーボード等の１２７までの周辺デバイスを接続することができる。また、ＵＳＢは、プラグアンドプレイのインストールおよびホットプラギング（hot plugging）もサポートする。
【００４５】
「ＷＡＰ」は、ワイヤレスアプリケーションプロトコルを示し、ハンドヘルドワイヤレスデバイスと共に用いるためのプロトコルである。ＷＡＰと共に役立つワイヤレスデバイスの例には、携帯電話、ポケットベル、２方向ラジオ、およびハンドヘルドコンピュータが含まれる。ＷＡＰは多くのワイヤレスネットワークをサポートし、ＷＡＰは多くのオペレーティングシステムによってサポートされる。ハンドヘルドデバイスのために特に設計されたオペレーティングシステムには、ＰａｌｍＯＳ、ＥＰＯＣ、Ｗｉｎｄｏｗｓ（登録商標）ＣＥ、ＦＬＥＸＯＳ、ＯＳ／９、およびＪａｖａＯＳが含まれる。ディスプレイを用い、インターネットにアクセスするＷＡＰデバイスは、「マイクロブラウザ（microbrowser）」を実行する。マイクロブラウザは、小さいファイルサイズを用い、これによって、ハンドヘルドデバイスの小さいメモリという制約およびワイヤレスネットワークの低帯域幅という制約に対応することができる。
【００４６】
「Ｘ−１０」は、Ｘ−１０プロトコルを意味する。典型的なＸ−１０対応デバイスは、Ｘ−１０送信器およびＸ−１０受信器を用いて、家庭における既存のＡＣ配線等のＡＣ電力配線を介して通信を行う。Ｘ−１０送信器およびＸ−１０受信器は、無線周波数（ＲＦ）信号を用いてデジタル情報を交換する。Ｘ−１０送信器およびＸ−１０受信器は、デジタル情報を表す短いＲＦバーストによって通信する。２進数の１は、１ミリ秒の１２０ＫＨｚのバーストによって表され、２進数の０は、１２０ＫＨｚバーストの不在の後にバーストが現れることによって表される。
【００４７】
Ｘ−１０プロトコルでは、データは、フレームと呼ばれるデータストリングの単位で送信される。フレームは、「１１１０」と指定される４ビットの開始コードで始まる。開始コードの後、フレームは、４ビットの「家コード」によって家等の特定のドメインを識別し、４ビットの「デバイスコード」によってそのドメイン内のデバイスを識別する。また、フレームは、「オン」、「オフ」、「暗い」、「明るい」、「ステータスオン」、「ステータスオフ」、および「ステータス要求」等、特定の予め設定されたコマンドを識別する８ビットのコマンドストリングを含む。
【００４８】
例示的なアーキテクチャ
図１は、本発明の実施形態による、デバイスの管理方法を実施する際に有用な例示的なアーキテクチャのブロック図である。図１のアーキテクチャは、ドメイン（１１８）を含む。本明細書中で、「ドメイン」という語は、特定のネットワーク接続環境を意味する。様々なドメインの例には、家庭のネットワーク、自動車のネットワーク、会社のネットワーク、および当業者によって想起される他のものが含まれる。
【００４９】
図１のドメイン（１１８）は、サービスゲートウエイ（１０６）を含む。サービスゲートウエイ（１０６）は、いくつかの例示的なアーキテクチャでは、ＯＳＧｉ準拠サービスゲートウエイ（１０６）である。本明細書では、デバイスの管理方法の例示的な実施形態は、ＯＳＧｉを用いて説明するが、多くの他のアプリケーションおよびフレームワークも、本発明によるデバイスの管理方法を実施するように機能し、従って本発明の範囲内にある。また、ＪＥＳおよびＳＭＦ等、ＯＳＧｉを商用に実施したものも、デバイスの管理方法を実施する際に有用である。
【００５０】
図１の例示的なアーキテクチャでは、サービスゲートウエイ（１０６）は、サービスフレームワーク（１２６）を含む。図１のサービスフレームワーク（１２６）は、「サービス」を実行するためのホストプラットフォームである。サービスは、ＯＳＧｉにおいてアプリケーションを生成するための主構築ブロックである。ＯＳＧｉサービスフレームワーク（１２６）は、Ｊａｖａで書かれ、従って通常、Ｊａｖａバーチャルマシン（ＪＶＭ：Java Virtual Machine）（１５０）上で実行する。
【００５１】
図１の例示的なアーキテクチャは、ＤＭＬ（１０８）を含む。「ＤＭＬ」（１０８）は、ドメインメディエーション層（Domain Mediation Layer）の略語である。図１のアーキテクチャの多くの実施形態では、ＤＭＬ（１０８）は、本発明によるデバイスの管理方法を実施する際に有用なアプリケーションソフトウエアである。本発明のいくつかの実施形態では、ＤＭＬは、ＯＳＧｉ準拠アプリケーションソフトウエアであり、従って、サービスフレームワーク（１２６）上にインストールされたサービスまたはバンドルとしてパッケージ化されたサービス群として実施される。本明細書では、多くの場合、ＤＭＬについて、ＯＳＧｉの文脈で考察する。しかしながら、ＯＳＧｉの考察は説明のためであり、限定のためではない。実際、本発明の様々な実施形態によるＤＭＬは、Ｃ、Ｃ＋＋、ＣＯＢＯＬ、ＦＯＲＴＲＡＮ、ＢＡＳＩＣ等、当業者によって実施されるいずれかのプログラミング言語において実施可能であり、Ｊａｖａ以外の言語で開発されたＤＭＬは、ＪＶＭでなくオペレーティングシステムまたはオペレーティング環境上に直接インストールされる。
【００５２】
図１の例示的なアーキテクチャにおいて、サービスゲートウエイ（１０６）は、データ通信のために計量センサ（４０６）と結合されている。計量センサ（４０６）は、ユーザの状況の指示を読み、ユーザの状況の指示に応答してユーザ計量を生成するデバイスである。「ユーザの状況の指示」は、ユーザの状況の定量化可能な特徴であり、この特徴を測定した量である。１例として、ユーザの状況の定量化可能な特徴は、華氏９９．２度の体温である。ユーザの状況の定量化可能な特徴の例には、体温、心拍数、血圧、位置、皮膚電気反応、および当業者に想起される他のものが含まれる。
【００５３】
「ユーザ計量」は、ユーザ状況の指示を表すデータ構造である。本発明によるデバイスの管理方法の多くの例では、ユーザ計量は、ｕｓｅｒＩＤフィールド、ｍｅｔｒｉｃＩＤフィールド、および計量値フィールドを含むデータ構造、クラス、またはオブジェクトとして実施される。典型的なｕｓｅｒＩＤフィールドは、計量によって状況の指示が表されるユーザを識別する。典型的なｍｅｔｒｉｃＩＤフィールドは、例えば、血圧、心拍数、位置、または皮膚電気反応等、計量が表すユーザ状況の定量化可能な特徴を識別する。典型的な計量値フィールドは、このユーザ状況の特徴を測定した量を格納する。
【００５４】
計量センサとして用いるために有用または容易に適合可能な着用可能かつワイヤレスの心拍モニタ、皮膚電気反応モニタ、眼球反応モニタ、および呼吸モニタは、現在、Quibit Systems, Inc.から入手可能である。Body Trends, Inc.からの心拍モニタの「Ｐｏｌａｒ」シリーズ、および、Sentec Corporationからの磁気弾性胃ｐＨセンサは、計量センサとして用いるために有用または容易に適合可能である、容易に入手可能な生物医学センサの他の例である。
【００５５】
生物医学センサ等の従来のセンサが、多数のユーザを含むドメインにおいて多数の計量タイプを送信する計量センサとして有用であるためには、センサは、測定する各特徴の値だけでなく、ｕｓｅｒ  ＩＤおよびｍｅｔｒｉｃ ＩＤも送信すると好都合である。ｕｓｅｒ  ＩＤが有用である理由は、本発明の典型的な実施形態が、多くのユーザのために同時にデバイスを管理することができるＤＭＬを含むからである。ｍｅｔｒｉｃ ＩＤが有用である理由は、１人だけのユーザが、同時に２つ以上の計量センサを用いたり、または、ユーザ状況の２つ以上の特徴に関するデータを監視および送信することができる計量センサを用いたりする場合があるからである。全てのワイヤレスセンサは、少なくとも、何らかのワイヤレスデータ通信プロトコルに従って計量値を送信する。いずれかの特定の「既製の」センサがｕｓｅｒ  ＩＤまたはｍｅｔｒｉｃ ＩＤを送信しない場合、かかるセンサは、単にその制御ソフトウエアをわずかに変更することによって、その送信にｕｓｅｒ  ＩＤおよびｍｅｔｒｉｃ ＩＤを含ませるように容易に適合される。
【００５６】
ほとんどのＤＭＬがｍｅｔｒｉｃ  ＩＤおよびｕｓｅｒ  ＩＤをサポートすると予想されるが、本発明の範囲内のいくつかの状況では、センサがその出力の遠隔測定データにおいてｍｅｔｒｉｃ  ＩＤおよびｕｓｅｒ  ＩＤを与えない場合でも、計量センサとして既製のセンサを用いることができる。ただ１人の者が、例えば心拍数等の単一の計量のみを追跡するＤＭＬによって制御または管理されるデバイスを有するドメインに住む例を考える。ただ１人のユーザのための１つのみの計量を追跡するＤＭＬは、計量センサから受信される遠隔測定データに計量種類のコードを必要とせずに機能することができる。これはむろん、ただ１つの種類の計量を受信するからである。この例では、厳密に言えば、Body Trendsからの「Ｐｏｌａｒ」センサ等、既存のBluetooth対応心拍センサが、計量センサとして機能することができるであろう。この例は、説明のためにのみ提示する。なぜなら、実際の問題として、本発明の実施形態によるほとんどのＤＭＬは、２人以上のユーザのために（従って遠隔測定データにｕｓｅｒ  ＩＤを必要とする）、２つ以上の種類の計量（従って遠隔測定データにｍｅｔｒｉｃ  ＩＤを必要とする）を管理すると有用かつ有利であると推測されるからである。
【００５７】
本発明の多くの実施形態では、計量センサは、データ通信のためにサービスゲートウエイ（１０６）とワイヤレスで結合すると有利である。多くの代替的な実施形態では、計量センサは、Bluetooth、８０２．１１、ＨＴＴＰ、ＷＡＰ、または当業者に想起される他のいずれかのプロトコル等の様々なプロトコルを用いて、ユーザ計量を、サービスゲートウエイを介してＤＭＬに送信する。
【００５８】
図１の例示的なアーキテクチャでは、ドメイン（１１８）は、データ通信のためにＬＡＮ（１０５）を介してサービスゲートウエイ（１０６）と結合されたデバイス（３１６）を含む。本発明の多くの実施形態では、ドメイン（１１８）は多くのデバイスを含む。例えば、家庭ドメインは、テレビ、多くの照明、冷蔵庫、冷凍庫、コーヒーポット、自動皿洗い機、乾燥機、ＣＤプレーヤ、ＤＶＤプレーヤ、個人用ビデオレコーダ、または当業者に想起される他のいずれかのネットワーク接続可能デバイスを有する家庭ネットワークを含むことができる。説明を容易にするため、図１の例示的なアーキテクチャは、３つのデバイス（３１６）のみを示すが、いかなる数のデバイスの使用も本発明の範囲内である。
【００５９】
デバイス（３１６）を管理するため、ＤＭＬは、デバイス上で属性を獲得し設定するアクセス機構メソッドを含むデバイス用デバイスクラス、および、場合によっては、デバイスと通信するのに必要なプロトコルを提供する通信クラスを有しなければならない。図１のアーキテクチャのいくつかの例では、ＤＭＬには、このＤＭＬがサポートする多くのデバイスのためのデバイスクラスおよび通信クラスがプレインストールされている。
【００６０】
ＤＭＬが特定のデバイスのためのプレインストールされたデバイスクラスおよび通信クラスを有しない場合、ＤＭＬは多くの方法でデバイスクラスおよび通信クラスを取得することができる。ＤＭＬがデバイスのためのデバイスクラスおよび通信クラスを取得する１つの方法は、デバイスクラスおよび通信クラスをデバイスから読み取ることである。このためには、デバイスクラスおよび通信クラスを格納するために充分なメモリがデバイスにインストールされている必要がある。また、ＤＭＬは、インストールされたデバイスクラスおよび通信クラスを含まないデバイスからデバイスクラスおよび通信クラスを取得することができる。ＤＭＬがデバイスクラスおよび通信クラスを取得する１つの方法は、デバイスからデバイスＩＤを読み取り、インターネットでデバイスクラスおよび通信クラスを検索し、それらをダウンロードすることである。ＤＭＬがデバイスクラスおよび通信クラスを取得する別の方法は、デバイスからネットワーク位置を読み取り、そのネットワーク位置からデバイスクラスおよび通信クラスをダウンロードすることである。本発明に従ってデバイスを管理するために必要なデバイスクラスおよび通信クラスを取得するための３つの方法を記載した。また、他の方法も、当業者には想起されよう。
【００６１】
図１の例示的なアーキテクチャは、データ通信のためにＷＡＮ（１０４）を介してサービスゲートウエイ（１０６）に結合された非ドメインエンティティ（１０２）を含む。「非ドメインエンティティ」は、データ通信のためにドメインに結合されるがドメイン内にはない、いずれかのコンピューティングデバイスまたはネットワーク位置である。「非ドメインエンティティ」という語は大まかなものであり、これが図１のアーキテクチャに含まれると、本発明によるデバイスの管理方法を実施する際に有用なアーキテクチャの多くの実施形態において、所与のドメインを、データ通信のために、外側の非ドメインエンティティと結合することが認められる。
【００６２】
非ドメインエンティティの１例は、ドメイン内にインストールされたデバイス（３１６）の製造業者のウエブサーバ（ドメインの外側）である。製造業者は、デバイスのドライバのダウンロード、デバイスの更新、またはデバイス用の他のいずれかの情報またはソフトウエアのために利用可能となるウエブサイトを運営することができる。デバイスのためのドライバ、更新、情報またはソフトウエアは、ＷＡＮを通して、サービスゲートウエイを介して、デバイスにダウンロードすることができる。
【００６３】
図２は、本発明によるデバイスの管理方法を実施する際に有用な例示的なサービスゲートウエイ（１０６）のブロック図である。図２のサービスゲートウエイ（１０６）は、本発明の実施形態において有用ないくつかの例示的なアーキテクチャにおいて、ＯＳＧｉ準拠サービスゲートウエイ（１０６）である。デバイスの管理方法の例示的な実施形態は、ＯＳＧｉを用いて本明細書中で説明するが、ＯＳＧｉ以外の多くの他のアプリケーションおよびフレームワークも、本発明によるデバイスの管理方法を実施するように機能し、従って本発明の範囲内である。また、ＪＥＳおよびＳＭＦ等、ＯＳＧｉを商用に実施したものは、本発明の方法を実施する際に有用である。
【００６４】
ＯＳＧｉは、「Open ServicesGateway Initiative」を表す。ＯＳＧｉ仕様は、Ｊａｖａベースのアプリケーション層フレームワークであり、家庭、自動車、および他の環境においてネットワークで動作する任意の通信プロトコルを用いた様々なデバイスに、ベンダー中立のアプリケーションおよびデバイス層のＡＰＩおよび機能を提供する。ＯＳＧｉは、Ethernet、Bluetooth、「Home, Audio and Video InteroperabilityStandard（ＨＡＶｉ）」、ＩＥＥＥ１３９４、ユニバーサルシリアルバス（ＵＳＢ）、ＷＡＰ、Ｘ−１０、Lon Works、HomePlugのような様々なネットワーク接続技術、および他の様々なネットワーク接続技術によって機能する。ＯＳＧｉ仕様は、www.osgi.orgでＯＳＧｉのウエブサイトから無料でダウンロードすることができる。
【００６５】
図２のサービスゲートウエイ（１０６）は、サービスフレームワーク（１２６）を含む。多くの例示的な実施形態では、サービスフレームワークは、ＯＳＧｉサービスフレームワーク（１２６）である。ＯＳＧｉサービスフレームワーク（１２６）は、Ｊａｖａで書かれ、従って、通常、Ｊａｖａバーチャルマシン（ＪＶＭ）上で動作する。ＯＳＧｉでは、図１のサービスフレームワーク（１２６）は、「サービス」（１２４）を実行するためのホストプラットフォームである。本開示において、「サービス」または「複数のサービス」という語は、文脈にもよるが、一般にＯＳＧｉ準拠のサービスを指す。
【００６６】
サービス（１２４）は、ＯＳＧｉに従ってアプリケーションを生成するための主構築ブロックである。サービス（１２４）は、ある機構を実現するＪａｖａクラスおよびインタフェースのグループである。ＯＳＧｉ仕様は、多数の標準サービスを提供する。例えば、ＯＳＧｉは、ＨＴＴＰクライアントからの要求に応答可能であるウエブサーバを生成する標準的なＨＴＴＰサービスを提供する。
【００６７】
また、ＯＳＧｉは、デバイスアクセス仕様と呼ばれる標準サービス集合を提供する。デバイスアクセス仕様（「ＤＡＳ：Device Access Specification」）は、サービスゲートウエイに接続するためのデバイスを識別し、そのデバイス用のドライバを検索し、デバイス用ドライバをインストールするためのサービスを提供する。
【００６８】
ＯＳＧｉにおけるサービス（１２４）は、実行のためにサービス（１２４）が必要とする他のファイル、画像、およびリソースと共に「バンドル」（１２１）にパッケージ化されている。バンドル（１２１）は、Ｊａｖａアーカイブすなわち「ＪＡＲ」ファイルであり、１つ以上のサービス実施（１２４）、アクティベータクラス（１２７）、およびマニフェストファイル（１２５）を含む。アクティベータクラス（１２７）は、バンドルを開始および停止するためにサービスフレームワーク（１２６）が用いるＪａｖａクラスである。マニフェストファイル（１２５）は、バンドル（１２１）の内容を記述する標準テキストファイルである。
【００６９】
図２の例示的なアーキテクチャは、ＤＭＬ（１０８）を含む。本発明の多くの実施形態では、ＤＭＬは、デバイスの管理方法を実行するＯＳＧｉサービスである。図２のＤＭＬ（１０８）は、バンドル（１２１）内でパッケージ化され、サービスフレームワーク（１２６）上にインストールされる。
【００７０】
また、ＯＳＧｉのサービスフレームワーク（１２６）は、サービスレジストリ（１２８）を含む。サービスレジストリ（１２８）は、サービス登録（１２９）を含み、これは、フレームワーク（１２６）上にインストールされサービスレジストリ（１２８）に登録された各バンドル（１２１）ごとに、サービスの名前およびサービスを実施するクラスのインスタンスを含む。バンドル（１２１）は、このバンドル（１２１）に含まれておらずフレームワークサービスレジストリ（１２８）上に登録されているサービスを要求することができる。サービスを見つけるために、バンドル（１２１）は、フレームワークのサービスレジストリ（１２８）上でクエリを実行する。
【００７１】
例示的なクラスおよびクラス協働
図３は、本発明によるデバイスの管理方法を実施する際に有用な例示的クラスを示すブロック図である。図３の例示的なクラスは、限定のためではなく、本発明の理解に役立てるために提示する。本発明によるデバイスの管理方法は、本明細書中で、Ｊａｖａに関連付けて一般的に論じるが、Ｊａｖａは、限定のためでなく説明のためにのみ用いる。実際、本発明によるデバイスの管理方法は、Ｃ＋＋、Smalltalk、Ｃ、Pascal、Basic、ＣＯＢＯＬ、Fortran等を含む、当業者に想起される多くのプログラミング言語で実施可能である。
【００７２】
図３のクラス図は、例示的なＤＭＬクラス（２０２）を含む。図３の例示的なＤＭＬクラス（２０２）のインスタンスは、本発明によるデバイスの実施に有用なステップを実行するメンバメソッドを提供する。図３の例示的なＤＭＬクラスは、Activator.start()メソッドによって示すので、ＤＭＬは、ＯＳＧＩフレームワークにおけるサービスとして開始することができる。このＤＭＬのために１つのみのメンバメソッドを示すが、ＤＭＬは、実際、特定の実施形態に必要なもっと多くのメンバメソッドを有することが多い。また、図３のＤＭＬクラスは、多くの場合ＤＭＬの構築者によって生成される、サービスクラスに対する参照を格納するためのメンバデータ要素を含む。この例では、ＤＭＬは、計量サービス（５５２）、計量範囲サービス（５５８）、通信サービス（５５４）、アクションサービス（５６０）、デバイスサービス（５５６）、計量ベクトルサービス（５５９）、計量空間サービス（５６１）、および動的アクションリストサービス（５６３）に対する参照のための記憶フィールドを提供する。
【００７３】
図３の計量サービスクラス（２０４）が提供するメンバメソッドは、ＤＭＬからユーザ計量を受信し、ＤＭＬからのユーザ計量の受信に応答して、計量クラスのインスタンスを生成する。図３の計量サービスクラス（２０４）は、createMetric(userID, MetricID, Metric Value)メンバメソッド（５６２）を含む。CreateMetric()メンバメソッドは、いくつかの実施形態では、計量ＩＤによってパラメータで表されるファクトリメソッド（factory method）であり、その計量ＩＤに応じた計量オブジェクトを生成して戻す。ＤＭＬからユーザ計量を取得したことに応答して、図３の計量サービスクラス（２０４）の例示的なインスタンスは、計量クラスのインスタンスを生成し、新しい計量オブジェクトに対する参照をＤＭＬに戻す。
【００７４】
厳密に言えば、本発明の限定において、ファクトリメソッドによる計量オブジェクトの生成をＤＭＬに要求するものはない。ＤＭＬは、例えば、以下の疑似コードセグメントにおいて例示するように進行することができる。
【数１】
2006039750.tif 000003
【００７５】
この例では、計量オブジェクトを生成し、アクセス機構メソッドを用いてそのメンバデータをロードする。この手法は、各計量ごとに全く同じ計量オブジェクトクラスを提供するが、計量によって異なる具体的クラス構造を利用することが有利な状況がある。例えば、心拍数および血圧の計量の場合、双方の計量値を整数として符号化することができ、この場合、例えば、ＧＰＳ送受信器からの地表面上の極座標用の計量値を、例えばそれ自身の位置クラスも有する、より複雑なデータ構造に符号化すると有利な場合がある。ファクトリメソッドを用いると、２つ以上の計量クラスの使用が容易になる。計量オブジェクトを生成するためにファクトリメソッドを用いたＤＭＬは、以下の例示的な疑似コードセグメントに示すように進行することができる。
【数２】
2006039750.tif 000004
【００７６】
この例は、ファクトリメソッドcreateMetric()を利用して、新しい計量オブジェクト内にパラメータ値をセットする。計量サービスおよび計量オブジェクトのためのファクトリメソッドは、以下の疑似コードセグメントに示すように実施することができる。
【数３】
2006039750.tif 000005
【００７７】
この例におけるMetricServiceは、ファクトリメソッドを含む、いわゆるパラメータ化ファクトリ設計パターンを実施する。この例では、ファクトリメソッドは、「createMetricObject()」という名前のメンバメソッドである。createMetricObject()は、３つのパラメータ、すなわちユーザＩＤ、計量ＩＤ、および計量値を受け取る。createMetricObject()は、計量ＩＤに応じてスイッチステートメント（switch statement）を実施して、特定の具体的な計量クラスを選択しインスタンス化する。この例における具体的な計量クラスは、HeartRatemetric、BloodPressureMetric、およびGPSMetricであり、それらの各々は、Ｍｅｔｒｉｃベースクラスを拡張する。createMetricObject()は、呼び出し側のＤＭＬに、新しい計量オブジェクトに対する参照を戻す。ＤＭＬからの呼び出しは以下の通りであるが、
Metric aMetric=MetricService.createMetricObject(userID,metricID, metricValue)
これは多形であり、ベースクラスＭｅｔｒｉｃに対する参照を利用するので、呼び出し側のＤＭＬは、どの計量オブジェクトのクラスが実際にインスタンス化されて戻されるのかを知らないし、気にもしない。以下は、Ｍｅｔｒｉｃベースクラスを拡張する地表面上のユーザの位置を表す具体的な計量クラスを規定するための、Ｍｅｔｒｉｃベースクラスの拡張例である。
【数４】
2006039750.tif 000006
【００７８】
この例の具体的なクラスGPSMetricは、緯度および経度のための記憶領域を提供する。GPSMetricは、構築者にGPSMetric()を提供し、これは、ｕｓｅｒＩＤおよびｍｅｔｒｉｃＩＤを設定するために整数の引数を取るが、そのmetricValue引数がGPSLocationオブジェクトに対する参照であると予想し、更にこのオブジェクトが、緯度および経度のためのメンバデータの記憶領域を提供する。
【００７９】
図３のクラス図は、例示的な計量クラス（２０６）を含む。図３の例示的な計量クラス（２０６）は、ユーザ計量を表す。ユーザ計量は、ユーザ状況の指示を記述するデータを有する。ユーザの状況の指示は、ユーザ状況の定量化可能な特徴であり、この特徴を測定する量である。ユーザ状況の定量化可能な特徴の例は、体温、心拍数、血圧、位置、皮膚電気応答、および当業者に想起されるいずれかの他のユーザ状況の特徴を含む。
【００８０】
図３の例示的な計量クラス（２０６）は、ユーザＩＤフィールド（４８６）、計量ＩＤフィールド（４８８）、値フィールド（４９９）を含む。ユーザＩＤフィールド（４８６）は、ユーザを識別する。計量ＩＤ（４８８）は、計量クラスのインスタンスが表すユーザ計量を識別する。すなわち、ユーザ計量の種類である。値フィールド（４９０）は、ユーザ計量の値を含む。
【００８１】
また、図３の例示的な計量クラスは、計量アクションリスト（６２２）のためのデータ記憶領域を含む。計量アクションリストは、アクションを識別するアクションＩＤを含むデータ構造であり、このアクションＩＤは、実行されると、計量が表すユーザ状況の同じ特徴に影響を与えるようにデバイスを管理する。例えば、体温の計量は、実行されると天井のファンをオンするアクションＩＤを含む関連計量アクションリストを有することができる。デバイスの管理方法の多くの例では、計量アクションリストにおけるアクションＩＤを用いて、動的アクションリストに含むためのアクションＩＤを識別する。
【００８２】
例示的な計量クラス（２０６）は、様々な実施形態において汎用クラスとして使用可能なクラスの１例であり、そのインスタンスを用いて、上述のような同一または類似のメンバデータ要素を有する２つ以上の種類の計量を格納または表現することができる。代替的に、他の実施形態では、この例の計量クラス（２０６）のようなクラスを、ベースクラスとして用いて、具体的な導出されたクラスによって拡張することができ、その各々が、上述した広く異なるメンバデータ種類を有することができる。
【００８３】
図３のクラス図は、例示的な関連計量サービスクラス（６８４）を含む。例示的な関連計量サービスクラスは、メンバメソッドすなわちcreateRelationalMetric()（６８６）を含む。多くの実施形態において、createRelationalMetric()（６８６）は、計量キャッシュ内のユーザ計量間の関係を決定し、計量キャッシュ内のユーザ計量間の決定した関係を表す関連計量をインスタンス化する。他の実施形態では、createRelationalMetric()は、計量キャッシュ内のユーザ計量を、既定の計量パターンを形成する既定の計量集合と比較する。計量キャッシュ内のユーザ計量が、既定の計量パターンを形成する既定の計量と一致する場合、createRelationalMetricは、既定の計量パターンが定める関係を表す予め生成された関連計量を検索する。
【００８４】
図３のクラス関係図は、関連計量を含む。関連計量は、計量キャッシュ内のユーザ計量に応じて生成されるか、またはユーザ計量がキャッシュに到着することを予想して生成される計量である。すなわち、関連計量は、場合によっては、計量キャッシュ内のユーザ計量間の関係を決定した結果として生成される。他の場合、関連計量は、所定の計量の所定パターンに応じて生成される計量である。かかる所定の関連計量は、多くの場合、計量キャッシュ内のユーザ計量に応じて、関連データベースから選択される。
【００８５】
図３の例示的な関連計量は、ユーザを識別するｕｓｅｒＩＤフィールドを含む。図３の関連計量は、計量ＩＤフィールドを含む。また、関連計量は、値フィールド（４９０）も含む。多くの場合、値フィールドは、典型的に、関連計量が表す特定の関係の大きさを表す。いくつかの例では、関係レコードは、関連計量の異なる特徴を表す２つ以上の値フィールドを有することができる。例えば、「移動」の関連計量は、方向を示す値フィールド、および、速度を示す別の値フィールドを有することができる。
【００８６】
図３のクラス図は、計量ベクトルサービス（２０７）を含む。図３の計量ベクトルサービスクラス（２０７）は、メンバメソッドを提供し、これは、計量サービスからのユーザ計量および関連計量サービスからの関連計量の受信に応答して、計量ベクトルクラスのインスタンスを生成する。多くの例示的な実施形態では、createMetric vectorObject()メンバメソッド（５６５）は、ユーザＩＤ、ユーザ計量の計量ＩＤおよび関連計量に応じて、計量ベクトルリストから、ユーザ計量ベクトルのための計量ベクトルＩＤを識別する。計量ベクトルサービスの計量ベクトルリストに計量ベクトルが存在しない場合、計量ベクトルサービスは、１つの計量ベクトルをインスタンス化し、その計量ベクトルＩＤを、関連するユーザＩＤおよび計量ＩＤによって示して、計量ベクトルテーブルに格納する。計量ベクトルオブジェクトの生成は、以下の疑似コードセグメントに示すように実施可能である。
【数５】
2006039750.tif 000007
【００８７】
上述の疑似コードの例では、計量ベクトルサービスが、計量ベクトルサービスの計量ベクトルテーブル内に計量ベクトルが識別されていないｕｓｅｒＩＤを有する計量または関連計量を受信すると、計量ベクトルサービスは、ユーザのために新しい計量ベクトルＩＤを有する新しい計量ベクトルを生成し、その計量ベクトルを計量ベクトルリストに追加する。
【００８８】
図３のクラス図は、計量ベクトルクラス（６０６）を含む。計量ベクトルクラスのオブジェクトは、ユーザ状況の複雑な指示を表す。ユーザ計量ベクトルは、通常、ユーザ計量の集合を含み、その各々は、ユーザの状況の単一の定量化可能な特徴およびその特徴を測定する量、ならびに、計量キャッシュ内のユーザ計量からまたはそれを予想して生成した関連計量を表す。従って、複数の異なるユーザ計量から成るユーザ計量ベクトルは、ユーザ状況の多数の定量化可能な特徴およびその特徴を測定する多数の量を有するユーザ状況の複雑な指示を表す。計量ベクトルクラス（６０６）は、ユーザを識別するユーザＩＤ（４８６）を格納するためのデータ要素、および、複数の異なる計量オブジェクトに対する参照を格納するための計量リスト（６５２）を含む。
【００８９】
また、図３の例示的な計量ベクトル（６０６）は、動的アクションリスト（６２６）のためのデータ記憶領域を含む。動的アクションリストは、アクションＩＤのリストであり、ユーザ計量空間の対応する計量範囲の外にあるユーザ計量ベクトルの特定の計量に関連付けた計量アクションリストに応じて生成される。すなわち、対応する計量範囲の外にある計量ベクトルの各計量は、関連する計量アクションリストを有する。動的アクションリストは、ユーザ計量空間の対応する計量範囲の外にあるユーザ計量ベクトルの特定の計量に関連する計量アクションリストに応じて識別されるアクションＩＤを含む。動的アクションリストは、ユーザの現在の状況に合わせたアクションＩＤのリストを提供すると有利である。
【００９０】
また、例示的な計量ベクトルクラスのオブジェクトは、通常、計量ベクトルがユーザ計量空間の外にあるか否かを判定するメンバメソッドを含む。この例示的な計量ベクトルクラスは、様々な実施形態で汎用クラスとして使用可能なクラスの１例であり、そのインスタンスを用いて、同一または同様のメンバデータ要素を有する２つ以上の種類のベクトルを格納または表すことができる。代替的に、他の実施形態では、この例の計量ベクトルクラス等のクラスをベースクラスとして用いて、各々が異なるメンバデータ種類を有し得る具体的な導出クラスによって拡張することができる。
【００９１】
図３のクラス図は、計量範囲サービスクラス（２０８）を含む。計量範囲サービスクラス（２０８）は、計量範囲クラスのインスタンスをインスタンス化するメンバメソッドを提供する。図３の計量範囲サービスクラス（２０８）は、createRangeObject（UserID, MetricID）メンバメソッド（５７２）を含む。CreateRangeObject()メンバメソッドは、ｕｓｅｒＩＤおよびｍｅｔｒｉｃ  ＩＤに応じて計量範囲オブジェクトを生成するｕｓｅｒＩＤおよびｍｅｔｒｉｃ  ＩＤによってパラメータで表されるファクトリ方法である。CreateRangeObject()ファクトリメソッドは、計量ベクトルに、計量範囲オブジェクトに対する参照を戻す。CreateRangeObject()は、createMetricObject()ファクトリメソッドの説明において提供した例示的な疑似コードによって概説した同じ設計パターンを用いて実施可能なパラメータ化ファクトリメソッドである。
【００９２】
図３のクラス図は、例示的な計量範囲クラス（２１０）を含む。例示的な計量範囲クラスのインスタンスは、計量または関連計量についてユーザのために既定された計量範囲を表す。計量範囲オブジェクトにおける最大値および最小値を、計量値と比較して、計量オブジェクトの計量値が既定された計量範囲の外にあるか否かを判定する。図３の例示的な計量範囲クラス（２１０）は、計量範囲を識別する範囲ＩＤフィールド（４６３）およびユーザ計量を識別する計量ＩＤフィールド（４６２）を含む。図３の例示的な計量範囲クラス（２１０）は、ユーザを識別するユーザＩＤフィールド（４６４）を含む。また、計量範囲クラスは、計量範囲を規定する最大値および最小値を含むＭａｘフィールド（４６８）およびＭｉｎフィールド（４７０）を含む。
【００９３】
図３の例示的な計量範囲クラス（２１０）は、いわゆるデータオブジェクト、すなわち、クラスのメンバメソッドによってほとんどまたは全く処理が行われていないデータのコンテナ（container）としてのみ機能するクラスの１例である。この例では、計量範囲クラスのオブジェクトは、主に、計量範囲の最小および最大値を他のオブジェクト間で転送するために用いられる。図３の計量範囲クラスは、デフォルトコンストラクタ（constructor）（図示せず）を含むが、厳密に言えば、他のメンバメソッドは必要としない。計量範囲クラスに、他のメンバメソッドが与えられていなければ、協働オブジェクトは、例えば「someMetricRange.max」または「someMetricRange.min」等の符号化によって直接そのメンバデータ要素にアクセスすることができるであろう。しかしながら、この場合の特定の例（２１０）は、その範囲の最小および最大値のためのアクセス機構メソッド（４７１、４７３）を含むものとして例示し、本発明によって必要としない実施であるが、オブジェクト指向パラダイムにおけるプログラミングと一致する。
【００９４】
図３のクラス図は、計量空間サービスクラス（２０９）を含む。計量空間サービスクラス（２０９）は、メンバメソッドcreateMetricSpace()を含み、これは、計量空間リストまたは他のデータ構造を検索して、ユーザのための計量空間を識別する。かかる計量空間が存在しない場合、createMetricSpace()は１つの計量空間をインスタンス化し、計量空間リストに計量空間ＩＤを格納する。計量空間オブジェクトの生成は、以下の例示的な疑似コードによって実施可能である。
【数６】
2006039750.tif 000008
【００９５】
上述の疑似コードの例では、計量空間サービスは、計量空間リストから計量空間を検索する。リストが、ｕｓｅｒＩＤおよび計量ベクトルＩＤのための計量空間を含まない場合、MetricSpaceService.createMetricSpace(userID, MetricVectorIC)が、新しい計量空間ＩＤを有する新しい計量空間を生成する。
【００９６】
図３のクラス図は、計量空間クラスを含む。ユーザ計量空間は、異なるユーザ計量および関連計量のための複数のユーザ計量範囲から成る。例示的な計量空間は、ユーザを識別するユーザ計量（４０５）および計量空間を識別する空間ＩＤ（９０８）を格納するためのデータ要素を含む。また、図３の計量空間（６１０）は、ユーザ計量および関連計量の異なる計量範囲に対する参照リストのためのデータ記憶領域（６５５）を含む。計量空間の異なる計量範囲は、本質的に、ユーザ計量ベクトルにおける計量に対応する。すなわち、典型的な実施形態では、ユーザ計量ベクトルは、異なる現在のユーザ計量および関連計量の集合を含み、ユーザ計量空間は、ユーザのための対応する計量範囲の集合を含む。
【００９７】
図３のクラス図は、アクションサービスクラス（２１７）を含む。アクションサービスクラスは、メンバメソッドを含み、これらは、ユーザ計量または関連計量のための計量アクションリストをインスタンス化し、アクションオブジェクトをインスタンス化し、アクションリストのアクションオブジェクトに対する参照を格納し、呼び出し側の計量に、アクションリストに対する参照を戻す。それらの全ては、以下の例示的な疑似コードによって示すように実施可能である。
【数７】
2006039750.tif 000009
【００９８】
ActionServiceクラスにおけるcreateActionList()メソッドは、「ActionList anActionList=newActionList()」によってユーザ計量のための計量アクションリストをインスタンス化する。次いで、createActionList()は、データベースのアクションレコードテーブルから、その呼び出しパラメータに一致するユーザＩＤおよび計量ＩＤを有するレコードを検索する。テーブル内の一致する各レコードごとに、createActionList()は、そのスイッチステートメントによってアクションオブジェクトをインスタンス化する。スイッチステートメントは、アクションレコードテーブルから検索した各アクションＩＤごとに特定の具体的な導出アクションクラスを選択する。createActionList()は、「anActionList.add()」によってアクションリストに各アクションオブジェクトに対する参照を格納する。createActionList()は、「return andActionList」によってアクションリストに対する参照を戻す。
【００９９】
図３のクラス図は、例示的なアクションクラス（２１６）を含む。アクションクラスのインスタンスは、実行されると結果としてデバイスの管理を行うアクションを表す。図３の例示的なアクションクラスは、アクションＩＤフィールド（４５０）を含む。例示的なアクションクラス（２１６）のdoAction()メソッド（４５６）は、例えば、DeviceService.createDeviceList()に対する呼び出しから、デバイスリスト（４５８）を取得するようプログラムされる。また、Action.doAction()（４５６）は、通常、そのデバイスリストの各デバイスにおいてインタフェース方法を呼び出してデバイス制御アクションを実行するようプログラムされる。
【０１００】
図３のクラス図は、動的アクションリストサービスを含む。図３の動的アクションリストサービスは、メンバメソッドcreateDynamicList()（５６９）を含む。多くの実施形態において、createDynamicListは、ユーザ計量ベクトル内のメンバメソッドによって呼び出され、それらの対応する計量範囲の外にある特定の計量に関連した計量アクションリストから検索したアクションＩＤによってパラメータで表す。createDynamicListは、計量アクションリストから検索した計量ＩＤに応じて識別したアクションＩＤを含む動的アクションリストを生成し、動的アクションリストに対する参照を呼び出し側に戻す。
【０１０１】
図３のクラス図は、デバイスサービスクラス（２１８）を含む。デバイスサービスクラスは、createDeviceList(actionID)という名前のファクトリメソッドを提供し、これは、デバイスのリストを生成し、リストに対する参照を戻す。個の例では、createDeviceList()は、上述のActionService.createActionList()と同様に動作し、デバイスリストをインスタンス化し、デバイステーブルで、一致するアクションＩＤエントリを有するデバイスレコードからデバイスＩＤを検索し、各々の具体的な導出デバイスクラスのデバイスオブジェクトをインスタンス化し、デバイスリストに、新しい各デバイスオブジェクトに対する参照を追加し、呼び出し側のアクションオブジェクトに、デバイスリストに対する参照を戻す。しかしながら、この例では、ファクトリメソッドcreateDeviceList()は、そのサポートするデータテーブルからデバイスＩＤを検索するだけでなく、以下の例示的な疑似コードに示すように、インスタンス化した各デバイスオブジェクトによって制御される物理的デバイスのネットワークアドレスまたは通信位置を検索する。
【数８】
2006039750.tif 000010
【０１０２】
DeviceServiceクラスのcreateDeviceList()メソッドは、「DeviceList aDeviceList =newDeviceList()」によって計量のためのデバイスリストをインスタンス化する。次いで、createDeviceList()は、データベース内のデバイスレコードテーブルから、その呼び出しパラメータに一致するアクションＩＤを有するレコードを検索する。テーブル内の一致する各レコードごとに、createDeviceList()は、そのスイッチステートメントによってデバイスオブジェクトをインスタンス化し、３つのパラメータすなわちCommsService、deviceAddress、およびdeviceIDを渡す。CommsServiceは、通信サービスに対する参照であり、ここから、デバイスオブジェクトは、デバイスオブジェクトが制御する物理的デバイスとの通信に用いる通信オブジェクトに対する参照を得ることができる。deviceAddressは、ネットワークアドレスであり、特定のデバイスオブジェクトが制御する物理的デバイスの上述のようなデバイステーブルから得られる。スイッチステートメントは、デバイステーブルから検索した各デバイスＩＤごとに特定の具体的な導出デバイスクラスを選択する。createDeviceList()は、「aDeviceList.add()」によってデバイスリストの各デバイスオブジェクトに対する参照を格納する。createDeviceList()は、「return aDeviceList」によって、デバイスリストに対する参照を戻す。
【０１０３】
図３のクラス図は、例示的なデバイスクラス（２１４）を含む。図３の例示的なデバイスクラス（２１４）は、アクションの実行によって管理される物理的デバイスを一意に識別するｄｅｖｉｃｅＩＤフィールド（４７２）を含む。図３の例示的なデバイスクラス（２１４）は、データ通信ネットワーク上の物理的デバイスの位置を識別するアドレスフィールド（４８０）を含む。図３の例示的なデバイスクラス（２１４）は、デバイスクラスのインスタンスと物理的デバイスとの間の通信を行うためにデータ通信プロトコルを実施する通信クラスのインスタンスに対する参照のための通信フィールド（４７８）を提供する。
【０１０４】
図３のデバイスクラスは、デバイスの現在の属性値を含む属性フィールド（４８１）を含む。デバイスの現在の属性の例は、デバイスが「オン」または「オフ」であることの指示である。現在の属性の他の例は、デバイスの特定の設定を示す値を含む。また、図３のデバイスクラスは、物理的デバイスの属性を取得および設定するためのアクセス機構方法（４７４、４７６）を含む。図３の例示的なデバイスクラスは、１つのみの属性フィールドと、その属性を取得および設定するためのアクセス機構方法とを含むが、本発明の方法を実施する際に有用な多くのデバイスクラスは、２つ以上の属性をサポートすることができる。また、かかるクラスは、デバイスクラスがサポートする各属性の属性ＩＤフィールドと、その属性を取得および設定するためのアクセッサメソッドとを含むことができる。
【０１０５】
図３の例示的なクラス図は、通信サービスクラス（２１９）を含む。通信サービスクラス（２１９）は、デバイスクラスのインスタンスと物理的デバイスとの間の通信を実行するためのデータ通信プロトコルを実施する通信オブジェクトをインスタンス化するcreateCommsObject(deviceID, networkAddress)（５７４）という名前のファクトリメソッドを提供する。createCommsObject()メソッド（５７４）は、その呼び出しパラメータに一致するデバイスＩＤを有する通信クラステーブル内の通信クラスレコードで通信クラスＩＤを検索する。多くの実施形態では、createCommsObject()メソッド（５７４）は、上述のようにスイッチステートメントによって識別された特定の具体的な導出通信クラスをインスタンス化し、コンストラクタに、そのパラメータリストからnetworkAddressを渡すので、新しい通信オブジェクトは、その新しいオブジェクトがデータ通信を行うネットワーク上のアドレスを知っている。具体的な各導出通信クラスは、特定のデータ通信プロトコル、Bluetooth、８０２．１１ｂ、LonWorks、Ｘ−１０等の特定のデータ通信プロトコルに従ってデータ通信を行うように設計されている。
【０１０６】
図３のクラス図は、例示的な通信ベースクラス（２１５）を含む。典型的な実施形態では、少なくとも１つの具体的な通信クラスを、特定のＤＭＬがサポートする各データ通信プロトコルごとに、ベースクラスから導出する。具体的な各通信クラスは、通信デバイスオブジェクトおよび物理的デバイスのための特定のデータ通信プロトコルを実施する。具体的な各通信クラスは、インタフェースメソッド（４８２、４８４）を無効にすることによって特定のデータ通信プロトコルを実施して、プロトコルに従った実際のデータ通信を実施する。
【０１０７】
通信クラスによって、デバイスクラス（２１４）は、様々な物理的デバイスとの通信に必要な特定のプロトコルに関して独立して動作することができる。例えば、ユーザの家のある照明は、LonWorksプロトコルを用いて通信を行うことができるが、ユーザの家の別の照明は、Ｘ−１０プロトコルを用いて通信を行うことができる。双方の照明は、一方がLonWorksを実施し他方がＸ−１０を実施する異なる通信クラスの通信オブジェクトを用いて、同じデバイスクラスのデバイスオブジェクトによって制御することができる。双方のデバイスオブジェクトは、同じ通信クラスインタフェースメソッド、send()（４８２）およびreceive()（４８４）に対する呼び出しによって照明を制御し、実際にそれらの通信オブジェクトが異なるプロトコルを用いることを知らないし、気にもしない。
【０１０８】
図４は、図３の例示的なクラス間の例示的な関係を示すクラス関係図である。図４のクラス関係図では、実線の矢印はインスタンス化を表す。実線の矢印は、インスタンス化しているクラスからインスタンス化されているクラスを指し示す。図４のクラス関係図では、点線の矢印は参照を表す。矢印は、参照されるクラスから、この参照されるクラスに対する参照をオブジェクトが有するクラスを指し示す。すなわち、点線の矢印によって、複合のオブジェクト指向関係すなわちクラス間の「ｈａｓ−ａ」関係が示される。
【０１０９】
図４の例示的なクラス関係図は、ＤＭＬクラス（２０２）を含む。ＤＭＬクラス（２０２）のＤＭＬオブジェクトは、計量サービスクラス（２０４）のオブジェクト、計量ベクトルサービスクラス（２０７）のオブジェクト、および計量空間サービスクラス（２０９）のオブジェクトをインスタンス化する。また、ＤＭＬオブジェクトは、計量範囲サービスクラス（２０８）のオブジェクト、アクションサービスクラス（２１７）のオブジェクト、および動的アクションリストサービスクラス（２１１）のオブジェクトをインスタンス化する。また、ＤＭＬオブジェクトは、デバイスサービスクラス（２１８）のオブジェクトおよび通信サービスクラス（２１９）のオブジェクトをインスタンス化する。ＤＭＬが計量センサから計量（２００）を受信すると、ＤＭＬは以下のような呼び出しを用いる。
【数９】
2006039750.tif 000011
これによって、計量サービス（２０４）は、計量クラス（２０６）のオブジェクトをインスタンス化する。計量サービスは、計量オブジェクト（２０６）に対する参照を、計量ベクトルサービスオブジェクト（２０７）に渡す。計量オブジェクトは、アクションサービスクラス（２１７）のオブジェクトに対する参照および計量アクションリスト（６２２）を含む。
【０１１０】
図４のクラス関係図に示すように、計量ベクトルサービス（２０７）は、計量ベクトルクラス（６０６）のオブジェクトをインスタンス化する。多くの実施形態において、計量ベクトルサービスクラスは、計量オブジェクトに対する参照を受信し、createMetricVectorObject()等のパラメータで表したファクトリメソッドを用いて、計量ベクトルオブジェクトをインスタンス化する。図４のクラス関係図に示すように、計量ベクトルクラス（６０６）のオブジェクトは、計量クラス（２０６）のオブジェクトに対する参照、計量空間サービスクラス（２０９）のオブジェクト、計量空間クラス（６１０）のオブジェクト、動的アクションリストサービスクラス（２１１）のオブジェクトおよび動的アクションリスト（２１２６２６）を含む。
【０１１１】
図４のクラス関係図に示すように、計量空間サービス（２０９）は、計量空間クラス（６１０）のオブジェクトをインスタンス化する。多くの例示的な実施形態では、計量空間サービスは、createMetricSpace()等のパラメータで表したファクトリメソッドを用いて、計量空間オブジェクトをインスタンス化する。計量空間サービスは、計量ベクトルオブジェクトに、計量空間オブジェクト（６１０）に対する参照を渡す。計量空間オブジェクト（６１０）は、計量範囲クラス（２１０）のオブジェクトに対する参照を含む。図４のクラス関係図に示すように、計量範囲サービス（２０８）は、計量範囲クラス（２１０）のオブジェクトをインスタンス化する。本発明の多くの例示的な実施形態では、計量範囲サービス（２０８）は、createRangeObject()等のパラメータで表したファクトリメソッドを用いて、計量範囲（２１０）をインスタンス化する。計量範囲サービス（２０８）は、計量範囲（２１０）に対する参照を、計量空間サービス（２０９）に渡す。
【０１１２】
図４のクラス関係図に示すように、アクションサービス（２１７）は、計量アクションリスト（６２２）およびアクションクラス（２１６）のオブジェクトをインスタンス化する。計量アクションリスト（６２２）は、インスタンス化したアクション（２１６）の各々に対する参照によってインスタンス化される。各アクション（２１６）は、デバイスサービス（２１８）に対する参照によってインスタンス化される。本発明による方法の典型的な例では、アクションサービス（２１７）は、createActionList()等のパラメータによって表したファクトリメソッドを用いて、計量アクションリスト（６２２）をインスタンス化し、アクション（２１６）をインスタンス化する。アクションサービス（２１７）は、計量アクションリスト（６２２）に対する参照を、計量（２０６）に渡す。
【０１１３】
図４に示すように、動的アクションリストサービス（２１１）は、動的アクションリスト（６２６）をインスタンス化し、動的アクションリスト（６２６）に対する参照を、計量ベクトル（６０６）の呼び出しメソッドに渡す。本発明による方法の典型的な例では、動的アクションリストサービス（２１１）は、createDynamicActionList()等のメソッドを用いて、動的アクションリストをインスタンス化する。多くの実施形態では、createDynamicActionList()は、それらの対応する計量範囲の外にあるユーザ計量に関連した計量アクションリストのアクションＩＤによってパラメータで表される。動的アクションリスト（６２６）は、アクションクラス（２１６）のオブジェクトに対する参照を有する。
【０１１４】
図４の例では、デバイスサービス（２１８）は、デバイスリストクラス（２２２）のデバイスリストをインスタンス化し、デバイスクラス（２１４）のデバイスオブジェクトをインスタンス化する。デバイスリスト（２２２）は、デバイスオブジェクト（２１４）に対する参照によってインスタンス化される。デバイスオブジェクト（２１４）は、通信サービス（２１９）に対する参照によってインスタンス化される。本発明による方法の典型的な例では、デバイスサービス（２１８）は、createDeviceList()等のパラメータで表したファクトリメソッドを用いて、デバイスリスト（２２２）をインスタンス化し、デバイスオブジェクト（２１６）をインスタンス化する。デバイスサービス（２１８）は、デバイスリスト（２２２）に対する参照を、アクション（２１６）に渡す。
【０１１５】
図４の例では、通信サービス（２１９）は、通信クラス（２１５）の通信オブジェクトをインスタンス化する。本発明による方法の典型的な例では、通信サービス（２１９）は、createCommsObject()等のパラメータで表したファクトリメソッドを用いて、通信オブジェクト（２１５）をインスタンス化する。通信サービス（２１９）は、通信オブジェクト（２１５）に対する参照を、デバイスオブジェクト（２１４）に渡す。
【０１１６】
図５は、図３のクラスのいくつかの間の例示的な関係を示すクラス関係図である。図５の例では、ＤＭＬクラス（２０２）のオブジェクトは、関連計量サービスクラス（６８４）のオブジェクトをインスタンス化する。関連計量サービスクラスは、計量キャッシュで利用可能なユーザ計量（２０６）に対する参照を有する。
【０１１７】
関連計量サービスクラス（６８４）は、計量キャッシュ内のユーザ計量に応じて関連計量クラス（６６４）のオブジェクトをインスタンス化するか、または、計量キャッシュ内のユーザ計量に応じて予め生成した関連計量を選択する。関連計量は、計量アクションリスト（６２２）に対する参照を有する。計量ベクトルは、関連計量サービスから、関連計量（６６４）に対する参照を受け取る。
【０１１８】
ユーザ計量に応じたデバイス管理
図６は、例示的なデバイス管理方法を示すデータフロー図である。図６の方法は、ユーザ計量（２０６）の受け取り（３０２）を含む。上述のように、「ユーザ計量」は、ユーザ状況の指示を記述するデータから成る。「ユーザ状況の指示」は、ユーザ状況の定量化可能な特徴であり、その特徴を測定する量である。ユーザの状況の定量化可能な特徴の例は、体温、心拍数、血圧、位置、皮膚電気反応、および当業者に想起される他の特徴を含む。
【０１１９】
本発明の典型的な実施形態において、ユーザ計量は、図６の例示的なユーザ計量（２０６）等、ユーザ計量データ構造またはレコード（２０６）として実施される。図６のユーザ計量は、計量によって状況の指示が表されるユーザを識別するｕｓｅｒＩＤフィールド（４０５）を含む。また、図６のユーザ計量（２０６）は、例えば、血圧、心拍数、位置、皮膚電気反応等の計量が表すユーザ状況の特徴を識別する計量ＩＤフィールド（４０７）を含む。また、ユーザ計量（２０４）は、計量が表すユーザ状況の特徴の値を含む値フィールド（４０９）を含む。計量の値の例は、華氏１００度の体温である。
【０１２０】
図６の方法の多くの実施形態では、ユーザの計量の受け取り（３０２）は、計量センサ（４０６）からユーザ計量を受け取ることを含む。図６の方法のいくつかの例では、計量センサ（４０６）は、ユーザ状況の指示を読み取り、ユーザ状況の指示に応じてユーザ計量を生成し、ユーザ計量をＤＭＬに送信する。多くの実施形態では、計量センサは、例えば、Bluetooth、８０２．１１、ＨＴＴＰ、ＷＡＰ等のプロトコル、または当業者に想起される他のいずれかのプロトコルを用いて、図６の計量（２０６）等の既定のデータ構造で、ユーザ計量をＤＭＬに送信する。
【０１２１】
図６の方法では、ユーザ計量の受け取り（３０２）は、ユーザ計量を計量キャッシュメモリ（３０５）内に受け取ることを含む。すなわち、ユーザ計量は、ＤＭＬによって受信され、次いでキャッシュに格納される。図６の方法の多くの実施形態では、計量キャッシュメモリ（３０５）は、ＤＭＬに利用可能なキャッシュメモリであり、本発明によるデバイス管理のステップの実行を容易にする。
【０１２２】
図６の方法は、ユーザ計量の値が規定の計量範囲の外である（３０９）か否かの判定（３０６）を含む。規定の計量範囲は、特定ユーザの所与の計量ＩＤについて所定範囲の値を含む。図６の方法の多くの実施形態では、既定の計量範囲は、ユーザのための典型的または通常の計量値範囲として設計される。既定の計量範囲の１例は、毎分６５から８５の休息時の心拍数を表す計量値範囲である。
【０１２３】
図６の方法の多くの例では、ユーザの既定計量範囲は、図６の計量範囲（２１０）等のデータ構造またはレコードとして実施される。図６の計量範囲は、ユーザ計量の種類を識別する計量ＩＤフィールド（４６２）を含む。図６の計量範囲は、計量範囲が計量値範囲を表すユーザを識別するユーザＩＤフィールド（４６４）を含む。図６の計量範囲は、例えば、計量範囲の最大計量値を表すＭａｘフィールド（４６８）および、計量範囲の最小計量値を表すＭｉｎフィールド（４７０）を含む。すなわち、典型的な実施形態では、計量値範囲を規定するのは、範囲の最大および最小の計量値である。
【０１２４】
多くの実施形態では、ユーザ計量（２０６）の値が既定計量範囲の外である（３０９）か否かの判定（３０６）は、ユーザ計量の計量値を、その計量の同じユーザの計量範囲の最大および最小値と比較することを含む。図６の方法の多くの例では、ユーザ計量が既定計量範囲の外であるという判定は、ユーザ計量（２０６）の計量値（４０９）が、計量範囲（２１０）の最大値（４６８）よりも大きいこと、または計量範囲（２１０）の最小値（４７０）よりも小さいことの判定を含む。例えば、「心拍数」として計量を識別する計量ＩＤのユーザ計量は、毎分１００回の心拍数という計量値を有する場合、毎分６５から８５回という休息時心拍数の例示的な計量範囲の外である。
【０１２５】
ユーザ計量の値が計量範囲外である場合、図６の方法は、ユーザ計量に応じるアクションの識別（３１０）を含む。アクションは、実行されると１つ以上のデバイスを制御する１つ以上のコンピュータプログラム、サブルーチン、またはメンバメソッドを含む。アクションは通常、オブジェクト指向クラスとして実施され、オブジェクトまたはオブジェクトに対する参照として操作される。実際、本明細書中では、文脈によって他の意味が示されない限り、「アクション」、「アクションオブジェクト」、および「アクションオブジェクトに対する参照」という語は、多かれ少なかれ同意語である。図６の方法の多くの実施形態では、アクションオブジェクトは、デバイスクラスのメンバメソッドを呼び出し、物理的デバイスの現在の属性に影響を与える。図６の方法の多くの実施形態では、アクションクラスまたはアクションオブジェクトは、ＯＳＧｉバンドルでサービスゲートウエイ上のＤＭＬに展開される。
【０１２６】
図６の方法では、アクションの識別（３１０）は、ユーザＩＤおよび計量ＩＤによって構成された計量アクションリスト（６２２）からアクションＩＤ（３１５）を受信すること（３６５）を含む。図６の方法では、計量アクションリストからのアクションＩＤの検索は、特定の計量ＩＤおよび特定のユーザの計量値がユーザの所定計量範囲の外である場合に実行されるアクションの識別子（「アクションＩＤ」）のリストからの検索を含む。アクションリストは、例えば、Ｊａｖａリストコンテナとして、ランダムアクセスメモリ内のテーブルとして、ハードドライブまたはＣＤ  ＲＯＭ上の記憶領域を有するＳＱＬデータベーステーブルとして、更に、当業者に想起される他の方法で、実施することができる。
【０１２７】
上述のように、アクション自体はソフトウエアから成るので、例えば、コンパイル時にＤＭＬにインポートされ、従ってＤＭＬ実行時に常に利用可能なＪａｖａパッケージにおいて具現化される具体的なアクションクラスとして、実施することができる。従って、アクション（３１２）の実行（３１４）は、かかる実施形態において、ＤＭＬのswitch()statementの使用によって実行されることが多い。かかるswitch()statementステートメントは、アクションＩＤに応じて動作し、例えば、以下の疑似コードセグメントによって示されるように実施することができる。
【数１０】
2006039750.tif 000012
【０１２８】
例示的なスイッチステートメントは、アクションＩＤに応じて実行する特定のデバイス制御オブジェクトを選択する。この例においてswitch()が管理するデバイス制御オブジェクトは、actionNumber1、actionNumber2等という名前の具外的なアクションクラスであり、各々は、「take_action()」という名前の実行可能メンバメソッドを有し、各アクションクラスが実施する実際のワークを実行する。
【０１２９】
また、アクション（３１２）の実行（３１４）は、かかる実施形態において、ＤＭＬにおけるハッシュテーブルの使用によって実行されることが多い。かかるハッシュテーブルは、以下の疑似コードの例に示すように、アクションＩＤによって入力されるアクションオブジェクトに対する参照を格納することができる。この例は、アクションサービスが、アクションＩＤをキーとして用いて、特定の計量ＩＤに関連付けた具体的なアクションクラスのオブジェクトに対する参照であるアクションのハッシュテーブルを生成することによって開始する。多くの実施形態では、かかるハッシュテーブルを作成し、それに特定の計量ＩＤに関連付けたアクションオブジェクトに対する参照を入れ、ハッシュテーブルに対する参照を呼び出し側計量オブジェクトに戻すのは、アクションサービスである。
【数１１】
2006039750.tif 000013
【０１３０】
特定のアクションの実行は、以下の疑似コードに従って実行することができる。
【数１２】
2006039750.tif 000014
【０１３１】
本明細書中の多くの実施形態は、リストと共に、多くの場合アクションのリストと共に記載し、これらは、例えば、アクションサービスから、リストに対する参照と共に戻される。多くの場合、リストは、ハッシュテーブルと同様に機能する。例えば特定のアクションの実行は、以下の疑似コードに従って実行することができる。
【数１３】
2006039750.tif 000015
【０１３２】
特定のアクションの実行は、以下の疑似コードに従って実行することができる。
【数１４】
2006039750.tif 000016
【０１３３】
上述の３つの例は、スイッチステートメント、ハッシュテーブル、およびリストオブジェクトを用いて、本発明の実施形態によるアクションの実行を説明する。これらの例におけるスイッチステートメント、ハッシュテーブル、およびリストオブジェクトの使用は、限定ではなく説明のためである。実際、当業者に想起されるように、本発明の実施形態に従ってアクションを実行する多くの方法があり、かかる方法は全て本発明の範囲内である。
【０１３４】
図７は、アクションを実行する例示的な方法を示すデータフロー図を示す。図７の方法では、アクションの実行は、アクションが管理する物理的デバイス（３１６）を表すデバイスクラス（２１４）の識別（３８０）を含む。典型的なデバイスクラスは、デバイスを管理するメンバメソッドを含む。デバイスを管理する典型的なメンバメソッドは、物理的デバイスのデバイス属性値を取得および設定するためのメンバメソッドを含む。例えば、多くの設定の光強度をサポートするランプの場合、デバイスクラスのメンバメソッドget()は、ランプから光強度の値を取得することができ、デバイスクラスのメンバメソッドset()は、ランプの光強度を設定する。
【０１３５】
図７の方法では、アクションの実行は、物理的デバイス（３１６）のための通信クラス（２１５）の識別（３８４）を含む。デバイスクラスのメンバメソッドが物理的デバイスに通信するためには、通信クラスは、物理的デバイスと通信するためのプロトコルを実施する。典型的な通信クラスは、通信クラスが実施するプロトコルに従ってデータ通信メッセージを構築、送信、および受信するメンバメソッドを含む。通信クラスのメンバメソッドは、物理的デバイスとの間でデータ通信メッセージを送信および受信する。通信クラスは、デバイス上で実施されるアクションから物理的デバイスと通信するために用いるプロトコルを分離すると有利であり、このため、例えばget()およびset()を備えるデバイスクラスインタフェースは、デバイスクラスを再プログラムする必要なく、また、物理的デバイスおよびプロトコルの各組み合わせごとに１つのデバイスクラスを提供する必要なく、データ通信プロトコルのいずれかを用いて物理的デバイスと通信可能であると有用である。
【０１３６】
更に詳しい説明のため、以下の簡単な使用の場合を考える。ユーザの計量センサが、毎分１００回のユーザの心拍数を読み、ユーザを識別するユーザＩＤ、「心拍数」として計量を識別する計量ＩＤ、および１００の計量値を有するユーザの計量を生成する。計量センサは、このユーザ計量を、サービスゲートウエイを介してＤＭＬに送信する。ＤＭＬはユーザ計量を受信し、このユーザ計量を、６５から８５回の範囲を有する休息時心拍数のユーザ計量範囲と比較する。ＤＭＬは、ユーザ計量が既定計量範囲の外であると判定する。ＤＭＬは、ユーザの心拍数計量値が、ユーザの心拍数の計量範囲外であるという判定に応答して、ユーザＩＤおよび計量ＩＤを用いて、リストから、実行する既定アクションのアクションＩＤを検索する。ＤＭＬは、例えば「someAction」のクラス名を有し、更に、switch()ステートメントにおいて上述したtake_action()方法等、ＤＭＬに既知のインタフェースメンバメソッドを有するアクションオブジェクトを識別するデバイス制御アクションＩＤを検索する。
【０１３７】
この例では、ＤＭＬは、someAction.take_action()を呼び出すことによって識別されたアクションを実行する。この例におけるtake_action()メソッドは、アクションによって属性が影響を受ける物理的デバイスを表すデバイスオブジェクトに対する参照のリストのためにデバイスサービスを呼び出すようにプログラムされている。デバイスサービスは、switch()ステートメントによってプログラムされて、アクションＩＤに応じてデバイスオブジェクトに対する参照のリストを生成し、デバイスリストを呼び出し側アクションオブジェクトに、または、アクションオブジェクトにおける呼び出し側take_action()メソッドに戻す。
【０１３８】
デバイスリストの生成において、デバイスサービスは、リストに入力された参照を有する各デバイスをインスタンス化するようプログラムされ、コンストラクタパラメータとして、通信サービスに対する参照を渡す。このようにインスタンス化された各デバイスは、通信サービスにおいてパラメータで表したファクトリメソッドを呼び出すようプログラムされたコンストラクタパラメータを有し、パラメータとして、呼び出し側デバイスオブジェクトの識別子を渡す。通信サービスは、対応する物理的デバイスと通信するため、そのデバイスオブジェクトに必要な通信プロトコルのための通信オブジェクトに対する参照をインスタンス化し、デバイスに戻す。
【０１３９】
本発明の実施形態において、典型的にアクションを実行するための主な制御論理は、アクションクラスの主インタフェースメソッドおよびそれからインスタンス化されたオブジェクトにある。この例では、take_action()メソッドは、メソッド呼び出しの制御シーケンスを実行して、このアクションクラスが最初に開発された物理的デバイス上の変更を実行するようプログラムされている。take_action()メソッドは、そのデバイスリストのデバイスオブジェクトにおけるアクセス機構メソッド（set()およびget()メソッド）に対する一連の呼び出しによってこの機能を実行する。
【０１４０】
図８は、ユーザ計量（２０６）が既定の計量範囲（２１０）外であることを判定する（３０６）例示的な方法を示すデータフロー図である。デバイス管理方法の多くの実施形態では、ユーザ計量（２０６）は、図８のユーザ計量レコード等、データ構造またはレコードとしてデータ内に表される。ユーザ計量（２０６）は、ユーザＩＤフィールド（４０５）、計量ＩＤフィールド（４０７）、および値フィールド（４０９）を含む。
【０１４１】
図８の例では、計量の既定の計量範囲は、図８の計量範囲（２１０）等の計量範囲としてデータに表される。例示的な計量範囲（２１０）は、特定の計量についての特定ユーザの最大範囲値（４６８）および最小範囲値（４７０）を示す。例示的な範囲についての特定のユーザおよび特定の計量は、ユーザＩＤフィールド（４６４）および計量ＩＤフィールド（４６２）にそれぞれ識別される。
【０１４２】
図８の方法では、ユーザ計量（２０６）の値が既定の計量範囲（２１０）の外である（３０９）という判定（３０６）は、ユーザ計量（２０６）が既定の計量範囲（２１０）の外である（３０９）程度（５０４）の測定（５０２）を含む。本発明の多くの実施形態では、ユーザ計量（２０６）が計量範囲（２１０）の外である（３０９）程度（５０４）の測定（５０２）は、ユーザ計量値が計量範囲の最大計量値よりも大きい程度またはユーザ計量値が既定の計量範囲の最小値よりも小さい程度の識別を含む。計量が範囲外である程度の測定が、最大範囲値よりも大きいかまたは最小範囲値よりも小さいとして測定値を識別することを含む場合、測定は、例えば符号（＋または−）、例えば「上」または「下」等の一覧指示、またはハイには真、ローには偽等のブール指示等、大きさと方向の指示の双方を含むと有利であることが多い。
【０１４３】
図８の方法では、ユーザ計量に応じたアクションの識別（３１０）は、ユーザ計量（２０６）の値が計量範囲外である（３０９）程度（５０４）に応じた、更に、多くの場合、計量が範囲外である方向に応じた、アクションの識別（５１２）を含む。図８の方法の多くの実施形態において、ユーザ計量が既定の計量範囲外である程度（５０４）に応じたアクションの識別（５１２）は、計量ＩＤ、ユーザＩＤ、程度、および方向によって構成された計量アクションリスト（６２２）からアクションＩＤを検索することを含む。
【０１４４】
本発明による多くのＤＭＬにおいて、ＤＭＬがサポートするデバイスの全てにデバイスクラスがプレインストールされている。新しく取得された物理的デバイスは、それら自身をネットワーク上にあるとして識別し、ＤＭＬは、ＤＭＬ上にすでにインストールされているデバイスクラスにデバイスＩＤを関連付ける。かかる例示的な実施形態では、ＤＭＬは、デバイスＩＤをプレインストールされたデバイスクラスに関連付けることによってデバイスを識別する。
【０１４５】
関連計量を含むユーザ計量ベクトルに応じたデバイス管理および位置に基づくデバイス制御
図９は、本発明によるデバイス管理方法を示すデータフロー図である。図９の方法は、複数のユーザ計量（２０６）の受信（６６０）を含む。図９の方法の多くの実施形態において、複数の異なるユーザ計量（２０６）の受信（６６０）は、１つ以上の計量センサ（４０６）からの異なるユーザ計量の受信を含む。「異なる」ユーザ計量という語は、異なる種類のユーザ計量を意味する。すなわち、通常異なる計量値を有する、異なる種類のユーザ計量である。
【０１４６】
図９の方法のいくつかの例では、計量センサ（４０６）は、ユーザ状況の指示を読み、ユーザ状況の指示に応じたユーザ計量を生成し、ユーザ計量をＤＭＬに送信する。多くの例では、計量センサは、図３の計量（２０６）等の既定のデータ構造で、例えば、Bluetooth、８０２．１１、ＨＴＴＰ、ＷＡＰ等のプロトコル、または当業者に想起される他のいずれかのプロトコルを用いて、ユーザ計量をＤＭＬに送信する。
【０１４７】
図９の方法は、複数のユーザ計量（２０６）に応じた関連計量（６６４）の生成（６６２）を含む。図９の方法の多くの例では、関連計量（６６４）は、複数のユーザ計量に応じて導出したか、または将来受信されるユーザ計量を予想して生成される、ユーザ状況の具体的な指示を表すデータ構造である。すなわち、図９の方法のいくつかの例では、関連計量は、計量キャッシュ内の複数のユーザ計量に応じて生成された計量である。例えば、「移動」のための関連計量は、位置についての少なくとも２つの他の計量から生成可能である。図９の方法の他の例では、関連計量は、計量キャッシュに受信されるユーザ計量を予想して予め生成される。これらの例の多くでは、計量キャッシュ内のユーザ計量が、既定の計量パターンを生成する既定の計量集合に一致する場合、ユーザのために予め生成された関連計量が選択される。関連計量の例は、ユーザの移動、ユーザの移動なし、回転、移動速度、生物測定値の上昇、生物測定値の低下、生物測定値の変化率、または当業者に想起される他のいずれかの関係を表す計量を含む。
【０１４８】
関連計量は、多くの場合、単一の受信したユーザ計量において利用可能でないユーザ状況に関する情報を提供する。計量値を有する単一の受信ユーザ計量は、その計量の現在値のみを示すことが多い。違う言い方をすれば、単一のユーザ計量は、多くの場合、ユーザ状況の単一の特徴の断片を提供する。一方、関連計量は、多くの場合、アクション実行に応答して、いかにユーザ計量が変わっているか等のユーザ状況に関する更に別の情報、または当業者に想起される他の情報を提供する。
【０１４９】
図９の方法の多くの例では、複数のユーザ計量（２０６）に応じた関連計量（６６４）の生成は、例えばcreateRelationalMetric()（図３の６８６）等の関連計量サービスにおけるメンバメソッドの呼び出しを含む。図９の方法のいくつかの例では、createRelationalMetric()（６８６）は、計量キャッシュ内のユーザ計量間の関係を決定し、適切な関連計量をインスタンス化する。他の実施形態では、createRelationalMetric()は、計量キャッシュ内のユーザ計量を、共に既定の計量パターンを形成する既定の計量集合と比較する。計量キャッシュ内のユーザ計量が、既定の計量パターンを形成する既定の計量と一致する場合、createRelationalMetric()は、関連計量データベースから適切な予め生成された関連計量を受信する。
【０１５０】
図９の方法は、少なくとも１つのユーザ計量（２０６）および少なくとも１つの関連計量（６６４）から成るユーザ計量ベクトル（６０６）の生成（６０４）を含む。少なくとも１つのユーザ計量（２０６）および少なくとも１つの関連計量（６６４）から成るユーザ計量ベクトルは、ユーザ状況の多数の定量化可能な特徴およびこれらの特徴を測定する多数の量を有するユーザ状況の複雑な指示を表す。すなわち、ユーザ計量ベクトルは、通常、各々がユーザ状況の単一の定量化可能な特徴およびこの特徴を測定する量を表すユーザ計量集合である。図９の方法では、ユーザ計量ベクトルは、少なくとも２つの受信したユーザ計量間の関係を識別する少なくとも１つの関連計量も含む。
【０１５１】
本発明の典型的な実施形態では、ユーザ計量ベクトルは、図３を参照して上述した例示的なユーザ計量ベクトル（６０６）等のユーザ計量ベクトルデータ構造またはレコードとして実施される。ユーザ計量ベクトル（６０６）は、ユーザを識別するユーザＩＤ（図３の４８６）およびユーザ計量ベクトルを一意に識別する計量ベクトルＩＤ（図３の４０８）を含む。また、ユーザ計量ベクトル（６０６）は、ユーザ計量に対する参照を含む計量リスト（図３の６５２）のためのデータ記憶領域を含む。また、ユーザ計量ベクトル（６０６）は、関連計量に対する参照を含む関連計量リスト（図３の６５３）のためのデータ記憶領域も含む。
【０１５２】
図９の方法は、複数の計量範囲（２１０）から成るユーザ計量空間（６１０）の生成（６０５）を含む。ユーザ計量空間（６１０）は、ユーザのための複数の異なる計量範囲から成る。すなわち、計量空間は、複数の異なる計量ＩＤについての複数の計量範囲によって規定される。図９の方法の多くの例では、ユーザ計量空間の計量範囲は、所与のユーザの所与のユーザ計量についての計量値の通常または快適な範囲を表す。図９の方法の多くの例では、ユーザ計量空間は、ユーザ計量ベクトルの関連計量についての計量範囲を含む。本発明の多くの例示的な実施形態では、計量空間は、ユーザＩＤおよびユーザの異なる計量範囲に対する参照リストのためのデータ記憶領域（６５５）を含む、図３の例示的な計量空間（６１０）等の計量空間データ構造として実施される。
【０１５３】
図９の方法は、ユーザ計量ベクトル（６０６）がユーザ計量空間（６１０）の外である（３０９）ことの判定（６０８）を含む。様々な代替的な例示的な実施形態では、ユーザ計量ベクトル（６０６）がユーザ計量空間（６１０）の外である（３０９）ことの判定（６０８）は、異なる方法を用いて実行される。ユーザ計量ベクトル（６０６）がユーザ計量空間（６１０）の外である（３０９）ことを判定する方法は、計量ベクトルのユーザ計量および関連計量と対応する計量空間の計量範囲との比較的単純な比較から、もっと複雑なアルゴリズムまで、複雑さは様々である。ユーザ計量ベクトル（６０６）がユーザ計量空間（６１０）の外である（３０９）ことを判定（６０８）する例示的な方法は、図１３を参照して以下でより詳細に説明する。
【０１５４】
ユーザ計量ベクトル（６０６）がユーザ計量空間（６１０）の外である（３０９）場合、図９の方法は、アクション（３１５）の識別（６３０）を含む。アクションは、典型的に、実行されると１つ以上のデバイスを制御する１つ以上のコンピュータプログラム、サブルーチン、またはメンバメソッドを含む。アクションは、通常、オブジェクト指向クラスとして実施され、オブジェクトまたはオブジェクトに対する参照として操作される。実際、本明細書中では、文脈によって他の意味が示されない限り、「アクション」、「アクションオブジェクト」、および「アクションオブジェクトに対する参照」という語は、多かれ少なかれ同意語である。図９の方法の多くの例では、アクションオブジェクトは、デバイスクラスのメンバメソッドを呼び出し、物理的デバイスの現在の属性に影響を与える。図９の方法の多くの例では、アクションクラスまたはアクションオブジェクトは、ＯＳＧｉバンドルでサービスゲートウエイ上のＤＭＬに展開される。
【０１５５】
図９の方法の多くの例では、アクション（３１５）の識別（６３０）は、ユーザ計量ベクトル（６０６）に応じて、動的アクションリスト（６２６）を生成すること（６２４）を含む。図９の方法の多くの例では、動的アクションリストは、ユーザ計量空間の対応する計量範囲の外にあるユーザ計量ベクトルの特定の計量に関連付けた計量アクションリストに応じて生成されるアクションＩＤのリストである。すなわち、その対応する計量範囲の外にある計量ベクトルの各計量は、関連する計量アクションリストを有する。関連する計量アクションリストは、その関連する計量がその対応する計量範囲の外にある場合、実行のためのアクションＩＤを含む。動的アクションリストは、ユーザ計量空間の対応する計量範囲の外にあるユーザ計量ベクトルの特定の計量に関連付けた計量アクションリストに応じて識別されるアクションＩＤを含むアクションリストである。動的アクションリストは、ユーザの現在の状況に合わせたアクションＩＤのリストを提供すると有利である。
【０１５６】
本発明の多くの例示的な実施形態では、動的アクションリストの生成は、動的アクションサービスオブジェクトにおけるメンバメソッドの呼び出しを含む。図９の方法の多くの例では、動的アクションリストの生成は、ユーザ計量空間の対応する計量範囲の外にあるユーザ計量ベクトルの特定のユーザ計量に関連付けたアクションリストから検索したアクションＩＤによって、createDynamicActionList()等のメンバメソッドをパラメータで表すことを含む。図９の方法の多くの例では、actionDynamicActionList()は、そのユーザ計量ベクトルの呼び出し側に、計量アクションリストに含まれるアクションＩＤに応じて識別されるアクションＩＤを含む動的アクションリストを戻す。図９の方法の様々な代替的な例では、動的アクションリストは、例えば、ハッシュテーブル、Ｊａｖａリストコンテナとして、ランダムアクセスメモリ内のテーブルとして、ハードドライブまたはＣＤ  ＲＯＭ上に記憶領域を有するＳＱＬデータベーステーブルとして、更に、当業者に想起される他の方法で、実施することができる。
【０１５７】
図９の方法は、アクション（６１４）の実行を含む。従って、アクションの実行は、かかる実施形態において、多くの場合、ＤＭＬにおけるswitch()ステートメントの使用によって実行される。かかるswitch()ステートメントは、アクションＩＤに応じて動作し、例えば、以下の疑似コードセグメントに示されるように実施することができる。
【数１５】
2006039750.tif 000017
【０１５８】
例示的なスイッチステートメントは、アクションＩＤに応じた実行のため特定のデバイス制御オブジェクトを選択する。この例でswitch()によって管理されるデバイス制御オブジェクトは、actionNumber1、actionNumber2等という名前の具外的なアクションクラスであり、各々は、「take_action()」という名前の実行可能メンバメソッドを有し、これが、各アクションクラスが実施する実際のワークを実行する。
【０１５９】
図９の方法の多くの例では、アクションの実行は、ＤＭＬにおけるハッシュテーブルの使用によって行われる。かかるハッシュテーブルは、以下の疑似コードの例に示すように、アクションＩＤによって入力されるアクションオブジェクトに対する参照を格納する。この例は、動的アクションリストサービスが、アクションＩＤをキーとして用いて、特定の計量ＩＤに関連付けた具体的なアクションクラスのオブジェクトに対する参照であるアクションのハッシュテーブルを生成することによって開始する。多くの実施形態では、かかるハッシュテーブルを作成し、それにユーザ計量空間の対応する計量範囲の外にあるユーザ計量ベクトルの特定の計量ＩＤに関連するアクションオブジェクトに対する参照を入れ、ハッシュテーブルに対する参照を呼び出し側ベクトルオブジェクトに戻すのは、動的アクションリストサービスである。
【数１６】
2006039750.tif 000018
【０１６０】
次いで、以下の疑似コードに従って、特定のアクションの実行を行うことができる。
【数１７】
2006039750.tif 000019
【０１６１】
また、図９の方法の多くの例は、リストの使用によって実施される。多くの場合、リストは、ハッシュテーブルと同様に機能する。かかるリストの構築は、以下の疑似コードに従って実行することができる。
【数１８】
2006039750.tif 000020
【０１６２】
次いで、以下の疑似コードに従って、特定のアクションの実行を行うことができる。
【数１９】
2006039750.tif 000021
【０１６３】
上述の３つの例は、スイッチステートメント、ハッシュテーブル、およびリストオブジェクトを用いて、本発明の実施形態によるアクションの実行を説明する。これらの例におけるスイッチステートメント、ハッシュテーブル、およびリストオブジェクトの使用は、限定ではなく説明のためである。実際、当業者に想起されるように、本発明の実施形態に従ってアクションを実行する多くの方法があり、かかる方法は全て本発明の範囲内である。
【０１６４】
図９の方法のいくつかの例では、アクションの実行は、デバイスのためのデバイスクラスの識別を含む。典型的なデバイスクラスは、デバイスを管理するメンバメソッドを含む。デバイスを管理する典型的なメンバメソッドは、物理的デバイスのデバイス属性の値を取得および設定するためのメンバメソッドを含む。例えば、光強度の多数の設定をサポートするランプの場合、デバイスクラスのメンバ方法get()は、ランプから光強度の値を取得することができ、デバイスクラスのメンバ方法set()は、ランプの光強度を設定する。
【０１６５】
図９の方法の多くの例では、アクションの実行は、デバイスのための通信クラスの識別を含む。デバイスクラスのメンバメソッドが物理的デバイスに通信するため、通信クラスは、物理的デバイスと通信するためのプロトコルを実施する。典型的な通信クラスは、通信クラスが実施するプロトコルに従ってデータ通信メッセージを構築、送信、および受信するメンバメソッドを含む。通信クラスのメンバメソッドは、物理的デバイスとの間でデータ通信メッセージを送信および受信する。通信クラスは、デバイスを実施するアクションから物理的デバイスと通信するために用いるプロトコルを分離すると有利であり、このため、例えばget()およびset()を備えるデバイスクラスインタフェースは、デバイスクラスを再プログラムする必要なく、また、物理的デバイスおよびプロトコルの各組み合わせごとに１つのデバイスクラスを提供する必要なく、データ通信プロトコルのいずれかを用いて物理的デバイスと通信可能であると有用である。
【０１６６】
図１０は、複数のユーザ計量（２０６）に応じて関連計量（６６４）を生成する（６６２）例示的な方法を示すデータフロー図である。上述のように、図１０の方法のいくつかの例では、関連計量は、計量キャッシュにおける受信したユーザ計量に応じて生成された計量である。図１０の方法では、複数のユーザ計量（２０６）に応じた関連計量（６６４）の生成（６６２）は、ユーザ計量のフィルタリング（６６５）を含む。図１０の方法の多くの例では、ユーザ計量のフィルタリングは、計量キャッシュにおける受信したユーザ計量の計量ＩＤの識別および計量ＩＤによるユーザ計量の分類を含む。
【０１６７】
図１０は、結果として得られたフィルタリングされたユーザ計量を２つのみ示す（２０６Ａ、２０６Ｂ）。しかしながら、図１０の方法の多くの例では、ユーザ計量のフィルタリングの結果として、多くのフィルタリングしたユーザ計量がキャッシュに格納され、関連計量を生成するために用いられる。図１０の方法の様々な例では、いくつのフィルタリングされたユーザ計量が計量キャッシュに維持されるかは、フィルタリングしたユーザ計量の計量ＩＤ、フィルタリングしたユーザ計量に応じて生成された関連計量の種類等のファクタ、または当業者に想起される他のいずれかのファクタによって変動する。例えば、「ユーザの移動」の関連計量は、２つのみのフィルタリングしたユーザ計量から生成することができ、一方、「円の中のユーザの移動」の関連計量は、計量キャッシュ内の位置のための３つ以上のフィルタリングしたユーザ計量を必要とする場合がある。
【０１６８】
図１０の方法では、複数のユーザ計量（２０６Ａ、２０６Ｂ）に応じた関連計量（６６４）の生成（６６２）は、第１のフィルタリングされたユーザ計量（２０６Ａ）と第２のフィルタリングされたユーザ計量（２０６Ｂ）との間の関係（６６８）の判定（６６６）を含む。図１０の方法では、第１のフィルタリングされたユーザ計量（２０６Ａ）と第２のフィルタリングされたユーザ計量（２０６Ｂ）との間の関係（６６８）の判定（６６６）は、第１のフィルタリングされたユーザ計量（２０６Ａ）と第２のフィルタリングされたユーザ計量（２０６Ｂ）との比較（６７０）を含む。図１１の方法の多くの例では、第１のフィルタリングされたユーザ計量と第２のフィルタリングされたユーザ計量を比較して関係を判定することは、アルゴリズムで実行される。すなわち、例えば、コンピュータプログラム符号化の点で、ユーザ計量間の関係の判定は、スイッチステートメントまたは、例えば以下のように示されるものと同様のif-then-elseステートメント実施論理のシーケンスを用いることによって、実行される。
【数２０】
2006039750.tif 000022
もしくは
【数２１】
2006039750.tif 000023
【０１６９】
図１１の方法の多くの例では、ユーザ計量に応じた関係の判定は、２つのみのユーザ計量の比較に限定されない。３つ以上のユーザ計量の比較の例として、以下の、関係「右に回転」を判定するアルゴリズム論理の例を考える。
【数２２】
2006039750.tif 000024
【０１７０】
図１０の方法では、複数のユーザ計量（２０６Ａ、２０６Ｂ）に応じた関連計量（６６４）の生成（６６２）は、第１のフィルタリングされたユーザ計量（２０６Ａ）と第２のフィルタリングされたユーザ計量（２０６Ｂ）との間の関係（６６８）の大きさ（６７４）の判定（６７２）を含む。図１０の方法の多くの例では、判定された大きさは、生成された関連計量の値として含まれる。図１０の方法のいくつかの例では、第１のフィルタリングされたユーザ計量（２０６Ａ）と第２のフィルタリングされたユーザ計量（２０６Ｂ）との間の関係（６６８）の大きさ（６７４）の判定（６７２）は、第１のフィルタリングしたユーザ計量（２０６Ａ）の値から、第２のフィルタリングしたユーザ計量（２０６Ｂ）の値を減算する（６７６）ことを含む。図１０の方法の他の代替的な例では、第１のフィルタリングされたユーザ計量（２０６Ａ）と第２のフィルタリングされたユーザ計量（２０６Ｂ）との間の関係（６６８）の大きさ（６７４）の判定（６７２）は、第１のフィルタリングされたユーザ計量および第２のフィルタリングされたユーザ計量を加算すること、または当業者に想起される他のいずれかの関数またはアルゴリズムを第１のフィルタリングされたユーザ計量および第２のフィルタリングされたユーザ計量に適用することを含む。
【０１７１】
図１１は、複数のユーザ計量（２０６）に応じて関連計量（６６４）を生成する（６６２）例示的な方法を示すデータフロー図である。図１１の方法では、複数のユーザ計量（２０６）に応じた関連計量（６６４）の生成（６６２）は、複数のユーザ計量（２０６）が既定の計量パターン（６６３）に一致する（６８１）かの判定（６７８）を含む。図１１の方法の多くの例では、既定の計量パターンは、既定の関係を証明する特定パターンの計量を形成するように予め決められた、予め生成したユーザ計量集合を含む。
【０１７２】
図１１の方法の多くの例では、複数のユーザ計量（２０６）が既定の計量パターン（６６３）に一致する（６８１）か否かの判定（６７８）は、計量キャッシュ内の複数のユーザ計量を、既定の計量パターン（６６３）を形成する既定の計量集合と比較すること（６７９）を含む。図１１の方法の多くの例では、計量キャッシュ内のユーザ計量と関連計量データベース内の既定の計量パターンとを比較することは、ユーザ計量の値を、既定の計量パターン内に含まれる個々の既定計量の値と比較すること、および、計量キャッシュ内のユーザ計量の計量ＩＤを、既定計量パターン内に含まれる個々の既定計量の計量ＩＤと比較することを含む。図１１の方法の多くの例では、既定計量パターンは、共に計量パターンを形成する異なる種類の既定計量を含む場合がある。
【０１７３】
計量キャッシュ内の複数のユーザ計量は、一致と見なされる既定計量パターンを形成する既定計量集合と全く同じである必要はない。計量キャッシュ内のユーザ計量が一致と見なされる既定計量パターンの既定計量と同じでなければならない程度は、比較に用いる方法の許容度、ユーザ計量および既定計量に含まれる情報の種類、ユーザ計量および既定計量を発生する際に用いる正確さおよび精度等の様々なファクタ、ならびに当業者に想起される他のファクタに依存する。
【０１７４】
図１１の方法では、既定計量パターンは、計量パターンテーブル（６８０）に格納される。図１１の方法の多くの例では、計量パターンテーブルは、例えば、識別する関連計量のための計量ＩＤによって示される既定計量パターンを形成する所定の計量集合を含む。図１１の方法の多くの例では、計量キャッシュ内のユーザ計量は、既定計量パターンを形成する所定の計量集合と比較される。ユーザ計量が、既定計量パターンを形成する所定の計量集合と一致した場合、関連計量のために計量ＩＤを識別する。
【０１７５】
図１１の方法では、複数のユーザ計量（２０６）に応じた関連計量（６６４）の生成（６６２）は、関連計量（６６４）の検索（６８３）を含む。図１１の方法の多くの例では、関連計量は、計量キャッシュ内のユーザ計量を計量パターンテーブルに格納された既定計量パターンと比較することによって識別される計量ＩＤに応じて、関連計量テーブル（６６５）から検索される。
【０１７６】
図１２は、ユーザ計量ベクトル（６０６）を生成する（６０４）例示的な方法およびユーザ計量空間（６１０）を生成する（６０５）例示的な方法を示すデータフロー図である。図１２の方法において、少なくとも１つのユーザ計量（２０６）および少なくとも１つの関連計量（６６４）から成るユーザ計量ベクトル（６０６）の生成（６０４）は、少なくとも１つのユーザ計量をユーザ計量ベクトルに関連付けること（６０３）、および少なくとも１つの関連計量（６６４）をユーザ計量ベクトル（６０６）に関連付けること（６８２）を含む。本開示において、および文脈に応じて、「関連付ける」という語は、一般的に、参照による関連付けを意味する。すなわち、１つのクラスのオブジェクトを別のオブジェクトに関連付けるということは、第２のオブジェクトが第１のオブジェクトに対する参照を有することを意味する。オブジェクトは互いに関連付けられ、各々が他に対する参照を有する。オブジェクト、集合、構成等の間の他の関係は、通常、関連付けの種類であり、当業者に想起される他のものと同様、それらのいずれかの使用は、本発明の範囲内である。図１２の例示的な方法では、複数の異なるユーザ計量（２０６）をユーザ計量ベクトル（６０６）に関連付けること（６０３）は、ユーザ計量ベクトル（６０６）の複数の異なる計量オブジェクトに対する参照を提供することによって実行される。
【０１７７】
図１２の方法において、複数の異なるユーザ計量（２０６）から成るユーザ計量ベクトル（６０６）の生成（６０４）は、少なくとも１つの計量アクションリスト（６２２）を各ユーザ計量（２０６）に関連付ける（６２０）ことを含む。図１２の方法の多くの例において、複数の計量アクションリストは、ユーザベクトルの各ユーザ計量に関連付けられている。特定の計量に関連付けた計量アクションリストに含まれるアクションＩＤは、その計量が表すユーザ状況の特定の特徴に従ってデバイスを管理するように設計されたアクションを識別する。すなわち、計量アクションリストは、ユーザ計量または関連計量が表すユーザ状況に影響を与えるように構成されている。例えば、体温計量に関連付けた計量リストは、エアコンディショナ、ファン、ヒータ、自動日よけ等のデバイスを管理するアクションを含むことができる。
【０１７８】
図１２の方法の多くの例において、ユーザ計量ベクトルの生成は、複数の計量アクションリストを単一のユーザ計量に関連付けることを含む。図１２の方法のいくつかの例は、ユーザ計量の値がその対応する計量範囲よりも大きい場合に実行するため、ある計量アクションリストを、アクションＩＤを含むユーザ計量に関連付けること、更に、ユーザ計量の値がその対応する計量範囲よりも小さい場合に実行するため、アクションＩＤを含む別の計量アクションリストを関連付けることを含む。また、図１２の方法のいくつかの例は、ユーザ計量がその対応する計量範囲外である程度および方向に応じて実行するため、計量アクションリストを、アクションＩＤを含むユーザ計量に関連付けることを含む。
【０１７９】
図１２の方法では、複数の異なるユーザ計量（２０６）から成るユーザ計量ベクトル（６０６）の生成（６０４）は、少なくとも１つの計量アクションリスト（６２２）を各関連計量（６６４）に関連付けること（６８３）を含む。図１２の方法の多くの例では、複数の計量アクションリストが、ユーザベクトルの各関連計量に関連付けられている。特定の関連計量に関連付けられた計量アクションリストに含まれるアクションＩＤは、その関連計量が表すユーザ状況の特定の特徴に従ってデバイスを管理するよう設計されたアクションを識別する。すなわち、計量アクションリストは、関連計量が表すユーザ状況に影響を与えるように構成されている。例えば、体温計量に関連付けた計量リストは、エアコンディショナ、ファン、ヒータ、自動日よけ等のデバイスを管理するアクションを含むことができる。
【０１８０】
図１２の方法の多くの例では、ユーザ計量ベクトルの生成は、複数の計量アクションリストを単一の関連計量に関連付けることを含む。図１２の方法のいくつかの例は、関連計量の値がその対応する計量範囲よりも大きい場合に実行するため、ある計量アクションリストを、アクションＩＤを含む関連計量に関連付けること、更に、関連計量の値がその対応する計量範囲よりも小さい場合に実行するため、アクションＩＤを含む別の計量アクションリストを関連付けることを含む。また、図１２の方法のいくつかの例は、ユーザ計量がその対応する計量範囲外である程度および方向に応じて実行するために、アクションＩＤを含む計量アクションリストを、関連計量に関連付けることを含む。
【０１８１】
図１２の方法は、複数の計量範囲から成るユーザ計量空間（６１０）の生成（６０５）を含む。図１２の方法の多くの例において、ユーザ計量空間（６１０）は、本質的に、ユーザ計量ベクトルに含まれるユーザ計量および関連計量に対応する複数の異なる計量範囲から成る。図１２の方法の多くの例では、ユーザ計量空間の計量範囲は、ユーザのための通常または快適な計量範囲を表す。図１２の方法では、ユーザ計量空間（６１０）の生成（６０２）は、複数の異なる計量（２０６）のための複数の計量範囲（２１０）を識別すること（６１０）、および、複数の異なる計量（２０６）のための複数の異なる計量範囲（２１０）をユーザ計量空間（６１０）に関連付けることを含む。
【０１８２】
図１２の方法の多くの例において、複数の計量範囲（２１０）の識別（６０１）および複数の計量範囲（２１０）のユーザ計量空間（６１０）との関連付け（６０７）は、ＤＭＬがインスタンス化する計量空間サービスによって実行される。計量空間サービスは、ユーザ計量ベクトルからユーザ計量ベクトルＩＤを受け取り、計量ベクトルＩＤが識別する計量空間リストの中で計量空間を検索し、ユーザ計量ベクトルに、ユーザ計量ベクトルと比較するための計量空間を識別する計量空間ＩＤを戻す。計量ベクトルＩＤのための計量空間が存在しない場合、計量空間サービスは、１つの計量空間をインスタンス化し、計量空間テーブルに計量空間ＩＤを格納する。
【０１８３】
図１３は、ユーザ計量ベクトル（６０６）がユーザ計量空間（６１０）の外である（３０９）か否かを判定する（６０８）２つの例示的な方法を示すデータフロー図である。ユーザ計量ベクトル（６０６）がユーザ計量空間（６１０）の外である（３０９）か否かを判定する（６０８）最初に例示する方法は、ユーザ計量ベクトル（６０６）のユーザ計量（２０６）および関連計量（６６４）の計量値を、計量空間（６１０）の計量範囲（２１０）と比較すること（８０６）を含む。本発明のいくつかの例では、ユーザ計量の計量値または関連計量の値とその対応する計量範囲との比較は、その値が既定計量範囲の外である程度の測定、および、その値が既定計量範囲の上または下であることの識別を含む。
【０１８４】
本発明の多くの例示的な実施形態において、ユーザ計量ベクトルが計量空間の外にあるか否かの判定は、計量値と計量範囲との間の多数の個々の比較の関数である。本発明の様々な代替的な実施形態では、異なる基準を用いて、ユーザ計量ベクトルが計量空間の外にあることを判定するために、対応する計量範囲外にあるはずの計量値の数を識別するか、または、いずれかの計量値が対応する計量範囲の外にある程度を識別する。いくつかの実施形態では、ユーザ計量ベクトルがユーザ計量空間の外にあるか否かを判定するための厳密な基準を用いて、１つのみの計量値が対応する計量範囲の外にある場合、ユーザ計量ベクトルは計量空間の外にあると判定される。他の実施形態では、ユーザ計量ベクトルがユーザ計量空間の外にあるか否かを判定するためのもっと厳密さの緩い基準を用いて、ユーザ計量ベクトルの全てが、ある程度、対応する計量範囲の外にある場合、ユーザ計量ベクトルはユーザ計量空間の外にあると判定される。様々な実施形態において、ユーザ計量ベクトルが計量空間の外にあるという判定を行うための、対応する計量範囲の外にあるはずの計量値の数、または、計量値が対応する計量範囲の外にある程度は、様々に異なる。ユーザ計量ベクトルが計量空間の外にあるか否かを判定するこれらの方法は全ては、本発明の範囲内である。
【０１８５】
図１３に示す、ユーザ計量ベクトル（６０６）がユーザ計量空間（６１０）の外にあると判定する（６０８）第２の例示的な方法は、計量ベクトル値（８１２）の計算（８１０）、および計量空間値（８１６）の計算（８１４）、および計量ベクトル値（８１２）の計量空間値（８１６）との比較（８１８）を含む。計量ベクトル値を計算する１つの方法は、所定の式を用いて、ユーザ計量ベクトルのユーザ計量および関連計量の計量値の関数である単一の値を明らかにすることである。本発明の１つの例示的な実施形態では、計量ベクトル値の計算は、ユーザ計量ベクトルの計量値の平均化を含む。別の例示的な実施形態では、計量ベクトル値の計算は、ある種の計量および関連計量を優先させること、および計量の優先に基づいた重み付き平均を用いて計量ベクトル値を計算することを含む。
【０１８６】
いくつかの例示的な実施形態では、計量空間値（８１８）の計算（８１４）は、所定の式を用いて、ユーザ計量空間の各計量範囲の最小および最大値の関数である計量空間値を求めることを含む。１つの例示的な実施形態では、計量空間値の計算は、各計量範囲の最小および最大値の中心点を見出し、次いで中心点を平均化することを含む。
【０１８７】
例示した方法は、計量空間値（８１６）および計量ベクトル値（８１２）の比較（８１８）を含む。本発明の様々な実施形態では、計量ベクトルが計量空間の外にあるか否かを判定するため、どのように計量ベクトル値および計量空間値を比較するかは、様々である。１つの例示的な実施形態では、計量ベクトル値を、計量空間値から減算する。減算の結果が所定範囲内である場合、ユーザ計量ベクトルは計量空間内にあると判定される。同じ例において、減算の結果が所定範囲内になければ、計量ベクトル値は計量空間内にあると判定されない。
【０１８８】
図１３の例示した方法は、限定のためではなく説明のために提供する。ユーザ計量ベクトルが計量空間の外にあるという判定を行うために、計量範囲および計量値を比較し、組み合わせ、操作し、または他のやり方で使用可能である方法は、他にも多く存在する。ユーザ計量ベクトルが計量空間の外にあるという判定を行うための、かかる比較、組み合わせ、操作、および他のやり方で計量値および計量範囲を用いる方法は、全て、本発明の範囲内に含まれる。
【０１８９】
図１４は、アクション（３１５）を識別する（６３０）例示的な方法を示すデータフロー図である。図１４の方法において、アクションの識別は、ユーザ計量ベクトル（６０６）に応じて、動的アクションリスト（６２６）を生成することを含む。通常の動的アクションリストは、対応する計量範囲または複数の計量範囲の外にあるユーザの計量空間および特定の関連計量の対応する計量範囲の外にあるユーザの計量ベクトルの特定の計量に関連付けた計量アクションリスト内に含まれるアクションＩＤに応じて動的に識別されるアクションＩＤを含む。かかる動的アクションリストの生成は、ユーザの現在の状況に応答してデバイスを管理するように構成されたアクションＩＤの集合を提供することが好都合である。
【０１９０】
図１４の方法において、ユーザ計量ベクトル（６０６）に応じた動的アクションリスト（６２６）の生成（６２４）は、ユーザ計量空間の計量範囲外の値を有するユーザ計量ベクトル（６２２）の各ユーザ計量（２０６）および各関連計量ごとの計量アクションリスト（６２２）の識別（７５２）を含む。図１４の方法の多くの例において、対応する計量範囲の外にある各ユーザ計量（２０６）および関連計量（６６４）ごとの、更に、対応する計量範囲の外にある各関連計量ごとの、計量アクションリスト（６２２）の識別（７５２）は、ユーザ計量ベクトルがユーザ計量空間の外にあると判定された場合に対応する計量範囲の外にあるとして先に識別された計量オブジェクトから、計量アクションリストに対する参照を検索すること、および、対応する計量範囲の外にあるとして先に識別された関連計量から、計量アクションリストに対する参照を検索することを含む。多くの例では、計量範囲の外にある計量オブジェクトは、ユーザ計量ベクトルが計量空間の外にあるか否かを判定するために計量オブジェクトを計量範囲と比較した場合に、識別される。
【０１９１】
図１４の方法の多くの例では、１つの計量には、複数の計量アクションリストが関連付けられている。関連付けられた各計量アクションリストは、計量値が計量範囲の外にある程度および方向に応じて実行するため、アクションＩＤの集合を含む。従って、図１４の方法のいくつかの例では、ユーザ計量空間の計量範囲の外にある値を有するユーザ計量ベクトル（６０６）の各ユーザ計量（２０６）ごとの計量アクションリスト（６２２）の識別（７５２）は、ユーザ計量ベクトルの各ユーザ計量の値がユーザ計量空間の計量範囲の外にある程度に応じて計量リストを識別することを含む。図１４の方法の別の例では、ユーザ計量空間の計量範囲の外にある値を有するユーザ計量ベクトル（６０６）の各ユーザ計量（２０６）ごとの計量アクションリスト（６２２）の識別（７５２）は、ユーザ計量ベクトルの各ユーザ計量の値がユーザ計量空間の計量範囲の外にある方向に応じて計量リストを識別することを含む。
【０１９２】
図１４の方法において、ユーザ計量ベクトル（６０６）に応じた動的アクションリスト（６２６）の生成（６２４）は、各計量アクションリスト（６２２）から少なくとも１つのアクションＩＤ（３１５）を検索すること（７５４）を含む。いくつかの計量アクションリストは、複数のアクションＩＤを含み、従って、図１４の方法の多くの例は、対応する計量範囲外の値を有する各計量に関連付けられた計量アクションリストから複数のアクションＩＤを検索することを含む。
【０１９３】
図１４の例では、ユーザ計量ベクトル（６０６）に応じた動的アクションリスト（６２６）の生成（６２４）は、計量アクションリスト（６２２）から検索したアクションＩＤ（３１５）に応じて動的アクションリスト（６２６）に含ませるために少なくとも１つのアクションＩＤ（３１５）を識別すること（７５６）を含む。図１４の方法の多くの例では、計量アクションリスト（６２２）から検索したアクションＩＤ（３１５）に応じて動的アクションリスト（６２６）に含ませるために少なくとも１つのアクションＩＤ（３１５）を識別すること（７５６）は、動的アクションリストに含ませるために計量アクションリストから直接検索したアクションＩＤの識別を含む。すなわち、図１４の方法のいくつかの例では、計量アクションリストから検索した同じアクションＩＤが、動的アクションリストに含まれている。
【０１９４】
図１４の方法では、計量アクションリスト（６２２）から検索したアクションＩＤ（３１５）に応じて動的アクションリスト（６２６）に含ませるために少なくとも１つのアクションＩＤ（３１５）を識別すること（７５６）は、計量アクションリスト（６２２）のアクションＩＤ（３１５）を比較すること（７５８）および繰り返しのアクションを省略することを含む。図１４の方法のいくつかの例では、繰り返しのアクションを省略することは、同じアクションＩＤが２つ以上の計量アクションリストに含まれることの判定を含む。かかる例では、動的アクションリストの生成は、同じアクションＩＤを有し、動的アクションリストに１度だけアクションＩＤを含む計量アクションリストを識別することを含む。
【０１９５】
図１４の方法では、計量アクションリスト（６２２）から検索したアクションＩＤ（３１５）に応じて動的アクションリスト（６２６）に含ませるために少なくとも１つのアクションＩＤ（３１５）を識別すること（７５６）は、計量アクションリストの少なくとも１つのアクションＩＤに応じて動的アクションテーブル（７６２）からアクションＩＤ（３１５）を検索すること（７６０）を含む。図１４の方法の多くの例では、動的アクションテーブル（７６２）は、他のアクションＩＤによって索引を付けられるアクションＩＤを含むデータ構造である。すなわち、動的アクションテーブルは、計量アクションリストから検索したアクションＩＤに応じて動的アクションリストに含ませるため所定のアクションＩＤに索引を付けるように設計されたデータ構造である。
【０１９６】
従って、図１４の方法の多くの例において、かかる動的アクションテーブルは、計量アクションリストから検索された競合するアクションを識別し、計量アクションリストから検索された置換するアクションを識別し、更に、計量アクションリストに含まれない別のアクションを識別するように設計されている。図１４の方法のいくつかの例において、計量アクションリスト（６２２）から検索したアクションＩＤ（３１５）に応じて動的アクションリスト（６２６）に含ませるために少なくとも１つのアクションＩＤ（３１５）を識別すること（７５６）は、競合するアクションを省略することを含む。図１４の方法の多くの例において、動的アクションテーブルを用いて、競合すると前もって決定されたアクションＩＤを識別する。例えば、天井のファンをオンするデバイス制御アクションを識別する１つの計量アクションリストに含まれるアクションＩＤは、同じ天井のファンをオフするデバイス制御アクションを識別するアクションＩＤと競合する。かかる競合アクションＩＤは、動的アクションリストから省略する。
【０１９７】
図１４の方法のいくつかの例では、計量アクションリスト（６２２）から検索したアクションＩＤ（３１５）に応じて動的アクションリスト（６２６）に含ませるために少なくとも１つのアクションＩＤ（３１５）を識別すること（７５６）は、置換されたアクションを省略することを含む。置換されたアクションとは、実行されると、別の置換するアクションと同じ方向の同じデバイスを管理するが、別の置換するアクションよりも小さい程度でそのデバイスを管理するアクションである。すなわち、別のアクションがより大きい程度で同じデバイスを管理する場合にアクションは置換されて、置換されたアクションの実行は、置換するアクションの実行によって隠されるようになっている。例えば、天井のファンの現在の属性値を「５」から「４」に変化させるアクションＩＤの実行は、同じ天井のファンの属性を「５」から「２」に変化させるアクションＩＤの実行によって置換される。図１４の方法の多くの例では、動的アクションテーブルを用いて、他のアクションＩＤを置換するように予め決定されたアクションＩＤを識別する。図１３の方法の多くの例は、動的アクションリストからの置換されたアクションＩＤを省略し置換するアクションＩＤを含ませることを含む。
【０１９８】
図１４の方法では、計量アクションリスト（６２２）から検索したアクションＩＤ（３１５）に応じて動的アクションリスト（６２６）に含ませるために少なくとも１つのアクションＩＤ（３１５）を識別すること（７５６）は、動的アクションリストに含ませるために、識別した計量アクションリスト（６２２）のいずれにも含まれないアクションＩＤを識別することを含む。図１４の方法の多くの例では、動的アクションテーブル（７６２）のルックアップによって識別されたアクションＩＤは、識別した計量アクションのいずれにも含まれない。これらの例のいくつかでは、動的アクションテーブルに、実行された場合に他のアクションＩＤと同じユーザ状況に影響を与えるように予め決定されたアクションＩＤを設定する。かかる動的アクションテーブルは、計量アクションリストから１つ以上の他のアクションＩＤが検索された場合に実行するため、アクションＩＤを識別するように索引を付ける。このように、動的アクションテーブルは、ユーザの現在の状況に影響を与えるより多くのアクションを識別し実行するための手段を有利に提供する。
【０１９９】
対応する範囲外のユーザ計量に関連付けられたいかなる計量アクションリストにも含まれないアクションＩＤの識別を更に説明するため、以下の例を与える。ユーザ計量ベクトルの２つのユーザ計量が、ユーザ計量空間の対応する計量範囲を超えている。最初の計量は体温を表し、関連計量アクションリスト内に第１のアクションＩＤを有し、これは実行されると天井のファンをオンにする。第２の計量は心拍数を表し、関連計量リスト内に第２のアクションＩＤを有し、これは実行されるとエアコンディショナをオンにする。第１のアクションＩＤおよび第２のアクションＩＤに応じた動的アクションテーブルのルックアップは、どちらの計量のどちらの計量アクションリストにも含まれない第３のアクションＩＤを検索する。第３のアクションＩＤの実行は、結果として、天井のファンをオンにし、エアコンディショナをオンにし、自動日よけを引く。自動日よけの追加アクションは、エアコンディショナおよび天井のファンをオンすることと同じユーザ状況に影響を与えるように予め決定されている。動的アクションテーブルのルックアップは、第１および第２のアクションＩＤを基に動的アクションリストに含ませるために第３のアクションＩＤを識別する。
【０２００】
図１５は、アクションを識別する（６３０）例示的な方法を示すデータフロー図である。図１５の方法において、アクションの識別は、ユーザの位置（９７２）の判定（９７０）を含む。図１５の方法の多くの例では、ユーザの位置の判定は、ユーザ計量ベクトルから位置のユーザ計量（２０６）に対する参照を検索すること、および、位置のユーザ計量の値を検索することを含む。図１５の方法の他の例では、ユーザの位置の判定は、他の計量からユーザの位置を推測すること、またはユーザによるデバイスの直接管理によって生じるデバイス属性の変化を識別すること等、または当業者に想起される他のいずれかのユーザ位置の推測方法による、ユーザの位置の推測を含む。
【０２０１】
図１５の方法では、アクションの識別は、ユーザ移動（９７４）の判定（９７１）を含む。図１５の方法のいくつかの例においてユーザ移動の判定は、ユーザ計量ベクトルから、ユーザの移動を表す関連計量（６６４）を検索すること、および関連計量の値を検索することを含む。図１５の方法のいくつかの例では、ユーザ移動の判定は、ユーザ計量ベクトルから、ユーザの移動の様々な特徴を表す複数の関連計量（６６４）を検索すること、および複数の関連計量の値を検索することを含む。
【０２０２】
図１５の方法では、アクション（６３０）の識別は、ユーザの位置（９７２）およびユーザの移動（９７４）に応じてアクションＩＤ（３１５）を選択すること（９７５）を含む。図１５の方法では、ユーザの位置およびユーザの移動に応じてアクションＩＤを選択すること（９７５）は、アクションテーブルから、ユーザの位置およびユーザの移動に応じたアクションＩＤを検索することを含む。
【０２０３】
図１５の方法の多くの例では、アクションテーブル（９７５）は、位置および特定のユーザの移動によって示されるアクションＩＤを含む。図１５の方法の典型的な例において、アクションテーブルのアクションＩＤは、有効範囲がユーザの現在の位置をカバーする特定のデバイスを管理するように設計されたアクションを識別し、更に、ユーザの現在の移動と一致する方法でデバイスを管理するように設計されている。例えば、ユーザが居間にいて、居間には、有効範囲がこの居間をカバーするラジオが置かれているという場合がある。更に、ユーザがラジオの位置に近づくと、アクションはラジオのボリュームをゆっくりと下げるように設計されている場合がある。ユーザの位置およびユーザの移動に応じてアクションテーブルから選択された特定のアクションＩＤは、位置に基づくデバイス制御を行うことができると好都合である。
【０２０４】
以下の例を考える。ユーザの計量ベクトルが、ユーザの心拍数が対応する計量範囲を超えたことを示す。ＤＭＬは、ユーザの音楽プレーヤをオンし、プレーヤがユーザを落ち着かせるよう指定された音楽を演奏するように設定するアクションを識別するアクションＩＤを識別して実行する。また、ＤＭＬは、ユーザが居間にいることを判定し、ＤＭＬは、ユーザが音楽プレーヤに向かって移動していると判定する。ユーザの速度および方向に適切な速さでボリュームを下げるよう設計された別のアクションＩＤが識別され実行される。ボリュームを下げた結果、ユーザにとってボリュームは変わらないように見える。
【０２０５】
図１５の方法のいくつかの例は、ユーザの位置（９７２）およびユーザの移動（９７４）に応じてアクションＩＤ（３１５）を選択する（９７５）ことによって、および、動的アクションリストを生成してアクションを識別することによって、アクション（６３０）を識別することを含む。すなわち、アクションを識別する２つ以上の方法が、関連して実行され、多くの場合、多くのアクションを識別して実行する。他の例では、アクションの識別は、ユーザの位置（９７２）およびユーザの移動（９７４）に応じてアクションＩＤ（３１５）を選択する（９７５）ことによって、または、動的アクションリストを生成してアクションを識別することによって、または当業者に想起される他のいずれかのアクションの識別方法によって、行われる。
【０２０６】
前述の記載から、本発明の様々な実施形態において、真の精神から逸脱することなく修正および変更を行い得ることは認められよう。本明細書の記載は、例示の目的のためのみであり、限定の意味に解釈されるものではない。本発明の範囲は、特許請求の範囲の文言によってのみ限定される。
【図面の簡単な説明】
【０２０７】
【図１】本発明によるデバイス管理方法を実施する際に有用な例示的なアーキテクチャを示すブロック図である。
【図２】例示的なサービスゲートウエイを示すブロック図である。
【図３】本発明によるデバイス管理方法を実施する際に有用な例示的なクラスを示すブロック図である。
【図４】図３の例示的なクラスのいくつかの間の例示的な関係を示すクラス関係図である。
【図５】図３の例示的なクラスのいくつかの間の例示的な関係を示す別のクラス関係図である。
【図６】本発明による例示的なデバイス管理方法を示すデータフロー図である。
【図７】アクションを実行する例示的な方法を示すデータフロー図である。
【図８】本発明に従って、ユーザ計量がユーザの既定計量範囲の外であるか否かを判定する例示的な方法を示すデータフロー図である。
【図９】本発明による例示的なデバイス管理方法を示すデータフロー図である。
【図１０】本発明に従って関連計量を生成する例示的な方法を示すデータフロー図である。
【図１１】本発明による関連計量を生成する例示的な方法を示すデータフロー図である。
【図１２】本発明に従って、ユーザ計量ベクトルを生成する例示的な方法および計量空間を生成する例示的な方法を示すデータフロー図である。
【図１３】本発明に従って、ユーザ計量ベクトルがユーザ計量空間の外にあるか否かを判定する例示的な方法を示すデータフロー図である。
【図１４】本発明に従って動的アクションリストを生成する例示的な方法を示すデータフロー図である。
【図１５】本発明に従ってアクションを識別する例示的な方法を示すデータフロー図である。
【図１】
2006039750.tif 000025
【図２】
2006039750.tif 000026
【図３】
2006039750.tif 000027
【図４】
2006039750.tif 000028
【図５】
2006039750.tif 000029
【図６】
2006039750.tif 000030
【図７】
2006039750.tif 000031
【図８】
2006039750.tif 000032
【図９】
2006039750.tif 000033
【図１０】
2006039750.tif 000034
【図１１】
2006039750.tif 000035
【図１２】
2006039750.tif 000036
【図１３】
2006039750.tif 000037
【図１４】
2006039750.tif 000038
【図１５】
2006039750.tif 000039