(57)【要約】  多目的通信サービスをサポートするネットワーク内のデータコンテナのコンテンツフィルタリングのシステムおよび方法が開示される。コンテンツフィルタリングシステムは、コンテンツ適合システムに統合される。複数のサーバユニットは、異なるプロトコルによりソースで形成されたデータコンテナを扱う。コンテンツフィルタリング処理は、コンテンツ記述子のセットを生成するためにコンテナのそれぞれのコンポーネントを特徴付けることと、それぞれの記述子のプリセットされた基準により、それぞれのコンポーネントに対する２進条件セットを生成することとに依存する。ルールのセットは、各ルールがそれぞれのブール演算式を個々のコンテンツ編集動作を処方する条件の部分セットに適用するように工夫される。ルールのブール演算式を指定および評価する方法が開示される。ルール間依存を定義するために形式グラフが使用される。【選択図】図２
2011505611.tif 000002
【特許請求の範囲】
【請求項１】
マルチメディアデータコンテナのコンテンツをフィルタリングするシステムであって、
ネットワークからの前記マルチメディアデータコンテナを受信するためのネットワークインターフェースと、
複数のサーバユニットと、
を備え、
各サーバユニットは、
プロセッサセットと、
コンピュータ可読媒体に格納されたコンピュータ可読命令を有し、各フィルタがコンテンツ記述子、記述子の基準、および演算子の定義を指定するフィルタのセットの定義をユーザから取得するためのフィルタ定義モジュール、
コンピュータ可読媒体に格納されたコンピュータ可読命令を有し、各ルールが前記フィルタの部分セットのブール演算式およびフィルタリング動作を指定する、コンテンツフィルタリングルールのセットを前記ユーザから取得するための、ルール構築モジュール、
マルチメディアデータコンテナの各コンポーネントのコンテンツを特徴づけ、前記コンテンツ記述子を決定し、前記演算子を適用し、かつ前記各フィルタの状態を決定するモジュール、
前記各ルールの２進出力を決定するためのモジュール、および
前記２進出力のプリセット値に従う前記コンテンツに関連するフィルタリング動作を実行するモジュール、
がインストールされたメモリデバイスのセットと、
を有するシステム。
【請求項２】
代数文法による前記ブール演算式を、前記ユーザが提供することを可能にするためのモジュールをさらに備える請求項１に記載のシステム。
【請求項３】
前記ユーザが、前記ブール演算式をツリー構造の形式で提供することを可能にするためのモジュールをさらに備える請求項１から２のいずれか１項に記載のシステム。
【請求項４】
ツリーの各ノードが、演算子および対応するオペランドセットを表す、前記ツリーの図面を編集及び剪定することによって、前記ユーザが前記ブール演算式を入力することを可能にするためのモジュールをさらに備える請求項１から３のいずれか１項に記載のシステム。
【請求項５】
ルールによって実行される特定のフィルタリング動作が少なくとも１つの後続ルールの実行を除外する順序に、前記ルールを配置するためのモジュールをさらに備える請求項１から４のいずれか１項に記載のシステム。
【請求項６】
前記コンテンツフィルタリングルールのセットを形式グラフ（ｆｏｒｍａｌ  ｇｒａｐｈ）の形式で表示するためのモジュールをさらに備える請求項１から５のいずれか１項に記載のシステム。
【請求項７】
多くともプリセットされた数のフィルタを有するフィルタの部分セットをそれぞれ指定する特定のルールを選択し、前記特定のルールのそれぞれに対して、前記フィルタの部分セットの全ての値に対して前記フィルタの部分セットの前記ブール演算式を評価して、μ＞１を前記フィルタの部分セット内のフィルタの数として、２μビットからなる配列を生成し、かつビットから成る前記配列をメモリデバイスに格納するためのモジュールをさらに備える、請求項１から６のいずれか１項に記載のシステム。
【請求項８】
コンテンツを特徴付ける２進条件のセットを指定する段階と、
１つの演算子はヌルサクセサが指定されているとともに他の各演算子は前記演算子のセットからのサクセサが指定されている演算子のセットを指定する段階と、
それぞれのリーフレコードが、前記演算子のセットの中からのリーフの演算子およびそれぞれの前記２進条件の部分セットを有する、N>1個のリーフレコードを有するリーフベクトルを形成する段階と、
それぞれがノード演算子フィールドおよびノード状態フィールドを有するN個のノードレコードからなるノードベクトルを形成する段階と、
各リーフの演算子をそれぞれの２進条件に適用し、ノードレコードのノード状態フィールドに結果を配置する段階と、
前記ノードレコードのノード演算子フィールドに前記各リーフの演算子のサクセサを配置する段階と、
共通の演算子を有する特定されたノードレコードを、前記共通の演算子のサクセサを有する結合レコードで置換することと、前記特定されたノードレコードのノード状態フィールドのエントリに前記共通の演算子を適用して、前記結合レコードのノード状態フィールドに前記状態の結果を配置することとを再帰的に実行する段階と、
を備える、データコンテナの前記コンテンツをフィルタリングする方法。
【請求項９】
前記ヌルサクセサである前記共通の演算子の前記サクセサに従い前記結果の状態としてコンテンツインデックスを決定する段階をさらに備える請求項８に記載の方法。
【請求項１０】
前記置換の後に前記ノードベクトルのノードレコードの数を決定する段階と、
１に等しいノードレコードの数に対応する前記結果の状態としてコンテンツインデックスを決定する段階と、
をさらに備える請求項８から９のいずれか１項に記載の方法。
【請求項１１】
前記コンテンツインデックスの値により、前記コンテンツに関連する指定された編集動作を実行する段階をさらに備える請求項９から１０のいずれか１項に記載の方法。
【請求項１２】
前記データコンテナの受信機を特徴付けるデータを受信する段階と、
前記コンテンツおよび前記受信機の特徴の互換性を確認する段階と、
前記コンテンツが前記特徴に非互換である場合、前記特徴により前記コンテンツを修正する段階と、
をさらに備える請求項８から１１のいずれか１項に記載の方法。
【請求項１３】
プロセッサと、
各フィルタがコンテンツの選択された記述子および前記記述子に対応する個々の基準との関数である、フィルタのセットの定義をユーザから取得するためのフィルタ定義モジュールと、
前記フィルタのブール演算式および対応するコンテンツフィルタリング動作のセットを前記ユーザが提供可能にするためのブール演算式取得モジュールと、
μ＞１として、μビットのストリングとして表現される指定されたμ 個のフィルタのブール演算式を選択し、前記ストリングの2μ 個の値のそれぞれのブール演算式を評価して、各エントリが前記ストリングの前記2μ 個の値の１つに対応するコンテンツメトリックの状態である２μ個のエントリからなるルールベクトルを生成するための前処理モジュールと、
を備え、 
前記フィルタ定義モジュール、ブール演算式取得モジュール、および前処理モジュールのそれぞれは、コンピュータ可読格納媒体に格納されたコンピュータ可読命令を有する、マルチメディアデータコンテナの前記コンテンツをフィルタリングするシステムでの使用のための動作コントローラ。
【請求項１４】
前記ブール演算式取得モジュールは、前記ユーザが、前記ブール演算式を、ブール演算子、オペランド、およびデリミタを有する代数フォーマットで取得することを可能にする、コンピュータ可読媒体に格納されたコンピュータ可読命令を備え、前記前処理モジュールは、
２つのデリミタの間にブール演算子および２つのオペランドを挟む単純パターンを特定すべく、前記ブール演算式を検査し、
前記単純パターンが発見された場合、前記２つのオペランドに前記ブール演算子を適用して前記パターンの２進値を決定し、前記単純パターンおよび前記２つのデリミタを前記２進値で置換する、
ための、コンピュータ可読格納媒体に格納されたコンピュータ可読命令を備える、請求項１３に記載の動作コントローラ。
【請求項１５】
前記ブール演算式取得モジュールは、ユーザが、複数のノードを有するツリー構造の形式で前記ブール演算式を取得可能にするコンピュータ可読命令を備え、前記前処理モジュールは、
各レコードがそれぞれのノードに対応し、かつ第１オペランド、第２オペランド、現在の演算子、および後続レコードのための４つのフィールドを含む複数のレコードを有するツリーテンプレートを生成することと、
最初のレコードから開始するとともに最後のレコードまで、それぞれの２進値に現在のレコードの演算子を適用して新しい２進値を生成する、前記現在のレコードが最後のレコードの場合、前記新しい２進値を前記ブール演算式の値として決定する、および前記現在のレコードが中間レコードである場合、前記新しい２進値を前記後続レコードのオペランドフィールドに配置することを連続的に進めることと、
のためのコンピュータ可読命令を備える、請求項１３から１４のいずれか１項に記載の動作コントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明は、"A Method and System for Rule-Based Content Filtering"と名称が付され、２００７年１１月９日に出願された米国仮出願整理番号第６０／９８６，８３５号のNORTON他への利益、"System and Method for Rule Based Content Filtering"と名称が付され、２００８年１１月６日に出願された米国特許出願整理番号第１２／２６６，３５３号のNORTON他への利益、および"An Engine for Rule Based Content Filtering"と名称が付され、２００８年１１月６日に出願された米国特許出願整理番号第１２／２６６，３６２号のNORTONへの利益を主張し、全出願は引用によって本願に組み込まれる。
【０００２】
本願発明は、マルチメディアメッセージングサービス、特にコンテンツフィルタリングのための方法およびシステムに関する。
【背景技術】
【０００３】
多目的遠隔通信サービスによって、通信デバイスが異なるタイプの複数のコンポーネントを有するデータコンテナを交換することが可能になる。例えば、コンポーネントは、テキスト、画像、オーディオ信号、またはビデオ信号を表すデータを含んでもよい。そのようなサービスを扱う洗練された端末デバイスは急速に進化し、比較的短期間で分化した端末デバイスの複数の「世代」をもたらしている。
【０００４】
複数の世代の端末デバイスの共存に伴い、非互換性の問題が生ずる。データコンテナを送信する端末デバイスは、一般的に受信端末デバイス（またはマルチキャスト通信の場合の受信端末デバイス）の特徴および性能に無関心である。このことにより、引用によりその内容が本願明細書に組み込まれる、２００８年９月２５日に出願された、米国同時継続出願整理番号第１２／２３８，３９０号に説明されるように、データコンテナ全体からデータコンテナのコンテンツの正しい検出またはその中の特定のコンポーネントの正しい検出を確実にするとともに、元のコンテナにされた全ての変更を受信端末デバイスに通知するための機能が提供されることが必要となる。
【０００５】
互換性の問題に加えて、個々がそれぞれの添付物を選択的に有する複数のコンポーネントを通信させることは、さらにウィルスのような悪意を持った挿入にさらされることを増加する。コンテナを侵入にさらすことは、コンテンツフィルタリング機能が提供されることを必要なものとする。
【０００６】
多目的サービスを提供するネットワーク内では、コンテンツ適合に加えて、コンテンツフィルタリング機能を提供することに需要がある。
【発明の概要】
【０００７】
マルチメディアサービスを提供するネットワーク内での、コンテンツフィルタリング機能を提供することが、本願発明の目的である。包括的、効果的、かつ経済的なシステムを実現するために、既存のコンテンツ適合機能にコンテンツフィルタリング機能を組み込むことが、他の目的である。
【０００８】
本願発明の一構成によると、クライアントからコンテナを受信するとともに、各コンテナを、コンテナを特定かつパースする複数の制御部からのそれぞれの制御部に移動させるためのネットワークインターフェースと、コンテンツを特徴付ける第１オペランドおよび第１オペランドのターゲット値を指定する第２オペランドに適用可能なそれぞれの演算子によってそれぞれ決定される、ブール変数の配列、ならびにブール変数のそれぞれの部分セットのそれぞれのブール演算式の値によってアクティブ化されるそれぞれのコンテンツ編集動作をそれぞれ指定する、符号化済みルールの配列を格納するメモリデバイスと、コンテナの部分セットに符号化済みルールの少なくとも１つをそれぞれのトランスコーダが適用する、トランスコーダをホスティングする複数のプロセッサとを備える、コンテナのコンテンツを編集するためのエンジンが提供される。
【０００９】
エンジンは、演算、管理、および維持機能を実行するための、コンピュータ可読格納媒体に格納されたコンピュータ可読命令を有する動作管理部と、動作管理部に接続され、符号化済みルールの配列を入力するための、かつ各制御部にそれぞれのトランスコーダの部分セットを割り当てるための、コンピュータ可読格納媒体に格納されたコンピュータ可読命令を有するグラフィカルユーザインターフェースと、および各制御部に割り当てられるトランスコーダの識別子を格納する構成メモリデバイスとをさらに備える。
【００１０】
エンジンは、ネットワークインターフェースに接続され、コンテナを形成したプロトコルにそれぞれが対応するコンテナタイプにコンテナを並べ替えし、かつ複数の制御部からの特定の制御部に、特定のタイプのコンテナを移動させるための、コンピュータ可読格納媒体に格納されたコンピュータ可読命令を備える並べ替えモジュールをさらに備える。
【００１１】
エンジンは、動作管理部に接続され、コンピュータ可読媒体に格納されたコンピュータ可読命令を有し、時間変化するコンテナの流速による動的な制御部へのトランスコーダの割り当て手段を有する、制御部負荷均衡化モジュールをさらに備える。
【００１２】
エンジンは、各制御部に接続され、各制御部に割り当てられたトランスコーダ間でコンテナ編集要求を均等に割り当てるためのトランスコーダ負荷均衡化モジュールをさらに備える。
【００１３】
エンジンは、制御部とトランスコーダの各部分セットをホスティングするブレードサーバであって、各コアがトランスコーダの部分セットのトランスコーダに独占的に割り当てられる、複数のコアを有するプロセッサと、複数のメモリデバイスと、入力インターフェースと、出力インターフェースとを有するブレードサーバをさらに備える。
【００１４】
エンジンは、外部ソースから新しいプログラムを受信するための複数のトランスコーダのそれぞれのトランスコーダに接続されたトランスコーダサービスモジュールと、各トランスコーダにアクセス可能な複数のプログラムを格納するプログラム格納媒体と、個々の新しいプログラムの機能を特定するとともに、それぞれの機能によりプログラムをオーガナイズする、コンピュータ可読格納媒体に格納されたコンピュータ可読命令を有するプログラムレジストリとをさらに備える。
【００１５】
上述のエンジンにおいて、トランスコーダサービスモジュールは、実行されたときに、プロセッサのコアに、複数の制御部からの特定の制御部から特定のコンテナおよび編集要求を受信させ、編集要求に関連するプログラムを選択および実行させ、かつ結果を特定の制御部に戻させる、コンピュータ可読格納媒体に格納されたコンピュータ可読命令をさらに備える。
【００１６】
プログラムレジストリは、実行されたときに、プロセッサのコアに、それぞれの機能によりプログラムをオーガナイズさせ、既存のプログラムをそれぞれの新しいプログラムで置換させる、コンピュータ可読命令を備える。上述のエンジンにおいて、プログラム格納媒体は、コンピュータ可読格納媒体に格納された常駐プログラムと、コンピュータ可読格納媒体に格納され、動的にロードされた外部プログラムとを備える。
【００１７】
本願発明の一構成によると、コンポーネントを選択する段階と、コンポーネントのコンテンツを特徴付ける複数の２進条件を決定する段階と、それぞれがブール演算子および２進条件のセットから選択された少なくとも２つのオペランドを有するブール演算式のセットを形成する段階と、ブール演算式のセットのそれぞれのブール演算式を実行して、ブール演算式に１対１対応するコンテンツ指示子のセットを決定する段階と、それぞれの指示子に対応するコンテンツに関連する編集機能を実行する段階とを備える、複数のコンポーネントを有するデータコンテナをフィルタリングする方法が提供される。
【００１８】
方法は、単一の２進条件に基づいて、さらなる編集機能を実行する段階をさらに備える。
【００１９】
方法は、ブール演算式を実行することから生じる指示子が、少なくとも１つの後続ブール演算式の実行を条件的に防ぐ順序に、ブール演算式を配置することをさらに備える。
【００２０】
上述の方法は、コンテンツの指定された記述子と、記述子に対応するプリセットされた基準とにより、ブール演算式を決定する段階をさらに含む。上述の方法において、編集機能を実行する段階は、コンテンツをスキャンして悪意のある挿入を検出するとともに悪意のある検出を除去する段階と、コンテンツをスキャンして、悪意のある挿入を検出するとともに、悪意のある挿入の検出に応じてコンテンツを削除する段階との１つを有する。
【００２１】
本願発明のさらなる他の構成によると、コンテンツの記述子のセットを形成する段階と、記述子に対応する基準のセットを指定する段階と、演算子のセットを指定する段階と、それぞれのブール変数が、演算子のセットの中からの演算子を、記述子のセットの中から選択された記述子である第１オペランドおよび基準のセットの中から選択された基準である第２オペランドに適用する結果である、ブール変数のセットを定義する段階と、ブール変数のセットの中から選択される、ブール変数の部分セットのブール演算式を、それぞれのルールが実行するルールのセットを定義する段階と、実行の結果により、コンテンツに関連する動作のセットの中から選択さあれた動作を実行する段階とを備える、コンピュータデバイスを使用したデータコンテナのコンテンツを編集する方法が提供される。
【００２２】
上述の方法において、記述子のセットは、コンテンツのサイズ、予め定められたコンテンツファミリーのセットからのコンテンツファミリーと、符号化方法と、優先度指定との少なくとも１つを備える。
【００２３】
上述の方法において、演算子のセットは、単項演算子、２進演算子、算術演算子、比較演算子、論理演算子、集合演算子、およびユーザ定義演算子の１つ以上を備える。
【００２４】
方法は、記述子のセット、基準のセット、演算子のセット、およびブール演算式のセットを、コンピュータデバイスのメモリに格納されたコンピュータ可読命令を有するグラフィカルユーザインターフェースを介して入力する段階をさらに備える。
【００２５】
方法は、データコンテナの一部を含むようにコンテンツを選択する段階をさらに備えるのが好都合である。
【００２６】
本願発明の他の構成に従い、ネットワークからのマルチメディアデータコンテナを受信するネットワークインターフェース、ならびに、それぞれのフィルタがコンテンツ記述子、記述子の基準、および演算子の定義を指定するフィルタのセットの定義をユーザから取得する、コンピュータ可読格納媒体に格納されたコンピュータ可読命令を有するフィルタ定義モジュールと、それぞれのルールがフィルタの部分セットおよびフィルタリング動作のブール演算式を指定する、コンテンツフィルタリングルールのセットをユーザから取得する、コンピュータ可読格納媒体に格納されたコンピュータ可読命令を有するルール構築モジュールと、マルチメディアデータコンテナの各コンポーネントのコンテンツを特徴付け、コンテンツ記述子を決定し、演算子を適用し、かつ各フィルタの状態を定義するモジュールと、各ルールの２進出力を決定するモジュールと、２進出力のプリセットされた値を条件としてコンテンツに関連するフィルタリング動作を実行するモジュールとがインストールされ、それぞれのサーバユニットがプロセッサのセットおよびメモリデバイスのセットを有する複数のサーバユニットを備える、マルチメディアデータコンテナのコンテンツをフィルタリングするシステムが提供される。
【００２７】
システムは、それぞれがコンピュータ可読格納媒体に格納されたコンピュータ可読命令を備える、（１）既知のプロトコルのセットから選択された任意のプロトコルにより形成されたマルチメディアデータコンテナを受け入れるようにサーバユニットを構成するモジュールと、（２）等しく構成されたサーバユニットの間でマルチメディアデータコンテナを均等に分配するモジュールと、（３）代数文法によりユーザがブール演算式を提供することを可能にするモジュールと、（４）ユーザがツリー構造の形式でブール演算式を提供することを可能にするモジュールと、（５）ツリーの各ノードが演算子およびそれぞれのオペラントのセットを表すツリーを編集および選定することによってユーザがブール演算式を入力することを可能にするモジュールと、（６）ブール演算式の正当性を検証するモジュールと、（７）ルールによって実行される特定のフィルタリング動作は、少なくとも１つの後続ルールの実行を防ぐような順にルールを配置するモジュールと、（８）ブール演算式の値を条件とする少なくとも１つのルールからなる連続するルールを指定するようにユーザに指示するモジュールと、（９）形式グラフの形式で、コンテンツフィルタリングルールのセットを提示するモジュールと、（１０）各ルールのブール演算式を最適化するモジュールと、の少なくとも１つを備える。
【００２８】
システムは、多くともプリセットされた数のフィルタを有するフィルタ部分セットをそれぞれ指定する特定のルールを選択する段階と、それぞれの特定のルールに対して、フィルタ部分セットの全ての値に対してフィルタ部分セットのブール演算式を評価し、μ＞１をフィルタ部分セットのフィルタ数として２μビットからなる配列を生成する段階と、メモリデバイスにビット配列を格納する段階とを実行する、コンピュータ可読格納媒体に格納された、コンピュータ可読命令を備えるモジュールをさらに備える。
【００２９】
他の構成に従うと、本願発明は、データコンテナのコンテンツをフィルタリングする方法を提供する。方法は、２進条件のセットを指定する段階と、演算子のセットを指定する段階と、リーフベクトルを形成する段階と、ノードベクトルを形成する段階とを備える。
【００３０】
２進条件のセットは、コンテンツを特徴付ける。演算子の１つはヌルサクセサを指定されるが、他の各演算子は、演算子セット内からのサクセサを指定される。リーフベクトルはＮ＞１個のリーフレコードを備える。各リーフレコードは、演算子のセットおよび２進条件のそれぞれの部分セットからのリーフの演算子を有する。ノードベクトルは、それぞれがノード演算子フィールドおよびノード状態フィールドを有するＮ個のノードレコードを備える。
【００３１】
各リーフの演算子は、個々の２進条件に適用され、結果はノードレコードのノード状態フィールドに配置される。各リーフの演算子のサクセサは、次いで、ノードレコードのノード演算子フィールドに配置される。
【００３２】
各リーフレコードを処理した後、ノードベクトルが処理される。共通の演算子を有するノードレコードが特定されるとともに、結合レコードによって置換される。共通の演算子は、特定されたノードレコードのノード状態フィールドのエントリに適用されるとともに、結果の状態は、結合レコードのノード状態フィールドに配置される。共通の演算子のサクセサは、結合レコードのノード演算子フィールドに配置される。
【００３３】
コンテンツインデックスは、共通の演算子のサクセサがヌルサクセサであるという条件に従い、共通の演算子を適用した結果の状態として決定される。それに代えて、方法は、共通の演算子のノードレコードを結合した後にノードベクトルのノードレコードの数を記録し続けてもよく、かつコンテンツインデックスは、１に等しいノードレコードの数に対応する結果の状態として決定される。方法は、コンテンツインデックスの値により指定された編集動作を実行する段階をさらに備える。
【００３４】
他の構成に従い、本願発明は、決定ベクトルを予め決定することに基づく、データコンテナのコンテンツをフィルタリングする方法を構成する。方法は、それぞれの２進条件が選択されたコンテンツの記述子およびそれぞれの記述子の基準との関数である、２進条件のセットを定義する段階と、ブール演算式および対応するコンテンツフィルタリング動作を定義する段階と、μ＞１としてμビットからなるストリングとして表現される、指定されたμ個の２進条件のブール演算式を選択する段階と、ストリングの２μ個の値のそれぞれに対してブール演算式を評価して、それぞれのエントリがストリングの２μ個の値の１つに対応するコンテンツメトリックの状態である、２μ個のエントリからなる決定ベクトルを生成する段階とを備える。
【００３５】
データコンテナの受信に応じて、データコンテナのコンテンツにより、指定されたμ個の２進条件の値が決定される。μビットからなる結果のストリングの値は、次いで、コンテンツフィルタリング動作が適用される必要があるかどうかを決定するブール演算式の値を取得するために、決定ベクトルのインデックスを指示する（index the decision vector）するのに使用される。
【００３６】
ブール演算式は、ブール演算子、オペランド、およびデリミタを有する代数フォーマットで取得されてもよい。ブール演算式は、２つのデリミタの間にブール演算子および２つのオペランドを囲む単純パターンを特定するために、次いで、ブール演算式を検査することによって評価される。単純パターンが発見されると、ブール演算子は、パターンの２進値を決定するために２つのオペランドに適用されるとともに、２つのデリミタを伴う単純パターンは、２進値で置換される。ブール演算式を検査して単純パターンを検出する処理は、編集動作を適用するか否かを決定する単一の２進値（「真」または「偽」）にブール演算式が縮小されるまで反復される。
【００３７】
それに代えて、ブール演算式は、複数のノードを有するツリー構造の形式で取得されてもよい。ブール演算式は、次いでノードを連続的に評価することによって評価される。複数のレコードを有するツリーテンプレートが作成される。各レコードはそれぞれのノードに対応するとともに、第１オペランド、第２オペランド、現在の演算子、およびサクセサレコードのための４個のフィールドを有する。最初のレコードから開始して、最後のレコードまで順に進みながら、現在のレコードの演算子を、ストリングの現在の値から決定されるそれぞれの２進値に適用して新しい２進値を生成する。現在のレコードが最後のレコードである場合、新しい２進値はブール演算式の値である。もし現在のレコードが中間レコードであるならば、新しい２進値はサクセサレコードのオペランドフィールドに配置される。
【００３８】
本願発明の実施形態は、添付図面を参照して、実施例を使用して本願明細書で説明される。
【図面の簡単な説明】
【００３９】
【図１】図１は、本願発明の実施形態に従う、ネットワークを介して通信されるデータコンテナをフィルタリングおよび適合するサービス制御部および編集エンジンをサポートするネットワークを説明する。
【図２】図２は、本願発明の実施形態に従う、制御部およびトランスコーダを備える編集エンジンを説明する。
【図３】図３は、本願発明の実施形態に従う、マルチメディアコンテナ、コンテナコンポーネントのコンテンツ記述子、およびコンテンツフィルタの例示的構造を説明する。
【図４】図４は、本願発明の実施形態に従う、データコンテナに適用可能なルールのセットに関連付けられたブール演算式の代数形式を説明する。
【図５】図５は、本願発明の実施形態に従う、コンテンツフィルタリング処理の基本コンポーネントを説明する。
【図６】図６は、本願発明の実施形態に従う、コンテナのコンテンツ記述子の導出処理を説明する。
【図７】図７は、本願発明の実施形態に従う、コンテンツフィルタリングシステムを説明する。
【図８】図８は、本願発明の実施形態に従う、複数のコンポーネントを有するコンテナに適用される、図７のシステムに類似するシステムを説明する。
【図９】図９は、本願発明の実施形態に従う、コンテンツフィルタリング処理の詳細である。
【図１０】図１０は、本願発明の実施形態に従う、ルールのブール演算式を評価する方法を説明する。
【図１１】図１１は、本願発明の実施形態に従う、フィルタリングルールを符号化するための第１の例示的ルールツリー構造を説明する。
【図１２】図１２は、図１１のルールツリー構造の符号化するための第１データ構造を説明する。
【図１３】図１３は、本願発明の実施形態に従う、フィルタリングルールを符号化するための第２の例示的ルールツリー構造を説明する。
【図１４】図１４は、図１３の第２の例示的ルールツリーに適用される図１２の第１データ構造を説明する。
【図１５】図１５は、本願発明の実施形態に従う、図１２および図１４で例示された第１データ構造を適用する処理を説明する。
【図１６】図１６は、本願発明の実施形態に従う、ルールツリーを符号化する第２データ構造を説明する。
【図１７】図１７は、本願発明の実施形態に従う、図１６で例示された第２データ構造を適用する処理を説明する。
【図１８】図１８は、本願発明の実施形態に従う、ルールツリーを使用してルールの結果を決定する処理を説明する。
【図１９】図１９は、本願発明の実施形態に従う、図１８の処理に関連付けられるリーフベクトルを形成する段階の詳細である。
【図２０】図２０は、本願発明の実施形態に従う、高速実行時ルール実行のためのブール演算式の前処理方法を説明する。
【図２１】図２１は、図２０の方法の例示的実施を説明する。
【図２２】図２２は、本願発明の実施形態に従う、フィルタ定義およびルール定義に関するデータエントリの処理を説明する。
【図２３】図２３は、マルチメディアコンテナのコンポーネントの連続フィルタリング処理を説明する。
【図２４】図２４は、本願発明の実施形態に従う、複数のコンテンツフィルタリングルールを適用する処理を説明する。
【図２５】図２５は、本願発明の実施形態に従う、コンテンツフィルタリング動作を決定するルール間の依存関係を図示するグラフを説明する。
【図２６】図２６は、本願発明の実施形態に従う、図２のエンジンの動作管理部のモジュールを説明する。
【図２７】図２７は、本願発明の実施形態に従う、図２のエンジンのトランスコーダのモジュールを説明する。
【図２８】図２８は、本願発明の実施形態に従う、図２のエンジンのトランスコーダのモジュールを説明する。
【発明を実施するための形態】
【００４０】
用語
マルチメディアサービス（MMS）：この用語は、口語的には、テキスト、オーディオ信号、ビデオ信号、画像、プレゼンテーション等のような異なる形式の情報コンテンツが、ネットワークを介して端末間で交換される、マルチメディアコンテンツ通信サービスをいう。１つの端末から他に送信される符号化済み情報は、通常は、異なる情報コンテンツに対応する、時間インターリーブされたセグメントを伴う単一のデータストリーム内に配置される。
【００４１】
コンテナ：コンテナは、コンピュータ可読媒体に格納されるとともに、コンピュータネットワーク上で送信されるコンピュータファイルである。コンテナは、様々なタイプのデータを含むように構成される。コンテナは、複数のテキスト、オーディオ、および様々なストリームの連携された再生を可能にする同期情報を伴うビデオストリームをサポートしてもよい。
【００４２】
コンテナコンポーネント：コンテナはセクションを備え、それぞれが、テキスト、オーディオデータ、画像データ、またはビデオデータのような特定の形式で符号化されたデータを有する。用語コンテナコンポーネントは、１セクション内のデータのことをいう。コンテナコンポーネントは、簡潔さを旨として「コンポーネント」といわれてもよい。マルチメディアメッセージングシステムにおいては、コンポーネントは、「メディア」としても知られる。
【００４３】
コンテナスクリーニング：「コンテナスクリーニング」は、全ての好ましくない挿入、特に有害な挿入がないことを確実にするために全てのコンポーネントを含むコンテナコンテンツを検査する処理のことをいう。
【００４４】
コンテナ適合：「コンテナ適合」は、個々の受信機の復号化機能と非互換であることが発見されたコンテナコンポーネントの形式を修正する処理をいう。もしコンテナコンポーネントを受信機に適合するように提示できないのであれば、コンテナコンポーネントは削除されてもよい。コンテナ適合処理は受信機固有であるが、コンテナスクリーニング処理は意図される受信機のタイプに依存しない。
【００４５】
コンテナ編集：用語「コンテナ編集」は、コンテナスクリーニングおよびコンテナ適合の結合された処理のことをいう。
【００４６】
コンテナコンディショニング：この用語は、「コンテナ編集」と同義で使用されうる。しかしながら、コンテナコンディショニングは、たとえコンテナが修正されていない場合でも、コンテナに適切な通知を追加する。
【００４７】
トランスコーダ：トランスコーダは、符号化情報の直接のデジタル−デジタル変換を実行し、１つのフォーマットの情報レコードを、特定の受信機に適した異なるフォーマットで再生可能にするデバイスである。
【００４８】
図１は、以降で送信部１２０および受信部１６０として参照される送信デバイス１２０から受信デバイス１６０への経路を提供するネットワーク１４０を説明する。ネットワーク１４０は、異なるタイプの数多くの他のハードウェア端末デバイスに加えて、サービス制御部１０３および編集エンジン１０６をサポートする。送信部１２０は、受信部１６０に、符号化済みテキスト、オーディオ信号、静止画像、アニメーション画像（画像の高速表示）、およびビデオ信号のような異なるコンテンツタイプのデータを含み得るコンテナを送信する。次に、コンテナは、コンテナを検査するとともに、必要ならば、コンテナのコンテンツを編集する編集エンジン１０６にコンテナを移動させるサービス制御部１０３に移動させてもよい。編集処理は、いかなる好ましくない挿入、特に有害な挿入がないことを確実にするためのデータスクリーニング、特定の要件に合致させるためのコンテンツ修正、および個々の受信部の復号化能力に一致したコンテンツ適合を含む。
【００４９】
図２は、編集エンジン１０６を説明する。ネットワークインターフェース２１０は、リンク２０４を介してクライアントからコンテナを受信する。コンテナは、個々に２４０（１）、２４０（２）、…、２４０（ｍ）として特定されるｍ＞１個の制御部２４０の１つに移動される。制御部２４０は、別個のハードウェアエンティティとして実施されてもよく、または以下で説明されるように複数のトランスコーダ２８０をホスティングするコンピュータデバイスを共有してもよい。制御部２４０はプロトコル固有であり、それぞれが個々のプロトコルにより形成されるコンテナを扱うようにプログラムされる。特定のプロトコルを扱う制御部は、同じ制御部タイプであるといわれる。制御部は、制御部グループにグループ化され、それぞれの制御部グループは、同一のプロトコルにより形成されたコンテナを扱う。編集エンジン１０６は、異なるタイプの制御部を有してもよい。しかしながら、編集エンジン１０６の全体は、同じタイプの制御部を有するように構成されてもよい。編集エンジン１０６は、また、負荷均衡化モジュール２９０を有してもよい。
【００５０】
編集エンジン１０６は、個々に２８０（１）、２８０（２）、…２８０（ｎ）として特定される複数のトランスコーダ２８０を有する。トランスコーダ２８０の主要な機能は、１つのフォーマットの情報レコードを、特定の受信機に適した異なるフォーマットで再生可能にするために、符号化済み情報の直接のデジタル−デジタル変換を実行することである。しかしながら、トランスコーダは、コンテンツ適合とともにコンテンツフィルタリング処理を実行してもよい。複数の選択されたトランスコーダ２８０は、制御アセンブリを共に形成する各制御部２４０に割り当てられる。例えば、図２において、制御部２４０（１）およびトランスコーダ２８０（１）から２８０（５）は、それぞれのコンピュータデバイスにインストールされた１つの制御アセンブリを形成する。制御部２４０（ｍ）およびトランスコーダ２８０（ｎ−２）から２８０（ｎ）は、他のコンピュータデバイスにインストールされた他の制御アセンブリを形成する。制御アセンブリは、プロセッサおよびメモリデバイスをサポートする単一の回路基板であり、「ブレードサーバ」とも呼ばれる、サーバユニットにインストールされるのが好ましい。
【００５１】
プロセッサ２２０は、ネットワークインターフェース２１０および動作制御部とも呼ばれる動作管理部２３０をホスティングする。ネットワークインターフェース２１０は、ネットワーク１４０（図１）に通信可能に接続されたクライアントからコンテナを受信する。動作管理部２３０は、動作、管理、および維持機能を実行するための、コンピュータ可読格納媒体に格納されたコンピュータ可読命令を備える。
【００５２】
サービス制御部１０３は、コンテナを受信するとともに、編集エンジン１０６の１つにコンテナ編集要求を送信してもよい。
【００５３】
プロセッサ２２０は、また、動作管理部２３０に接続され、符号化済みルールの配列を入力するための、かつ各制御部２４０にそれぞれのトランスコーダの部分セットを割り当てるための、コンピュータ可読媒体に格納されたコンピュータ可読命令を備えるグラフィカルユーザインターフェース（図示せず）をホスティングする。構成メモリデバイス２６０は、各制御部に割り当てられたトランスコーダの識別子を格納する。
【００５４】
コンテンツフィルタリング処理を支配するルールは、各トランスコーダ２８０によってアクセスされるルールメモリ２２５に格納される共通のルールファイルとして格納されてもよい。それに代えて、制御部および関連付けられたトランスコーダをホスティングする各コンピュータデバイス（サーバユニット）は、ルールファイルの関連する部分セットを格納してもよい。
【００５５】
図３は、それぞれ３２０（１）、３２０（２）等として特定される複数のコンポーネント３２０を有するコンテナを説明する。コンポーネント３２０は、テキスト、オーディオ録音、符号化済み画像、ビデオ録画、および他のいかなるコンテンツタイプであってもよい。コンポーネントのコンテンツは、Dを記述子の総数として、それぞれ、３３２（１）、３３２（２）、…、３３２（ｊ）、および３３２（D）として特定される記述子３３２のセット３３０を使用して特徴付けられる。コンテンツ記述子は、コンテンツタイプ、識別子（名）、拡張子、デジタル署名、暗号化機能、優先度、およびファイルサイズのような複数の属性により定義される。記述子は、マルチメディア遠隔通信の進化する技術に伴い、コンテンツフィルタリング要件が変化するとともに追加または削除されてもよい。
【００５６】
本願発明の実施形態に従うと、コンテナコンポーネントのコンテンツの特徴は、コンテンツが特定の基準に合致するかどうかをそれぞれの２進変数が決定する、２進変数のセットとして表される。受信済みコンテナのコンテンツ記述子の値は、コンテナのコンテンツを検査することによって決定される。したがって、この機能を実行するトランスコーダは、受信済みコンテナのフォーマットおよびコンテナが形成されたプロトコルの意味を認識している。特徴付ける２進変数の値は、コンテンツフィルタリングシステムのインストーラ（ユーザ）によって入力されたコンテンツ記述子（３４２）の値および対応する基準３４６の２つのオペランドに演算子３４４を適用することによって決定される。演算子３４４および２つのオペランド３４２および３４６は、（コンテンツ条件または単に条件とも呼ばれる）フィルタ３４０を形成するといわれる。このように、コンテナコンポーネントのコンテンツは、それぞれが「真」または「偽」の値を有するフィルタのセットによって特徴付けられる。
【００５７】
受信機に適合するための適合の前にコンテナを編集することは、ルールのセットに基づくものであり、各ルールはコンテンツ全体を削除する、コンテンツに発見された悪意のある挿入を削除する、またはコンテンツの添付物を除去するような編集動作を決定する。ルールは、フィルタのそれぞれの部分セットの関数である。フィルタが２進変数になるように選択すると、ルールを定義する関数は、フィルタの部分セットのブール演算式として形式化されるのが好ましい。こうすると、（図７および図８に関してより詳細に説明される）コンテンツフィルタリングシステムのインストーラ（ユーザ）は、フィルタの部分セットによって、ブール演算式、およびブール演算式を実行した結果により実行される動作とによってルールを定義する。
【００５８】
図４は、データコンテナのコンポーネントに適用可能であり、ルール配列４２０に格納された、４つのルールからなるセットに関連付けられたブール演算式の代数形式を説明する。同じルールのセットは、また、ルールフィルタの少なくとも１つのコンポーネントに適用されてもよい。
【００５９】
第１ルール、ルール１は、単一のフィルタ（size>30000）によって定義され、コンテンツ記述子は、コンポーネントのサイズであり、演算子は、"GREATER THAN"であり、かつ基準は３００００（参照符号４４０）である。ルールの結果がブール「真」である場合、それぞれの動作はコンポーネントをドロップするとともに、考察下のコンポーネントに対して残りのルールを処理するのを中止する。
【００６０】
第２ルール、ルール２は、２つのフィルタ（size>5000）および（family≠message）のブール演算式４５０によって定義される。第１フィルタの記述子は"size"であり、基準は"5000"であり、かつ演算子は"GREATER THAN"である。第２フィルタの記述子は"family"であり、基準は"message"であり、かつ演算子は"NOT EQUAL"である。ブール演算式は、単一の演算子"OR"を含む。ルール２に関連付けられた動作は、ルール１の動作と同じである。
【００６１】
第３ルール、ルール３は、３個のフィルタ（size>25000）、(content-type=image/wbmp)、および（content-type=image/png）からなるブール演算式４６０によって定義される。第１フィルタの記述子は"size"であり、基準は"25000"であり、かつ演算子は"GREATER THAN"である。第２フィルタの記述子は、"content-type"であり、基準は"image/wbmp"であり、かつ演算子は"EQUAL"である。第３フィルタの記述子は、"content-type"であり、基準は"image/png"であり、かつ演算子は"EQUAL"である。ブール演算式は２つの演算子"AND"および"OR"を含む。ルール３の動作は、ルール１の動作と同じである。"wbmp"は無線ビットマップ（無線アプリケーションプロトコル、WAP、グラフィックフォーマット）のことをいい、かつ"png"は"Portable Network Graphics"のことをいうことに留意する。
【００６２】
第４ルール、ルール４は単一のフィルタ（family=message）によって定義され、記述子の内容は"family"であり、基準は"message"であり、かつ演算子は"EQUAL"（参照符号４７０）である。
【００６３】
図５は、図２の動作管理部２３０に組み込まれるとともに、ユーザインターフェース５２０、フィルタ定義を取得するフィルタ作成モジュール５３０、ルール定義を取得するルール構築モジュール５４０、フィルタ定義を格納するメモリ区画５５０、およびルール定義（ルール構造）を格納するメモリ区画５６０を備える、データ取得サブシステムの基本コンポーネントを説明する。ユーザインターフェース５２０によって、インストーラ（ユーザ）が入力データ５１２を提供してフィルタのセットおよびルールのセットを定義することが可能になる。フィルタ作成モジュール５３０は、実行されると、インストーラにコンテンツ記述子の定義、各定義の基準、および演算子を入力するようにプロセッサが促すことを引き起こす、コンピュータ可読格納媒体に格納されたコンピュータ可読命令を備える。記述子の値は、受信済みコンテナのコンテンツにより決定される。
【００６４】
ルール構築モジュール５４０は、コンピュータ可読格納媒体に格納されたコンピュータ可読命令を備え、実行されると、それぞれのルールに対してブール演算式を入力するとともに、予め定められた動作のセットから動作を選択するようにプロセッサがインストーラに促す。コンピュータ可読命令は、また、プロセッサにブール演算式をパースさせるとともに、実行する表現の項の順序を決定させる。
【００６５】
フィルタ定義は、メモリデバイスのメモリ区画５５０に格納され、かつルール定義は同じメモリデバイスのメモリ区画５６０または任意の他のメモリデバイスに格納される。
【００６６】
図６は、メモリ区画５５０に格納されたコンテンツ記述子の定義を使用して受信済みコンテナ６１２のコンテンツ記述子の値を決定する処理を説明する。受信済みコンテナ６１２は、コンテナのコンポーネントを特定するために、ステップ６２０でパースされる。各コンポーネントはステップ６４０において解析されるとともに、ステップ６５０において、結果とメモリ区画５５０から読まれたコンテンツ記述子の定義とがペアにされる。
【００６７】
図７は、本願発明の実施形態に従う、コンテンツフィルタリングシステムの全体構成を説明する。メモリ７１０は全ての関連するフィルタのデータを格納する。各フィルタは、図５のモジュール５３０によって決定される演算子のセット７４０からの演算子、図６のステップ６５０において決定されるコンテンツ記述子のセット７２０からのコンテンツ記述子、および図５のモジュール５３０において決定される記述子の基準のセット７３０からの記述子の基準によって定義される。各フィルタの２進値（「真」および「偽」）は、図５のモジュール５４０において定義されるルールのセットの実行において使用するためにメモリデバイス７５０に格納される。
【００６８】
各ルールは、フィルタの部分セット、ブール演算式、および動作によって定義される。メモリ７７０は、システムのインストーラ（ユーザ）の入力により、図５のモジュール５４０で決定された符号化済みブール演算式を格納する。メモリ７６０は、各ルールで使用されるフィルタの識別子およびそれぞれのブール演算式を格納する。メモリ７８０は、それぞれのブール演算式の評価の結果に従って実行される編集動作の指示を格納する。各ブール演算式の実行は２進の結果およびそれぞれの編集動作を生成する。編集動作の完了に応じて、編集されたコンテンツはメモリ７９０に配置される。
【００６９】
図７は、本願発明の実施形態による、単一のコンポーネントに適用されるとした、コンテンツフィルタリングシステムを説明するが、図８は、ｋ＞１個のコンテナコンポーネントに適用されるとして、図７のコンテンツフィルタリングシステムを説明する。メモリデバイス８１０は、ｋ個のコンテナコンポーネントのそれぞれの全ての関連フィルタのデータを格納する。各フィルタに関連するデータは、それぞれ８１２（１）から８１２（ｋ）として特定される。コンテナのコンポーネントは連続的に処理される。考察中のコンポーネントに対し、各フィルタの演算子を適用した結果は、メモリ８５０内に保持される。Ｎ＞１個の符号化済みブール演算式のセットは、メモリ８６４に格納される。ブール演算式は、８７０（１）から８７０（Ｎ）として個々に特定され、各々が、それぞれ８８０（１）から８８０（Ｎ）として特定されるＮ個の編集動作からのそれぞれの編集動作に関連付けられる。
【００７０】
図９は、コンテンツフィルタリングの例示的な処理を説明する。図７および図８のコンテンツフィルタリングのためのシステムのインストーラ（ユーザ）は、最初に、それぞれ９２０（１）から９２０（５）として特定される５個のコンテンツ記述子、それぞれ９２２（１）から９２２（８）として特定される８個の記述子の基準、およびそれぞれ９２４（１）から９２４（４）として特定される４個の演算子を定義した。インストーラは、それぞれ９３０（１）から９３０（１２）として特定され、それぞれのフィルタがコンテンツ記述子９２０の１つ、基準９２２の１つ、および演算子９２４の１つを指定する１２個のフィルタを定義した。５個のコンテンツ記述子９２０（１）から９２０（５）の値の決定に応じて、図６のステップ６５０で説明されるように、１２個のフィルタの２進値が決定される。
【００７１】
インストーラは、それぞれ９５０（１）から９５０（６）として特定され、それぞれのブール演算式が１２個のフィルタの部分セットに関連付けられている、６つのブール演算式を定義した。例えば、ブール演算式９５０（２）は２つのフィルタ９３０（１）および９３０（６）に関連付けられるとともに、ブール演算式９５０（５）はフィルタ９３０（２）、９３０（８）、および９３０（１１）に関連付けられる。インストーラは、それぞれ９６０（１）から９６０（４）として特定される４つの動作を定義した。インストーラは、次いで、図５のルール構築モジュール５４０を使用して、それぞれ９４０（１）から９４０（９）として特定される９個のルールを定義した。各ルールは、単一のブール演算式９５０および単一の動作９６０に関連付けられる。例えば、ルール９４０（１）は、ブール演算式９５０（２）および動作９６０（２）を指定し、一方ルール９４０（９）は、ブール演算式９５０（５）および動作９６０（４）を指定する。
【００７２】
ルールは単一のフィルタに基づいてもよく、ルールの結果は当該フィルタの２進値である。例えばルール９４０（７）はフィルタ９３０（１１）のみに依存する。
【００７３】
ブール演算式の表現
図７および図８のコンテンツフィルタリングシステムのインストーラは、通常の代数文法によって、またはツリー構造によってブール演算式９５０を提供してもよい。図５のユーザインターフェース５２０は、代数形式で表現されたブール演算式を符号化する第１モジュール（図示せず）およびツリー構造として表現されたブール演算式を符号化する第２モジュール（図示せず）を備える。２つのモジュールの各々は、インストーラがブール演算式を正しく指定できるようにするための、それぞれのテンプレートを提供する。
【００７４】
ブール演算式は、単純演算、結合演算、および複合演算を備える。単純演算は、演算子およびオペランドが（例えば２つの括弧のような）２つのデリミタによって区切られた演算子および２つのオペランドとして示される。演算子およびオペランドは、任意の順序でリストされてもよく、かつ２つのデリミタは互いに区別される必要はない。２つの演算子は、２つのフィルタを表すブール変数である。結合演算は、演算子および２つの単純演算が２つのデリミタによって区切られた、演算子および２つの単純演算を備える。複合演算は、２つの演算の何れかが、単純演算または結合演算であってもよい、全てが２つのデリミタで区切られた演算子および２つの演算を備える。複合演算を構成する２つの演算は、また複合演算であってもよい。単純演算、結合演算、または複合演算のデリミタは同じであってもよい。
【００７５】
図１０は、本願発明の実施形態による、単純演算を認識かつ実行することのみを必要とする、ブール演算式の評価方法を説明する。方法によると、単純演算を特定するために、符号化済みブール演算式がパースされる。特定された単純表現の演算子は、（例えば"1"および"0"として表される）「真」または「偽」の２進値を生成すべく、それぞれのオペランド（フィルタ）に適用される。このように処理された、演算子、オペランド、および特定された単純演算の２つのデリミタは、削除されるとともに、演算の結果に置換される。この処理は、符号化済みブール演算式が単一の単純演算に縮小されるまで再帰的に継続され、その結果はブール演算式の結果となる。
【００７６】
図１０のステップ１０１２において、単純演算を特定するためにブール演算式が検査される。単純演算が発見された（ステップ１０１４）場合、ステップ１０１６は単純演算を実行するとともに、２進値を生成する。ステップ１０１８は、単純演算の演算子、オペランド、およびデリミタを２進値で置換する。ステップ１０１２は、次いで、縮小されたブール構造内の他の単純演算を探すために再訪される。ステップ１０１４がブール演算式の現在の形式にさらなる単純演算が発見されないと決定した場合、ステップ１０２０は、現在の形式を検査して、単一の２進値（「真」、「偽」、または「１」、「０」）に現在の形式が実際に縮小したかどうかを決定する。そうである場合、ステップ１０２２は単一の２進値をブール演算式の実行結果として報告する。処理されたブール演算式が２以上の２進値を含むとステップ１０２０が決定した場合、ステップ１０２４は、ブール演算式は正しく形成されていないという通知を報告する。
【００７７】
図１０の処理は、ユーザ（インストーラ）がブール演算式を訂正できるようにデータ入力の間に実行されるのが好ましい。ユーザインターフェース５２０または編集エンジンの他のいくつかのコンポーネントは、誤って形成されたブール演算式を解析するとともに、エラーを位置特定するコンピュータ命令を備えてもよい。
【００７８】
本願発明の実施形態によるブール演算式を符号化および評価する代替的方法は、ブール演算式のグラフィカルなツリー表現に依存する。それぞれがツリーのリーフであるフィルタ１からフィルタ６として特定される６個のオペランド（６個のフィルタ）のブール演算式を図示する例示的ルールツリー１１００が図１１に説明されている。Θ１、Θ２、およびΘ３と記される３つの演算子は、３つの演算｛フィルタ１、Θ１、フィルタ２｝、｛フィルタ３、Θ２、フィルタ４｝、および｛フィルタ４、Θ３、フィルタ６｝を定義する。各演算子のすぐ次のサクセサが定義される。例えば、Θ１、Θ２、およびΘ３のサクセサは、それぞれ演算子Θ５、Θ４、およびΘ４であるとともに、演算子Θ４およびΘ５のサクセサは、それぞれΘ５および"NULL"である。"NULL"サクセサを有する演算子は、ブール演算式の結果を生成する。
【００７９】
演算子Θ１は、演算子Θ５のオペランドである、２進出力B1を生成する。演算子Θ２は、演算子Θ４のオペランドである２進出力B2を生成する。演算子Θ３は、演算子Θ４のもう一方のオペランドである２進出力B3を生成する。演算子Θ４は、演算子Θ５のもう一方のオペランドである２進出力Ｂ４を生成する。演算子Θ５は、ツリーによって表されるブール演算式の結果である２進出力Ｂ＊を生成する。
【００８０】
図１２は、図１１のルールツリー１１００を表現するテンプレート配列１２３０を説明する。テンプレート配列１２３０のインデックス１２２０は、図１２に指示されるように、０から１９まで変化する。テンプレート配列１２３０は、演算子の総数（図１１の例示的ツリーにおいては５個）に等しい数のレコードに分割され、それぞれのレコードは、演算子に対応するとともに、２つのオペランドを有する単純操作を表す。フィルタの２進値は、考察下のコンテナが処理された後に判る。このように、レコードは、個々のフィルタのインデックス、演算子定義、およびすぐ次の演算子に対応する他のレコードへのポインタを有する。"NULL"ポインタは、現在のレコードが処理すべき最後のレコードであることを指示する。ユーザは、任意の順序でレコードを入力してもよく、かつ図５のユーザインターフェース５２０を伴うモジュール（図示せず）は、レコードが連続的に処理されてもよく、かつ任意のレコードが処理されるときに、それぞれのオペランドの値は既に決定されているようにレコードを再オーガナイズする。
【００８１】
図１２に説明されるように、最初の３つのレコードは、ツリーのリーフを形成する６個のフィルタに適用可能である演算子Θ１、Θ２、およびΘ３に対応する。１番目のレコードのポインタπ（１）は、演算子Θ１の２進の結果B(1)を保持する配列のインデックス１６を指示する。２番目のレコードのポインタπ（２）は、演算子Θ２の２進の結果B(2)を保持する配列のインデックス１２を指示する。３番目のレコードのポインタπ（３）は、演算子Θ３の２進の結果B(3)を保持する配列のインデックス１３を指示する。このようにすると、４番目のレコードに到達したときに、２つのオペランドB（２）およびB(3)は既に算出されていることになる。演算子Θ４の２進の結果B(4)は、位置π（４）＝１７に書かれる。このようにすると、５番目のレコードに到達したときに、それぞれの２つのオペランドB(1)およびB(4)は、既に判っているようになる。演算子Θ４はサクセサを有さない（すなわちヌルサクセサを有する）ので、演算子Θ４の２進出力は、ブール演算式の結果である。
【００８２】
テンプレート配列１２３０の例示的なアクティブ化は、図１２にも説明される。図６の処理により決定されたフィルタ１からフィルタ６の値は、それぞれ「真」、「偽」、「真」、「偽」、「真」、および「真」である。ブール演算子Θ１からΘ５は、ユーザによってそれぞれ"AND"、"OR"、"AND"、"AND"、および"XOR"として指定される。演算子Θ４（"XOR"）がヌルサクセサを有するので、演算子"XOR"は、ブール演算式の結果である２進出力「真」を生成する。
【００８３】
図１３は、L1からL１１と記された１１個のリーフ（フィルタ）のブール演算式に対応する第２の例示的なルールツリー１３００を説明するとともに、図１４は、図１２のテンプレート配列１２３０に類似し、図１３のルールツリーに、インデックス１４２０を０から４３まで変化させながら適用される、テンプレート配列１４３０を説明する。ルールツリー１３００は、Θ２からΘ１１と記された１０個の演算子を備える。１番目のリーフL1は、サクセサを有さない演算子Θ１１のオペランドである。統一性のため、ルールツリー１３００を表す、図１４のテンプレート配列１４３０の（図１４においてレコード１と記された）１番目のレコードは、概念的には、「ドントケア」オペランドφおよびL1の値をサクセサ演算子Θ１１のオペランドとして運ぶ許容非存在演算子Θ１を含むと概念的に捉えられる。当業者に公知であるように、オペランドφに割り当てられた「ドントケア」値は、都合の良いように「真」状態または「偽」状態のいずれであってもよい。残りの１０個のレコード、テンプレート配列１４３０のレコード２からレコード１１は、演算子Θ２からΘ１１に対応する。図１４のテンプレート配列１４３０のそれぞれのエントリL1、L2、からL11は、フィルタへのインデックス（ポインタ）である。図１２を参照しながら上述されたように、図５のユーザインターフェース５２０に関連付けられたオーガナイズモジュール５２２は、各レコードが既に決定済みのオペランドを有し、レコードが連続的に処理されうるように、レコードを配置する。
【００８４】
図１５は、テンプレート配列１２３０（図１２）または１４３０（図１４）を使用するツリー符号化方法を概要する。ステップ１５２０において、それぞれがツリー内のノードに対応する複数のレコードを有するテンプレートが生成される。各レコードは、２つのフィルタのインデックス、現在の演算子、および現在の演算子のサクセサに対応するサクセサレコードへのポインタを含む、４つのフィールドを有する。ステップ１５３０において、図６の処理により決定されたフィルタのリストは、考察下のコンテナに対して準備される。ステップ１５４０において、ツリーテンプレートのレコードは連続的に処理される。各レコードのオペランドは、フィルタのリストをインデックス化することによって取得される。それぞれの演算子はオペランドに適用されるとともに、２進の結果は、サクセサレコードのオペランドフィールドに配置される。ステップ１５５０において、最終レコードの演算子の結果は、ツリーによって表現されるブール演算式の結果として提示される。
【００８５】
図１６は、本願発明の実施形態によるルールツリー構造を表現する代替的な方法を説明する。ルールに関連するフィルタ（条件）のセットは、上述されたように、コンテンツ記述子、記述子の基準、およびフィルタ演算子に基づき定義される。フィルタのセットの定義は、フィルタ定義配列に格納される。ブール演算子のセットは、ヌルサクセサを指定された１つの演算子と、演算子のセットからのサクセサを指定された、それぞれの他の演算子とによって定義される。フィルタはツリーのリーフを形成するとともに、フィルタの部分セットに分割され、部分セットのフィルタは、ブール演算子のセットの中からのブール演算子のオペランドを形成する。特に、フィルタの部分セットが２つのフィルタを含む場合、ブール演算子の総数は、フィルタの総数引く１に等しい。
【００８６】
Ｍ（Ｍ＞１）個のフィルタのセットを考察すると、Ｎ個のリーフレコード、１＜Ｎ＜Ｍ、を備えるリーフベクトルのテンプレートが形成される。各リーフレコードは、演算子のセットの中からのリーフの演算子およびそれぞれのフィルタの部分セットを有する。インストール段階で、各リーフレコードは、演算子およびフィルタ定義配列内のオペランド（フィルタ）のインデックスを含む。それぞれのコンテナコンポーネントに対して、各リーフレコードのフィルタの値が決定される。
【００８７】
リーフレコードの数Nに等しい数のノードレコードを有するノードベクトルが形成される。各ノードレコードは、ノード演算子フィールドおよびノード状態フィールドを有する。インストール段階で、ノードレコードは空であり、データを含んでいない。ブール演算子およびノードレコードのノードの状態は、リーフレコードの処理中に最初に決定される。Ｎ個のノードレコードは、いかなる順序で配置されてもよい。しかしながら、最初にノードレコードをリーフレコードに１対１に対応させるのが好都合である。このようにすると、ノードレコードｊ、１≦ｊ≦Nのブール演算子は、リーフベクトルｊのブール演算子のサクセサになる。
【００８８】
フィルタの値の決定に応じて、各リーフの演算子がそれぞれのフィルタ（それぞれの２進条件）に適用されるとともに、結果はノードレコードのノード状態フィールドに配置される。各リーフの演算子のサクセサは、ノードレコードのノード演算子フィールドに配置される。
【００８９】
全てのリーフレコードを処理した後、ノードレコードが処理される。本願明細書では接続ノードレコードと呼ばれる、共通の演算子を有するノードレコードが、次いで特定される。新しい状態を生成するために、共通の演算子は、次いで、全ての接続ノードレコードのノードの状態に適用される。接続ノードレコードから選択されたノードレコードの演算子フィールドは、共通の演算子のサクセサによって置換されるとともに、選択されたノードレコードのノード状態フィールドは、丁度決定された新しい状態によって置換される。残りの結合ノードレコードは、ノードベクトルから削除される。こうして、結合ノードレコードを伴う接続ノードレコードのそれぞれのセットの置換をもって、ノードベクトル内のノードレコードの数は、減少される。接続ノードレコードを特定する処理は、ノードベクトルが唯一のノードレコードを含むまで再帰的に継続する。残りの１個のノードレコードの演算子フィールドのブール演算子の適用結果は、ブール演算式の評価結果である。最終ノードレコードのブール演算子は、ヌルサクセサを有する。
【００９０】
図１６は、ツリーのリーフを形成する１１個のフィルタからなるブール演算式を表す図１３の例示的ツリーに対するルールツリーを符号化する再帰ルール構築１６００を説明する。リーフ（フィルタ）は、L1からL11と記される。図１３のツリーにおいて、リーフL1は他のいかなるリーフにも関連付けられていない。統一性のため、リーフL1は、受動演算子Θ１を共有するリーフφに人為的に関連付けられている。挿入されたリーフφは、「ドントケア(don't care)」値が割り当てられる。当業者に公知であるように、「ドントケア」値は、「真」状態または「偽」状態のいずれにも都合よく割り当てられうる。
【００９１】
ブール演算子のセットΘ２からΘ１１は、ユーザによって定義される。演算子Θ２からΘ６はリーフレコードに関連付けられている一方、演算子Θ７からΘ１１はノードレコードに関連付けられている。演算子Θ１１はヌルサクセサを有するとともに、他の各演算子Θ２からΘ１０は、図１６のリスト１６１０内で図示されるように、演算子Θ７からΘ１１のセットからのサクセサを有する。
【００９２】
リーフベクトル１６２０は、それぞれが１６２２（１）から１６２２（６）として特定される６個のレコード１６２２を備え、割り当てられた演算子Θ１からΘ６は、オペランドフィールド１６２６（１）から１６２６（１２）に配置された対応するオペランドのインデックスを伴う、演算子フィールド１６２４（１）から１６２４（６）に配置される。６個のリーフレコードのオペランドフィールドのオペランドは、{Φ, L1}、{L2, L3}、{L4, L5}、{L6, L7}、{L8, L9}、および{L10, L11}である。
【００９３】
フィルタの２進値が決定された場合（図５および図６）、リーフレコード１６２２が処理される。リーフレコード１６２２（１）から開始して、作為的受動演算子Θ１は、単に、ノードレコードのノード状態フィールド１６４２（１）にL1の値を渡す。Θ１のサクセサである演算子Θ１１は、ノードレコードの演算子フィールド１６４２（１）に配置される。２番目のリーフレコード１６２２（２）は、次いで処理され、ノードレコードのノード状態フィールド１６４２（２）に配置される２進値B2を生成するために、演算子Θ２はリーフL2およびL3（フィルタL2およびL3）に適用される。演算子Θ９である演算子Θ２のサクセサは、ノードレコード１６２２（２）の演算子フィールドに配置される。処理は、全てのノードレコード１６４２（１）から１６４２（６）が決定されるまで継続する。
【００９４】
処理は、ノードベクトル１６４０のみを使用して再帰的に継続し、リーフベクトル１６２０はもはや不要である。ノードレコード１６４２（１）内の演算子Θ１１は、ノードベクトル１６４０（１）内でペアにされていない。それ故、ノードレコード１６４２（１）は変更されずにとどまる。ノードレコード１６４２のいずれも演算子Θ９を含まないので、同様に、ノードレコード１６４２（２）は、変更されずにとどまる。ノードレコード１６４２（３）および１６４２（４）は、オペランドＢ３およびＢ４に適用されて、ノードレコード１６４２（３）のノード状態フィールドに配置される２進の結果Ｂ７を生成し、Ｂ３を置換する、共通の演算子Θ７を有する。Θ９である演算子Θ７のサクセサ演算子は、レコード１６４２（３）の演算子フィールドに配置され、Θ７を置換する。新しい結合レコード１６４２（３）内で、今消費されたノードレコード１６４２（４）は、削除される。同様に、ノードレコード１６４２（５）および１６４２（６）は、演算子Θ８のサクセサ演算子Θ１０を有する新しいノードレコード内で結合されるとともに、共通の演算子Θ８をオペランドＢ５およびＢ６に適用することによって、ノード状態Ｂ８が決定される。ノードベクトル１６４０は、参照符号１６４０（２）によって特定される４つのノードレコードに今縮小した。ノードレコード１６４０（２）は、ノードレコード１６４０（１）を単に上書きする。
【００９５】
処理は、結合されて新しい結合ノードレコード１６４２（２）を生成するノードレコード１６４２（２）および１６４２（３）とともに再帰的に継続される一方、ノードレコード１６４２（１）および１６４２（４）は変更されずにとどまる。２つの不変ノードレコードは、今、縮小されたノードベクトル１６４０（３）内のレコード１６４２（１）および１６４２（３）である。
【００９６】
ノードレコード１６４２（２）および１６４２（３）は、共通の演算子Θ１０を有する。ノードレコード１６４２（２）のノード状態フィールドに配置される新しい状態Ｂ１０を生成するために、演算子Θ１０はオペランドＢ９およびＢ８に適用される。演算子Θ１０のサクセサ演算子Θ１１は、ノードレコード１６４２（２）のノード状態フィールドに配置される。ブール演算式の出力Ｂ＊を生成するために、ノードレコード１６４２（１）および１６４２（２）の共通の演算子Θ１１はオペランドＢ１およびＢ１０に適用される。
【００９７】
図１７は、図１６のリーフベクトルテンプレート１６２０およびノードベクトルテンプレート１６４０を使用してルールツリーの出力を決定する処理を説明する。ステップ１７２０において、考察下のデータコンテンツを特徴付けるブール条件のセット（ブールフィルタＬ２からＬ１１）が決定される。ステップ１７２２において、Ｎ＞１個のリーフレコード１６２２を有するリーフベクトル１６２０が形成される。各リーフレコード１６２２は、ブール演算子フィールド１６２４およびブール条件の部分セット（フィルタＬ２からＬ１１の部分セット）のためのフィールドを有する。ステップ１７２４において、Ｎ個のノードレコード１６４２のノードベクトル１６４０が形成される。各ノードレコード１６４２は、ブール演算子フィールド１６４４およびノード状態フィールド１６４８を含む。ステップ１７２６において、各リーフの演算子は、図５および図６を参照して上述されたようにコンテンツデータの特徴から決定される、それぞれのブール条件（ブールフィルタ）の部分セットが適用される。２進の結果は、選択されたノードレコード１６４２のノード状態フィールドに配置される。ステップ１７２８において、各リーフの演算子のサクセサが、選択されたノードレコードの演算子フィールドに配置される。ステップ１７３０において、共通の演算子を有するノードレコードが結合レコードに置換され、こうしてノードベクトル１６４０のノードレコード１６４２の数を減少させる。ステップ１７３２において、置換されたノードレコードのノード状態に共通の演算子が適用されるとともに、２進の結果は、結合レコードの演算子フィールドに配置される。ステップ１７３４において、図１６のリスト１６１０から決定された共通の演算子のサクセサは、結合ノードレコードの演算子フィールドに配置される。ステップ１７３６において、残りのノードレコードの数が１より大きい場合、共通の演算子のノードレコードを結合する処理を継続するためにステップ１７３０が再訪される。残りのレコードの数が１の場合、残りのノードレコードの演算子がノードレコードのノード状態に適用されるとともに、編集動作が実行される必要があるかどうかを結果が決定する（ステップ１７４０）。
【００９８】
図１８は、図１７の処理の詳細であるフローチャートである。ステップ１８２０において、図１９に詳細されるように、リーフベクトル１６２０が形成される。リーフレコード１６２２（１）から１６２２（Ｎ）は連続的に考察される。ステップ１８２４において、インデックスｊは０に等しく設定される。より多くのリーフレコードが処理されるべきであるとステップ１８２６が決定した場合、ステップ１８２８は、インデックスｊを１だけ増加するとともに、現在のリーフレコードのリーフインデックスに対応するリーフセット（フィルタのセット）を取得するとともに、ステップ１８３０は、現在のリーフレコードの演算子θ（演算子Θ１からΘ６の１つ）を取得する。ステップ１８３２は、取得されたリーフのセットに演算子を適用し、２進出力Ｂを生じる。ステップ１８３４において、図１６のリスト１６１０からサクセサＳ（θ）が決定される。
【００９９】
ノードベクトル１６４０のノード状態フィールドおよび演算子フィールドは、本願明細書で、Ｕ（ｊ）、Ｖ（ｊ）、１≦ｊ≦Ｎとして記される、即ちＵ（ｊ）およびＶ（ｊ）は、ノードレコード１６４２（ｊ）、１≦ｊ≦Ｎを定義する。ステップ１８３６において、Ｂの値はノードベクトル１６４０のノード状態フィールドＵ（ｊ）に配置されるとともに、Ｓ（θ）の値はノードベクトル１６４０の演算子フィールドＶ（ｊ）に配置される。全てのリーフレコード１６２２（１）から１６２２（Ｎ）が処理された場合、インデックスｊはリーフレコードの数Ｎに等しく、かつノードベクトル１６４０の各ノードレコード１６４２は、それぞれのノード演算子およびノード状態を有する。ステップ１８４０において、ノードベクトル１６４０のノードレコード１６４２の現在の値νは、（Ｎに等しい）ｊに等しく設定される。ステップ１８４２において、ノードレコードの現在の数νが１より大きい場合、同じ演算子を有する全てのノードレコード１６４２を収集するとともにそのようなレコードを結合するためにノードベクトルがスキャンされる。スキャンの前に、ノードレコードの数の変化を検知できるようにするために、ノードレコードの現在の数ν＊＝νは記録される（ステップ１８４３）。ステップ１８４４において、インデックスｋはゼロに等しく設定されるとともに、ステップ１８４６は、ノードレコード１６４２（ｋ）の演算子θ＝Ｖ（ｋ）を記録する。ステップ１８４８は、ノードベクトル１６４０の後続ノードレコードを検査して、同じ演算子θを有する後続ノードレコードの数μを特定する。特定された後続ノードレコードの数μがゼロの場合（ステップ１８５０）、インデックスｋはステップ１８５２において１だけ増加されるとともに、インデックスｋが現在のノードレコードの数νより小さい場合、ステップ１８４６は再訪される。そうでないならば、ステップ１８５６は、同じ演算子θのノードレコードの（μ＋１）個のオペランドを収集するとともに、（μ＋１）個のオペランドに演算子θを適用して、結合ノードレコードの新しい状態Ｂを決定する。ステップ１８６０において、後続のμ個の特定されたノードレコードは削除されるとともに、ステップ１８６２はノードレコード１６４２（ｋ）のノード状態フィールドＵ（ｋ）に新しい状態Ｂを、かつノードレコード１６４２（ｋ）の演算子フィールドＶ（ｋ）にサクセサ演算子Ｓ（θ）を挿入する。残りのノードレコードの数は、ステップ１８６４において（ν―μ）として決定される。ノードベクトル１６４０が共通の演算子のさらなるノードレコードを含むかどうかを決定するために、ステップ１８５２および１８５４がステップ１８６４の後に適用される。ｋがνより小さいことをステップ１８５４が決定した場合、ノードベクトルのスキャンはステップ１８４６から継続する。そうでなければ、ステップ１８５４がｋ＝νであると決定した場合（ｋはνを超えられない）、ステップ１８５５は、（ステップ１８６４において最後に更新された）νの現在の値は、以前の値ν＊よりも小さいことを確認する。層でなければ、ステップ１８８０においてエラーが報告される。特に、ブール演算式のユーザが提供した表現が正しくなければ、ステップ１８５５��要求ν＜ν＊は満たされない。ν＜ν＊の場合、ステップ１８５５にステップ１８４２が続く。残りのノードレコード数が１であることをステップ１８４２が決定した場合、それぞれの編集動作を決定する状態Ｂ＊を決定する（ステップ１８９０）ために、残りのノードレコードの演算子がそれぞれのオペランドに適用される。
【０１００】
図１９は、図１６のリーフベクトル１６２０を形成する図１８のステップ１８２０の詳細である。ステップ１９２０において、フィルタ（条件）のセットが形成されるとともに、ステップ１９２２において、図５および図６を参照して説明されたようなユーザ入力に基づき、リーフの演算子が決定される。対応するリーフレコード１６２２を生成するために、リーフの演算子は連続的に適用される。少なくとも１つの演算子が未だ適用されていないとステップ１９２４が決定した場合、ステップ１９２６は、リーフベクトルに新しいリーフレコード１６２２を追加する。ステップ１９２８は、残りの演算子の１つを選択するとともに、ステップ１９３０は、リーフレコードの演算子フィールド１６２４に関連付けられたフィルタを追加する。選択された演算子に属する全てのフィルタが現在のリーフレコード１６２２に含まれたとステップ１９３２が決定するまで、ステップ１９３０は繰り返される。現在のリーフレコード１６２２が完成すると、ステップ１９３２において決定されたように、ステップ１９２４は再訪される。全てのリーフの演算子が考察されたとステップ１９２４が決定すると、完成リーフベクトル１６２０は、図１８のステップ１８２４に提示される。
【０１０１】
図２０は、フィルタのセットのそれぞれの値に対して、ルールのブール演算式の２進値を予め算出する方法を説明する。フィルタのセットは、ストリング内の各ビットが、それぞれ１つのフィルタに対応するように、フィルタへの１対１対応を有する複数のビットを有するビットストリングによって表される。μ＞１個のフィルタならば、ストリングは、μビットおよび０から２μ―１まで変化する仮定値を含む。ステップ２０１２において、（μビットが全てゼロに設定された）０の開始ストリング値が設定され、２μ個のエントリを有するルールベクトルのそれぞれのエントリは"0"に初期化される。ステップ２０１４において、図１０、１５、または１７を参照して説明された方法の１つを使用して、ブール演算式が評価される。ステップ２０１６において、２進の結果（「真」「偽」）が、ストリングの現在の値（０から２μ―１）に対応する位置でルールベクトルに格納される。ステップ２０１８において、ストリング値は、１を加算することによって増加される。ストリングのμビットのそれぞれが０の値を有するとステップ２０３０が判断した場合、ルールベクトルの生成は完了する（ステップ２０４０）。特に、μビットのそれぞれが"1"の値を有するストリングは、ルールベクトルの（２μ―１）番目のエントリに対応するとともに、ステップ２０１８において１を加えることで、ストリングをμ個のゼロにリセットする。それに代えて、ストリングは、ルールベクトルの生成完了を指示するために使用される最重要ビットを伴う（μ＋１）ビットを有してもよい。ルールベクトルは、次いで、実行時にブール演算式の２進値を直接決定し、それによってコンテンツフィルタリングシステムのスループットを増大するのに使用されてもよい。
【０１０２】
総じて、データコンテナのコンテンツをフィルタリングする方法は、その結果、次のステップを備える。
（１）それぞれのフィルタは、コンテンツの選択された記述子および個々の記述子の基準の関数である、フィルタのセット（２進条件）が定義される。
（２）それぞれのルールは、ブール演算式および対応するコンテンツフィルタリング動作を指定する、ルールのセットが定義される。
（３）ブール演算式は、一度に１つ考察される。
（４）フィルタ（２進条件）のμ個のブール演算式を考察する。フィルタは、μビット、μ＞１のストリングとして表される。
（５）ストリングの２μ個の値のそれぞれに対してブール演算式を評価し、それぞれのエントリがストリングの２μ個の値の１つに対応するコンテンツメトリックの状態である、２μ個のエントリからなるルールベクトルを生成する。
（６）全てのブール演算式に対してステップ（５）を繰り返す。
（７）データコンテナを受信およびパースする。
（８）データコンテナのコンテンツにより、ルールを選択するとともに選択されたルールの指定されたμ個のフィルタの値を決定する。
（９）選択されたルールに対応するルールベクトルをインデックス付けするとともに、μビットからなるストリングによって決定されるインデックスに対応するルールベクトル内のエントリの値を決定する。
（１０）エントリの値によりコンテンツフィルタリング動作を実行する。
（１１）新しいルールが受信済みコンテナに適用される必要がある場合、ステップ（８）から（１０）を繰り返す。
【０１０３】
図２１は、Ｌ１、Ｌ２、Ｌ３、およびＬ４と記される４つのフィルタのセット（μ＝４）のブール演算式を指定するルールのためのルールベクトルを説明する。フィルタのセットは、４ビットからなるストリングによって表される。ブール演算式は、'0000'から'1111'まで変化する、ストリングの１６個の値２１１２のそれぞれに対して評価され、ストリングのストリング値ｊ、０≦ｊ＜μに対応して、「真」または「偽」として指示される２進出力２１１４（ｊ）を生成する。
【０１０４】
コンテナの受信に応じて、図２１で考察されたルールの４個のフィルタのセットを決定するために、コンテナコンポーネントのコンテンツが検査される。例えば、４個のフィルタが値"1"、"0"、"0"、および"1"を有する場合、"1001"のストリング２１４０を生成し、ブール演算式の値は２進ルールベクトル２１１４の位置９（２進１００１）から直接読まれる。
【０１０５】
図２１の例示的説明を伴う図２０の方法は、中程度の数の演算子（フィルタ）のブール演算式を採用するルールに適している。例えば、８フィルタを伴うならば、２進ルールベクトル２１１４は比較的短く、２５６ビットを有するに過ぎない。例えば、ブール演算式が１６個以上のオペランドを有する場合、大きな２進ルールベクトルを格納するよりもむしろ、評価が必要とされる都度ブール演算式を評価するのが好ましい。１６を超えるブール演算式当たりのオペランドの数は、あり得ないかもしれない。
【０１０６】
図２２は、フィルタ定義およびルール定義に関連するデータエントリの処理を説明する。処理は、ルールファイルが既に生成されているかどうかを決定すること（ステップ２２２０）から開始する。もしルールファイルが未だ生成されていないのであれば、ステップ２２２２は、当業者に公知である通常の方法を使用してファイルを生成する。次のステップは、ルールファイルにルールを追加する。ルールファイルの投入および更新はステップ２２２４において開始する。ステップ２２２４はルールファイルを開くとともに、新しいルールが符号化されかつルールファイルに追加されるべきかどうかをユーザに指示するように促すステップ２２２６に処理を移動させる。ルールファイルの投入および更新は、ユーザによって停止される（ステップ２２８０）。より多くのルールが追加される場合、ユーザインターフェース５２０（図５、または動作、管理、および維持モジュール２３０（図２））に配置されるデータ取得モジュール（図示せず）は、ルールテンプレートを生成する（ステップ２２３０）。ルールテンプレートは、選択的に多くの形式の１つを取ってもよく、ユーザによって決定されてもよい。ルールテンプレートの形式は、（１）ユーザによって指定されるルールが連続的に適用されるべきかまたは階層型順序により適用されるべきか、および（２）ルールのブール演算式が代数解析的フォーマットで入力されるべきか、ツリーのノードが演算子および個々のオペランドを表すツリー構造フォーマットで入力されるべきか、に依存する。何れの場合においても、データ取得モジュールは、データ入力を容易にする命令を伴うそれぞれのテンプレートを提供してもよい。例えば、データ取得モジュールは、それぞれが演算子およびオペランドのセットを備える単純演算を入力するようにユーザに促し、次いで好ましい表現に進むことによって、ブール演算式の代数形式を構築するようユーザを案内してもよい。構築された表現の有効性は、新しい演算子の追加のそれぞれに伴い検証されてもよい。ブール演算式がツリー構造として提示される場合、データ取得モジュールは、ツリーの選択済みノードに関するデータをユーザが入力すると、剪定および検証されうる、一般的なツリー構造を表示してもよい。
【０１０７】
ステップ２２３２において、任意の適したフォーマットで符号化されたルール識別子が提供される。ステップ２２３４において、ルール動作が指定されるとともに、ステップ２２４０は、ルールに関連付けられたブール演算式を定義する。特定のルールのルール動作は、関連付けられたブール演算式の値により適用される。ステップ２２４０は、ステップ２２４２、２２４４、２２４６、２２４８、２２５０、２２５２、および２２６０を備える。ステップ２２４２は、図３内の参照符号３４０で説明されたフィルタテンプレートを生成する。ステップ２２４４は、考察下のコンテナのコンテンツの多くの記述子の１つであってもよいフィルタのタイプを設定する。ステップ２２４６は、単項演算子、２進演算子、算術演算子、比較演算子、論理演算子、集合演算子、およびユーザ定義演算子からなるメニューから選択されてもよい、フィルタの演算子を設定する。ステップ２２４８は、ステップ２２４４において選択された記述子に関連する目標値または閾値である、フィルタ基準を設定する。ステップ２２５０は、ルールのための新しいフィルタを定義すること、またはこれまでに指定されたフィルタのセットに適用されるブール演算式を定義することに進むことをユーザに促す。他のフィルタを追加するために、ステップ２２５０において全ての関連するフィルタが存在することをユーザが決定するまで、ステップ２２４２から２２４８は再訪される。ステップ２２５２は、上述のフォーマットの１つによりブール演算式を入力するようにユーザに促す。単一のフィルタの値を使用してステップ２２３４において指定されたルール動作が適用されるかどうかを決定する受動演算子にブール演算式を縮小する図９の場合において説明されたように、ルールは１つのフィルタのみに基づいてもよいことに留意する。
【０１０８】
ステップ２２６０は、ステップ２２２４で開かれたルールファイルに丁度構成されたばかりのルールを追加する。こうして構成されたそれぞれのルールのフィルタの値は、受信済みコンテナの処理に応じて「実行時」と決定されるべきであることに留意する。符号化済みルールは、単にフィルタを格納する配列（図示せず）のインデックスであってもよいフィルタ識別子を含む。
【０１０９】
図２２の処理はシステムのインストールまたは更新の間に実行される。符号化されるとともに、ルールファイルに格納されたルールは、「リアルタイム」にアクティブ化される。
【０１１０】
図２３は、複数のコンポーネントを有する受信済みマルチメディアコンテナのコンポーネントの連続フィルタリング処理を説明する。コンテンツフィルタリングのためのコンテナのコンポーネントの処理順序は任意であり、かつユーザによって設定されてもよい。他の動作上の理由によってコンテナ全体に全体的な束縛が課される場合、コンポーネントの処理順序は逐次的（consequential）になる。
【０１１１】
制御部２４０（図２）によって促された場合、コンテンツフィルタリング処理はステップ２３２０で開始する。コンポーネントを処理すべき順序を選択すると、ステップ２３４０は、少なくとも１つのコンポーネントは、ステップ２３５０においてなお処理されるべきかどうかを決定する。そうでなければ、ステップ２３８０は処理を終了するとともに、結果を報告する。ステップ２３６０において、考察下のコンポーネントに適用可能なルールのセットの全てのルールが実行され、かつ他のコンポーネントが処理される必要があるかを決定するためにステップ２３４０が再訪される。モジュールは、コンポーネントに適用された全てのフィルタリング動作を指示する通知を挿入する。
【０１１２】
図２４は、コンテナのコンテンツにルールのセットが適用されるステップ２３６０（図２３）の詳細である。ステップ２３６０は、コンテナのコンポーネントに適用する。ステップ２４２４は、ルールのセット全体が適用されたかどうかを決定する。そうであれば、ステップ２４８０は、ルールのセットの実行から生じる全てのコンテンツフィルタリング動作を指示する通知をコンテナに追加する。そうでなければ、ステップ２４２８は、現在のルールを選択するとともに、選択済みの現在のルールに関連付けられた全ての関連フィルタの定義を取得する。特に、１つのルールが他のルールの選択に影響する場合、ルールが特定の順序で配置されてもよい。それに加えて、ルール間依存は、図２５を参照して説明されるように、単純な配列よりもむしろ形式グラフによって表現されてもよい。
【０１１３】
ステップ２４３０は、選択された現在のルールを実行する。ステップ２４３０は、ステップ２４３２、２４３６、２４４０、および２４４４を含む。ステップ２４３２は、ステップ２４２８において特定された全てのフィルタが、各フィルタの２進値を決定するためにアクティブ化されるかどうかを決定する。フィルタは、それぞれのオペランドにフィルタの演算子が適用されフィルタの２進値を生成する場合に、アクティブ化されるといわれる。現在のルールに関連する全てのフィルタがアクティブ化された場合、ステップ２４３２はステップ２４６０に制御を移す。その他の場合、考察下のフィルタ値を生成するために、ステップ２４３６、２４４０、および２４４４が実施される。ステップ２４３６は、図５および図６を参照点説明されるように、考察下のコンテナコンテンツの特徴に基づいて、演算子およびそれぞれのオペランドの値を取得する。ステップ２４４０は、オペランドに演算子を適用し、かつステップ２４４４は、現在のルールのブール演算式を評価するときに使用するための現在のフィルタの値を記録する。
【０１１４】
ステップ２４６０は、図１０、図１５、または図１７の符号化方法の１つによるブール演算式を取得する。ステップ２４６４は、ブール演算式を評価する。ステップ２４６８は、ステップ２４６４において決定されたようなブール演算式の値に従って、現在のルールに関連するコンテンツフィルタリング動作を考察下のコンテンツのコンテンツに適用してもよい。ステップ２４７０において、もし現在のルールのコンテンツフィルタリング動作がコンテナコンポーネント全体の削除を生じたならば、後続のルールはあっても実行する必要はなく、かつステップ２３６０は削除済みコンポーネントに個々の通知を追加する。もしコンポーネントが編集されなかった、または編集されたが削除されなかったならば、考察下のコンテンツにさらなるルールが適用される必要があるかどうかを決定するためにステップ２４２４は再訪される。添付物が特定の閾値を超過する、または除去不能である悪意のある挿入を添付物が有しているならば、コンポーネント全体は削除されてもよい。
【０１１５】
ルール間依存
一般的に、特定のコンテンツに適用可能なルールは、補完動作、対立動作、または相互排他動作を有しうる。補完動作では、コンテンツフィルタリングの結果は、ルールを実施する順序に依存しなくてもよい。対立動作または相互排他動作では、１つの動作が他に優先する。本願発明の実施形態に従い、ユーザは、グラフを使用してルール間関係を定義するように促されてもよい。
【０１１６】
図２５は、ルール１からルール５と記された５個のルールの階層型配置を示すグラフを説明する。ルールの状態は、本願明細書において、ルールのブール演算式の実行から生じる２進値として定義される。
【０１１７】
ルール１の「真」の状態は、"action 1"とラベル付された動作を生じ、その後にステップ２３６０は完了したと見なされる。"action 1"は、２つの正反対、１つめは、コンポーネント全体が大きすぎるまたは修復不能であるいずれかのためにコンポーネント全体を削除することと、２つめは、コンポーネントが悪意のある挿入を含むには小さすぎるのでコンポーネントは受け入れ可能であると決定することと、のうち１つを指示してもよい。ルール１の「偽」の状態は、コンテンツが１番目のテストを通過したことおよび２番目のルール２のテストに従うべきであることを指示する。
【０１１８】
ルール２の状態「真」は、ルール５の実施が続く"action 2"とラベル付された動作を生ずる。ルール２の「偽」の状態は、コンテンツが２番目のテストを通過するとともに、３番目のルール３のテストに従うべきであること等を指示する。ルール４が「偽」である場合、処理は、コンテンツを編集することなく終了する。処理は、また、（ただ）１つ：｛動作１｝、｛動作２および動作５｝、｛動作３｝、および｛動作５｝を実施した後に終了してもよい。
【０１１９】
図２６は、以下に一覧される、動作管理部２３０によって使用されるモジュールを説明する。各モジュールは、コンピュータ可読格納媒体に格納されたコンピュータ可読命令を備える。（１）特定のプロトコルにより形成されたマルチメディアデータコンテナをサーバユニットが受け入れるように構成する、サーバユニット構成モジュール２６１０、（２）共通タイプのデータコンテナを処理するように個別に構成されたサーバユニットの間で、マルチメディアデータコンテナを均等に分配する、負荷均衡化モジュール２６１２、（３）それぞれのフィルタは、コンテンツ記述子、記述子の基準、および演算子の定義を指定するフィルタのセットの定義をユーザから取得する、フィルタ定義モジュール２６１４、（４）代数文法によりユーザがブール演算式を提供することを可能にする、ブール演算式取得モジュール２６１６、（５）ツリー構造の形式でユーザがブール演算式を提供することを可能にする、ブール演算式取得モジュール２６１８、（６）それぞれのツリーノードが演算子および個々のオペランドセットを表す、一般的なツリー図を編集および選定することによって、ユーザがブール演算式を入力することを可能にする、ブール演算式取得モジュール２６２０、（７）それぞれのルールがフィルタの部分セットのブール演算式およびフィルタリング動作を指定する、コンテンツフィルタリングルールのセットをユーザから取得する、ルール構築モジュール２６２２、（８）ルールに対して指定されたブール演算式の正当性を検証する、ルール検証モジュール２６２４、（９）ルールによって実行される特定のフィルタリング動作が少なくとも１つの後続ルールの実行を防ぐ順序にルールを配置するルール配置モジュール２６２６、（１０）与えられたルールのそれぞれのブール演算式の値を条件とする与えられたルールの後続ルールをユーザが指定することを促すルール間依存モジュール２６２８、（１１）形式グラフの形式（図２５）で、コンテンツフィルタリングルールのセットを提示するルールグラフ定義モジュール２６３０、（１２）通常のロジック最適化技術を使用して、各ルールのブール演算式を最適化して、処理労力を最小化するルール最適化モジュール２６３２、（１３）多くともプリセットされた数のフィルタを有するフィルタの部分セットをそれぞれ指定する特定のルールを選択し、特定のルールのそれぞれについて、フィルタの部分セットの全ての値に対してフィルタの部分セットのブール演算式を評価し、μ＞１をフィルタの部分セット内のフィルタの数として、２μビットからなる配列を生成し、かつメモリデバイス（図２０および２１）においてビットの配列を格納するルール前処理モジュール２６３４、（１４）それぞれのコンテナタイプは、ソースでコンテナが形成されたプロトコルに対応する、コンテナタイプにコンテナを並べ替えするとともに、複数のコンテナの中からの特定の制御部に特定のタイプのコンテナを移動させる、ネットワークインターフェース２１０および動作管理部２３０に関連付けられてもよい、並べ替えモジュール２６３６。並べ替えモジュール２６３６は、ネットワークインターフェース２１０または動作管理部２３０に関連付けられていてもよい。
【０１２０】
図２７は、本願発明の実施形態に従い、トランスコーダ２８０によって使用され、以下に一覧されるモジュールを説明する。各モジュールは、コンピュータ可読格納媒体に格納されたコンピュータ可読命令を備える。
（a）マルチメディアデータコンテナの各コンポーネントのコンテンツを特徴付け、コンテンツ記述子を決定し、演算子を適用し、かつフィルタの状態を決定するモジュール２７１０。（ｂ）ブール演算式の実行時評価およびルールの２進出力の決定のためのモジュール２７２０。ブール演算式は、代数文法またはツリー構造により提示されてもよい。（ｃ）個々のルールのブール演算式のプリセットされた値に従い、与えられたコンテナコンテンツに関するフィルタリング動作を実行するモジュール２７３０。
【０１２１】
図２８は、本願発明の実施形態に従う、トランスコーダサービスモジュール２８１０、プログラムレジストリ２８２０、およびプログラムストレージ２８４０を備えるトランスコーダ２８０を説明する。トランスコーダサービスモジュールは、実行されたときに、プロセッサのコアに、複数の制御部からの特定の制御部から、特定のコンテナおよび編集要求を受信させ、編集要求に関連するプログラムを選択および実行させ、かつ特定の制御部に結果を戻させる、コンピュータ可読格納媒体に格納されたコンピュータ可読命令を備える。プログラムレジストリは、実行されたときに、プロセッサに、個々の機能によりプログラムをオーガナイズさせ、かつ既存のプログラムをそれぞれの新しいプログラムに置換させる、コンピュータ可読命令を備える。
【０１２２】
制御部２４０（図２）は、トランスコーダ２８０に編集要求を転送する。編集要求２８５０の受信に応じて、トランスコーダサービスモジュール２８１０は、編集要求に含まれる情報を使用して、どのプラグインプログラムを実行するかを特定する。トランスコーダサービスモジュール２８１０は、選択されたプラグインプログラムを実行するとともに、結果をそれぞれの制御部２４０に戻す。
【０１２３】
「プラグイン」は、本願明細書において、特定のタスクを実行するように工夫された自己完結モジュールとして定義される。プログラムストレージ２８４０は、コンピュータ可読格納媒体に格納されたコンピュータ可読命令を備え、かつ（a）最初にロードされた常駐プラグイン２８４２、および（ｂ）動的にロードされ、常駐プラグインを置換してもよい外部プラグイン２８４４、の２つのタイプのプラグインを有する。
【０１２４】
常駐プラグインは基本機能を提供し、かつ外部プラグインは追加機能を提供し、コンテンツフィルタリングおよびウィルススキャンは、そのような機能の２つの例である。
【０１２５】
プラグインは、プラグイン登録およびアクセスを管理するプログラムレジストリ２８２０と共に登録される。プログラムレジストリ２８２０は、プラグインの特徴に基づきプラグインをオーガナイズする。プラグインは、プラグイングループ内に配置されてもよい。
【０１２６】
プラグインプログラムは、予め定められた仕方でプラグインの実行をオーガナイズする。プラグインプログラムは、特定の目標を有する予め定められたプラグインのセットに対して実行ロジックを決定する単純命令のセットから構築される。
【０１２７】
プラグインを使用する簡潔なプログラムの命令例は、次に提示される。
【０１２８】
【表１】
2011505611.tif 000003
【０１２９】
左側の数字は、参照を容易にするためにのみ導入されており、かつ必ずしも命令の一部を構成するものではない。
【０１３０】
各"Execute"コマンドは、常に常駐プラグインの名称を参照する引数としてプラウグインの名称を有する。外部プラグインは、選択的であり、かつそれ故に存在する場合にのみ実行されるので、名称によって直接参照されない。各"Execute Group"コマンドは、引数としてプラグイングループの名称を有する。コマンド"Execute Group"は、当該グループに属する全てのプラグインを実行する。
【０１３１】
１行目は、プログラムの全てのエラー時に１４行目にジャンプするとともに、１５から１８行目をもって実行を再開することを記述する。２および３行目は、完了すべき適合のセットアップを実行する。４行目は、必要であれば入力の復号化を実行し、例えば入力がＥメールの場合、Ｅメールは部分コンポーネントに分解される。５行目および９行目は、コンテンツフィルタリングプラグインが属するプラグイングループを実行する。従ってもし存在すれば、５行目を実行開始するとともに９行目で終了する。６行目および７行目は、それぞれ、適合パイプラインの生成に必要なセットアップ動作を実行するため、および適合パイプラインを実際に生成するために使用される。適合パイプラインは、要求された適合を行うために実行されるべき動作のセットを含む。８行目は、適合パイプラインが実行される前に適合パイプラインに影響を与える全ての外部プラグインを実行することを意図する。１０行目は、適合に参加する入力コンポーネントの詳細を提供する。１８行目は、出力コンポーネントに類似のタスクを実行する。そのような情報は、報告、課金、および必ずしも適合機能に関連しない他の目的のために解析されてもよい。１１行目は適合パイプラインの最適化を実行する。１２行目は、適合パイプラインの実行の前に適合パイプラインの解析および最適化を実行する全ての外部プラグインを実行する。１３行目は適合パイプラインを実行する。１５行目は、適合パイプラインの実行結果として生成される出力コンポーネントを特徴付ける。１６行目は、生成された出力コンポーネントに影響を与える全ての外部プラグインを実行する。そして、１７行目は、（詳細な適合レコードを提供するような）適合を完成させる追加のステップを実行する。
【０１３２】
ルールは、"Rule Files"として永続的に格納される。ルールファイルは、２以上の制御部に対して適用されてもよい。ルールファイルを使用したコンテンツフィルタリングは、メディア（コンテンツ）に対して、ルールファイルに含まれるルールを適用する。与えられたルールが「真」の場合、対応する動作が実行される。動作は、（携帯固有のウィルスを含む）ウィルスのような好ましくないコンテンツを除去することと、（ゲームのような）特定のタイプのメディアを除去することと、サードパーティのアプリケーションを使用して（メディアをウィルススキャンするように）メディアに動作を実行することとを含んでもよい。しかしながら、特定のタイプのコンテンツは、処理せずに通過してもよい。
【０１３３】
ルールの定義は、動作管理部２３０（図２）においてなされる。コンテンツ編集（フィルタリングおよび適合）に影響するルールの適用は、トランスコーダ２８０においてなされる。一度、ルールファイルが生成されると、次いで、適合要求が選択するトランスコーダ２８０へ全ての適合要求と共にルールファイルを送信するように、ユーザが、制御部２４０の１つを選択的に構成する。
【０１３４】
動作"Drop"は、メディアがコンテンツ適合処理の出力の一部ではないことを確実にする。動作"scan keep"は、メディアのウィルススキャンをもたらす。これは、アンチウィルスプラグインがインストールされていることを仮定する。適切なプラグインプログラムのアンチウィルスプラグインが実行される実行箇所で、"scan for virus"とマークされる全てのメディアがウィルススキャンされるように、メディアは、実際に"scan for virus"として「マーク」される。
【０１３５】
ルール１と呼ばれるルール例は、以下に与えられる。
【０１３６】
【表２】
2011505611.tif 000004
【０１３７】
ルール１に関連付けられた名称は"MaxFileSize50000"であり、当該ルールに対応する動作は、当該ルールに含まれるフィルタに合致する全てのメディアを除去するための"Drop"である。このルールは２つのフィルタを指定する。第１フィルタは、ファイルのサイズに対して適用される"MaxFileSize"タイプである。フィルタ演算子は、"GreaterThan"であり、値は"50000"である。第２フィルタは、"Family"と呼ばれるタイプによって特徴付けられる。このフィルタは、メディアのファミリー（例えばIMAGE,AUDIO等）に対して適用される。当該フィルタに関連付けられる演算子は"NotEqual"であり、値は"MESSAGE"である。フィルタは、ブール演算子"AND"を使用して結合される。このようにして、ファイルが５００００より大きなサイズを有するとともに、"MESSAGE"ファミリーではないならば、指定された動作が実行される。
【０１３８】
ルール２と呼ばれる他のルールは次に説明される。
【０１３９】
【表３】
2011505611.tif 000005
【０１４０】
ルールの名称は"MaxFileSize25000AndContentTypes"であり、対応する動作は "Drop"である。ルール２の目的は、ルール内に含まれるフィルタに合致する全てのメディアを除去することである。ルール２の構造の詳細な説明は、次に示される。
【０１４１】
次のフィルタのみが指定される。
【０１４２】
１番目のフィルタ：
−フィルタタイプは"MaxFileSize"であり、かつフィルタはファイルのサイズに対して適用され、
−演算子は"Greater Than"であり、
−値は"25000"である。
"AND"ブールフィルタリング演算子を伴う開括弧。
２番目のフィルタ：
−フィルタタイプは"ContentType"であり、かつフィルタはメディアの（mimetypeと等価である）コンテンツタイプに対して適用され、
−演算子は"Equals"であり、
−値は"image/wbmp"である。
３番目のフィルタ：
−ブールフィルタリング演算子"OR"を有し、
−フィルタタイプは"ContentType"であり、かつフィルタはメディアの（mimetypeと等価である）コンテンツタイプに対して適用され、
−演算子は"Equals"であり、
−値は"image/png"である。
閉括弧。
【０１４３】
このように、ファイルが"25000"よりも大きなサイズを有し、かつ（"image/wbmp"に等しいコンテンツタイプ、または"image/png"に等しいコンテンツタイプを有する）ならば、ルールで指定された動作が実行される。動作はメディア、またはメディアが電子メールまたはＭＭＳのようなコンテナであるならばそのいずれかの添付物、に作用する。動作は、"keep"（メディアを適合）、"keep & scan"（適合前にメディアをウィルススキャンする）、"drop"（最終メッセージに添付物を含ませない）、"pass-through"（メディアを適合せず、変更しない）を含んでも良い。
【０１４４】
共通のルールファイル内で定義された実施例ルール３は、次に説明される。
【０１４５】
【表４】
2011505611.tif 000006
【０１４６】
他の実施例において、共通のルールファイルを完成するルール４が提示される。
【０１４７】
【表５】
2011505611.tif 000007
【０１４８】
この場合、共通ルールファイルは、300000より大きいサイズを有する全てのファイルを「ドロップ」するルール３、およびメッセージである全てのメディアにウィルススキャンを実行するルール４、を含む。
【０１４９】
共通のルールファイルが全ての制御部に適用されるとともに、いくつかの制御部"X"がルール１および２を含むルールファイルを定義した場合を考察する。選択されたトランスコーダに適合要求を送信する場合、当該制御部は、ルール１から４を含み、"RuleFile1"と呼ばれるルールファイルを送信する。"RuleFile1"の構造が提示される。
【０１５０】
【表６】
2011505611.tif 000008
【０１５１】
この特徴を提供する実施形態のコンテキストにおいて、ルールファイル内のルール構造を管理するのにＸＭＬが使用される。これによって、ポータビリティおよびスケーラビリティが確保される。ＸＭＬ版のＲｕｌｅＦｉｌｅ１が次に示される。
【０１５２】
【表７】
2011505611.tif 000009
【０１５３】
コンテンツフィルタリングの例は以下に示される。マルチメディアコンテナ：
MMS  特徴:
名前:  mms1.mms
ファミリー:  MESSAGE
サイズ:  171100
コンテンツタイプ:  application/vnd.wap.multipart.mixed
添付物の数:  3
MMS  添付物の特徴:
名前:  image.jpg
ファミリー:  IMAGE
サイズ:  75000
コンテンツタイプ:  image/jpg
名前:  image2.jpg
ファミリー:  IMAGE
サイズ:  45000
コンテンツタイプ:  image/jpg
名前:  image.png
ファミリー:  IMAGE
サイズ:  50000
コンテンツタイプ:  image/png
を考察する。
【０１５４】
コンテンツフィルタリングは、次のステップにより実行される。
ＭＭＳがコンテンツフィルタリングを通る：
−メディアはファミリー"MESSAGE"に属するので、このメディアに対して、ルール"VirusScan"は"true"に評価し、
−メディアは"scan for virus"とマークされる。
添付物image.jpgがコンテンツフィルタリングを通る：
−メディアはメッセージではなく、かつメッセージのサイズは５００００より大きいので、ルール"MaxFileSize50000"は、"true"に評価し、
−メディアは、"Drop"とマークされる。
添付物image2.jpgがコンテンツフィルタリングを通る：
−このメディアに対して、何れのルールも"true"に評価されない。
２番目の添付物image.pngがコンテンツフィルタリングを通る：
−メディアは２５０００より大きいサイズを有し、かつコンテンツタイプは"image/png"なので、ルール"MaxFileSize25000AndContentTypes"は、このメディアに対して"true"に評価し、
−メディアは、"Drop"とマークされる。
【０１５５】
プラグインプログラムは、コンテンツフィルタリングプラグインの実行後に再開する。これにより、アンチウィルスプラグインによる、ＭＭＳメディアおよびそのコンテンツのウィルススキャンを生ずる。適合処理は、次いで開始する。適合およびコンテンツフィルタリングによって、次の形式の出力ＭＭＳが生成される場合を考察する。
【０１５６】
MMS  特徴:
名前:  mms1out.mms
ファミリー:  MESSAGE
サイズ:  25175
コンテンツタイプ:  application/vnd.wap.multipart.mixed
添付物の数:  2
MMS 添付物の特徴:
名前: image2.gif
ファミリー: IMAGE
サイズ: 24000
コンテンツタイプ: image/gif
名前: removal_notification.txt
ファミリー: TEXT
サイズ:  75
コンテンツタイプ:  text/plain
【０１５７】
コンテンツ適合の結果として、"image2.jpg"は、出力"image2.gif"に適合されたと仮定している。"image.jpg"および"image.png"は、「ドロップ」されるとともに、コンテンツフィルタリング動作が適用されて生じる出力ＭＭＳの一部ではないことに留意する。新しいメディア"removal_notification.txt"が出力メッセージに追加される。これは、"image.jpg"および"image.png"の除去から生じる。トランスコーダは、メディアの除去に応じて、説明テキスト通知が添付されるように工夫されている。この通知は、元々ＭＭＳ内にあったメディアのいくつかは適合できず、かつ除去されたことの説明をＭＭＳの受信機に提供するように意図されている。
【０１５８】
トランスコーダ内に、アンチウィルススキャンが外部プラグインの形式で存在する。この場合、プラグインアーキテクチャは、ＭｃＡｆｅｅ（登録商標）、Ｋａｓｐｅｒｓｋｙ（登録商標）のようなサードパーティのアンチウィルススキャンエンジンへのインターフェースを提供するのに使用される。アンチウィルスプラグインの存在は、任意の外部プラグインのように選択的である。プラグインプログラムのレベルでは、アンチウィルスプラグインを実行することを意図するプラグインプログラムは、アンチウィルスプラグインが属するプラグイングループを実行するコマンドを含んでもよい。
【０１５９】
アンチウィルスプラグインの実行は、メディアがウィルススキャンされることを自動的には意味しない。ウィルススキャンは、コンテンツフィルタリングによって"scan for virus"とマークされたメディアにのみ実行される。いくつかのサードパーティのアンチウィルスエンジンは、スタンドアロンライブラリとしてインストールされてもよい。他のサードパーティのアンチウィルスエンジンは、クライアント−サーバとしてインストールされてもよい。アンチウィルスプラグインは、サードパーティのアンチウィルスエンジンに正しく接続されるような仕方で書かれる。どの場合においても、アンチウィルスプラグインは、コンテンツ適合が行われるメディアにウィルススキャンを実行するための、トランスコーダのエントリポイントである。
【０１６０】
このようにして、上述の実施形態においては、次の機能、（１）添付物をチェックするためにメッセージをパースする機能と、（２）コンテンツタイプに従ってフィルタするために添付物を特徴付ける機能と、（３）ユーザ定義された拡張可能な階層型のルールのセットを適応して、メディア要素が好ましいか否かを決定する機能とが提供される。
【０１６１】
編集動作は、メディア添付物がどのように取り扱われるかを決定する。編集動作は、適合処理に添付物を提供することと、適合処理に提供する前に添付物を維持するとともにメディアをウィルススキャンすることと、添付物をドロップすることとの１つ以上を含んでもよい。編集動作は、アンチウィルスおよび進入防止ソフトウェアプログラムを起動することを含んでもよい。
【０１６２】
本願発明の特定の実施形態が詳細に説明されてきたが、説明された実施形態は、例示的であるとともに非限定的であることを意図している。図面内に示され、かつ明細書内で説明された実施形態の様々な変形および修正が、本願発明の範囲を逸脱することなく、より広範な構成で、特許請求の範囲内でなされうる。
【図１】
2011505611.tif 000010
【図２】
2011505611.tif 000011
【図３】
2011505611.tif 000012
【図４】
2011505611.tif 000013
【図５】
2011505611.tif 000014
【図６】
2011505611.tif 000015
【図７】
2011505611.tif 000016
【図８】
2011505611.tif 000017
【図９】
2011505611.tif 000018
【図１０】
2011505611.tif 000019
【図１１】
2011505611.tif 000020
【図１２】
2011505611.tif 000021
【図１３】
2011505611.tif 000022
【図１４】
2011505611.tif 000023
【図１５】
2011505611.tif 000024
【図１６】
2011505611.tif 000025
【図１７】
2011505611.tif 000026
【図１８】
2011505611.tif 000027
【図１９】
2011505611.tif 000028
【図２０】
2011505611.tif 000029
【図２１】
2011505611.tif 000030
【図２２】
2011505611.tif 000031
【図２３】
2011505611.tif 000032
【図２４】
2011505611.tif 000033
【図２５】
2011505611.tif 000034
【図２６】
2011505611.tif 000035
【図２７】
2011505611.tif 000036
【図２８】
2011505611.tif 000037
【手続補正書】
【提出日】平成22年9月6日(2010.9.6)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０１１９
【補正方法】変更
【補正の内容】
【０１１９】
図２６は、以下に一覧される、動作管理部２３０によって使用されるモジュールを説明する。各モジュールは、コンピュータ可読格納媒体に格納されたコンピュータ可読命令を備える。（１）特定のプロトコルにより形成されたマルチメディアデータコンテナをサーバユニットが受け入れるように構成する、サーバユニット構成モジュール２６１０、（２）共通タイプのデータコンテナを処理するように個別に構成されたサーバユニットの間で、マルチメディアデータコンテナを均等に分配する、負荷均衡化モジュール２６１２、（３）それぞれのフィルタは、コンテンツ記述子、記述子の基準、および演算子の定義を指定するフィルタのセットの定義をユーザから取得する、フィルタ定義モジュール２６１４、（４）代数文法によりユーザがブール演算式を提供することを可能にする、ブール演算式取得モジュール２６１６、（５）ツリー構造の形式でユーザがブール演算式を提供することを可能にする、ブール演算式取得モジュール２６１８、（６）それぞれのツリーノードが演算子および個々のオペランドセットを表す、一般的なツリー図を編集および選定することによって、ユーザがブール演算式を入力することを可能にする、ブール演算式取得モジュール２６２０、（７）それぞれのルールがフィルタの部分セットのブール演算式およびフィルタリング動作を指定する、コンテンツフィルタリングルールのセットをユーザから取得する、ルール構築モジュール２６２２、（８）ルールに対して指定されたブール演算式の正当性を検証する、ルール検証モジュール２６２４、（９）ルールによって実行される特定のフィルタリング動作が少なくとも１つの後続ルールの実行を防ぐ順序にルールを配置するルール配置モジュール２６２６、（１０）与えられたルールのそれぞれのブール演算式の値を条件とする与えられたルールの後続ルールをユーザが指定することを促すルール間依存モジュール２６２８、（１１）形式グラフの形式（図２５）で、コンテンツフィルタリングルールのセットを提示するルールグラフ定義モジュール２６３０、（１２）通常のロジック最適化技術を使用して、各ルールのブール演算式を最適化して、処理労力を最小化するルール最適化モジュール２６３２、（１３）多くともプリセットされた数のフィルタを有するフィルタの部分セットをそれぞれ指定する特定のルールを選択し、特定のルールのそれぞれについて、フィルタの部分セットの全ての値に対してフィルタの部分セットのブール演算式を評価し、μ＞１をフィルタの部分セット内のフィルタの数として、２μビットからなる配列を生成し、かつメモリデバイス（図２０および２１）においてビットの配列を格納するルール前処理モジュール２６３４、（１４）それぞれのコンテナタイプは、ソースでコンテナが形成されたプロトコルに対応する、コンテナタイプにコンテナを並べ替えするとともに、複数の制御部の中からの特定の制御部に特定のタイプのコンテナを移動させる、ネットワークインターフェース２１０および動作管理部２３０に関連付けられてもよい、並べ替えモジュール２６３６。並べ替えモジュール２６３６は、ネットワークインターフェース２１０または動作管理部２３０に関連付けられていてもよい。
【国際調査報告】
2011505611.tif 000038
2011505611.tif 000039
2011505611.tif 000040