專利名稱:用于基于規(guī)則的內(nèi)容過濾的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及多媒體消息服務(wù),并且更具體地涉及用于內(nèi)容過濾的方法和系統(tǒng)。
背景技術(shù):
新興多用途電信服務(wù)使得通信設(shè)備能夠交換每個(gè)具有多個(gè)不同類型的組件的數(shù) 據(jù)容器。例如,組件可以包括表示文本、圖像、音頻信號或視頻信號的數(shù)據(jù)。用于處理這樣 的服務(wù)的復(fù)雜終端設(shè)備正在快速演進(jìn),導(dǎo)致通過相對短時(shí)間分隔的多“代”終端設(shè)備。由于多代終端設(shè)備的共存,所以出現(xiàn)了非兼容性問題。傳送數(shù)據(jù)容器的終端設(shè)備 通常不知道接收終端設(shè)備的特點(diǎn)和能力(或在多播通信的情況下的接收終端設(shè)備)。這要 求提供用于確保正確地完整檢測數(shù)據(jù)容器的內(nèi)容或者正確地檢測其特定組件以及通知接 收方終端設(shè)備對原始容器做出的任何改變的設(shè)施,如在2008年9月25日提交的序列號為 12/238,390的共同待決的美國申請,通過引用的方式將其內(nèi)容合并于此。除了兼容性問題之外,傳送每個(gè)可選地具有各自的附件的多個(gè)組件進(jìn)一步增加了 遭受諸如病毒的惡意的插入。容器遭受侵入需要提供一種內(nèi)容過濾設(shè)施。因此,需要一種用于在提供多用途服務(wù)的網(wǎng)絡(luò)中提供除了內(nèi)容適配之外的內(nèi)容過 濾的設(shè)施。
發(fā)明內(nèi)容
本發(fā)明的一個(gè)目的是在提供多媒體服務(wù)的網(wǎng)絡(luò)中提供內(nèi)容過濾設(shè)施。另一目的是 將內(nèi)容過濾設(shè)施與現(xiàn)有內(nèi)容適配設(shè)施合并,以便實(shí)現(xiàn)全面、有效和經(jīng)濟(jì)的系統(tǒng)。根據(jù)本發(fā)明的另一方面,提供了一種用于編輯容器的內(nèi)容的引擎,所述引擎包 括網(wǎng)絡(luò)接口,用于從客戶端接收所述容器并且將每個(gè)容器導(dǎo)向用于標(biāo)識和解析所述 容器的多個(gè)控制器當(dāng)中的各自的控制器;存儲設(shè)備,用于將布爾變量的陣列存儲到所述容器的子集,根據(jù)可應(yīng)用于表征所述內(nèi)容的第一運(yùn) 算數(shù)和指定所述第一運(yùn)算數(shù)的目標(biāo)值的第二運(yùn)算數(shù)來確定每個(gè)所述布爾變量;所述引擎進(jìn)一步包括
操作管理器,包括存儲在用于執(zhí)行操作、管理和維護(hù)功能的計(jì)算機(jī)可讀存儲介質(zhì) 中的計(jì)算機(jī)可讀指令;圖形用戶接口,包括存儲在計(jì)算機(jī)可讀存儲介質(zhì)中的計(jì)算機(jī)可讀指令,耦合到用 于輸入編碼規(guī)則的所述陣列和用于向每個(gè)控制器分配所述代碼轉(zhuǎn)換器的各自的子集的所 述操作管理器;以及
配置存儲設(shè)備,用于存儲分配到每個(gè)控制器的代碼轉(zhuǎn)換器的標(biāo)識符。引擎進(jìn)一步包括分類模塊,包括存儲在計(jì)算機(jī)可讀存儲介質(zhì)中的計(jì)算機(jī)可讀指 令,耦合到所述網(wǎng)絡(luò)接口,用于將容器分類成容器類型,每個(gè)容器類型對應(yīng)于規(guī)劃容器所根 據(jù)的協(xié)議,并且將特定類型的容器從所述多個(gè)容器當(dāng)中導(dǎo)向特定控制器。引擎進(jìn)一步包括控制器負(fù)載平衡模塊,包括存儲在計(jì)算機(jī)可讀存儲介質(zhì)中的計(jì)算 機(jī)可讀指令,耦合到所述操作管理器,所述控制器負(fù)載平衡模塊包括用于根據(jù)所述容器的 時(shí)變流率將代碼轉(zhuǎn)換器動態(tài)地分配到控制器的部件。引擎進(jìn)一步包括代碼轉(zhuǎn)換器負(fù)載平衡模塊,耦合到所述每個(gè)控制器,用于在分配 到所述每個(gè)控制器的代碼轉(zhuǎn)換器當(dāng)中公平地分配容器編輯請求。引擎進(jìn)一步包括刀片服務(wù)器,其托管所述每個(gè)控制器以及所述代碼轉(zhuǎn)換器的所述 各自的子集,所述刀片服務(wù)器包括處理器,其具有多個(gè)核心,每個(gè)核心排他性地分配到所述代碼轉(zhuǎn)換器的子集的代 碼轉(zhuǎn)換器;多個(gè)存儲設(shè)備;輸入接口 ;以及輸出接口。引擎進(jìn)一步包括代碼轉(zhuǎn)換器服務(wù)模塊,耦合到所述多個(gè)代碼轉(zhuǎn)換器的每個(gè)代碼轉(zhuǎn)換器,用于從外 部源接收新程序;程序存儲介質(zhì),用于存儲可接入所述每個(gè)代碼轉(zhuǎn)換器的多個(gè)程序;以及程序寄存器,包括存儲在計(jì)算機(jī)可讀存儲介質(zhì)中的計(jì)算機(jī)可讀指令,用于標(biāo)識每 個(gè)新程序的功能以及根據(jù)各自的功能組織程序。在上述引擎中,代碼轉(zhuǎn)換器服務(wù)模塊進(jìn)一步包括存儲在計(jì)算機(jī)可讀存儲介質(zhì)中的 計(jì)算機(jī)可讀指令,當(dāng)執(zhí)行所述計(jì)算機(jī)可讀指令時(shí),引起所述處理器的核心從所述多個(gè)控制器中的特定控制器接收特定容器和編輯請求;選擇和執(zhí)行與所述編輯請求有關(guān)的程序;以及將結(jié)果返回所述特定控制器。所述程序寄存器包括計(jì)算機(jī)可讀指令,當(dāng)執(zhí)行所述計(jì)算機(jī)可讀指令時(shí),引起所述 處理器的核心根據(jù)各自的功能來組織程序;以及用各自的新程序來取代現(xiàn)有程序。在上述引擎中,所述程序存儲介質(zhì)包括存儲在計(jì)算機(jī)可讀存儲介質(zhì)中的駐留程序;以及存儲在計(jì)算機(jī)可讀存儲介質(zhì)中的動態(tài)加載的外部程序。
根據(jù)本發(fā)明的另一方面,提供了一種過濾具有多個(gè)組件的數(shù)據(jù)容器的方法,包 括選擇組件;確定表征所述組件的內(nèi)容的多個(gè)二元條件;規(guī)劃布爾表達(dá)的集合,每個(gè)布爾表達(dá)包括布爾運(yùn)算符和從所述二元條件的集合中 選擇的至少兩個(gè)運(yùn)算數(shù);執(zhí)行所述布爾表達(dá)的集合中的每個(gè)布爾表達(dá),以確定內(nèi)容指示符的集合,所述指 示符與所述布爾表達(dá)具有一對一的對應(yīng)關(guān)系;以及執(zhí)行與所述指示符中的每個(gè)相對應(yīng)的所述內(nèi)容有關(guān)的編輯功能。所述方法進(jìn)一步包括基于單個(gè)二元條件執(zhí)行進(jìn)一步的編輯功能。
所述方法進(jìn)一步包括以由于執(zhí)行布爾表達(dá)而產(chǎn)生的指示符有條件地排除至少一 個(gè)后續(xù)布爾表達(dá)的執(zhí)行所根據(jù)的順序來布置所述布爾表達(dá)。如上所述的方法進(jìn)一步包括根據(jù)以下來確定所述布爾表達(dá)所述內(nèi)容的指定描述符;以及預(yù)設(shè)與所述描述符相對應(yīng)的準(zhǔn)則。在上述方法中,執(zhí)行所述編輯功能的步驟包括以下中的一個(gè)掃描所述內(nèi)容以檢測惡意插入,并且移除檢測到的惡意插入;以及掃描所述內(nèi)容以檢測惡意插入,并且一旦檢測到惡意插入,則刪除所述內(nèi)容。根據(jù)本發(fā)明的又一方面,提供了一種使用計(jì)算設(shè)備來編輯內(nèi)容的方法,包括規(guī)劃所述內(nèi)容的描述符的集合;指定與所述描述符相對應(yīng)的準(zhǔn)則的集合;執(zhí)行運(yùn)算符的集合;定義布爾變量的集合,每個(gè)布爾變量是將來自所述運(yùn)算符的集合當(dāng)中的運(yùn)算符應(yīng) 用到第一運(yùn)算數(shù)和第二運(yùn)算數(shù)的結(jié)果,其中所述第一運(yùn)算數(shù)是從所述描述符的集合當(dāng)中選 擇的描述符,并且所述第二運(yùn)算數(shù)是從所述準(zhǔn)則的集合當(dāng)中選擇的準(zhǔn)則;以及定義規(guī)則的集合,每個(gè)規(guī)則執(zhí)行所述布爾變量的子集的從布爾表達(dá)的集合當(dāng)中選 擇的布爾表達(dá),并且根據(jù)所述執(zhí)行的結(jié)果來執(zhí)行從與所述內(nèi)容相關(guān)的動作的集合當(dāng)中選擇 的動作。在上述方法中,描述符的集合包括以下中的至少一個(gè)所述內(nèi)容的大??;來自預(yù) 定義的內(nèi)容族當(dāng)中的內(nèi)容族;編碼方法;以及優(yōu)先級指定。在上述方法中,所述運(yùn)算符的集合包括以下中的一個(gè)或多個(gè)一元運(yùn)算符;二元 運(yùn)算符;算術(shù)運(yùn)算符;比較運(yùn)算符;邏輯運(yùn)算符;集合運(yùn)算符;以及用戶定義的運(yùn)算符。所述方法進(jìn)一步包括通過包括存儲在所述計(jì)算設(shè)備的存儲器中的計(jì)算機(jī)可讀指 令的圖形用戶接口來輸入所述描述符的集合、所述準(zhǔn)則的集合、所述運(yùn)算符的集合以及所 述布爾表達(dá)的集合。方便地,所述方法進(jìn)一步包括選擇所述內(nèi)容以包括所述數(shù)據(jù)容器的一部分。根據(jù)本發(fā)明的另一方面,提供了一種用于過濾多媒體數(shù)據(jù)容器的內(nèi)容的系統(tǒng),包 括網(wǎng)絡(luò)接口,用于從網(wǎng)絡(luò)接收所述多媒體數(shù)據(jù)容器;以及
多個(gè)服務(wù)器單元,每個(gè)服務(wù)器單元包括處理器的集合和存儲設(shè)備的集合,在其上 安裝了 過濾器定義模塊,具有存儲在計(jì)算機(jī)可讀存儲介質(zhì)中的計(jì)算機(jī)可讀指令,用于從 用戶獲取過濾器的集合的定義,每個(gè)過濾器指定內(nèi)容描述符的定義、描述符準(zhǔn)則以及運(yùn)算 符;規(guī)則構(gòu)造模塊,具有存儲在計(jì)算機(jī)可讀存儲介質(zhì)中的計(jì)算機(jī)可讀指令,用于從所 述用戶獲取內(nèi)容過濾規(guī)則的集合,每個(gè)規(guī)則指定所述過濾器的子集和過濾動作的布爾表 達(dá);用于表征多媒體數(shù)據(jù)容器的每個(gè)組件的內(nèi)容,確定所述內(nèi)容描述符,應(yīng)用所述運(yùn) 算符并且確定所述每個(gè)過濾器的狀態(tài)的模塊;
用于確定每個(gè)所述規(guī)則的二元輸出的模塊;以及用于執(zhí)行與服從所述二元輸出的預(yù)設(shè)值的所述內(nèi)容相關(guān)的過濾動作的模塊。所述系統(tǒng)進(jìn)一步包括以下模塊中的至少一個(gè),每個(gè)模塊包括存儲在計(jì)算機(jī)可讀存 儲介質(zhì)中的計(jì)算機(jī)可讀指令(1)用于配置服務(wù)器單元以接受根據(jù)從已知協(xié)議的集合中選擇的任何協(xié)議形成的 多媒體數(shù)據(jù)容器的模塊;(2)用于在同樣配置的服務(wù)器單元當(dāng)中公平地分發(fā)多媒體數(shù)據(jù)容器的模塊;(3)用于使得用戶能夠根據(jù)代數(shù)句法來提供布爾表達(dá)的模塊;(4)用于使得用戶能夠以樹結(jié)構(gòu)的形式來提供布爾表達(dá)的模塊;(5)用于使得用戶能夠通過編輯和修整樹的圖形來輸入布爾表達(dá)的模塊,該樹的 每個(gè)節(jié)點(diǎn)表示運(yùn)算符和各自的運(yùn)算數(shù)的集合;(6)用于驗(yàn)證布爾表達(dá)的正確性的模塊;(7)用于以由規(guī)則執(zhí)行的特定過濾動作排除至少一個(gè)后續(xù)規(guī)則的執(zhí)行所根據(jù)的順 序來布置規(guī)則的模塊;(8)用于提示用戶指定在布爾表達(dá)的值上的規(guī)則條件句中的至少一個(gè)的連續(xù)規(guī)則 的模塊;(9)用于以形式圖表的形式來呈現(xiàn)內(nèi)容過濾的集合的模塊;以及(10)用于優(yōu)化每個(gè)規(guī)則的布爾表達(dá)的模塊。所述系統(tǒng)進(jìn)一步包括用于執(zhí)行以下操作的模塊,包括存儲在計(jì)算機(jī)可讀存儲介質(zhì) 中的計(jì)算機(jī)可讀指令選擇特定規(guī)則,每個(gè)指定包括最多預(yù)設(shè)數(shù)目的過濾器的過濾器子集; 對于特定規(guī)則中的每個(gè),估計(jì)用于過濾器子集的所有的值的過濾器子集的布爾表達(dá),以產(chǎn) 生作為在過濾器子集中的過濾器的數(shù)目的2μ個(gè)比特的陣列,其中μ >1;以及在存儲設(shè) 備中存儲所述比特的陣列。根據(jù)另一方面,本發(fā)明提供了一種過濾數(shù)據(jù)容器的內(nèi)容的方法。所述方法包括指 定二元條件的集合,指定運(yùn)算符的集合,形成葉向量以及形成節(jié)點(diǎn)向量。二元條件的集合表征內(nèi)容。運(yùn)算符中的一個(gè)被指定空后繼者,而每個(gè)其它運(yùn)算符 被指定來自運(yùn)算符的集合內(nèi)的后繼者。葉向量包括Ν> 1個(gè)葉記錄。每個(gè)葉記錄具有來自 運(yùn)算符的集合當(dāng)中的葉運(yùn)算符以及二元條件的各自的子集。節(jié)點(diǎn)向量具有N個(gè)節(jié)點(diǎn)記錄, 每個(gè)具有節(jié)點(diǎn)運(yùn)算符字段和節(jié)點(diǎn)狀態(tài)字段。
每個(gè)葉運(yùn)算符被應(yīng)用于各自的二元條件,并且結(jié)果被放置在節(jié)點(diǎn)記錄的節(jié)點(diǎn)狀態(tài) 字段中。然后,每個(gè)葉運(yùn)算符的后繼者被放置在節(jié)點(diǎn)記錄的節(jié)點(diǎn)運(yùn)算符字段中。在處理了每個(gè)葉記錄之后,處理了節(jié)點(diǎn)向量。具有共同運(yùn)算符的節(jié)點(diǎn)記錄被標(biāo)識 并且被組合的記錄取代。共同運(yùn)算符被應(yīng)用于所標(biāo)識的節(jié)點(diǎn)記錄的節(jié)點(diǎn)狀態(tài)字段的條目, 并且結(jié)果狀態(tài)被放置在所組合的記錄的節(jié)點(diǎn)狀態(tài)字段中。共同運(yùn)算符的后繼者被放置在所 組合的記錄的節(jié)點(diǎn)運(yùn)算符字段中。內(nèi)容索引被確定為應(yīng)用服從共同運(yùn)算符的后繼者是空后繼者的條件的共同運(yùn)算 符的結(jié)果狀態(tài)。替代地,所述方法可以在組合了共同運(yùn)算符的節(jié)點(diǎn)記錄之后保持跟蹤節(jié)點(diǎn) 向量的節(jié)點(diǎn)記錄的數(shù)目,并且內(nèi)容索引被確定為與等于一的節(jié)點(diǎn)記錄的數(shù)目相對應(yīng)的結(jié)果 狀態(tài)。所述方法進(jìn)一步包括根據(jù)內(nèi)容索引的值來執(zhí)行指定編輯動作的步驟。根據(jù)進(jìn)一步的方面,本發(fā)明提供了一種基于預(yù)定決定向量來過濾數(shù)據(jù)容器的內(nèi)容 的方法。所述方法包括定義二元條件的集合,其中每個(gè)二元條件是選擇的內(nèi)容的描述符以 及描述符的各自準(zhǔn)則;定義布爾表達(dá)的集合以及相對應(yīng)的內(nèi)容過濾動作;選擇表示為μ比 特,μ > ι的字符串的指定的μ個(gè)二元條件的布爾表達(dá);以及對于該字符串的2μ個(gè)值中 的每個(gè)估計(jì)布爾表達(dá),以產(chǎn)生2μ個(gè)條目的決定向量,每個(gè)條目是與該字符串的2μ個(gè)值中的 一個(gè)相對應(yīng)的內(nèi)容度量的狀態(tài)。一旦接收到數(shù)據(jù)容器,根據(jù)數(shù)據(jù)容器的內(nèi)容來確定所指定的μ個(gè)二元條件的值。 然后使用μ比特的結(jié)果字符串的值來對決定向量編索引,以獲取確定是否需要應(yīng)用內(nèi)容 過濾動作的布爾表達(dá)的值。布爾表達(dá)可以以具有布爾運(yùn)算符、運(yùn)算數(shù)和分隔符的代數(shù)格式來獲取。然后,通過 檢查布爾表達(dá)來估計(jì)布爾表達(dá)以標(biāo)識簡單模式,該簡單模式封閉在兩個(gè)分隔符之間的布爾 運(yùn)算符和兩個(gè)運(yùn)算數(shù)。只要發(fā)現(xiàn)了簡單模式,就將布爾運(yùn)算符以及兩個(gè)分隔符應(yīng)用到兩個(gè) 運(yùn)算數(shù)以確定模式的二元值以及簡單模式,用二元值來取代布爾運(yùn)算符。檢查布爾表達(dá)以 檢測簡單模式的過程被重復(fù),直到布爾表達(dá)被減少到確定是否應(yīng)用編輯動作的單個(gè)二元值 (“真”或“假”)。替代地,布爾表達(dá)可以以具有多個(gè)節(jié)點(diǎn)的樹結(jié)構(gòu)的形式來獲取。然后,接著估計(jì)節(jié) 點(diǎn)來估計(jì)布爾表達(dá)。具有多個(gè)記錄的樹模板被創(chuàng)建。每個(gè)記錄對應(yīng)于各自的節(jié)點(diǎn),并且具有 用于第一運(yùn)算數(shù)、第二運(yùn)算數(shù)、當(dāng)前運(yùn)算符和后繼者記錄的四個(gè)字段。從第一記錄開始并且 后續(xù)繼續(xù)進(jìn)行到最后的記錄,當(dāng)前記錄的運(yùn)算數(shù)被應(yīng)用于從字符串的當(dāng)前值確定的各自的 二元值,以產(chǎn)生新的二元值。如果當(dāng)前記錄是最后的記錄,則新的二元值是布爾表達(dá)的值。 如果當(dāng)前記錄是中間的記錄,則新的二元值被放置在后繼者記錄的運(yùn)算數(shù)字段中。
現(xiàn)在將參考附圖舉例描述本發(fā)明的實(shí)施例,在附圖中圖1圖示了根據(jù)本發(fā)明的實(shí)施例的用于過濾和適配通過網(wǎng)絡(luò)傳送的數(shù)據(jù)容器的 網(wǎng)絡(luò)支持服務(wù)控制器和編輯引擎;圖2圖示了根據(jù)本發(fā)明的實(shí)施例的包括控制器和代碼轉(zhuǎn)換器的編輯引擎;圖3圖示了根據(jù)本發(fā)明的實(shí)施例的多媒 體容器、容器組件的內(nèi)容描述符和內(nèi)容過 濾器;
圖4圖示了根據(jù)本發(fā)明的實(shí)施例的與可應(yīng)用于數(shù)據(jù)容器的規(guī)則的集合相關(guān)聯(lián)的 布爾表達(dá)的代數(shù)形式;圖5圖示了根據(jù)本發(fā)明的實(shí)施例的內(nèi)容過濾過程的基本組件;圖6圖示了根據(jù)本發(fā)明的實(shí)施例的導(dǎo)出容器內(nèi)容的描述符的過程;圖7圖示了根據(jù)本發(fā)明的實(shí)施例的用于內(nèi)容過濾的系統(tǒng);圖8圖示了根據(jù)本發(fā)明的實(shí)施例的與圖7的系統(tǒng)類似的適于具有多個(gè)組件的容器 的系統(tǒng);圖9詳述了根據(jù)本發(fā)明的實(shí)施例的內(nèi)容過濾過程;圖10圖示了根據(jù)本發(fā)明的實(shí)施例的估計(jì)規(guī)則的布爾表達(dá)的方法;圖11圖示了根據(jù)本發(fā)明的實(shí)施例的用于編碼過濾規(guī)則的第一示例性規(guī)則樹結(jié) 構(gòu);圖12圖示了用于編碼圖11的規(guī)則樹結(jié)構(gòu)的第一數(shù)據(jù)結(jié)構(gòu);圖13圖示了根據(jù)本發(fā)明的實(shí)施例的用于編碼過濾規(guī)則的第二示例性規(guī)則樹結(jié) 構(gòu);圖14圖示了應(yīng)用于圖13的第二示例性規(guī)則樹的圖12的第一數(shù)據(jù)結(jié)構(gòu);圖15圖示了根據(jù)本發(fā)明的實(shí)施例的應(yīng)用圖12和圖14例示的第一數(shù)據(jù)結(jié)構(gòu)的過 程;圖16圖示了根據(jù)本發(fā)明的實(shí)施例的用于編碼規(guī)則樹的第二數(shù)據(jù)結(jié)構(gòu);圖17圖示了根據(jù)本發(fā)明的實(shí)施例的應(yīng)用圖16中例示的第二數(shù)據(jù)結(jié)構(gòu)的過程;圖18圖示了根據(jù)本發(fā)明的實(shí)施例的使用規(guī)則樹來確定規(guī)則結(jié)果的過程;圖19詳述了根據(jù)本發(fā)明的實(shí)施例的形成與圖18的過程相關(guān)聯(lián)的葉向量的步驟;圖20圖示了根據(jù)本發(fā)明的實(shí)施例的預(yù)處理用于快速運(yùn)行時(shí)間規(guī)則執(zhí)行的布爾表 達(dá)的方法;圖21圖示了圖20的方法的示例性實(shí)現(xiàn);圖22圖示了根據(jù)本發(fā)明的實(shí)施例的與過濾器定義和規(guī)則定義相關(guān)的數(shù)據(jù)的處 理;圖23圖示了順序過濾多媒體容器的組件的過程;圖24圖示了根據(jù)本發(fā)明的實(shí)施例的應(yīng)用用于內(nèi)容過濾的多個(gè)規(guī)則的過程;圖25圖示了根據(jù)本發(fā)明的實(shí)施例的圖示確定內(nèi)容過濾動作的規(guī)則的互相依賴性 的圖;圖26圖示了根據(jù)本發(fā)明的實(shí)施例的圖2的引擎的操作管理器的模塊;圖27圖示了根據(jù)本發(fā)明的實(shí)施例的圖2的代碼轉(zhuǎn)換器的模塊;以及圖28圖示了根據(jù)本發(fā)明的實(shí)施例的圖2的引擎的代碼轉(zhuǎn)換器的模塊。
具體實(shí)施例方式術(shù)語多媒體服務(wù)(MMS)該術(shù)語用于通俗地表示多內(nèi)容通信服務(wù),其中通過網(wǎng)絡(luò)在終 端當(dāng)中交換諸如文本、音頻信號、視頻信號、圖像、呈現(xiàn)等的不同形式的信息內(nèi)容。從一個(gè)終 端傳輸?shù)搅硪唤K端的編碼信息通常被布置在單個(gè)數(shù)據(jù)流中,并且時(shí)間交織段對應(yīng)于不同的信息內(nèi)容。容器容器是存儲在計(jì)算機(jī)可讀介質(zhì)上并且通過計(jì)算機(jī)網(wǎng)絡(luò)傳送的計(jì)算機(jī)文件。 容器被構(gòu)造成包含各種類型的數(shù)據(jù)。容器可以支持具有同步信息的多個(gè)文本、音頻和視頻 流以使得能夠協(xié)調(diào)回放各種流。容器組件容器包括分段,每個(gè)分段包括以特定形式編碼的數(shù)據(jù),諸如文本、音頻 數(shù)據(jù)、圖像數(shù)據(jù)或視頻數(shù)據(jù)。術(shù)語“容器組件”指的是在一個(gè)分段中的數(shù)據(jù)。容器組件可以 被簡稱為“組件”。在多媒體消息系統(tǒng)中,組件也被稱為“媒體”。容器篩選“容器篩選”指的是檢查容器的內(nèi)容的過程,包括所有組件,以確保沒有 任何不想要的插入,尤其是有害的插入。容器適配“容器適配”指的是修改發(fā)現(xiàn)的容器組件的形式以與各自的接收器的解 碼能力兼容的過程。如果呈現(xiàn)容器組件以適合接收器不可行,則可以刪除容器組件。容器 適配過程是接收器特定的,而容器篩選的過程獨(dú)立于希望接收器的類型。容器編輯術(shù)語“容器編輯”指的是容器篩選和容器適配的組合過程。容器調(diào)節(jié)該術(shù)語可以與“容器編輯”同義地使用。然而,即使當(dāng)沒有修改容器時(shí), 容器調(diào)節(jié)也向容器附加了適當(dāng)?shù)耐ㄖ?。代碼轉(zhuǎn)換器代碼轉(zhuǎn)換器是執(zhí)行編碼信息的直接數(shù)字到數(shù)字轉(zhuǎn)換的設(shè)備,以使得 能夠以適合特定接收器的不同格式來再現(xiàn)一個(gè)格式的信息記錄。圖1圖示了提供從傳送設(shè)備120到接收設(shè)備160的路徑的網(wǎng)絡(luò)140,在下文中稱為 傳送器120和接收器160。除了許多不同類型的其它硬件終端設(shè)備,網(wǎng)絡(luò)140支持服務(wù)控 制器103和編輯引擎106。傳送器120發(fā)送容器到接收器160,其中容器可以包括諸如編碼 文本、音頻信號、靜止圖像、動畫(圖像的快速顯示)以及視頻信號的不同內(nèi)容類型的數(shù)據(jù)。 容器可以被導(dǎo)向服務(wù)控制器103,其進(jìn)而將容器導(dǎo)向用于檢查該容器的編輯引擎106以及 在需要時(shí)編輯該容器的內(nèi)容。編輯過程包括數(shù)據(jù)篩選以確保沒有任何不想要的插入,尤其 是有害插入,滿足具體要求的內(nèi)容修改,以及與各自接收器的解碼能力兼容的內(nèi)容適配。圖2圖示了編輯引擎106。網(wǎng)絡(luò)接口 210通過鏈路204從客戶端接收容器。容器 被導(dǎo)向到分別標(biāo)識為240(1),240(2),...,240(m)的m > 1個(gè)控制器240中的一個(gè)。控制 器204可以被實(shí)現(xiàn)為不同的硬件實(shí)體或?qū)⑷缦滤龅墓蚕碇鞴芏鄠€(gè)代碼轉(zhuǎn)換器280的計(jì)算 設(shè)備。控制器240是協(xié)議特定的,每個(gè)被編程以處理根據(jù)相應(yīng)協(xié)議形成的容器。處理特定協(xié) 議的控制器被認(rèn)為具有相同控制器類型??刂破骺梢苑纸M成控制器組,每個(gè)控制器組處理 根據(jù)相同協(xié)議規(guī)劃的容器。編輯引擎106可以具有不同類型的控制器。然而,整個(gè)編輯引 擎106可以被配置成具有相同類型的控制器。編輯引擎106也可以具有負(fù)載平衡模塊290。編輯引擎106包括多個(gè)代碼轉(zhuǎn)換器280,分別標(biāo)識為280 (1) >280(2),... , 280 (n)。 代碼轉(zhuǎn)換器280的主要功能是執(zhí)行編碼信息的直接數(shù)字到數(shù)字轉(zhuǎn)換,以使得能夠以適于特 定接收器的不同格式來再現(xiàn)一個(gè)格式的信息記錄。然而,代碼轉(zhuǎn)換器還可以執(zhí)行內(nèi)容過濾 以及內(nèi)容適配的過程。多個(gè)選擇的代碼轉(zhuǎn)換器280被分配到每個(gè)控制器240,一起形成控 制配件。例如,在圖2中,控制器240(1)和代碼轉(zhuǎn)換器280(1)至280(5)形成了安裝在各 自的計(jì)算設(shè)備上的一個(gè)控制配件??刂破?40 (m)和代碼轉(zhuǎn)換器280 (n-2)至280 (n)形成 了安裝在另一計(jì)算設(shè)備上的另一控制配件??刂婆浼?yōu)選地安裝在也被稱為“刀片服務(wù)器” 服務(wù)器單元上,它是支持處理器和存儲設(shè)備的單個(gè)電路板。
處理器220托管網(wǎng)絡(luò)接口 210,并且操作管理器230還被稱為操作控制器。網(wǎng)絡(luò)接 口 210從通信地耦合到網(wǎng)絡(luò)140的客戶端接收容器(圖1)。操作管理器230包括存儲在計(jì) 算機(jī)可讀存儲介質(zhì)中的計(jì)算機(jī)可讀指令,用于執(zhí)行操作、管理和維護(hù)功能。服務(wù)控制器103可以接收容器,并且向編輯引擎106中的一個(gè)發(fā)送容器編輯請求。處理器220還托管圖形用戶接口(未示出),它包括存儲在計(jì)算機(jī)可讀存儲介質(zhì)中 的計(jì)算機(jī)可讀指令,耦合到操作管理器230,用于輸入編碼的規(guī)則的陣列并且用于向每個(gè)控 制器240分配代碼轉(zhuǎn)換器的各自的子集。配置存儲設(shè)備260存儲分配到每個(gè)控制器的代碼 轉(zhuǎn)換器的標(biāo)識符。控制內(nèi)容過濾過程的規(guī)則可以被存儲為存儲在每個(gè)代碼轉(zhuǎn)換器280可訪問的規(guī) 則存儲器225中的共同規(guī)則文件。替代地,托管控制器和關(guān)聯(lián)代碼轉(zhuǎn)換器的每個(gè)計(jì)算設(shè)備 (服務(wù)器單元)可以存儲規(guī)則文件的相關(guān)子集。圖3圖示了具有分別標(biāo)識為320(1) ,320(2)等的多個(gè)組件320的容器。組件320可 以包含文本、音頻記錄、編碼圖像、視頻記錄和任何其它內(nèi)容類型。使用分別標(biāo)識為332 (1)、 332(2)、...332 (j)和332 (D)的描述符332的集合330來表征組件的內(nèi)容。D是描述符的 總數(shù)目。根據(jù)諸如內(nèi)容類型、標(biāo)識符(名稱)、擴(kuò)展、數(shù)字簽名、密碼功能、優(yōu)先級和文件大小 的若干屬性來定義內(nèi)容描述符。因?yàn)閮?nèi)容過濾要求隨著多媒體電信的演進(jìn)技術(shù)而變化,所 以可以添加或刪除描述符。根據(jù)本發(fā)明的實(shí)施例,容器組件的內(nèi)容的特性被表示為二元變量的集合,每個(gè)二 元變量確定內(nèi)容是否滿足特定準(zhǔn)則。通過檢查容器的內(nèi)容來確定接收到的容器的內(nèi)容描述 符的值。因此,執(zhí)行該功能的代碼轉(zhuǎn)換器知道所接收到的容器的格式以及規(guī)劃容器所根據(jù) 的協(xié)議的暗示。通過將運(yùn)算符344應(yīng)用于兩個(gè)運(yùn)算數(shù)來確定表征二元變量的值;內(nèi)容描述 符(342)的值和相對應(yīng)的準(zhǔn)則346由內(nèi)容過濾系統(tǒng)的安裝者(用戶)輸入。運(yùn)算符344和 兩個(gè)運(yùn)算數(shù)342和346據(jù)稱形成過濾器340 (也被稱為內(nèi)容條件或簡化條件)。因此,容器 組件的內(nèi)容的特征在于過濾器的集合,每個(gè)過濾器具有值“真”或“假”。在為適合接收器而適配之前編輯容器是基于規(guī)則的集合的,每個(gè)規(guī)則確定編輯動 作,諸如刪除整個(gè)內(nèi)容、刪除在內(nèi)容中發(fā)現(xiàn)的惡意插入、或移除內(nèi)容的附加。規(guī)則是過濾器 的各自子集的函數(shù)。已經(jīng)選擇過濾器是二元變量,定義規(guī)則的函數(shù)優(yōu)選被規(guī)劃為過濾器子 集的布爾表達(dá)。因此,用于內(nèi)容過濾的系統(tǒng)的安裝者(用戶)(如將針對圖7和圖8更詳細(xì) 描述的)通過過濾器的子集、布爾表達(dá)以及根據(jù)執(zhí)行布爾表達(dá)的結(jié)果而執(zhí)行的動作定義了 規(guī)則。圖4圖示了與可應(yīng)用于數(shù)據(jù)容器的組件的存儲在規(guī)則陣列420中的四個(gè)規(guī)則集合 相關(guān)聯(lián)的布爾表達(dá)的代數(shù)形式。相同的規(guī)則集合還可應(yīng)用于規(guī)則過濾器的至少一個(gè)其它組 件。通過一個(gè)過濾器(大小> 30000)來定義第一規(guī)則,規(guī)則-1,其中內(nèi)容描述符是組 件的大小,運(yùn)算符是“大于”并且準(zhǔn)則是30000 (附圖標(biāo)記440)。如果規(guī)則結(jié)果是布爾“真”, 則各自的動作是放棄組件并且終止用于考慮中的組件的剩余規(guī)則的處理。通過兩個(gè)過濾器(大小> 5000)并且(族興消息)的布爾表達(dá)450來定義第二規(guī) 則,規(guī)則-2。第一過濾器的描述符是“大小”,準(zhǔn)則是“5000”,并且運(yùn)算符是“大于”。第二 過濾器的描述符是“族”,準(zhǔn)則是“消息”,并且運(yùn)算符是“不等于”。布爾表達(dá)包含單個(gè)運(yùn)算符“或”。與規(guī)則_2相關(guān)聯(lián)的動作與規(guī)則-1的動作相同。通過三個(gè)過濾器(大小> 25000)、(內(nèi)容-類型=圖像/wbmp)并且(內(nèi)容-類 型=圖像/png)的布爾表達(dá)460來定義第三規(guī)則,規(guī)則-3。第一過濾器的描述符是“大小”, 準(zhǔn)則是“25000”,并且運(yùn)算符是“大于”。第二過濾器的描述符是“內(nèi)容_類型”,準(zhǔn)則是“圖 像/wbmp”,并且運(yùn)算符是“等于”。第三過濾器的描述符是“內(nèi)容_類型”,準(zhǔn)則是“圖像/ png”,并且運(yùn)算符是“等于”。布爾表達(dá)包含兩個(gè)運(yùn)算符“與”和“或”。規(guī)則_3的動作與規(guī) 則-1的動作相同。注意到,“wbmp”指的是無線位圖(無線應(yīng)用協(xié)議、WAP、圖形格式),并且 “png”指的是“便攜式網(wǎng)絡(luò)圖形”。通過一個(gè)過濾器(族=消息)來定義第四規(guī)則,規(guī)則-4,其中描述符的內(nèi)容是 “族”,準(zhǔn)則是“消息”并且運(yùn)算符是“等于”(附圖標(biāo)記470)。圖5圖示了合并在圖2的操作管理器230中并且包括用戶接口 520、用于獲取過濾 器定義的過濾器創(chuàng)建模塊530、用于獲取規(guī)則定義的規(guī)則構(gòu)造模塊540、用于存儲過濾器定 義的存儲分隔550以及用于存儲規(guī)則定義(規(guī)則結(jié)構(gòu))的存儲分隔560的數(shù)據(jù)獲取子系統(tǒng) 的基本組件。用戶接口 520使得安裝者(用戶)能夠提供輸入數(shù)據(jù)512,以定義過濾器的集 合和規(guī)則的集合。過濾器創(chuàng)建模塊530包括存儲在計(jì)算機(jī)可讀存儲介質(zhì)中的計(jì)算機(jī)可讀指 令,計(jì)算機(jī)可讀指令當(dāng)被執(zhí)行時(shí)使處理器提示安裝者輸入內(nèi)容描述符定義、用于每個(gè)定義 的準(zhǔn)則以及運(yùn)算符。根據(jù)接收到的容器的內(nèi)容來確定描述符的值。規(guī)則構(gòu)造模塊540包含存儲在計(jì)算機(jī)可讀存儲介質(zhì)中的計(jì)算機(jī)可讀指令,當(dāng)執(zhí)行 計(jì)算機(jī)可讀指令時(shí),計(jì)算機(jī)可讀指令當(dāng)被執(zhí)行時(shí)使處理器提示安裝者輸入用于每個(gè)規(guī)則的 布爾表達(dá),并且從預(yù)定義的動作的集合中選擇動作。計(jì)算機(jī)可讀指令還使處理器解析布爾 表達(dá)并且確定表達(dá)的執(zhí)行方面的序列。過濾器定義被存儲在存儲設(shè)備的存儲分隔550中,并且規(guī)則定義被存儲在同一存 儲設(shè)備或另一其它存儲設(shè)備的存儲分隔560中。圖6圖示了使用存儲在存儲分隔550中的內(nèi)容描述符的定義來確定接收到的容器 612的內(nèi)容描述符的值的過程。在步驟620中解析所接收到的容器612,以標(biāo)識容器的組件。 在步驟640中分析每個(gè)組件,并且在步驟650中將結(jié)果與從存儲分隔550中讀取的內(nèi)容描 述符定義配對。圖7圖示了根據(jù)本發(fā)明的實(shí)施例的用于內(nèi)容過濾的系統(tǒng)的整體組織。存儲器710 存儲用于所有相關(guān)過濾器的數(shù)據(jù)。通過來自由圖5的模塊530確定的運(yùn)算符的集合740的 運(yùn)算符來定義每個(gè)過濾器,在圖6的步驟650中確定來自內(nèi)容描述符720的內(nèi)容描述符,并 且在圖5的模塊530中確定來自描述符的集合730的描述符準(zhǔn)則。每個(gè)過濾器的二元值 (“真”或“假”)被存儲在存儲設(shè)備750中,用于在執(zhí)行圖5的模塊540中定義的規(guī)則的集 合中使用。通過過濾器子集、布爾表達(dá)和動作的來定義每個(gè)規(guī)則。存儲器770存儲根據(jù)系統(tǒng) 安裝者(用戶)輸入在圖5的模塊540中確定的編碼的布爾表達(dá)。存儲器760存儲在每個(gè) 規(guī)則和各自的布爾表達(dá)中使用的過濾器的標(biāo)識符。存儲器780存儲由于估計(jì)布爾表達(dá)的各 自的結(jié)果而將執(zhí)行的編輯動作的指示。每個(gè)布爾表達(dá)的執(zhí)行產(chǎn)生二元結(jié)果以及各自的編輯 動作。一旦完成了編輯動作,則將已編輯的內(nèi)容放置在存儲器790中。盡管圖7圖示了根據(jù)本發(fā)明的實(shí)施例的當(dāng)應(yīng)用于一個(gè)組件時(shí)用于內(nèi)容過濾的系統(tǒng),但是圖8圖示了當(dāng)應(yīng)用于k> 1容器組件時(shí)用于圖7的內(nèi)容過濾的系統(tǒng)。存儲設(shè)備810 存儲k個(gè)容器組件中的每個(gè)的所有相關(guān)過濾器的數(shù)據(jù)。與每個(gè)過濾器有關(guān)的數(shù)據(jù)分別被標(biāo) 識為812(1)至812 (k)。容器的組件被順序地處理。對于考慮中的組件,應(yīng)用每個(gè)過濾器的 運(yùn)算符的結(jié)果被保持在存儲器850中。N > 1個(gè)編碼的布爾表達(dá)的集合被存儲在存儲器864 中。布爾表達(dá)被分別標(biāo)識為870(1)至870 (N),每個(gè)與來自被分別標(biāo)識為880(1)至880 (N) 的N個(gè)編輯動作的各自的編輯動作相關(guān)聯(lián)。圖9圖示了內(nèi)容過濾的示例性過程。用于圖7或圖8的內(nèi)容過濾的系統(tǒng)的安裝 者(用戶)已經(jīng)初始定義了分別標(biāo)識為920(1)至920 (5)的五個(gè)內(nèi)容描述符,分別標(biāo)識為 922(1)至922(8)的八個(gè)描述符準(zhǔn)則、以及分別標(biāo)識為924(1)至924(4)的四個(gè)運(yùn)算 符。安 裝者已經(jīng)定義了分別標(biāo)識為930(1)至930 (12)的十二個(gè)過濾器,每個(gè)過濾器指定內(nèi)容描述 符920中的一個(gè)、準(zhǔn)則922中的一個(gè)以及運(yùn)算符924中的一個(gè)。如在圖6的步驟650中描 述的,一旦確定了五個(gè)內(nèi)容描述符920(1)至920 (5)的值,確定了十二個(gè)過濾器的二元值。安裝者已經(jīng)定義了分別標(biāo)識為950(1)至950(6)的六個(gè)布爾表達(dá),其中每個(gè)布爾 表達(dá)與12個(gè)過濾器的子集相關(guān)聯(lián)。例如,布爾表達(dá)950 (2)與過濾器930(2)、930(8)和 930(11)相關(guān)聯(lián)。安裝者定義了分別標(biāo)識為960(1)至960 (4)的四個(gè)動作。然后,安裝者使 用圖5的規(guī)則構(gòu)造模塊540來定義分別標(biāo)識為940(1)至940 (9)的九個(gè)規(guī)則。每個(gè)規(guī)則與 單個(gè)布爾表達(dá)950和單個(gè)動作960相關(guān)聯(lián)。例如,規(guī)則940 (1)指定布爾表達(dá)950 (2)和動 作960 (2),而規(guī)則940 (9)指定布爾表達(dá)950 (5)和動作960 (4)。規(guī)則可以基于一個(gè)過濾器,其中該規(guī)則的結(jié)果是過濾器的二元值。例如,規(guī)則 940(7)僅取決于過濾器930(11)。布爾表達(dá)表示用于圖7或圖8的內(nèi)容過濾的系統(tǒng)的安裝者可以根據(jù)常規(guī)代數(shù)句法或根據(jù)樹結(jié)構(gòu) 來提供布爾表達(dá)950。圖5的用戶接口 520包括用于以代數(shù)形式編碼布爾表達(dá)的第一模塊 (未示出)以及用于編碼作為樹結(jié)構(gòu)呈現(xiàn)的布爾表達(dá)的第二模塊(未示出)。兩個(gè)模塊中 的每個(gè)提供了各自的模板,以使得安裝者能夠正確地指定布爾表達(dá)。布爾表達(dá)包括簡單操作、復(fù)合操作和復(fù)雜操作。簡單操作被展現(xiàn)為運(yùn)算符和兩個(gè) 運(yùn)算數(shù),該運(yùn)算符和運(yùn)算數(shù)由兩個(gè)分隔符(諸如兩個(gè)括號)來定界。運(yùn)算符和運(yùn)算數(shù)可以 以任何順序列出,并且兩個(gè)分隔符不需要彼此區(qū)分。兩個(gè)運(yùn)算符是表示兩個(gè)過濾器的布爾 變量。復(fù)合操作包括運(yùn)算符和兩個(gè)簡單操作,該運(yùn)算符和兩個(gè)簡單操作由兩個(gè)分隔符來定 界。復(fù)雜操作包括運(yùn)算符和兩個(gè)操作,所有都由兩個(gè)分隔符來定界,其中兩個(gè)操作中的任一 個(gè)可以是簡單操作或復(fù)合操作。構(gòu)成復(fù)雜操作的兩個(gè)操作還可以是復(fù)雜操作。簡單操作、 復(fù)合操作或復(fù)雜操作的分隔符可以相同。圖10圖示了根據(jù)本發(fā)明的實(shí)施例的估計(jì)布爾表達(dá)的方法,這要求僅識別和執(zhí)行 簡單操作。根據(jù)該方法,解析編碼的布爾表達(dá)以標(biāo)識簡單操作。標(biāo)識的簡單操作的運(yùn)算符被 應(yīng)用于各自的運(yùn)算數(shù)(過濾器)以產(chǎn)生“真”或“假”的二元值(例如,表示為“1”或“0”)。 已標(biāo)識的簡單操作、因此處理的運(yùn)算符、運(yùn)算數(shù)和兩個(gè)分隔符被刪除并且被運(yùn)算的結(jié)果取 代。該過程遞歸地繼續(xù),直到已編碼的布爾表達(dá)減少到單個(gè)簡單操作,其結(jié)果變?yōu)椴紶柋磉_(dá) 的結(jié)果。在圖10的步驟1012中,檢查布爾表達(dá)以標(biāo)識簡單操作。如果發(fā)現(xiàn)了簡單操作(步驟1014),則步驟1016執(zhí)行簡單操作并產(chǎn)生二元值。步驟1018用二元值來取代簡單操作 的運(yùn)算符、運(yùn)算數(shù)和分隔符。然后,再次訪問步驟1012以在減少的布爾結(jié)構(gòu)中尋找另一簡 單操作。如果步驟1014確定在布爾表達(dá)的當(dāng)前形式中沒有發(fā)現(xiàn)進(jìn)一步的簡單操作,則步驟 1020檢查當(dāng)前形式以確定它是否已經(jīng)真正減少到單個(gè)二元值(“真”、“假”或“1”、“0”)。 如果是,則步驟1022報(bào)告單個(gè)二元值作為執(zhí)行布爾表達(dá)的結(jié)果。如果步驟1020確定已處 理的布爾表達(dá)包含不止單個(gè)二元值,則步驟1024報(bào)告尚未正確地形成布爾表達(dá)的指示。 圖10的過程優(yōu)選地在數(shù)據(jù)輸入期間執(zhí)行,使得用戶(安裝者)可以糾正布爾表 達(dá)。用戶接口 520或編輯引擎的某個(gè)其它組件可以被提供有計(jì)算機(jī)指令以分析錯(cuò)誤地形成 的布爾表達(dá)并分析錯(cuò)誤。根據(jù)本發(fā)明的實(shí)施例的編碼和估計(jì)布爾表達(dá)的替代方法以來布爾表達(dá)的圖形樹 表示。圖11中圖示了示例性規(guī)則樹1100,圖11圖示了標(biāo)識為過濾器1至過濾器6的六個(gè) 運(yùn)算數(shù)(六個(gè)過濾器)的布爾表達(dá),每個(gè)是樹的葉。標(biāo)記為θ” 02和θ 3的三個(gè)運(yùn)算符定 義了三個(gè)操作{過濾器1,θ ρ過濾器2}、{過濾器3,θ 2,過濾器4}和{過濾器4,θ3,過 濾器6}。每個(gè)運(yùn)算符的中間后繼者被定義。例如,θ” 02和θ 3的后繼者分別是運(yùn)算符 θ5、04和θ4,并且運(yùn)算符04和95的后繼者分別是θ5和“空”。具有“空”后繼者的運(yùn) 算符產(chǎn)生布爾表達(dá)的結(jié)果。運(yùn)算符Q1產(chǎn)生二元輸出Bi,它是運(yùn)算符θ 5的運(yùn)算數(shù)。運(yùn)算符θ 2產(chǎn)生二元輸出 Β2,它是運(yùn)算符θ 4的運(yùn)算數(shù)。運(yùn)算符θ 3產(chǎn)生二元輸出Β3,它是運(yùn)算符θ 4的另一運(yùn)算數(shù)。 運(yùn)算符θ 4產(chǎn)生二元輸出Β4,它是運(yùn)算符θ 5的另一運(yùn)算數(shù)。運(yùn)算符θ5產(chǎn)生二元輸出纊, 它是由樹表示的布爾表達(dá)的結(jié)果。圖12圖示了用于表示圖11的規(guī)則樹1100的模板陣列1230。模板陣列1230的索 引1220如圖12所示從0到19變化。模板陣列1230被劃分成等于運(yùn)算符總數(shù)目的多個(gè)記 錄(在圖11的示例性樹中為五個(gè)),每個(gè)記錄對應(yīng)于運(yùn)算符并且表示具有兩個(gè)運(yùn)算數(shù)的簡 單操作。在處理了考慮中的容器之后已知過濾器的二元值。因此,記錄包括各自的過濾器、 運(yùn)算符定義和針對與中間后繼運(yùn)算符相對應(yīng)的另一記錄的指針的索引?!翱铡敝羔樦甘井?dāng)前 記錄是要處理的最后記錄。用戶可以以任何順序輸入記錄,并且在圖5的用戶接口 520內(nèi) 的模塊(未示出)重新組織記錄,使得可以順序地處理記錄,并且當(dāng)處理任何記錄時(shí),已經(jīng) 確定了各自的運(yùn)算數(shù)的值。如圖12所示,前三個(gè)記錄對應(yīng)于可應(yīng)用于形成樹的葉的六個(gè)過濾器的運(yùn)算數(shù)θ ρ 92和θ3。第一記錄的指針π (1)指向保持運(yùn)算符Q1的二元結(jié)果B(I)的陣列的索引16。 第二記錄的指針η (2)指向保持運(yùn)算符θ2的二元結(jié)果Β(2)的陣列的索引12。第三記錄 的指針η⑶指向保持運(yùn)算符θ3的二元結(jié)果Β(3)的陣列的索引13。因此,當(dāng)?shù)竭_(dá)第四記 錄時(shí),已經(jīng)計(jì)算了兩個(gè)運(yùn)算數(shù)B (2)和B (3)。運(yùn)算符θ 4的二元結(jié)果B (4)被寫入位置π (4) =17。因此,當(dāng)?shù)竭_(dá)第五記錄時(shí),已經(jīng)知道各自的兩個(gè)運(yùn)算數(shù)B(I)和Β(4)。運(yùn)算符94的 二元輸出是布爾表達(dá)的結(jié)果,因?yàn)檫\(yùn)算數(shù)θ 4沒有后繼者(即,空后繼者)。圖12中還圖示了模板陣列1230的示例性激活。根據(jù)圖6的過程確定的過濾器1 至過濾器6的值分別是“真”、“假”、“真”、“假”“真”和“真”。布爾運(yùn)算符9工至θ5由用戶 分別指定為“與”、“或”、“與”、“與”、和“異或”。由于運(yùn)算符θ4( “異或”)具有空后繼者, 所以運(yùn)算符“X0R”產(chǎn)生二元輸出,該二元輸出是布爾表達(dá)的結(jié)果。
圖13圖示了與標(biāo)記為Ll至Lll的十一個(gè)葉(過濾器)的布爾表達(dá)相對應(yīng)的第二 示例性規(guī)則樹1300,并且圖14圖示了應(yīng)用于圖13的規(guī)則樹的模板陣列1430,類似于圖12 的模板陣列1230,索引1420的范圍從0至43。規(guī)則樹1300包括標(biāo)記為θ 2至θ ^的十個(gè) 運(yùn)算符。第一葉Ll是運(yùn)算符θ η的運(yùn)算數(shù),它沒有后繼者。對于一致性,表示規(guī)則樹1300 的圖14的模板陣列1430的第一記錄(在圖14中標(biāo)記為記錄1)概念上被查看,以包括運(yùn) 算數(shù)Ll以及“不關(guān)注”運(yùn)算數(shù)Φ和許可非存在運(yùn)算符θ ”它傳送Ll的值作為后繼者運(yùn)算 符θ η的運(yùn)算數(shù)。如本領(lǐng)域所已知的,分配給運(yùn)算數(shù)Φ的“不關(guān)注”值可以方便地是“真” 狀態(tài)或“假”狀態(tài)。剩余的十個(gè)記錄,模板陣列1430的記錄2至記錄11,對應(yīng)于運(yùn)算符θ2 至θη。在圖14的模板陣列1430中每個(gè)條目Li、L2至Lll是過濾器的索引。如上所述, 參照圖12,與圖5的用戶接口相關(guān)聯(lián)的輸入組織模塊522布置記錄,使得可以順序地處理記 錄,每個(gè)記錄已經(jīng)確定了運(yùn)算數(shù)。圖15總結(jié)了使用模板陣列1230 (圖12)或1430 (圖14)的樹編碼方法。在步驟1520中,創(chuàng)建了具有多個(gè)記錄的模板,每個(gè)記錄對應(yīng)于樹中的節(jié)點(diǎn)。每個(gè)記錄包括含有兩 個(gè)過濾器的索引、當(dāng)前運(yùn)算符和指向與當(dāng)前運(yùn)算符的后繼者相對應(yīng)的后繼者記錄的指針的 四個(gè)字段。在步驟1530中,根據(jù)圖6的過程確定的過濾器的列表準(zhǔn)備用于考慮中的容器。 在步驟1540中,順序地處理樹模板的記錄。每個(gè)記錄的運(yùn)算數(shù)通過對過濾器的列表編索引 來獲取。各自的運(yùn)算符被應(yīng)用于運(yùn)算數(shù),并且二元值被放置在后繼者記錄的運(yùn)算數(shù)字段中。 在步驟1550中,最后的記錄的運(yùn)算符的結(jié)果被呈現(xiàn)為由樹表示的布爾表達(dá)。圖16圖示了根據(jù)本發(fā)明的實(shí)施例的表示規(guī)則樹結(jié)構(gòu)的替代方法。與規(guī)則相關(guān)的 過濾器(條件)集合基于如先前所述的內(nèi)容描述符、描述符準(zhǔn)則和過濾器運(yùn)算符來定義。過 濾器集合的定義被存儲在過濾器定義陣列。布爾運(yùn)算符的集合被定義具有被指定空后繼者 的一個(gè)運(yùn)算符以及被指定來自運(yùn)算符的集合的后繼者的每個(gè)其它運(yùn)算符。過濾器形成樹的 葉并且被劃分成過濾器的子集,其中子集的過濾器形成了來自布爾運(yùn)算符的集合當(dāng)中的布 爾運(yùn)算符的運(yùn)算數(shù)。注意到,如果過濾器的每個(gè)子集包括兩個(gè)過濾器,則布爾運(yùn)算符的總數(shù) 目等于過濾器的總數(shù)目減去1??紤]M個(gè)過濾器的集合,M > 1,形成了包括N個(gè)葉記錄的葉向量的模板;1 < N <Μ。每個(gè)葉記錄包括來自運(yùn)算符的集合當(dāng)中的葉運(yùn)算符和過濾器的各自的子集。在安裝 階段,每個(gè)葉記錄包括運(yùn)算符和過濾器定義陣列中的運(yùn)算數(shù)(過濾器)的索引。每個(gè)葉記 錄的過濾器的值被確定用于各個(gè)容器組件。形成了具有等于N個(gè)數(shù)目的葉記錄的多個(gè)節(jié)點(diǎn)記錄的節(jié)點(diǎn)向量。每個(gè)節(jié)點(diǎn)記錄具 有節(jié)點(diǎn)運(yùn)算符字段和節(jié)點(diǎn)狀態(tài)字段。在安裝階段,節(jié)點(diǎn)記錄為空,不包含數(shù)據(jù)。在葉記錄的 處理期間初始地確定節(jié)點(diǎn)記錄的布爾運(yùn)算符和節(jié)點(diǎn)狀態(tài)。N個(gè)節(jié)點(diǎn)記錄可以以任何順序來 布置。然而,方便的是,假設(shè)節(jié)點(diǎn)記錄初始具有與葉記錄的一對一對應(yīng)關(guān)系。因此,節(jié)點(diǎn)記 錄j的布爾運(yùn)算符是葉向量j,1 < j < N的后繼者布爾運(yùn)算符。一旦確定了過濾器的值,就將每個(gè)葉運(yùn)算符應(yīng)用于各自的過濾器(各自的二元條 件),并且將結(jié)果放置在節(jié)點(diǎn)記錄的節(jié)點(diǎn)狀態(tài)字段中。將每個(gè)葉運(yùn)算符的后繼者放置在節(jié)點(diǎn) 記錄的節(jié)點(diǎn)運(yùn)算符字段中。在處理了所有葉記錄之后,處理節(jié)點(diǎn)記錄。然后標(biāo)識在此被稱為連接節(jié)點(diǎn)記錄的 具有共同運(yùn)算符的節(jié)點(diǎn)記錄。然后,將共同運(yùn)算符應(yīng)用于所有連接節(jié)點(diǎn)記錄的節(jié)點(diǎn)狀態(tài)以產(chǎn)生新的狀態(tài)。從連接的節(jié)點(diǎn)記錄中選擇的節(jié)點(diǎn)記錄的運(yùn)算符字段被共同運(yùn)算符的后繼者 取代,并且所選擇的節(jié)點(diǎn)記錄的節(jié)點(diǎn)狀態(tài)字段被剛確定的新的狀態(tài)取代。從節(jié)點(diǎn)向量中刪 除剩余的連接節(jié)點(diǎn)記錄。因此,通過用組合的節(jié)點(diǎn)記錄取代連接節(jié)點(diǎn)記錄的每個(gè)集合,減少 了在節(jié)點(diǎn)向量中的節(jié)點(diǎn)記錄的數(shù)目。標(biāo)識連接節(jié)點(diǎn)記錄的過程繼續(xù)遞歸,直到節(jié)點(diǎn)向量僅 包含一個(gè)節(jié)點(diǎn)記錄。在剩余的一個(gè)節(jié)點(diǎn)記錄的運(yùn)算符字段中應(yīng)用布爾運(yùn)算符的結(jié)果是估計(jì) 布爾表達(dá)的結(jié)果。最后的節(jié)點(diǎn)記錄的布爾運(yùn)算符具有空后繼者。 圖16圖示了用于編碼圖13的示例性樹的規(guī)則樹的遞歸規(guī)則構(gòu)造1600,它表示形 成樹的葉的十一個(gè)過濾器的布爾表達(dá)。葉(過濾器)被標(biāo)記為Ll至L11。在圖13的樹中, 葉Ll與任何其它葉都不相關(guān)聯(lián)。為了一致性,葉Ll人工地與葉Φ相關(guān)聯(lián),它與其共享被 動運(yùn)算符θ1()插入的葉φ被分配了“不關(guān)注”值。如本領(lǐng)域中已知的,“不關(guān)注”值可以方 便地分配“真”狀態(tài)或“假”狀態(tài)。由用戶來定義布爾運(yùn)算符θ 2至θ n的集合。運(yùn)算符θ 2至θ 6與葉記錄相關(guān)聯(lián), 而運(yùn)算符97至θ η與節(jié)點(diǎn)記錄相關(guān)聯(lián)。運(yùn)算符θ η具有空后繼者,并且每個(gè)其它運(yùn)算符 02至θ 1Q具有來自運(yùn)算符97至θ η的集合的后繼者,如圖16的列表1610所圖示的。葉向量1620包括分配了放置在運(yùn)算符字段1624(1)至1624(6)中的運(yùn)算符θ 至θ 6的六個(gè)記錄1622,分別被標(biāo)識為1622(1)至1622 (6),相對應(yīng)運(yùn)算數(shù)的索引被放置在 運(yùn)算數(shù)字段1626(1)至1626(12)中。在六個(gè)葉記錄的運(yùn)算數(shù)字段中的運(yùn)算數(shù)是{Φ, 1}、 {L2, L3}、{L4, L5}、{L6, L7}、{L8, L9}和{L10, L11}。當(dāng)確定了二元值時(shí)(圖5和圖6),處理葉記錄1622。從葉記錄1622(1)開始,人工 被動運(yùn)算符Q1僅將Ll的值傳遞到節(jié)點(diǎn)記錄1642(1)的節(jié)點(diǎn)狀態(tài)字段。作為9工的后繼者 的運(yùn)算符θ η被放置在節(jié)點(diǎn)記錄1642(1)的運(yùn)算符字段中。然后,處理第二葉記錄1622 (2), 其中將運(yùn)算符θ2應(yīng)用于級別L2和L3(過濾器L2和L3)以產(chǎn)生要放置在節(jié)點(diǎn)記錄1642 (2) 的節(jié)點(diǎn)狀態(tài)字段中的二元值B2。作為運(yùn)算符99的運(yùn)算符θ 2后繼者被放置在節(jié)點(diǎn)記錄 1622(2)的運(yùn)算符字段中。該過程繼續(xù)直到確定了所有節(jié)點(diǎn)記錄1642(1)至1642(6)。該過程僅使用節(jié)點(diǎn)向量1640來遞歸地繼續(xù);不再需要葉向量1620。在節(jié)點(diǎn) 1642(1)中的運(yùn)算符θ η在節(jié)點(diǎn)向量1640(1)中不配對。因此,節(jié)點(diǎn)記錄1642 (1)保持不 變。類似地,節(jié)點(diǎn)記錄1642 (2)保持不變,因?yàn)楣?jié)點(diǎn)記錄1642中的任何一個(gè)都不包括運(yùn)算符 θ9。節(jié)點(diǎn)記錄1642 (3)和1642 (4)具有取代Β3的共同運(yùn)算符θ 7,它被應(yīng)用于運(yùn)算數(shù)Β3和 Β4以產(chǎn)生要在節(jié)點(diǎn)記錄1642 (3)的節(jié)點(diǎn)狀態(tài)字段中放置的二元結(jié)果Β7。作為θ 9的運(yùn)算符 θ 7的后繼者運(yùn)算符被放置在記錄1642 (3)的運(yùn)算符字段中,取代θ7。刪除了現(xiàn)在在新的 組合記錄1642(3)中占用的節(jié)點(diǎn)記錄1642(4)。類似地,節(jié)點(diǎn)記錄1642(5)和1642(6)被組 合在具有運(yùn)算符θ 8的后繼者運(yùn)算符θ 1Q以及通過將共同運(yùn)算符θ8應(yīng)用于運(yùn)算數(shù)B5和B6 確定的節(jié)點(diǎn)狀態(tài)Β8的新的節(jié)點(diǎn)記錄中。節(jié)點(diǎn)向量1640現(xiàn)在縮減成通過附圖標(biāo)記1640(2) 標(biāo)識的四個(gè)節(jié)點(diǎn)記錄。節(jié)點(diǎn)記錄1640(2)簡單地重寫節(jié)點(diǎn)記錄1640(1)。該過程遞歸地繼續(xù),組合了節(jié)點(diǎn)記錄1642(2)和1642(3)以產(chǎn)生新組合的節(jié)點(diǎn)記 錄1642(2)同時(shí)節(jié)點(diǎn)記錄1642(1)和1642(4)保持不變;兩個(gè)不變的節(jié)點(diǎn)記錄現(xiàn)在是在減 少的節(jié)點(diǎn)向量1640(3)中的記錄1642(1)和1642(3)。節(jié)點(diǎn)記錄1642(2)和1642(3)具有共同運(yùn)算符θ 1(|。運(yùn)算符θ 1(|被應(yīng)用于運(yùn)算數(shù) Β9和Β8以產(chǎn)生放置在節(jié)點(diǎn)記錄1642(2)的節(jié)點(diǎn)狀態(tài)字段中的新狀態(tài)Β10。運(yùn)算符θ 1(|的后繼者運(yùn)算符θ η被放置在節(jié)點(diǎn)記錄1642 (2)的節(jié)點(diǎn)運(yùn)算符字段中。節(jié)點(diǎn)記錄1642(1)和 1642(2)的節(jié)點(diǎn)記錄的共同運(yùn)算符θ η被應(yīng)用于運(yùn)算數(shù)Bl和BlO以產(chǎn)生布爾表達(dá)的輸出
B*。 圖17圖示了使用圖16的葉向量模板1620和節(jié)點(diǎn)向量模板1640來確定規(guī)則樹的 輸出的過程。在步驟1720中,確定了表征考慮中的數(shù)據(jù)內(nèi)容的布爾條件(布爾過濾器L2 至Lll)的集合。在步驟1722中,形成了具有N > 1個(gè)葉記錄1622的葉向量1620。每個(gè)葉 記錄1622包括布爾運(yùn)算符字段1624和用于布爾條件(過濾器L2至Lll的子集)的子集 的字段。在步驟1724中,形成了 N個(gè)節(jié)點(diǎn)記錄1642的節(jié)點(diǎn)向量1640。每個(gè)節(jié)點(diǎn)記錄1642 包括布爾運(yùn)算符字段1644和節(jié)點(diǎn)狀態(tài)字段1648。在步驟1726中,每個(gè)葉運(yùn)算符被應(yīng)用于 從如上參照圖5和圖6描述的內(nèi)容數(shù)據(jù)的特性確定的布爾條件(布爾過濾器)的各自的子 集。二元結(jié)果被放置在選擇的節(jié)點(diǎn)記錄1642的節(jié)點(diǎn)狀態(tài)字段中。在步驟1728中,每個(gè)葉 運(yùn)算符的后繼者被放置在所選擇的節(jié)點(diǎn)記錄的運(yùn)算符字段中。在步驟1730中,用組合的記 錄來取代具有共同運(yùn)算符的節(jié)點(diǎn)記錄,因此減少了節(jié)點(diǎn)向量1640的節(jié)點(diǎn)記錄1642的數(shù)目。 在步驟1732中,共同運(yùn)算符被應(yīng)用于所取代的節(jié)點(diǎn)記錄的節(jié)點(diǎn)狀態(tài),并且二元結(jié)果被放置 在所組合的記錄的運(yùn)算符字段中。在步驟1734中,從圖16的列表1610確定的共同運(yùn)算符 的后繼者被放置在所組合的節(jié)點(diǎn)記錄的運(yùn)算符字段中。在步驟1736中,如果剩余節(jié)點(diǎn)記錄 的數(shù)目大于1,則重新訪問步驟1730以繼續(xù)組合共同運(yùn)算符的節(jié)點(diǎn)記錄的過程。如果剩余 記錄的數(shù)目是1,則剩余節(jié)點(diǎn)記錄的運(yùn)算符被應(yīng)用于節(jié)點(diǎn)記錄的節(jié)點(diǎn)狀態(tài),并且該結(jié)果確定 是否需要執(zhí)行編輯動作(步驟1740)。圖18是詳述圖17的過程的流程圖。在步驟1820中,為了在圖19中詳細(xì)描述,規(guī) 劃了葉向量1620。順序地考慮葉記錄1622(1)至1622 (N)。在步驟1824中,索引j被設(shè)置 成等于0。如果步驟1826確定要處理更多的葉記錄,則步驟1828將索引j增加1并且獲取 與當(dāng)前葉記錄的葉索引相對應(yīng)的葉集合(過濾器集合),并且步驟1830獲取當(dāng)前葉記錄的 運(yùn)算符θ⑶工至06中的一個(gè))。步驟1832將該運(yùn)算符應(yīng)用于所獲取的葉集合,從而產(chǎn)生 二元輸出B。在步驟1834中,從圖16的列表1610確定后繼者S( θ )。節(jié)點(diǎn)向量1640的節(jié)點(diǎn)狀態(tài)字段和運(yùn)算符字段在此被標(biāo)記為U(j)、V(j), 1 ( j彡N,即,U(j)和V(j)定義節(jié)點(diǎn)記錄1642(j),l彡j彡N。在步驟1836中,B的值被 放置在節(jié)點(diǎn)向量1640的節(jié)點(diǎn)狀態(tài)字段U(j)中,并且S(e)的值被放置在節(jié)點(diǎn)向量1640的 運(yùn)算符字段V(j)中。當(dāng)處理了所有葉記錄1622(1)至1622 (N)時(shí),索引j等于葉記錄N的 數(shù)目,并且節(jié)點(diǎn)向量1640的每個(gè)節(jié)點(diǎn)記錄1642具有各自的節(jié)點(diǎn)運(yùn)算符和節(jié)點(diǎn)狀態(tài)。在步 驟1840中,節(jié)點(diǎn)向量1640的節(jié)點(diǎn)記錄1642的當(dāng)前數(shù)目ν被設(shè)置成等于j (它等于N)。在 步驟1842中,如果節(jié)點(diǎn)記錄ν的當(dāng)前數(shù)目大于1,則節(jié)點(diǎn)向量被掃描以收集具有相同運(yùn)算符 的所有節(jié)點(diǎn)記錄1642并且組合這樣的記錄。在掃描之前,節(jié)點(diǎn)記錄的當(dāng)前數(shù)目ν* = ν被 注意(步驟1843)以使得能夠檢測節(jié)點(diǎn)記錄的數(shù)目的變化。在步驟1844中,索引k被設(shè)置 成等于零,并且步驟1846記錄節(jié)點(diǎn)記錄1642(k)的運(yùn)算符θ =V(k)。步驟1848檢查節(jié)點(diǎn) 向量1640的后續(xù)節(jié)點(diǎn)記錄以標(biāo)識具有相同運(yùn)算符θ的后續(xù)節(jié)點(diǎn)記錄的數(shù)目μ。如果所 標(biāo)識的后續(xù)節(jié)點(diǎn)記錄的數(shù)目μ是零(步驟1850),則在步驟1852中索引k增加1,并且如 果索引k小于節(jié)點(diǎn)記錄的當(dāng)前數(shù)目v,則重新訪問步驟1846。否則,步驟1856收集相同運(yùn) 算符θ的節(jié)點(diǎn)記錄的(μ+l)個(gè)運(yùn)算數(shù),并且將運(yùn)算符θ應(yīng)用到(μ+l)個(gè)運(yùn)算數(shù)以確定組合的節(jié)點(diǎn)記錄的新狀態(tài)B。在步驟1860中,刪除了后續(xù)μ個(gè)標(biāo)識的節(jié)點(diǎn)記錄,并且步驟 1862在節(jié)點(diǎn)記錄1642 (k)的節(jié)點(diǎn)狀態(tài)字段U(k)中插入新狀態(tài)B,并且在節(jié)點(diǎn)記錄1642 (k) 的運(yùn)算符字段V (k)中插入后繼者運(yùn)算符S( θ )。在步驟1864中,剩余節(jié)點(diǎn)記錄的數(shù)目被確 定為(ν-μ)。在步驟1864之后應(yīng)用了步驟1852和1854,以確定節(jié)點(diǎn)向量1640是否包含 進(jìn)一步的共同運(yùn)算符的節(jié)點(diǎn)記錄。如果步驟1854確定k小于v,則繼續(xù)從步驟1846掃描節(jié) 點(diǎn)向量。否則,如果步驟1854確定k = ν (k無法超過ν),則步驟1855確保ν的當(dāng)前值(在 步驟1864中最后更新的)小于先前的值/。否則,在步驟1880中報(bào)告錯(cuò)誤。注意到,如果 用戶提供的布爾表達(dá)的表示不正確,則不滿足步驟1855的要求ν < ν*。如果ν < /,則步 驟1855之后是步驟1842。如果步驟1842確定剩余節(jié)點(diǎn)記錄的數(shù)目是1,則剩余節(jié)點(diǎn)記錄 的運(yùn)算符被應(yīng)用于各自的運(yùn)算數(shù),以確定狀態(tài)步驟1890),其確定各自的編輯動作。 圖19詳述了規(guī)劃圖16的葉向量1620的圖18的步驟1820。在步驟1920中,規(guī)劃 了過濾器(條件)的集合,并且在步驟1922中,基于如上參照圖5和圖6描述的用戶輸入 確定了葉運(yùn)算符。葉運(yùn)算符被順序應(yīng)用以生成相對應(yīng)的葉記錄1622。如果步驟1924確定 還沒有應(yīng)用所述至少一個(gè)運(yùn)算符,則步驟1926向葉向量添加新的葉記錄1622。步驟1928 選擇剩余運(yùn)算符中的一個(gè),并且步驟1930向葉記錄的運(yùn)算數(shù)字段1624添加相關(guān)聯(lián)的過濾 器。重復(fù)步驟1930,直到步驟1932確定屬于所選擇的運(yùn)算符的所有過濾器已經(jīng)被包括在當(dāng) 前葉記錄1622中。當(dāng)完成了當(dāng)前葉記錄1622時(shí),如在步驟1932中確定的,重新訪問步驟 1924。當(dāng)步驟1924確定已經(jīng)考慮了所有的葉運(yùn)算符,則將完成的葉向量1620呈現(xiàn)給圖18 的步驟1824。圖20圖示了預(yù)先計(jì)算過濾器集合的每個(gè)值的布爾表達(dá)的二元值的方法。過濾器 的集合通過具有含有與過濾器的一對一對應(yīng)關(guān)系的多個(gè)比特的比特字符串來表示,使得在 該字符串中的每個(gè)比特對應(yīng)于一個(gè)過濾器。利用μ >ι個(gè)過濾器,字符串包含μ個(gè)比特, 并且假設(shè)值的范圍從0到2μ-1。在步驟2012中,設(shè)置了開始字符串值0(μ個(gè)比特都被設(shè) 置成零),并且具有2μ個(gè)條目的規(guī)則向量的每個(gè)條目被初始化成“0”。在步驟2014中,使 用如參照圖10、15或17描述的方法中的一個(gè)來估計(jì)布爾表達(dá)。在步驟2016中,二元結(jié)果 (“真”、“假”)被存儲在與字符串(0到2μ-1)的當(dāng)前值相對應(yīng)的位置處的規(guī)則向量中。在 步驟2018中,字符串值通過添加1而增加。當(dāng)步驟2030確定字符串的μ個(gè)比特中的每個(gè) 具有值0時(shí),完成了規(guī)則向量的生成(步驟2040)。注意到,μ個(gè)比特中的每個(gè)具有值“1” 的字符串對應(yīng)于規(guī)則向量的第2 μ -1條目,并且在步驟2018中添加1將字符串重新設(shè)置成 μ個(gè)零。替代地,字符串可以具有(μ+i)個(gè)比特,最高有效位用于指示完成了規(guī)則向量生 成。然后,規(guī)則向量可以用于直接確定運(yùn)行時(shí)布爾表達(dá)的二元值,因此增加了內(nèi)容過濾系統(tǒng) 的吞吐量??傊?,過濾數(shù)據(jù)容器的方法然后包括以下步驟(1)定義過濾器(二元條件)的集合,其中每個(gè)過濾器是選擇的內(nèi)容的描述符和各 自的描述符的準(zhǔn)則的函數(shù)。(2)定義規(guī)則的集合,每個(gè)規(guī)則指定布爾表達(dá)以及相應(yīng)的內(nèi)容過濾動作。(3) 一次考慮一個(gè)布爾表達(dá)。(4)考慮μ個(gè)過濾器(二元條件)的布爾表達(dá)。過濾器被表示為μ個(gè)比特的字 符串,μ > 1。
(5)估計(jì)該字符串的2μ個(gè)值中的每個(gè)的布爾表達(dá),以產(chǎn)生2μ個(gè)條目的規(guī)則向量, 每個(gè)條目是與該字符串的2μ個(gè)值中的一個(gè)相對應(yīng)的內(nèi)容度量的狀態(tài)。(6)對所有布爾表達(dá)重復(fù)步驟(5)。(7)接收和解析數(shù)據(jù)容器。(8)選擇規(guī)則和根據(jù)數(shù)據(jù)容器的內(nèi)容確定所指定的已選擇的規(guī)則的μ個(gè)過濾器 的值。(9)對于所選擇的規(guī)則相對應(yīng)的規(guī)則向量編索引,并且確定與由μ個(gè)比特的字符 串確定的索引相對應(yīng)的規(guī)則向量中的條目的值。(10)根據(jù)條目的值執(zhí)行內(nèi)容過濾動作。(11)如果需要將新規(guī)則應(yīng)用于所接收到的容器,則重復(fù)步驟(8)至(10)。圖21圖示了用于執(zhí)行標(biāo)記為L1、L2、L3和L4的四個(gè)過濾器的集合(μ = 4)的布 爾表達(dá)的規(guī)則的規(guī)則向量。過濾器的集合通過四個(gè)比特的字符串來表示。布爾表達(dá)被估計(jì) 用于范圍從“0000”至“1111”的該字符串的16個(gè)值2112中的每個(gè),以產(chǎn)生與該字符串的 字符串值j,0< μ相對應(yīng)的標(biāo)記為“真”或“假”的二元輸出2114(j)。一旦接收到容器,則檢查容器組件的內(nèi)容以確定圖21中考慮的用于該規(guī)則的四 個(gè)過濾器的集合。如果例如四個(gè)過濾器的集合具有值“1”、“0”、“0”和“1”,產(chǎn)生“1001”的 字符串2140,則直接從二元規(guī)則向量2114的位置9( 二元數(shù)1001)讀取布爾表達(dá)的值。通過圖21的示例性圖示,圖20的方法適合采用適度數(shù)目的運(yùn)算數(shù)(過濾器)的 布爾表達(dá)的規(guī)則。例如,利用8個(gè)過濾器,二元規(guī)則向量2114將相對短,僅具有256比特。 如果布爾表達(dá)具有不止16個(gè)運(yùn)算數(shù),則例如,它可以優(yōu)選地每當(dāng)需要時(shí)估計(jì)布爾表達(dá)而不 是存儲大的二元規(guī)則向量。超過16的每個(gè)布爾表達(dá)的運(yùn)算數(shù)的數(shù)目可以不同。圖22圖示了與過濾器定義和規(guī)則定義相關(guān)的數(shù)據(jù)條目的過程。該過程開始于確 定是否已經(jīng)創(chuàng)建了規(guī)則文件(步驟2220)。如果還沒有創(chuàng)建規(guī)則文件,則步驟2222使用本 領(lǐng)域已知的常規(guī)方法來創(chuàng)建文件。下一步驟是向規(guī)則文件添加規(guī)則。在步驟2224中開始 填充或更新規(guī)則文件。步驟2224打開規(guī)則文件并且將該過程導(dǎo)向步驟2226,它提示用戶指 示是否要編碼新規(guī)則并將新規(guī)則添加到規(guī)則文件。填充或更新規(guī)則文件由用戶來終止(步 驟2228)。如果要添加更多的規(guī)則,則放置在用戶接口 520(圖5)中的數(shù)據(jù)獲取模塊(未示 出)或在操作、管理和維護(hù)模塊230中創(chuàng)建規(guī)則模板(步驟2230)。規(guī)則模板可以可選地采 取多種形式中的一種,這由用戶來決定。規(guī)則模板的形式取決于(1)要順序地還是根據(jù)等 級順序來應(yīng)用由用戶指定的規(guī)則;以及(2)要以代數(shù)分析形式還是以樹結(jié)構(gòu)格式來輸入規(guī) 則的布爾表達(dá),在樹結(jié)構(gòu)中,樹的節(jié)點(diǎn)表示運(yùn)算符和各自的運(yùn)算數(shù)。在任一情況下,數(shù)據(jù)獲 取模塊可以提供具有方便數(shù)據(jù)輸入的指令的各自的模板。例如,數(shù)據(jù)獲取模塊可以通過提 示用戶輸入簡單的操作來引導(dǎo)用戶構(gòu)造代數(shù)形式的布爾表達(dá),每個(gè)操作包括運(yùn)算符和運(yùn)算 數(shù)的集合,然后進(jìn)行到想要的表達(dá)??梢酝ㄟ^分別添加新運(yùn)算符來驗(yàn)證所構(gòu)造的表達(dá)的有 效性。如果布爾表達(dá)被呈現(xiàn)為樹結(jié)構(gòu),則數(shù)據(jù)獲取模塊可以顯示通用樹結(jié)構(gòu),它可以當(dāng)用戶 輸入與選擇的樹的節(jié)點(diǎn)相關(guān)的數(shù)據(jù)時(shí)被修整和驗(yàn)證。在步驟2232中,提供了 以任何合適格式編碼的規(guī)則標(biāo)識符。在步驟2234中,指 定了規(guī)則動作,并且步驟2240定義了與規(guī)則相關(guān)聯(lián)的布爾表達(dá)。根據(jù)相關(guān)聯(lián)的布爾表達(dá) 的值來應(yīng)用特定規(guī)則的規(guī)則動作。步驟2240包括步驟2242、2244、2246、2248、2250、2252和2260。步驟2242如圖3所示創(chuàng)建了附圖標(biāo)記為340的過濾器模板。步驟2244設(shè)置了 過濾器的類型,它可以是考慮中的容器的內(nèi)容的多個(gè)描述符中的一個(gè)。步驟2246設(shè)置過濾 器的運(yùn)算符,它可以從一元運(yùn)算符、二元運(yùn)算符、算術(shù)運(yùn)算符、比較運(yùn)算符、邏輯運(yùn)算符、設(shè) 置運(yùn)算符和用戶定義的運(yùn)算符的菜單中選擇。步驟2248設(shè)置了過濾器的準(zhǔn)則,它是與在步 驟2244中選擇的描述符相關(guān)的目標(biāo)值或閾值。步驟2250提示用戶定義用于該規(guī)則的新的 過濾器或繼續(xù)定義要應(yīng)用于目前為止指定的過濾器的集合的布爾表達(dá)。為了添加另一過濾 器,重新訪問步驟2242至2248,直到在步驟2250中用戶確定所有相關(guān)的過濾器都存在。步 驟2252提示用戶輸入根據(jù)上述格式中的一個(gè)的布爾表達(dá)。注意到,規(guī)則可以僅基于一個(gè)過 濾器,如圖9所示,在這種情況下,布爾表達(dá)縮減成被動運(yùn)算符,它僅適用一個(gè)過濾器的值 以確定是否要應(yīng)用在步驟2234中 指定的規(guī)則工作。步驟2260將剛構(gòu)造的規(guī)則附加到在步驟2224中打開的規(guī)則文件。注意到,一旦 處理了接收到的容器,則在“運(yùn)行時(shí)間”要確定因此構(gòu)造的每個(gè)規(guī)則的過濾器的值。編碼的 規(guī)則包括過濾器標(biāo)識符,它僅是存儲過濾器的陣列(未示出)的索引。在系統(tǒng)安裝或更新期間執(zhí)行圖22的過程。編碼和存儲在規(guī)則文件中的規(guī)則被“實(shí) 時(shí)”地激活。圖23圖示了順序過濾接收到的具有多個(gè)組件的容器的組件的過程。處理用于內(nèi) 容過濾的容器的組件的順序是任意的,并且可以由用戶來設(shè)置。如果由于一些操作原因而 對整個(gè)容器施加了整體約束,則作為結(jié)果將具有處理組件的順序。當(dāng)控制器提示時(shí),內(nèi)容過濾的過程在步驟2320中開始(圖2)。如果已經(jīng)選擇了要 處理組件的順序,則步驟2340確定在步驟2350是否要處理至少一個(gè)組件。否則,步驟2380 結(jié)束該處理并報(bào)告結(jié)果。在步驟2360中,執(zhí)行可應(yīng)用于考慮中的組件的規(guī)則設(shè)置的所有規(guī) 貝U,并且步驟2340被重新訪問以確定是否需要處理另一組件。模塊插入指示應(yīng)用于組件的 任何過濾動作的通知。圖24詳述了步驟2360 (圖23),其中規(guī)則的集合被應(yīng)用于容器的內(nèi)容。步驟2360 應(yīng)用于容器的組件。步驟2424確定是否已經(jīng)應(yīng)用了整個(gè)規(guī)則集合。如果是,則步驟2480將 指示由于指定規(guī)則的集合而引起的任何內(nèi)容過濾動作的通知附加到容器。否則,步驟2428 選擇當(dāng)前規(guī)則,并獲取與所選擇的當(dāng)前規(guī)則相關(guān)聯(lián)的所有相關(guān)過濾器的定義。注意到,如果 一個(gè)規(guī)則的結(jié)果影響了另一規(guī)則的選擇,則可以以特定順序來布置規(guī)則。另外,如將參照圖 25描述的,可以通過形式圖而不是簡單的陣列來表示規(guī)則相互依賴性。步驟2430執(zhí)行所選擇的當(dāng)前規(guī)則。步驟2430包括步驟2432、2436、2440和2444。 步驟2432確定是否已經(jīng)激活了在步驟2428中標(biāo)識的所有過濾器以確定每個(gè)過濾器的二 元值。當(dāng)將過濾器的運(yùn)算符應(yīng)用于各自的運(yùn)算數(shù)以產(chǎn)生該過濾器的二元值時(shí)就稱為激活 了過濾器。如果已經(jīng)激活了與當(dāng)前規(guī)則相關(guān)的所有過濾器,則步驟2432將控制傳輸?shù)讲襟E 2460。否則,執(zhí)行步驟2346、2440和2444以產(chǎn)生考慮中的過濾器的值。如參照圖5和圖6 描述的,步驟2436基于考慮中的容器內(nèi)容的特性來獲取運(yùn)算符和各自的運(yùn)算數(shù)的值。步驟 2440將運(yùn)算符應(yīng)用于運(yùn)算數(shù),并且步驟2444記錄當(dāng)前過濾器的值用于在估計(jì)當(dāng)前規(guī)則的 布爾表達(dá)中使用。步驟2460根據(jù)圖10、圖15或圖17的編碼方法中的一個(gè)來獲取布爾表達(dá)。步驟 2464估計(jì)布爾表達(dá)。步驟2468可以將與當(dāng)前規(guī)則相關(guān)聯(lián)的內(nèi)容過濾動作應(yīng)用于服從如在步驟2464中確定的布爾表達(dá)的值的考慮中的內(nèi)容的內(nèi)容。在步驟2470中,如果當(dāng)前規(guī)則 的內(nèi)容過濾動作導(dǎo)致刪除整個(gè)容器組件,則不需要執(zhí)行后續(xù)規(guī)則(如果有的話),并且步驟 2360向所刪除的組件附加各自的通知。如果沒有編輯內(nèi)容,或編輯但沒有刪除,則重新訪問 步驟2424以確定是否需要將更多的規(guī)則應(yīng)用于考慮中的內(nèi)容。注意到,如果具有超過特定 閾值的附件,或者如果具有無法移除的惡意插入,則可以刪除整個(gè)組件。規(guī)則相互依賴性
通常,可應(yīng)用于特定內(nèi)容的規(guī)則可以具有補(bǔ)充動作、沖突動作或互斥動作。利用補(bǔ) 充動作,內(nèi)容過濾結(jié)果可以與實(shí)現(xiàn)規(guī)則的順序無關(guān)。利用沖突動作或互斥動作,一個(gè)動作代 替另一個(gè)。根據(jù)本發(fā)明的實(shí)施例,可以提示用戶使用圖形來定義規(guī)則的相互關(guān)系。圖25圖示了指示標(biāo)記為規(guī)則1至規(guī)則5的五個(gè)規(guī)則的等級布置的圖形。規(guī)則的 狀態(tài)在此被定義為由于執(zhí)行規(guī)則的布爾表達(dá)而產(chǎn)生的二元值。規(guī)則1的“真”狀態(tài)導(dǎo)致標(biāo)記為“動作1”的動作,之后,認(rèn)為完成了步驟2360?!皠?作1”可以需要兩個(gè)相反極性中的一個(gè);第一個(gè)是因?yàn)樗蠡虿荒苄迯?fù)而刪除整個(gè)組件, 或因?yàn)樗桃灾虏荒馨瑦阂獠迦攵_定組件是可接受的。規(guī)則1的“假”狀態(tài)指示內(nèi) 容通過第一測試并且應(yīng)當(dāng)進(jìn)行規(guī)則2的第二測試。規(guī)則2的“真”狀態(tài)導(dǎo)致后面是實(shí)現(xiàn)規(guī)則5的標(biāo)記為“動作2”的動作。規(guī)則2的 “假”狀態(tài)指示內(nèi)容通過第二測試并且應(yīng)當(dāng)進(jìn)行規(guī)則3的第三測試等等。如果規(guī)則4的狀態(tài) 是“假”,則該過程在沒有編輯內(nèi)容的情況下結(jié)束。該過程還可以在(僅)實(shí)現(xiàn)一個(gè)的情況 下結(jié)束{動作1}、{動作2和動作5}、{動作3}和{動作5}。圖26圖示了由操作管理器230使用的在下面列出的模塊。每個(gè)模塊包括存儲在 計(jì)算機(jī)可讀存儲介質(zhì)中的計(jì)算機(jī)可讀指令。(1)服務(wù)器單元配置模塊2610,用于配置服務(wù)器單元以接受根據(jù)指定的協(xié)議形成 的多媒體數(shù)據(jù)容器。(2)負(fù)載平衡模塊2612,用于在同樣配置的服務(wù)器單元當(dāng)中公平地分發(fā)多媒體數(shù) 據(jù)容器以處理共同類型的數(shù)據(jù)容器。(3)過濾器定義模塊2614,用于從用戶獲取過濾器集合的定義,每個(gè)過濾器指定 內(nèi)容描述符、描述符準(zhǔn)則和運(yùn)算符的定義。(4)布爾表達(dá)獲取模塊2616,用于使得用戶能夠根據(jù)代數(shù)句法來提供布爾表達(dá)。(5)布爾表達(dá)獲取模塊2618,用于使得用戶能夠以樹結(jié)構(gòu)的形式來提供布爾表 達(dá)。(6)布爾表達(dá)獲取模塊2620,用于使得用戶能夠通過編輯和修整通用樹的圖形來 輸入布爾表達(dá),其中樹的每個(gè)節(jié)點(diǎn)表示運(yùn)算符和各自的運(yùn)算數(shù)集合。(7)規(guī)則構(gòu)造模塊2622,用于從用戶獲取內(nèi)容過濾規(guī)則的集合,每個(gè)規(guī)則指定過 濾器和過濾動作的子集的布爾表達(dá)。(8)規(guī)則驗(yàn)證模塊2624,用于驗(yàn)證針對規(guī)則指定的布爾表達(dá)的正確性。(9)規(guī)則布置模塊2626,用于以由規(guī)則執(zhí)行的特定過濾動作排除至少一個(gè)后續(xù)規(guī) 則的執(zhí)行所根據(jù)的順序來布置規(guī)則。(10)規(guī)則互依賴性模塊2628,用于提示用戶以給定規(guī)則的各自的布爾表達(dá)的值 為條件來指定給定規(guī)則的連續(xù)規(guī)則。
(11)規(guī)則圖形定義模塊2630,用于以形式圖的形式來呈現(xiàn)內(nèi)容過濾規(guī)則的集合(圖 25)。(12)規(guī)則優(yōu)化模塊2632,用于使用常規(guī)邏輯優(yōu)化技術(shù)來優(yōu)化每個(gè)規(guī)則的布爾表 達(dá),以最小化處理努力。(13)規(guī)則預(yù)處理模塊2634,用于選擇特定規(guī)則,每個(gè)規(guī)則實(shí)行最多包括預(yù)設(shè)數(shù)目 的過濾器的過濾器子集;對特定規(guī)則中的每個(gè)估計(jì)用于過濾器的子集的所有的值的過濾器 子集的布爾表達(dá),以產(chǎn)生2-個(gè)比特的陣列,m> 1是過濾器子集中的過濾器的數(shù)目;以及將 比特的陣列存儲在存儲設(shè)備中(圖20和21)。(14)分類模塊2636,用于將容器分類成容器類型,每個(gè)容器類型對應(yīng)于在源處規(guī) 劃的容器所根據(jù)的協(xié)議;以及從多個(gè)容器當(dāng)中將特定類型的容器導(dǎo)向特定控制器。分類模 塊2636可以與網(wǎng)絡(luò)接口 210或操作管理器230相關(guān)聯(lián)。圖27圖示了根據(jù)本發(fā)明的實(shí)施例的由代碼轉(zhuǎn)換器280使用的在下面列出的模塊。 每個(gè)模塊包括存儲在計(jì)算機(jī)可讀存儲介質(zhì)中的計(jì)算機(jī)可讀指令。(a)模塊2710,用于表征多媒體數(shù)據(jù)容器的每個(gè)組件的內(nèi)容,確定內(nèi)容描述符,應(yīng) 用運(yùn)算符以及確定過濾器的狀態(tài)。(b)模塊2720,用于布爾表達(dá)的運(yùn)行時(shí)間估計(jì)并且確定規(guī)則的二元輸出。可以根 據(jù)代數(shù)句法或作為樹結(jié)構(gòu)來呈現(xiàn)布爾表達(dá)。(c)模塊2730,用于執(zhí)行與服從于各自規(guī)則的布爾表達(dá)的預(yù)設(shè)值的給定容器內(nèi)容 相關(guān)的過濾動作。圖28圖示了根據(jù)本發(fā)明的實(shí)施例的包括代碼轉(zhuǎn)換器服務(wù)模塊2810、程序寄存器 2820和程序存儲器2840的代碼轉(zhuǎn)換器280。代碼轉(zhuǎn)換器服務(wù)模塊包括存儲在計(jì)算機(jī)可讀 存儲介質(zhì)中的計(jì)算機(jī)可讀指令,當(dāng)執(zhí)行計(jì)算機(jī)可讀指令時(shí),使得處理器的核心從多個(gè)控制 器中的特定控制器接收特定容器和編輯請求;選擇和執(zhí)行與編輯請求相關(guān)的程序;以及將 結(jié)果返回特定控制器。程序寄存器包括計(jì)算機(jī)可讀指令,當(dāng)執(zhí)行計(jì)算機(jī)可讀指令時(shí),使得處 理器根據(jù)各自的功能來組織程序;以及用各自的新的程序來取代現(xiàn)有程序??刂破?40 (圖2)將編輯請求轉(zhuǎn)發(fā)到代碼轉(zhuǎn)換器280。一旦接收到編輯請求2850, 則代碼轉(zhuǎn)換器服務(wù)模塊2810標(biāo)識使用包含在編輯請求中的信息執(zhí)行的插件程序。代碼轉(zhuǎn) 換器服務(wù)模塊2810執(zhí)行所選擇的插件程序并且將結(jié)果返回各自的控制器240?!安寮痹诖吮欢x為設(shè)計(jì)成執(zhí)行特定任務(wù)的自包含的模塊。程序存儲器2840包 括存儲在計(jì)算機(jī)可讀存儲介質(zhì)中的計(jì)算機(jī)可讀指令,并且包括兩種類型的插件(a)初始加載的駐留插件2842 ;以及(b)動態(tài)加載的外部插件2844,外部插件可以取代駐留插件。駐留插件提供了基本的功能,并且外部插件提供了附加功能,內(nèi)容過濾和病毒掃 描時(shí)這樣的功能的兩個(gè)例子。插件被注冊到程序寄存器2820,程序寄存器2820管理插件注冊和接入。程序寄存 器2820基于它們的特性來組織插件。插件可以布置在插件組中。插件程序以預(yù)定義的方式來組織插件的執(zhí)行。從確定用于預(yù)定義的具有特定目標(biāo) 的插件集合的執(zhí)行邏輯的簡單的指令集合來構(gòu)建插件程序。接下來呈現(xiàn)使用插件的簡單程序的指令的例子。
(Ol)OnErrorGoto TERMINATION_PLUGIN(02)Execute DEFAULT_SETUP_INITIAL_PR0FILE(03)Execute DEFAULT_SETUP_SESSION
(04)Execute DEFAULT_PRE_PROCESS_DECODE_PLUGIN(05)ExecuteGroup GROUP_HOT_PIPELINE_DUAL_LOAD_AROUND_CREATE(06)Execute DEFAULT_TRANSFORMER_PLUGIN(07)Execute DEFAULT_CREATOR_PLUGIN(08)ExecuteGroup GROUP_HOT_PIPELINE_CREATOR(09)ExecuteGroup GROUP_HOT_PIPELINE_DUAL_LOAD_AROUND_CREATE(IO)Execute DEFAULT_CHARGE_DATA_RECORD_PLUGIN(Il)Execute DEFAULT_OPTIMISER_PLUGIN(12)ExecuteGroup GROUP_HOT_PIPELINE_ANALYSER(13)Execute DEFAULT_ENCODE_PLUGIN(14)Label TERMINATION_PLUGIN(15)Execute DEFAULT_CHARACTERIZE_PLUGIN(16)ExecuteGroup GROUP_HOT_PIPELINE_TERMINATOR(17)Execute DEFAULT_UNSETUP_SESSION(18)Execute DEFAULT_CHARGE_DATA_RECORD_PLUGIN注意到,引入左邊的數(shù)目僅是便于參考并且不一定構(gòu)成指令的一部分。每個(gè)“執(zhí)行(Excute) ”命令具有作為總是表示駐留插件名稱的變量的插件的名稱。 因?yàn)橥獠坎寮强蛇x的,所以從未通過名稱來直接參考外部插件,并且因此僅當(dāng)存在時(shí)才 執(zhí)行外部插件。每個(gè)“ExecuteGroup”命令具有作為變量的插件組的名稱。命令“Execute Group”執(zhí)行屬于該組的所有插件。行1聲明在任何錯(cuò)誤時(shí)程序跳轉(zhuǎn)到行14并且繼續(xù)執(zhí)行行15至18。行2和3執(zhí)行 要完成的適配的設(shè)置;如果需要,行4執(zhí)行輸入的解碼,例如,如果輸入是電子郵件,則將它 分解成它的子組件;行5和行9執(zhí)行內(nèi)容過濾插件所屬于的插件組。因此,如果存在,則它 在行5開始執(zhí)行并且在行9終止;行6和行7分別用于執(zhí)行創(chuàng)建適配管線所必需的設(shè)置操 作并且實(shí)際創(chuàng)建它。適配管線包含要執(zhí)行的操作的集合以執(zhí)行所要求的適配;行8意指執(zhí) 行在執(zhí)行之前對適配管線有影響的外部插件;行10提供將參與適配的輸入組件的詳情。行 18對輸出組件執(zhí)行類似的任務(wù)。這樣的信息可以被分析用于報(bào)告、付費(fèi)和與適配功能不一 定相關(guān)的其它目的;行11執(zhí)行適配管線優(yōu)化;行12執(zhí)行在它的執(zhí)行之前執(zhí)行適配管線的 分析和優(yōu)化的任何外部插件;行13執(zhí)行適配管線;行15表征由于執(zhí)行適配管線而生成的 輸出組件;行16執(zhí)行對生成的輸出組件具有影響的任何外部插件;以及行17執(zhí)行完成適 配的附加步驟(諸如提供詳細(xì)的適配記錄)。規(guī)則被永久存儲在“規(guī)則文件”中。規(guī)則文件可以應(yīng)用到不止一個(gè)控制器。使用 規(guī)則文件的內(nèi)容過濾器將包含在規(guī)則文件中的規(guī)則應(yīng)用于媒體(內(nèi)容)。如果給定規(guī)則估 計(jì)成“真”,則執(zhí)行相對應(yīng)的動作。動作可以包括移除諸如病毒(包括移動特定的病毒)的 不想要的內(nèi)容;移除特定類型的媒體(諸如游戲);使用第三方應(yīng)用對媒體執(zhí)行動作(諸如 掃描病毒媒體)。然而,特定類型的內(nèi)容可以未經(jīng)處理地通過。
在操作管理器230中完成規(guī)則的定義(圖2)。在代碼轉(zhuǎn)換器280中完成用于影響 內(nèi)容編輯(過濾和適配)的規(guī)則的應(yīng)用。一旦創(chuàng)建了規(guī)則文件,則用戶可選地配置控制器 240中的一個(gè)以將規(guī)則文件以及任何適配請求發(fā)送到它選擇的代碼轉(zhuǎn)換器280。動作“放棄”確保媒體不是內(nèi)容適配過程的輸出的一部分。動作“掃描保持”導(dǎo)致 掃描媒體病毒。這假設(shè)安裝了反病毒外部插件。媒體實(shí)際上被“標(biāo)記”為“掃描病毒”,使得 在執(zhí)行適當(dāng)插件程序時(shí),其中執(zhí)行了反病毒插件,掃描了標(biāo)記為“掃描病毒”的所有媒體以 尋找病毒。下面給出了稱為規(guī)則1的規(guī)則的例子。 Rule Name = " MaxFileSize50000〃 Action = " Drop"Filter Type = " MaxFileSize " Operator ="GreaterThan" Value=" 50000"Filter FilterOperator = " AND" Type=" Family" Operator =〃 NotEqual"Value=" MESSAGE"與規(guī)則1相關(guān)聯(lián)的名稱是“MaxFileSizdOOOO”,而與該規(guī)則相對應(yīng)的動作是用于 移除匹配包含在規(guī)則中的過濾器(多個(gè))的任何媒體的“放棄(Drop)”。該規(guī)則指定了兩個(gè) 過濾器。第一過濾器是針對文件的大小應(yīng)用的“MaxFileSize”類型。過濾器運(yùn)算符是“大 于”,其中作為值是“50000”。第二過濾器特征在于稱為“族(Family)”的類型。該過濾器 針對媒體族來應(yīng)用(例如,圖像、音頻等)。與過濾器相關(guān)聯(lián)的運(yùn)算符不是“不等于”并且該 值是“消息”。通過使用布爾運(yùn)算符“與”來組合過濾器。因此,如果文件具有大于50000的 大小,并且不是族“消息”,則執(zhí)行所指定的動作。接下來描述稱為規(guī)則2的另一規(guī)則Rule Name = " MaxFileSize25000AndContentTypes"Action = " Drop "Filter Type =" MaxFileSize"Operator =" GreaterThan" Value=" 25000"BracketOpenFilterOperator = " AND"Filter Type =" ContentType"Operator = " Equals" Value=" image/wbmp"Filter FilterOperator=" 0R〃Type =" ContentType" Operator =" Equals"Value=" image/png"BracketClose該規(guī)則的名稱是“MaxFileSize25000AndContentTypes”并且相應(yīng)的動作是“放棄 (Drop)”。規(guī)則2的目的是移除匹配包含在該規(guī)則中的過濾器(多個(gè))的任何媒體。接下 來呈現(xiàn)規(guī)則2的結(jié)構(gòu)的詳細(xì)描述。 僅指定了下列過濾器〇第一過濾器
■過濾器類型是“MaxFileSize”并且針對文件的大小來應(yīng)用過濾器;■運(yùn)算符是“大于”;■值是 “25000”;〇以“與”布爾過濾器運(yùn)算符開始的括號〇第二過濾器■過濾器類型是“ContentType”并且針對媒體的內(nèi)容類型(等同于mimetype)來應(yīng)用過濾器;■運(yùn)算符是“等于”;■值是“圖像/Vbmp”〇第三過濾器■具有布爾過濾器運(yùn)算符“或”;■過濾器類型是“ContentType”并且針對媒體的內(nèi)容類型(等同于mimetype)來 應(yīng)用過濾器;■運(yùn)算符是“等于”;■值是“圖像/png”〇括號關(guān)閉因此,如果文件具有大于“25000”的大小且(具有等于“圖像/Vbmp”的內(nèi)容類型或 具有等于圖像/png的內(nèi)容類型),則執(zhí)行在該規(guī)則中指定的動作。如果媒體是諸如電子郵 件或MMS的容器,則動作可以影響媒體或任何它的附件。動作可以包括保持(適配媒體); 保持和掃描(在適配之前對媒體進(jìn)行病毒掃描);放棄(在最后的消息中不包括附件);通 過(沒有適配媒體,使其保持未改變)。接下來描述在共同規(guī)則文件中定義的例子規(guī)則3。Rule Name = " MaxFileSize300000〃 Action = " Drop"Filter Type=" MaxFileSize" Operator = " GreaterThan" Value ="300000"呈現(xiàn)了完成該共同規(guī)則文件的另一例子規(guī)則4。Rule Name = “ VirusScan“ Action = “ ScanKeep “Filter Type = " Family" Operator = " Equals" Value = " MESSAGE"在這種情況下,共同規(guī)則文件包含 規(guī)則3,該規(guī)則3 “放棄”具有大于300000的大小的所有文件;以及·規(guī)則4,該規(guī)則4對作為消息的任何媒體執(zhí)行病毒掃描??紤]將共同規(guī)則文件應(yīng)用于所有控制器并且一些控制器“X”已經(jīng)定義了包含規(guī)則 1和2的規(guī)則文件的情況。當(dāng)向選擇的代碼轉(zhuǎn)換器發(fā)送適配請求時(shí),該控制器將發(fā)送包含規(guī) 則1至4的被稱為“RuleFilel”的規(guī)則文件。呈現(xiàn)了 “RuleFilel”的結(jié)構(gòu)。Rule Name = " MaxFileSize50000〃 Action = " Drop"Filter Type=" MaxFileSize" Operator =" GreaterThan" Value ="50000"Filter FilterOperator = " AND " Type = " Family " Operator =〃 NotEqual"
Value=" MESSAGE"Rule Name = " MaxFileSize25000AndContentTypes" Action=" Drop"Filter Type=" MaxFileSize" Operator = " GreaterThan" Value ="25000"
BracketOpen FilterOperator = " AND"Filter Type =" ContentType" Operator =" Equals" Value ="image/wbmp"Filter F i 11 e r Op e r a t ο r = “ OR “ Type ="ContentType" Operator = " Equals"Value=" image/png"BracketCloseRule Name = " MaxFileSize300000〃 Action = " Drop"Filter Type=" MaxFileSize" Operator = " GreaterThan" Value ="300000"Rule Name = " VirusScan" Action = " ScanKeep"Filter Type = " Family" Operator = " Equals" Value = " MESSAGE"在提供該特征的實(shí)施例的背景下,XML用于管理在規(guī)則文件內(nèi)部的規(guī)則的結(jié)構(gòu)。這 確保了便攜性和縮放性。接下來呈現(xiàn)RuleFilel的XML版本。< ? xml version = “ 1.0〃 encoding = “ UTF-8" ? ><ContentFiltering xmlns xsi = “ http://www.w3.org/2001/ XMLSchema-instance“xsi:type =“ ContentFiltering" ><CompatibilityVersion>7. 0</CompatibilityVersion><Version>7. 0</Version><Name>RuleFilel</Name><FiIterRule Name = “ MaxFileSize50000 “ Action =〃 Drop" ><Filter Type=" Max FileSize" Operator =〃 GreaterThan" Value=" 50000" />〈Filter FilterOperator = “ AND “ Type =〃 Family" Operator = " NotEqual"Value=" MESSAGE" /></FilterRule>〈FilterRule Name = " MaxFileSize25000AndContentTypes" Ac tion=" Drop" >〈Filter Type = " MaxFileSize " Operator =〃 GreaterThan" Value=" 25000〃 />〈Bracket FilterOperator = 〃 AND" ><Filter Type =" ContentType" Operator=〃 Equals"Value=" image/wbmp" /><Filter FilterOperator = " OR" Type ="ContentType"Operator =" Equals"Value=" image/ png" /></Bracket></FilterRule><FiIterRule Name = “ MaxFileSize300000 " Action =〃 Drop" ><Filter Type = " MaxFileSize " Operator =〃 GreaterThan" Value=" 300000〃 /></FilterRule><FiIterRule Name =" VirusScan" Action =" ScanKeep" ><Fi IterType = “ Family " Operator =〃 Equals" Value=" MESSAGE" /></FilterRule></ContentFiltering>下面呈現(xiàn)了內(nèi)容過濾的例子??紤]多媒體容器MMS 特性名稱mmsLmms族消息大小171100內(nèi)容類型應(yīng)用 /vnd. wap. multipart, mixed附件的數(shù)目3匪S附件特性名稱image, jpg族圖像大小75000內(nèi)容類型圖像/jpg名稱image2. jpg族圖像大小45000內(nèi)容類型圖像/jpg名稱image, png族圖像大小50000內(nèi)容類型 圖像/png
根據(jù)下面的步驟來執(zhí)行內(nèi)容過濾·匪S通過內(nèi)容過濾;■由于媒體屬于族“消息”,所以規(guī)則“VirusScan”估計(jì)成“真”;■媒體被標(biāo)記為“掃描病毒”。
·附件image, jpg通過內(nèi)容過濾;■由于媒體不是消息并且它的大小大于50000,所以規(guī)則“MaxFileSizeSOOOO”估 計(jì)成“真”;■媒體被標(biāo)記為“放棄”?!じ郊mage2. jpg通過內(nèi)容過濾; ■對于該媒體沒有任何規(guī)則估計(jì)成“真”; 第二附件image, png通過內(nèi)容過濾;■由于媒體具有大于25000的大小并且具有內(nèi)容類型“圖像/png”,所以對于該媒 體規(guī)則 “MaxFileSize25000AndContentTypes” 估計(jì)成“真”;■媒體被標(biāo)記為“放棄”。在執(zhí)行了內(nèi)容過濾插件之后繼續(xù)插件程序。這導(dǎo)致通過反病毒插件來病毒掃描 MMS媒體及其內(nèi)容。然后,開始適配過程??紤]適配和內(nèi)容過濾產(chǎn)生具有下列形式的輸出 匪S的情況。MMS 特性名稱mmslout, mms族消息大小25175內(nèi)容類型應(yīng)用 /vnd. wap. multipart, mixed附件的數(shù)目2匪S附件特性名稱image2. gif族圖像大小24000內(nèi)容類型圖像/gif名稱:removal_notification. txt族文本大小75內(nèi)容類型文本/明文(plain)假設(shè),作為內(nèi)容適配的結(jié)果,適配了“image2· jpg”以輸出“image2· gif”。注意到, “image, jpg”和“image, png”兩者都被“放棄”并且由于應(yīng)用了內(nèi)容過濾動作而不是輸出 匪S的一部分。新媒體“removal_notification. txt”被添加到輸出消息。這由于移除了 “image, jpg”和“image, png”。代碼轉(zhuǎn)換器被設(shè)計(jì)成,一旦移除了媒體,則附接解釋性文本 通知。該通知意在向MMS的接收器提供對沒有適配并且移除了原來在MMS中的一些媒體的 解釋。以外部插件的形式在代碼轉(zhuǎn)換器中呈現(xiàn)了反病毒掃描。在這種情況下,插件架構(gòu)用于向諸如McAffee或Kaspersky的第三方反病毒掃描引擎提供接口。由于具有任何外部 插件,反病毒插件的存在是可選的。在插件程序級別,意指執(zhí)行反病毒插件的插件程序?qū)?含執(zhí)行反病毒插件所屬于的插件組的命令。反病毒插件的執(zhí)行并沒有自動暗示將對媒體病毒掃描。僅在通過內(nèi)容過濾標(biāo)記為 “掃描病毒”的媒體上執(zhí)行病毒掃描。一些第三方反病毒引擎可以被安裝為單獨(dú)的庫。其它 第三方反病毒引擎可以被安裝為客戶端服務(wù)器。反病毒插件將以正確地與第三方反病毒引 擎對接這樣的方式來寫入。在任何情況下,反病毒插件是代碼轉(zhuǎn)換器進(jìn)入點(diǎn)以在通過內(nèi)容 適配的媒體上執(zhí)行病毒掃描。
因此,在上述實(shí)施例中,已經(jīng)提供了下列特征(1)解析消息的能力,以便檢查附 件;(2)表征附件的能力,以便根據(jù)內(nèi)容類型來對其過濾;以及⑶調(diào)節(jié)用戶定義的、可擴(kuò)展 的并分級的規(guī)則集合,以確定是否需要媒體元素。編輯動作確定怎樣處理媒體附件。編輯動作可以包括下列中的一個(gè)或多個(gè)將附 件呈現(xiàn)給適配過程;保持附件并在呈現(xiàn)給適配過程之前對媒體進(jìn)行病毒掃描;以及放棄附 件。編輯動作可以包括調(diào)用反病毒和入侵防護(hù)軟件程序。盡管已經(jīng)詳細(xì)描述了本發(fā)明的具體實(shí)施例,但是應(yīng)當(dāng)理解,所描述的實(shí)施例意在 是說明性的而非限制性的。在不背離本發(fā)明的最廣義方面的范圍的情況下,可以在下面的 權(quán)利要求的范圍內(nèi)做出在附圖中示出并在說明書中描述的實(shí)施例的各種變化和修改。
權(quán)利要求
一種用于過濾多媒體數(shù)據(jù)容器的內(nèi)容的系統(tǒng),包括網(wǎng)絡(luò)接口,用于從網(wǎng)絡(luò)接收所述多媒體數(shù)據(jù)容器;以及多個(gè)服務(wù)器單元,每個(gè)服務(wù)器單元包括處理器的集合和存儲設(shè)備的集合;在其上安裝了過濾器定義模塊,具有存儲在計(jì)算機(jī)可讀存儲介質(zhì)中的計(jì)算機(jī)可讀指令,用于從用戶獲取過濾器的集合的定義,每個(gè)過濾器指定內(nèi)容描述符的定義、描述符準(zhǔn)則以及運(yùn)算符;規(guī)則構(gòu)造模塊,具有存儲在計(jì)算機(jī)可讀存儲介質(zhì)中的計(jì)算機(jī)可讀指令,用于從所述用戶獲取內(nèi)容過濾規(guī)則的集合,每個(gè)規(guī)則指定所述過濾器的子集和過濾動作的布爾表達(dá);用于表征多媒體數(shù)據(jù)容器的每個(gè)組件的內(nèi)容,確定所述內(nèi)容描述符,應(yīng)用所述運(yùn)算符并且確定所述每個(gè)過濾器的狀態(tài)的模塊;用于確定每個(gè)所述規(guī)則的二元輸出的模塊;以及用于執(zhí)行與服從所述二元輸出的預(yù)設(shè)值的所述內(nèi)容相關(guān)的過濾動作的模塊。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),進(jìn)一步包括用于使得所述用戶能夠根據(jù)代數(shù)句法來提 供所述布爾表達(dá)的模塊。
3.根據(jù)權(quán)利要求1至2中的任何一個(gè)所述的系統(tǒng),進(jìn)一步包括用于使得所述用戶能夠 以樹結(jié)構(gòu)的形式來提供所述布爾表達(dá)的模塊。
4.根據(jù)權(quán)利要求1至3中的任何一個(gè)所述的系統(tǒng),進(jìn)一步包括用于使得所述用戶能夠 通過編輯和修整樹的圖形來輸入所述布爾表達(dá)的模塊,所述樹的每個(gè)節(jié)點(diǎn)表示運(yùn)算符和各 自的運(yùn)算數(shù)的集合。
5.根據(jù)權(quán)利要求1至4中的任何一個(gè)所述的系統(tǒng),進(jìn)一步包括用于以由規(guī)則執(zhí)行的特 定過濾動作排除至少一個(gè)后續(xù)規(guī)則的執(zhí)行所根據(jù)的順序來布置所述規(guī)則的模塊。
6.根據(jù)權(quán)利要求1至5中的任何一個(gè)所述的系統(tǒng),進(jìn)一步包括用于以形式圖表的形式 來呈現(xiàn)內(nèi)容過濾的所述集合的模塊。
7.根據(jù)權(quán)利要求1至6中的任何一個(gè)所述的系統(tǒng),進(jìn)一步包括用于以下操作的模塊 選擇特定規(guī)則,每個(gè)指定包括最多預(yù)設(shè)數(shù)目的過濾器的過濾器子集;對于所述特定規(guī)則中的每個(gè),估計(jì)用于過濾器子集的所有的值的過濾器子集的所述布 爾表達(dá),以產(chǎn)生作為在所述過濾器子集中的過濾器的數(shù)目的2μ個(gè)比特的陣列,其中μ > 1 ;以及在存儲設(shè)備中存儲所述比特的陣列。
8.—種過濾數(shù)據(jù)容器的內(nèi)容的方法,包括 指定表征所述內(nèi)容的二元條件的集合;指定運(yùn)算符的集合,一個(gè)運(yùn)算符被指定空后繼者,并且每個(gè)其它運(yùn)算符被指定來自所 述運(yùn)算符的集合的后繼者;形成包括N > 1個(gè)葉記錄的葉向量,每個(gè)葉記錄具有來自所述運(yùn)算符的集合和所述二 元條件的各自的子集當(dāng)中的葉運(yùn)算符;形成N個(gè)節(jié)點(diǎn)記錄的節(jié)點(diǎn)向量,每個(gè)具有節(jié)點(diǎn)運(yùn)算符字段和節(jié)點(diǎn)狀態(tài)字段; 將每個(gè)葉運(yùn)算符向量應(yīng)用于各自的二元條件,將結(jié)果放置在節(jié)點(diǎn)記錄的節(jié)點(diǎn)狀態(tài)字段中;將所述每個(gè)葉運(yùn)算符的后繼者放置在所述節(jié)點(diǎn)記錄的節(jié)點(diǎn)運(yùn)算符字段中;以及遞歸地執(zhí)行以下步驟用具有共同運(yùn)算符的后繼者的組合的記錄來取代具有所述共同的運(yùn)算符的標(biāo)識的節(jié) 點(diǎn)記錄;以及將所述共同運(yùn)算符應(yīng)用于所述標(biāo)識的節(jié)點(diǎn)記錄的節(jié)點(diǎn)狀態(tài)字段的條目,將結(jié)果狀態(tài)放 置在所述組合的記錄的節(jié)點(diǎn)狀態(tài)字段中。
9.根據(jù)權(quán)利要求8所述的方法,進(jìn)一步包括將內(nèi)容索引確定為服從作為所述空后繼者 的所述共同運(yùn)算符的所述后繼者的所述結(jié)果狀態(tài)。
10.根據(jù)權(quán)利要求8至9中的任何一個(gè)所述的方法,進(jìn)一步包括 在所述取代之后確定所述節(jié)點(diǎn)向量的節(jié)點(diǎn)記錄的數(shù)目;以及將內(nèi)容索引確定為與等于一的節(jié)點(diǎn)記錄的數(shù)目相對應(yīng)的所述結(jié)果狀態(tài)。
11.根據(jù)權(quán)利要求9至10中的任何一個(gè)所述的方法,進(jìn)一步包括根據(jù)所述內(nèi)容索引的 值來執(zhí)行與所述內(nèi)容相關(guān)的指定的編輯動作。
12.根據(jù)權(quán)利要求8至11中的任何一個(gè)所述的方法,進(jìn)一步包括 接收表征所述數(shù)據(jù)容器的接收器的數(shù)據(jù);利用所述接收器的特性來確定所述內(nèi)容的兼容性;以及只要所述內(nèi)容與所述特性不可兼容,就根據(jù)所述特性修改所述內(nèi)容。
13.一種用于在過濾多媒體數(shù)據(jù)容器的內(nèi)容的系統(tǒng)中使用的操作控制器,所述操作控 制器包括處理器;過濾器定義模塊,用于從用戶獲取過濾器的集合的定義,其中每個(gè)過濾器是選擇的所 述內(nèi)容的描述符和各自的所述描述符的準(zhǔn)則的函數(shù);布爾表達(dá)獲取模塊,用于使得所述用戶能夠提供所述過濾器的布爾表達(dá)的集合以及相 對應(yīng)的內(nèi)容過濾動作;以及 預(yù)處理模塊,用于選擇表示為μ個(gè)比特的字符串的指定的μ個(gè)過濾器的布爾表達(dá),μ > 1 ;以及 對所述字符串的2μ個(gè)值中的每個(gè)估計(jì)所述布爾表達(dá),以產(chǎn)生2μ個(gè)條目的規(guī)則向量,每 個(gè)條目是與所述字符串的2μ個(gè)值中的一個(gè)相對應(yīng)的內(nèi)容度量的狀態(tài);所述過濾器定義模塊、布爾表達(dá)獲取模塊和預(yù)處理模塊中的每個(gè)具有存儲在計(jì)算機(jī)可 讀存儲介質(zhì)中的計(jì)算機(jī)可讀指令。
14.根據(jù)權(quán)利要求13所述的操作控制器,其中,所述布爾表達(dá)獲取模塊包括存儲在計(jì) 算機(jī)可讀介質(zhì)中的計(jì)算機(jī)可讀指令,以使得所述用戶能夠獲取以具有布爾運(yùn)算符、運(yùn)算數(shù) 和分隔符的代數(shù)格式的所述布爾表達(dá);并且其中,所述預(yù)處理模塊包括存儲在計(jì)算機(jī)可讀 存儲介質(zhì)中的計(jì)算機(jī)可讀指令,用于檢查所述布爾表達(dá)以標(biāo)識簡單模式,所述簡單模式將布爾運(yùn)算符和兩個(gè)運(yùn)算數(shù)封閉在 兩個(gè)分隔符之間,以及只要發(fā)現(xiàn)了所述簡單模式,則將所述布爾運(yùn)算符應(yīng)用到所述兩個(gè)運(yùn)算數(shù)以確定所述模式的二元值;以及 用所述二元值來取代所述簡單模式和所述兩個(gè)分隔符。
15.根據(jù)權(quán)利要求13至14中的任何一個(gè)所述的操作控制器,其中,所述布爾表達(dá)獲取模塊包括計(jì)算機(jī)可讀指令,以使得所述用戶能夠獲取以具有多個(gè)節(jié)點(diǎn)的樹結(jié)構(gòu)形式的所述 布爾表達(dá),并且其中,所述預(yù)處理模塊包括計(jì)算機(jī)可讀指令,用于創(chuàng)建具有多個(gè)記錄的樹模板,每個(gè)記錄對應(yīng)于各自的節(jié)點(diǎn)并且具有用于第一運(yùn)算數(shù)、 第二運(yùn)算數(shù)、當(dāng)前運(yùn)算數(shù)和后繼者記錄的四個(gè)字段;以及 以第一記錄開始,并且順序處理到最后的記錄 對各自的二元值應(yīng)用當(dāng)前記錄的運(yùn)算符,以產(chǎn)生新的二元值; 只要所述當(dāng)前記錄是最后的記錄,則將所述新的二元值確定為所述布爾表達(dá)的值;以及只要所述當(dāng)前記錄是中間記錄,則將所述新的二元值放置在所述后繼者記錄的運(yùn)算數(shù) 字段中。
全文摘要
公開了一種用于在支持多用途通信服務(wù)的網(wǎng)絡(luò)中的數(shù)據(jù)容器的內(nèi)容過濾的系統(tǒng)和方法。該內(nèi)容過濾系統(tǒng)與內(nèi)容適配系統(tǒng)集成。若干個(gè)服務(wù)器單元根據(jù)不同的協(xié)議來處理在源處規(guī)劃的5個(gè)容器。內(nèi)容過濾過程取決于表征容器的每個(gè)組件以產(chǎn)生內(nèi)容描述符的集合以及根據(jù)每個(gè)描述符的預(yù)設(shè)準(zhǔn)則來產(chǎn)生每個(gè)組件的二元條件的集合。規(guī)則的集合被設(shè)計(jì),其中每個(gè)規(guī)則將各自的布爾表達(dá)應(yīng)用于條件的子集以規(guī)定各自的內(nèi)容編輯動作。公開了指定和估計(jì)規(guī)則的布爾表達(dá)的方法。使用形式圖定義規(guī)則的相互依賴性。
文檔編號H04L29/02GK101849399SQ200880114945
公開日2010年9月29日 申請日期2008年11月7日 優(yōu)先權(quán)日2007年11月9日
發(fā)明者J·L·C·M·拉瓦利埃, L-R·普瓦里耶-博舍曼, R·E·諾頓, R·埃魯 申請人:萬特里克斯公司