デバイスを管理する方法、システム、およびプログラム
【課題】ユーザの介入を必要とせずにユーザの状況に応じてデバイスを管理する方法、システム、およびプログラムを提供すること。
【解決手段】 本発明の例示的な実施形態は、デバイスを管理するための手段を含む。かかる例示的な方法は、複数のユーザ計量を受信するステップと、複数のユーザ計量に応じて関連計量を生成するステップと、少なくとも1つのユーザ計量および少なくとも1つの関連計量を有するユーザ計量ベクトルを生成するステップと、複数の計量範囲を有するユーザ計量空間を生成するステップと、ユーザ計量ベクトルがユーザ計量空間の外にあるか否かを判定するステップとを含む。ユーザ計量ベクトルがユーザ計量空間の外にある場合、例示的な実施形態は、アクションを識別するステップと、アクションを実行するステップとを含む。
【解決手段】 本発明の例示的な実施形態は、デバイスを管理するための手段を含む。かかる例示的な方法は、複数のユーザ計量を受信するステップと、複数のユーザ計量に応じて関連計量を生成するステップと、少なくとも1つのユーザ計量および少なくとも1つの関連計量を有するユーザ計量ベクトルを生成するステップと、複数の計量範囲を有するユーザ計量空間を生成するステップと、ユーザ計量ベクトルがユーザ計量空間の外にあるか否かを判定するステップとを含む。ユーザ計量ベクトルがユーザ計量空間の外にある場合、例示的な実施形態は、アクションを識別するステップと、アクションを実行するステップとを含む。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の範囲は、データ処理であり、更に具体的には、デバイスを管理するための方法、システム、およびプログラムである。
【背景技術】
【0002】
従来のネットワークは、様々なデバイスを含む。ユーザは、多くの場合、様々なデバイスを用いたり、またはユーザの現在の状況に応じてデバイスの具体的な設定を調整したりする。すなわち、多くの場合、ユーザの現在の状況が動機となって、ユーザは、現在の状況にもっと積極的に役立つ方法でデバイスが動作するようにデバイスの設定を変更する。例えば、頭痛のするユーザは、強い光によって不快感を覚えることがある。ユーザは、光を弱めるか、または消灯して、光によって悩まされないようにすることができる。しかしながら、従来のネットワーク接続デバイスでは、ユーザの状況に応答して特定のデバイスを個別に管理するために、ユーザが介入する必要がある。
【発明の開示】
【発明が解決しようとする課題】
【0003】
ユーザの介入を必要とせずにユーザの状況に応じてデバイスを管理する方法があれば、好都合であろう。
【課題を解決するための手段】
【0004】
本発明の例示的な実施形態は、デバイスの管理方法を含む。かかる例示的な方法は、複数のユーザ計量(metrics)を受信するステップと、複数のユーザ計量を基に関連計量(a relational metric)を生成するステップと、少なくとも1つのユーザ計量および少なくとも1つの関連計量を有するユーザ計量ベクトルを生成するステップと、複数の計量範囲を有するユーザ計量空間を生成するステップと、ユーザ計量ベクトルがユーザ計量空間の外にあるか否かを判定するステップと、を含む。ユーザ計量ベクトルがユーザ計量空間の外にある場合、例示的な実施形態は、アクションを識別するステップと、アクションを実行するステップと、を含む。
【0005】
多くの例示的な実施形態では、複数のユーザ計量を基に関連計量を生成するステップは、ユーザ計量をフィルタリングするステップを含む。いくつかの例示的な実施形態では、複数のユーザ計量を基に関連計量を生成するステップは、第1のフィルタリングしたユーザ計量と第2のフィルタリングしたユーザ計量との間の関係を判定するステップを含む。いくつかの実施形態では、第1のフィルタリングしたユーザ計量と第2のフィルタリングしたユーザ計量との間の関係を判定するステップは、第1のフィルタリングしたユーザ計量を第2のフィルタリングしたユーザ計量と比較するステップを含む。多くの例示的な実施形態では、複数のユーザ計量に応じて関連計量を生成するステップは、第1のフィルタリングしたユーザ計量と第2のフィルタリングしたユーザ計量との間の関係の大きさを判定するステップを含む。
【0006】
いくつかの例示的な実施形態では、複数のユーザ計量を基に関連計量を生成するステップは、複数のユーザ計量が既定の計量パターンに一致するか否かを判定するステップを含む。かかる実施形態の多くは、複数のユーザ計量が既定の計量パターンに一致する場合、関連計量を検索するステップを含む。いくつかの例示的な実施形態では、少なくとも1つのユーザ計量および少なくとも1つの関連計量を含むユーザ計量ベクトルを生成するステップは、少なくとも1つのユーザ計量をユーザ計量ベクトルに関連付けるステップ、および、少なくとも1つの関連計量をユーザ計量ベクトルに関連付けるステップを含む。
【0007】
いくつかの例示的な実施形態では、アクションを識別するステップは、ユーザの位置を判定するステップと、ユーザの位置を基にアクションIDを選択するステップと、
を含む。多くのかかる実施形態では、アクションを識別するステップは、ユーザの移動を判定するステップと、ユーザの移動を基にアクションIDを選択するステップと、を含む。
【0008】
本発明の前述および他の目的、特徴、および利点は、添付図面に例示するような本発明の例示的な実施形態の以下の具体的な説明から明らかであろう。図面において、同様の参照番号は、概ね、本発明の例示的な実施形態の同様の部分を表す。
【発明を実施するための最良の形態】
【0009】
序論
本発明について、デバイスの管理方法の点から、本明細書において詳細に述べる。しかしながら、開示する方法に従って動作する適切なプログラミング手段を含むいかなるコンピュータシステムも、本発明の範囲内に該当することは、当業者には認められよう。
【0010】
適切なプログラム手段は、コンピュータシステムに本発明の方法のステップの実行を指示するためのいずれかの手段を含む。これは、例えば、コンピュータメモリに結合された処理ユニットおよび演算論理回路から成るシステムであって、コンピュータメモリに格納する機能を有するものであり、このコンピュータメモリは、データおよびプログラム命令、処理ユニットによって実行される本発明の方法のプログラムステップを格納するように構成された電子回路を含む。また、本発明は、いずれかの適切なデータ処理システムと共に用いるため、ディスケットまたは他の記録媒体等のコンピュータプログラムプロダクトにおいて具現化することができる。
【0011】
コンピュータプログラムプロダクトの実施形態は、磁気媒体、光媒体、または他の適切な媒体を含む、機械読み取り可能情報のためのいずれかの記録媒体を用いることによって実施することができる。適切なプログラミング手段を有するあらゆるコンピュータシステムが、プログラムプロダクトに具現化される本発明の方法のステップを実行可能であることは、当業者にはすぐに認められよう。本明細書において記載する例示的な実施形態のほとんどは、コンピュータハードウエアにインストールされて実行されるソフトウエアを指向するが、ファームウエアまたはハードウエアとして実施される代替的な実施形態が本発明の範囲内であることは、当業者にはすぐに認められよう。
【0012】
定義
「802.11」は、ワイヤレスLAN技術のための、IEEEが開発した仕様ファミリを指す。802.11は、ワイヤレスクライアントと基地局との間、または2つのワイヤレスクライアント間の、無線インタフェースを規定する。
【0013】
「API」は、「アプリケーションプログラミングインタフェース」の略語である。APIは、ソフトウエアアプリケーションを構築するための、ルーチン、プロトコル、およびツールの集合である。
【0014】
「Bluetooth」は、LANまたは他のネットワーク上での、クライアントデバイス間、またはクライアントデバイスとリソースとの間のRF結合のための短距離無線技術の業界仕様を指す。Bluetooth Special Interest Groupと呼ばれる運営団体が、Bluetoothに準拠するデバイスを試験し認定する。Bluetooth仕様は、設計仕様を提供する「FoundationCore」、および、相互運用性のガイドラインを提供する「FoundationProfile」から成る。
【0015】
「データ通信のための結合」は、ワイヤレス、802.11b、Bluetooth、赤外線、無線、インターネットプロトコル、HTTPプロトコル、eメールプロトコル、ネットワーク接続、直接接続、専用電話線、ダイヤルアップ、RS−232(EIA232)またはユニバーサルシリアルバスによるシリアル接続、配線によるパラレルポート接続、電力線プロトコルに従ったネットワーク接続、および、当業者に想起されるデータ通信のための他の形態の接続等、いずれかの形態のデータ接続を意味する。データ通信のための結合は、データ通信のためのネットワーク接続による結合を含む。本発明の様々な実施形態において有用なネットワークの例は、ケーブルネットワーク、イントラネット、エクストラネット、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、および、当業者に想起される他のネットワーク構成を含む。テレビチャネル、ケーブルチャネル、ビデオ提供業者、電気通信ソース等の間のあらゆるネットワーク接続による結合の使用は、本発明の範囲内である。
【0016】
「ドライバ」は、デバイスを制御するプログラムを意味する。デバイス(プリンタ、ディスクドライブ、キーボード)は、通常ドライバを有する。ドライバは、デバイスと、このデバイスを用いるソフトウエアプログラムとの間の翻訳機として機能する。各デバイスは、そのドライバが知っている専用のコマンド集合を有する。ソフトウエアプログラムは、一般に、汎用コマンドを用いることによってデバイスにアクセスする。従って、ドライバは、プログラムから汎用コマンドを受け、次いで、それらをデバイスのための専用コマンドに翻訳する。
【0017】
「ESN」は、「エレクトロニックシリアルナンバー」の略語である。ESNは、例えばコーヒーポット等のデバイス内にプログラムされて、そのデバイスを一意に識別する通し番号である。
【0018】
「フィールド」。本明細書において、「フィールド」および「データ要素」という語は、文脈によって他の意味を示さない限り、一般に同意語として用いられ、デジタルデータの個々の要素を指す。データ要素の集合を、「レコード」または「データ構造」と称する。レコードの集合を、「テーブル」または「ファイル」と称する。ファイルまたはテーブルの集合を、「データベース」と称する。データ要素に加えて、メンバメソッド(member method)、関数、またはソフトウエアルーチンを含む複合データ構造は、「クラス」と称する。クラスのインスタンスを、「オブジェクト」または「クラスオブジェクト」と称する。
【0019】
「HAVi」は、「Home AudioVideo Interoperability」を表し、特に家庭用娯楽環境のためのベンダー中立のオーディオ−ビデオ規格の名前である。HAViによって、異なる家庭用娯楽および通信デバイス(VCR、テレビ、ステレオ、セキュリティシステム、ビデオモニタ等)を、ネットワーク接続し、サービスゲートウエイ、PC、テレビ等の1つの主デバイスから制御することができる。IEEE1394すなわち「Firewire」仕様を相互接続媒体として用いて、HAViにより、異なるベンダーからの製品が、規定された接続および通信プロトコルならびにAPIに基づいて、互いに適合することができる。HAViの分散アプリケーションシステムが提供するサービスには、アドレシング方式およびメッセージ転送、リソース発見のためのルックアップ、ローカルまたは遠隔イベントの通知および受信、ならびに等時性データストリームのストリーミングおよび制御が含まれる。
【0020】
「HomePlug」は、HomePlug Powerline Allianceを表す。HomePlugは、高速家庭用電力線ネットワーク接続製品およびサービスのオープン仕様作成のためのフォーラムを提供するために形成された非営利目的の団体である。HomePlug仕様は、電力線ネットワーク接続規格を用いて、家庭用電力口を介して家庭にインターネット通信およびマルチメディアを配信するために設計されている。
【0021】
HomePlugプロトコルによって、HomePlug対応デバイスは、無線周波数信号(RF)を用いて電力線を介して通信を行うことができる。HomePlugプロトコルは、直交周波数分割多重(OFDM:Orthogonal FrequencyDivision Multiplexing)を用いて、RF信号を多数のもっと小さいサブ信号に分割し、これらを、電力線を介して異なる周波数で、1つのHomePlug対応デバイスから他のHomePlug対応デバイスに送信する。
【0022】
「HTTP」は、「Hyper TextTransport Protocol」を表し、ワールドワイドウエブのための標準的なデータ通信プロトコルである。
【0023】
「ID」は、「アイデンティフィケーション(識別子)」の略語であり、本明細書中では、慣例的にデータ要素中に表される名詞と共に用いられる。このため、「user ID」はユーザの識別子を指し、「userID」は、ユーザ識別子が格納されているデータ要素の名前である。「ID」の使用の更に別の例では、「metric ID」は計量の識別子であり、「metricID」は、計量の識別子が格納されているデータ要素の名前である。
【0024】
「IEEE1394」は、400Mbps(毎秒4億ビット)までのデータ転送レートをサポートする外部バス規格である。最初にIEEE1394を開発したApple社は、商標名「FireWire」を用いる。他の会社は、i. linkおよびLynx等の他の名前を用いて自社の1394製品を表す。
【0025】
単一の1394ポートを用いて、63までの外部デバイスを接続することができる。高速であることに加えて、1394は、等時性データ転送をサポートする。つまり、保証された速度でデータを送信する。これは、ビデオ等、リアルタイムで高レベルのデータを転送する必要のあるデバイスにとって理想的である。
【0026】
「Internet(インターネット)」は、多数のコンピュータを接続するグローバルネットワークであり、ネットワーク接続プロトコルスタックのネットワーク層として、「インターネットプロトコル」すなわち「IP」を用いる。インターネットは、設計上、分散型である。インターネット上の各コンピュータは独立している。インターネット上の各コンピュータのオペレータは、どのインターネットサービスを用いるか、どのローカルサービスをグローバルインターネットコミュニティに利用可能とするかを選択することができる。インターネットにアクセスするためには、様々な方法がある。America Online等の多くのオンラインサービスが、いくつかのインターネットサービスに対するアクセスを提供する。また、商用インターネットサービスプロバイダ(ISP)によってもアクセスすることができる。「internet(インターネット)」(大文字で始まらない)は、ネットワークプロトコルスタックのネットワーク層としてIPを用いるいずれかのネットワークである。
【0027】
「JAR」は、「Java(登録商標)アーカイブ」の略語である。JARは、Javaアプリケーションが用いるコンポーネントをバンドルするために用いられるファイルフォーマットである。JARファイルは、アプレットのダウンロードを簡略化する。なぜなら、多くのコンポーネント(.classファイル、画像、サウンド等)は、単一のファイルにパッケージ化することができるからである。また、JARはデータ圧縮をサポートし、これによって更にダウンロード時間が短縮する。慣例的に、JARファイルは、「.jar」拡張子で終了する。
【0028】
「JES」は、Java EmbeddedServer(Java埋め込みサーバ)の略語である。JESは、OSGiを商用に実施したものであり、埋め込みデバイスに対するアプリケーションおよびサービスの開発、展開、およびインストールのためのフレームワークを提供する。
【0029】
「LAN」は、「ローカルエリアネットワーク」の略語である。LANは、比較的小さい領域に及ぶコンピュータネットワークである。多くのLANは、単一の建物または建物群に限定されている。しかしながら、1つのLANは、電話線または無線電波によって、いかなる距離を介しても、他のLANに接続することができる。このように接続されたLANのシステムは、ワイドエリアネットワーク(WAN)と呼ばれる。インターネットは、WANの1例である。
【0030】
「Lon Works」は、Echelon(登録商標)から入手可能なネットワーク接続プラットフォームである。Lon Worksは、現在、家電制御および照明制御等の様々なネットワークアプリケーションで用いられている。Lon Worksネットワーク接続プラットフォームは、「LonTalk」と呼ばれるプロトコルを用い、これは、Lon Works対応デバイス内にインストールされた「ニューロンチップ(Neuron Chip)」内に埋め込まれている。
【0031】
ニューロンチップは、多数のプロセッサ、読み取り−書き込みおよび読み取り専用メモリ(RAMおよびROM)、ならびに通信およびI/Oサブシステムを有するチップ上システムである。読み取り専用メモリは、オペレーティングシステム、LonTalkプロトコル、およびI/O機能ライブラリを含む。チップは、構成データおよびアプリケーションプログラムのための不揮発性メモリを有し、これは、Lon Worksネットワークを介してデバイスにダウンロードすることができる。ニューロンチップは、標準的なOSIネットワークモデルの最初の6層を提供する。すなわち、ニューロンチップは、物理層、データリンク層、ネットワーク層、トランスポート層、セッション層、およびプレゼンテーション層を提供する。
【0032】
ニューロンチップは、アプリケーション層のプログラミングを提供しない。Lon Worksネットワークのためのアプリケーションは、「Neuron C」と呼ばれるプログラミング言語で書かれる。Neuron Cで書かれたアプリケーションは、通常、イベント駆動であり、従ってネットワーク上のトラヒックが減少することになる。
【0033】
「OSGI」は、Open ServicesGateway Initiativeを示し、これはサービスゲートウエイのための仕様を開発する業界団体であり、サービスバンドルの送出、コンプライアントなデータ通信を提供するソフトウエアミドルウエア、およびサービスゲートウエイを介したサービスのための仕様に携わる。Open Services Gateway仕様は、Javaベースのアプリケーション層フレームワークであり、サービスプロバイダ、ネットワークオペレータ、デバイス製造業者、および家電製造業者に、ベンダー中立のアプリケーションおよびデバイス層のAPIおよび機能を与える。
【0034】
「OSI Model」すなわちOpenSystem Interconnectionモデルは、7層のプロトコルを実施するためのネットワーク接続フレームワークを規定する。制御は、1つの層から次の層に渡される。1つのネットワーク局においてアプリケーション層から開始し、最下層まで進み、チャネルを介して次のネットワーク局に進み、階層を逆行する。
【0035】
OSIモデルの第7の層は、アプリケーション層である。アプリケーション層は、アプリケーションおよびエンドユーザプロセスをサポートする。アプリケーション層は、ファイル転送、eメール、および他のネットワークソフトウエアサービスのためのアプリケーションサービスを提供する。
【0036】
OSIモデルの第6の層は、プレゼンテーション層である。プレゼンテーション層は、データ提示における相違からの独立を提供する。プレゼンテーション層は、アプリケーションデータフォーマットからネットワークデータフォーマットに、およびその逆への変換を行う。プレゼンテーション層は、時に、「シンタクス層」と呼ばれる。
【0037】
OSIモデルの第5の層は、セッション層である。セッション層は、ネットワーク接続アプリケーション間の接続を確立し、管理し、終了させる。セッション層は、ネットワーク接続アプリケーション間の会話、交換、および対話をセットアップし、調整し、終了させる。
【0038】
OSIモデルの第4の層は、トランスポート層である。トランスポート層は、ネットワーク接続システムまたはホスト間のトランスペアレントな転送を提供する。また、トランスポート層は、フロー制御を担い、完全なデータ転送を保証する。
【0039】
OSIモデルの第3の層は、ネットワーク層である。ネットワーク層は、1つのネットワークノードから別のネットワークノードにデータを送信するため、仮想回路として知られる論理経路を生成する。ルーティング、転送、アドレッシング、およびパケット順序付けが、ネットワーク層の機能である。
【0040】
OSIモデルの第2の層は、データリンク層である。データリンク層は、データパケットをビットに復号し、ビットをデータパケットに符号化する。データリンク層は、送信プロトコルを提供し、物理層におけるデータフロー送信を管理する。
【0041】
データリンク層は、2つのサブ層に分けられる。データリンク層の第1のサブ層は、メディアアクセス制御(MAC:Media Access Control)層である。MACサブ層は、ネットワーク上のコンピュータがデータを送信するためのアクセスおよび許可を制御する。データリンク層の第2のサブ層は、論理リンク制御(LLC:Logical Link Control)層である。LLC層は、物理層におけるデータフロー送信を制御する。
【0042】
OSIモデルの第1の層は、物理層である。物理層は、電気および機械レベルで物理ネットワークを介したビットストリームを送信する(電気インパルス、光または無線信号)。物理層は、データを送受信するためのハードウエアを提供する。
【0043】
「SMF」は、IBM(登録商標)社から入手可能な「Service Management FrameworkTM」を表す。SMFは、サービスゲートウエイ上でネットワーク送信されたアプリケーションを管理するため、OSGiを商用に実施したものである。
【0044】
「USB」は、「ユニバーサルシリアルバス」の略語である。USBは、12Mbpsのデータ転送レートをサポートする外部バス規格である。単一のUSBポートを用いて、マウス、モデム、およびキーボード等の127までの周辺デバイスを接続することができる。また、USBは、プラグアンドプレイのインストールおよびホットプラギング(hot plugging)もサポートする。
【0045】
「WAP」は、ワイヤレスアプリケーションプロトコルを示し、ハンドヘルドワイヤレスデバイスと共に用いるためのプロトコルである。WAPと共に役立つワイヤレスデバイスの例には、携帯電話、ポケットベル、2方向ラジオ、およびハンドヘルドコンピュータが含まれる。WAPは多くのワイヤレスネットワークをサポートし、WAPは多くのオペレーティングシステムによってサポートされる。ハンドヘルドデバイスのために特に設計されたオペレーティングシステムには、PalmOS、EPOC、Windows(登録商標)CE、FLEXOS、OS/9、およびJavaOSが含まれる。ディスプレイを用い、インターネットにアクセスするWAPデバイスは、「マイクロブラウザ(microbrowser)」を実行する。マイクロブラウザは、小さいファイルサイズを用い、これによって、ハンドヘルドデバイスの小さいメモリという制約およびワイヤレスネットワークの低帯域幅という制約に対応することができる。
【0046】
「X−10」は、X−10プロトコルを意味する。典型的なX−10対応デバイスは、X−10送信器およびX−10受信器を用いて、家庭における既存のAC配線等のAC電力配線を介して通信を行う。X−10送信器およびX−10受信器は、無線周波数(RF)信号を用いてデジタル情報を交換する。X−10送信器およびX−10受信器は、デジタル情報を表す短いRFバーストによって通信する。2進数の1は、1ミリ秒の120KHzのバーストによって表され、2進数の0は、120KHzバーストの不在の後にバーストが現れることによって表される。
【0047】
X−10プロトコルでは、データは、フレームと呼ばれるデータストリングの単位で送信される。フレームは、「1110」と指定される4ビットの開始コードで始まる。開始コードの後、フレームは、4ビットの「家コード」によって家等の特定のドメインを識別し、4ビットの「デバイスコード」によってそのドメイン内のデバイスを識別する。また、フレームは、「オン」、「オフ」、「暗い」、「明るい」、「ステータスオン」、「ステータスオフ」、および「ステータス要求」等、特定の予め設定されたコマンドを識別する8ビットのコマンドストリングを含む。
【0048】
例示的なアーキテクチャ
図1は、本発明の実施形態による、デバイスの管理方法を実施する際に有用な例示的なアーキテクチャのブロック図である。図1のアーキテクチャは、ドメイン(118)を含む。本明細書中で、「ドメイン」という語は、特定のネットワーク接続環境を意味する。様々なドメインの例には、家庭のネットワーク、自動車のネットワーク、会社のネットワーク、および当業者によって想起される他のものが含まれる。
【0049】
図1のドメイン(118)は、サービスゲートウエイ(106)を含む。サービスゲートウエイ(106)は、いくつかの例示的なアーキテクチャでは、OSGi準拠サービスゲートウエイ(106)である。本明細書では、デバイスの管理方法の例示的な実施形態は、OSGiを用いて説明するが、多くの他のアプリケーションおよびフレームワークも、本発明によるデバイスの管理方法を実施するように機能し、従って本発明の範囲内にある。また、JESおよびSMF等、OSGiを商用に実施したものも、デバイスの管理方法を実施する際に有用である。
【0050】
図1の例示的なアーキテクチャでは、サービスゲートウエイ(106)は、サービスフレームワーク(126)を含む。図1のサービスフレームワーク(126)は、「サービス」を実行するためのホストプラットフォームである。サービスは、OSGiにおいてアプリケーションを生成するための主構築ブロックである。OSGiサービスフレームワーク(126)は、Javaで書かれ、従って通常、Javaバーチャルマシン(JVM:Java Virtual Machine)(150)上で実行する。
【0051】
図1の例示的なアーキテクチャは、DML(108)を含む。「DML」(108)は、ドメインメディエーション層(Domain Mediation Layer)の略語である。図1のアーキテクチャの多くの実施形態では、DML(108)は、本発明によるデバイスの管理方法を実施する際に有用なアプリケーションソフトウエアである。本発明のいくつかの実施形態では、DMLは、OSGi準拠アプリケーションソフトウエアであり、従って、サービスフレームワーク(126)上にインストールされたサービスまたはバンドルとしてパッケージ化されたサービス群として実施される。本明細書では、多くの場合、DMLについて、OSGiの文脈で考察する。しかしながら、OSGiの考察は説明のためであり、限定のためではない。実際、本発明の様々な実施形態によるDMLは、C、C++、COBOL、FORTRAN、BASIC等、当業者によって実施されるいずれかのプログラミング言語において実施可能であり、Java以外の言語で開発されたDMLは、JVMでなくオペレーティングシステムまたはオペレーティング環境上に直接インストールされる。
【0052】
図1の例示的なアーキテクチャにおいて、サービスゲートウエイ(106)は、データ通信のために計量センサ(406)と結合されている。計量センサ(406)は、ユーザの状況の指示を読み、ユーザの状況の指示に応答してユーザ計量を生成するデバイスである。「ユーザの状況の指示」は、ユーザの状況の定量化可能な特徴であり、この特徴を測定した量である。1例として、ユーザの状況の定量化可能な特徴は、華氏99.2度の体温である。ユーザの状況の定量化可能な特徴の例には、体温、心拍数、血圧、位置、皮膚電気反応、および当業者に想起される他のものが含まれる。
【0053】
「ユーザ計量」は、ユーザ状況の指示を表すデータ構造である。本発明によるデバイスの管理方法の多くの例では、ユーザ計量は、userIDフィールド、metricIDフィールド、および計量値フィールドを含むデータ構造、クラス、またはオブジェクトとして実施される。典型的なuserIDフィールドは、計量によって状況の指示が表されるユーザを識別する。典型的なmetricIDフィールドは、例えば、血圧、心拍数、位置、または皮膚電気反応等、計量が表すユーザ状況の定量化可能な特徴を識別する。典型的な計量値フィールドは、このユーザ状況の特徴を測定した量を格納する。
【0054】
計量センサとして用いるために有用または容易に適合可能な着用可能かつワイヤレスの心拍モニタ、皮膚電気反応モニタ、眼球反応モニタ、および呼吸モニタは、現在、Quibit Systems, Inc.から入手可能である。Body Trends, Inc.からの心拍モニタの「Polar」シリーズ、および、Sentec Corporationからの磁気弾性胃pHセンサは、計量センサとして用いるために有用または容易に適合可能である、容易に入手可能な生物医学センサの他の例である。
【0055】
生物医学センサ等の従来のセンサが、多数のユーザを含むドメインにおいて多数の計量タイプを送信する計量センサとして有用であるためには、センサは、測定する各特徴の値だけでなく、user IDおよびmetric IDも送信すると好都合である。user IDが有用である理由は、本発明の典型的な実施形態が、多くのユーザのために同時にデバイスを管理することができるDMLを含むからである。metric IDが有用である理由は、1人だけのユーザが、同時に2つ以上の計量センサを用いたり、または、ユーザ状況の2つ以上の特徴に関するデータを監視および送信することができる計量センサを用いたりする場合があるからである。全てのワイヤレスセンサは、少なくとも、何らかのワイヤレスデータ通信プロトコルに従って計量値を送信する。いずれかの特定の「既製の」センサがuser IDまたはmetric IDを送信しない場合、かかるセンサは、単にその制御ソフトウエアをわずかに変更することによって、その送信にuser IDおよびmetric IDを含ませるように容易に適合される。
【0056】
ほとんどのDMLがmetric IDおよびuser IDをサポートすると予想されるが、本発明の範囲内のいくつかの状況では、センサがその出力の遠隔測定データにおいてmetric IDおよびuser IDを与えない場合でも、計量センサとして既製のセンサを用いることができる。ただ1人の者が、例えば心拍数等の単一の計量のみを追跡するDMLによって制御または管理されるデバイスを有するドメインに住む例を考える。ただ1人のユーザのための1つのみの計量を追跡するDMLは、計量センサから受信される遠隔測定データに計量種類のコードを必要とせずに機能することができる。これはむろん、ただ1つの種類の計量を受信するからである。この例では、厳密に言えば、Body Trendsからの「Polar」センサ等、既存のBluetooth対応心拍センサが、計量センサとして機能することができるであろう。この例は、説明のためにのみ提示する。なぜなら、実際の問題として、本発明の実施形態によるほとんどのDMLは、2人以上のユーザのために(従って遠隔測定データにuser IDを必要とする)、2つ以上の種類の計量(従って遠隔測定データにmetric IDを必要とする)を管理すると有用かつ有利であると推測されるからである。
【0057】
本発明の多くの実施形態では、計量センサは、データ通信のためにサービスゲートウエイ(106)とワイヤレスで結合すると有利である。多くの代替的な実施形態では、計量センサは、Bluetooth、802.11、HTTP、WAP、または当業者に想起される他のいずれかのプロトコル等の様々なプロトコルを用いて、ユーザ計量を、サービスゲートウエイを介してDMLに送信する。
【0058】
図1の例示的なアーキテクチャでは、ドメイン(118)は、データ通信のためにLAN(105)を介してサービスゲートウエイ(106)と結合されたデバイス(316)を含む。本発明の多くの実施形態では、ドメイン(118)は多くのデバイスを含む。例えば、家庭ドメインは、テレビ、多くの照明、冷蔵庫、冷凍庫、コーヒーポット、自動皿洗い機、乾燥機、CDプレーヤ、DVDプレーヤ、個人用ビデオレコーダ、または当業者に想起される他のいずれかのネットワーク接続可能デバイスを有する家庭ネットワークを含むことができる。説明を容易にするため、図1の例示的なアーキテクチャは、3つのデバイス(316)のみを示すが、いかなる数のデバイスの使用も本発明の範囲内である。
【0059】
デバイス(316)を管理するため、DMLは、デバイス上で属性を獲得し設定するアクセス機構メソッドを含むデバイス用デバイスクラス、および、場合によっては、デバイスと通信するのに必要なプロトコルを提供する通信クラスを有しなければならない。図1のアーキテクチャのいくつかの例では、DMLには、このDMLがサポートする多くのデバイスのためのデバイスクラスおよび通信クラスがプレインストールされている。
【0060】
DMLが特定のデバイスのためのプレインストールされたデバイスクラスおよび通信クラスを有しない場合、DMLは多くの方法でデバイスクラスおよび通信クラスを取得することができる。DMLがデバイスのためのデバイスクラスおよび通信クラスを取得する1つの方法は、デバイスクラスおよび通信クラスをデバイスから読み取ることである。このためには、デバイスクラスおよび通信クラスを格納するために充分なメモリがデバイスにインストールされている必要がある。また、DMLは、インストールされたデバイスクラスおよび通信クラスを含まないデバイスからデバイスクラスおよび通信クラスを取得することができる。DMLがデバイスクラスおよび通信クラスを取得する1つの方法は、デバイスからデバイスIDを読み取り、インターネットでデバイスクラスおよび通信クラスを検索し、それらをダウンロードすることである。DMLがデバイスクラスおよび通信クラスを取得する別の方法は、デバイスからネットワーク位置を読み取り、そのネットワーク位置からデバイスクラスおよび通信クラスをダウンロードすることである。本発明に従ってデバイスを管理するために必要なデバイスクラスおよび通信クラスを取得するための3つの方法を記載した。また、他の方法も、当業者には想起されよう。
【0061】
図1の例示的なアーキテクチャは、データ通信のためにWAN(104)を介してサービスゲートウエイ(106)に結合された非ドメインエンティティ(102)を含む。「非ドメインエンティティ」は、データ通信のためにドメインに結合されるがドメイン内にはない、いずれかのコンピューティングデバイスまたはネットワーク位置である。「非ドメインエンティティ」という語は大まかなものであり、これが図1のアーキテクチャに含まれると、本発明によるデバイスの管理方法を実施する際に有用なアーキテクチャの多くの実施形態において、所与のドメインを、データ通信のために、外側の非ドメインエンティティと結合することが認められる。
【0062】
非ドメインエンティティの1例は、ドメイン内にインストールされたデバイス(316)の製造業者のウエブサーバ(ドメインの外側)である。製造業者は、デバイスのドライバのダウンロード、デバイスの更新、またはデバイス用の他のいずれかの情報またはソフトウエアのために利用可能となるウエブサイトを運営することができる。デバイスのためのドライバ、更新、情報またはソフトウエアは、WANを通して、サービスゲートウエイを介して、デバイスにダウンロードすることができる。
【0063】
図2は、本発明によるデバイスの管理方法を実施する際に有用な例示的なサービスゲートウエイ(106)のブロック図である。図2のサービスゲートウエイ(106)は、本発明の実施形態において有用ないくつかの例示的なアーキテクチャにおいて、OSGi準拠サービスゲートウエイ(106)である。デバイスの管理方法の例示的な実施形態は、OSGiを用いて本明細書中で説明するが、OSGi以外の多くの他のアプリケーションおよびフレームワークも、本発明によるデバイスの管理方法を実施するように機能し、従って本発明の範囲内である。また、JESおよびSMF等、OSGiを商用に実施したものは、本発明の方法を実施する際に有用である。
【0064】
OSGiは、「Open ServicesGateway Initiative」を表す。OSGi仕様は、Javaベースのアプリケーション層フレームワークであり、家庭、自動車、および他の環境においてネットワークで動作する任意の通信プロトコルを用いた様々なデバイスに、ベンダー中立のアプリケーションおよびデバイス層のAPIおよび機能を提供する。OSGiは、Ethernet、Bluetooth、「Home, Audio and Video InteroperabilityStandard(HAVi)」、IEEE1394、ユニバーサルシリアルバス(USB)、WAP、X−10、Lon Works、HomePlugのような様々なネットワーク接続技術、および他の様々なネットワーク接続技術によって機能する。OSGi仕様は、www.osgi.orgでOSGiのウエブサイトから無料でダウンロードすることができる。
【0065】
図2のサービスゲートウエイ(106)は、サービスフレームワーク(126)を含む。多くの例示的な実施形態では、サービスフレームワークは、OSGiサービスフレームワーク(126)である。OSGiサービスフレームワーク(126)は、Javaで書かれ、従って、通常、Javaバーチャルマシン(JVM)上で動作する。OSGiでは、図1のサービスフレームワーク(126)は、「サービス」(124)を実行するためのホストプラットフォームである。本開示において、「サービス」または「複数のサービス」という語は、文脈にもよるが、一般にOSGi準拠のサービスを指す。
【0066】
サービス(124)は、OSGiに従ってアプリケーションを生成するための主構築ブロックである。サービス(124)は、ある機構を実現するJavaクラスおよびインタフェースのグループである。OSGi仕様は、多数の標準サービスを提供する。例えば、OSGiは、HTTPクライアントからの要求に応答可能であるウエブサーバを生成する標準的なHTTPサービスを提供する。
【0067】
また、OSGiは、デバイスアクセス仕様と呼ばれる標準サービス集合を提供する。デバイスアクセス仕様(「DAS:Device Access Specification」)は、サービスゲートウエイに接続するためのデバイスを識別し、そのデバイス用のドライバを検索し、デバイス用ドライバをインストールするためのサービスを提供する。
【0068】
OSGiにおけるサービス(124)は、実行のためにサービス(124)が必要とする他のファイル、画像、およびリソースと共に「バンドル」(121)にパッケージ化されている。バンドル(121)は、Javaアーカイブすなわち「JAR」ファイルであり、1つ以上のサービス実施(124)、アクティベータクラス(127)、およびマニフェストファイル(125)を含む。アクティベータクラス(127)は、バンドルを開始および停止するためにサービスフレームワーク(126)が用いるJavaクラスである。マニフェストファイル(125)は、バンドル(121)の内容を記述する標準テキストファイルである。
【0069】
図2の例示的なアーキテクチャは、DML(108)を含む。本発明の多くの実施形態では、DMLは、デバイスの管理方法を実行するOSGiサービスである。図2のDML(108)は、バンドル(121)内でパッケージ化され、サービスフレームワーク(126)上にインストールされる。
【0070】
また、OSGiのサービスフレームワーク(126)は、サービスレジストリ(128)を含む。サービスレジストリ(128)は、サービス登録(129)を含み、これは、フレームワーク(126)上にインストールされサービスレジストリ(128)に登録された各バンドル(121)ごとに、サービスの名前およびサービスを実施するクラスのインスタンスを含む。バンドル(121)は、このバンドル(121)に含まれておらずフレームワークサービスレジストリ(128)上に登録されているサービスを要求することができる。サービスを見つけるために、バンドル(121)は、フレームワークのサービスレジストリ(128)上でクエリを実行する。
【0071】
例示的なクラスおよびクラス協働
図3は、本発明によるデバイスの管理方法を実施する際に有用な例示的クラスを示すブロック図である。図3の例示的なクラスは、限定のためではなく、本発明の理解に役立てるために提示する。本発明によるデバイスの管理方法は、本明細書中で、Javaに関連付けて一般的に論じるが、Javaは、限定のためでなく説明のためにのみ用いる。実際、本発明によるデバイスの管理方法は、C++、Smalltalk、C、Pascal、Basic、COBOL、Fortran等を含む、当業者に想起される多くのプログラミング言語で実施可能である。
【0072】
図3のクラス図は、例示的なDMLクラス(202)を含む。図3の例示的なDMLクラス(202)のインスタンスは、本発明によるデバイスの実施に有用なステップを実行するメンバメソッドを提供する。図3の例示的なDMLクラスは、Activator.start()メソッドによって示すので、DMLは、OSGIフレームワークにおけるサービスとして開始することができる。このDMLのために1つのみのメンバメソッドを示すが、DMLは、実際、特定の実施形態に必要なもっと多くのメンバメソッドを有することが多い。また、図3のDMLクラスは、多くの場合DMLの構築者によって生成される、サービスクラスに対する参照を格納するためのメンバデータ要素を含む。この例では、DMLは、計量サービス(552)、計量範囲サービス(558)、通信サービス(554)、アクションサービス(560)、デバイスサービス(556)、計量ベクトルサービス(559)、計量空間サービス(561)、および動的アクションリストサービス(563)に対する参照のための記憶フィールドを提供する。
【0073】
図3の計量サービスクラス(204)が提供するメンバメソッドは、DMLからユーザ計量を受信し、DMLからのユーザ計量の受信に応答して、計量クラスのインスタンスを生成する。図3の計量サービスクラス(204)は、createMetric(userID, MetricID, Metric Value)メンバメソッド(562)を含む。CreateMetric()メンバメソッドは、いくつかの実施形態では、計量IDによってパラメータで表されるファクトリメソッド(factory method)であり、その計量IDに応じた計量オブジェクトを生成して戻す。DMLからユーザ計量を取得したことに応答して、図3の計量サービスクラス(204)の例示的なインスタンスは、計量クラスのインスタンスを生成し、新しい計量オブジェクトに対する参照をDMLに戻す。
【0074】
厳密に言えば、本発明の限定において、ファクトリメソッドによる計量オブジェクトの生成をDMLに要求するものはない。DMLは、例えば、以下の疑似コードセグメントにおいて例示するように進行することができる。
【数1】
【0075】
この例では、計量オブジェクトを生成し、アクセス機構メソッドを用いてそのメンバデータをロードする。この手法は、各計量ごとに全く同じ計量オブジェクトクラスを提供するが、計量によって異なる具体的クラス構造を利用することが有利な状況がある。例えば、心拍数および血圧の計量の場合、双方の計量値を整数として符号化することができ、この場合、例えば、GPS送受信器からの地表面上の極座標用の計量値を、例えばそれ自身の位置クラスも有する、より複雑なデータ構造に符号化すると有利な場合がある。ファクトリメソッドを用いると、2つ以上の計量クラスの使用が容易になる。計量オブジェクトを生成するためにファクトリメソッドを用いたDMLは、以下の例示的な疑似コードセグメントに示すように進行することができる。
【数2】
【0076】
この例は、ファクトリメソッドcreateMetric()を利用して、新しい計量オブジェクト内にパラメータ値をセットする。計量サービスおよび計量オブジェクトのためのファクトリメソッドは、以下の疑似コードセグメントに示すように実施することができる。
【数3】
【0077】
この例におけるMetricServiceは、ファクトリメソッドを含む、いわゆるパラメータ化ファクトリ設計パターンを実施する。この例では、ファクトリメソッドは、「createMetricObject()」という名前のメンバメソッドである。createMetricObject()は、3つのパラメータ、すなわちユーザID、計量ID、および計量値を受け取る。createMetricObject()は、計量IDに応じてスイッチステートメント(switch statement)を実施して、特定の具体的な計量クラスを選択しインスタンス化する。この例における具体的な計量クラスは、HeartRatemetric、BloodPressureMetric、およびGPSMetricであり、それらの各々は、Metricベースクラスを拡張する。createMetricObject()は、呼び出し側のDMLに、新しい計量オブジェクトに対する参照を戻す。DMLからの呼び出しは以下の通りであるが、
Metric aMetric=MetricService.createMetricObject(userID,metricID, metricValue)
これは多形であり、ベースクラスMetricに対する参照を利用するので、呼び出し側のDMLは、どの計量オブジェクトのクラスが実際にインスタンス化されて戻されるのかを知らないし、気にもしない。以下は、Metricベースクラスを拡張する地表面上のユーザの位置を表す具体的な計量クラスを規定するための、Metricベースクラスの拡張例である。
【数4】
【0078】
この例の具体的なクラスGPSMetricは、緯度および経度のための記憶領域を提供する。GPSMetricは、構築者にGPSMetric()を提供し、これは、userIDおよびmetricIDを設定するために整数の引数を取るが、そのmetricValue引数がGPSLocationオブジェクトに対する参照であると予想し、更にこのオブジェクトが、緯度および経度のためのメンバデータの記憶領域を提供する。
【0079】
図3のクラス図は、例示的な計量クラス(206)を含む。図3の例示的な計量クラス(206)は、ユーザ計量を表す。ユーザ計量は、ユーザ状況の指示を記述するデータを有する。ユーザの状況の指示は、ユーザ状況の定量化可能な特徴であり、この特徴を測定する量である。ユーザ状況の定量化可能な特徴の例は、体温、心拍数、血圧、位置、皮膚電気応答、および当業者に想起されるいずれかの他のユーザ状況の特徴を含む。
【0080】
図3の例示的な計量クラス(206)は、ユーザIDフィールド(486)、計量IDフィールド(488)、値フィールド(499)を含む。ユーザIDフィールド(486)は、ユーザを識別する。計量ID(488)は、計量クラスのインスタンスが表すユーザ計量を識別する。すなわち、ユーザ計量の種類である。値フィールド(490)は、ユーザ計量の値を含む。
【0081】
また、図3の例示的な計量クラスは、計量アクションリスト(622)のためのデータ記憶領域を含む。計量アクションリストは、アクションを識別するアクションIDを含むデータ構造であり、このアクションIDは、実行されると、計量が表すユーザ状況の同じ特徴に影響を与えるようにデバイスを管理する。例えば、体温の計量は、実行されると天井のファンをオンするアクションIDを含む関連計量アクションリストを有することができる。デバイスの管理方法の多くの例では、計量アクションリストにおけるアクションIDを用いて、動的アクションリストに含むためのアクションIDを識別する。
【0082】
例示的な計量クラス(206)は、様々な実施形態において汎用クラスとして使用可能なクラスの1例であり、そのインスタンスを用いて、上述のような同一または類似のメンバデータ要素を有する2つ以上の種類の計量を格納または表現することができる。代替的に、他の実施形態では、この例の計量クラス(206)のようなクラスを、ベースクラスとして用いて、具体的な導出されたクラスによって拡張することができ、その各々が、上述した広く異なるメンバデータ種類を有することができる。
【0083】
図3のクラス図は、例示的な関連計量サービスクラス(684)を含む。例示的な関連計量サービスクラスは、メンバメソッドすなわちcreateRelationalMetric()(686)を含む。多くの実施形態において、createRelationalMetric()(686)は、計量キャッシュ内のユーザ計量間の関係を決定し、計量キャッシュ内のユーザ計量間の決定した関係を表す関連計量をインスタンス化する。他の実施形態では、createRelationalMetric()は、計量キャッシュ内のユーザ計量を、既定の計量パターンを形成する既定の計量集合と比較する。計量キャッシュ内のユーザ計量が、既定の計量パターンを形成する既定の計量と一致する場合、createRelationalMetricは、既定の計量パターンが定める関係を表す予め生成された関連計量を検索する。
【0084】
図3のクラス関係図は、関連計量を含む。関連計量は、計量キャッシュ内のユーザ計量に応じて生成されるか、またはユーザ計量がキャッシュに到着することを予想して生成される計量である。すなわち、関連計量は、場合によっては、計量キャッシュ内のユーザ計量間の関係を決定した結果として生成される。他の場合、関連計量は、所定の計量の所定パターンに応じて生成される計量である。かかる所定の関連計量は、多くの場合、計量キャッシュ内のユーザ計量に応じて、関連データベースから選択される。
【0085】
図3の例示的な関連計量は、ユーザを識別するuserIDフィールドを含む。図3の関連計量は、計量IDフィールドを含む。また、関連計量は、値フィールド(490)も含む。多くの場合、値フィールドは、典型的に、関連計量が表す特定の関係の大きさを表す。いくつかの例では、関係レコードは、関連計量の異なる特徴を表す2つ以上の値フィールドを有することができる。例えば、「移動」の関連計量は、方向を示す値フィールド、および、速度を示す別の値フィールドを有することができる。
【0086】
図3のクラス図は、計量ベクトルサービス(207)を含む。図3の計量ベクトルサービスクラス(207)は、メンバメソッドを提供し、これは、計量サービスからのユーザ計量および関連計量サービスからの関連計量の受信に応答して、計量ベクトルクラスのインスタンスを生成する。多くの例示的な実施形態では、createMetric vectorObject()メンバメソッド(565)は、ユーザID、ユーザ計量の計量IDおよび関連計量に応じて、計量ベクトルリストから、ユーザ計量ベクトルのための計量ベクトルIDを識別する。計量ベクトルサービスの計量ベクトルリストに計量ベクトルが存在しない場合、計量ベクトルサービスは、1つの計量ベクトルをインスタンス化し、その計量ベクトルIDを、関連するユーザIDおよび計量IDによって示して、計量ベクトルテーブルに格納する。計量ベクトルオブジェクトの生成は、以下の疑似コードセグメントに示すように実施可能である。
【数5】
【0087】
上述の疑似コードの例では、計量ベクトルサービスが、計量ベクトルサービスの計量ベクトルテーブル内に計量ベクトルが識別されていないuserIDを有する計量または関連計量を受信すると、計量ベクトルサービスは、ユーザのために新しい計量ベクトルIDを有する新しい計量ベクトルを生成し、その計量ベクトルを計量ベクトルリストに追加する。
【0088】
図3のクラス図は、計量ベクトルクラス(606)を含む。計量ベクトルクラスのオブジェクトは、ユーザ状況の複雑な指示を表す。ユーザ計量ベクトルは、通常、ユーザ計量の集合を含み、その各々は、ユーザの状況の単一の定量化可能な特徴およびその特徴を測定する量、ならびに、計量キャッシュ内のユーザ計量からまたはそれを予想して生成した関連計量を表す。従って、複数の異なるユーザ計量から成るユーザ計量ベクトルは、ユーザ状況の多数の定量化可能な特徴およびその特徴を測定する多数の量を有するユーザ状況の複雑な指示を表す。計量ベクトルクラス(606)は、ユーザを識別するユーザID(486)を格納するためのデータ要素、および、複数の異なる計量オブジェクトに対する参照を格納するための計量リスト(652)を含む。
【0089】
また、図3の例示的な計量ベクトル(606)は、動的アクションリスト(626)のためのデータ記憶領域を含む。動的アクションリストは、アクションIDのリストであり、ユーザ計量空間の対応する計量範囲の外にあるユーザ計量ベクトルの特定の計量に関連付けた計量アクションリストに応じて生成される。すなわち、対応する計量範囲の外にある計量ベクトルの各計量は、関連する計量アクションリストを有する。動的アクションリストは、ユーザ計量空間の対応する計量範囲の外にあるユーザ計量ベクトルの特定の計量に関連する計量アクションリストに応じて識別されるアクションIDを含む。動的アクションリストは、ユーザの現在の状況に合わせたアクションIDのリストを提供すると有利である。
【0090】
また、例示的な計量ベクトルクラスのオブジェクトは、通常、計量ベクトルがユーザ計量空間の外にあるか否かを判定するメンバメソッドを含む。この例示的な計量ベクトルクラスは、様々な実施形態で汎用クラスとして使用可能なクラスの1例であり、そのインスタンスを用いて、同一または同様のメンバデータ要素を有する2つ以上の種類のベクトルを格納または表すことができる。代替的に、他の実施形態では、この例の計量ベクトルクラス等のクラスをベースクラスとして用いて、各々が異なるメンバデータ種類を有し得る具体的な導出クラスによって拡張することができる。
【0091】
図3のクラス図は、計量範囲サービスクラス(208)を含む。計量範囲サービスクラス(208)は、計量範囲クラスのインスタンスをインスタンス化するメンバメソッドを提供する。図3の計量範囲サービスクラス(208)は、createRangeObject(UserID, MetricID)メンバメソッド(572)を含む。CreateRangeObject()メンバメソッドは、userIDおよびmetric IDに応じて計量範囲オブジェクトを生成するuserIDおよびmetric IDによってパラメータで表されるファクトリ方法である。CreateRangeObject()ファクトリメソッドは、計量ベクトルに、計量範囲オブジェクトに対する参照を戻す。CreateRangeObject()は、createMetricObject()ファクトリメソッドの説明において提供した例示的な疑似コードによって概説した同じ設計パターンを用いて実施可能なパラメータ化ファクトリメソッドである。
【0092】
図3のクラス図は、例示的な計量範囲クラス(210)を含む。例示的な計量範囲クラスのインスタンスは、計量または関連計量についてユーザのために既定された計量範囲を表す。計量範囲オブジェクトにおける最大値および最小値を、計量値と比較して、計量オブジェクトの計量値が既定された計量範囲の外にあるか否かを判定する。図3の例示的な計量範囲クラス(210)は、計量範囲を識別する範囲IDフィールド(463)およびユーザ計量を識別する計量IDフィールド(462)を含む。図3の例示的な計量範囲クラス(210)は、ユーザを識別するユーザIDフィールド(464)を含む。また、計量範囲クラスは、計量範囲を規定する最大値および最小値を含むMaxフィールド(468)およびMinフィールド(470)を含む。
【0093】
図3の例示的な計量範囲クラス(210)は、いわゆるデータオブジェクト、すなわち、クラスのメンバメソッドによってほとんどまたは全く処理が行われていないデータのコンテナ(container)としてのみ機能するクラスの1例である。この例では、計量範囲クラスのオブジェクトは、主に、計量範囲の最小および最大値を他のオブジェクト間で転送するために用いられる。図3の計量範囲クラスは、デフォルトコンストラクタ(constructor)(図示せず)を含むが、厳密に言えば、他のメンバメソッドは必要としない。計量範囲クラスに、他のメンバメソッドが与えられていなければ、協働オブジェクトは、例えば「someMetricRange.max」または「someMetricRange.min」等の符号化によって直接そのメンバデータ要素にアクセスすることができるであろう。しかしながら、この場合の特定の例(210)は、その範囲の最小および最大値のためのアクセス機構メソッド(471、473)を含むものとして例示し、本発明によって必要としない実施であるが、オブジェクト指向パラダイムにおけるプログラミングと一致する。
【0094】
図3のクラス図は、計量空間サービスクラス(209)を含む。計量空間サービスクラス(209)は、メンバメソッドcreateMetricSpace()を含み、これは、計量空間リストまたは他のデータ構造を検索して、ユーザのための計量空間を識別する。かかる計量空間が存在しない場合、createMetricSpace()は1つの計量空間をインスタンス化し、計量空間リストに計量空間IDを格納する。計量空間オブジェクトの生成は、以下の例示的な疑似コードによって実施可能である。
【数6】
【0095】
上述の疑似コードの例では、計量空間サービスは、計量空間リストから計量空間を検索する。リストが、userIDおよび計量ベクトルIDのための計量空間を含まない場合、MetricSpaceService.createMetricSpace(userID, MetricVectorIC)が、新しい計量空間IDを有する新しい計量空間を生成する。
【0096】
図3のクラス図は、計量空間クラスを含む。ユーザ計量空間は、異なるユーザ計量および関連計量のための複数のユーザ計量範囲から成る。例示的な計量空間は、ユーザを識別するユーザ計量(405)および計量空間を識別する空間ID(908)を格納するためのデータ要素を含む。また、図3の計量空間(610)は、ユーザ計量および関連計量の異なる計量範囲に対する参照リストのためのデータ記憶領域(655)を含む。計量空間の異なる計量範囲は、本質的に、ユーザ計量ベクトルにおける計量に対応する。すなわち、典型的な実施形態では、ユーザ計量ベクトルは、異なる現在のユーザ計量および関連計量の集合を含み、ユーザ計量空間は、ユーザのための対応する計量範囲の集合を含む。
【0097】
図3のクラス図は、アクションサービスクラス(217)を含む。アクションサービスクラスは、メンバメソッドを含み、これらは、ユーザ計量または関連計量のための計量アクションリストをインスタンス化し、アクションオブジェクトをインスタンス化し、アクションリストのアクションオブジェクトに対する参照を格納し、呼び出し側の計量に、アクションリストに対する参照を戻す。それらの全ては、以下の例示的な疑似コードによって示すように実施可能である。
【数7】
【0098】
ActionServiceクラスにおけるcreateActionList()メソッドは、「ActionList anActionList=newActionList()」によってユーザ計量のための計量アクションリストをインスタンス化する。次いで、createActionList()は、データベースのアクションレコードテーブルから、その呼び出しパラメータに一致するユーザIDおよび計量IDを有するレコードを検索する。テーブル内の一致する各レコードごとに、createActionList()は、そのスイッチステートメントによってアクションオブジェクトをインスタンス化する。スイッチステートメントは、アクションレコードテーブルから検索した各アクションIDごとに特定の具体的な導出アクションクラスを選択する。createActionList()は、「anActionList.add()」によってアクションリストに各アクションオブジェクトに対する参照を格納する。createActionList()は、「return andActionList」によってアクションリストに対する参照を戻す。
【0099】
図3のクラス図は、例示的なアクションクラス(216)を含む。アクションクラスのインスタンスは、実行されると結果としてデバイスの管理を行うアクションを表す。図3の例示的なアクションクラスは、アクションIDフィールド(450)を含む。例示的なアクションクラス(216)のdoAction()メソッド(456)は、例えば、DeviceService.createDeviceList()に対する呼び出しから、デバイスリスト(458)を取得するようプログラムされる。また、Action.doAction()(456)は、通常、そのデバイスリストの各デバイスにおいてインタフェース方法を呼び出してデバイス制御アクションを実行するようプログラムされる。
【0100】
図3のクラス図は、動的アクションリストサービスを含む。図3の動的アクションリストサービスは、メンバメソッドcreateDynamicList()(569)を含む。多くの実施形態において、createDynamicListは、ユーザ計量ベクトル内のメンバメソッドによって呼び出され、それらの対応する計量範囲の外にある特定の計量に関連した計量アクションリストから検索したアクションIDによってパラメータで表す。createDynamicListは、計量アクションリストから検索した計量IDに応じて識別したアクションIDを含む動的アクションリストを生成し、動的アクションリストに対する参照を呼び出し側に戻す。
【0101】
図3のクラス図は、デバイスサービスクラス(218)を含む。デバイスサービスクラスは、createDeviceList(actionID)という名前のファクトリメソッドを提供し、これは、デバイスのリストを生成し、リストに対する参照を戻す。個の例では、createDeviceList()は、上述のActionService.createActionList()と同様に動作し、デバイスリストをインスタンス化し、デバイステーブルで、一致するアクションIDエントリを有するデバイスレコードからデバイスIDを検索し、各々の具体的な導出デバイスクラスのデバイスオブジェクトをインスタンス化し、デバイスリストに、新しい各デバイスオブジェクトに対する参照を追加し、呼び出し側のアクションオブジェクトに、デバイスリストに対する参照を戻す。しかしながら、この例では、ファクトリメソッドcreateDeviceList()は、そのサポートするデータテーブルからデバイスIDを検索するだけでなく、以下の例示的な疑似コードに示すように、インスタンス化した各デバイスオブジェクトによって制御される物理的デバイスのネットワークアドレスまたは通信位置を検索する。
【数8】
【0102】
DeviceServiceクラスのcreateDeviceList()メソッドは、「DeviceList aDeviceList =newDeviceList()」によって計量のためのデバイスリストをインスタンス化する。次いで、createDeviceList()は、データベース内のデバイスレコードテーブルから、その呼び出しパラメータに一致するアクションIDを有するレコードを検索する。テーブル内の一致する各レコードごとに、createDeviceList()は、そのスイッチステートメントによってデバイスオブジェクトをインスタンス化し、3つのパラメータすなわちCommsService、deviceAddress、およびdeviceIDを渡す。CommsServiceは、通信サービスに対する参照であり、ここから、デバイスオブジェクトは、デバイスオブジェクトが制御する物理的デバイスとの通信に用いる通信オブジェクトに対する参照を得ることができる。deviceAddressは、ネットワークアドレスであり、特定のデバイスオブジェクトが制御する物理的デバイスの上述のようなデバイステーブルから得られる。スイッチステートメントは、デバイステーブルから検索した各デバイスIDごとに特定の具体的な導出デバイスクラスを選択する。createDeviceList()は、「aDeviceList.add()」によってデバイスリストの各デバイスオブジェクトに対する参照を格納する。createDeviceList()は、「return aDeviceList」によって、デバイスリストに対する参照を戻す。
【0103】
図3のクラス図は、例示的なデバイスクラス(214)を含む。図3の例示的なデバイスクラス(214)は、アクションの実行によって管理される物理的デバイスを一意に識別するdeviceIDフィールド(472)を含む。図3の例示的なデバイスクラス(214)は、データ通信ネットワーク上の物理的デバイスの位置を識別するアドレスフィールド(480)を含む。図3の例示的なデバイスクラス(214)は、デバイスクラスのインスタンスと物理的デバイスとの間の通信を行うためにデータ通信プロトコルを実施する通信クラスのインスタンスに対する参照のための通信フィールド(478)を提供する。
【0104】
図3のデバイスクラスは、デバイスの現在の属性値を含む属性フィールド(481)を含む。デバイスの現在の属性の例は、デバイスが「オン」または「オフ」であることの指示である。現在の属性の他の例は、デバイスの特定の設定を示す値を含む。また、図3のデバイスクラスは、物理的デバイスの属性を取得および設定するためのアクセス機構方法(474、476)を含む。図3の例示的なデバイスクラスは、1つのみの属性フィールドと、その属性を取得および設定するためのアクセス機構方法とを含むが、本発明の方法を実施する際に有用な多くのデバイスクラスは、2つ以上の属性をサポートすることができる。また、かかるクラスは、デバイスクラスがサポートする各属性の属性IDフィールドと、その属性を取得および設定するためのアクセッサメソッドとを含むことができる。
【0105】
図3の例示的なクラス図は、通信サービスクラス(219)を含む。通信サービスクラス(219)は、デバイスクラスのインスタンスと物理的デバイスとの間の通信を実行するためのデータ通信プロトコルを実施する通信オブジェクトをインスタンス化するcreateCommsObject(deviceID, networkAddress)(574)という名前のファクトリメソッドを提供する。createCommsObject()メソッド(574)は、その呼び出しパラメータに一致するデバイスIDを有する通信クラステーブル内の通信クラスレコードで通信クラスIDを検索する。多くの実施形態では、createCommsObject()メソッド(574)は、上述のようにスイッチステートメントによって識別された特定の具体的な導出通信クラスをインスタンス化し、コンストラクタに、そのパラメータリストからnetworkAddressを渡すので、新しい通信オブジェクトは、その新しいオブジェクトがデータ通信を行うネットワーク上のアドレスを知っている。具体的な各導出通信クラスは、特定のデータ通信プロトコル、Bluetooth、802.11b、LonWorks、X−10等の特定のデータ通信プロトコルに従ってデータ通信を行うように設計されている。
【0106】
図3のクラス図は、例示的な通信ベースクラス(215)を含む。典型的な実施形態では、少なくとも1つの具体的な通信クラスを、特定のDMLがサポートする各データ通信プロトコルごとに、ベースクラスから導出する。具体的な各通信クラスは、通信デバイスオブジェクトおよび物理的デバイスのための特定のデータ通信プロトコルを実施する。具体的な各通信クラスは、インタフェースメソッド(482、484)を無効にすることによって特定のデータ通信プロトコルを実施して、プロトコルに従った実際のデータ通信を実施する。
【0107】
通信クラスによって、デバイスクラス(214)は、様々な物理的デバイスとの通信に必要な特定のプロトコルに関して独立して動作することができる。例えば、ユーザの家のある照明は、LonWorksプロトコルを用いて通信を行うことができるが、ユーザの家の別の照明は、X−10プロトコルを用いて通信を行うことができる。双方の照明は、一方がLonWorksを実施し他方がX−10を実施する異なる通信クラスの通信オブジェクトを用いて、同じデバイスクラスのデバイスオブジェクトによって制御することができる。双方のデバイスオブジェクトは、同じ通信クラスインタフェースメソッド、send()(482)およびreceive()(484)に対する呼び出しによって照明を制御し、実際にそれらの通信オブジェクトが異なるプロトコルを用いることを知らないし、気にもしない。
【0108】
図4は、図3の例示的なクラス間の例示的な関係を示すクラス関係図である。図4のクラス関係図では、実線の矢印はインスタンス化を表す。実線の矢印は、インスタンス化しているクラスからインスタンス化されているクラスを指し示す。図4のクラス関係図では、点線の矢印は参照を表す。矢印は、参照されるクラスから、この参照されるクラスに対する参照をオブジェクトが有するクラスを指し示す。すなわち、点線の矢印によって、複合のオブジェクト指向関係すなわちクラス間の「has−a」関係が示される。
【0109】
図4の例示的なクラス関係図は、DMLクラス(202)を含む。DMLクラス(202)のDMLオブジェクトは、計量サービスクラス(204)のオブジェクト、計量ベクトルサービスクラス(207)のオブジェクト、および計量空間サービスクラス(209)のオブジェクトをインスタンス化する。また、DMLオブジェクトは、計量範囲サービスクラス(208)のオブジェクト、アクションサービスクラス(217)のオブジェクト、および動的アクションリストサービスクラス(211)のオブジェクトをインスタンス化する。また、DMLオブジェクトは、デバイスサービスクラス(218)のオブジェクトおよび通信サービスクラス(219)のオブジェクトをインスタンス化する。DMLが計量センサから計量(200)を受信すると、DMLは以下のような呼び出しを用いる。
【数9】
これによって、計量サービス(204)は、計量クラス(206)のオブジェクトをインスタンス化する。計量サービスは、計量オブジェクト(206)に対する参照を、計量ベクトルサービスオブジェクト(207)に渡す。計量オブジェクトは、アクションサービスクラス(217)のオブジェクトに対する参照および計量アクションリスト(622)を含む。
【0110】
図4のクラス関係図に示すように、計量ベクトルサービス(207)は、計量ベクトルクラス(606)のオブジェクトをインスタンス化する。多くの実施形態において、計量ベクトルサービスクラスは、計量オブジェクトに対する参照を受信し、createMetricVectorObject()等のパラメータで表したファクトリメソッドを用いて、計量ベクトルオブジェクトをインスタンス化する。図4のクラス関係図に示すように、計量ベクトルクラス(606)のオブジェクトは、計量クラス(206)のオブジェクトに対する参照、計量空間サービスクラス(209)のオブジェクト、計量空間クラス(610)のオブジェクト、動的アクションリストサービスクラス(211)のオブジェクトおよび動的アクションリスト(212626)を含む。
【0111】
図4のクラス関係図に示すように、計量空間サービス(209)は、計量空間クラス(610)のオブジェクトをインスタンス化する。多くの例示的な実施形態では、計量空間サービスは、createMetricSpace()等のパラメータで表したファクトリメソッドを用いて、計量空間オブジェクトをインスタンス化する。計量空間サービスは、計量ベクトルオブジェクトに、計量空間オブジェクト(610)に対する参照を渡す。計量空間オブジェクト(610)は、計量範囲クラス(210)のオブジェクトに対する参照を含む。図4のクラス関係図に示すように、計量範囲サービス(208)は、計量範囲クラス(210)のオブジェクトをインスタンス化する。本発明の多くの例示的な実施形態では、計量範囲サービス(208)は、createRangeObject()等のパラメータで表したファクトリメソッドを用いて、計量範囲(210)をインスタンス化する。計量範囲サービス(208)は、計量範囲(210)に対する参照を、計量空間サービス(209)に渡す。
【0112】
図4のクラス関係図に示すように、アクションサービス(217)は、計量アクションリスト(622)およびアクションクラス(216)のオブジェクトをインスタンス化する。計量アクションリスト(622)は、インスタンス化したアクション(216)の各々に対する参照によってインスタンス化される。各アクション(216)は、デバイスサービス(218)に対する参照によってインスタンス化される。本発明による方法の典型的な例では、アクションサービス(217)は、createActionList()等のパラメータによって表したファクトリメソッドを用いて、計量アクションリスト(622)をインスタンス化し、アクション(216)をインスタンス化する。アクションサービス(217)は、計量アクションリスト(622)に対する参照を、計量(206)に渡す。
【0113】
図4に示すように、動的アクションリストサービス(211)は、動的アクションリスト(626)をインスタンス化し、動的アクションリスト(626)に対する参照を、計量ベクトル(606)の呼び出しメソッドに渡す。本発明による方法の典型的な例では、動的アクションリストサービス(211)は、createDynamicActionList()等のメソッドを用いて、動的アクションリストをインスタンス化する。多くの実施形態では、createDynamicActionList()は、それらの対応する計量範囲の外にあるユーザ計量に関連した計量アクションリストのアクションIDによってパラメータで表される。動的アクションリスト(626)は、アクションクラス(216)のオブジェクトに対する参照を有する。
【0114】
図4の例では、デバイスサービス(218)は、デバイスリストクラス(222)のデバイスリストをインスタンス化し、デバイスクラス(214)のデバイスオブジェクトをインスタンス化する。デバイスリスト(222)は、デバイスオブジェクト(214)に対する参照によってインスタンス化される。デバイスオブジェクト(214)は、通信サービス(219)に対する参照によってインスタンス化される。本発明による方法の典型的な例では、デバイスサービス(218)は、createDeviceList()等のパラメータで表したファクトリメソッドを用いて、デバイスリスト(222)をインスタンス化し、デバイスオブジェクト(216)をインスタンス化する。デバイスサービス(218)は、デバイスリスト(222)に対する参照を、アクション(216)に渡す。
【0115】
図4の例では、通信サービス(219)は、通信クラス(215)の通信オブジェクトをインスタンス化する。本発明による方法の典型的な例では、通信サービス(219)は、createCommsObject()等のパラメータで表したファクトリメソッドを用いて、通信オブジェクト(215)をインスタンス化する。通信サービス(219)は、通信オブジェクト(215)に対する参照を、デバイスオブジェクト(214)に渡す。
【0116】
図5は、図3のクラスのいくつかの間の例示的な関係を示すクラス関係図である。図5の例では、DMLクラス(202)のオブジェクトは、関連計量サービスクラス(684)のオブジェクトをインスタンス化する。関連計量サービスクラスは、計量キャッシュで利用可能なユーザ計量(206)に対する参照を有する。
【0117】
関連計量サービスクラス(684)は、計量キャッシュ内のユーザ計量に応じて関連計量クラス(664)のオブジェクトをインスタンス化するか、または、計量キャッシュ内のユーザ計量に応じて予め生成した関連計量を選択する。関連計量は、計量アクションリスト(622)に対する参照を有する。計量ベクトルは、関連計量サービスから、関連計量(664)に対する参照を受け取る。
【0118】
ユーザ計量に応じたデバイス管理
図6は、例示的なデバイス管理方法を示すデータフロー図である。図6の方法は、ユーザ計量(206)の受け取り(302)を含む。上述のように、「ユーザ計量」は、ユーザ状況の指示を記述するデータから成る。「ユーザ状況の指示」は、ユーザ状況の定量化可能な特徴であり、その特徴を測定する量である。ユーザの状況の定量化可能な特徴の例は、体温、心拍数、血圧、位置、皮膚電気反応、および当業者に想起される他の特徴を含む。
【0119】
本発明の典型的な実施形態において、ユーザ計量は、図6の例示的なユーザ計量(206)等、ユーザ計量データ構造またはレコード(206)として実施される。図6のユーザ計量は、計量によって状況の指示が表されるユーザを識別するuserIDフィールド(405)を含む。また、図6のユーザ計量(206)は、例えば、血圧、心拍数、位置、皮膚電気反応等の計量が表すユーザ状況の特徴を識別する計量IDフィールド(407)を含む。また、ユーザ計量(204)は、計量が表すユーザ状況の特徴の値を含む値フィールド(409)を含む。計量の値の例は、華氏100度の体温である。
【0120】
図6の方法の多くの実施形態では、ユーザの計量の受け取り(302)は、計量センサ(406)からユーザ計量を受け取ることを含む。図6の方法のいくつかの例では、計量センサ(406)は、ユーザ状況の指示を読み取り、ユーザ状況の指示に応じてユーザ計量を生成し、ユーザ計量をDMLに送信する。多くの実施形態では、計量センサは、例えば、Bluetooth、802.11、HTTP、WAP等のプロトコル、または当業者に想起される他のいずれかのプロトコルを用いて、図6の計量(206)等の既定のデータ構造で、ユーザ計量をDMLに送信する。
【0121】
図6の方法では、ユーザ計量の受け取り(302)は、ユーザ計量を計量キャッシュメモリ(305)内に受け取ることを含む。すなわち、ユーザ計量は、DMLによって受信され、次いでキャッシュに格納される。図6の方法の多くの実施形態では、計量キャッシュメモリ(305)は、DMLに利用可能なキャッシュメモリであり、本発明によるデバイス管理のステップの実行を容易にする。
【0122】
図6の方法は、ユーザ計量の値が規定の計量範囲の外である(309)か否かの判定(306)を含む。規定の計量範囲は、特定ユーザの所与の計量IDについて所定範囲の値を含む。図6の方法の多くの実施形態では、既定の計量範囲は、ユーザのための典型的または通常の計量値範囲として設計される。既定の計量範囲の1例は、毎分65から85の休息時の心拍数を表す計量値範囲である。
【0123】
図6の方法の多くの例では、ユーザの既定計量範囲は、図6の計量範囲(210)等のデータ構造またはレコードとして実施される。図6の計量範囲は、ユーザ計量の種類を識別する計量IDフィールド(462)を含む。図6の計量範囲は、計量範囲が計量値範囲を表すユーザを識別するユーザIDフィールド(464)を含む。図6の計量範囲は、例えば、計量範囲の最大計量値を表すMaxフィールド(468)および、計量範囲の最小計量値を表すMinフィールド(470)を含む。すなわち、典型的な実施形態では、計量値範囲を規定するのは、範囲の最大および最小の計量値である。
【0124】
多くの実施形態では、ユーザ計量(206)の値が既定計量範囲の外である(309)か否かの判定(306)は、ユーザ計量の計量値を、その計量の同じユーザの計量範囲の最大および最小値と比較することを含む。図6の方法の多くの例では、ユーザ計量が既定計量範囲の外であるという判定は、ユーザ計量(206)の計量値(409)が、計量範囲(210)の最大値(468)よりも大きいこと、または計量範囲(210)の最小値(470)よりも小さいことの判定を含む。例えば、「心拍数」として計量を識別する計量IDのユーザ計量は、毎分100回の心拍数という計量値を有する場合、毎分65から85回という休息時心拍数の例示的な計量範囲の外である。
【0125】
ユーザ計量の値が計量範囲外である場合、図6の方法は、ユーザ計量に応じるアクションの識別(310)を含む。アクションは、実行されると1つ以上のデバイスを制御する1つ以上のコンピュータプログラム、サブルーチン、またはメンバメソッドを含む。アクションは通常、オブジェクト指向クラスとして実施され、オブジェクトまたはオブジェクトに対する参照として操作される。実際、本明細書中では、文脈によって他の意味が示されない限り、「アクション」、「アクションオブジェクト」、および「アクションオブジェクトに対する参照」という語は、多かれ少なかれ同意語である。図6の方法の多くの実施形態では、アクションオブジェクトは、デバイスクラスのメンバメソッドを呼び出し、物理的デバイスの現在の属性に影響を与える。図6の方法の多くの実施形態では、アクションクラスまたはアクションオブジェクトは、OSGiバンドルでサービスゲートウエイ上のDMLに展開される。
【0126】
図6の方法では、アクションの識別(310)は、ユーザIDおよび計量IDによって構成された計量アクションリスト(622)からアクションID(315)を受信すること(365)を含む。図6の方法では、計量アクションリストからのアクションIDの検索は、特定の計量IDおよび特定のユーザの計量値がユーザの所定計量範囲の外である場合に実行されるアクションの識別子(「アクションID」)のリストからの検索を含む。アクションリストは、例えば、Javaリストコンテナとして、ランダムアクセスメモリ内のテーブルとして、ハードドライブまたはCD ROM上の記憶領域を有するSQLデータベーステーブルとして、更に、当業者に想起される他の方法で、実施することができる。
【0127】
上述のように、アクション自体はソフトウエアから成るので、例えば、コンパイル時にDMLにインポートされ、従ってDML実行時に常に利用可能なJavaパッケージにおいて具現化される具体的なアクションクラスとして、実施することができる。従って、アクション(312)の実行(314)は、かかる実施形態において、DMLのswitch()statementの使用によって実行されることが多い。かかるswitch()statementステートメントは、アクションIDに応じて動作し、例えば、以下の疑似コードセグメントによって示されるように実施することができる。
【数10】
【0128】
例示的なスイッチステートメントは、アクションIDに応じて実行する特定のデバイス制御オブジェクトを選択する。この例においてswitch()が管理するデバイス制御オブジェクトは、actionNumber1、actionNumber2等という名前の具外的なアクションクラスであり、各々は、「take_action()」という名前の実行可能メンバメソッドを有し、各アクションクラスが実施する実際のワークを実行する。
【0129】
また、アクション(312)の実行(314)は、かかる実施形態において、DMLにおけるハッシュテーブルの使用によって実行されることが多い。かかるハッシュテーブルは、以下の疑似コードの例に示すように、アクションIDによって入力されるアクションオブジェクトに対する参照を格納することができる。この例は、アクションサービスが、アクションIDをキーとして用いて、特定の計量IDに関連付けた具体的なアクションクラスのオブジェクトに対する参照であるアクションのハッシュテーブルを生成することによって開始する。多くの実施形態では、かかるハッシュテーブルを作成し、それに特定の計量IDに関連付けたアクションオブジェクトに対する参照を入れ、ハッシュテーブルに対する参照を呼び出し側計量オブジェクトに戻すのは、アクションサービスである。
【数11】
【0130】
特定のアクションの実行は、以下の疑似コードに従って実行することができる。
【数12】
【0131】
本明細書中の多くの実施形態は、リストと共に、多くの場合アクションのリストと共に記載し、これらは、例えば、アクションサービスから、リストに対する参照と共に戻される。多くの場合、リストは、ハッシュテーブルと同様に機能する。例えば特定のアクションの実行は、以下の疑似コードに従って実行することができる。
【数13】
【0132】
特定のアクションの実行は、以下の疑似コードに従って実行することができる。
【数14】
【0133】
上述の3つの例は、スイッチステートメント、ハッシュテーブル、およびリストオブジェクトを用いて、本発明の実施形態によるアクションの実行を説明する。これらの例におけるスイッチステートメント、ハッシュテーブル、およびリストオブジェクトの使用は、限定ではなく説明のためである。実際、当業者に想起されるように、本発明の実施形態に従ってアクションを実行する多くの方法があり、かかる方法は全て本発明の範囲内である。
【0134】
図7は、アクションを実行する例示的な方法を示すデータフロー図を示す。図7の方法では、アクションの実行は、アクションが管理する物理的デバイス(316)を表すデバイスクラス(214)の識別(380)を含む。典型的なデバイスクラスは、デバイスを管理するメンバメソッドを含む。デバイスを管理する典型的なメンバメソッドは、物理的デバイスのデバイス属性値を取得および設定するためのメンバメソッドを含む。例えば、多くの設定の光強度をサポートするランプの場合、デバイスクラスのメンバメソッドget()は、ランプから光強度の値を取得することができ、デバイスクラスのメンバメソッドset()は、ランプの光強度を設定する。
【0135】
図7の方法では、アクションの実行は、物理的デバイス(316)のための通信クラス(215)の識別(384)を含む。デバイスクラスのメンバメソッドが物理的デバイスに通信するためには、通信クラスは、物理的デバイスと通信するためのプロトコルを実施する。典型的な通信クラスは、通信クラスが実施するプロトコルに従ってデータ通信メッセージを構築、送信、および受信するメンバメソッドを含む。通信クラスのメンバメソッドは、物理的デバイスとの間でデータ通信メッセージを送信および受信する。通信クラスは、デバイス上で実施されるアクションから物理的デバイスと通信するために用いるプロトコルを分離すると有利であり、このため、例えばget()およびset()を備えるデバイスクラスインタフェースは、デバイスクラスを再プログラムする必要なく、また、物理的デバイスおよびプロトコルの各組み合わせごとに1つのデバイスクラスを提供する必要なく、データ通信プロトコルのいずれかを用いて物理的デバイスと通信可能であると有用である。
【0136】
更に詳しい説明のため、以下の簡単な使用の場合を考える。ユーザの計量センサが、毎分100回のユーザの心拍数を読み、ユーザを識別するユーザID、「心拍数」として計量を識別する計量ID、および100の計量値を有するユーザの計量を生成する。計量センサは、このユーザ計量を、サービスゲートウエイを介してDMLに送信する。DMLはユーザ計量を受信し、このユーザ計量を、65から85回の範囲を有する休息時心拍数のユーザ計量範囲と比較する。DMLは、ユーザ計量が既定計量範囲の外であると判定する。DMLは、ユーザの心拍数計量値が、ユーザの心拍数の計量範囲外であるという判定に応答して、ユーザIDおよび計量IDを用いて、リストから、実行する既定アクションのアクションIDを検索する。DMLは、例えば「someAction」のクラス名を有し、更に、switch()ステートメントにおいて上述したtake_action()方法等、DMLに既知のインタフェースメンバメソッドを有するアクションオブジェクトを識別するデバイス制御アクションIDを検索する。
【0137】
この例では、DMLは、someAction.take_action()を呼び出すことによって識別されたアクションを実行する。この例におけるtake_action()メソッドは、アクションによって属性が影響を受ける物理的デバイスを表すデバイスオブジェクトに対する参照のリストのためにデバイスサービスを呼び出すようにプログラムされている。デバイスサービスは、switch()ステートメントによってプログラムされて、アクションIDに応じてデバイスオブジェクトに対する参照のリストを生成し、デバイスリストを呼び出し側アクションオブジェクトに、または、アクションオブジェクトにおける呼び出し側take_action()メソッドに戻す。
【0138】
デバイスリストの生成において、デバイスサービスは、リストに入力された参照を有する各デバイスをインスタンス化するようプログラムされ、コンストラクタパラメータとして、通信サービスに対する参照を渡す。このようにインスタンス化された各デバイスは、通信サービスにおいてパラメータで表したファクトリメソッドを呼び出すようプログラムされたコンストラクタパラメータを有し、パラメータとして、呼び出し側デバイスオブジェクトの識別子を渡す。通信サービスは、対応する物理的デバイスと通信するため、そのデバイスオブジェクトに必要な通信プロトコルのための通信オブジェクトに対する参照をインスタンス化し、デバイスに戻す。
【0139】
本発明の実施形態において、典型的にアクションを実行するための主な制御論理は、アクションクラスの主インタフェースメソッドおよびそれからインスタンス化されたオブジェクトにある。この例では、take_action()メソッドは、メソッド呼び出しの制御シーケンスを実行して、このアクションクラスが最初に開発された物理的デバイス上の変更を実行するようプログラムされている。take_action()メソッドは、そのデバイスリストのデバイスオブジェクトにおけるアクセス機構メソッド(set()およびget()メソッド)に対する一連の呼び出しによってこの機能を実行する。
【0140】
図8は、ユーザ計量(206)が既定の計量範囲(210)外であることを判定する(306)例示的な方法を示すデータフロー図である。デバイス管理方法の多くの実施形態では、ユーザ計量(206)は、図8のユーザ計量レコード等、データ構造またはレコードとしてデータ内に表される。ユーザ計量(206)は、ユーザIDフィールド(405)、計量IDフィールド(407)、および値フィールド(409)を含む。
【0141】
図8の例では、計量の既定の計量範囲は、図8の計量範囲(210)等の計量範囲としてデータに表される。例示的な計量範囲(210)は、特定の計量についての特定ユーザの最大範囲値(468)および最小範囲値(470)を示す。例示的な範囲についての特定のユーザおよび特定の計量は、ユーザIDフィールド(464)および計量IDフィールド(462)にそれぞれ識別される。
【0142】
図8の方法では、ユーザ計量(206)の値が既定の計量範囲(210)の外である(309)という判定(306)は、ユーザ計量(206)が既定の計量範囲(210)の外である(309)程度(504)の測定(502)を含む。本発明の多くの実施形態では、ユーザ計量(206)が計量範囲(210)の外である(309)程度(504)の測定(502)は、ユーザ計量値が計量範囲の最大計量値よりも大きい程度またはユーザ計量値が既定の計量範囲の最小値よりも小さい程度の識別を含む。計量が範囲外である程度の測定が、最大範囲値よりも大きいかまたは最小範囲値よりも小さいとして測定値を識別することを含む場合、測定は、例えば符号(+または−)、例えば「上」または「下」等の一覧指示、またはハイには真、ローには偽等のブール指示等、大きさと方向の指示の双方を含むと有利であることが多い。
【0143】
図8の方法では、ユーザ計量に応じたアクションの識別(310)は、ユーザ計量(206)の値が計量範囲外である(309)程度(504)に応じた、更に、多くの場合、計量が範囲外である方向に応じた、アクションの識別(512)を含む。図8の方法の多くの実施形態において、ユーザ計量が既定の計量範囲外である程度(504)に応じたアクションの識別(512)は、計量ID、ユーザID、程度、および方向によって構成された計量アクションリスト(622)からアクションIDを検索することを含む。
【0144】
本発明による多くのDMLにおいて、DMLがサポートするデバイスの全てにデバイスクラスがプレインストールされている。新しく取得された物理的デバイスは、それら自身をネットワーク上にあるとして識別し、DMLは、DML上にすでにインストールされているデバイスクラスにデバイスIDを関連付ける。かかる例示的な実施形態では、DMLは、デバイスIDをプレインストールされたデバイスクラスに関連付けることによってデバイスを識別する。
【0145】
関連計量を含むユーザ計量ベクトルに応じたデバイス管理および位置に基づくデバイス制御
図9は、本発明によるデバイス管理方法を示すデータフロー図である。図9の方法は、複数のユーザ計量(206)の受信(660)を含む。図9の方法の多くの実施形態において、複数の異なるユーザ計量(206)の受信(660)は、1つ以上の計量センサ(406)からの異なるユーザ計量の受信を含む。「異なる」ユーザ計量という語は、異なる種類のユーザ計量を意味する。すなわち、通常異なる計量値を有する、異なる種類のユーザ計量である。
【0146】
図9の方法のいくつかの例では、計量センサ(406)は、ユーザ状況の指示を読み、ユーザ状況の指示に応じたユーザ計量を生成し、ユーザ計量をDMLに送信する。多くの例では、計量センサは、図3の計量(206)等の既定のデータ構造で、例えば、Bluetooth、802.11、HTTP、WAP等のプロトコル、または当業者に想起される他のいずれかのプロトコルを用いて、ユーザ計量をDMLに送信する。
【0147】
図9の方法は、複数のユーザ計量(206)に応じた関連計量(664)の生成(662)を含む。図9の方法の多くの例では、関連計量(664)は、複数のユーザ計量に応じて導出したか、または将来受信されるユーザ計量を予想して生成される、ユーザ状況の具体的な指示を表すデータ構造である。すなわち、図9の方法のいくつかの例では、関連計量は、計量キャッシュ内の複数のユーザ計量に応じて生成された計量である。例えば、「移動」のための関連計量は、位置についての少なくとも2つの他の計量から生成可能である。図9の方法の他の例では、関連計量は、計量キャッシュに受信されるユーザ計量を予想して予め生成される。これらの例の多くでは、計量キャッシュ内のユーザ計量が、既定の計量パターンを生成する既定の計量集合に一致する場合、ユーザのために予め生成された関連計量が選択される。関連計量の例は、ユーザの移動、ユーザの移動なし、回転、移動速度、生物測定値の上昇、生物測定値の低下、生物測定値の変化率、または当業者に想起される他のいずれかの関係を表す計量を含む。
【0148】
関連計量は、多くの場合、単一の受信したユーザ計量において利用可能でないユーザ状況に関する情報を提供する。計量値を有する単一の受信ユーザ計量は、その計量の現在値のみを示すことが多い。違う言い方をすれば、単一のユーザ計量は、多くの場合、ユーザ状況の単一の特徴の断片を提供する。一方、関連計量は、多くの場合、アクション実行に応答して、いかにユーザ計量が変わっているか等のユーザ状況に関する更に別の情報、または当業者に想起される他の情報を提供する。
【0149】
図9の方法の多くの例では、複数のユーザ計量(206)に応じた関連計量(664)の生成は、例えばcreateRelationalMetric()(図3の686)等の関連計量サービスにおけるメンバメソッドの呼び出しを含む。図9の方法のいくつかの例では、createRelationalMetric()(686)は、計量キャッシュ内のユーザ計量間の関係を決定し、適切な関連計量をインスタンス化する。他の実施形態では、createRelationalMetric()は、計量キャッシュ内のユーザ計量を、共に既定の計量パターンを形成する既定の計量集合と比較する。計量キャッシュ内のユーザ計量が、既定の計量パターンを形成する既定の計量と一致する場合、createRelationalMetric()は、関連計量データベースから適切な予め生成された関連計量を受信する。
【0150】
図9の方法は、少なくとも1つのユーザ計量(206)および少なくとも1つの関連計量(664)から成るユーザ計量ベクトル(606)の生成(604)を含む。少なくとも1つのユーザ計量(206)および少なくとも1つの関連計量(664)から成るユーザ計量ベクトルは、ユーザ状況の多数の定量化可能な特徴およびこれらの特徴を測定する多数の量を有するユーザ状況の複雑な指示を表す。すなわち、ユーザ計量ベクトルは、通常、各々がユーザ状況の単一の定量化可能な特徴およびこの特徴を測定する量を表すユーザ計量集合である。図9の方法では、ユーザ計量ベクトルは、少なくとも2つの受信したユーザ計量間の関係を識別する少なくとも1つの関連計量も含む。
【0151】
本発明の典型的な実施形態では、ユーザ計量ベクトルは、図3を参照して上述した例示的なユーザ計量ベクトル(606)等のユーザ計量ベクトルデータ構造またはレコードとして実施される。ユーザ計量ベクトル(606)は、ユーザを識別するユーザID(図3の486)およびユーザ計量ベクトルを一意に識別する計量ベクトルID(図3の408)を含む。また、ユーザ計量ベクトル(606)は、ユーザ計量に対する参照を含む計量リスト(図3の652)のためのデータ記憶領域を含む。また、ユーザ計量ベクトル(606)は、関連計量に対する参照を含む関連計量リスト(図3の653)のためのデータ記憶領域も含む。
【0152】
図9の方法は、複数の計量範囲(210)から成るユーザ計量空間(610)の生成(605)を含む。ユーザ計量空間(610)は、ユーザのための複数の異なる計量範囲から成る。すなわち、計量空間は、複数の異なる計量IDについての複数の計量範囲によって規定される。図9の方法の多くの例では、ユーザ計量空間の計量範囲は、所与のユーザの所与のユーザ計量についての計量値の通常または快適な範囲を表す。図9の方法の多くの例では、ユーザ計量空間は、ユーザ計量ベクトルの関連計量についての計量範囲を含む。本発明の多くの例示的な実施形態では、計量空間は、ユーザIDおよびユーザの異なる計量範囲に対する参照リストのためのデータ記憶領域(655)を含む、図3の例示的な計量空間(610)等の計量空間データ構造として実施される。
【0153】
図9の方法は、ユーザ計量ベクトル(606)がユーザ計量空間(610)の外である(309)ことの判定(608)を含む。様々な代替的な例示的な実施形態では、ユーザ計量ベクトル(606)がユーザ計量空間(610)の外である(309)ことの判定(608)は、異なる方法を用いて実行される。ユーザ計量ベクトル(606)がユーザ計量空間(610)の外である(309)ことを判定する方法は、計量ベクトルのユーザ計量および関連計量と対応する計量空間の計量範囲との比較的単純な比較から、もっと複雑なアルゴリズムまで、複雑さは様々である。ユーザ計量ベクトル(606)がユーザ計量空間(610)の外である(309)ことを判定(608)する例示的な方法は、図13を参照して以下でより詳細に説明する。
【0154】
ユーザ計量ベクトル(606)がユーザ計量空間(610)の外である(309)場合、図9の方法は、アクション(315)の識別(630)を含む。アクションは、典型的に、実行されると1つ以上のデバイスを制御する1つ以上のコンピュータプログラム、サブルーチン、またはメンバメソッドを含む。アクションは、通常、オブジェクト指向クラスとして実施され、オブジェクトまたはオブジェクトに対する参照として操作される。実際、本明細書中では、文脈によって他の意味が示されない限り、「アクション」、「アクションオブジェクト」、および「アクションオブジェクトに対する参照」という語は、多かれ少なかれ同意語である。図9の方法の多くの例では、アクションオブジェクトは、デバイスクラスのメンバメソッドを呼び出し、物理的デバイスの現在の属性に影響を与える。図9の方法の多くの例では、アクションクラスまたはアクションオブジェクトは、OSGiバンドルでサービスゲートウエイ上のDMLに展開される。
【0155】
図9の方法の多くの例では、アクション(315)の識別(630)は、ユーザ計量ベクトル(606)に応じて、動的アクションリスト(626)を生成すること(624)を含む。図9の方法の多くの例では、動的アクションリストは、ユーザ計量空間の対応する計量範囲の外にあるユーザ計量ベクトルの特定の計量に関連付けた計量アクションリストに応じて生成されるアクションIDのリストである。すなわち、その対応する計量範囲の外にある計量ベクトルの各計量は、関連する計量アクションリストを有する。関連する計量アクションリストは、その関連する計量がその対応する計量範囲の外にある場合、実行のためのアクションIDを含む。動的アクションリストは、ユーザ計量空間の対応する計量範囲の外にあるユーザ計量ベクトルの特定の計量に関連付けた計量アクションリストに応じて識別されるアクションIDを含むアクションリストである。動的アクションリストは、ユーザの現在の状況に合わせたアクションIDのリストを提供すると有利である。
【0156】
本発明の多くの例示的な実施形態では、動的アクションリストの生成は、動的アクションサービスオブジェクトにおけるメンバメソッドの呼び出しを含む。図9の方法の多くの例では、動的アクションリストの生成は、ユーザ計量空間の対応する計量範囲の外にあるユーザ計量ベクトルの特定のユーザ計量に関連付けたアクションリストから検索したアクションIDによって、createDynamicActionList()等のメンバメソッドをパラメータで表すことを含む。図9の方法の多くの例では、actionDynamicActionList()は、そのユーザ計量ベクトルの呼び出し側に、計量アクションリストに含まれるアクションIDに応じて識別されるアクションIDを含む動的アクションリストを戻す。図9の方法の様々な代替的な例では、動的アクションリストは、例えば、ハッシュテーブル、Javaリストコンテナとして、ランダムアクセスメモリ内のテーブルとして、ハードドライブまたはCD ROM上に記憶領域を有するSQLデータベーステーブルとして、更に、当業者に想起される他の方法で、実施することができる。
【0157】
図9の方法は、アクション(614)の実行を含む。従って、アクションの実行は、かかる実施形態において、多くの場合、DMLにおけるswitch()ステートメントの使用によって実行される。かかるswitch()ステートメントは、アクションIDに応じて動作し、例えば、以下の疑似コードセグメントに示されるように実施することができる。
【数15】
【0158】
例示的なスイッチステートメントは、アクションIDに応じた実行のため特定のデバイス制御オブジェクトを選択する。この例でswitch()によって管理されるデバイス制御オブジェクトは、actionNumber1、actionNumber2等という名前の具外的なアクションクラスであり、各々は、「take_action()」という名前の実行可能メンバメソッドを有し、これが、各アクションクラスが実施する実際のワークを実行する。
【0159】
図9の方法の多くの例では、アクションの実行は、DMLにおけるハッシュテーブルの使用によって行われる。かかるハッシュテーブルは、以下の疑似コードの例に示すように、アクションIDによって入力されるアクションオブジェクトに対する参照を格納する。この例は、動的アクションリストサービスが、アクションIDをキーとして用いて、特定の計量IDに関連付けた具体的なアクションクラスのオブジェクトに対する参照であるアクションのハッシュテーブルを生成することによって開始する。多くの実施形態では、かかるハッシュテーブルを作成し、それにユーザ計量空間の対応する計量範囲の外にあるユーザ計量ベクトルの特定の計量IDに関連するアクションオブジェクトに対する参照を入れ、ハッシュテーブルに対する参照を呼び出し側ベクトルオブジェクトに戻すのは、動的アクションリストサービスである。
【数16】
【0160】
次いで、以下の疑似コードに従って、特定のアクションの実行を行うことができる。
【数17】
【0161】
また、図9の方法の多くの例は、リストの使用によって実施される。多くの場合、リストは、ハッシュテーブルと同様に機能する。かかるリストの構築は、以下の疑似コードに従って実行することができる。
【数18】
【0162】
次いで、以下の疑似コードに従って、特定のアクションの実行を行うことができる。
【数19】
【0163】
上述の3つの例は、スイッチステートメント、ハッシュテーブル、およびリストオブジェクトを用いて、本発明の実施形態によるアクションの実行を説明する。これらの例におけるスイッチステートメント、ハッシュテーブル、およびリストオブジェクトの使用は、限定ではなく説明のためである。実際、当業者に想起されるように、本発明の実施形態に従ってアクションを実行する多くの方法があり、かかる方法は全て本発明の範囲内である。
【0164】
図9の方法のいくつかの例では、アクションの実行は、デバイスのためのデバイスクラスの識別を含む。典型的なデバイスクラスは、デバイスを管理するメンバメソッドを含む。デバイスを管理する典型的なメンバメソッドは、物理的デバイスのデバイス属性の値を取得および設定するためのメンバメソッドを含む。例えば、光強度の多数の設定をサポートするランプの場合、デバイスクラスのメンバ方法get()は、ランプから光強度の値を取得することができ、デバイスクラスのメンバ方法set()は、ランプの光強度を設定する。
【0165】
図9の方法の多くの例では、アクションの実行は、デバイスのための通信クラスの識別を含む。デバイスクラスのメンバメソッドが物理的デバイスに通信するため、通信クラスは、物理的デバイスと通信するためのプロトコルを実施する。典型的な通信クラスは、通信クラスが実施するプロトコルに従ってデータ通信メッセージを構築、送信、および受信するメンバメソッドを含む。通信クラスのメンバメソッドは、物理的デバイスとの間でデータ通信メッセージを送信および受信する。通信クラスは、デバイスを実施するアクションから物理的デバイスと通信するために用いるプロトコルを分離すると有利であり、このため、例えばget()およびset()を備えるデバイスクラスインタフェースは、デバイスクラスを再プログラムする必要なく、また、物理的デバイスおよびプロトコルの各組み合わせごとに1つのデバイスクラスを提供する必要なく、データ通信プロトコルのいずれかを用いて物理的デバイスと通信可能であると有用である。
【0166】
図10は、複数のユーザ計量(206)に応じて関連計量(664)を生成する(662)例示的な方法を示すデータフロー図である。上述のように、図10の方法のいくつかの例では、関連計量は、計量キャッシュにおける受信したユーザ計量に応じて生成された計量である。図10の方法では、複数のユーザ計量(206)に応じた関連計量(664)の生成(662)は、ユーザ計量のフィルタリング(665)を含む。図10の方法の多くの例では、ユーザ計量のフィルタリングは、計量キャッシュにおける受信したユーザ計量の計量IDの識別および計量IDによるユーザ計量の分類を含む。
【0167】
図10は、結果として得られたフィルタリングされたユーザ計量を2つのみ示す(206A、206B)。しかしながら、図10の方法の多くの例では、ユーザ計量のフィルタリングの結果として、多くのフィルタリングしたユーザ計量がキャッシュに格納され、関連計量を生成するために用いられる。図10の方法の様々な例では、いくつのフィルタリングされたユーザ計量が計量キャッシュに維持されるかは、フィルタリングしたユーザ計量の計量ID、フィルタリングしたユーザ計量に応じて生成された関連計量の種類等のファクタ、または当業者に想起される他のいずれかのファクタによって変動する。例えば、「ユーザの移動」の関連計量は、2つのみのフィルタリングしたユーザ計量から生成することができ、一方、「円の中のユーザの移動」の関連計量は、計量キャッシュ内の位置のための3つ以上のフィルタリングしたユーザ計量を必要とする場合がある。
【0168】
図10の方法では、複数のユーザ計量(206A、206B)に応じた関連計量(664)の生成(662)は、第1のフィルタリングされたユーザ計量(206A)と第2のフィルタリングされたユーザ計量(206B)との間の関係(668)の判定(666)を含む。図10の方法では、第1のフィルタリングされたユーザ計量(206A)と第2のフィルタリングされたユーザ計量(206B)との間の関係(668)の判定(666)は、第1のフィルタリングされたユーザ計量(206A)と第2のフィルタリングされたユーザ計量(206B)との比較(670)を含む。図11の方法の多くの例では、第1のフィルタリングされたユーザ計量と第2のフィルタリングされたユーザ計量を比較して関係を判定することは、アルゴリズムで実行される。すなわち、例えば、コンピュータプログラム符号化の点で、ユーザ計量間の関係の判定は、スイッチステートメントまたは、例えば以下のように示されるものと同様のif-then-elseステートメント実施論理のシーケンスを用いることによって、実行される。
【数20】
もしくは
【数21】
【0169】
図11の方法の多くの例では、ユーザ計量に応じた関係の判定は、2つのみのユーザ計量の比較に限定されない。3つ以上のユーザ計量の比較の例として、以下の、関係「右に回転」を判定するアルゴリズム論理の例を考える。
【数22】
【0170】
図10の方法では、複数のユーザ計量(206A、206B)に応じた関連計量(664)の生成(662)は、第1のフィルタリングされたユーザ計量(206A)と第2のフィルタリングされたユーザ計量(206B)との間の関係(668)の大きさ(674)の判定(672)を含む。図10の方法の多くの例では、判定された大きさは、生成された関連計量の値として含まれる。図10の方法のいくつかの例では、第1のフィルタリングされたユーザ計量(206A)と第2のフィルタリングされたユーザ計量(206B)との間の関係(668)の大きさ(674)の判定(672)は、第1のフィルタリングしたユーザ計量(206A)の値から、第2のフィルタリングしたユーザ計量(206B)の値を減算する(676)ことを含む。図10の方法の他の代替的な例では、第1のフィルタリングされたユーザ計量(206A)と第2のフィルタリングされたユーザ計量(206B)との間の関係(668)の大きさ(674)の判定(672)は、第1のフィルタリングされたユーザ計量および第2のフィルタリングされたユーザ計量を加算すること、または当業者に想起される他のいずれかの関数またはアルゴリズムを第1のフィルタリングされたユーザ計量および第2のフィルタリングされたユーザ計量に適用することを含む。
【0171】
図11は、複数のユーザ計量(206)に応じて関連計量(664)を生成する(662)例示的な方法を示すデータフロー図である。図11の方法では、複数のユーザ計量(206)に応じた関連計量(664)の生成(662)は、複数のユーザ計量(206)が既定の計量パターン(663)に一致する(681)かの判定(678)を含む。図11の方法の多くの例では、既定の計量パターンは、既定の関係を証明する特定パターンの計量を形成するように予め決められた、予め生成したユーザ計量集合を含む。
【0172】
図11の方法の多くの例では、複数のユーザ計量(206)が既定の計量パターン(663)に一致する(681)か否かの判定(678)は、計量キャッシュ内の複数のユーザ計量を、既定の計量パターン(663)を形成する既定の計量集合と比較すること(679)を含む。図11の方法の多くの例では、計量キャッシュ内のユーザ計量と関連計量データベース内の既定の計量パターンとを比較することは、ユーザ計量の値を、既定の計量パターン内に含まれる個々の既定計量の値と比較すること、および、計量キャッシュ内のユーザ計量の計量IDを、既定計量パターン内に含まれる個々の既定計量の計量IDと比較することを含む。図11の方法の多くの例では、既定計量パターンは、共に計量パターンを形成する異なる種類の既定計量を含む場合がある。
【0173】
計量キャッシュ内の複数のユーザ計量は、一致と見なされる既定計量パターンを形成する既定計量集合と全く同じである必要はない。計量キャッシュ内のユーザ計量が一致と見なされる既定計量パターンの既定計量と同じでなければならない程度は、比較に用いる方法の許容度、ユーザ計量および既定計量に含まれる情報の種類、ユーザ計量および既定計量を発生する際に用いる正確さおよび精度等の様々なファクタ、ならびに当業者に想起される他のファクタに依存する。
【0174】
図11の方法では、既定計量パターンは、計量パターンテーブル(680)に格納される。図11の方法の多くの例では、計量パターンテーブルは、例えば、識別する関連計量のための計量IDによって示される既定計量パターンを形成する所定の計量集合を含む。図11の方法の多くの例では、計量キャッシュ内のユーザ計量は、既定計量パターンを形成する所定の計量集合と比較される。ユーザ計量が、既定計量パターンを形成する所定の計量集合と一致した場合、関連計量のために計量IDを識別する。
【0175】
図11の方法では、複数のユーザ計量(206)に応じた関連計量(664)の生成(662)は、関連計量(664)の検索(683)を含む。図11の方法の多くの例では、関連計量は、計量キャッシュ内のユーザ計量を計量パターンテーブルに格納された既定計量パターンと比較することによって識別される計量IDに応じて、関連計量テーブル(665)から検索される。
【0176】
図12は、ユーザ計量ベクトル(606)を生成する(604)例示的な方法およびユーザ計量空間(610)を生成する(605)例示的な方法を示すデータフロー図である。図12の方法において、少なくとも1つのユーザ計量(206)および少なくとも1つの関連計量(664)から成るユーザ計量ベクトル(606)の生成(604)は、少なくとも1つのユーザ計量をユーザ計量ベクトルに関連付けること(603)、および少なくとも1つの関連計量(664)をユーザ計量ベクトル(606)に関連付けること(682)を含む。本開示において、および文脈に応じて、「関連付ける」という語は、一般的に、参照による関連付けを意味する。すなわち、1つのクラスのオブジェクトを別のオブジェクトに関連付けるということは、第2のオブジェクトが第1のオブジェクトに対する参照を有することを意味する。オブジェクトは互いに関連付けられ、各々が他に対する参照を有する。オブジェクト、集合、構成等の間の他の関係は、通常、関連付けの種類であり、当業者に想起される他のものと同様、それらのいずれかの使用は、本発明の範囲内である。図12の例示的な方法では、複数の異なるユーザ計量(206)をユーザ計量ベクトル(606)に関連付けること(603)は、ユーザ計量ベクトル(606)の複数の異なる計量オブジェクトに対する参照を提供することによって実行される。
【0177】
図12の方法において、複数の異なるユーザ計量(206)から成るユーザ計量ベクトル(606)の生成(604)は、少なくとも1つの計量アクションリスト(622)を各ユーザ計量(206)に関連付ける(620)ことを含む。図12の方法の多くの例において、複数の計量アクションリストは、ユーザベクトルの各ユーザ計量に関連付けられている。特定の計量に関連付けた計量アクションリストに含まれるアクションIDは、その計量が表すユーザ状況の特定の特徴に従ってデバイスを管理するように設計されたアクションを識別する。すなわち、計量アクションリストは、ユーザ計量または関連計量が表すユーザ状況に影響を与えるように構成されている。例えば、体温計量に関連付けた計量リストは、エアコンディショナ、ファン、ヒータ、自動日よけ等のデバイスを管理するアクションを含むことができる。
【0178】
図12の方法の多くの例において、ユーザ計量ベクトルの生成は、複数の計量アクションリストを単一のユーザ計量に関連付けることを含む。図12の方法のいくつかの例は、ユーザ計量の値がその対応する計量範囲よりも大きい場合に実行するため、ある計量アクションリストを、アクションIDを含むユーザ計量に関連付けること、更に、ユーザ計量の値がその対応する計量範囲よりも小さい場合に実行するため、アクションIDを含む別の計量アクションリストを関連付けることを含む。また、図12の方法のいくつかの例は、ユーザ計量がその対応する計量範囲外である程度および方向に応じて実行するため、計量アクションリストを、アクションIDを含むユーザ計量に関連付けることを含む。
【0179】
図12の方法では、複数の異なるユーザ計量(206)から成るユーザ計量ベクトル(606)の生成(604)は、少なくとも1つの計量アクションリスト(622)を各関連計量(664)に関連付けること(683)を含む。図12の方法の多くの例では、複数の計量アクションリストが、ユーザベクトルの各関連計量に関連付けられている。特定の関連計量に関連付けられた計量アクションリストに含まれるアクションIDは、その関連計量が表すユーザ状況の特定の特徴に従ってデバイスを管理するよう設計されたアクションを識別する。すなわち、計量アクションリストは、関連計量が表すユーザ状況に影響を与えるように構成されている。例えば、体温計量に関連付けた計量リストは、エアコンディショナ、ファン、ヒータ、自動日よけ等のデバイスを管理するアクションを含むことができる。
【0180】
図12の方法の多くの例では、ユーザ計量ベクトルの生成は、複数の計量アクションリストを単一の関連計量に関連付けることを含む。図12の方法のいくつかの例は、関連計量の値がその対応する計量範囲よりも大きい場合に実行するため、ある計量アクションリストを、アクションIDを含む関連計量に関連付けること、更に、関連計量の値がその対応する計量範囲よりも小さい場合に実行するため、アクションIDを含む別の計量アクションリストを関連付けることを含む。また、図12の方法のいくつかの例は、ユーザ計量がその対応する計量範囲外である程度および方向に応じて実行するために、アクションIDを含む計量アクションリストを、関連計量に関連付けることを含む。
【0181】
図12の方法は、複数の計量範囲から成るユーザ計量空間(610)の生成(605)を含む。図12の方法の多くの例において、ユーザ計量空間(610)は、本質的に、ユーザ計量ベクトルに含まれるユーザ計量および関連計量に対応する複数の異なる計量範囲から成る。図12の方法の多くの例では、ユーザ計量空間の計量範囲は、ユーザのための通常または快適な計量範囲を表す。図12の方法では、ユーザ計量空間(610)の生成(602)は、複数の異なる計量(206)のための複数の計量範囲(210)を識別すること(610)、および、複数の異なる計量(206)のための複数の異なる計量範囲(210)をユーザ計量空間(610)に関連付けることを含む。
【0182】
図12の方法の多くの例において、複数の計量範囲(210)の識別(601)および複数の計量範囲(210)のユーザ計量空間(610)との関連付け(607)は、DMLがインスタンス化する計量空間サービスによって実行される。計量空間サービスは、ユーザ計量ベクトルからユーザ計量ベクトルIDを受け取り、計量ベクトルIDが識別する計量空間リストの中で計量空間を検索し、ユーザ計量ベクトルに、ユーザ計量ベクトルと比較するための計量空間を識別する計量空間IDを戻す。計量ベクトルIDのための計量空間が存在しない場合、計量空間サービスは、1つの計量空間をインスタンス化し、計量空間テーブルに計量空間IDを格納する。
【0183】
図13は、ユーザ計量ベクトル(606)がユーザ計量空間(610)の外である(309)か否かを判定する(608)2つの例示的な方法を示すデータフロー図である。ユーザ計量ベクトル(606)がユーザ計量空間(610)の外である(309)か否かを判定する(608)最初に例示する方法は、ユーザ計量ベクトル(606)のユーザ計量(206)および関連計量(664)の計量値を、計量空間(610)の計量範囲(210)と比較すること(806)を含む。本発明のいくつかの例では、ユーザ計量の計量値または関連計量の値とその対応する計量範囲との比較は、その値が既定計量範囲の外である程度の測定、および、その値が既定計量範囲の上または下であることの識別を含む。
【0184】
本発明の多くの例示的な実施形態において、ユーザ計量ベクトルが計量空間の外にあるか否かの判定は、計量値と計量範囲との間の多数の個々の比較の関数である。本発明の様々な代替的な実施形態では、異なる基準を用いて、ユーザ計量ベクトルが計量空間の外にあることを判定するために、対応する計量範囲外にあるはずの計量値の数を識別するか、または、いずれかの計量値が対応する計量範囲の外にある程度を識別する。いくつかの実施形態では、ユーザ計量ベクトルがユーザ計量空間の外にあるか否かを判定するための厳密な基準を用いて、1つのみの計量値が対応する計量範囲の外にある場合、ユーザ計量ベクトルは計量空間の外にあると判定される。他の実施形態では、ユーザ計量ベクトルがユーザ計量空間の外にあるか否かを判定するためのもっと厳密さの緩い基準を用いて、ユーザ計量ベクトルの全てが、ある程度、対応する計量範囲の外にある場合、ユーザ計量ベクトルはユーザ計量空間の外にあると判定される。様々な実施形態において、ユーザ計量ベクトルが計量空間の外にあるという判定を行うための、対応する計量範囲の外にあるはずの計量値の数、または、計量値が対応する計量範囲の外にある程度は、様々に異なる。ユーザ計量ベクトルが計量空間の外にあるか否かを判定するこれらの方法は全ては、本発明の範囲内である。
【0185】
図13に示す、ユーザ計量ベクトル(606)がユーザ計量空間(610)の外にあると判定する(608)第2の例示的な方法は、計量ベクトル値(812)の計算(810)、および計量空間値(816)の計算(814)、および計量ベクトル値(812)の計量空間値(816)との比較(818)を含む。計量ベクトル値を計算する1つの方法は、所定の式を用いて、ユーザ計量ベクトルのユーザ計量および関連計量の計量値の関数である単一の値を明らかにすることである。本発明の1つの例示的な実施形態では、計量ベクトル値の計算は、ユーザ計量ベクトルの計量値の平均化を含む。別の例示的な実施形態では、計量ベクトル値の計算は、ある種の計量および関連計量を優先させること、および計量の優先に基づいた重み付き平均を用いて計量ベクトル値を計算することを含む。
【0186】
いくつかの例示的な実施形態では、計量空間値(818)の計算(814)は、所定の式を用いて、ユーザ計量空間の各計量範囲の最小および最大値の関数である計量空間値を求めることを含む。1つの例示的な実施形態では、計量空間値の計算は、各計量範囲の最小および最大値の中心点を見出し、次いで中心点を平均化することを含む。
【0187】
例示した方法は、計量空間値(816)および計量ベクトル値(812)の比較(818)を含む。本発明の様々な実施形態では、計量ベクトルが計量空間の外にあるか否かを判定するため、どのように計量ベクトル値および計量空間値を比較するかは、様々である。1つの例示的な実施形態では、計量ベクトル値を、計量空間値から減算する。減算の結果が所定範囲内である場合、ユーザ計量ベクトルは計量空間内にあると判定される。同じ例において、減算の結果が所定範囲内になければ、計量ベクトル値は計量空間内にあると判定されない。
【0188】
図13の例示した方法は、限定のためではなく説明のために提供する。ユーザ計量ベクトルが計量空間の外にあるという判定を行うために、計量範囲および計量値を比較し、組み合わせ、操作し、または他のやり方で使用可能である方法は、他にも多く存在する。ユーザ計量ベクトルが計量空間の外にあるという判定を行うための、かかる比較、組み合わせ、操作、および他のやり方で計量値および計量範囲を用いる方法は、全て、本発明の範囲内に含まれる。
【0189】
図14は、アクション(315)を識別する(630)例示的な方法を示すデータフロー図である。図14の方法において、アクションの識別は、ユーザ計量ベクトル(606)に応じて、動的アクションリスト(626)を生成することを含む。通常の動的アクションリストは、対応する計量範囲または複数の計量範囲の外にあるユーザの計量空間および特定の関連計量の対応する計量範囲の外にあるユーザの計量ベクトルの特定の計量に関連付けた計量アクションリスト内に含まれるアクションIDに応じて動的に識別されるアクションIDを含む。かかる動的アクションリストの生成は、ユーザの現在の状況に応答してデバイスを管理するように構成されたアクションIDの集合を提供することが好都合である。
【0190】
図14の方法において、ユーザ計量ベクトル(606)に応じた動的アクションリスト(626)の生成(624)は、ユーザ計量空間の計量範囲外の値を有するユーザ計量ベクトル(622)の各ユーザ計量(206)および各関連計量ごとの計量アクションリスト(622)の識別(752)を含む。図14の方法の多くの例において、対応する計量範囲の外にある各ユーザ計量(206)および関連計量(664)ごとの、更に、対応する計量範囲の外にある各関連計量ごとの、計量アクションリスト(622)の識別(752)は、ユーザ計量ベクトルがユーザ計量空間の外にあると判定された場合に対応する計量範囲の外にあるとして先に識別された計量オブジェクトから、計量アクションリストに対する参照を検索すること、および、対応する計量範囲の外にあるとして先に識別された関連計量から、計量アクションリストに対する参照を検索することを含む。多くの例では、計量範囲の外にある計量オブジェクトは、ユーザ計量ベクトルが計量空間の外にあるか否かを判定するために計量オブジェクトを計量範囲と比較した場合に、識別される。
【0191】
図14の方法の多くの例では、1つの計量には、複数の計量アクションリストが関連付けられている。関連付けられた各計量アクションリストは、計量値が計量範囲の外にある程度および方向に応じて実行するため、アクションIDの集合を含む。従って、図14の方法のいくつかの例では、ユーザ計量空間の計量範囲の外にある値を有するユーザ計量ベクトル(606)の各ユーザ計量(206)ごとの計量アクションリスト(622)の識別(752)は、ユーザ計量ベクトルの各ユーザ計量の値がユーザ計量空間の計量範囲の外にある程度に応じて計量リストを識別することを含む。図14の方法の別の例では、ユーザ計量空間の計量範囲の外にある値を有するユーザ計量ベクトル(606)の各ユーザ計量(206)ごとの計量アクションリスト(622)の識別(752)は、ユーザ計量ベクトルの各ユーザ計量の値がユーザ計量空間の計量範囲の外にある方向に応じて計量リストを識別することを含む。
【0192】
図14の方法において、ユーザ計量ベクトル(606)に応じた動的アクションリスト(626)の生成(624)は、各計量アクションリスト(622)から少なくとも1つのアクションID(315)を検索すること(754)を含む。いくつかの計量アクションリストは、複数のアクションIDを含み、従って、図14の方法の多くの例は、対応する計量範囲外の値を有する各計量に関連付けられた計量アクションリストから複数のアクションIDを検索することを含む。
【0193】
図14の例では、ユーザ計量ベクトル(606)に応じた動的アクションリスト(626)の生成(624)は、計量アクションリスト(622)から検索したアクションID(315)に応じて動的アクションリスト(626)に含ませるために少なくとも1つのアクションID(315)を識別すること(756)を含む。図14の方法の多くの例では、計量アクションリスト(622)から検索したアクションID(315)に応じて動的アクションリスト(626)に含ませるために少なくとも1つのアクションID(315)を識別すること(756)は、動的アクションリストに含ませるために計量アクションリストから直接検索したアクションIDの識別を含む。すなわち、図14の方法のいくつかの例では、計量アクションリストから検索した同じアクションIDが、動的アクションリストに含まれている。
【0194】
図14の方法では、計量アクションリスト(622)から検索したアクションID(315)に応じて動的アクションリスト(626)に含ませるために少なくとも1つのアクションID(315)を識別すること(756)は、計量アクションリスト(622)のアクションID(315)を比較すること(758)および繰り返しのアクションを省略することを含む。図14の方法のいくつかの例では、繰り返しのアクションを省略することは、同じアクションIDが2つ以上の計量アクションリストに含まれることの判定を含む。かかる例では、動的アクションリストの生成は、同じアクションIDを有し、動的アクションリストに1度だけアクションIDを含む計量アクションリストを識別することを含む。
【0195】
図14の方法では、計量アクションリスト(622)から検索したアクションID(315)に応じて動的アクションリスト(626)に含ませるために少なくとも1つのアクションID(315)を識別すること(756)は、計量アクションリストの少なくとも1つのアクションIDに応じて動的アクションテーブル(762)からアクションID(315)を検索すること(760)を含む。図14の方法の多くの例では、動的アクションテーブル(762)は、他のアクションIDによって索引を付けられるアクションIDを含むデータ構造である。すなわち、動的アクションテーブルは、計量アクションリストから検索したアクションIDに応じて動的アクションリストに含ませるため所定のアクションIDに索引を付けるように設計されたデータ構造である。
【0196】
従って、図14の方法の多くの例において、かかる動的アクションテーブルは、計量アクションリストから検索された競合するアクションを識別し、計量アクションリストから検索された置換するアクションを識別し、更に、計量アクションリストに含まれない別のアクションを識別するように設計されている。図14の方法のいくつかの例において、計量アクションリスト(622)から検索したアクションID(315)に応じて動的アクションリスト(626)に含ませるために少なくとも1つのアクションID(315)を識別すること(756)は、競合するアクションを省略することを含む。図14の方法の多くの例において、動的アクションテーブルを用いて、競合すると前もって決定されたアクションIDを識別する。例えば、天井のファンをオンするデバイス制御アクションを識別する1つの計量アクションリストに含まれるアクションIDは、同じ天井のファンをオフするデバイス制御アクションを識別するアクションIDと競合する。かかる競合アクションIDは、動的アクションリストから省略する。
【0197】
図14の方法のいくつかの例では、計量アクションリスト(622)から検索したアクションID(315)に応じて動的アクションリスト(626)に含ませるために少なくとも1つのアクションID(315)を識別すること(756)は、置換されたアクションを省略することを含む。置換されたアクションとは、実行されると、別の置換するアクションと同じ方向の同じデバイスを管理するが、別の置換するアクションよりも小さい程度でそのデバイスを管理するアクションである。すなわち、別のアクションがより大きい程度で同じデバイスを管理する場合にアクションは置換されて、置換されたアクションの実行は、置換するアクションの実行によって隠されるようになっている。例えば、天井のファンの現在の属性値を「5」から「4」に変化させるアクションIDの実行は、同じ天井のファンの属性を「5」から「2」に変化させるアクションIDの実行によって置換される。図14の方法の多くの例では、動的アクションテーブルを用いて、他のアクションIDを置換するように予め決定されたアクションIDを識別する。図13の方法の多くの例は、動的アクションリストからの置換されたアクションIDを省略し置換するアクションIDを含ませることを含む。
【0198】
図14の方法では、計量アクションリスト(622)から検索したアクションID(315)に応じて動的アクションリスト(626)に含ませるために少なくとも1つのアクションID(315)を識別すること(756)は、動的アクションリストに含ませるために、識別した計量アクションリスト(622)のいずれにも含まれないアクションIDを識別することを含む。図14の方法の多くの例では、動的アクションテーブル(762)のルックアップによって識別されたアクションIDは、識別した計量アクションのいずれにも含まれない。これらの例のいくつかでは、動的アクションテーブルに、実行された場合に他のアクションIDと同じユーザ状況に影響を与えるように予め決定されたアクションIDを設定する。かかる動的アクションテーブルは、計量アクションリストから1つ以上の他のアクションIDが検索された場合に実行するため、アクションIDを識別するように索引を付ける。このように、動的アクションテーブルは、ユーザの現在の状況に影響を与えるより多くのアクションを識別し実行するための手段を有利に提供する。
【0199】
対応する範囲外のユーザ計量に関連付けられたいかなる計量アクションリストにも含まれないアクションIDの識別を更に説明するため、以下の例を与える。ユーザ計量ベクトルの2つのユーザ計量が、ユーザ計量空間の対応する計量範囲を超えている。最初の計量は体温を表し、関連計量アクションリスト内に第1のアクションIDを有し、これは実行されると天井のファンをオンにする。第2の計量は心拍数を表し、関連計量リスト内に第2のアクションIDを有し、これは実行されるとエアコンディショナをオンにする。第1のアクションIDおよび第2のアクションIDに応じた動的アクションテーブルのルックアップは、どちらの計量のどちらの計量アクションリストにも含まれない第3のアクションIDを検索する。第3のアクションIDの実行は、結果として、天井のファンをオンにし、エアコンディショナをオンにし、自動日よけを引く。自動日よけの追加アクションは、エアコンディショナおよび天井のファンをオンすることと同じユーザ状況に影響を与えるように予め決定されている。動的アクションテーブルのルックアップは、第1および第2のアクションIDを基に動的アクションリストに含ませるために第3のアクションIDを識別する。
【0200】
図15は、アクションを識別する(630)例示的な方法を示すデータフロー図である。図15の方法において、アクションの識別は、ユーザの位置(972)の判定(970)を含む。図15の方法の多くの例では、ユーザの位置の判定は、ユーザ計量ベクトルから位置のユーザ計量(206)に対する参照を検索すること、および、位置のユーザ計量の値を検索することを含む。図15の方法の他の例では、ユーザの位置の判定は、他の計量からユーザの位置を推測すること、またはユーザによるデバイスの直接管理によって生じるデバイス属性の変化を識別すること等、または当業者に想起される他のいずれかのユーザ位置の推測方法による、ユーザの位置の推測を含む。
【0201】
図15の方法では、アクションの識別は、ユーザ移動(974)の判定(971)を含む。図15の方法のいくつかの例においてユーザ移動の判定は、ユーザ計量ベクトルから、ユーザの移動を表す関連計量(664)を検索すること、および関連計量の値を検索することを含む。図15の方法のいくつかの例では、ユーザ移動の判定は、ユーザ計量ベクトルから、ユーザの移動の様々な特徴を表す複数の関連計量(664)を検索すること、および複数の関連計量の値を検索することを含む。
【0202】
図15の方法では、アクション(630)の識別は、ユーザの位置(972)およびユーザの移動(974)に応じてアクションID(315)を選択すること(975)を含む。図15の方法では、ユーザの位置およびユーザの移動に応じてアクションIDを選択すること(975)は、アクションテーブルから、ユーザの位置およびユーザの移動に応じたアクションIDを検索することを含む。
【0203】
図15の方法の多くの例では、アクションテーブル(975)は、位置および特定のユーザの移動によって示されるアクションIDを含む。図15の方法の典型的な例において、アクションテーブルのアクションIDは、有効範囲がユーザの現在の位置をカバーする特定のデバイスを管理するように設計されたアクションを識別し、更に、ユーザの現在の移動と一致する方法でデバイスを管理するように設計されている。例えば、ユーザが居間にいて、居間には、有効範囲がこの居間をカバーするラジオが置かれているという場合がある。更に、ユーザがラジオの位置に近づくと、アクションはラジオのボリュームをゆっくりと下げるように設計されている場合がある。ユーザの位置およびユーザの移動に応じてアクションテーブルから選択された特定のアクションIDは、位置に基づくデバイス制御を行うことができると好都合である。
【0204】
以下の例を考える。ユーザの計量ベクトルが、ユーザの心拍数が対応する計量範囲を超えたことを示す。DMLは、ユーザの音楽プレーヤをオンし、プレーヤがユーザを落ち着かせるよう指定された音楽を演奏するように設定するアクションを識別するアクションIDを識別して実行する。また、DMLは、ユーザが居間にいることを判定し、DMLは、ユーザが音楽プレーヤに向かって移動していると判定する。ユーザの速度および方向に適切な速さでボリュームを下げるよう設計された別のアクションIDが識別され実行される。ボリュームを下げた結果、ユーザにとってボリュームは変わらないように見える。
【0205】
図15の方法のいくつかの例は、ユーザの位置(972)およびユーザの移動(974)に応じてアクションID(315)を選択する(975)ことによって、および、動的アクションリストを生成してアクションを識別することによって、アクション(630)を識別することを含む。すなわち、アクションを識別する2つ以上の方法が、関連して実行され、多くの場合、多くのアクションを識別して実行する。他の例では、アクションの識別は、ユーザの位置(972)およびユーザの移動(974)に応じてアクションID(315)を選択する(975)ことによって、または、動的アクションリストを生成してアクションを識別することによって、または当業者に想起される他のいずれかのアクションの識別方法によって、行われる。
【0206】
前述の記載から、本発明の様々な実施形態において、真の精神から逸脱することなく修正および変更を行い得ることは認められよう。本明細書の記載は、例示の目的のためのみであり、限定の意味に解釈されるものではない。本発明の範囲は、特許請求の範囲の文言によってのみ限定される。
【図面の簡単な説明】
【0207】
【図1】本発明によるデバイス管理方法を実施する際に有用な例示的なアーキテクチャを示すブロック図である。
【図2】例示的なサービスゲートウエイを示すブロック図である。
【図3】本発明によるデバイス管理方法を実施する際に有用な例示的なクラスを示すブロック図である。
【図4】図3の例示的なクラスのいくつかの間の例示的な関係を示すクラス関係図である。
【図5】図3の例示的なクラスのいくつかの間の例示的な関係を示す別のクラス関係図である。
【図6】本発明による例示的なデバイス管理方法を示すデータフロー図である。
【図7】アクションを実行する例示的な方法を示すデータフロー図である。
【図8】本発明に従って、ユーザ計量がユーザの既定計量範囲の外であるか否かを判定する例示的な方法を示すデータフロー図である。
【図9】本発明による例示的なデバイス管理方法を示すデータフロー図である。
【図10】本発明に従って関連計量を生成する例示的な方法を示すデータフロー図である。
【図11】本発明による関連計量を生成する例示的な方法を示すデータフロー図である。
【図12】本発明に従って、ユーザ計量ベクトルを生成する例示的な方法および計量空間を生成する例示的な方法を示すデータフロー図である。
【図13】本発明に従って、ユーザ計量ベクトルがユーザ計量空間の外にあるか否かを判定する例示的な方法を示すデータフロー図である。
【図14】本発明に従って動的アクションリストを生成する例示的な方法を示すデータフロー図である。
【図15】本発明に従ってアクションを識別する例示的な方法を示すデータフロー図である。
【技術分野】
【0001】
本発明の範囲は、データ処理であり、更に具体的には、デバイスを管理するための方法、システム、およびプログラムである。
【背景技術】
【0002】
従来のネットワークは、様々なデバイスを含む。ユーザは、多くの場合、様々なデバイスを用いたり、またはユーザの現在の状況に応じてデバイスの具体的な設定を調整したりする。すなわち、多くの場合、ユーザの現在の状況が動機となって、ユーザは、現在の状況にもっと積極的に役立つ方法でデバイスが動作するようにデバイスの設定を変更する。例えば、頭痛のするユーザは、強い光によって不快感を覚えることがある。ユーザは、光を弱めるか、または消灯して、光によって悩まされないようにすることができる。しかしながら、従来のネットワーク接続デバイスでは、ユーザの状況に応答して特定のデバイスを個別に管理するために、ユーザが介入する必要がある。
【発明の開示】
【発明が解決しようとする課題】
【0003】
ユーザの介入を必要とせずにユーザの状況に応じてデバイスを管理する方法があれば、好都合であろう。
【課題を解決するための手段】
【0004】
本発明の例示的な実施形態は、デバイスの管理方法を含む。かかる例示的な方法は、複数のユーザ計量(metrics)を受信するステップと、複数のユーザ計量を基に関連計量(a relational metric)を生成するステップと、少なくとも1つのユーザ計量および少なくとも1つの関連計量を有するユーザ計量ベクトルを生成するステップと、複数の計量範囲を有するユーザ計量空間を生成するステップと、ユーザ計量ベクトルがユーザ計量空間の外にあるか否かを判定するステップと、を含む。ユーザ計量ベクトルがユーザ計量空間の外にある場合、例示的な実施形態は、アクションを識別するステップと、アクションを実行するステップと、を含む。
【0005】
多くの例示的な実施形態では、複数のユーザ計量を基に関連計量を生成するステップは、ユーザ計量をフィルタリングするステップを含む。いくつかの例示的な実施形態では、複数のユーザ計量を基に関連計量を生成するステップは、第1のフィルタリングしたユーザ計量と第2のフィルタリングしたユーザ計量との間の関係を判定するステップを含む。いくつかの実施形態では、第1のフィルタリングしたユーザ計量と第2のフィルタリングしたユーザ計量との間の関係を判定するステップは、第1のフィルタリングしたユーザ計量を第2のフィルタリングしたユーザ計量と比較するステップを含む。多くの例示的な実施形態では、複数のユーザ計量に応じて関連計量を生成するステップは、第1のフィルタリングしたユーザ計量と第2のフィルタリングしたユーザ計量との間の関係の大きさを判定するステップを含む。
【0006】
いくつかの例示的な実施形態では、複数のユーザ計量を基に関連計量を生成するステップは、複数のユーザ計量が既定の計量パターンに一致するか否かを判定するステップを含む。かかる実施形態の多くは、複数のユーザ計量が既定の計量パターンに一致する場合、関連計量を検索するステップを含む。いくつかの例示的な実施形態では、少なくとも1つのユーザ計量および少なくとも1つの関連計量を含むユーザ計量ベクトルを生成するステップは、少なくとも1つのユーザ計量をユーザ計量ベクトルに関連付けるステップ、および、少なくとも1つの関連計量をユーザ計量ベクトルに関連付けるステップを含む。
【0007】
いくつかの例示的な実施形態では、アクションを識別するステップは、ユーザの位置を判定するステップと、ユーザの位置を基にアクションIDを選択するステップと、
を含む。多くのかかる実施形態では、アクションを識別するステップは、ユーザの移動を判定するステップと、ユーザの移動を基にアクションIDを選択するステップと、を含む。
【0008】
本発明の前述および他の目的、特徴、および利点は、添付図面に例示するような本発明の例示的な実施形態の以下の具体的な説明から明らかであろう。図面において、同様の参照番号は、概ね、本発明の例示的な実施形態の同様の部分を表す。
【発明を実施するための最良の形態】
【0009】
序論
本発明について、デバイスの管理方法の点から、本明細書において詳細に述べる。しかしながら、開示する方法に従って動作する適切なプログラミング手段を含むいかなるコンピュータシステムも、本発明の範囲内に該当することは、当業者には認められよう。
【0010】
適切なプログラム手段は、コンピュータシステムに本発明の方法のステップの実行を指示するためのいずれかの手段を含む。これは、例えば、コンピュータメモリに結合された処理ユニットおよび演算論理回路から成るシステムであって、コンピュータメモリに格納する機能を有するものであり、このコンピュータメモリは、データおよびプログラム命令、処理ユニットによって実行される本発明の方法のプログラムステップを格納するように構成された電子回路を含む。また、本発明は、いずれかの適切なデータ処理システムと共に用いるため、ディスケットまたは他の記録媒体等のコンピュータプログラムプロダクトにおいて具現化することができる。
【0011】
コンピュータプログラムプロダクトの実施形態は、磁気媒体、光媒体、または他の適切な媒体を含む、機械読み取り可能情報のためのいずれかの記録媒体を用いることによって実施することができる。適切なプログラミング手段を有するあらゆるコンピュータシステムが、プログラムプロダクトに具現化される本発明の方法のステップを実行可能であることは、当業者にはすぐに認められよう。本明細書において記載する例示的な実施形態のほとんどは、コンピュータハードウエアにインストールされて実行されるソフトウエアを指向するが、ファームウエアまたはハードウエアとして実施される代替的な実施形態が本発明の範囲内であることは、当業者にはすぐに認められよう。
【0012】
定義
「802.11」は、ワイヤレスLAN技術のための、IEEEが開発した仕様ファミリを指す。802.11は、ワイヤレスクライアントと基地局との間、または2つのワイヤレスクライアント間の、無線インタフェースを規定する。
【0013】
「API」は、「アプリケーションプログラミングインタフェース」の略語である。APIは、ソフトウエアアプリケーションを構築するための、ルーチン、プロトコル、およびツールの集合である。
【0014】
「Bluetooth」は、LANまたは他のネットワーク上での、クライアントデバイス間、またはクライアントデバイスとリソースとの間のRF結合のための短距離無線技術の業界仕様を指す。Bluetooth Special Interest Groupと呼ばれる運営団体が、Bluetoothに準拠するデバイスを試験し認定する。Bluetooth仕様は、設計仕様を提供する「FoundationCore」、および、相互運用性のガイドラインを提供する「FoundationProfile」から成る。
【0015】
「データ通信のための結合」は、ワイヤレス、802.11b、Bluetooth、赤外線、無線、インターネットプロトコル、HTTPプロトコル、eメールプロトコル、ネットワーク接続、直接接続、専用電話線、ダイヤルアップ、RS−232(EIA232)またはユニバーサルシリアルバスによるシリアル接続、配線によるパラレルポート接続、電力線プロトコルに従ったネットワーク接続、および、当業者に想起されるデータ通信のための他の形態の接続等、いずれかの形態のデータ接続を意味する。データ通信のための結合は、データ通信のためのネットワーク接続による結合を含む。本発明の様々な実施形態において有用なネットワークの例は、ケーブルネットワーク、イントラネット、エクストラネット、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、および、当業者に想起される他のネットワーク構成を含む。テレビチャネル、ケーブルチャネル、ビデオ提供業者、電気通信ソース等の間のあらゆるネットワーク接続による結合の使用は、本発明の範囲内である。
【0016】
「ドライバ」は、デバイスを制御するプログラムを意味する。デバイス(プリンタ、ディスクドライブ、キーボード)は、通常ドライバを有する。ドライバは、デバイスと、このデバイスを用いるソフトウエアプログラムとの間の翻訳機として機能する。各デバイスは、そのドライバが知っている専用のコマンド集合を有する。ソフトウエアプログラムは、一般に、汎用コマンドを用いることによってデバイスにアクセスする。従って、ドライバは、プログラムから汎用コマンドを受け、次いで、それらをデバイスのための専用コマンドに翻訳する。
【0017】
「ESN」は、「エレクトロニックシリアルナンバー」の略語である。ESNは、例えばコーヒーポット等のデバイス内にプログラムされて、そのデバイスを一意に識別する通し番号である。
【0018】
「フィールド」。本明細書において、「フィールド」および「データ要素」という語は、文脈によって他の意味を示さない限り、一般に同意語として用いられ、デジタルデータの個々の要素を指す。データ要素の集合を、「レコード」または「データ構造」と称する。レコードの集合を、「テーブル」または「ファイル」と称する。ファイルまたはテーブルの集合を、「データベース」と称する。データ要素に加えて、メンバメソッド(member method)、関数、またはソフトウエアルーチンを含む複合データ構造は、「クラス」と称する。クラスのインスタンスを、「オブジェクト」または「クラスオブジェクト」と称する。
【0019】
「HAVi」は、「Home AudioVideo Interoperability」を表し、特に家庭用娯楽環境のためのベンダー中立のオーディオ−ビデオ規格の名前である。HAViによって、異なる家庭用娯楽および通信デバイス(VCR、テレビ、ステレオ、セキュリティシステム、ビデオモニタ等)を、ネットワーク接続し、サービスゲートウエイ、PC、テレビ等の1つの主デバイスから制御することができる。IEEE1394すなわち「Firewire」仕様を相互接続媒体として用いて、HAViにより、異なるベンダーからの製品が、規定された接続および通信プロトコルならびにAPIに基づいて、互いに適合することができる。HAViの分散アプリケーションシステムが提供するサービスには、アドレシング方式およびメッセージ転送、リソース発見のためのルックアップ、ローカルまたは遠隔イベントの通知および受信、ならびに等時性データストリームのストリーミングおよび制御が含まれる。
【0020】
「HomePlug」は、HomePlug Powerline Allianceを表す。HomePlugは、高速家庭用電力線ネットワーク接続製品およびサービスのオープン仕様作成のためのフォーラムを提供するために形成された非営利目的の団体である。HomePlug仕様は、電力線ネットワーク接続規格を用いて、家庭用電力口を介して家庭にインターネット通信およびマルチメディアを配信するために設計されている。
【0021】
HomePlugプロトコルによって、HomePlug対応デバイスは、無線周波数信号(RF)を用いて電力線を介して通信を行うことができる。HomePlugプロトコルは、直交周波数分割多重(OFDM:Orthogonal FrequencyDivision Multiplexing)を用いて、RF信号を多数のもっと小さいサブ信号に分割し、これらを、電力線を介して異なる周波数で、1つのHomePlug対応デバイスから他のHomePlug対応デバイスに送信する。
【0022】
「HTTP」は、「Hyper TextTransport Protocol」を表し、ワールドワイドウエブのための標準的なデータ通信プロトコルである。
【0023】
「ID」は、「アイデンティフィケーション(識別子)」の略語であり、本明細書中では、慣例的にデータ要素中に表される名詞と共に用いられる。このため、「user ID」はユーザの識別子を指し、「userID」は、ユーザ識別子が格納されているデータ要素の名前である。「ID」の使用の更に別の例では、「metric ID」は計量の識別子であり、「metricID」は、計量の識別子が格納されているデータ要素の名前である。
【0024】
「IEEE1394」は、400Mbps(毎秒4億ビット)までのデータ転送レートをサポートする外部バス規格である。最初にIEEE1394を開発したApple社は、商標名「FireWire」を用いる。他の会社は、i. linkおよびLynx等の他の名前を用いて自社の1394製品を表す。
【0025】
単一の1394ポートを用いて、63までの外部デバイスを接続することができる。高速であることに加えて、1394は、等時性データ転送をサポートする。つまり、保証された速度でデータを送信する。これは、ビデオ等、リアルタイムで高レベルのデータを転送する必要のあるデバイスにとって理想的である。
【0026】
「Internet(インターネット)」は、多数のコンピュータを接続するグローバルネットワークであり、ネットワーク接続プロトコルスタックのネットワーク層として、「インターネットプロトコル」すなわち「IP」を用いる。インターネットは、設計上、分散型である。インターネット上の各コンピュータは独立している。インターネット上の各コンピュータのオペレータは、どのインターネットサービスを用いるか、どのローカルサービスをグローバルインターネットコミュニティに利用可能とするかを選択することができる。インターネットにアクセスするためには、様々な方法がある。America Online等の多くのオンラインサービスが、いくつかのインターネットサービスに対するアクセスを提供する。また、商用インターネットサービスプロバイダ(ISP)によってもアクセスすることができる。「internet(インターネット)」(大文字で始まらない)は、ネットワークプロトコルスタックのネットワーク層としてIPを用いるいずれかのネットワークである。
【0027】
「JAR」は、「Java(登録商標)アーカイブ」の略語である。JARは、Javaアプリケーションが用いるコンポーネントをバンドルするために用いられるファイルフォーマットである。JARファイルは、アプレットのダウンロードを簡略化する。なぜなら、多くのコンポーネント(.classファイル、画像、サウンド等)は、単一のファイルにパッケージ化することができるからである。また、JARはデータ圧縮をサポートし、これによって更にダウンロード時間が短縮する。慣例的に、JARファイルは、「.jar」拡張子で終了する。
【0028】
「JES」は、Java EmbeddedServer(Java埋め込みサーバ)の略語である。JESは、OSGiを商用に実施したものであり、埋め込みデバイスに対するアプリケーションおよびサービスの開発、展開、およびインストールのためのフレームワークを提供する。
【0029】
「LAN」は、「ローカルエリアネットワーク」の略語である。LANは、比較的小さい領域に及ぶコンピュータネットワークである。多くのLANは、単一の建物または建物群に限定されている。しかしながら、1つのLANは、電話線または無線電波によって、いかなる距離を介しても、他のLANに接続することができる。このように接続されたLANのシステムは、ワイドエリアネットワーク(WAN)と呼ばれる。インターネットは、WANの1例である。
【0030】
「Lon Works」は、Echelon(登録商標)から入手可能なネットワーク接続プラットフォームである。Lon Worksは、現在、家電制御および照明制御等の様々なネットワークアプリケーションで用いられている。Lon Worksネットワーク接続プラットフォームは、「LonTalk」と呼ばれるプロトコルを用い、これは、Lon Works対応デバイス内にインストールされた「ニューロンチップ(Neuron Chip)」内に埋め込まれている。
【0031】
ニューロンチップは、多数のプロセッサ、読み取り−書き込みおよび読み取り専用メモリ(RAMおよびROM)、ならびに通信およびI/Oサブシステムを有するチップ上システムである。読み取り専用メモリは、オペレーティングシステム、LonTalkプロトコル、およびI/O機能ライブラリを含む。チップは、構成データおよびアプリケーションプログラムのための不揮発性メモリを有し、これは、Lon Worksネットワークを介してデバイスにダウンロードすることができる。ニューロンチップは、標準的なOSIネットワークモデルの最初の6層を提供する。すなわち、ニューロンチップは、物理層、データリンク層、ネットワーク層、トランスポート層、セッション層、およびプレゼンテーション層を提供する。
【0032】
ニューロンチップは、アプリケーション層のプログラミングを提供しない。Lon Worksネットワークのためのアプリケーションは、「Neuron C」と呼ばれるプログラミング言語で書かれる。Neuron Cで書かれたアプリケーションは、通常、イベント駆動であり、従ってネットワーク上のトラヒックが減少することになる。
【0033】
「OSGI」は、Open ServicesGateway Initiativeを示し、これはサービスゲートウエイのための仕様を開発する業界団体であり、サービスバンドルの送出、コンプライアントなデータ通信を提供するソフトウエアミドルウエア、およびサービスゲートウエイを介したサービスのための仕様に携わる。Open Services Gateway仕様は、Javaベースのアプリケーション層フレームワークであり、サービスプロバイダ、ネットワークオペレータ、デバイス製造業者、および家電製造業者に、ベンダー中立のアプリケーションおよびデバイス層のAPIおよび機能を与える。
【0034】
「OSI Model」すなわちOpenSystem Interconnectionモデルは、7層のプロトコルを実施するためのネットワーク接続フレームワークを規定する。制御は、1つの層から次の層に渡される。1つのネットワーク局においてアプリケーション層から開始し、最下層まで進み、チャネルを介して次のネットワーク局に進み、階層を逆行する。
【0035】
OSIモデルの第7の層は、アプリケーション層である。アプリケーション層は、アプリケーションおよびエンドユーザプロセスをサポートする。アプリケーション層は、ファイル転送、eメール、および他のネットワークソフトウエアサービスのためのアプリケーションサービスを提供する。
【0036】
OSIモデルの第6の層は、プレゼンテーション層である。プレゼンテーション層は、データ提示における相違からの独立を提供する。プレゼンテーション層は、アプリケーションデータフォーマットからネットワークデータフォーマットに、およびその逆への変換を行う。プレゼンテーション層は、時に、「シンタクス層」と呼ばれる。
【0037】
OSIモデルの第5の層は、セッション層である。セッション層は、ネットワーク接続アプリケーション間の接続を確立し、管理し、終了させる。セッション層は、ネットワーク接続アプリケーション間の会話、交換、および対話をセットアップし、調整し、終了させる。
【0038】
OSIモデルの第4の層は、トランスポート層である。トランスポート層は、ネットワーク接続システムまたはホスト間のトランスペアレントな転送を提供する。また、トランスポート層は、フロー制御を担い、完全なデータ転送を保証する。
【0039】
OSIモデルの第3の層は、ネットワーク層である。ネットワーク層は、1つのネットワークノードから別のネットワークノードにデータを送信するため、仮想回路として知られる論理経路を生成する。ルーティング、転送、アドレッシング、およびパケット順序付けが、ネットワーク層の機能である。
【0040】
OSIモデルの第2の層は、データリンク層である。データリンク層は、データパケットをビットに復号し、ビットをデータパケットに符号化する。データリンク層は、送信プロトコルを提供し、物理層におけるデータフロー送信を管理する。
【0041】
データリンク層は、2つのサブ層に分けられる。データリンク層の第1のサブ層は、メディアアクセス制御(MAC:Media Access Control)層である。MACサブ層は、ネットワーク上のコンピュータがデータを送信するためのアクセスおよび許可を制御する。データリンク層の第2のサブ層は、論理リンク制御(LLC:Logical Link Control)層である。LLC層は、物理層におけるデータフロー送信を制御する。
【0042】
OSIモデルの第1の層は、物理層である。物理層は、電気および機械レベルで物理ネットワークを介したビットストリームを送信する(電気インパルス、光または無線信号)。物理層は、データを送受信するためのハードウエアを提供する。
【0043】
「SMF」は、IBM(登録商標)社から入手可能な「Service Management FrameworkTM」を表す。SMFは、サービスゲートウエイ上でネットワーク送信されたアプリケーションを管理するため、OSGiを商用に実施したものである。
【0044】
「USB」は、「ユニバーサルシリアルバス」の略語である。USBは、12Mbpsのデータ転送レートをサポートする外部バス規格である。単一のUSBポートを用いて、マウス、モデム、およびキーボード等の127までの周辺デバイスを接続することができる。また、USBは、プラグアンドプレイのインストールおよびホットプラギング(hot plugging)もサポートする。
【0045】
「WAP」は、ワイヤレスアプリケーションプロトコルを示し、ハンドヘルドワイヤレスデバイスと共に用いるためのプロトコルである。WAPと共に役立つワイヤレスデバイスの例には、携帯電話、ポケットベル、2方向ラジオ、およびハンドヘルドコンピュータが含まれる。WAPは多くのワイヤレスネットワークをサポートし、WAPは多くのオペレーティングシステムによってサポートされる。ハンドヘルドデバイスのために特に設計されたオペレーティングシステムには、PalmOS、EPOC、Windows(登録商標)CE、FLEXOS、OS/9、およびJavaOSが含まれる。ディスプレイを用い、インターネットにアクセスするWAPデバイスは、「マイクロブラウザ(microbrowser)」を実行する。マイクロブラウザは、小さいファイルサイズを用い、これによって、ハンドヘルドデバイスの小さいメモリという制約およびワイヤレスネットワークの低帯域幅という制約に対応することができる。
【0046】
「X−10」は、X−10プロトコルを意味する。典型的なX−10対応デバイスは、X−10送信器およびX−10受信器を用いて、家庭における既存のAC配線等のAC電力配線を介して通信を行う。X−10送信器およびX−10受信器は、無線周波数(RF)信号を用いてデジタル情報を交換する。X−10送信器およびX−10受信器は、デジタル情報を表す短いRFバーストによって通信する。2進数の1は、1ミリ秒の120KHzのバーストによって表され、2進数の0は、120KHzバーストの不在の後にバーストが現れることによって表される。
【0047】
X−10プロトコルでは、データは、フレームと呼ばれるデータストリングの単位で送信される。フレームは、「1110」と指定される4ビットの開始コードで始まる。開始コードの後、フレームは、4ビットの「家コード」によって家等の特定のドメインを識別し、4ビットの「デバイスコード」によってそのドメイン内のデバイスを識別する。また、フレームは、「オン」、「オフ」、「暗い」、「明るい」、「ステータスオン」、「ステータスオフ」、および「ステータス要求」等、特定の予め設定されたコマンドを識別する8ビットのコマンドストリングを含む。
【0048】
例示的なアーキテクチャ
図1は、本発明の実施形態による、デバイスの管理方法を実施する際に有用な例示的なアーキテクチャのブロック図である。図1のアーキテクチャは、ドメイン(118)を含む。本明細書中で、「ドメイン」という語は、特定のネットワーク接続環境を意味する。様々なドメインの例には、家庭のネットワーク、自動車のネットワーク、会社のネットワーク、および当業者によって想起される他のものが含まれる。
【0049】
図1のドメイン(118)は、サービスゲートウエイ(106)を含む。サービスゲートウエイ(106)は、いくつかの例示的なアーキテクチャでは、OSGi準拠サービスゲートウエイ(106)である。本明細書では、デバイスの管理方法の例示的な実施形態は、OSGiを用いて説明するが、多くの他のアプリケーションおよびフレームワークも、本発明によるデバイスの管理方法を実施するように機能し、従って本発明の範囲内にある。また、JESおよびSMF等、OSGiを商用に実施したものも、デバイスの管理方法を実施する際に有用である。
【0050】
図1の例示的なアーキテクチャでは、サービスゲートウエイ(106)は、サービスフレームワーク(126)を含む。図1のサービスフレームワーク(126)は、「サービス」を実行するためのホストプラットフォームである。サービスは、OSGiにおいてアプリケーションを生成するための主構築ブロックである。OSGiサービスフレームワーク(126)は、Javaで書かれ、従って通常、Javaバーチャルマシン(JVM:Java Virtual Machine)(150)上で実行する。
【0051】
図1の例示的なアーキテクチャは、DML(108)を含む。「DML」(108)は、ドメインメディエーション層(Domain Mediation Layer)の略語である。図1のアーキテクチャの多くの実施形態では、DML(108)は、本発明によるデバイスの管理方法を実施する際に有用なアプリケーションソフトウエアである。本発明のいくつかの実施形態では、DMLは、OSGi準拠アプリケーションソフトウエアであり、従って、サービスフレームワーク(126)上にインストールされたサービスまたはバンドルとしてパッケージ化されたサービス群として実施される。本明細書では、多くの場合、DMLについて、OSGiの文脈で考察する。しかしながら、OSGiの考察は説明のためであり、限定のためではない。実際、本発明の様々な実施形態によるDMLは、C、C++、COBOL、FORTRAN、BASIC等、当業者によって実施されるいずれかのプログラミング言語において実施可能であり、Java以外の言語で開発されたDMLは、JVMでなくオペレーティングシステムまたはオペレーティング環境上に直接インストールされる。
【0052】
図1の例示的なアーキテクチャにおいて、サービスゲートウエイ(106)は、データ通信のために計量センサ(406)と結合されている。計量センサ(406)は、ユーザの状況の指示を読み、ユーザの状況の指示に応答してユーザ計量を生成するデバイスである。「ユーザの状況の指示」は、ユーザの状況の定量化可能な特徴であり、この特徴を測定した量である。1例として、ユーザの状況の定量化可能な特徴は、華氏99.2度の体温である。ユーザの状況の定量化可能な特徴の例には、体温、心拍数、血圧、位置、皮膚電気反応、および当業者に想起される他のものが含まれる。
【0053】
「ユーザ計量」は、ユーザ状況の指示を表すデータ構造である。本発明によるデバイスの管理方法の多くの例では、ユーザ計量は、userIDフィールド、metricIDフィールド、および計量値フィールドを含むデータ構造、クラス、またはオブジェクトとして実施される。典型的なuserIDフィールドは、計量によって状況の指示が表されるユーザを識別する。典型的なmetricIDフィールドは、例えば、血圧、心拍数、位置、または皮膚電気反応等、計量が表すユーザ状況の定量化可能な特徴を識別する。典型的な計量値フィールドは、このユーザ状況の特徴を測定した量を格納する。
【0054】
計量センサとして用いるために有用または容易に適合可能な着用可能かつワイヤレスの心拍モニタ、皮膚電気反応モニタ、眼球反応モニタ、および呼吸モニタは、現在、Quibit Systems, Inc.から入手可能である。Body Trends, Inc.からの心拍モニタの「Polar」シリーズ、および、Sentec Corporationからの磁気弾性胃pHセンサは、計量センサとして用いるために有用または容易に適合可能である、容易に入手可能な生物医学センサの他の例である。
【0055】
生物医学センサ等の従来のセンサが、多数のユーザを含むドメインにおいて多数の計量タイプを送信する計量センサとして有用であるためには、センサは、測定する各特徴の値だけでなく、user IDおよびmetric IDも送信すると好都合である。user IDが有用である理由は、本発明の典型的な実施形態が、多くのユーザのために同時にデバイスを管理することができるDMLを含むからである。metric IDが有用である理由は、1人だけのユーザが、同時に2つ以上の計量センサを用いたり、または、ユーザ状況の2つ以上の特徴に関するデータを監視および送信することができる計量センサを用いたりする場合があるからである。全てのワイヤレスセンサは、少なくとも、何らかのワイヤレスデータ通信プロトコルに従って計量値を送信する。いずれかの特定の「既製の」センサがuser IDまたはmetric IDを送信しない場合、かかるセンサは、単にその制御ソフトウエアをわずかに変更することによって、その送信にuser IDおよびmetric IDを含ませるように容易に適合される。
【0056】
ほとんどのDMLがmetric IDおよびuser IDをサポートすると予想されるが、本発明の範囲内のいくつかの状況では、センサがその出力の遠隔測定データにおいてmetric IDおよびuser IDを与えない場合でも、計量センサとして既製のセンサを用いることができる。ただ1人の者が、例えば心拍数等の単一の計量のみを追跡するDMLによって制御または管理されるデバイスを有するドメインに住む例を考える。ただ1人のユーザのための1つのみの計量を追跡するDMLは、計量センサから受信される遠隔測定データに計量種類のコードを必要とせずに機能することができる。これはむろん、ただ1つの種類の計量を受信するからである。この例では、厳密に言えば、Body Trendsからの「Polar」センサ等、既存のBluetooth対応心拍センサが、計量センサとして機能することができるであろう。この例は、説明のためにのみ提示する。なぜなら、実際の問題として、本発明の実施形態によるほとんどのDMLは、2人以上のユーザのために(従って遠隔測定データにuser IDを必要とする)、2つ以上の種類の計量(従って遠隔測定データにmetric IDを必要とする)を管理すると有用かつ有利であると推測されるからである。
【0057】
本発明の多くの実施形態では、計量センサは、データ通信のためにサービスゲートウエイ(106)とワイヤレスで結合すると有利である。多くの代替的な実施形態では、計量センサは、Bluetooth、802.11、HTTP、WAP、または当業者に想起される他のいずれかのプロトコル等の様々なプロトコルを用いて、ユーザ計量を、サービスゲートウエイを介してDMLに送信する。
【0058】
図1の例示的なアーキテクチャでは、ドメイン(118)は、データ通信のためにLAN(105)を介してサービスゲートウエイ(106)と結合されたデバイス(316)を含む。本発明の多くの実施形態では、ドメイン(118)は多くのデバイスを含む。例えば、家庭ドメインは、テレビ、多くの照明、冷蔵庫、冷凍庫、コーヒーポット、自動皿洗い機、乾燥機、CDプレーヤ、DVDプレーヤ、個人用ビデオレコーダ、または当業者に想起される他のいずれかのネットワーク接続可能デバイスを有する家庭ネットワークを含むことができる。説明を容易にするため、図1の例示的なアーキテクチャは、3つのデバイス(316)のみを示すが、いかなる数のデバイスの使用も本発明の範囲内である。
【0059】
デバイス(316)を管理するため、DMLは、デバイス上で属性を獲得し設定するアクセス機構メソッドを含むデバイス用デバイスクラス、および、場合によっては、デバイスと通信するのに必要なプロトコルを提供する通信クラスを有しなければならない。図1のアーキテクチャのいくつかの例では、DMLには、このDMLがサポートする多くのデバイスのためのデバイスクラスおよび通信クラスがプレインストールされている。
【0060】
DMLが特定のデバイスのためのプレインストールされたデバイスクラスおよび通信クラスを有しない場合、DMLは多くの方法でデバイスクラスおよび通信クラスを取得することができる。DMLがデバイスのためのデバイスクラスおよび通信クラスを取得する1つの方法は、デバイスクラスおよび通信クラスをデバイスから読み取ることである。このためには、デバイスクラスおよび通信クラスを格納するために充分なメモリがデバイスにインストールされている必要がある。また、DMLは、インストールされたデバイスクラスおよび通信クラスを含まないデバイスからデバイスクラスおよび通信クラスを取得することができる。DMLがデバイスクラスおよび通信クラスを取得する1つの方法は、デバイスからデバイスIDを読み取り、インターネットでデバイスクラスおよび通信クラスを検索し、それらをダウンロードすることである。DMLがデバイスクラスおよび通信クラスを取得する別の方法は、デバイスからネットワーク位置を読み取り、そのネットワーク位置からデバイスクラスおよび通信クラスをダウンロードすることである。本発明に従ってデバイスを管理するために必要なデバイスクラスおよび通信クラスを取得するための3つの方法を記載した。また、他の方法も、当業者には想起されよう。
【0061】
図1の例示的なアーキテクチャは、データ通信のためにWAN(104)を介してサービスゲートウエイ(106)に結合された非ドメインエンティティ(102)を含む。「非ドメインエンティティ」は、データ通信のためにドメインに結合されるがドメイン内にはない、いずれかのコンピューティングデバイスまたはネットワーク位置である。「非ドメインエンティティ」という語は大まかなものであり、これが図1のアーキテクチャに含まれると、本発明によるデバイスの管理方法を実施する際に有用なアーキテクチャの多くの実施形態において、所与のドメインを、データ通信のために、外側の非ドメインエンティティと結合することが認められる。
【0062】
非ドメインエンティティの1例は、ドメイン内にインストールされたデバイス(316)の製造業者のウエブサーバ(ドメインの外側)である。製造業者は、デバイスのドライバのダウンロード、デバイスの更新、またはデバイス用の他のいずれかの情報またはソフトウエアのために利用可能となるウエブサイトを運営することができる。デバイスのためのドライバ、更新、情報またはソフトウエアは、WANを通して、サービスゲートウエイを介して、デバイスにダウンロードすることができる。
【0063】
図2は、本発明によるデバイスの管理方法を実施する際に有用な例示的なサービスゲートウエイ(106)のブロック図である。図2のサービスゲートウエイ(106)は、本発明の実施形態において有用ないくつかの例示的なアーキテクチャにおいて、OSGi準拠サービスゲートウエイ(106)である。デバイスの管理方法の例示的な実施形態は、OSGiを用いて本明細書中で説明するが、OSGi以外の多くの他のアプリケーションおよびフレームワークも、本発明によるデバイスの管理方法を実施するように機能し、従って本発明の範囲内である。また、JESおよびSMF等、OSGiを商用に実施したものは、本発明の方法を実施する際に有用である。
【0064】
OSGiは、「Open ServicesGateway Initiative」を表す。OSGi仕様は、Javaベースのアプリケーション層フレームワークであり、家庭、自動車、および他の環境においてネットワークで動作する任意の通信プロトコルを用いた様々なデバイスに、ベンダー中立のアプリケーションおよびデバイス層のAPIおよび機能を提供する。OSGiは、Ethernet、Bluetooth、「Home, Audio and Video InteroperabilityStandard(HAVi)」、IEEE1394、ユニバーサルシリアルバス(USB)、WAP、X−10、Lon Works、HomePlugのような様々なネットワーク接続技術、および他の様々なネットワーク接続技術によって機能する。OSGi仕様は、www.osgi.orgでOSGiのウエブサイトから無料でダウンロードすることができる。
【0065】
図2のサービスゲートウエイ(106)は、サービスフレームワーク(126)を含む。多くの例示的な実施形態では、サービスフレームワークは、OSGiサービスフレームワーク(126)である。OSGiサービスフレームワーク(126)は、Javaで書かれ、従って、通常、Javaバーチャルマシン(JVM)上で動作する。OSGiでは、図1のサービスフレームワーク(126)は、「サービス」(124)を実行するためのホストプラットフォームである。本開示において、「サービス」または「複数のサービス」という語は、文脈にもよるが、一般にOSGi準拠のサービスを指す。
【0066】
サービス(124)は、OSGiに従ってアプリケーションを生成するための主構築ブロックである。サービス(124)は、ある機構を実現するJavaクラスおよびインタフェースのグループである。OSGi仕様は、多数の標準サービスを提供する。例えば、OSGiは、HTTPクライアントからの要求に応答可能であるウエブサーバを生成する標準的なHTTPサービスを提供する。
【0067】
また、OSGiは、デバイスアクセス仕様と呼ばれる標準サービス集合を提供する。デバイスアクセス仕様(「DAS:Device Access Specification」)は、サービスゲートウエイに接続するためのデバイスを識別し、そのデバイス用のドライバを検索し、デバイス用ドライバをインストールするためのサービスを提供する。
【0068】
OSGiにおけるサービス(124)は、実行のためにサービス(124)が必要とする他のファイル、画像、およびリソースと共に「バンドル」(121)にパッケージ化されている。バンドル(121)は、Javaアーカイブすなわち「JAR」ファイルであり、1つ以上のサービス実施(124)、アクティベータクラス(127)、およびマニフェストファイル(125)を含む。アクティベータクラス(127)は、バンドルを開始および停止するためにサービスフレームワーク(126)が用いるJavaクラスである。マニフェストファイル(125)は、バンドル(121)の内容を記述する標準テキストファイルである。
【0069】
図2の例示的なアーキテクチャは、DML(108)を含む。本発明の多くの実施形態では、DMLは、デバイスの管理方法を実行するOSGiサービスである。図2のDML(108)は、バンドル(121)内でパッケージ化され、サービスフレームワーク(126)上にインストールされる。
【0070】
また、OSGiのサービスフレームワーク(126)は、サービスレジストリ(128)を含む。サービスレジストリ(128)は、サービス登録(129)を含み、これは、フレームワーク(126)上にインストールされサービスレジストリ(128)に登録された各バンドル(121)ごとに、サービスの名前およびサービスを実施するクラスのインスタンスを含む。バンドル(121)は、このバンドル(121)に含まれておらずフレームワークサービスレジストリ(128)上に登録されているサービスを要求することができる。サービスを見つけるために、バンドル(121)は、フレームワークのサービスレジストリ(128)上でクエリを実行する。
【0071】
例示的なクラスおよびクラス協働
図3は、本発明によるデバイスの管理方法を実施する際に有用な例示的クラスを示すブロック図である。図3の例示的なクラスは、限定のためではなく、本発明の理解に役立てるために提示する。本発明によるデバイスの管理方法は、本明細書中で、Javaに関連付けて一般的に論じるが、Javaは、限定のためでなく説明のためにのみ用いる。実際、本発明によるデバイスの管理方法は、C++、Smalltalk、C、Pascal、Basic、COBOL、Fortran等を含む、当業者に想起される多くのプログラミング言語で実施可能である。
【0072】
図3のクラス図は、例示的なDMLクラス(202)を含む。図3の例示的なDMLクラス(202)のインスタンスは、本発明によるデバイスの実施に有用なステップを実行するメンバメソッドを提供する。図3の例示的なDMLクラスは、Activator.start()メソッドによって示すので、DMLは、OSGIフレームワークにおけるサービスとして開始することができる。このDMLのために1つのみのメンバメソッドを示すが、DMLは、実際、特定の実施形態に必要なもっと多くのメンバメソッドを有することが多い。また、図3のDMLクラスは、多くの場合DMLの構築者によって生成される、サービスクラスに対する参照を格納するためのメンバデータ要素を含む。この例では、DMLは、計量サービス(552)、計量範囲サービス(558)、通信サービス(554)、アクションサービス(560)、デバイスサービス(556)、計量ベクトルサービス(559)、計量空間サービス(561)、および動的アクションリストサービス(563)に対する参照のための記憶フィールドを提供する。
【0073】
図3の計量サービスクラス(204)が提供するメンバメソッドは、DMLからユーザ計量を受信し、DMLからのユーザ計量の受信に応答して、計量クラスのインスタンスを生成する。図3の計量サービスクラス(204)は、createMetric(userID, MetricID, Metric Value)メンバメソッド(562)を含む。CreateMetric()メンバメソッドは、いくつかの実施形態では、計量IDによってパラメータで表されるファクトリメソッド(factory method)であり、その計量IDに応じた計量オブジェクトを生成して戻す。DMLからユーザ計量を取得したことに応答して、図3の計量サービスクラス(204)の例示的なインスタンスは、計量クラスのインスタンスを生成し、新しい計量オブジェクトに対する参照をDMLに戻す。
【0074】
厳密に言えば、本発明の限定において、ファクトリメソッドによる計量オブジェクトの生成をDMLに要求するものはない。DMLは、例えば、以下の疑似コードセグメントにおいて例示するように進行することができる。
【数1】
【0075】
この例では、計量オブジェクトを生成し、アクセス機構メソッドを用いてそのメンバデータをロードする。この手法は、各計量ごとに全く同じ計量オブジェクトクラスを提供するが、計量によって異なる具体的クラス構造を利用することが有利な状況がある。例えば、心拍数および血圧の計量の場合、双方の計量値を整数として符号化することができ、この場合、例えば、GPS送受信器からの地表面上の極座標用の計量値を、例えばそれ自身の位置クラスも有する、より複雑なデータ構造に符号化すると有利な場合がある。ファクトリメソッドを用いると、2つ以上の計量クラスの使用が容易になる。計量オブジェクトを生成するためにファクトリメソッドを用いたDMLは、以下の例示的な疑似コードセグメントに示すように進行することができる。
【数2】
【0076】
この例は、ファクトリメソッドcreateMetric()を利用して、新しい計量オブジェクト内にパラメータ値をセットする。計量サービスおよび計量オブジェクトのためのファクトリメソッドは、以下の疑似コードセグメントに示すように実施することができる。
【数3】
【0077】
この例におけるMetricServiceは、ファクトリメソッドを含む、いわゆるパラメータ化ファクトリ設計パターンを実施する。この例では、ファクトリメソッドは、「createMetricObject()」という名前のメンバメソッドである。createMetricObject()は、3つのパラメータ、すなわちユーザID、計量ID、および計量値を受け取る。createMetricObject()は、計量IDに応じてスイッチステートメント(switch statement)を実施して、特定の具体的な計量クラスを選択しインスタンス化する。この例における具体的な計量クラスは、HeartRatemetric、BloodPressureMetric、およびGPSMetricであり、それらの各々は、Metricベースクラスを拡張する。createMetricObject()は、呼び出し側のDMLに、新しい計量オブジェクトに対する参照を戻す。DMLからの呼び出しは以下の通りであるが、
Metric aMetric=MetricService.createMetricObject(userID,metricID, metricValue)
これは多形であり、ベースクラスMetricに対する参照を利用するので、呼び出し側のDMLは、どの計量オブジェクトのクラスが実際にインスタンス化されて戻されるのかを知らないし、気にもしない。以下は、Metricベースクラスを拡張する地表面上のユーザの位置を表す具体的な計量クラスを規定するための、Metricベースクラスの拡張例である。
【数4】
【0078】
この例の具体的なクラスGPSMetricは、緯度および経度のための記憶領域を提供する。GPSMetricは、構築者にGPSMetric()を提供し、これは、userIDおよびmetricIDを設定するために整数の引数を取るが、そのmetricValue引数がGPSLocationオブジェクトに対する参照であると予想し、更にこのオブジェクトが、緯度および経度のためのメンバデータの記憶領域を提供する。
【0079】
図3のクラス図は、例示的な計量クラス(206)を含む。図3の例示的な計量クラス(206)は、ユーザ計量を表す。ユーザ計量は、ユーザ状況の指示を記述するデータを有する。ユーザの状況の指示は、ユーザ状況の定量化可能な特徴であり、この特徴を測定する量である。ユーザ状況の定量化可能な特徴の例は、体温、心拍数、血圧、位置、皮膚電気応答、および当業者に想起されるいずれかの他のユーザ状況の特徴を含む。
【0080】
図3の例示的な計量クラス(206)は、ユーザIDフィールド(486)、計量IDフィールド(488)、値フィールド(499)を含む。ユーザIDフィールド(486)は、ユーザを識別する。計量ID(488)は、計量クラスのインスタンスが表すユーザ計量を識別する。すなわち、ユーザ計量の種類である。値フィールド(490)は、ユーザ計量の値を含む。
【0081】
また、図3の例示的な計量クラスは、計量アクションリスト(622)のためのデータ記憶領域を含む。計量アクションリストは、アクションを識別するアクションIDを含むデータ構造であり、このアクションIDは、実行されると、計量が表すユーザ状況の同じ特徴に影響を与えるようにデバイスを管理する。例えば、体温の計量は、実行されると天井のファンをオンするアクションIDを含む関連計量アクションリストを有することができる。デバイスの管理方法の多くの例では、計量アクションリストにおけるアクションIDを用いて、動的アクションリストに含むためのアクションIDを識別する。
【0082】
例示的な計量クラス(206)は、様々な実施形態において汎用クラスとして使用可能なクラスの1例であり、そのインスタンスを用いて、上述のような同一または類似のメンバデータ要素を有する2つ以上の種類の計量を格納または表現することができる。代替的に、他の実施形態では、この例の計量クラス(206)のようなクラスを、ベースクラスとして用いて、具体的な導出されたクラスによって拡張することができ、その各々が、上述した広く異なるメンバデータ種類を有することができる。
【0083】
図3のクラス図は、例示的な関連計量サービスクラス(684)を含む。例示的な関連計量サービスクラスは、メンバメソッドすなわちcreateRelationalMetric()(686)を含む。多くの実施形態において、createRelationalMetric()(686)は、計量キャッシュ内のユーザ計量間の関係を決定し、計量キャッシュ内のユーザ計量間の決定した関係を表す関連計量をインスタンス化する。他の実施形態では、createRelationalMetric()は、計量キャッシュ内のユーザ計量を、既定の計量パターンを形成する既定の計量集合と比較する。計量キャッシュ内のユーザ計量が、既定の計量パターンを形成する既定の計量と一致する場合、createRelationalMetricは、既定の計量パターンが定める関係を表す予め生成された関連計量を検索する。
【0084】
図3のクラス関係図は、関連計量を含む。関連計量は、計量キャッシュ内のユーザ計量に応じて生成されるか、またはユーザ計量がキャッシュに到着することを予想して生成される計量である。すなわち、関連計量は、場合によっては、計量キャッシュ内のユーザ計量間の関係を決定した結果として生成される。他の場合、関連計量は、所定の計量の所定パターンに応じて生成される計量である。かかる所定の関連計量は、多くの場合、計量キャッシュ内のユーザ計量に応じて、関連データベースから選択される。
【0085】
図3の例示的な関連計量は、ユーザを識別するuserIDフィールドを含む。図3の関連計量は、計量IDフィールドを含む。また、関連計量は、値フィールド(490)も含む。多くの場合、値フィールドは、典型的に、関連計量が表す特定の関係の大きさを表す。いくつかの例では、関係レコードは、関連計量の異なる特徴を表す2つ以上の値フィールドを有することができる。例えば、「移動」の関連計量は、方向を示す値フィールド、および、速度を示す別の値フィールドを有することができる。
【0086】
図3のクラス図は、計量ベクトルサービス(207)を含む。図3の計量ベクトルサービスクラス(207)は、メンバメソッドを提供し、これは、計量サービスからのユーザ計量および関連計量サービスからの関連計量の受信に応答して、計量ベクトルクラスのインスタンスを生成する。多くの例示的な実施形態では、createMetric vectorObject()メンバメソッド(565)は、ユーザID、ユーザ計量の計量IDおよび関連計量に応じて、計量ベクトルリストから、ユーザ計量ベクトルのための計量ベクトルIDを識別する。計量ベクトルサービスの計量ベクトルリストに計量ベクトルが存在しない場合、計量ベクトルサービスは、1つの計量ベクトルをインスタンス化し、その計量ベクトルIDを、関連するユーザIDおよび計量IDによって示して、計量ベクトルテーブルに格納する。計量ベクトルオブジェクトの生成は、以下の疑似コードセグメントに示すように実施可能である。
【数5】
【0087】
上述の疑似コードの例では、計量ベクトルサービスが、計量ベクトルサービスの計量ベクトルテーブル内に計量ベクトルが識別されていないuserIDを有する計量または関連計量を受信すると、計量ベクトルサービスは、ユーザのために新しい計量ベクトルIDを有する新しい計量ベクトルを生成し、その計量ベクトルを計量ベクトルリストに追加する。
【0088】
図3のクラス図は、計量ベクトルクラス(606)を含む。計量ベクトルクラスのオブジェクトは、ユーザ状況の複雑な指示を表す。ユーザ計量ベクトルは、通常、ユーザ計量の集合を含み、その各々は、ユーザの状況の単一の定量化可能な特徴およびその特徴を測定する量、ならびに、計量キャッシュ内のユーザ計量からまたはそれを予想して生成した関連計量を表す。従って、複数の異なるユーザ計量から成るユーザ計量ベクトルは、ユーザ状況の多数の定量化可能な特徴およびその特徴を測定する多数の量を有するユーザ状況の複雑な指示を表す。計量ベクトルクラス(606)は、ユーザを識別するユーザID(486)を格納するためのデータ要素、および、複数の異なる計量オブジェクトに対する参照を格納するための計量リスト(652)を含む。
【0089】
また、図3の例示的な計量ベクトル(606)は、動的アクションリスト(626)のためのデータ記憶領域を含む。動的アクションリストは、アクションIDのリストであり、ユーザ計量空間の対応する計量範囲の外にあるユーザ計量ベクトルの特定の計量に関連付けた計量アクションリストに応じて生成される。すなわち、対応する計量範囲の外にある計量ベクトルの各計量は、関連する計量アクションリストを有する。動的アクションリストは、ユーザ計量空間の対応する計量範囲の外にあるユーザ計量ベクトルの特定の計量に関連する計量アクションリストに応じて識別されるアクションIDを含む。動的アクションリストは、ユーザの現在の状況に合わせたアクションIDのリストを提供すると有利である。
【0090】
また、例示的な計量ベクトルクラスのオブジェクトは、通常、計量ベクトルがユーザ計量空間の外にあるか否かを判定するメンバメソッドを含む。この例示的な計量ベクトルクラスは、様々な実施形態で汎用クラスとして使用可能なクラスの1例であり、そのインスタンスを用いて、同一または同様のメンバデータ要素を有する2つ以上の種類のベクトルを格納または表すことができる。代替的に、他の実施形態では、この例の計量ベクトルクラス等のクラスをベースクラスとして用いて、各々が異なるメンバデータ種類を有し得る具体的な導出クラスによって拡張することができる。
【0091】
図3のクラス図は、計量範囲サービスクラス(208)を含む。計量範囲サービスクラス(208)は、計量範囲クラスのインスタンスをインスタンス化するメンバメソッドを提供する。図3の計量範囲サービスクラス(208)は、createRangeObject(UserID, MetricID)メンバメソッド(572)を含む。CreateRangeObject()メンバメソッドは、userIDおよびmetric IDに応じて計量範囲オブジェクトを生成するuserIDおよびmetric IDによってパラメータで表されるファクトリ方法である。CreateRangeObject()ファクトリメソッドは、計量ベクトルに、計量範囲オブジェクトに対する参照を戻す。CreateRangeObject()は、createMetricObject()ファクトリメソッドの説明において提供した例示的な疑似コードによって概説した同じ設計パターンを用いて実施可能なパラメータ化ファクトリメソッドである。
【0092】
図3のクラス図は、例示的な計量範囲クラス(210)を含む。例示的な計量範囲クラスのインスタンスは、計量または関連計量についてユーザのために既定された計量範囲を表す。計量範囲オブジェクトにおける最大値および最小値を、計量値と比較して、計量オブジェクトの計量値が既定された計量範囲の外にあるか否かを判定する。図3の例示的な計量範囲クラス(210)は、計量範囲を識別する範囲IDフィールド(463)およびユーザ計量を識別する計量IDフィールド(462)を含む。図3の例示的な計量範囲クラス(210)は、ユーザを識別するユーザIDフィールド(464)を含む。また、計量範囲クラスは、計量範囲を規定する最大値および最小値を含むMaxフィールド(468)およびMinフィールド(470)を含む。
【0093】
図3の例示的な計量範囲クラス(210)は、いわゆるデータオブジェクト、すなわち、クラスのメンバメソッドによってほとんどまたは全く処理が行われていないデータのコンテナ(container)としてのみ機能するクラスの1例である。この例では、計量範囲クラスのオブジェクトは、主に、計量範囲の最小および最大値を他のオブジェクト間で転送するために用いられる。図3の計量範囲クラスは、デフォルトコンストラクタ(constructor)(図示せず)を含むが、厳密に言えば、他のメンバメソッドは必要としない。計量範囲クラスに、他のメンバメソッドが与えられていなければ、協働オブジェクトは、例えば「someMetricRange.max」または「someMetricRange.min」等の符号化によって直接そのメンバデータ要素にアクセスすることができるであろう。しかしながら、この場合の特定の例(210)は、その範囲の最小および最大値のためのアクセス機構メソッド(471、473)を含むものとして例示し、本発明によって必要としない実施であるが、オブジェクト指向パラダイムにおけるプログラミングと一致する。
【0094】
図3のクラス図は、計量空間サービスクラス(209)を含む。計量空間サービスクラス(209)は、メンバメソッドcreateMetricSpace()を含み、これは、計量空間リストまたは他のデータ構造を検索して、ユーザのための計量空間を識別する。かかる計量空間が存在しない場合、createMetricSpace()は1つの計量空間をインスタンス化し、計量空間リストに計量空間IDを格納する。計量空間オブジェクトの生成は、以下の例示的な疑似コードによって実施可能である。
【数6】
【0095】
上述の疑似コードの例では、計量空間サービスは、計量空間リストから計量空間を検索する。リストが、userIDおよび計量ベクトルIDのための計量空間を含まない場合、MetricSpaceService.createMetricSpace(userID, MetricVectorIC)が、新しい計量空間IDを有する新しい計量空間を生成する。
【0096】
図3のクラス図は、計量空間クラスを含む。ユーザ計量空間は、異なるユーザ計量および関連計量のための複数のユーザ計量範囲から成る。例示的な計量空間は、ユーザを識別するユーザ計量(405)および計量空間を識別する空間ID(908)を格納するためのデータ要素を含む。また、図3の計量空間(610)は、ユーザ計量および関連計量の異なる計量範囲に対する参照リストのためのデータ記憶領域(655)を含む。計量空間の異なる計量範囲は、本質的に、ユーザ計量ベクトルにおける計量に対応する。すなわち、典型的な実施形態では、ユーザ計量ベクトルは、異なる現在のユーザ計量および関連計量の集合を含み、ユーザ計量空間は、ユーザのための対応する計量範囲の集合を含む。
【0097】
図3のクラス図は、アクションサービスクラス(217)を含む。アクションサービスクラスは、メンバメソッドを含み、これらは、ユーザ計量または関連計量のための計量アクションリストをインスタンス化し、アクションオブジェクトをインスタンス化し、アクションリストのアクションオブジェクトに対する参照を格納し、呼び出し側の計量に、アクションリストに対する参照を戻す。それらの全ては、以下の例示的な疑似コードによって示すように実施可能である。
【数7】
【0098】
ActionServiceクラスにおけるcreateActionList()メソッドは、「ActionList anActionList=newActionList()」によってユーザ計量のための計量アクションリストをインスタンス化する。次いで、createActionList()は、データベースのアクションレコードテーブルから、その呼び出しパラメータに一致するユーザIDおよび計量IDを有するレコードを検索する。テーブル内の一致する各レコードごとに、createActionList()は、そのスイッチステートメントによってアクションオブジェクトをインスタンス化する。スイッチステートメントは、アクションレコードテーブルから検索した各アクションIDごとに特定の具体的な導出アクションクラスを選択する。createActionList()は、「anActionList.add()」によってアクションリストに各アクションオブジェクトに対する参照を格納する。createActionList()は、「return andActionList」によってアクションリストに対する参照を戻す。
【0099】
図3のクラス図は、例示的なアクションクラス(216)を含む。アクションクラスのインスタンスは、実行されると結果としてデバイスの管理を行うアクションを表す。図3の例示的なアクションクラスは、アクションIDフィールド(450)を含む。例示的なアクションクラス(216)のdoAction()メソッド(456)は、例えば、DeviceService.createDeviceList()に対する呼び出しから、デバイスリスト(458)を取得するようプログラムされる。また、Action.doAction()(456)は、通常、そのデバイスリストの各デバイスにおいてインタフェース方法を呼び出してデバイス制御アクションを実行するようプログラムされる。
【0100】
図3のクラス図は、動的アクションリストサービスを含む。図3の動的アクションリストサービスは、メンバメソッドcreateDynamicList()(569)を含む。多くの実施形態において、createDynamicListは、ユーザ計量ベクトル内のメンバメソッドによって呼び出され、それらの対応する計量範囲の外にある特定の計量に関連した計量アクションリストから検索したアクションIDによってパラメータで表す。createDynamicListは、計量アクションリストから検索した計量IDに応じて識別したアクションIDを含む動的アクションリストを生成し、動的アクションリストに対する参照を呼び出し側に戻す。
【0101】
図3のクラス図は、デバイスサービスクラス(218)を含む。デバイスサービスクラスは、createDeviceList(actionID)という名前のファクトリメソッドを提供し、これは、デバイスのリストを生成し、リストに対する参照を戻す。個の例では、createDeviceList()は、上述のActionService.createActionList()と同様に動作し、デバイスリストをインスタンス化し、デバイステーブルで、一致するアクションIDエントリを有するデバイスレコードからデバイスIDを検索し、各々の具体的な導出デバイスクラスのデバイスオブジェクトをインスタンス化し、デバイスリストに、新しい各デバイスオブジェクトに対する参照を追加し、呼び出し側のアクションオブジェクトに、デバイスリストに対する参照を戻す。しかしながら、この例では、ファクトリメソッドcreateDeviceList()は、そのサポートするデータテーブルからデバイスIDを検索するだけでなく、以下の例示的な疑似コードに示すように、インスタンス化した各デバイスオブジェクトによって制御される物理的デバイスのネットワークアドレスまたは通信位置を検索する。
【数8】
【0102】
DeviceServiceクラスのcreateDeviceList()メソッドは、「DeviceList aDeviceList =newDeviceList()」によって計量のためのデバイスリストをインスタンス化する。次いで、createDeviceList()は、データベース内のデバイスレコードテーブルから、その呼び出しパラメータに一致するアクションIDを有するレコードを検索する。テーブル内の一致する各レコードごとに、createDeviceList()は、そのスイッチステートメントによってデバイスオブジェクトをインスタンス化し、3つのパラメータすなわちCommsService、deviceAddress、およびdeviceIDを渡す。CommsServiceは、通信サービスに対する参照であり、ここから、デバイスオブジェクトは、デバイスオブジェクトが制御する物理的デバイスとの通信に用いる通信オブジェクトに対する参照を得ることができる。deviceAddressは、ネットワークアドレスであり、特定のデバイスオブジェクトが制御する物理的デバイスの上述のようなデバイステーブルから得られる。スイッチステートメントは、デバイステーブルから検索した各デバイスIDごとに特定の具体的な導出デバイスクラスを選択する。createDeviceList()は、「aDeviceList.add()」によってデバイスリストの各デバイスオブジェクトに対する参照を格納する。createDeviceList()は、「return aDeviceList」によって、デバイスリストに対する参照を戻す。
【0103】
図3のクラス図は、例示的なデバイスクラス(214)を含む。図3の例示的なデバイスクラス(214)は、アクションの実行によって管理される物理的デバイスを一意に識別するdeviceIDフィールド(472)を含む。図3の例示的なデバイスクラス(214)は、データ通信ネットワーク上の物理的デバイスの位置を識別するアドレスフィールド(480)を含む。図3の例示的なデバイスクラス(214)は、デバイスクラスのインスタンスと物理的デバイスとの間の通信を行うためにデータ通信プロトコルを実施する通信クラスのインスタンスに対する参照のための通信フィールド(478)を提供する。
【0104】
図3のデバイスクラスは、デバイスの現在の属性値を含む属性フィールド(481)を含む。デバイスの現在の属性の例は、デバイスが「オン」または「オフ」であることの指示である。現在の属性の他の例は、デバイスの特定の設定を示す値を含む。また、図3のデバイスクラスは、物理的デバイスの属性を取得および設定するためのアクセス機構方法(474、476)を含む。図3の例示的なデバイスクラスは、1つのみの属性フィールドと、その属性を取得および設定するためのアクセス機構方法とを含むが、本発明の方法を実施する際に有用な多くのデバイスクラスは、2つ以上の属性をサポートすることができる。また、かかるクラスは、デバイスクラスがサポートする各属性の属性IDフィールドと、その属性を取得および設定するためのアクセッサメソッドとを含むことができる。
【0105】
図3の例示的なクラス図は、通信サービスクラス(219)を含む。通信サービスクラス(219)は、デバイスクラスのインスタンスと物理的デバイスとの間の通信を実行するためのデータ通信プロトコルを実施する通信オブジェクトをインスタンス化するcreateCommsObject(deviceID, networkAddress)(574)という名前のファクトリメソッドを提供する。createCommsObject()メソッド(574)は、その呼び出しパラメータに一致するデバイスIDを有する通信クラステーブル内の通信クラスレコードで通信クラスIDを検索する。多くの実施形態では、createCommsObject()メソッド(574)は、上述のようにスイッチステートメントによって識別された特定の具体的な導出通信クラスをインスタンス化し、コンストラクタに、そのパラメータリストからnetworkAddressを渡すので、新しい通信オブジェクトは、その新しいオブジェクトがデータ通信を行うネットワーク上のアドレスを知っている。具体的な各導出通信クラスは、特定のデータ通信プロトコル、Bluetooth、802.11b、LonWorks、X−10等の特定のデータ通信プロトコルに従ってデータ通信を行うように設計されている。
【0106】
図3のクラス図は、例示的な通信ベースクラス(215)を含む。典型的な実施形態では、少なくとも1つの具体的な通信クラスを、特定のDMLがサポートする各データ通信プロトコルごとに、ベースクラスから導出する。具体的な各通信クラスは、通信デバイスオブジェクトおよび物理的デバイスのための特定のデータ通信プロトコルを実施する。具体的な各通信クラスは、インタフェースメソッド(482、484)を無効にすることによって特定のデータ通信プロトコルを実施して、プロトコルに従った実際のデータ通信を実施する。
【0107】
通信クラスによって、デバイスクラス(214)は、様々な物理的デバイスとの通信に必要な特定のプロトコルに関して独立して動作することができる。例えば、ユーザの家のある照明は、LonWorksプロトコルを用いて通信を行うことができるが、ユーザの家の別の照明は、X−10プロトコルを用いて通信を行うことができる。双方の照明は、一方がLonWorksを実施し他方がX−10を実施する異なる通信クラスの通信オブジェクトを用いて、同じデバイスクラスのデバイスオブジェクトによって制御することができる。双方のデバイスオブジェクトは、同じ通信クラスインタフェースメソッド、send()(482)およびreceive()(484)に対する呼び出しによって照明を制御し、実際にそれらの通信オブジェクトが異なるプロトコルを用いることを知らないし、気にもしない。
【0108】
図4は、図3の例示的なクラス間の例示的な関係を示すクラス関係図である。図4のクラス関係図では、実線の矢印はインスタンス化を表す。実線の矢印は、インスタンス化しているクラスからインスタンス化されているクラスを指し示す。図4のクラス関係図では、点線の矢印は参照を表す。矢印は、参照されるクラスから、この参照されるクラスに対する参照をオブジェクトが有するクラスを指し示す。すなわち、点線の矢印によって、複合のオブジェクト指向関係すなわちクラス間の「has−a」関係が示される。
【0109】
図4の例示的なクラス関係図は、DMLクラス(202)を含む。DMLクラス(202)のDMLオブジェクトは、計量サービスクラス(204)のオブジェクト、計量ベクトルサービスクラス(207)のオブジェクト、および計量空間サービスクラス(209)のオブジェクトをインスタンス化する。また、DMLオブジェクトは、計量範囲サービスクラス(208)のオブジェクト、アクションサービスクラス(217)のオブジェクト、および動的アクションリストサービスクラス(211)のオブジェクトをインスタンス化する。また、DMLオブジェクトは、デバイスサービスクラス(218)のオブジェクトおよび通信サービスクラス(219)のオブジェクトをインスタンス化する。DMLが計量センサから計量(200)を受信すると、DMLは以下のような呼び出しを用いる。
【数9】
これによって、計量サービス(204)は、計量クラス(206)のオブジェクトをインスタンス化する。計量サービスは、計量オブジェクト(206)に対する参照を、計量ベクトルサービスオブジェクト(207)に渡す。計量オブジェクトは、アクションサービスクラス(217)のオブジェクトに対する参照および計量アクションリスト(622)を含む。
【0110】
図4のクラス関係図に示すように、計量ベクトルサービス(207)は、計量ベクトルクラス(606)のオブジェクトをインスタンス化する。多くの実施形態において、計量ベクトルサービスクラスは、計量オブジェクトに対する参照を受信し、createMetricVectorObject()等のパラメータで表したファクトリメソッドを用いて、計量ベクトルオブジェクトをインスタンス化する。図4のクラス関係図に示すように、計量ベクトルクラス(606)のオブジェクトは、計量クラス(206)のオブジェクトに対する参照、計量空間サービスクラス(209)のオブジェクト、計量空間クラス(610)のオブジェクト、動的アクションリストサービスクラス(211)のオブジェクトおよび動的アクションリスト(212626)を含む。
【0111】
図4のクラス関係図に示すように、計量空間サービス(209)は、計量空間クラス(610)のオブジェクトをインスタンス化する。多くの例示的な実施形態では、計量空間サービスは、createMetricSpace()等のパラメータで表したファクトリメソッドを用いて、計量空間オブジェクトをインスタンス化する。計量空間サービスは、計量ベクトルオブジェクトに、計量空間オブジェクト(610)に対する参照を渡す。計量空間オブジェクト(610)は、計量範囲クラス(210)のオブジェクトに対する参照を含む。図4のクラス関係図に示すように、計量範囲サービス(208)は、計量範囲クラス(210)のオブジェクトをインスタンス化する。本発明の多くの例示的な実施形態では、計量範囲サービス(208)は、createRangeObject()等のパラメータで表したファクトリメソッドを用いて、計量範囲(210)をインスタンス化する。計量範囲サービス(208)は、計量範囲(210)に対する参照を、計量空間サービス(209)に渡す。
【0112】
図4のクラス関係図に示すように、アクションサービス(217)は、計量アクションリスト(622)およびアクションクラス(216)のオブジェクトをインスタンス化する。計量アクションリスト(622)は、インスタンス化したアクション(216)の各々に対する参照によってインスタンス化される。各アクション(216)は、デバイスサービス(218)に対する参照によってインスタンス化される。本発明による方法の典型的な例では、アクションサービス(217)は、createActionList()等のパラメータによって表したファクトリメソッドを用いて、計量アクションリスト(622)をインスタンス化し、アクション(216)をインスタンス化する。アクションサービス(217)は、計量アクションリスト(622)に対する参照を、計量(206)に渡す。
【0113】
図4に示すように、動的アクションリストサービス(211)は、動的アクションリスト(626)をインスタンス化し、動的アクションリスト(626)に対する参照を、計量ベクトル(606)の呼び出しメソッドに渡す。本発明による方法の典型的な例では、動的アクションリストサービス(211)は、createDynamicActionList()等のメソッドを用いて、動的アクションリストをインスタンス化する。多くの実施形態では、createDynamicActionList()は、それらの対応する計量範囲の外にあるユーザ計量に関連した計量アクションリストのアクションIDによってパラメータで表される。動的アクションリスト(626)は、アクションクラス(216)のオブジェクトに対する参照を有する。
【0114】
図4の例では、デバイスサービス(218)は、デバイスリストクラス(222)のデバイスリストをインスタンス化し、デバイスクラス(214)のデバイスオブジェクトをインスタンス化する。デバイスリスト(222)は、デバイスオブジェクト(214)に対する参照によってインスタンス化される。デバイスオブジェクト(214)は、通信サービス(219)に対する参照によってインスタンス化される。本発明による方法の典型的な例では、デバイスサービス(218)は、createDeviceList()等のパラメータで表したファクトリメソッドを用いて、デバイスリスト(222)をインスタンス化し、デバイスオブジェクト(216)をインスタンス化する。デバイスサービス(218)は、デバイスリスト(222)に対する参照を、アクション(216)に渡す。
【0115】
図4の例では、通信サービス(219)は、通信クラス(215)の通信オブジェクトをインスタンス化する。本発明による方法の典型的な例では、通信サービス(219)は、createCommsObject()等のパラメータで表したファクトリメソッドを用いて、通信オブジェクト(215)をインスタンス化する。通信サービス(219)は、通信オブジェクト(215)に対する参照を、デバイスオブジェクト(214)に渡す。
【0116】
図5は、図3のクラスのいくつかの間の例示的な関係を示すクラス関係図である。図5の例では、DMLクラス(202)のオブジェクトは、関連計量サービスクラス(684)のオブジェクトをインスタンス化する。関連計量サービスクラスは、計量キャッシュで利用可能なユーザ計量(206)に対する参照を有する。
【0117】
関連計量サービスクラス(684)は、計量キャッシュ内のユーザ計量に応じて関連計量クラス(664)のオブジェクトをインスタンス化するか、または、計量キャッシュ内のユーザ計量に応じて予め生成した関連計量を選択する。関連計量は、計量アクションリスト(622)に対する参照を有する。計量ベクトルは、関連計量サービスから、関連計量(664)に対する参照を受け取る。
【0118】
ユーザ計量に応じたデバイス管理
図6は、例示的なデバイス管理方法を示すデータフロー図である。図6の方法は、ユーザ計量(206)の受け取り(302)を含む。上述のように、「ユーザ計量」は、ユーザ状況の指示を記述するデータから成る。「ユーザ状況の指示」は、ユーザ状況の定量化可能な特徴であり、その特徴を測定する量である。ユーザの状況の定量化可能な特徴の例は、体温、心拍数、血圧、位置、皮膚電気反応、および当業者に想起される他の特徴を含む。
【0119】
本発明の典型的な実施形態において、ユーザ計量は、図6の例示的なユーザ計量(206)等、ユーザ計量データ構造またはレコード(206)として実施される。図6のユーザ計量は、計量によって状況の指示が表されるユーザを識別するuserIDフィールド(405)を含む。また、図6のユーザ計量(206)は、例えば、血圧、心拍数、位置、皮膚電気反応等の計量が表すユーザ状況の特徴を識別する計量IDフィールド(407)を含む。また、ユーザ計量(204)は、計量が表すユーザ状況の特徴の値を含む値フィールド(409)を含む。計量の値の例は、華氏100度の体温である。
【0120】
図6の方法の多くの実施形態では、ユーザの計量の受け取り(302)は、計量センサ(406)からユーザ計量を受け取ることを含む。図6の方法のいくつかの例では、計量センサ(406)は、ユーザ状況の指示を読み取り、ユーザ状況の指示に応じてユーザ計量を生成し、ユーザ計量をDMLに送信する。多くの実施形態では、計量センサは、例えば、Bluetooth、802.11、HTTP、WAP等のプロトコル、または当業者に想起される他のいずれかのプロトコルを用いて、図6の計量(206)等の既定のデータ構造で、ユーザ計量をDMLに送信する。
【0121】
図6の方法では、ユーザ計量の受け取り(302)は、ユーザ計量を計量キャッシュメモリ(305)内に受け取ることを含む。すなわち、ユーザ計量は、DMLによって受信され、次いでキャッシュに格納される。図6の方法の多くの実施形態では、計量キャッシュメモリ(305)は、DMLに利用可能なキャッシュメモリであり、本発明によるデバイス管理のステップの実行を容易にする。
【0122】
図6の方法は、ユーザ計量の値が規定の計量範囲の外である(309)か否かの判定(306)を含む。規定の計量範囲は、特定ユーザの所与の計量IDについて所定範囲の値を含む。図6の方法の多くの実施形態では、既定の計量範囲は、ユーザのための典型的または通常の計量値範囲として設計される。既定の計量範囲の1例は、毎分65から85の休息時の心拍数を表す計量値範囲である。
【0123】
図6の方法の多くの例では、ユーザの既定計量範囲は、図6の計量範囲(210)等のデータ構造またはレコードとして実施される。図6の計量範囲は、ユーザ計量の種類を識別する計量IDフィールド(462)を含む。図6の計量範囲は、計量範囲が計量値範囲を表すユーザを識別するユーザIDフィールド(464)を含む。図6の計量範囲は、例えば、計量範囲の最大計量値を表すMaxフィールド(468)および、計量範囲の最小計量値を表すMinフィールド(470)を含む。すなわち、典型的な実施形態では、計量値範囲を規定するのは、範囲の最大および最小の計量値である。
【0124】
多くの実施形態では、ユーザ計量(206)の値が既定計量範囲の外である(309)か否かの判定(306)は、ユーザ計量の計量値を、その計量の同じユーザの計量範囲の最大および最小値と比較することを含む。図6の方法の多くの例では、ユーザ計量が既定計量範囲の外であるという判定は、ユーザ計量(206)の計量値(409)が、計量範囲(210)の最大値(468)よりも大きいこと、または計量範囲(210)の最小値(470)よりも小さいことの判定を含む。例えば、「心拍数」として計量を識別する計量IDのユーザ計量は、毎分100回の心拍数という計量値を有する場合、毎分65から85回という休息時心拍数の例示的な計量範囲の外である。
【0125】
ユーザ計量の値が計量範囲外である場合、図6の方法は、ユーザ計量に応じるアクションの識別(310)を含む。アクションは、実行されると1つ以上のデバイスを制御する1つ以上のコンピュータプログラム、サブルーチン、またはメンバメソッドを含む。アクションは通常、オブジェクト指向クラスとして実施され、オブジェクトまたはオブジェクトに対する参照として操作される。実際、本明細書中では、文脈によって他の意味が示されない限り、「アクション」、「アクションオブジェクト」、および「アクションオブジェクトに対する参照」という語は、多かれ少なかれ同意語である。図6の方法の多くの実施形態では、アクションオブジェクトは、デバイスクラスのメンバメソッドを呼び出し、物理的デバイスの現在の属性に影響を与える。図6の方法の多くの実施形態では、アクションクラスまたはアクションオブジェクトは、OSGiバンドルでサービスゲートウエイ上のDMLに展開される。
【0126】
図6の方法では、アクションの識別(310)は、ユーザIDおよび計量IDによって構成された計量アクションリスト(622)からアクションID(315)を受信すること(365)を含む。図6の方法では、計量アクションリストからのアクションIDの検索は、特定の計量IDおよび特定のユーザの計量値がユーザの所定計量範囲の外である場合に実行されるアクションの識別子(「アクションID」)のリストからの検索を含む。アクションリストは、例えば、Javaリストコンテナとして、ランダムアクセスメモリ内のテーブルとして、ハードドライブまたはCD ROM上の記憶領域を有するSQLデータベーステーブルとして、更に、当業者に想起される他の方法で、実施することができる。
【0127】
上述のように、アクション自体はソフトウエアから成るので、例えば、コンパイル時にDMLにインポートされ、従ってDML実行時に常に利用可能なJavaパッケージにおいて具現化される具体的なアクションクラスとして、実施することができる。従って、アクション(312)の実行(314)は、かかる実施形態において、DMLのswitch()statementの使用によって実行されることが多い。かかるswitch()statementステートメントは、アクションIDに応じて動作し、例えば、以下の疑似コードセグメントによって示されるように実施することができる。
【数10】
【0128】
例示的なスイッチステートメントは、アクションIDに応じて実行する特定のデバイス制御オブジェクトを選択する。この例においてswitch()が管理するデバイス制御オブジェクトは、actionNumber1、actionNumber2等という名前の具外的なアクションクラスであり、各々は、「take_action()」という名前の実行可能メンバメソッドを有し、各アクションクラスが実施する実際のワークを実行する。
【0129】
また、アクション(312)の実行(314)は、かかる実施形態において、DMLにおけるハッシュテーブルの使用によって実行されることが多い。かかるハッシュテーブルは、以下の疑似コードの例に示すように、アクションIDによって入力されるアクションオブジェクトに対する参照を格納することができる。この例は、アクションサービスが、アクションIDをキーとして用いて、特定の計量IDに関連付けた具体的なアクションクラスのオブジェクトに対する参照であるアクションのハッシュテーブルを生成することによって開始する。多くの実施形態では、かかるハッシュテーブルを作成し、それに特定の計量IDに関連付けたアクションオブジェクトに対する参照を入れ、ハッシュテーブルに対する参照を呼び出し側計量オブジェクトに戻すのは、アクションサービスである。
【数11】
【0130】
特定のアクションの実行は、以下の疑似コードに従って実行することができる。
【数12】
【0131】
本明細書中の多くの実施形態は、リストと共に、多くの場合アクションのリストと共に記載し、これらは、例えば、アクションサービスから、リストに対する参照と共に戻される。多くの場合、リストは、ハッシュテーブルと同様に機能する。例えば特定のアクションの実行は、以下の疑似コードに従って実行することができる。
【数13】
【0132】
特定のアクションの実行は、以下の疑似コードに従って実行することができる。
【数14】
【0133】
上述の3つの例は、スイッチステートメント、ハッシュテーブル、およびリストオブジェクトを用いて、本発明の実施形態によるアクションの実行を説明する。これらの例におけるスイッチステートメント、ハッシュテーブル、およびリストオブジェクトの使用は、限定ではなく説明のためである。実際、当業者に想起されるように、本発明の実施形態に従ってアクションを実行する多くの方法があり、かかる方法は全て本発明の範囲内である。
【0134】
図7は、アクションを実行する例示的な方法を示すデータフロー図を示す。図7の方法では、アクションの実行は、アクションが管理する物理的デバイス(316)を表すデバイスクラス(214)の識別(380)を含む。典型的なデバイスクラスは、デバイスを管理するメンバメソッドを含む。デバイスを管理する典型的なメンバメソッドは、物理的デバイスのデバイス属性値を取得および設定するためのメンバメソッドを含む。例えば、多くの設定の光強度をサポートするランプの場合、デバイスクラスのメンバメソッドget()は、ランプから光強度の値を取得することができ、デバイスクラスのメンバメソッドset()は、ランプの光強度を設定する。
【0135】
図7の方法では、アクションの実行は、物理的デバイス(316)のための通信クラス(215)の識別(384)を含む。デバイスクラスのメンバメソッドが物理的デバイスに通信するためには、通信クラスは、物理的デバイスと通信するためのプロトコルを実施する。典型的な通信クラスは、通信クラスが実施するプロトコルに従ってデータ通信メッセージを構築、送信、および受信するメンバメソッドを含む。通信クラスのメンバメソッドは、物理的デバイスとの間でデータ通信メッセージを送信および受信する。通信クラスは、デバイス上で実施されるアクションから物理的デバイスと通信するために用いるプロトコルを分離すると有利であり、このため、例えばget()およびset()を備えるデバイスクラスインタフェースは、デバイスクラスを再プログラムする必要なく、また、物理的デバイスおよびプロトコルの各組み合わせごとに1つのデバイスクラスを提供する必要なく、データ通信プロトコルのいずれかを用いて物理的デバイスと通信可能であると有用である。
【0136】
更に詳しい説明のため、以下の簡単な使用の場合を考える。ユーザの計量センサが、毎分100回のユーザの心拍数を読み、ユーザを識別するユーザID、「心拍数」として計量を識別する計量ID、および100の計量値を有するユーザの計量を生成する。計量センサは、このユーザ計量を、サービスゲートウエイを介してDMLに送信する。DMLはユーザ計量を受信し、このユーザ計量を、65から85回の範囲を有する休息時心拍数のユーザ計量範囲と比較する。DMLは、ユーザ計量が既定計量範囲の外であると判定する。DMLは、ユーザの心拍数計量値が、ユーザの心拍数の計量範囲外であるという判定に応答して、ユーザIDおよび計量IDを用いて、リストから、実行する既定アクションのアクションIDを検索する。DMLは、例えば「someAction」のクラス名を有し、更に、switch()ステートメントにおいて上述したtake_action()方法等、DMLに既知のインタフェースメンバメソッドを有するアクションオブジェクトを識別するデバイス制御アクションIDを検索する。
【0137】
この例では、DMLは、someAction.take_action()を呼び出すことによって識別されたアクションを実行する。この例におけるtake_action()メソッドは、アクションによって属性が影響を受ける物理的デバイスを表すデバイスオブジェクトに対する参照のリストのためにデバイスサービスを呼び出すようにプログラムされている。デバイスサービスは、switch()ステートメントによってプログラムされて、アクションIDに応じてデバイスオブジェクトに対する参照のリストを生成し、デバイスリストを呼び出し側アクションオブジェクトに、または、アクションオブジェクトにおける呼び出し側take_action()メソッドに戻す。
【0138】
デバイスリストの生成において、デバイスサービスは、リストに入力された参照を有する各デバイスをインスタンス化するようプログラムされ、コンストラクタパラメータとして、通信サービスに対する参照を渡す。このようにインスタンス化された各デバイスは、通信サービスにおいてパラメータで表したファクトリメソッドを呼び出すようプログラムされたコンストラクタパラメータを有し、パラメータとして、呼び出し側デバイスオブジェクトの識別子を渡す。通信サービスは、対応する物理的デバイスと通信するため、そのデバイスオブジェクトに必要な通信プロトコルのための通信オブジェクトに対する参照をインスタンス化し、デバイスに戻す。
【0139】
本発明の実施形態において、典型的にアクションを実行するための主な制御論理は、アクションクラスの主インタフェースメソッドおよびそれからインスタンス化されたオブジェクトにある。この例では、take_action()メソッドは、メソッド呼び出しの制御シーケンスを実行して、このアクションクラスが最初に開発された物理的デバイス上の変更を実行するようプログラムされている。take_action()メソッドは、そのデバイスリストのデバイスオブジェクトにおけるアクセス機構メソッド(set()およびget()メソッド)に対する一連の呼び出しによってこの機能を実行する。
【0140】
図8は、ユーザ計量(206)が既定の計量範囲(210)外であることを判定する(306)例示的な方法を示すデータフロー図である。デバイス管理方法の多くの実施形態では、ユーザ計量(206)は、図8のユーザ計量レコード等、データ構造またはレコードとしてデータ内に表される。ユーザ計量(206)は、ユーザIDフィールド(405)、計量IDフィールド(407)、および値フィールド(409)を含む。
【0141】
図8の例では、計量の既定の計量範囲は、図8の計量範囲(210)等の計量範囲としてデータに表される。例示的な計量範囲(210)は、特定の計量についての特定ユーザの最大範囲値(468)および最小範囲値(470)を示す。例示的な範囲についての特定のユーザおよび特定の計量は、ユーザIDフィールド(464)および計量IDフィールド(462)にそれぞれ識別される。
【0142】
図8の方法では、ユーザ計量(206)の値が既定の計量範囲(210)の外である(309)という判定(306)は、ユーザ計量(206)が既定の計量範囲(210)の外である(309)程度(504)の測定(502)を含む。本発明の多くの実施形態では、ユーザ計量(206)が計量範囲(210)の外である(309)程度(504)の測定(502)は、ユーザ計量値が計量範囲の最大計量値よりも大きい程度またはユーザ計量値が既定の計量範囲の最小値よりも小さい程度の識別を含む。計量が範囲外である程度の測定が、最大範囲値よりも大きいかまたは最小範囲値よりも小さいとして測定値を識別することを含む場合、測定は、例えば符号(+または−)、例えば「上」または「下」等の一覧指示、またはハイには真、ローには偽等のブール指示等、大きさと方向の指示の双方を含むと有利であることが多い。
【0143】
図8の方法では、ユーザ計量に応じたアクションの識別(310)は、ユーザ計量(206)の値が計量範囲外である(309)程度(504)に応じた、更に、多くの場合、計量が範囲外である方向に応じた、アクションの識別(512)を含む。図8の方法の多くの実施形態において、ユーザ計量が既定の計量範囲外である程度(504)に応じたアクションの識別(512)は、計量ID、ユーザID、程度、および方向によって構成された計量アクションリスト(622)からアクションIDを検索することを含む。
【0144】
本発明による多くのDMLにおいて、DMLがサポートするデバイスの全てにデバイスクラスがプレインストールされている。新しく取得された物理的デバイスは、それら自身をネットワーク上にあるとして識別し、DMLは、DML上にすでにインストールされているデバイスクラスにデバイスIDを関連付ける。かかる例示的な実施形態では、DMLは、デバイスIDをプレインストールされたデバイスクラスに関連付けることによってデバイスを識別する。
【0145】
関連計量を含むユーザ計量ベクトルに応じたデバイス管理および位置に基づくデバイス制御
図9は、本発明によるデバイス管理方法を示すデータフロー図である。図9の方法は、複数のユーザ計量(206)の受信(660)を含む。図9の方法の多くの実施形態において、複数の異なるユーザ計量(206)の受信(660)は、1つ以上の計量センサ(406)からの異なるユーザ計量の受信を含む。「異なる」ユーザ計量という語は、異なる種類のユーザ計量を意味する。すなわち、通常異なる計量値を有する、異なる種類のユーザ計量である。
【0146】
図9の方法のいくつかの例では、計量センサ(406)は、ユーザ状況の指示を読み、ユーザ状況の指示に応じたユーザ計量を生成し、ユーザ計量をDMLに送信する。多くの例では、計量センサは、図3の計量(206)等の既定のデータ構造で、例えば、Bluetooth、802.11、HTTP、WAP等のプロトコル、または当業者に想起される他のいずれかのプロトコルを用いて、ユーザ計量をDMLに送信する。
【0147】
図9の方法は、複数のユーザ計量(206)に応じた関連計量(664)の生成(662)を含む。図9の方法の多くの例では、関連計量(664)は、複数のユーザ計量に応じて導出したか、または将来受信されるユーザ計量を予想して生成される、ユーザ状況の具体的な指示を表すデータ構造である。すなわち、図9の方法のいくつかの例では、関連計量は、計量キャッシュ内の複数のユーザ計量に応じて生成された計量である。例えば、「移動」のための関連計量は、位置についての少なくとも2つの他の計量から生成可能である。図9の方法の他の例では、関連計量は、計量キャッシュに受信されるユーザ計量を予想して予め生成される。これらの例の多くでは、計量キャッシュ内のユーザ計量が、既定の計量パターンを生成する既定の計量集合に一致する場合、ユーザのために予め生成された関連計量が選択される。関連計量の例は、ユーザの移動、ユーザの移動なし、回転、移動速度、生物測定値の上昇、生物測定値の低下、生物測定値の変化率、または当業者に想起される他のいずれかの関係を表す計量を含む。
【0148】
関連計量は、多くの場合、単一の受信したユーザ計量において利用可能でないユーザ状況に関する情報を提供する。計量値を有する単一の受信ユーザ計量は、その計量の現在値のみを示すことが多い。違う言い方をすれば、単一のユーザ計量は、多くの場合、ユーザ状況の単一の特徴の断片を提供する。一方、関連計量は、多くの場合、アクション実行に応答して、いかにユーザ計量が変わっているか等のユーザ状況に関する更に別の情報、または当業者に想起される他の情報を提供する。
【0149】
図9の方法の多くの例では、複数のユーザ計量(206)に応じた関連計量(664)の生成は、例えばcreateRelationalMetric()(図3の686)等の関連計量サービスにおけるメンバメソッドの呼び出しを含む。図9の方法のいくつかの例では、createRelationalMetric()(686)は、計量キャッシュ内のユーザ計量間の関係を決定し、適切な関連計量をインスタンス化する。他の実施形態では、createRelationalMetric()は、計量キャッシュ内のユーザ計量を、共に既定の計量パターンを形成する既定の計量集合と比較する。計量キャッシュ内のユーザ計量が、既定の計量パターンを形成する既定の計量と一致する場合、createRelationalMetric()は、関連計量データベースから適切な予め生成された関連計量を受信する。
【0150】
図9の方法は、少なくとも1つのユーザ計量(206)および少なくとも1つの関連計量(664)から成るユーザ計量ベクトル(606)の生成(604)を含む。少なくとも1つのユーザ計量(206)および少なくとも1つの関連計量(664)から成るユーザ計量ベクトルは、ユーザ状況の多数の定量化可能な特徴およびこれらの特徴を測定する多数の量を有するユーザ状況の複雑な指示を表す。すなわち、ユーザ計量ベクトルは、通常、各々がユーザ状況の単一の定量化可能な特徴およびこの特徴を測定する量を表すユーザ計量集合である。図9の方法では、ユーザ計量ベクトルは、少なくとも2つの受信したユーザ計量間の関係を識別する少なくとも1つの関連計量も含む。
【0151】
本発明の典型的な実施形態では、ユーザ計量ベクトルは、図3を参照して上述した例示的なユーザ計量ベクトル(606)等のユーザ計量ベクトルデータ構造またはレコードとして実施される。ユーザ計量ベクトル(606)は、ユーザを識別するユーザID(図3の486)およびユーザ計量ベクトルを一意に識別する計量ベクトルID(図3の408)を含む。また、ユーザ計量ベクトル(606)は、ユーザ計量に対する参照を含む計量リスト(図3の652)のためのデータ記憶領域を含む。また、ユーザ計量ベクトル(606)は、関連計量に対する参照を含む関連計量リスト(図3の653)のためのデータ記憶領域も含む。
【0152】
図9の方法は、複数の計量範囲(210)から成るユーザ計量空間(610)の生成(605)を含む。ユーザ計量空間(610)は、ユーザのための複数の異なる計量範囲から成る。すなわち、計量空間は、複数の異なる計量IDについての複数の計量範囲によって規定される。図9の方法の多くの例では、ユーザ計量空間の計量範囲は、所与のユーザの所与のユーザ計量についての計量値の通常または快適な範囲を表す。図9の方法の多くの例では、ユーザ計量空間は、ユーザ計量ベクトルの関連計量についての計量範囲を含む。本発明の多くの例示的な実施形態では、計量空間は、ユーザIDおよびユーザの異なる計量範囲に対する参照リストのためのデータ記憶領域(655)を含む、図3の例示的な計量空間(610)等の計量空間データ構造として実施される。
【0153】
図9の方法は、ユーザ計量ベクトル(606)がユーザ計量空間(610)の外である(309)ことの判定(608)を含む。様々な代替的な例示的な実施形態では、ユーザ計量ベクトル(606)がユーザ計量空間(610)の外である(309)ことの判定(608)は、異なる方法を用いて実行される。ユーザ計量ベクトル(606)がユーザ計量空間(610)の外である(309)ことを判定する方法は、計量ベクトルのユーザ計量および関連計量と対応する計量空間の計量範囲との比較的単純な比較から、もっと複雑なアルゴリズムまで、複雑さは様々である。ユーザ計量ベクトル(606)がユーザ計量空間(610)の外である(309)ことを判定(608)する例示的な方法は、図13を参照して以下でより詳細に説明する。
【0154】
ユーザ計量ベクトル(606)がユーザ計量空間(610)の外である(309)場合、図9の方法は、アクション(315)の識別(630)を含む。アクションは、典型的に、実行されると1つ以上のデバイスを制御する1つ以上のコンピュータプログラム、サブルーチン、またはメンバメソッドを含む。アクションは、通常、オブジェクト指向クラスとして実施され、オブジェクトまたはオブジェクトに対する参照として操作される。実際、本明細書中では、文脈によって他の意味が示されない限り、「アクション」、「アクションオブジェクト」、および「アクションオブジェクトに対する参照」という語は、多かれ少なかれ同意語である。図9の方法の多くの例では、アクションオブジェクトは、デバイスクラスのメンバメソッドを呼び出し、物理的デバイスの現在の属性に影響を与える。図9の方法の多くの例では、アクションクラスまたはアクションオブジェクトは、OSGiバンドルでサービスゲートウエイ上のDMLに展開される。
【0155】
図9の方法の多くの例では、アクション(315)の識別(630)は、ユーザ計量ベクトル(606)に応じて、動的アクションリスト(626)を生成すること(624)を含む。図9の方法の多くの例では、動的アクションリストは、ユーザ計量空間の対応する計量範囲の外にあるユーザ計量ベクトルの特定の計量に関連付けた計量アクションリストに応じて生成されるアクションIDのリストである。すなわち、その対応する計量範囲の外にある計量ベクトルの各計量は、関連する計量アクションリストを有する。関連する計量アクションリストは、その関連する計量がその対応する計量範囲の外にある場合、実行のためのアクションIDを含む。動的アクションリストは、ユーザ計量空間の対応する計量範囲の外にあるユーザ計量ベクトルの特定の計量に関連付けた計量アクションリストに応じて識別されるアクションIDを含むアクションリストである。動的アクションリストは、ユーザの現在の状況に合わせたアクションIDのリストを提供すると有利である。
【0156】
本発明の多くの例示的な実施形態では、動的アクションリストの生成は、動的アクションサービスオブジェクトにおけるメンバメソッドの呼び出しを含む。図9の方法の多くの例では、動的アクションリストの生成は、ユーザ計量空間の対応する計量範囲の外にあるユーザ計量ベクトルの特定のユーザ計量に関連付けたアクションリストから検索したアクションIDによって、createDynamicActionList()等のメンバメソッドをパラメータで表すことを含む。図9の方法の多くの例では、actionDynamicActionList()は、そのユーザ計量ベクトルの呼び出し側に、計量アクションリストに含まれるアクションIDに応じて識別されるアクションIDを含む動的アクションリストを戻す。図9の方法の様々な代替的な例では、動的アクションリストは、例えば、ハッシュテーブル、Javaリストコンテナとして、ランダムアクセスメモリ内のテーブルとして、ハードドライブまたはCD ROM上に記憶領域を有するSQLデータベーステーブルとして、更に、当業者に想起される他の方法で、実施することができる。
【0157】
図9の方法は、アクション(614)の実行を含む。従って、アクションの実行は、かかる実施形態において、多くの場合、DMLにおけるswitch()ステートメントの使用によって実行される。かかるswitch()ステートメントは、アクションIDに応じて動作し、例えば、以下の疑似コードセグメントに示されるように実施することができる。
【数15】
【0158】
例示的なスイッチステートメントは、アクションIDに応じた実行のため特定のデバイス制御オブジェクトを選択する。この例でswitch()によって管理されるデバイス制御オブジェクトは、actionNumber1、actionNumber2等という名前の具外的なアクションクラスであり、各々は、「take_action()」という名前の実行可能メンバメソッドを有し、これが、各アクションクラスが実施する実際のワークを実行する。
【0159】
図9の方法の多くの例では、アクションの実行は、DMLにおけるハッシュテーブルの使用によって行われる。かかるハッシュテーブルは、以下の疑似コードの例に示すように、アクションIDによって入力されるアクションオブジェクトに対する参照を格納する。この例は、動的アクションリストサービスが、アクションIDをキーとして用いて、特定の計量IDに関連付けた具体的なアクションクラスのオブジェクトに対する参照であるアクションのハッシュテーブルを生成することによって開始する。多くの実施形態では、かかるハッシュテーブルを作成し、それにユーザ計量空間の対応する計量範囲の外にあるユーザ計量ベクトルの特定の計量IDに関連するアクションオブジェクトに対する参照を入れ、ハッシュテーブルに対する参照を呼び出し側ベクトルオブジェクトに戻すのは、動的アクションリストサービスである。
【数16】
【0160】
次いで、以下の疑似コードに従って、特定のアクションの実行を行うことができる。
【数17】
【0161】
また、図9の方法の多くの例は、リストの使用によって実施される。多くの場合、リストは、ハッシュテーブルと同様に機能する。かかるリストの構築は、以下の疑似コードに従って実行することができる。
【数18】
【0162】
次いで、以下の疑似コードに従って、特定のアクションの実行を行うことができる。
【数19】
【0163】
上述の3つの例は、スイッチステートメント、ハッシュテーブル、およびリストオブジェクトを用いて、本発明の実施形態によるアクションの実行を説明する。これらの例におけるスイッチステートメント、ハッシュテーブル、およびリストオブジェクトの使用は、限定ではなく説明のためである。実際、当業者に想起されるように、本発明の実施形態に従ってアクションを実行する多くの方法があり、かかる方法は全て本発明の範囲内である。
【0164】
図9の方法のいくつかの例では、アクションの実行は、デバイスのためのデバイスクラスの識別を含む。典型的なデバイスクラスは、デバイスを管理するメンバメソッドを含む。デバイスを管理する典型的なメンバメソッドは、物理的デバイスのデバイス属性の値を取得および設定するためのメンバメソッドを含む。例えば、光強度の多数の設定をサポートするランプの場合、デバイスクラスのメンバ方法get()は、ランプから光強度の値を取得することができ、デバイスクラスのメンバ方法set()は、ランプの光強度を設定する。
【0165】
図9の方法の多くの例では、アクションの実行は、デバイスのための通信クラスの識別を含む。デバイスクラスのメンバメソッドが物理的デバイスに通信するため、通信クラスは、物理的デバイスと通信するためのプロトコルを実施する。典型的な通信クラスは、通信クラスが実施するプロトコルに従ってデータ通信メッセージを構築、送信、および受信するメンバメソッドを含む。通信クラスのメンバメソッドは、物理的デバイスとの間でデータ通信メッセージを送信および受信する。通信クラスは、デバイスを実施するアクションから物理的デバイスと通信するために用いるプロトコルを分離すると有利であり、このため、例えばget()およびset()を備えるデバイスクラスインタフェースは、デバイスクラスを再プログラムする必要なく、また、物理的デバイスおよびプロトコルの各組み合わせごとに1つのデバイスクラスを提供する必要なく、データ通信プロトコルのいずれかを用いて物理的デバイスと通信可能であると有用である。
【0166】
図10は、複数のユーザ計量(206)に応じて関連計量(664)を生成する(662)例示的な方法を示すデータフロー図である。上述のように、図10の方法のいくつかの例では、関連計量は、計量キャッシュにおける受信したユーザ計量に応じて生成された計量である。図10の方法では、複数のユーザ計量(206)に応じた関連計量(664)の生成(662)は、ユーザ計量のフィルタリング(665)を含む。図10の方法の多くの例では、ユーザ計量のフィルタリングは、計量キャッシュにおける受信したユーザ計量の計量IDの識別および計量IDによるユーザ計量の分類を含む。
【0167】
図10は、結果として得られたフィルタリングされたユーザ計量を2つのみ示す(206A、206B)。しかしながら、図10の方法の多くの例では、ユーザ計量のフィルタリングの結果として、多くのフィルタリングしたユーザ計量がキャッシュに格納され、関連計量を生成するために用いられる。図10の方法の様々な例では、いくつのフィルタリングされたユーザ計量が計量キャッシュに維持されるかは、フィルタリングしたユーザ計量の計量ID、フィルタリングしたユーザ計量に応じて生成された関連計量の種類等のファクタ、または当業者に想起される他のいずれかのファクタによって変動する。例えば、「ユーザの移動」の関連計量は、2つのみのフィルタリングしたユーザ計量から生成することができ、一方、「円の中のユーザの移動」の関連計量は、計量キャッシュ内の位置のための3つ以上のフィルタリングしたユーザ計量を必要とする場合がある。
【0168】
図10の方法では、複数のユーザ計量(206A、206B)に応じた関連計量(664)の生成(662)は、第1のフィルタリングされたユーザ計量(206A)と第2のフィルタリングされたユーザ計量(206B)との間の関係(668)の判定(666)を含む。図10の方法では、第1のフィルタリングされたユーザ計量(206A)と第2のフィルタリングされたユーザ計量(206B)との間の関係(668)の判定(666)は、第1のフィルタリングされたユーザ計量(206A)と第2のフィルタリングされたユーザ計量(206B)との比較(670)を含む。図11の方法の多くの例では、第1のフィルタリングされたユーザ計量と第2のフィルタリングされたユーザ計量を比較して関係を判定することは、アルゴリズムで実行される。すなわち、例えば、コンピュータプログラム符号化の点で、ユーザ計量間の関係の判定は、スイッチステートメントまたは、例えば以下のように示されるものと同様のif-then-elseステートメント実施論理のシーケンスを用いることによって、実行される。
【数20】
もしくは
【数21】
【0169】
図11の方法の多くの例では、ユーザ計量に応じた関係の判定は、2つのみのユーザ計量の比較に限定されない。3つ以上のユーザ計量の比較の例として、以下の、関係「右に回転」を判定するアルゴリズム論理の例を考える。
【数22】
【0170】
図10の方法では、複数のユーザ計量(206A、206B)に応じた関連計量(664)の生成(662)は、第1のフィルタリングされたユーザ計量(206A)と第2のフィルタリングされたユーザ計量(206B)との間の関係(668)の大きさ(674)の判定(672)を含む。図10の方法の多くの例では、判定された大きさは、生成された関連計量の値として含まれる。図10の方法のいくつかの例では、第1のフィルタリングされたユーザ計量(206A)と第2のフィルタリングされたユーザ計量(206B)との間の関係(668)の大きさ(674)の判定(672)は、第1のフィルタリングしたユーザ計量(206A)の値から、第2のフィルタリングしたユーザ計量(206B)の値を減算する(676)ことを含む。図10の方法の他の代替的な例では、第1のフィルタリングされたユーザ計量(206A)と第2のフィルタリングされたユーザ計量(206B)との間の関係(668)の大きさ(674)の判定(672)は、第1のフィルタリングされたユーザ計量および第2のフィルタリングされたユーザ計量を加算すること、または当業者に想起される他のいずれかの関数またはアルゴリズムを第1のフィルタリングされたユーザ計量および第2のフィルタリングされたユーザ計量に適用することを含む。
【0171】
図11は、複数のユーザ計量(206)に応じて関連計量(664)を生成する(662)例示的な方法を示すデータフロー図である。図11の方法では、複数のユーザ計量(206)に応じた関連計量(664)の生成(662)は、複数のユーザ計量(206)が既定の計量パターン(663)に一致する(681)かの判定(678)を含む。図11の方法の多くの例では、既定の計量パターンは、既定の関係を証明する特定パターンの計量を形成するように予め決められた、予め生成したユーザ計量集合を含む。
【0172】
図11の方法の多くの例では、複数のユーザ計量(206)が既定の計量パターン(663)に一致する(681)か否かの判定(678)は、計量キャッシュ内の複数のユーザ計量を、既定の計量パターン(663)を形成する既定の計量集合と比較すること(679)を含む。図11の方法の多くの例では、計量キャッシュ内のユーザ計量と関連計量データベース内の既定の計量パターンとを比較することは、ユーザ計量の値を、既定の計量パターン内に含まれる個々の既定計量の値と比較すること、および、計量キャッシュ内のユーザ計量の計量IDを、既定計量パターン内に含まれる個々の既定計量の計量IDと比較することを含む。図11の方法の多くの例では、既定計量パターンは、共に計量パターンを形成する異なる種類の既定計量を含む場合がある。
【0173】
計量キャッシュ内の複数のユーザ計量は、一致と見なされる既定計量パターンを形成する既定計量集合と全く同じである必要はない。計量キャッシュ内のユーザ計量が一致と見なされる既定計量パターンの既定計量と同じでなければならない程度は、比較に用いる方法の許容度、ユーザ計量および既定計量に含まれる情報の種類、ユーザ計量および既定計量を発生する際に用いる正確さおよび精度等の様々なファクタ、ならびに当業者に想起される他のファクタに依存する。
【0174】
図11の方法では、既定計量パターンは、計量パターンテーブル(680)に格納される。図11の方法の多くの例では、計量パターンテーブルは、例えば、識別する関連計量のための計量IDによって示される既定計量パターンを形成する所定の計量集合を含む。図11の方法の多くの例では、計量キャッシュ内のユーザ計量は、既定計量パターンを形成する所定の計量集合と比較される。ユーザ計量が、既定計量パターンを形成する所定の計量集合と一致した場合、関連計量のために計量IDを識別する。
【0175】
図11の方法では、複数のユーザ計量(206)に応じた関連計量(664)の生成(662)は、関連計量(664)の検索(683)を含む。図11の方法の多くの例では、関連計量は、計量キャッシュ内のユーザ計量を計量パターンテーブルに格納された既定計量パターンと比較することによって識別される計量IDに応じて、関連計量テーブル(665)から検索される。
【0176】
図12は、ユーザ計量ベクトル(606)を生成する(604)例示的な方法およびユーザ計量空間(610)を生成する(605)例示的な方法を示すデータフロー図である。図12の方法において、少なくとも1つのユーザ計量(206)および少なくとも1つの関連計量(664)から成るユーザ計量ベクトル(606)の生成(604)は、少なくとも1つのユーザ計量をユーザ計量ベクトルに関連付けること(603)、および少なくとも1つの関連計量(664)をユーザ計量ベクトル(606)に関連付けること(682)を含む。本開示において、および文脈に応じて、「関連付ける」という語は、一般的に、参照による関連付けを意味する。すなわち、1つのクラスのオブジェクトを別のオブジェクトに関連付けるということは、第2のオブジェクトが第1のオブジェクトに対する参照を有することを意味する。オブジェクトは互いに関連付けられ、各々が他に対する参照を有する。オブジェクト、集合、構成等の間の他の関係は、通常、関連付けの種類であり、当業者に想起される他のものと同様、それらのいずれかの使用は、本発明の範囲内である。図12の例示的な方法では、複数の異なるユーザ計量(206)をユーザ計量ベクトル(606)に関連付けること(603)は、ユーザ計量ベクトル(606)の複数の異なる計量オブジェクトに対する参照を提供することによって実行される。
【0177】
図12の方法において、複数の異なるユーザ計量(206)から成るユーザ計量ベクトル(606)の生成(604)は、少なくとも1つの計量アクションリスト(622)を各ユーザ計量(206)に関連付ける(620)ことを含む。図12の方法の多くの例において、複数の計量アクションリストは、ユーザベクトルの各ユーザ計量に関連付けられている。特定の計量に関連付けた計量アクションリストに含まれるアクションIDは、その計量が表すユーザ状況の特定の特徴に従ってデバイスを管理するように設計されたアクションを識別する。すなわち、計量アクションリストは、ユーザ計量または関連計量が表すユーザ状況に影響を与えるように構成されている。例えば、体温計量に関連付けた計量リストは、エアコンディショナ、ファン、ヒータ、自動日よけ等のデバイスを管理するアクションを含むことができる。
【0178】
図12の方法の多くの例において、ユーザ計量ベクトルの生成は、複数の計量アクションリストを単一のユーザ計量に関連付けることを含む。図12の方法のいくつかの例は、ユーザ計量の値がその対応する計量範囲よりも大きい場合に実行するため、ある計量アクションリストを、アクションIDを含むユーザ計量に関連付けること、更に、ユーザ計量の値がその対応する計量範囲よりも小さい場合に実行するため、アクションIDを含む別の計量アクションリストを関連付けることを含む。また、図12の方法のいくつかの例は、ユーザ計量がその対応する計量範囲外である程度および方向に応じて実行するため、計量アクションリストを、アクションIDを含むユーザ計量に関連付けることを含む。
【0179】
図12の方法では、複数の異なるユーザ計量(206)から成るユーザ計量ベクトル(606)の生成(604)は、少なくとも1つの計量アクションリスト(622)を各関連計量(664)に関連付けること(683)を含む。図12の方法の多くの例では、複数の計量アクションリストが、ユーザベクトルの各関連計量に関連付けられている。特定の関連計量に関連付けられた計量アクションリストに含まれるアクションIDは、その関連計量が表すユーザ状況の特定の特徴に従ってデバイスを管理するよう設計されたアクションを識別する。すなわち、計量アクションリストは、関連計量が表すユーザ状況に影響を与えるように構成されている。例えば、体温計量に関連付けた計量リストは、エアコンディショナ、ファン、ヒータ、自動日よけ等のデバイスを管理するアクションを含むことができる。
【0180】
図12の方法の多くの例では、ユーザ計量ベクトルの生成は、複数の計量アクションリストを単一の関連計量に関連付けることを含む。図12の方法のいくつかの例は、関連計量の値がその対応する計量範囲よりも大きい場合に実行するため、ある計量アクションリストを、アクションIDを含む関連計量に関連付けること、更に、関連計量の値がその対応する計量範囲よりも小さい場合に実行するため、アクションIDを含む別の計量アクションリストを関連付けることを含む。また、図12の方法のいくつかの例は、ユーザ計量がその対応する計量範囲外である程度および方向に応じて実行するために、アクションIDを含む計量アクションリストを、関連計量に関連付けることを含む。
【0181】
図12の方法は、複数の計量範囲から成るユーザ計量空間(610)の生成(605)を含む。図12の方法の多くの例において、ユーザ計量空間(610)は、本質的に、ユーザ計量ベクトルに含まれるユーザ計量および関連計量に対応する複数の異なる計量範囲から成る。図12の方法の多くの例では、ユーザ計量空間の計量範囲は、ユーザのための通常または快適な計量範囲を表す。図12の方法では、ユーザ計量空間(610)の生成(602)は、複数の異なる計量(206)のための複数の計量範囲(210)を識別すること(610)、および、複数の異なる計量(206)のための複数の異なる計量範囲(210)をユーザ計量空間(610)に関連付けることを含む。
【0182】
図12の方法の多くの例において、複数の計量範囲(210)の識別(601)および複数の計量範囲(210)のユーザ計量空間(610)との関連付け(607)は、DMLがインスタンス化する計量空間サービスによって実行される。計量空間サービスは、ユーザ計量ベクトルからユーザ計量ベクトルIDを受け取り、計量ベクトルIDが識別する計量空間リストの中で計量空間を検索し、ユーザ計量ベクトルに、ユーザ計量ベクトルと比較するための計量空間を識別する計量空間IDを戻す。計量ベクトルIDのための計量空間が存在しない場合、計量空間サービスは、1つの計量空間をインスタンス化し、計量空間テーブルに計量空間IDを格納する。
【0183】
図13は、ユーザ計量ベクトル(606)がユーザ計量空間(610)の外である(309)か否かを判定する(608)2つの例示的な方法を示すデータフロー図である。ユーザ計量ベクトル(606)がユーザ計量空間(610)の外である(309)か否かを判定する(608)最初に例示する方法は、ユーザ計量ベクトル(606)のユーザ計量(206)および関連計量(664)の計量値を、計量空間(610)の計量範囲(210)と比較すること(806)を含む。本発明のいくつかの例では、ユーザ計量の計量値または関連計量の値とその対応する計量範囲との比較は、その値が既定計量範囲の外である程度の測定、および、その値が既定計量範囲の上または下であることの識別を含む。
【0184】
本発明の多くの例示的な実施形態において、ユーザ計量ベクトルが計量空間の外にあるか否かの判定は、計量値と計量範囲との間の多数の個々の比較の関数である。本発明の様々な代替的な実施形態では、異なる基準を用いて、ユーザ計量ベクトルが計量空間の外にあることを判定するために、対応する計量範囲外にあるはずの計量値の数を識別するか、または、いずれかの計量値が対応する計量範囲の外にある程度を識別する。いくつかの実施形態では、ユーザ計量ベクトルがユーザ計量空間の外にあるか否かを判定するための厳密な基準を用いて、1つのみの計量値が対応する計量範囲の外にある場合、ユーザ計量ベクトルは計量空間の外にあると判定される。他の実施形態では、ユーザ計量ベクトルがユーザ計量空間の外にあるか否かを判定するためのもっと厳密さの緩い基準を用いて、ユーザ計量ベクトルの全てが、ある程度、対応する計量範囲の外にある場合、ユーザ計量ベクトルはユーザ計量空間の外にあると判定される。様々な実施形態において、ユーザ計量ベクトルが計量空間の外にあるという判定を行うための、対応する計量範囲の外にあるはずの計量値の数、または、計量値が対応する計量範囲の外にある程度は、様々に異なる。ユーザ計量ベクトルが計量空間の外にあるか否かを判定するこれらの方法は全ては、本発明の範囲内である。
【0185】
図13に示す、ユーザ計量ベクトル(606)がユーザ計量空間(610)の外にあると判定する(608)第2の例示的な方法は、計量ベクトル値(812)の計算(810)、および計量空間値(816)の計算(814)、および計量ベクトル値(812)の計量空間値(816)との比較(818)を含む。計量ベクトル値を計算する1つの方法は、所定の式を用いて、ユーザ計量ベクトルのユーザ計量および関連計量の計量値の関数である単一の値を明らかにすることである。本発明の1つの例示的な実施形態では、計量ベクトル値の計算は、ユーザ計量ベクトルの計量値の平均化を含む。別の例示的な実施形態では、計量ベクトル値の計算は、ある種の計量および関連計量を優先させること、および計量の優先に基づいた重み付き平均を用いて計量ベクトル値を計算することを含む。
【0186】
いくつかの例示的な実施形態では、計量空間値(818)の計算(814)は、所定の式を用いて、ユーザ計量空間の各計量範囲の最小および最大値の関数である計量空間値を求めることを含む。1つの例示的な実施形態では、計量空間値の計算は、各計量範囲の最小および最大値の中心点を見出し、次いで中心点を平均化することを含む。
【0187】
例示した方法は、計量空間値(816)および計量ベクトル値(812)の比較(818)を含む。本発明の様々な実施形態では、計量ベクトルが計量空間の外にあるか否かを判定するため、どのように計量ベクトル値および計量空間値を比較するかは、様々である。1つの例示的な実施形態では、計量ベクトル値を、計量空間値から減算する。減算の結果が所定範囲内である場合、ユーザ計量ベクトルは計量空間内にあると判定される。同じ例において、減算の結果が所定範囲内になければ、計量ベクトル値は計量空間内にあると判定されない。
【0188】
図13の例示した方法は、限定のためではなく説明のために提供する。ユーザ計量ベクトルが計量空間の外にあるという判定を行うために、計量範囲および計量値を比較し、組み合わせ、操作し、または他のやり方で使用可能である方法は、他にも多く存在する。ユーザ計量ベクトルが計量空間の外にあるという判定を行うための、かかる比較、組み合わせ、操作、および他のやり方で計量値および計量範囲を用いる方法は、全て、本発明の範囲内に含まれる。
【0189】
図14は、アクション(315)を識別する(630)例示的な方法を示すデータフロー図である。図14の方法において、アクションの識別は、ユーザ計量ベクトル(606)に応じて、動的アクションリスト(626)を生成することを含む。通常の動的アクションリストは、対応する計量範囲または複数の計量範囲の外にあるユーザの計量空間および特定の関連計量の対応する計量範囲の外にあるユーザの計量ベクトルの特定の計量に関連付けた計量アクションリスト内に含まれるアクションIDに応じて動的に識別されるアクションIDを含む。かかる動的アクションリストの生成は、ユーザの現在の状況に応答してデバイスを管理するように構成されたアクションIDの集合を提供することが好都合である。
【0190】
図14の方法において、ユーザ計量ベクトル(606)に応じた動的アクションリスト(626)の生成(624)は、ユーザ計量空間の計量範囲外の値を有するユーザ計量ベクトル(622)の各ユーザ計量(206)および各関連計量ごとの計量アクションリスト(622)の識別(752)を含む。図14の方法の多くの例において、対応する計量範囲の外にある各ユーザ計量(206)および関連計量(664)ごとの、更に、対応する計量範囲の外にある各関連計量ごとの、計量アクションリスト(622)の識別(752)は、ユーザ計量ベクトルがユーザ計量空間の外にあると判定された場合に対応する計量範囲の外にあるとして先に識別された計量オブジェクトから、計量アクションリストに対する参照を検索すること、および、対応する計量範囲の外にあるとして先に識別された関連計量から、計量アクションリストに対する参照を検索することを含む。多くの例では、計量範囲の外にある計量オブジェクトは、ユーザ計量ベクトルが計量空間の外にあるか否かを判定するために計量オブジェクトを計量範囲と比較した場合に、識別される。
【0191】
図14の方法の多くの例では、1つの計量には、複数の計量アクションリストが関連付けられている。関連付けられた各計量アクションリストは、計量値が計量範囲の外にある程度および方向に応じて実行するため、アクションIDの集合を含む。従って、図14の方法のいくつかの例では、ユーザ計量空間の計量範囲の外にある値を有するユーザ計量ベクトル(606)の各ユーザ計量(206)ごとの計量アクションリスト(622)の識別(752)は、ユーザ計量ベクトルの各ユーザ計量の値がユーザ計量空間の計量範囲の外にある程度に応じて計量リストを識別することを含む。図14の方法の別の例では、ユーザ計量空間の計量範囲の外にある値を有するユーザ計量ベクトル(606)の各ユーザ計量(206)ごとの計量アクションリスト(622)の識別(752)は、ユーザ計量ベクトルの各ユーザ計量の値がユーザ計量空間の計量範囲の外にある方向に応じて計量リストを識別することを含む。
【0192】
図14の方法において、ユーザ計量ベクトル(606)に応じた動的アクションリスト(626)の生成(624)は、各計量アクションリスト(622)から少なくとも1つのアクションID(315)を検索すること(754)を含む。いくつかの計量アクションリストは、複数のアクションIDを含み、従って、図14の方法の多くの例は、対応する計量範囲外の値を有する各計量に関連付けられた計量アクションリストから複数のアクションIDを検索することを含む。
【0193】
図14の例では、ユーザ計量ベクトル(606)に応じた動的アクションリスト(626)の生成(624)は、計量アクションリスト(622)から検索したアクションID(315)に応じて動的アクションリスト(626)に含ませるために少なくとも1つのアクションID(315)を識別すること(756)を含む。図14の方法の多くの例では、計量アクションリスト(622)から検索したアクションID(315)に応じて動的アクションリスト(626)に含ませるために少なくとも1つのアクションID(315)を識別すること(756)は、動的アクションリストに含ませるために計量アクションリストから直接検索したアクションIDの識別を含む。すなわち、図14の方法のいくつかの例では、計量アクションリストから検索した同じアクションIDが、動的アクションリストに含まれている。
【0194】
図14の方法では、計量アクションリスト(622)から検索したアクションID(315)に応じて動的アクションリスト(626)に含ませるために少なくとも1つのアクションID(315)を識別すること(756)は、計量アクションリスト(622)のアクションID(315)を比較すること(758)および繰り返しのアクションを省略することを含む。図14の方法のいくつかの例では、繰り返しのアクションを省略することは、同じアクションIDが2つ以上の計量アクションリストに含まれることの判定を含む。かかる例では、動的アクションリストの生成は、同じアクションIDを有し、動的アクションリストに1度だけアクションIDを含む計量アクションリストを識別することを含む。
【0195】
図14の方法では、計量アクションリスト(622)から検索したアクションID(315)に応じて動的アクションリスト(626)に含ませるために少なくとも1つのアクションID(315)を識別すること(756)は、計量アクションリストの少なくとも1つのアクションIDに応じて動的アクションテーブル(762)からアクションID(315)を検索すること(760)を含む。図14の方法の多くの例では、動的アクションテーブル(762)は、他のアクションIDによって索引を付けられるアクションIDを含むデータ構造である。すなわち、動的アクションテーブルは、計量アクションリストから検索したアクションIDに応じて動的アクションリストに含ませるため所定のアクションIDに索引を付けるように設計されたデータ構造である。
【0196】
従って、図14の方法の多くの例において、かかる動的アクションテーブルは、計量アクションリストから検索された競合するアクションを識別し、計量アクションリストから検索された置換するアクションを識別し、更に、計量アクションリストに含まれない別のアクションを識別するように設計されている。図14の方法のいくつかの例において、計量アクションリスト(622)から検索したアクションID(315)に応じて動的アクションリスト(626)に含ませるために少なくとも1つのアクションID(315)を識別すること(756)は、競合するアクションを省略することを含む。図14の方法の多くの例において、動的アクションテーブルを用いて、競合すると前もって決定されたアクションIDを識別する。例えば、天井のファンをオンするデバイス制御アクションを識別する1つの計量アクションリストに含まれるアクションIDは、同じ天井のファンをオフするデバイス制御アクションを識別するアクションIDと競合する。かかる競合アクションIDは、動的アクションリストから省略する。
【0197】
図14の方法のいくつかの例では、計量アクションリスト(622)から検索したアクションID(315)に応じて動的アクションリスト(626)に含ませるために少なくとも1つのアクションID(315)を識別すること(756)は、置換されたアクションを省略することを含む。置換されたアクションとは、実行されると、別の置換するアクションと同じ方向の同じデバイスを管理するが、別の置換するアクションよりも小さい程度でそのデバイスを管理するアクションである。すなわち、別のアクションがより大きい程度で同じデバイスを管理する場合にアクションは置換されて、置換されたアクションの実行は、置換するアクションの実行によって隠されるようになっている。例えば、天井のファンの現在の属性値を「5」から「4」に変化させるアクションIDの実行は、同じ天井のファンの属性を「5」から「2」に変化させるアクションIDの実行によって置換される。図14の方法の多くの例では、動的アクションテーブルを用いて、他のアクションIDを置換するように予め決定されたアクションIDを識別する。図13の方法の多くの例は、動的アクションリストからの置換されたアクションIDを省略し置換するアクションIDを含ませることを含む。
【0198】
図14の方法では、計量アクションリスト(622)から検索したアクションID(315)に応じて動的アクションリスト(626)に含ませるために少なくとも1つのアクションID(315)を識別すること(756)は、動的アクションリストに含ませるために、識別した計量アクションリスト(622)のいずれにも含まれないアクションIDを識別することを含む。図14の方法の多くの例では、動的アクションテーブル(762)のルックアップによって識別されたアクションIDは、識別した計量アクションのいずれにも含まれない。これらの例のいくつかでは、動的アクションテーブルに、実行された場合に他のアクションIDと同じユーザ状況に影響を与えるように予め決定されたアクションIDを設定する。かかる動的アクションテーブルは、計量アクションリストから1つ以上の他のアクションIDが検索された場合に実行するため、アクションIDを識別するように索引を付ける。このように、動的アクションテーブルは、ユーザの現在の状況に影響を与えるより多くのアクションを識別し実行するための手段を有利に提供する。
【0199】
対応する範囲外のユーザ計量に関連付けられたいかなる計量アクションリストにも含まれないアクションIDの識別を更に説明するため、以下の例を与える。ユーザ計量ベクトルの2つのユーザ計量が、ユーザ計量空間の対応する計量範囲を超えている。最初の計量は体温を表し、関連計量アクションリスト内に第1のアクションIDを有し、これは実行されると天井のファンをオンにする。第2の計量は心拍数を表し、関連計量リスト内に第2のアクションIDを有し、これは実行されるとエアコンディショナをオンにする。第1のアクションIDおよび第2のアクションIDに応じた動的アクションテーブルのルックアップは、どちらの計量のどちらの計量アクションリストにも含まれない第3のアクションIDを検索する。第3のアクションIDの実行は、結果として、天井のファンをオンにし、エアコンディショナをオンにし、自動日よけを引く。自動日よけの追加アクションは、エアコンディショナおよび天井のファンをオンすることと同じユーザ状況に影響を与えるように予め決定されている。動的アクションテーブルのルックアップは、第1および第2のアクションIDを基に動的アクションリストに含ませるために第3のアクションIDを識別する。
【0200】
図15は、アクションを識別する(630)例示的な方法を示すデータフロー図である。図15の方法において、アクションの識別は、ユーザの位置(972)の判定(970)を含む。図15の方法の多くの例では、ユーザの位置の判定は、ユーザ計量ベクトルから位置のユーザ計量(206)に対する参照を検索すること、および、位置のユーザ計量の値を検索することを含む。図15の方法の他の例では、ユーザの位置の判定は、他の計量からユーザの位置を推測すること、またはユーザによるデバイスの直接管理によって生じるデバイス属性の変化を識別すること等、または当業者に想起される他のいずれかのユーザ位置の推測方法による、ユーザの位置の推測を含む。
【0201】
図15の方法では、アクションの識別は、ユーザ移動(974)の判定(971)を含む。図15の方法のいくつかの例においてユーザ移動の判定は、ユーザ計量ベクトルから、ユーザの移動を表す関連計量(664)を検索すること、および関連計量の値を検索することを含む。図15の方法のいくつかの例では、ユーザ移動の判定は、ユーザ計量ベクトルから、ユーザの移動の様々な特徴を表す複数の関連計量(664)を検索すること、および複数の関連計量の値を検索することを含む。
【0202】
図15の方法では、アクション(630)の識別は、ユーザの位置(972)およびユーザの移動(974)に応じてアクションID(315)を選択すること(975)を含む。図15の方法では、ユーザの位置およびユーザの移動に応じてアクションIDを選択すること(975)は、アクションテーブルから、ユーザの位置およびユーザの移動に応じたアクションIDを検索することを含む。
【0203】
図15の方法の多くの例では、アクションテーブル(975)は、位置および特定のユーザの移動によって示されるアクションIDを含む。図15の方法の典型的な例において、アクションテーブルのアクションIDは、有効範囲がユーザの現在の位置をカバーする特定のデバイスを管理するように設計されたアクションを識別し、更に、ユーザの現在の移動と一致する方法でデバイスを管理するように設計されている。例えば、ユーザが居間にいて、居間には、有効範囲がこの居間をカバーするラジオが置かれているという場合がある。更に、ユーザがラジオの位置に近づくと、アクションはラジオのボリュームをゆっくりと下げるように設計されている場合がある。ユーザの位置およびユーザの移動に応じてアクションテーブルから選択された特定のアクションIDは、位置に基づくデバイス制御を行うことができると好都合である。
【0204】
以下の例を考える。ユーザの計量ベクトルが、ユーザの心拍数が対応する計量範囲を超えたことを示す。DMLは、ユーザの音楽プレーヤをオンし、プレーヤがユーザを落ち着かせるよう指定された音楽を演奏するように設定するアクションを識別するアクションIDを識別して実行する。また、DMLは、ユーザが居間にいることを判定し、DMLは、ユーザが音楽プレーヤに向かって移動していると判定する。ユーザの速度および方向に適切な速さでボリュームを下げるよう設計された別のアクションIDが識別され実行される。ボリュームを下げた結果、ユーザにとってボリュームは変わらないように見える。
【0205】
図15の方法のいくつかの例は、ユーザの位置(972)およびユーザの移動(974)に応じてアクションID(315)を選択する(975)ことによって、および、動的アクションリストを生成してアクションを識別することによって、アクション(630)を識別することを含む。すなわち、アクションを識別する2つ以上の方法が、関連して実行され、多くの場合、多くのアクションを識別して実行する。他の例では、アクションの識別は、ユーザの位置(972)およびユーザの移動(974)に応じてアクションID(315)を選択する(975)ことによって、または、動的アクションリストを生成してアクションを識別することによって、または当業者に想起される他のいずれかのアクションの識別方法によって、行われる。
【0206】
前述の記載から、本発明の様々な実施形態において、真の精神から逸脱することなく修正および変更を行い得ることは認められよう。本明細書の記載は、例示の目的のためのみであり、限定の意味に解釈されるものではない。本発明の範囲は、特許請求の範囲の文言によってのみ限定される。
【図面の簡単な説明】
【0207】
【図1】本発明によるデバイス管理方法を実施する際に有用な例示的なアーキテクチャを示すブロック図である。
【図2】例示的なサービスゲートウエイを示すブロック図である。
【図3】本発明によるデバイス管理方法を実施する際に有用な例示的なクラスを示すブロック図である。
【図4】図3の例示的なクラスのいくつかの間の例示的な関係を示すクラス関係図である。
【図5】図3の例示的なクラスのいくつかの間の例示的な関係を示す別のクラス関係図である。
【図6】本発明による例示的なデバイス管理方法を示すデータフロー図である。
【図7】アクションを実行する例示的な方法を示すデータフロー図である。
【図8】本発明に従って、ユーザ計量がユーザの既定計量範囲の外であるか否かを判定する例示的な方法を示すデータフロー図である。
【図9】本発明による例示的なデバイス管理方法を示すデータフロー図である。
【図10】本発明に従って関連計量を生成する例示的な方法を示すデータフロー図である。
【図11】本発明による関連計量を生成する例示的な方法を示すデータフロー図である。
【図12】本発明に従って、ユーザ計量ベクトルを生成する例示的な方法および計量空間を生成する例示的な方法を示すデータフロー図である。
【図13】本発明に従って、ユーザ計量ベクトルがユーザ計量空間の外にあるか否かを判定する例示的な方法を示すデータフロー図である。
【図14】本発明に従って動的アクションリストを生成する例示的な方法を示すデータフロー図である。
【図15】本発明に従ってアクションを識別する例示的な方法を示すデータフロー図である。
【特許請求の範囲】
【請求項1】
デバイスを管理する方法であって、
複数のユーザ計量を受信するステップと、
前記複数のユーザ計量を基に関連計量を生成するステップと、
少なくとも1つのユーザ計量および少なくとも1つの関連計量を有するユーザ計量ベクトルを生成するステップと、
複数の計量範囲を有するユーザ計量空間を生成するステップと、
前記ユーザ計量ベクトルが前記ユーザ計量空間の外にあるか否かを判定するステップと、
前記ユーザ計量ベクトルがユーザ計量空間の外にある場合、アクションを識別するステップと、
前記アクションを実行するステップと、
を有する、方法。
【請求項2】
前記複数のユーザ計量を基に関連計量を生成するステップは、前記ユーザ計量をフィルタリングするステップを有する、請求項1の方法。
【請求項3】
前記複数のユーザ計量を基に関連計量を生成するステップは、第1のフィルタリングしたユーザ計量と第2のフィルタリングしたユーザ計量との間の関係を判定するステップを有する、請求項2の方法。
【請求項4】
第1のフィルタリングしたユーザ計量と第2のフィルタリングしたユーザ計量との間の関係を判定するステップは、第1のフィルタリングしたユーザ計量を第2のフィルタリングしたユーザ計量と比較するステップを有する、請求項3の方法。
【請求項5】
前記複数のユーザ計量を基に関連計量を生成するステップは、前記第1のフィルタリングしたユーザ計量と前記第2のフィルタリングしたユーザ計量との間の前記関係の大きさを判定するステップを有する、請求項3の方法。
【請求項6】
前記複数のユーザ計量を基に関連計量を生成するステップは、前記複数のユーザ計量が既定の計量パターンに一致するか否かを判定するステップを有する、請求項1の方法。
【請求項7】
前記複数のユーザ計量が前記既定の計量パターンに一致する場合、関連計量を検索するステップを有する、請求項6の方法。
【請求項8】
少なくとも1つのユーザ計量および少なくとも1つの関連計量を有するユーザ計量ベクトルを生成するステップは、少なくとも1つのユーザ計量を前記ユーザ計量ベクトルに関連付けるステップ、および、少なくとも1つの関連計量を前記ユーザ計量ベクトルに関連付けるステップを有する、請求項1の方法。
【請求項9】
アクションを識別するステップは、
ユーザの位置を判定するステップと、
前記ユーザの位置を基にアクションIDを選択するステップと、
を有する、請求項1の方法。
【請求項10】
アクションを識別するステップは、
ユーザの移動を判定するステップと、
前記ユーザの移動を基にアクションIDを選択するステップと、
を有する、請求項9の方法。
【請求項11】
デバイスを管理するシステムであって、
複数のユーザ計量を受信するための手段と、
前記複数のユーザ計量を基に関連計量を生成するための手段と、
少なくとも1つのユーザ計量および少なくとも1つの関連計量を有するユーザ計量ベクトルを生成するための手段と、
複数の計量範囲を有するユーザ計量空間を生成するための手段と、
前記ユーザ計量ベクトルが前記ユーザ計量空間の外にあるか否かを判定するための手段と、
前記ユーザ計量ベクトルがユーザ計量空間の外にある場合、アクションを識別するための手段と、
前記アクションを実行するための手段と、
を有する、システム。
【請求項12】
前記複数のユーザ計量を基に関連計量を生成するための手段は、前記ユーザ計量をフィルタリングするための手段を有する、請求項11のシステム。
【請求項13】
前記複数のユーザ計量を基に関連計量を生成するための手段は、第1のフィルタリングしたユーザ計量と第2のフィルタリングしたユーザ計量との間の関係を判定するための手段を有する、請求項12のシステム。
【請求項14】
第1のフィルタリングしたユーザ計量と第2のフィルタリングしたユーザ計量との間の関係を判定するための手段は、第1のフィルタリングしたユーザ計量を第2のフィルタリングしたユーザ計量と比較するための手段を有する、請求項13のシステム。
【請求項15】
前記複数のユーザ計量を基に関連計量を生成するための手段は、前記第1のフィルタリングしたユーザ計量と前記第2のフィルタリングしたユーザ計量との間の前記関係の大きさを判定するための手段を有する、請求項13のシステム。
【請求項16】
前記複数のユーザ計量を基に関連計量を生成するための手段は、前記複数のユーザ計量が既定の計量パターンに一致するか否かを判定するための手段を有する、請求項11のシステム。
【請求項17】
前記複数のユーザ計量が前記既定の計量パターンに一致する場合、関連計量を検索するための手段を有する、請求項16のシステム。
【請求項18】
少なくとも1つのユーザ計量および少なくとも1つの関連計量を有するユーザ計量ベクトルを生成するための手段は、少なくとも1つのユーザ計量を前記ユーザ計量ベクトルに関連付けるための手段、および、少なくとも1つの関連計量を前記ユーザ計量ベクトルに関連付けるための手段を有する、請求項11のシステム。
【請求項19】
アクションを識別するステップは、
ユーザの位置を判定するための手段と、
前記ユーザの位置を基にアクションIDを選択するための手段と、
を有する、請求項11のシステム。
【請求項20】
アクションを識別するための手段は、
ユーザの移動を判定するための手段と、
前記ユーザの移動を基にアクションIDを選択するための手段と、
を有する、請求項19のシステム。
【請求項21】
デバイスを管理するためのコンピュータプログラムプロダクトであって、
記録媒体と、
前記記録媒体上に記録された、複数のユーザ計量を受信するための手段と、
前記記録媒体上に記録された、前記複数のユーザ計量を基に関連計量を生成するための手段と、
前記記録媒体上に記録された、少なくとも1つのユーザ計量および少なくとも1つの関連計量を有するユーザ計量ベクトルを生成するための手段と、
前記記録媒体上に記録された、複数の計量範囲を有するユーザ計量空間を生成するための手段と、
前記記録媒体上に記録された、前記ユーザ計量ベクトルが前記ユーザ計量空間の外にあるか否かを判定するための手段と、
前記ユーザ計量ベクトルがユーザ計量空間の外にある場合、アクションを識別するための、前記記録媒体上に記録された手段と、
前記記録媒体上に記録された、前記アクションを実行するための手段と、
を有する、プロダクト。
【請求項22】
前記記録媒体上に記録された、前記複数のユーザ計量を基に関連計量を生成するための手段は、前記記録媒体上に記録された、前記ユーザ計量をフィルタリングするための手段を有する、請求項21のコンピュータプログラムプロダクト。
【請求項23】
前記記録媒体上に記録された、前記複数のユーザ計量を基に関連計量を生成するための手段は、前記記録媒体上に記録された、第1のフィルタリングしたユーザ計量と第2のフィルタリングしたユーザ計量との間の関係を判定するための手段を有する、請求項22のコンピュータプログラムプロダクト。
【請求項24】
前記記録媒体上に記録された、第1のフィルタリングしたユーザ計量と第2のフィルタリングしたユーザ計量との間の関係を判定するための手段は、前記記録媒体上に記録された、第1のフィルタリングしたユーザ計量を第2のフィルタリングしたユーザ計量と比較するための手段を有する、請求項23のコンピュータプログラムプロダクト。
【請求項25】
前記記録媒体上に記録された、前記複数のユーザ計量を基に関連計量を生成するための手段は、前記記録媒体上に記録された、前記第1のフィルタリングしたユーザ計量と前記第2のフィルタリングしたユーザ計量との間の前記関係の大きさを判定するための手段を有する、請求項23のコンピュータプログラムプロダクト。
【請求項26】
前記記録媒体上に記録された、前記複数のユーザ計量を基に関連計量を生成するための手段は、前記記録媒体上に記録された、前記複数のユーザ計量が既定の計量パターンに一致するか否かを判定するための手段を有する、請求項25のコンピュータプログラムプロダクト。
【請求項27】
前記複数のユーザ計量が前記既定の計量パターンに一致する場合、関連計量を検索するための、前記記録媒体上に記録された手段を有する、請求項26のコンピュータプログラムプロダクト。
【請求項28】
前記記録媒体上に記録された、少なくとも1つのユーザ計量および少なくとも1つの関連計量を有するユーザ計量ベクトルを生成するための手段は、前記記録媒体上に記録された、少なくとも1つのユーザ計量を前記ユーザ計量ベクトルに関連付けるための手段、および、前記記録媒体上に記録された、少なくとも1つの関連計量を前記ユーザ計量ベクトルに関連付けるための手段を有する、請求項21のコンピュータプログラムプロダクト。
【請求項29】
前記記録媒体上に記録された、アクションを識別するステップは、
前記記録媒体上に記録された、ユーザの位置を判定するための手段と、
前記記録媒体上に記録された、前記ユーザの位置を基にアクションIDを選択するための手段と、
を有する、請求項21のコンピュータプログラムプロダクト。
【請求項30】
前記記録媒体上に記録された、アクションを識別するための手段は、
前記記録媒体上に記録された、ユーザの移動を判定するための手段と、
前記記録媒体上に記録された、前記ユーザの移動を基にアクションIDを選択するための手段と、
を有する、請求項29のコンピュータプログラムプロダクト。
【請求項1】
デバイスを管理する方法であって、
複数のユーザ計量を受信するステップと、
前記複数のユーザ計量を基に関連計量を生成するステップと、
少なくとも1つのユーザ計量および少なくとも1つの関連計量を有するユーザ計量ベクトルを生成するステップと、
複数の計量範囲を有するユーザ計量空間を生成するステップと、
前記ユーザ計量ベクトルが前記ユーザ計量空間の外にあるか否かを判定するステップと、
前記ユーザ計量ベクトルがユーザ計量空間の外にある場合、アクションを識別するステップと、
前記アクションを実行するステップと、
を有する、方法。
【請求項2】
前記複数のユーザ計量を基に関連計量を生成するステップは、前記ユーザ計量をフィルタリングするステップを有する、請求項1の方法。
【請求項3】
前記複数のユーザ計量を基に関連計量を生成するステップは、第1のフィルタリングしたユーザ計量と第2のフィルタリングしたユーザ計量との間の関係を判定するステップを有する、請求項2の方法。
【請求項4】
第1のフィルタリングしたユーザ計量と第2のフィルタリングしたユーザ計量との間の関係を判定するステップは、第1のフィルタリングしたユーザ計量を第2のフィルタリングしたユーザ計量と比較するステップを有する、請求項3の方法。
【請求項5】
前記複数のユーザ計量を基に関連計量を生成するステップは、前記第1のフィルタリングしたユーザ計量と前記第2のフィルタリングしたユーザ計量との間の前記関係の大きさを判定するステップを有する、請求項3の方法。
【請求項6】
前記複数のユーザ計量を基に関連計量を生成するステップは、前記複数のユーザ計量が既定の計量パターンに一致するか否かを判定するステップを有する、請求項1の方法。
【請求項7】
前記複数のユーザ計量が前記既定の計量パターンに一致する場合、関連計量を検索するステップを有する、請求項6の方法。
【請求項8】
少なくとも1つのユーザ計量および少なくとも1つの関連計量を有するユーザ計量ベクトルを生成するステップは、少なくとも1つのユーザ計量を前記ユーザ計量ベクトルに関連付けるステップ、および、少なくとも1つの関連計量を前記ユーザ計量ベクトルに関連付けるステップを有する、請求項1の方法。
【請求項9】
アクションを識別するステップは、
ユーザの位置を判定するステップと、
前記ユーザの位置を基にアクションIDを選択するステップと、
を有する、請求項1の方法。
【請求項10】
アクションを識別するステップは、
ユーザの移動を判定するステップと、
前記ユーザの移動を基にアクションIDを選択するステップと、
を有する、請求項9の方法。
【請求項11】
デバイスを管理するシステムであって、
複数のユーザ計量を受信するための手段と、
前記複数のユーザ計量を基に関連計量を生成するための手段と、
少なくとも1つのユーザ計量および少なくとも1つの関連計量を有するユーザ計量ベクトルを生成するための手段と、
複数の計量範囲を有するユーザ計量空間を生成するための手段と、
前記ユーザ計量ベクトルが前記ユーザ計量空間の外にあるか否かを判定するための手段と、
前記ユーザ計量ベクトルがユーザ計量空間の外にある場合、アクションを識別するための手段と、
前記アクションを実行するための手段と、
を有する、システム。
【請求項12】
前記複数のユーザ計量を基に関連計量を生成するための手段は、前記ユーザ計量をフィルタリングするための手段を有する、請求項11のシステム。
【請求項13】
前記複数のユーザ計量を基に関連計量を生成するための手段は、第1のフィルタリングしたユーザ計量と第2のフィルタリングしたユーザ計量との間の関係を判定するための手段を有する、請求項12のシステム。
【請求項14】
第1のフィルタリングしたユーザ計量と第2のフィルタリングしたユーザ計量との間の関係を判定するための手段は、第1のフィルタリングしたユーザ計量を第2のフィルタリングしたユーザ計量と比較するための手段を有する、請求項13のシステム。
【請求項15】
前記複数のユーザ計量を基に関連計量を生成するための手段は、前記第1のフィルタリングしたユーザ計量と前記第2のフィルタリングしたユーザ計量との間の前記関係の大きさを判定するための手段を有する、請求項13のシステム。
【請求項16】
前記複数のユーザ計量を基に関連計量を生成するための手段は、前記複数のユーザ計量が既定の計量パターンに一致するか否かを判定するための手段を有する、請求項11のシステム。
【請求項17】
前記複数のユーザ計量が前記既定の計量パターンに一致する場合、関連計量を検索するための手段を有する、請求項16のシステム。
【請求項18】
少なくとも1つのユーザ計量および少なくとも1つの関連計量を有するユーザ計量ベクトルを生成するための手段は、少なくとも1つのユーザ計量を前記ユーザ計量ベクトルに関連付けるための手段、および、少なくとも1つの関連計量を前記ユーザ計量ベクトルに関連付けるための手段を有する、請求項11のシステム。
【請求項19】
アクションを識別するステップは、
ユーザの位置を判定するための手段と、
前記ユーザの位置を基にアクションIDを選択するための手段と、
を有する、請求項11のシステム。
【請求項20】
アクションを識別するための手段は、
ユーザの移動を判定するための手段と、
前記ユーザの移動を基にアクションIDを選択するための手段と、
を有する、請求項19のシステム。
【請求項21】
デバイスを管理するためのコンピュータプログラムプロダクトであって、
記録媒体と、
前記記録媒体上に記録された、複数のユーザ計量を受信するための手段と、
前記記録媒体上に記録された、前記複数のユーザ計量を基に関連計量を生成するための手段と、
前記記録媒体上に記録された、少なくとも1つのユーザ計量および少なくとも1つの関連計量を有するユーザ計量ベクトルを生成するための手段と、
前記記録媒体上に記録された、複数の計量範囲を有するユーザ計量空間を生成するための手段と、
前記記録媒体上に記録された、前記ユーザ計量ベクトルが前記ユーザ計量空間の外にあるか否かを判定するための手段と、
前記ユーザ計量ベクトルがユーザ計量空間の外にある場合、アクションを識別するための、前記記録媒体上に記録された手段と、
前記記録媒体上に記録された、前記アクションを実行するための手段と、
を有する、プロダクト。
【請求項22】
前記記録媒体上に記録された、前記複数のユーザ計量を基に関連計量を生成するための手段は、前記記録媒体上に記録された、前記ユーザ計量をフィルタリングするための手段を有する、請求項21のコンピュータプログラムプロダクト。
【請求項23】
前記記録媒体上に記録された、前記複数のユーザ計量を基に関連計量を生成するための手段は、前記記録媒体上に記録された、第1のフィルタリングしたユーザ計量と第2のフィルタリングしたユーザ計量との間の関係を判定するための手段を有する、請求項22のコンピュータプログラムプロダクト。
【請求項24】
前記記録媒体上に記録された、第1のフィルタリングしたユーザ計量と第2のフィルタリングしたユーザ計量との間の関係を判定するための手段は、前記記録媒体上に記録された、第1のフィルタリングしたユーザ計量を第2のフィルタリングしたユーザ計量と比較するための手段を有する、請求項23のコンピュータプログラムプロダクト。
【請求項25】
前記記録媒体上に記録された、前記複数のユーザ計量を基に関連計量を生成するための手段は、前記記録媒体上に記録された、前記第1のフィルタリングしたユーザ計量と前記第2のフィルタリングしたユーザ計量との間の前記関係の大きさを判定するための手段を有する、請求項23のコンピュータプログラムプロダクト。
【請求項26】
前記記録媒体上に記録された、前記複数のユーザ計量を基に関連計量を生成するための手段は、前記記録媒体上に記録された、前記複数のユーザ計量が既定の計量パターンに一致するか否かを判定するための手段を有する、請求項25のコンピュータプログラムプロダクト。
【請求項27】
前記複数のユーザ計量が前記既定の計量パターンに一致する場合、関連計量を検索するための、前記記録媒体上に記録された手段を有する、請求項26のコンピュータプログラムプロダクト。
【請求項28】
前記記録媒体上に記録された、少なくとも1つのユーザ計量および少なくとも1つの関連計量を有するユーザ計量ベクトルを生成するための手段は、前記記録媒体上に記録された、少なくとも1つのユーザ計量を前記ユーザ計量ベクトルに関連付けるための手段、および、前記記録媒体上に記録された、少なくとも1つの関連計量を前記ユーザ計量ベクトルに関連付けるための手段を有する、請求項21のコンピュータプログラムプロダクト。
【請求項29】
前記記録媒体上に記録された、アクションを識別するステップは、
前記記録媒体上に記録された、ユーザの位置を判定するための手段と、
前記記録媒体上に記録された、前記ユーザの位置を基にアクションIDを選択するための手段と、
を有する、請求項21のコンピュータプログラムプロダクト。
【請求項30】
前記記録媒体上に記録された、アクションを識別するための手段は、
前記記録媒体上に記録された、ユーザの移動を判定するための手段と、
前記記録媒体上に記録された、前記ユーザの移動を基にアクションIDを選択するための手段と、
を有する、請求項29のコンピュータプログラムプロダクト。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開2006−39750(P2006−39750A)
【公開日】平成18年2月9日(2006.2.9)
【国際特許分類】
【出願番号】特願2004−216023(P2004−216023)
【出願日】平成16年7月23日(2004.7.23)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Bluetooth
2.ポケットベル
3.ETHERNET
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【Fターム(参考)】
【公開日】平成18年2月9日(2006.2.9)
【国際特許分類】
【出願日】平成16年7月23日(2004.7.23)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Bluetooth
2.ポケットベル
3.ETHERNET
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【Fターム(参考)】
[ Back to top ]