(57)【要約】広帯域ネットワーク環境においてカスタマイズされた対話型コンピュータ・サービスを実行する装置および方法。広帯域ネットワーク（30）上の装置は、ユーザによって定義されたデータをネットワーク（50）を介して取り込み、フォーマットし、広帯域ネットワーク（30）上でブロードキャストされたデータと一緒に、関連するディスプレイ上に表示することができる。この装置は、広帯域ネットワークに接続されたセット・トップ・ボックス、ゲーム・コンソール、ホーム・ゲートウェイのような宅内機器（10）であってよい。セット・トップ・ボックスの場合、ブロードキャストされるデータはテレビジョン・プログラミングである。装置は好ましくは、インタネット上の供給源からデータを取り込むことができる。取込みおよびフォーマットは好ましくは、ネットワークを通じて装置に送信され、装置に記憶され、かつ装置上で実行されるコンパクトなソフトウェア・エージェントによって実行される。
2005531053.tif 000002
【特許請求の範囲】
【請求項１】
広帯域ネットワークを通じて複数のデータ供給源から得たデータの表示を可能にし、前記データ供給源の少なくとも一方が、前記広帯域ネットワーク上でデータをブロードキャストするデータ供給源を含み、前記データ供給源の他方をユーザによってローカルに選択することができる装置において、
前記装置内のメモリに記憶されたデータ構造であって、前記装置によって実行されたときに、前記装置が、ユーザによってローカルに選択された前記データ供給源の前記他方からデータを取り込むのを可能にするアプリケーションを表すデータ構造を含む装置。
【請求項２】
前記装置は非揮発性記憶装置をさらに含み、前記データ構造は前記揮発性記憶域に記憶される、請求項1に記載の装置。
【請求項３】
前記装置は記憶域をさらに含み、前記データ構造は、前記装置が作動したときに前記広帯域ネットワークを通じてリモート・コンピューティング装置からダウンロードされる、請求項1に記載の装置。
【請求項４】
前記装置は記憶域をさらに含み、前記データ構造は、前記装置を操作するユーザが前記アプリケーションの使用を試みたときに前記広帯域ネットワークを通じてリモート・コンピューティング装置からダウンロードされる、請求項1に記載の装置。
【請求項５】
前記広帯域ネットワークはインタネットに接続されており、前記データ供給源の前記他方はインタネットに接続されている、請求項1に記載の装置。
【請求項６】
前記装置は、前記データ供給源の前記他方からデータを取り込むのに必要な実質的にすべての計算タスクを実行できるように構成されている、請求項1に記載の装置。
【請求項７】
前記装置は、前記データ構造に含まれるエージェント・ベース・ソフトウェアを用いて前記データ供給源の前記他方からデータを取り込む、請求項1に記載の装置。
【請求項８】
前記装置はCPEデバイスを含む、請求項1に記載の装置。
【請求項９】
前記装置は、外部ネットワーク・コンテントを取り込み表示することができる、請求項1に記載の装置。
【請求項１０】
インタネットに接続されたパーソナル・コンピュータをさらに含み、前記広帯域ネットワークを介してユーザのパーソナル・コンピュータと前記装置との間でデータを転送することができる、請求項1に記載の装置。
【請求項１１】
前記データは個人化されたアプリケーション設定を含む、請求項10に記載の装置。
【請求項１２】
前記データはアプリケーション修正を含む、請求項10に記載の装置。
【請求項１３】
前記アプリケーション修正は、アプリケーションに新しい機能を追加する新しいスクリプトを含む、請求項12に記載の装置。
【請求項１４】
前記アプリケーション修正は、アプリケーションのすでに存在している機能を修正する置換スクリプトを含む、請求項12に記載の装置。
【請求項１５】
前記アプリケーション修正は、外部供給源から新しい情報を取り込む新しいソフトウェア・エージェントの追加を含む、請求項12に記載の装置。
【請求項１６】
前記外部供給源はインタネットである、請求項15に記載の装置。
【請求項１７】
前記外部供給源はイントラネットである、請求項15に記載の装置。
【請求項１８】
前記アプリケーション修正は、ローカル表示デバイス上に新しい情報を表示する新しいソフトウェア・エージェントの追加を含む、請求項12に記載の装置。
【請求項１９】
前記装置は、外部ネットワークから取り込まれた情報の個人化された選択肢を表示デバイスに関連して表示するようになっている、請求項1に記載の装置。
【請求項２０】
前記情報は、ユーザによってカスタマイズ可能な1つまたは複数の地域に関するニュース・ヘッドラインを含む、請求項19に記載の装置。
【請求項２１】
前記情報は、ユーザによってカスタマイズ可能な1つまたは複数の地域に関する天気予報を含む、請求項19に記載の装置。
【請求項２２】
前記情報は、選択されたスポーツ、リーグ、およびチームに関するスポーツ・ニュースおよびスコアを含む、請求項19に記載の装置。
【請求項２３】
前記情報は選択された株価を含む、請求項19に記載の装置。
【請求項２４】
前記情報はeメール・メッセージを含む、請求項19に記載の装置。
【請求項２５】
前記アプリケーションのアプリケーション固有構成要素は、前記データ構造のリモートに修正可能な部分に定義されており、修正および拡張が容易である、請求項1に記載の装置。
【請求項２６】
前記装置は、定義済みのイベントの発生を認識し、定義済みのイベントの前記発生をユーザに知らせる（アラートする）ようになっている、請求項1に記載の装置。
【請求項２７】
前記アラートはグラフィック表示を含む、請求項26に記載の装置。
【請求項２８】
前記アラートはテキスト・メッセージを含む、請求項26に記載の装置。
【請求項２９】
前記アラートは聴覚信号を含む、請求項26に記載の装置。
【請求項３０】
前記定義済みイベントは、システム・ユーザのリモートeメール・アカウントにおける少なくとも1つの読み取られていないeメール・メッセージの存在を含む、請求項26に記載の装置。
【請求項３１】
前記定義済みイベントは、システム・ユーザのリモートeメール・アカウントにおける、定義済みの送信側リストのうちの1つの送信側からの少なくとも1つの読み取られていないeメール・メッセージの存在を含む、請求項26に記載の装置。
【請求項３２】
前記定義済みイベントは、システム・ユーザのリモートeメール・アカウントにおける、定義済みのキーワード・リストのうちの1つのキーワードを含む少なくとも1つの読み取られていないeメール・メッセージの存在を含む、請求項26に記載の装置。
【請求項３３】
前記定義済みイベントは、悪天候に関する警報または注意を含む、請求項26に記載の装置。
【請求項３４】
前記定義済みイベントは、ショッピング・チャネル上に定義済みの品目リストのうちの1つの品目が現れることを含む、請求項26に記載の装置。
【請求項３５】
前記定義済みイベントは、現在放送されているテレビジョン・プログラムのプログラム・ガイド説明に、定義済みの出演者リストのうちの1人の出演者が現れることを含む、請求項26に記載の装置。
【請求項３６】
前記装置は、検索エージェントをローカルに実行し、選択されたコンテントを前記他方のデータ供給源から取り込むようになっている、請求項1に記載の装置。
【請求項３７】
前記装置は、前記他方のデータ供給源から取り込まれた前記選択されたコンテントを表示デバイスに関連して表示するようになっている、請求項36に記載の装置。
【請求項３８】
前記装置は、ビデオ情報、テキスト情報、およびグラフィック情報を表示する動作をローカルに同時に実行するようになっている、請求項1に記載の装置。
【請求項３９】
前記テキスト情報およびグラフィック情報は、垂直方向にスクロールされる領域に表示される、請求項38に記載の装置。
【請求項４０】
垂直方向にスクロールされる領域は、サイズを変更されたビデオ情報を隠さない、請求項39に記載の装置。
【請求項４１】
垂直方向にスクロールされる領域はスクリーン・ビデオ全体を覆う、請求項39に記載の装置。
【請求項４２】
前記テキスト情報およびグラフィック情報は、垂直方向にスクロールされる領域に表示される、請求項38に記載の装置。
【請求項４３】
前記テキスト情報およびグラフィック情報は、周期的に更新される領域に表示される、請求項42に記載の装置。
【請求項４４】
前記装置は、ユーザからアプリケーション設定情報を収集するユーザ・インタフェースをローカルに実行するようになっている、請求項1に記載の装置。
【請求項４５】
前記装置は、定義済みの設定を定義し選択するインディシャ（indicia）を表示する選択可能な領域を表示デバイスに関連して表示するようになっている、請求項1に記載の装置。
【請求項４６】
前記装置は、マルチページ・ユーザ・インタフェースによる閲覧のための選択可能な領域を表示デバイスに関連して表示するようになっている、請求項1に記載の装置。
【請求項４７】
前記装置は、ローカルに実行されるアプリケーションに英数字情報を入力するローカルに実行される仮想キーボードを表示デバイスに関連して表示するようになっている、請求項1に記載の装置。
【請求項４８】
広帯域ネットワークと、
前記広帯域ネットワークに接続されたサーバと、
前記広帯域ネットワーク上で前記サーバとカスタマイズ可能な対話を行う複数のデバイスであって、前記各デバイスが、ディスプレイに接続可能であり、前記ディスプレイに、前記広帯域ネットワーク上で各デバイスにブロードキャストされるコンテントを示させるようになっており、前記各デバイスがデータ構造を含み、すなわち、実行されたときに、前記デバイスが、前記広帯域ネットワークと対話して少なくとも1つのカスタマイズ可能な対話型コンピュータ・サービスを提供するのを可能にするアプリケーションを表すデータ構造を含む複数のデバイスとを含むシステム。
【請求項４９】
前記カスタマイズ可能な対話型コンピュータ・サービスは、インタネットからのデータのカスタマイズ可能な取込みを含む、請求項48に記載のシステム。
【請求項５０】
前記デバイスは、前記カスタマイズ可能な対話型コンピュータ・サービスを実現するのに必要な実質的にすべての計算タスクを実行できるように構成されている、請求項48に記載のシステム。
【請求項５１】
広帯域ネットワークの帯域幅利用を最適化するように構成されたサポート・サーバをさらに含む、請求項48に記載のシステム。
【請求項５２】
デバイスの機能を増強する必須ではないサポート・サービスを提供するように構成されたサポート・サーバをさらに含む、請求項48に記載のシステム。
【請求項５３】
前記サポート・サーバはさらに、カスタマイズされたアプリケーション初期設定を記憶する前記複数のローカル・ユーザ・ユニット・デバイスにリモート持続記憶サービスを提供するように構成されている、請求項52に記載のシステム。
【請求項５４】
前記サポート・サーバはさらに、カルーセル・データを繰り返し前記複数のデバイスに同時にブロードキャストするデータ・カルーセル・サービスを提供するように構成されている、請求項52に記載のシステム。
【請求項５６】
前記サポート・サーバは、前記複数のデバイスのそれぞれのユーザの初期設定データを記憶し、前記カルーセル・データは、少なくとも部分的に前記初期設定に基づいて選択される、請求項54に記載のシステム。
【請求項５７】
前記デバイスはCPEデバイスである、請求項52に記載のシステム。
【請求項５８】
前記CPEデバイスは、IPプロトコルを用いて、ユーザが前記カスタマイズされた初期設定データに変更を施した後で、カスタマイズされた初期設定データを前記サポート・サーバにアップロードし、前記カスタマイズされた初期設定データを前記サポート・サーバからダウンロードするように構成されている、請求項57に記載のシステム。
【請求項５９】
前記CPEデバイスは、前記広帯域ネットワークを通じて外部IPベース・ネットワークにも接続されている、請求項57に記載のシステム。
【請求項６０】
前記外部IPベース・ネットワークは、複数のネットワーク・データ供給源にも接続されている、請求項59に記載のシステム。
【請求項６１】
前記広帯域ネットワークは有線ネットワークである、請求項48に記載のシステム。
【請求項６２】
前記広帯域ネットワークは無線ネットワークである、請求項48に記載のシステム。
【請求項６３】
前記広帯域ネットワークはケーブル・テレビジョン・ネットワークを含む、請求項48に記載のシステム。
【請求項６４】
前記広帯域ネットワークは衛星テレビジョン・ネットワークを含む、請求項48に記載のシステム。
【請求項６５】
前記広帯域ネットワークはローカル・エリア・ネットワーク（LAN）を含む、請求項48に記載のシステム。
【請求項６６】
前記広帯域ネットワークはワイド・エリア・ネットワーク（WAN）を含む、請求項48に記載のシステム。
【請求項６７】
前記広帯域ネットワークはアナログ電話網を含む、請求項48に記載のシステム。
【請求項６８】
前記広帯域ネットワークはデジタル電話網を含む、請求項48に記載のシステム。
【請求項６９】
前記広帯域ネットワークはインタネットを含む、請求項48に記載のシステム。
【請求項７０】
前記広帯域ネットワークは、TCP/IPネットワーク・トラフィックを転送することができる、請求項48に記載のシステム。
【請求項７１】
広帯域ネットワーク環境においてカスタマイズ可能な対話型コンピュータ・サービスを提供するシステムであって、
広帯域ネットワーク上でIPプロトコルを用いて通信し、外部コンピュータ・ネットワークに接続されたデータ供給源から情報を取り込み、取り込まれた情報を処理し、結果をローカルに表示デバイス上に選択的に表示するように構成されている複数のCPEデバイスを含むシステム。
【請求項７２】
前記広帯域ネットワーク環境はデジタル・ケーブル・テレビジョン環境である、請求項71に記載のシステム。
【請求項７３】
前記広帯域ネットワーク環境はデジタル衛星テレビジョン環境である、請求項71に記載のシステム。
【請求項７４】
前記CPEは持続記憶域を有さず、前記システムは、前記CPEに持続記憶サービスを提供するサーバ・コンピュータをさらに含む、請求項71に記載のシステム。
【請求項７５】
ネットワーク帯域幅利用を最適化するサーバ・コンピュータをさらに含む、請求項71に記載のシステム。
【請求項７６】
前記記憶されているカスタマイズされたアプリケーション参照は、前記帯域幅最適化サービスを構成するのに用いられる統計データを提供するために使用される、請求項75に記載のシステム。
【請求項７７】
前記広帯域ネットワーク環境はゲーム・コンソール・ネットワーク環境である、請求項71に記載のシステム。
【請求項７８】
前記広帯域ネットワーク環境はホーム・ゲートウェイ環境である、請求項71に記載のシステム。
【請求項７９】
広帯域ネットワーク環境においてカスタマイズ可能な対話型コンピュータ・サービスを提供するシステムにおいて、
各セット・トップ・ボックスが、
メモリに記憶されたデータ構造であって、実行されたときに、前記セット・トップ・ボックスが、前記広帯域ネットワークと対話して少なくとも1つのカスタマイズ可能な対話型コンピュータ・サービスを提供するのを可能にするアプリケーションを表すデータ構造、および
前記アプリケーションを実行するローカル実行ユニットを含む複数のセット・トップ・ボックスと、
前記広帯域ネットワークを通じて前記複数のセット・トップ・ボックスに接続され、前記複数のセット・トップ・ボックスをサポートするリモート実行ユニットとを含むシステム。
【請求項８０】
前記セット・トップ・ボックスはデジタル・ケーブル・テレビジョン・セット・トップ・ボックスである、請求項79に記載のシステム。
【請求項８１】
前記セット・トップ・ボックスはデジタル衛星テレビジョン・セット・トップ・ボックスである、請求項79に記載のシステム。
【請求項８２】
前記アプリケーションは外部ネットワーク・コンテントを取り込み表示することができる、請求項79に記載のシステム。
【請求項８３】
インタネットに接続されたパーソナル・コンピュータをさらに含み、前記広帯域ネットワークを介してユーザのパーソナル・コンピュータと前記セット・トップ・ボックスとの間でデータを転送することができる、請求項79に記載のシステム。
【請求項８４】
前記データは個人化されたアプリケーション設定を含む、請求項83に記載のシステム。
【請求項８５】
前記データはセット・トップ・ボックス・アプリケーション修正を含む、請求項83に記載のシステム。
【請求項８６】
前記アプリケーション修正は、アプリケーションに新しい機能を追加する新しいスクリプトを含む、請求項85に記載のシステム。
【請求項８７】
前記アプリケーション修正は、アプリケーションのすでに存在している機能を修正する置換スクリプトを含む、請求項85に記載のシステム。
【請求項８８】
前記アプリケーション修正は、外部供給源から新しい情報を取り込む新しいエージェントを含む、請求項85に記載のシステム。
【請求項８９】
前記外部供給源はインタネットである、請求項88に記載のシステム。
【請求項９０】
前記外部供給源はイントラネットである、請求項88に記載のシステム。
【請求項９１】
前記アプリケーション修正は、ローカル表示デバイス上に新しい情報を表示する新しいエージェントを含む、請求項85に記載のシステム。
【請求項９２】
前記リモート実行ユニットは、ユーザ初期設定データを調べることによって、対話型データに関する前記広帯域ネットワークの帯域幅利用を動的に最適化する、請求項79に記載のシステム。
【請求項９３】
前記セット・トップ・ボックスは、水平方向にスクロールされるテキスト表示およびグラフィクス表示を生成するようになっている、請求項79に記載のシステム。
【請求項９４】
前記セット・トップ・ボックスは、垂直方向にスクロールされるテキスト表示およびグラフィクス表示を生成するようになっている、請求項79に記載のシステム。
【請求項９５】
前記セット・トップ・ボックスは、外部ネットワークから取り込まれた情報の個人化された選択肢を表示デバイスに関連して表示するようになっている、請求項79に記載のシステム。
【請求項９６】
前記情報は、ユーザによってカスタマイズ可能な1つまたは複数の地域に関するニュース・ヘッドラインを含む、請求項95に記載のシステム。
【請求項９７】
前記情報は、ユーザによってカスタマイズ可能な1つまたは複数の地域に関する天気予報を含む、請求項95に記載のシステム。
【請求項９８】
前記情報は、選択されたスポーツ、リーグ、およびチームに関するスポーツ・ニュースおよびスコアを含む、請求項95に記載のシステム。
【請求項９９】
前記情報は選択された株価を含む、請求項95に記載のシステム。
【請求項１００】
前記情報はeメール・メッセージを含む、請求項95に記載のシステム。
【請求項１０１】
前記アプリケーションのアプリケーション固有構成要素は、リモートに修正可能なデータに定義されており、修正および拡張が容易である、請求項79に記載のシステム。
【請求項１０２】
前記セット・トップ・ボックスは、定義済みのイベントの発生を認識し、定義済みのイベントの前記発生をユーザに知らせる（アラートする）ようになっている、請求項79に記載のシステム。
【請求項１０３】
前記アラートはグラフィック表示を含む、請求項102に記載のシステム。
【請求項１０４】
前記アラートはテキスト・メッセージを含む、請求項102に記載のシステム。
【請求項１０５】
前記アラートは聴覚信号を含む、請求項102に記載のシステム。
【請求項１０６】
前記定義済みイベントは、システム・ユーザのリモートeメール・アカウントにおける少なくとも1つの読み取られていないeメール・メッセージの存在を含む、請求項102に記載のシステム。
【請求項１０７】
前記定義済みイベントは、システム・ユーザのリモートeメール・アカウントにおける、定義済みの送信側リストのうちの1つの送信側からの少なくとも1つの読み取られていないeメール・メッセージの存在を含む、請求項102に記載のシステム。
【請求項１０８】
前記定義済みイベントは、システム・ユーザのリモートeメール・アカウントにおける、定義済みのキーワード・リストのうちの1つのキーワードを含む少なくとも1つの読み取られていないeメール・メッセージの存在を含む、請求項102に記載のシステム。
【請求項１０９】
前記定義済みイベントは、悪天候に関する警報または注意を含む、請求項102に記載のシステム。
【請求項１１０】
前記定義済みイベントは、ショッピング・チャネル上に定義済みの品目リストのうちの1つの品目が現れることを含む、請求項102に記載のシステム。
【請求項１１１】
前記定義済みイベントは、現在放送されているテレビジョン・プログラムのプログラム・ガイド説明に、定義済みの出演者リストのうちの1人の出演者が現れることを含む、請求項102に記載のシステム。
【請求項１１２】
前記セット・トップ・ボックスは、検索エージェントをローカルに実行し、選択されたコンテントを外部のデータ供給源から取り込むようになっている、請求項79に記載のシステム。
【請求項１１３】
前記セット・トップ・ボックスは、前記データ供給源から取り込まれた前記選択されたコンテントをテレビジョン受像機に関連して表示するようになっている、請求項112に記載のシステム。
【請求項１１４】
前記セット・トップ・ボックスは、ビデオ情報、テキスト情報、およびグラフィック情報を表示する動作をローカルに同時に実行するようになっている、請求項79に記載のシステム。
【請求項１１５】
前記テキスト情報およびグラフィック情報は、水平方向にスクロールされる領域に表示される、請求項114に記載のシステム。
【請求項１１６】
水平方向にスクロールされる領域は、サイズを変更されたビデオ情報を隠さない、請求項115に記載のシステム。
【請求項１１７】
水平方向にスクロールされる領域はスクリーン・ビデオ全体を覆う、請求項115に記載のシステム。
【請求項１１８】
前記テキスト情報およびグラフィック情報は、垂直方向にスクロールされる領域に表示される、請求項114に記載のシステム。
【請求項１１９】
前記テキスト情報およびグラフィック情報は、周期的に更新される領域に表示される、請求項114に記載のシステム。
【請求項１２０】
前記セット・トップ・ボックスは、ユーザからアプリケーション設定情報を収集するユーザ・インタフェースをローカルに実行するようになっている、請求項79に記載のシステム。
【請求項１２１】
前記セット・トップ・ボックスは、定義済みの設定を定義し選択するインディシャ（indicia）を表示する選択可能な領域を表示デバイスに関連して表示するようになっている、請求項79に記載のシステム。
【請求項１２２】
前記セット・トップ・ボックスは、マルチページ・ユーザ・インタフェースによる閲覧のための選択可能な領域を表示デバイスに関連して表示するようになっている、請求項79に記載のシステム。
【請求項１２３】
前記セット・トップ・ボックスは、ローカルに実行されるアプリケーションに英数字情報を入力するローカルに実行される仮想キーボードをテレビジョン受像機に関連して表示するようになっている、請求項79に記載のシステム。
【請求項１２４】
広帯域ネットワークを通じて取り込まれた複数のデータ供給源からのデータを表示する方法であって、前記データ供給源の少なくとも一方が、前記広帯域ネットワーク上でデータをブロードキャストするデータ供給源を含み、前記データ供給源の他方をユーザによってローカルに選択することができる方法において、
実行されたときに、前前記データ供給源の前記他方からデータを取り込むのを可能にするアプリケーションを表すデータ構造を前記広帯域ネットワーク上で受信するステップと、
前記データ構造を記憶するステップと、
前記アプリケーションを実行し、それによって前記データ供給源の前記他方からデータを受信するステップと、
前記データを表示できるようにフォーマットするステップと、
前記データを広帯域ネットワーク上でブロードキャストされたデータと一緒に表示するステップとを含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は概して、コンピュータ・ネットワークを介した情報の検索および表示に関する。特に、本発明は、中間広帯域通信網を介して外部コンピュータ・ネットワークに接続されたコンピューティング装置上でカスタマイズ可能な対話型コンピューティング・サービスのローカル実行に関する。
関連出願
【０００２】
この出願は、両方の特許出願の明細書が参照により本明細書に組み入れられる、2000年7月13日に出願された米国特許出願第09/615830号の一部継続出願および2001年7月12日に出願された米国特許出願第09/902796号の一部継続出願である。
【背景技術】
【０００３】
従来のパーソナル・コンピューティング装置の処理能力は、18か月ごとに2倍になると言われている。これに加えて、利用可能なネットワーク帯域幅およびアクセス可能なコンテントが増大すると、個々のコンピューティング装置ユーザによる検索および調査に膨大な量の情報を利用することができる。しかし、家庭および小規模の会社で最も広く使用されているコンピューティング装置の多くは、このような大量の情報を利用していない。このような装置は「宅内機器」（CPE）と呼ばれることが多く、このような装置には、デジタル・ケーブル信号または衛星テレビジョン信号を受信し復号するセット・トップ・ボックス、ビデオ・ゲーム・コンソール、および家庭ネットワーク・ゲートウェイが含まれる。PCなどの汎用装置とは異なり、これらのCPE装置は通常、特定の用途を対象とするかまたは特定の用途専用であることを特徴としている。CPE装置の処理能力が絶えず高くなり、CPE装置が、それに関連する広帯域ネットワークを介して利用できる帯域幅接続性が高いため、CPE装置は、1つまたは複数の中央サーバからCPE装置にブロードキャストされる情報またはオーディオ−ビデオ・コンテントの表示を制御するためにのみ使用されることが多い。利用されていないこの大量のコンピューティングおよびネットワーク・リソースは、個人化された対話型サービスをCPE装置に提供するために適用することができる。
【０００４】
広帯域ネットワークは通常、中央に配置された少数の強力なサーバ・コンピュータを多数のリモートCPE装置に接続する。このようなネットワークは、中央サーバからCPE装置へのビデオ・コンテント、オーディオ・コンテント、グラフィック・コンテント、テキスト・コンテント、およびデータ・コンテントの高帯域幅ブロードキャストをサポートするように最適化されるが、CPE装置から中央サーバまたはインタネットなどの外部ネットワークへの、他の方向への通信用の帯域幅はずっと小さくなることが多い。
【０００５】
CPE装置の計算能力が制限されることが多く、かつ広帯域ネットワークが非対称性であるため、CPE装置のカスタマイズ可能な対話型アプリケーションの導入が困難である環境が生じる。従来のシステムは引き続きCPEを単なる表示エンジンとして使用する傾向があり、対話型サービスをサポートするのに必要なコンピューティング・タスクを実行するのに他の多数の強力な中央サーバを必要とする。この中央サーバ・モデルは、特に、デジタル・ケーブル業界および衛星テレビジョン業界において特徴的な広帯域ネットワーク加入者の数が非常に多いことを考慮すると、CPEユーザの数の増大にうまく対処していない。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
したがって、主としてローカルCPE装置上で実行されるカスタマイズ可能な対話型アプリケーションを提供し、これらの装置およびそれらが接続された広帯域ネットワーク上のコンピューティング・リソースを効率的に使用し、外部データ供給源、中央サーバ、または他のCPE装置と通信するシステムが必要である。このようなシステムは、多数のユーザにうまく対処しなければならず、強力な中央サーバのサポートを必要としない。
【課題を解決するための手段】
【０００７】
発明の概要
本発明は、CPE装置において利用可能なコンピューティング・リソースおよび容量ならびにその装置が利用できる広帯域ネットワーク・リソースを効率的に使用するシステムを提供することによってこれらの要件を満たす。このシステムは、CPE装置上でローカルに実行され、広帯域ネットワークを介して外部データ供給源と通信し、CPE装置ユーザに表示される特定の情報を取り込む対話型ソフトウェア・アプリケーションから成る。テキストおよびグラフィクスの水平方向および垂直方向のスクローリングを含む、すべての検索タスクおよび表示タスクは、CPE装置上でローカルに実行される。
【０００８】
デジタル・ケーブル・テレビジョン環境に導入されるいくつかの実施形態では、最小限の「ヘッド・エンド機器」（HEE）装置をヘッド・エンド・サイトまたは中央オフィスに設置し、CPE装置自体では利用できないサービスを供給することができる。このようなサービスには、個人化された初期設定の持続的な記憶、およびよく要求される外部データのキャッシングおよびブロードキャストによる帯域幅最適化が含まれる。カスタマイズ可能な対話型アプリケーションを実施するのに必要なすべての重要な計算タスクを、各ユーザごとにユーザ自身のCPE装置上でローカルに実行することができる。本発明によって使用されるすべてのネットワーク通信は、標準インタネット・プロトコル（IP）またはTCP/IPやHTTPのような一般にIPと一緒に使用できるような階層プロトコルを利用することができる。
【発明を実施するための最良の形態】
【０００９】
本発明の一態様は、従来の広帯域ネットワーク上で標準「インタネット・プロトコル」（IP）または派生的なプロトコルを介して通信して、外部コンピュータ・ネットワークに接続されたデータ供給源から情報を取り込み、取り込まれた情報を処理し、テキストおよびグラフィクスの水平・垂直スクローリングを含む様々な表示機構を用いて、結果をローカルにCPE表示装置上で選択的に表示するソフトウェア・アプリケーションを「宅内機器」（CPE）装置上で実行するシステムである。
【００１０】
デジタル・ケーブル・テレビジョン環境に導入される現在好ましい一実施形態では、システムは、従来のデスクトップ・パーソナル・コンピュータの同等物である1つの廉価な「ヘッド・エンド機器」（HEE）装置を使用して、すべてのCPE装置について個人化された初期設定を持続的に記憶し、ネットワーク帯域幅の利用を最適化する。本明細書で「ヘッド・エンド機器」および「HEE」の語が使用されるとき、当業者には、そのような機器を物理的に広帯域ネットワークのヘッド・エンドに配置する必要はなく、その代わり、ネットワーク上の基本的にあらゆる場所に配置できることが理解されよう。さらに、すべてのソフトウェア構成要素を単一のHEE装置上で実行する必要はなく、むしろ、各構成要素をいくつかの異なるHEE装置間の同じ位置または異なる位置に分散し、すべてをIPベースのネットワークを介して相互接続することができる。デジタル衛星テレビジョン環境、ゲーム・コンソール・ネットワーク環境、またはホーム・ゲートウェイ環境に導入できるような他の実施形態では、このようなサポート・サービスおよびHEE装置は必要とされない。
【００１１】
次に、図面を参照する。図面では、同じまたは同様の要素を参照するのに同じ参照符号が用いられる。図1は、本発明によるシステムが動作できる環境を示している。複数のCPE装置10がそれぞれ、IPベースのネットワーク接続20を介して広帯域ネットワーク30に接続されている。広帯域ネットワーク30の他方の端部は、中央オフィスまたはヘッド・エンド・サイト40に配置された1つまたは複数のサーバ・コンピュータ35にネットワーク25を介して接続されている。本発明の現在好ましい実施形態では、ネットワーク25はIPベースである。しかし、当業者には、任意の標準的なプロトコルを使用することができ、したがって、本明細書に記載された本発明の例はIPベースであるが、本発明がそのように制限されないことが容易に理解されよう。ネットワーク25は、様々なネットワーク・データ供給源55を接続することができる外部TCP/IPベース・ネットワーク50に接続することもできる。広帯域ネットワーク30および他の環境構成要素の実際の実施形態にかかわらず、すべてのCPE装置10、中央オフィス／ヘッド・エンド・サーバ35、および外部データ供給源55はIPベース・プロトコルを介して通信することができる。
【００１２】
CPE装置10は、デジタル・ケーブル・テレビジョン・セット・トップ・ボックス、デジタル衛星テレビジョン・セット・トップ・ボックス、ゲーム・コンソール、ホーム・ゲートウェイ、またはユーザ入力を受け付け、グラフィカル情報もしくはテキスト情報を1人もしくは複数のユーザに表示し、標準的なIPベース・プロトコルを介してコンピュータ・ネットワーク20に接続することのできる他の任意のコンピュータ装置であってよい。図2に示されているように、CPE10は、内臓記憶装置または中央オフィス／ヘッド・エンド・サイト40に配置されたサーバ・コンピュータ35などの外部源から発せられたプログラミング命令を実行することのできるコンピューティング装置である。CPE装置は、CPE装置10上で実行されるアプリケーション15がCPEハードウェア10および広帯域ネットワーク30とのインタフェースをとれるようにするオペレーティング・システムまたは他の低レベル・ソフトウェア・サービス110を提供する。
【００１３】
CPE装置10は、入力装置120および表示装置130に接続されている。任意の入力装置120は、CPE装置の内部の装置であるか、外部の装置であるかにかかわらず、ユーザ入力信号を受信し、このような信号を任意の適切な有線機構または無線機構を介してCPE装置10に伝えるリモート制御装置、キーボード、または他の任意の装置であってよい。表示装置130は、CPE装置の内部の装置であるか、外部の装置であるかにかかわらず、CPE装置10から任意の適切な有線機構または無線機構を介してテキスト、グラフィクス、ビデオ、または他の任意の視覚情報もしくは聴覚情報を受信し、その情報を1人または複数のユーザに示すことのできるテレビジョン、コンピュータ・モニタ、投影装置、または他の任意の装置であってよい。
【００１４】
再び図1を参照すると、広帯域ネットワーク30は、ケーブル・テレビジョン・ネットワーク、衛星テレビジョン・ネットワーク、ローカル・エリア・ネットワーク（LAN）、ワイド・エリア・ネットワーク（WAN）、アナログ電話網、デジタル電話網、インタネット、またはIPベース・ネットワーク・トラフィックを転送できる他の任意のネットワーク、あるいはそれらの組合せを含む、任意の既知の有線ネットワークまたは無線ネットワークであってよい。広帯域ネットワーク30の一方の端部は、様々なCPE装置10に接続されている。広帯域ネットワーク30の他方の端部は、中央オフィスまたはヘッド・エンド・サイト40に配置され、IPベース・ネットワーク・トラフィックを転送できる内部ネットワーク25を介して1つまたは複数の中央サーバ35に接続されている。
【００１５】
従来のいくつかの種類の広帯域ネットワークがこの説明に当てはまる。たとえば、デジタル・ケーブル・テレビジョン・ネットワーク環境では、数千個のテレビジョン・セット・トップ・ボックスが、光ファイバ・ケーブルおよび導電ワイヤ・ケーブルの地下ネットワークおよび広範囲のネットワーク・ハードウェア・インフラストラクチャを介して、ヘッド・エンド・サイトに配置されたテレビジョン・ブロードキャスト・サーバに接続される。各ヘッド・エンドは、10万個程度のCPE装置をサポートできるが、市場全体に対処するには複数のヘッド・エンド・サイトが必要になることがある。通常、各ヘッド・エンドは、ホーム・オフィス・サイトに配置された単一のサーバからブロードキャスト・コンテントを受信する。
【００１６】
衛星テレビジョン・ネットワーク環境は、広帯域ネットワークのもう1つの例であり、単一の中央オフィス・サイトのテレビジョン・サーバが、衛星を介して中継される無線周波数送信を介して数千個または数百万個のテレビジョン・セット・トップ・ボックスにコンテントをブロードキャストする。セット・トップ・ボックスから中央オフィスへの、他の方向の通信は通常、アナログ電話網回線上の一時IP接続を介して行われる。
【００１７】
再び図1を参照すると、CPE装置10およびサーバ・コンピュータ35は、TCP/IPなどのIPベース・プロトコルを介して外部コンピュータ・ネットワーク50と通信することができる。このような外部コンピュータ・ネットワーク50には、インタネット、エクストラネット、仮想私設網（VPN）、または他のTCP/IPベース・ネットワークが含まれる。HTTP、SMTP、POP、IMAP、ODBC、およびFTPを含むがそれらに限らない、TCP/IPに基づく任意の標準インタネット・プロトコルを介して通信するウェブ・サイト、eメール・サービス、データベース、および他のあらゆるTCP/IPベース・ネットワーク・サービスを含む様々な情報源55に、外部コンピュータ・ネットワーク50を介してアクセスすることができる。外部情報源55から取り込まれた情報は、HTML、XML、RSS、RDF、PDF、MIME、プレーン・テキスト、GIF、JPEG、およびMPEGを含むがそれらに限らない様々なフォーマットで表すことができる。
【００１８】
各要素を図1の広帯域ネットワーク環境に組み込むことによって、本発明によるシステムが図3に示されている。このシステムは、CPEコンピューティング装置10上で直接実行されるソフトウェア・アプリケーション15と、中央オフィス／ヘッド・エンド・サイト40に配置されIPベース・ネットワーク25に接続された単一のHEE装置45とを含んでいる。好ましくは、個人化された対話型サービスを広帯域ネットワーク30を介して提供するのに必要なすべての計算は、ローカルCPE装置10上で実行されるソフトウェア・アプリケーション15によってローカルに実行される。任意のリモートHEE装置45は、個人化された初期設定の持続的な記憶のような、特定のCPE装置にはないサービスを供給し、システムによる広帯域ネットワーク30の帯域幅の利用を最適化する。各CPE装置10によってHEE装置に課される負荷は極めて少なく、単一の中央オフィス／ヘッド・エンド・サイト40に接続されたすべてのCPE装置の総負荷は、単一の従来のPCまたは他のHEE装置の容量の範囲内である。
【００１９】
本発明によるシステムは、中央オフィス／ヘッド・エンド・サイト40の1つまたは複数の大規模なサーバ35上ですべての計算を実行する代わりに、カスタマイズ可能な個人化された対話型サービスをサポートするのに必要な大量の計算が、同時に実行される数千個または数百万個のCPE装置間に分散されるため特に有利である。個々のCPE装置10のコンピューティング・リソースが限られているにもかかわらず、全体として多数のCPE装置10が集合的により高い計算能力を実現し、1つまたは複数の大規模なサーバが計算能力を実現するシステムよりも効率的に広帯域ネットワーク30の帯域幅を利用する。
【００２０】
HEE装置45の現在好ましい実施形態が図4に示されている。CPEソフトウェア・アプリケーション15から外部データ供給源55へのHTTPプロトコルを用いたすべてのTCP/IP通信は、頻繁に要求される情報のローカル・コピーをキャッシングし、アウトバウンドIPトラフィックを減らし、CPEアプリケーション15からの要求に対する全体的な応答時間を改善する従来のキャッシング・プロキシ・サーバ・ソフトウェア・アプリケーション180を通じて経路指定することができる。
【００２１】
初期設定記憶サーバ・ソフトウェア・アプリケーション190は、CPEユーザから与えられたカスタマイズされたアプリケーション初期設定を記憶するのに十分なローカル持続記憶装置を有さないCPE装置10にリモート持続記憶サービスを提供する。CPEソフトウェア・アプリケーション15は、TCP/IP上でHTTPプロトコルを使用して初期設定記憶サーバ・ソフトウェア190と通信し、CPEアプリケーション15が、ユーザが変更を施した後で、カスタマイズされた初期設定データ230をアップロードし、必要に応じて、カスタマイズされた初期設定データ230をダウンロードするのを可能にする。
【００２２】
外部コンピューティング装置60も、TCP/IPを介して初期設定記憶サーバ・ソフトウェア・アプリケーション190と通信することができる。これによって、適切に認証されたアプリケーションは、初期設定データ230に記憶されているカスタマイズされたアプリケーション初期設定を修正し、それによって、個々のCPEアプリケーション15の動作に影響を与えることができる。たとえば、デジタル・ケーブル・テレビジョン環境では、CPEユーザは、外部コンピューティング装置60の1つであるユーザのパーソナル・コンピュータ上で実行されるアプリケーションを介してユーザのCPEアプリケーション初期設定を個人化することを望むことがある。同様に、外部コンピューティング装置60から初期設定記憶サーバ・ソフトウェア・アプリケーション190およびTCP/IPを介してCPEアプリケーション15にアプリケーション・データを送信することもできる。このようなアプリケーション・データは、CPEアプリケーション15の機能を修正または拡張することができる。
【００２３】
従来のデータ・カルーセル・ソフトウェア・アプリケーション200は、広帯域ネットワーク30上で利用可能なIP帯域幅の定義済みの部分を利用して、カルーセル・データ220をすべてのCPE装置10に同時に繰り返しブロードキャストする。データ・カルーセル・サーバによってブロードキャストされた情報を取り込むCPEソフトウェア・アプリケーションは、同じ情報をキャッシング・プロキシ・サーバ180または元の外部データ供給源55から直接取り込むよりも効率的に、利用可能な広帯域ネットワーク帯域幅を使用する。従来の広帯域ネットワーク環境では、すべてのCPE装置10が同様に動作し、従来のデータ・カルーセル・サーバ・ソフトウェア・アプリケーション200に同じコンテントを要求する。しかし、本発明によるシステムでは、各CPEアプリケーション15は、異なる1組の外部データ供給源55に異なる1組のコンテント項目を要求することができる。
【００２４】
この多様性に対処するために、本発明の好ましい実施形態は、カルーセル・データ220のコンテントを管理するデータ・カルーセル・マネージャ・ソフトウェア・アプリケーション210を組み込んでいる。各CPEソフトウェア・アプリケーション15によって外部データ供給源55から取り込まれるコンテント項目は、その特定のCPEアプリケーション15について定められた初期設定によって完全に決定され、かつ特定のHEE装置45に接続されたすべてのCPEアプリケーション15についてのすべての個人化された初期設定がそのHEE装置45または別のHEE装置45上の初期設定データ230に記憶されるため、すべてのコンテント項目がキャッシング・プロキシ・サーバ・ソフトウェア180を介して要求される周波数を初期設定データ230から導くことができる。カルーセル・マネージャ210は、この分析を定期的に実行して、最も頻繁に要求されるコンテント項目を判定し、その後これらのコンテント項目の現在のバージョンをキャッシング・プロキシ・サーバ180を介して取り込み、これらのコンテント項目を、後でデータ・カルーセル・サーバ200によってブロードキャストできるようにカルーセル・データ220に記憶する。カルーセル・データ230内の現在のコンテント項目をリストしたカタログも作成される。カルーセル・マネージャ210は、カルーセル・データ230内のコンテント項目を定期的に、外部データ供給源55上の実際のデータに対して更新する。
【００２５】
本発明による好ましいシステム内で、CPEソフトウェア・アプリケーション15は、CPE装置10上で実行され、IPベース・ネットワーク・プロトコルを用いる広帯域ネットワーク30を介して外部データ供給源55から情報を取り込む。次いで、取り込まれた情報は、CPEソフトウェア・アプリケーション15によって分析され、CPE表示装置130によって表示できるように再フォーマットされる。さらに、CPEソフトウェア・アプリケーション15は、入力装置120から取り込まれた入力信号に応答し、ローカルCPEユーザがCPEソフトウェア・アプリケーション15についてのアプリケーション初期設定をカスタマイズするのを可能にするユーザ・インタフェースとして働かなければならない。
【００２６】
CPEソフトウェア・アプリケーションは、CPE装置10に永久的に記憶することができる。しかし、すでにCPE装置10の設置ベースがあるシステムでは、ブート・アップ時にあるいは必要に応じてCPEソフトウェア・アプリケーションをCPE装置10にロードした方が好都合である。
【００２７】
CPEソフトウェア・アプリケーション15の現在好ましい実施形態は、各階層のすべての構成要素の性質が類似しているが各構成要素が互いに独立している、図5に示されている階層ソフトウェア・アーキテクチャである。プロセス層707は、オペレーティング・システム、ユーザ入力、またはスケジューラ・プロセス717によって生成されたイベントに応答するオブジェクト・コード・モジュールを含み、1つまたは複数のアプリケーション・スクリプト710を呼び出してこのようなイベントに応答する。アクション層705は、多種のCPEソフトウェア・アプリケーションに有用であり、かつ本発明の現在好ましい実施形態では特定のCPEソフトウェア・アプリケーション15に特有のものではない様々な汎用オブジェクト・コード・ルーチン（「アクション」または「サービス」とも呼ばれる）を実現する。プロセス層707とアクション層705は集合的に、汎用CPEソフトウェア・アプリケーション・プラットフォームを構成し、一方、アプリケーション層707は、特定のCPEソフトウェア・アプリケーションを定義するスクリプトおよびデータを含んでいる。
【００２８】
プロセス層707における各オブジェクト・コード・モジュールは、固有のプロセスを定義することができ、CPEソフトウェア・アプリケーション15の現在好ましい実施形態では、異なる実行スレッドを実現する。メインO/Sイベント・ハンドラ717は、オペレーティング・システム110およびCPE入力装置120からイベントを受信し、アプリケーション層700から適切なスクリプトを呼び出してこのようなイベントに応答する。スケジューラ727は定期的に、イベント・スケジューラ740を調べ、1つまたは複数のアプリケーション・スクリプト710を呼び出して、スケジューリングされたイベントに対処する。汎用ネットワーク・サーバ737は、着信TCP/IPリスニング・ソケットがもしあればそのすべてを監視し、適切なアプリケーション・スクリプト710を呼び出して、SOAPサービス定義データ750によって指定されているサーバ接続に対処する。グラフィクス・サポート・モジュール747は、長方形ホットスポット、テキストおよびグラフィクスの水平スクロール、テキストおよびグラフィクスの垂直スクロール、およびグラフィカル・カーソルを含むがそれに限らないすべての動画要素の表示を連続的に更新する。スクリプト・エンジン757は、他のプロセス・モジュールまたは他のスクリプトによって呼び出されたアプリケーション・スクリプト710を解釈する。
【００２９】
アクション層705に定義されているあらゆるアクションは、ライブラリ関数と同様の、共通のタスクを実現する独立オブジェクト・コード・モジュールである。多数のアクションがアクション層705に定義されているが、説明の都合上、それらのアクションは一般性を失わずに機能ごとに範疇分けすることができる。データベース・アクション715は、アプリケーション・スクリプトを内部XMLデータベースから読み取りかつこのデータベースに書き込むのを可能にする。グラフィクス・アクション725は、ウィンドウ、ホットスポット、チェックボックス、編集ボックス、仮想キーボード、GIF画像およびJPEG画像、ビデオ領域、キャンバス、垂直にスクロールされるテキストおよびグラフィクス、水平にスクロールされるテキストおよびグラフィクス、静的テキスト、線、多角形、形状および領域を含むがそれらに限らないグラフィカル・オブジェクトの作成、管理、および表示をサポートする。SOAPアクション735は、SOAPプロトコルのクライアント側とサーバ側の両方を実現し、リモート手続き呼出しおよびSOAPサービス定義750によって定義されている「ウェブ・サービス」を要求しかつ提供する。ネットワーク・プロトコル・アクション745は、HTTP、FTP、SMTP、POP、およびIMAPを含むがそれらに限らないすべての標準インタネット・プロトコルのクライアント・バージョンを実現する。
【００３０】
検索エージェント・アクション755は、検索エージェント定義720に従って検索エージェントを実現する。検索エージェント定義720は、外部データ供給源55から情報を取り込み、分析し、処理し、後で表示できるように内部データベースに記憶する。このような演算はすべての検索エージェントについて同様であるので、検索エージェント定義720の定義を簡略化して記憶空間を節約し、検索エージェント・アクション755による高速の実行を容易にすることができる。
【００３１】
たとえば、本発明の好ましい一実施形態では、リモートXMLファイルからストック・データを取り込むように設計された検索エージェント定義は以下のフォーマットを有してよい。
http://stock.server.com/path/quote.html?symbol=@symbol
/displaydata/stocks/@index
OUTsymbol=@symbol
GET<QUOTE></QUOTE>000&price=
GET<CHANGE></CHANGE>000&diff=
【００３２】
この定義の各行は、検索エージェント・アクション755によって実行すべき演算を定義している。この定義全体にわたって、「@」文字が先行するすべての項目は、アクション呼出し側によって供給されるのと同じ名前のパラメータを参照し、演算が実行される前に対応するパラメータ値がこのパラメータ参照に置き換わる。各行で、演算の各パラメータはブランク文字で区切られている。第1行は、リモート・データ・ファイルが存在するURLを示し、エージェント・アクションに、プロキシ・サーバ180を介してファイルを取り込むよう指示する。第2行は、後でこのエージェントによって生成される出力が連結される、内部XMLデータベース内のクリアすべき位置を識別している。第3行は、パラメータにおけるテキストの簡単な出力を指定している。第4行および第5行はそれぞれ、検索されたXMLファイルからテキストのスニペットを取り込み、次いで出力する演算を記述しており、第1のパラメータは、スニペットの開始位置を識別する一致ストリングであり、第2のパラメータは、スニペットの開始位置を識別する一致ストリングであり、3つの数値パラメータは、一致ストリングによって定義される文字位置に対するオフセットを定義しており、最後のパラメータは、スニペットを出力する直前に出力すべき簡単なテキスト・ストリングである。これらおよび同様のコマンドのシーケンスは、たいていの検索エージェント・タスクに十分なシーケンスである。実際の検索エージェントは、1つの検索エージェント定義720に関する検索エージェント・アクション755を呼び出すだけでなく追加的な分析および処理を実行することのできるスクリプトである。
【００３３】
同様に、表示エージェント・アクション765は、表示エージェント定義730に従って表示エージェントを実現する。表示エージェント定義730は、内部データベースから情報を取り込み、その情報をCPE表示装置130上に表示するのに必要な演算のシーケンスを定義する。このような演算はすべての表示エージェントについて同様であるので、表示エージェント定義730の定義を簡略化して記憶空間を節約し、表示エージェント・アクション765による高速の実行を容易にすることができる。
【００３４】
本発明の好ましい一実施形態では、表示エージェント・アクションによってサポートされる1組の演算がCPE表示装置130上で出力を生成するすべてのグラフィクス・アクション725を表すことを除いて、表示エージェント定義730および表示エージェント・アクション765は、表示上記に定義した検索エージェントおよび検索アクションと形態および機能が類似している。しかし、検索エージェント・アクション755とは異なり、表示エージェント・アクション765が表示エージェント定義730に指定された演算を直接実行することはない。その代わり、定義における各演算行は、解析され対応する低レベル・グラフィクス・イベントに変換され、後でグラフィクス・サポート・プロセス747によって対処できるようにグラフィクス・イベント・キューに入れられる。
【００３５】
アプリケーション・スクリプト710、検索エージェント定義720、表示エージェント定義730、イベント・スケジューラ740、およびSOAPサービス定義を含むがそれらに限らない、アプリケーション層700に定義されているすべてのアプリケーション構成要素は、オブジェクト・コードではなくデータから成る。すべてのアプリケーション構成要素は、アクション層705またはプロセス層707における他のコード・モジュールによって参照または解釈される。
【００３６】
CPEソフトウェア・アプリケーション15の現在好ましい実施形態のこの階層アーキテクチャは多数の利点を有する。特定のアプリケーションのすべての固有の機能をアプリケーション層700内に配置することによって、アクション層705およびプロセス層707におけるオブジェクト・コードを開発し、試験し、最適化し、すべてのCPEソフトウェア・アプリケーションで使用することができ、新しい適用が容易になる。さらに、アプリケーション層を完全にデータで定義することによって、開発されたアプリケーションの修正および拡張を、オブジェクト・コードを再インストールすることなく、広帯域ネットワークを介してダウンロードし動的に適用することができる。プロセス層707はアクティブ・コードのみを定義し、CPEソフトウェア・アプリケーションによって実行されるすべての演算は、プロセス層によって開始される。アクティブ・プロセスの範囲を明確に定義し制限することによって、モジュールの対話が最小限に抑えられ、それによってロバストなアプリケーションの開発および試験が容易になる。アクション層705は、独立のコード・モジュールまたは「アクション」のライブラリを定義する。アクションは、アクティブ・プロセスではなく、アプリケーション層700におけるスクリプトまたはプロセス層707におけるオブジェクト・コードによってのみ呼び出される。このモジュール設計は、アクションの増分的な開発および明確な単体テストを容易にする。
【００３７】
CPE装置10用の論理メモリ・マップが図6に示されているオペレーティング・システム・オブジェクト・コード810は通常、メモリの連続するブロック内に記憶される。残りのメモリの大部分は、その後のすべてのメモリが割り当てられるO/S自由記憶領域820として管理される。CPEソフトウェア・アプリケーション830がまだメモリに存在していない場合、オペレーティング・システム・オブジェクト・コード800は、ある時点で、後で広帯域ネットワーク30を介してダウンロードされるCPEアプリケーション・オブジェクト・コード850を記憶するのに十分なサイズのメモリのブロックを割り当てる。制御がCPEアプリケーション・オブジェクト・コード850に移された後、CPEアプリケーション・オブジェクト・コード850は、その初期XMLデータベース860用の記憶域の割当てをまだ行っていない場合、オペレーティング・システム自由記憶領域820またはアプリケーション固有の自由記憶領域840から割り当て、次いで、初期XMLデータベース860を、広帯域ネットワーク30を介して、割り当てられたブロックにダウンロードする。そのときになった初めてCPEソフトウェア・アプリケーションの機能が完全になる。
【００３８】
しかし、本発明の好ましい実施形態では、初期データベースおよび他の初期アプリケーション・データ860は、CPEソフトウェア・アプリケーション・オブジェクト・コードの連続するブロックにコンパイルされる。アプリケーション・オブジェクト・コード850が実行され、このデータにおけるすべての相対ポインタ値が絶対ポインタ値に変換された後、この初期データは、追加的なメモリ割当ておよびデータ・ダウンロードなしにただちに使用することができる。新しいデータまたは展開されたデータ用の記憶域のみをアプリケーション自由記憶域840から割り当てなければならない。これにはいくつかの利点がある。アプリケーションの機能が完全になるのに必要な時間は他の場合よりも著しく短い。さらに、CPEアプリケーション・データは、揮発性であるが、サイズが拡張することはめったにないため、メモリ割当てはまれであり、メモリのフラグメント化が低減する。
【００３９】
本発明によるシステムでは、CPEアプリケーション15は、外部データ供給源55からデータを取り込み、そのデータを分析し、将来CPE表示装置30上で表示できるように処理する。しかし、いくつかの実施形態では、CPEユーザに関連する情報が、取り込まれた外部データ自体ではなく、ある条件または基準のブール結果がそのデータに適用される。条件または基準を満たすデータが取り込まれると、定義済みの視覚的または聴覚的アラート信号が表示装置上に与えられることによって、ユーザにこのことが知らされる。
【００４０】
この汎用アラート機能は、関連性の高い大量の情報を非常に簡単な表示機構を介してCPEユーザに表示するのを可能にする。たとえば、デジタル・ケーブル・テレビジョン環境に導入される本発明の好ましい一実施形態では、CPEアプリケーション15は、最近受信されたeメール・メッセージをCPEユーザのeメール・アカウント・サーバから取り込むことができる。このeメール・コンテントの表示は、リモート制御入力装置の制限のためにeメールメッセージに対する応答が困難になるため、テレビジョン・ディスプレイ上で実際的なものでも、特に有用なものでもない。その代わり、CPEユーザによって指定された特定の送信側アドレスからeメール・メッセージが取り込まれたときはいつでも、アイコンの形をした視覚的アラートがテレビジョン・ディスプレイ上のビデオ・コンテント上に描画される。
【００４１】
本発明によるシステムは、いくつかの機構を使用して情報をCPE表示装置130を介してCPEユーザに表示する。視覚的表示機構には、任意の形状および色の領域、任意の形状および色のライン、様々な字形および色の静的テキスト、静的グラフィクス、移動するテキスト、移動するグラフィクス、周期的に変化するテキストおよびグラフィクス、水平にスクロールされるテキストおよびグラフィクス、垂直にスクロールされるテキストおよびグラフィクス、アラート・メッセージ、二次ウィンドウ、編集可能なテキスト・フィールド、および選択可能な領域が含まれるが、これらに限らない。さらに、広帯域ネットワークがビデオ・コンテントをブロードキャストする環境では、スクリーン全体を占めるかあるいは表示装置130スクリーン上の任意の位置のより小さな領域に表示されるようにサイズを変更されたこのコンテントを、表示装置130上に表示することができる。
【００４２】
あらゆる表示機構を、表示装置130スクリーン上で組み合わせて同時に使用することができ、様々な透過度レベルで互いに重ね合わせることができる。水平スクロールおよび垂直スクロールならびにアラートのアニメーションおよび移動を含む、使用されるすべての表示機構の生成、描画、および更新は、個々の各CPE装置上でローカルに実行されるオブジェクト・コードおよびスクリプトによって調整され制御される。
【００４３】
本発明の好ましい一実施形態では、コンテントは、CPE表示装置130上のマルチモード表示を介してCPEユーザに表示される。図7から11は、様々な表示モード・フォーマットを示し、多数の利用可能な表示機構の使用法を示している。各表示モードには、可能なビデオ・コンテント領域、グラフィック背景、および1つまたは複数の表示エージェントが関連付けされている。各表示エージェントは、特定の検索エージェントに関連するフォーマットされたコンテントまたはアラートを表示モード・フォーマットの特定の領域に描画する。
【００４４】
図7は、ビデオ・コンテントといくつかの表示エージェントが組み合わされる可能な表示モード・フォーマット300を示している。単色背景がフォーマット300全体を満たし、様々な表示領域を区切るためにライン305が描画されている。他のすべてのコンテントはこの背景上に透過度なしで表示される。ビデオ・コンテントが利用できる場合、ビデオ・コンテントはサイズを変更されて1つの領域310内に表示される。他の領域320は、アラート・アイコン380およびロゴ・グラフィクス390の表示用に予約されている。単一の小さな領域に完全には収まらないコンテントは、垂直にスクロールされる領域340および350に表示される。同様に、他の大量のテキストおよび小さなグラフィック・コンテントを、水平にスクロールされる領域360および370に表示することができる。
【００４５】
デジタル・ケーブル・テレビジョン環境に導入される本発明の現在好ましい実施形態では、広帯域ネットワーク・オペレータから与えられるテキストまたはグラフィック情報用に領域330が予約される。現在表示されているヘッドラインを上向きに1行シフトし、1番上のヘッドラインを消去し、1番下に新しいヘッドラインを表示することによって任意の数のニュース・ヘッドラインを表示できる垂直スクロール340に、ユーザによってカスタマイズ可能ないくつかの領域用のローカル・ニュース・ヘッドラインが表示される。同様に、いくつかの地域に関するカスタマイズされた気象情報が気象垂直スクロール350に表示される。テキストと小さなグラフィクスの両方を含むあらゆるスポーツ情報を、絶えずスクリーンを右から左に横切って移動する1本の長い水平方向の線に表示し、スクリーンの右側に新しい文字が現れるとスクリーンの左側の古い文字が消える水平スクロール360に、カスタマイズされたスポーツ・スコアおよびスポーツ・ニュースが表示される。同様に、テキストおよび小さなグラフィクスを含むカスタマイズされた株式ティッカー情報が、水平スクロール370に表示される。ブランディング・アラート領域320は、広帯域ネットワーク・オペレータがグラフィック・ロゴ390を表示し、eメール・アラート・アイコン380を表示するために設けられた空間である。
【００４６】
図8は、ニュース、気象、スポーツ、株価のような1種類の情報を水平スクロール420を介してスクリーン・ビデオ全体410に表示できる他の可能な表示モード・フォーマット400を示している。アラート・アイコン380およびロゴ・グラフィクス390もこの表示モードに含められる。任意の非ビデオ表示項目を任意の透過度レベルで表示し、その下にあるビデオ・コンテントを部分的に表示することができる。デジタル・ケーブル・テレビジョン環境に導入される本発明の現在好ましい実施形態では、各モードが、水平スクロール領域420に表示されるニュース気象コンテント、スポーツ・コンテント、または株式コンテントのうちの1つ専用であるいくつかのモードが、このフォーマットを使用する。このような各モードでは、CPEユーザから与えられた特定の送信側アドレスから最近受信されたeメールが、アラート・アイコン380を用いてCPEユーザに知らされる。
【００４７】
図9は、アラート・グラフィック380およびロゴ・グラフィック390のみが、任意の透過度レベルで描画されたスクリーン・ビデオ全体510を覆う他の可能な表示モード・フォーマット500を示している。
【００４８】
図10は、CPEソフトウェア・アプリケーションの機能をCPEユーザによって個人化できるようにするユーザ・インタフェースを実現する可能な表示モード・フォーマット550を示している。任意の数の初期設定選択肢560が、選択可能な領域と組み合わされた静的テキストとしてCPEユーザに表示される。適切な入力信号をCPE入力装置120を介して生成すると、現在強調表示されている初期設定選択肢560を選択することができる。選択のグラフィック・フィードバックは、選択された選択肢に隣接して表示される適切なグラフィックによって与えられる。CPE入力装置120のナビゲーション・キーを介して、それぞれの異なる選択肢を選択し、その後初期設定データに記憶することができる。任意の数のアクション選択肢580も、選択可能な領域と組み合わされた静的テキストとして表示される。このようなアクションを選択すると、様々な表示モードによる表示が可能になり、すべての選択された選択肢が持続的なデータ記憶域に記録されることなど、1つまたは複数の副作用動作が実行される。デジタル・ケーブル・テレビジョン環境に導入される本発明の現在好ましい一実施形態では、多くの表示モードは、これと同様のフォーマットを使用して、CPEユーザがCPEアプリケーション15初期設定を個人化するのを可能にする。
【００４９】
図11は、仮想キーボードを実現する可能な表示モード・フォーマット600を示している。デジタル・ケーブル・テレビジョン・リモート・コントロールのような制限された入力装置120を有するCPE装置のユーザは、このフォーマット上の様々な選択可能な領域を選択し、カスタム初期設定を入力することができるが、可能な選択肢のリストが非常に大きく、表示モード550が実際的なものでなくなる。デジタル・ケーブル・テレビジョン環境に導入される本発明の現在好ましい一実施形態では、いくつかの個人設定モードは、この表示フォーマットを用いて、郵便番号や株式シンボルなどの設定情報を収集する。
【００５０】
図12から18の図は、好ましくは本発明の好ましい実現形態で実現されるいくつかのプロセスを表している。
【００５１】
CPEアプリケーション15の立上げプロセスが図12に示されているCPEアプリケーション15は、実行を開始した後、その内部XMLデータベース内のすべての相対的なポインタ参照をただちに、対応する絶対ポインタ1000で置き換えなければならない。このプロセスはほぼ瞬間的に行われる。スクリプト・エンジン・プロセス1010、グラフィクス・サポート・プロセス1020、および汎用ネットワーク・サーバ1030用の新しいプロセスまたは実行スレッドが生成される。メイン・アプリケーション・プロセスは、他のアクティブ・プロセスを生成した後、立上げスクリプトをアプリケーション・スクリプト710内に配置して呼び出す（1040）。立上げスクリプトは、現在のモード・グローバル変数を初期モードに設定し（1050）、そのモードに対応する表示スクリプトを呼び出す（1060）。表示モード・スクリプトは、CPE表示装置130上にフォーマット背景を描画し（1070）、現在のモードの必要に応じてビデオ・ウィンドウを作成し（1080）、現在のモード・フォーマットにおけるあらゆる水平スクロール領域用の特殊な「ティッカー」ウィンドウを作成し（1090）、現在のモードに適用されるすべての表示エージェント用のスケジュールを、ただちに終了するようにリセットする（1090）。次いで、モード表示スクリプトは制御を立上げスクリプトに返し、立上げスクリプトは他のすべてのグローバル・スクリプト・データ1015を初期設定する。次いで、立上げスクリプトは制御をメイン・アプリケーション・スレッドに返し、メイン・アプリケーション・スレッドは、特定のCPE装置10用の初期設定をHTTP要求を介して初期設定記憶サーバ190にロードする（1025）。この時点で、この特別な立上げ活動が完了し、メイン・アプリケーション・プロセスがメイン・イベント・ループの実行を開始する。
【００５２】
メインO/Sイベント・ハンドラ・プロセス717によって実行されるCPEアプリケーションのメイン・イベント・ループが図13に示されている。ループの1番上で、O/Sイベント・キューが調べられ、O/Sイベントが利用可能であるか否かが判定される（1100）。O/Sイベントが利用可能でない場合、他のプロセスに1秒の数分の1が与えられ（1115）、再びキューが調べられる（1100）。キューでO/Sイベントが見つかった場合、まずそのO/Sイベントが調べられ、それがQUITイベントであるか否かが判定される（1105）。QUITイベントである場合、CPEアプリケーションは、すべてのプロセスを高速に停止し、すべてのメモリを空にして終了しなければならない（1110）。次いで、他のすべての種類のイベントが、アプリケーション・スクリプト710内に配置され、空であってよいスクリプトにマップされる（1120）。イベントに対処する対応するスクリプトが、スクリプト・エンジン757を介して呼び出される（1125）。次いで、イベントがO/Sイベント・キューから削除され（1130）、制御がメイン・イベント・ループ1100の1番上に戻る。
【００５３】
グラフィック・サポート・プロセス747が図14に示されている。グラフィクス・プロセス・イベント・ループの1番上で、グラフィクス・キューが調べられ、グラフィクス・イベントが利用可能であるか否かが判定される（1150）。グラフィクス・イベントが利用可能でない場合、他のプロセスに1秒の数分の1が与えられ（1115）、再びキューが調べられる（1150）。キューでグラフィクス・イベントが見つかった場合、そのイベント・タイプが多数のグラフィクス・アクション（725）のうちの1つにマップされ（1160）、イベントに対処する対応するアクションが呼び出される（1170）。次いで、制御がループ1150の1番上に戻る。
【００５４】
スケジューラ・プロセス727が図15に示されている。ループ1200の1番上で、イベント・スケジューラ740が調べられ、終了したタイマーを有するあらゆるスケジューリングされたイベントが見つけられ、スケジューラ・キュー上に配置される。スケジューラ・キューが空であった場合（1205）、他のプロセスに数秒の処理時間が与えられ（1215）、次いで、制御がループ1200の1番上に戻る。しかし、スケジューラ・キューにスケジューリングされたイベントがある場合（1205）、対応するイベント・スクリプトが、アプリケーション・スクリプト710に配置され（1210）、スクリプト・エンジン757を介して呼び出される（1220）。イベント・スクリプトが完了すると、イベントに関連しかつイベント・スケジューラ740に配置された終了タイマが適切な間隔だけ増分され（1225）、イベントがスケジューラ・キューから削除される。次いで、制御がループ1200の1番上に戻る。
【００５５】
汎用ネットワーク・サーバ・プロセス737が図16に示されている。汎用ネットワーク・サーバは、TCP/IPベース・プロトコル・サーバを実現するのに必要なすべての初期ソケット・リスンに対処するように設計されている。着信ソケット接続が確立されると、リスン中のソケットおよびポートに関連するネットワーク・プロトコル・アクション745が呼び出され、プロトコル・トランザクションのサーバ側に実際に対処される。最初、汎用ネットワーク・サーバ・イベント・ループ1305は、適切なポート上でリスン中のソケットを開き、あらゆる必要なサーバをサポートする。次いで、プロセス・ループの1番上で、リスン中のソケットに関連する1つのキューで接続イベントが探される（1310）。接続イベントが見つからない場合、他のプロセスに数分の1秒の処理時間が与えられ（1325）、制御がループの1番上に戻る（1310）。1つのサーバ・キューでソケット接続イベントが見つかった場合、まずそのイベントが調べられ、それがSOAPプロトコル要求を表しているか否かが判定される（1315）。SOAPプロトコル要求を表している場合、空であってよい対応するSOAPサービス定義がSOAPサービス定義750に配置される（1320）。次いで、SOAPサービス定義および実際のソケット接続が適切なSOAPアクション735に渡され、SOAP要求が対処される。次いで、対処された接続イベントがサーバ・キューから削除され（1350）、制御がループの1番上に戻る（1310）。
【００５６】
キュー上で接続イベントが見つかった（1310）が、その接続イベントがSOAPプロトコル要求ではない場合（1315）、キューが適切なネットワーク・プロトコル・アクション745にマップされ（1330）、接続がそのアクションに渡され、さらに対処が施される（1340）。次いで、イベントがイベント・キューから削除され（1350）、制御がループの1番上に戻る（1310）。
【００５７】
図17は、検索エージェント・アクション755が、プロキシ・サーバ180およびデータ・カルーセル・サーバ200を介して、外部供給源55に対するコンテントを求める要求を処理するプロセスを示している。最初、要求されたURLが調べられ、要求プロトコルがhttpであるかどうかが判定される（1405）。要求プロトコルがhttpではない場合、要求プロトコルに対応するネットワーク・プロトコル・アクション745が、呼び出され（1415）、要求されたデータを外部供給源55から直接取り込み（1425）、そのデータを検索エージェント・アクション755に返し（1440）、次いで、データが、処理できるように最初の呼出し側に返される（1455）。しかし、要求プロトコルがhttpである場合（1405）、HTTPプロトコル・アクション745が呼び出され（1410）、プロキシ要求が、フォーマットされ、HEE装置45上のプロキシ・サーバ180に送信される（1420）。プロキシ・サーバ180は、要求を調べ、カルーセル・マネージャ210によって構成されたカルーセル・データ・ディレクトリ・ファイル215で一致するファイルを探索する。一致するファイルが見つかった場合（1450）、ディレクトリ・ファイル215で見つかった対応するカルーセル・アドレスがHTTP応答に埋め込まれ（1470）、その応答がプロキシ・サーバ180に返される（1475）。一致するファイルが見つからない場合、プロキシ・サーバは要求を通常どおりに処理し、ファイルを取り込む（1465）。いずれの場合も、結果として得られた応答がHTTPクライアントに返される（1475）。HTTPクライアント・プロトコル・アクション745はこの応答を調べ（1445）、それがプロキシ・サーバから得た実際のデータを含んでいるか、それともカルーセル・アドレスを含んでいるかを判定する。後者である場合、データ・カルーセル・クライアント767が呼び出され（1460）、データが取り込まれる。いずれの場合も、データは検索エージェント・アクション755に返され（1440）、次いで最初の呼出し側に返される（1455）。
【００５８】
データ・カルーセル・マネージャ・ソフトウェア・アプリケーション210がデータを有するカルーセルを周期的にロードするプロセスが図18に示されている。最初、カルーセル・ディレクトリ・ファイル215が消去され（1500）、HTTPクライアント・アクション745をデータ用のカルーセルに送信するプロキシ・サーバ180応答が一時的に防止される。次いで、カルーセル・サーバ・ソフトウェア・アプリケーション210は、ブロードキャストを停止するよう指示される（1505）。データ・カルーセル・マネージャ210は、初期設定データ230で見つかったすべての初期設定を調べ、すべての重複設定エントリを数える（1510）。次いで、より大きなカウントを有するN個の設定値のリストが構成される。ここでNは帯域幅分析によって決定されるある数である。本発明の好ましい一実施形態では、Nに値50が使用される。次いで、頻繁に参照される設定が調べられる（1525）。リストに項目がない場合、データ・カルーセル・サーバ・アプリケーション210は、再びブロードキャストを開始するよう指示され（1530）、タイマが、通常何時間も後でプロセスを繰り返すべきときに終了するように設定する（1540）。タイマが終了した場合、制御がループ1500の1番上に戻る。タイマが終了しない場合、他の処理に数分または数秒の処理時間が与えられ、次いで制御がタイマ終了試験に戻る（1550）。
【００５９】
しかし、よく参照される設定のリストに項目がない場合、リスト内の第1の項目が、選択され（1525）、URLにマップされ、プロキシ・サーバ180に渡され、取り込まれる（1545）。結果として得られたデータ・ファイルは、カルーセル・データに記憶され（1545）、ファイルの対応するエントリが、必要なカルーセル・アドレス情報と一緒に、カルーセル・データ・ディレクトリ・ファイル215に書き込まれる（1565）。次いで、現在の設定がリストから削除され（1570）、制御がリスト1525内の次の項目の処理に戻る。
【００６０】
本発明の原則の適用を例示するために本発明の特定の実施形態を詳しく図示し説明したが、本発明をそのような原則から逸脱せずに他の方法で実施できることが理解されよう。
【図面の簡単な説明】
【００６１】
【図１】本発明を適用できるハードウェア・ネットワーク環境を示す図である。
【図２】宅内装置に一般に用いられるソフトウェア構成要素およびハードウェア構成要素を示す図である。
【図３】本発明の現在好ましいアーキテクチャの2つの一次構成要素間の関係と、周囲のハードウェア・ソフトウェア環境を示す図である。
【図４】本発明による現在好ましいHEEアーキテクチャの図である。
【図５】本発明によるCPEソフトウェア・アプリケーションの現在好ましいメモリ・マップの図である。
【図６】本発明によるCPEソフトウェア・アプリケーションの現在好ましいアーキテクチャを示す図である。
【図７】本発明による情報、ビデオ、およびアラートの組合せ用の現在好ましい表示フォーマットを示す図である。
【図８】本発明による単一のトピック情報およびアラート用の現在好ましい表示フォーマットを示す図である。
【図９】本発明によるアラートおよびビデオ用の現在好ましい表示フォーマットを示す図である。
【図１０】本発明による選択肢のリストからCPEアプリケーション設定の個人化を実施するユーザ・インタフェース用の現在好ましい表示フォーマットを示す図である。
【図１１】本発明による仮想キーボード用の現在好ましい表示フォーマットを示す図である。
【図１２】本発明の現在好ましい実施形態によるシステムの動作の各態様を示すフローチャートである。
【図１３】本発明の現在好ましい実施形態によるシステムの動作の他の各態様を示すフローチャートである。
【図１４】本発明の現在好ましい実施形態によるシステムの動作の他の各態様を示すフローチャートである。
【図１５】本発明の現在好ましい実施形態によるシステムの動作の他の各態様を示すフローチャートである。
【図１６】本発明の現在好ましい実施形態によるシステムの動作の他の各態様を示すフローチャートである。
【図１７】本発明の現在好ましい実施形態によるシステムの動作の他の各態様を示すフローチャートである。
【図１８】本発明の現在好ましい実施形態によるシステムの動作の他の各態様を示すフローチャートである。
【符号の説明】
【００６２】
10…CPE装置、15…アプリケーション、20…ネットワーク接続、25…ネットワーク、30…広帯域ネットワーク、35…サーバ・コンピュータ、40…中央オフィス／ヘッド・エンド・サイト、45…HEE装置、50…外部コンピュータ・ネットワーク、55…外部データ供給源、60…外部コンピューティング装置、110…オペレーティング・システム、120…CPE入力装置、130…CPE表示装置
【図１】
2005531053.tif 000003
【図２】
2005531053.tif 000004
【図３】
2005531053.tif 000005
【図４】
2005531053.tif 000006
【図５】
2005531053.tif 000007
【図６】
2005531053.tif 000008
【図７】
2005531053.tif 000009
【図８】
2005531053.tif 000010
【図９】
2005531053.tif 000011
【図１０】
2005531053.tif 000012
【図１１】
2005531053.tif 000013
【図１２】
2005531053.tif 000014
【図１３】
2005531053.tif 000015
【図１４】
2005531053.tif 000016
【図１５】
2005531053.tif 000017
【図１６】
2005531053.tif 000018
【図１７】
2005531053.tif 000019
【図１８】
2005531053.tif 000020
【国際調査報告】
2005531053.tif 000021