专利名称:用于基于规则的内容过滤的系统和方法
技术领域:
本发明涉及多媒体消息服务,并且更具体地涉及用于内容过滤的方法和系统。
背景技术:
新兴多用途电信服务使得通信设备能够交换每个具有多个不同类型的组件的数 据容器。例如,组件可以包括表示文本、图像、音频信号或视频信号的数据。用于处理这样 的服务的复杂终端设备正在快速演进,导致通过相对短时间分隔的多“代”终端设备。由于多代终端设备的共存,所以出现了非兼容性问题。传送数据容器的终端设备 通常不知道接收终端设备的特点和能力(或在多播通信的情况下的接收终端设备)。这要 求提供用于确保正确地完整检测数据容器的内容或者正确地检测其特定组件以及通知接 收方终端设备对原始容器做出的任何改变的设施,如在2008年9月25日提交的序列号为 12/238,390的共同待决的美国申请,通过引用的方式将其内容合并于此。除了兼容性问题之外,传送每个可选地具有各自的附件的多个组件进一步增加了 遭受诸如病毒的恶意的插入。容器遭受侵入需要提供一种内容过滤设施。因此,需要一种用于在提供多用途服务的网络中提供除了内容适配之外的内容过 滤的设施。
发明内容
本发明的一个目的是在提供多媒体服务的网络中提供内容过滤设施。另一目的是 将内容过滤设施与现有内容适配设施合并,以便实现全面、有效和经济的系统。根据本发明的另一方面,提供了一种用于编辑容器的内容的引擎,所述引擎包 括网络接口,用于从客户端接收所述容器并且将每个容器导向用于标识和解析所述 容器的多个控制器当中的各自的控制器;存储设备,用于将布尔变量的阵列存储到所述容器的子集,根据可应用于表征所述内容的第一运 算数和指定所述第一运算数的目标值的第二运算数来确定每个所述布尔变量;所述引擎进一步包括
操作管理器,包括存储在用于执行操作、管理和维护功能的计算机可读存储介质 中的计算机可读指令;图形用户接口,包括存储在计算机可读存储介质中的计算机可读指令,耦合到用 于输入编码规则的所述阵列和用于向每个控制器分配所述代码转换器的各自的子集的所 述操作管理器;以及
配置存储设备,用于存储分配到每个控制器的代码转换器的标识符。引擎进一步包括分类模块,包括存储在计算机可读存储介质中的计算机可读指 令,耦合到所述网络接口,用于将容器分类成容器类型,每个容器类型对应于规划容器所根 据的协议,并且将特定类型的容器从所述多个容器当中导向特定控制器。引擎进一步包括控制器负载平衡模块,包括存储在计算机可读存储介质中的计算 机可读指令,耦合到所述操作管理器,所述控制器负载平衡模块包括用于根据所述容器的 时变流率将代码转换器动态地分配到控制器的部件。引擎进一步包括代码转换器负载平衡模块,耦合到所述每个控制器,用于在分配 到所述每个控制器的代码转换器当中公平地分配容器编辑请求。引擎进一步包括刀片服务器,其托管所述每个控制器以及所述代码转换器的所述 各自的子集,所述刀片服务器包括处理器,其具有多个核心,每个核心排他性地分配到所述代码转换器的子集的代 码转换器;多个存储设备;输入接口 ;以及输出接口。引擎进一步包括代码转换器服务模块,耦合到所述多个代码转换器的每个代码转换器,用于从外 部源接收新程序;程序存储介质,用于存储可接入所述每个代码转换器的多个程序;以及程序寄存器,包括存储在计算机可读存储介质中的计算机可读指令,用于标识每 个新程序的功能以及根据各自的功能组织程序。在上述引擎中,代码转换器服务模块进一步包括存储在计算机可读存储介质中的 计算机可读指令,当执行所述计算机可读指令时,引起所述处理器的核心从所述多个控制器中的特定控制器接收特定容器和编辑请求;选择和执行与所述编辑请求有关的程序;以及将结果返回所述特定控制器。所述程序寄存器包括计算机可读指令,当执行所述计算机可读指令时,引起所述 处理器的核心根据各自的功能来组织程序;以及用各自的新程序来取代现有程序。在上述引擎中,所述程序存储介质包括存储在计算机可读存储介质中的驻留程序;以及存储在计算机可读存储介质中的动态加载的外部程序。
根据本发明的另一方面,提供了一种过滤具有多个组件的数据容器的方法,包 括选择组件;确定表征所述组件的内容的多个二元条件;规划布尔表达的集合,每个布尔表达包括布尔运算符和从所述二元条件的集合中 选择的至少两个运算数;执行所述布尔表达的集合中的每个布尔表达,以确定内容指示符的集合,所述指 示符与所述布尔表达具有一对一的对应关系;以及执行与所述指示符中的每个相对应的所述内容有关的编辑功能。所述方法进一步包括基于单个二元条件执行进一步的编辑功能。
所述方法进一步包括以由于执行布尔表达而产生的指示符有条件地排除至少一 个后续布尔表达的执行所根据的顺序来布置所述布尔表达。如上所述的方法进一步包括根据以下来确定所述布尔表达所述内容的指定描述符;以及预设与所述描述符相对应的准则。在上述方法中,执行所述编辑功能的步骤包括以下中的一个扫描所述内容以检测恶意插入,并且移除检测到的恶意插入;以及扫描所述内容以检测恶意插入,并且一旦检测到恶意插入,则删除所述内容。根据本发明的又一方面,提供了一种使用计算设备来编辑内容的方法,包括规划所述内容的描述符的集合;指定与所述描述符相对应的准则的集合;执行运算符的集合;定义布尔变量的集合,每个布尔变量是将来自所述运算符的集合当中的运算符应 用到第一运算数和第二运算数的结果,其中所述第一运算数是从所述描述符的集合当中选 择的描述符,并且所述第二运算数是从所述准则的集合当中选择的准则;以及定义规则的集合,每个规则执行所述布尔变量的子集的从布尔表达的集合当中选 择的布尔表达,并且根据所述执行的结果来执行从与所述内容相关的动作的集合当中选择 的动作。在上述方法中,描述符的集合包括以下中的至少一个所述内容的大小;来自预 定义的内容族当中的内容族;编码方法;以及优先级指定。在上述方法中,所述运算符的集合包括以下中的一个或多个一元运算符;二元 运算符;算术运算符;比较运算符;逻辑运算符;集合运算符;以及用户定义的运算符。所述方法进一步包括通过包括存储在所述计算设备的存储器中的计算机可读指 令的图形用户接口来输入所述描述符的集合、所述准则的集合、所述运算符的集合以及所 述布尔表达的集合。方便地,所述方法进一步包括选择所述内容以包括所述数据容器的一部分。根据本发明的另一方面,提供了一种用于过滤多媒体数据容器的内容的系统,包 括网络接口,用于从网络接收所述多媒体数据容器;以及
多个服务器单元,每个服务器单元包括处理器的集合和存储设备的集合,在其上 安装了 过滤器定义模块,具有存储在计算机可读存储介质中的计算机可读指令,用于从 用户获取过滤器的集合的定义,每个过滤器指定内容描述符的定义、描述符准则以及运算 符;规则构造模块,具有存储在计算机可读存储介质中的计算机可读指令,用于从所 述用户获取内容过滤规则的集合,每个规则指定所述过滤器的子集和过滤动作的布尔表 达;用于表征多媒体数据容器的每个组件的内容,确定所述内容描述符,应用所述运 算符并且确定所述每个过滤器的状态的模块;
用于确定每个所述规则的二元输出的模块;以及用于执行与服从所述二元输出的预设值的所述内容相关的过滤动作的模块。所述系统进一步包括以下模块中的至少一个,每个模块包括存储在计算机可读存 储介质中的计算机可读指令(1)用于配置服务器单元以接受根据从已知协议的集合中选择的任何协议形成的 多媒体数据容器的模块;(2)用于在同样配置的服务器单元当中公平地分发多媒体数据容器的模块;(3)用于使得用户能够根据代数句法来提供布尔表达的模块;(4)用于使得用户能够以树结构的形式来提供布尔表达的模块;(5)用于使得用户能够通过编辑和修整树的图形来输入布尔表达的模块,该树的 每个节点表示运算符和各自的运算数的集合;(6)用于验证布尔表达的正确性的模块;(7)用于以由规则执行的特定过滤动作排除至少一个后续规则的执行所根据的顺 序来布置规则的模块;(8)用于提示用户指定在布尔表达的值上的规则条件句中的至少一个的连续规则 的模块;(9)用于以形式图表的形式来呈现内容过滤的集合的模块;以及(10)用于优化每个规则的布尔表达的模块。所述系统进一步包括用于执行以下操作的模块,包括存储在计算机可读存储介质 中的计算机可读指令选择特定规则,每个指定包括最多预设数目的过滤器的过滤器子集; 对于特定规则中的每个,估计用于过滤器子集的所有的值的过滤器子集的布尔表达,以产 生作为在过滤器子集中的过滤器的数目的2μ个比特的阵列,其中μ >1;以及在存储设 备中存储所述比特的阵列。根据另一方面,本发明提供了一种过滤数据容器的内容的方法。所述方法包括指 定二元条件的集合,指定运算符的集合,形成叶向量以及形成节点向量。二元条件的集合表征内容。运算符中的一个被指定空后继者,而每个其它运算符 被指定来自运算符的集合内的后继者。叶向量包括Ν> 1个叶记录。每个叶记录具有来自 运算符的集合当中的叶运算符以及二元条件的各自的子集。节点向量具有N个节点记录, 每个具有节点运算符字段和节点状态字段。
每个叶运算符被应用于各自的二元条件,并且结果被放置在节点记录的节点状态 字段中。然后,每个叶运算符的后继者被放置在节点记录的节点运算符字段中。在处理了每个叶记录之后,处理了节点向量。具有共同运算符的节点记录被标识 并且被组合的记录取代。共同运算符被应用于所标识的节点记录的节点状态字段的条目, 并且结果状态被放置在所组合的记录的节点状态字段中。共同运算符的后继者被放置在所 组合的记录的节点运算符字段中。内容索引被确定为应用服从共同运算符的后继者是空后继者的条件的共同运算 符的结果状态。替代地,所述方法可以在组合了共同运算符的节点记录之后保持跟踪节点 向量的节点记录的数目,并且内容索引被确定为与等于一的节点记录的数目相对应的结果 状态。所述方法进一步包括根据内容索引的值来执行指定编辑动作的步骤。根据进一步的方面,本发明提供了一种基于预定决定向量来过滤数据容器的内容 的方法。所述方法包括定义二元条件的集合,其中每个二元条件是选择的内容的描述符以 及描述符的各自准则;定义布尔表达的集合以及相对应的内容过滤动作;选择表示为μ比 特,μ > ι的字符串的指定的μ个二元条件的布尔表达;以及对于该字符串的2μ个值中 的每个估计布尔表达,以产生2μ个条目的决定向量,每个条目是与该字符串的2μ个值中的 一个相对应的内容度量的状态。一旦接收到数据容器,根据数据容器的内容来确定所指定的μ个二元条件的值。 然后使用μ比特的结果字符串的值来对决定向量编索引,以获取确定是否需要应用内容 过滤动作的布尔表达的值。布尔表达可以以具有布尔运算符、运算数和分隔符的代数格式来获取。然后,通过 检查布尔表达来估计布尔表达以标识简单模式,该简单模式封闭在两个分隔符之间的布尔 运算符和两个运算数。只要发现了简单模式,就将布尔运算符以及两个分隔符应用到两个 运算数以确定模式的二元值以及简单模式,用二元值来取代布尔运算符。检查布尔表达以 检测简单模式的过程被重复,直到布尔表达被减少到确定是否应用编辑动作的单个二元值 (“真”或“假”)。替代地,布尔表达可以以具有多个节点的树结构的形式来获取。然后,接着估计节 点来估计布尔表达。具有多个记录的树模板被创建。每个记录对应于各自的节点,并且具有 用于第一运算数、第二运算数、当前运算符和后继者记录的四个字段。从第一记录开始并且 后续继续进行到最后的记录,当前记录的运算数被应用于从字符串的当前值确定的各自的 二元值,以产生新的二元值。如果当前记录是最后的记录,则新的二元值是布尔表达的值。 如果当前记录是中间的记录,则新的二元值被放置在后继者记录的运算数字段中。
现在将参考附图举例描述本发明的实施例,在附图中图1图示了根据本发明的实施例的用于过滤和适配通过网络传送的数据容器的 网络支持服务控制器和编辑引擎;图2图示了根据本发明的实施例的包括控制器和代码转换器的编辑引擎;图3图示了根据本发明的实施例的多媒 体容器、容器组件的内容描述符和内容过 滤器;
图4图示了根据本发明的实施例的与可应用于数据容器的规则的集合相关联的 布尔表达的代数形式;图5图示了根据本发明的实施例的内容过滤过程的基本组件;图6图示了根据本发明的实施例的导出容器内容的描述符的过程;图7图示了根据本发明的实施例的用于内容过滤的系统;图8图示了根据本发明的实施例的与图7的系统类似的适于具有多个组件的容器 的系统;图9详述了根据本发明的实施例的内容过滤过程;图10图示了根据本发明的实施例的估计规则的布尔表达的方法;图11图示了根据本发明的实施例的用于编码过滤规则的第一示例性规则树结 构;图12图示了用于编码图11的规则树结构的第一数据结构;图13图示了根据本发明的实施例的用于编码过滤规则的第二示例性规则树结 构;图14图示了应用于图13的第二示例性规则树的图12的第一数据结构;图15图示了根据本发明的实施例的应用图12和图14例示的第一数据结构的过 程;图16图示了根据本发明的实施例的用于编码规则树的第二数据结构;图17图示了根据本发明的实施例的应用图16中例示的第二数据结构的过程;图18图示了根据本发明的实施例的使用规则树来确定规则结果的过程;图19详述了根据本发明的实施例的形成与图18的过程相关联的叶向量的步骤;图20图示了根据本发明的实施例的预处理用于快速运行时间规则执行的布尔表 达的方法;图21图示了图20的方法的示例性实现;图22图示了根据本发明的实施例的与过滤器定义和规则定义相关的数据的处 理;图23图示了顺序过滤多媒体容器的组件的过程;图24图示了根据本发明的实施例的应用用于内容过滤的多个规则的过程;图25图示了根据本发明的实施例的图示确定内容过滤动作的规则的互相依赖性 的图;图26图示了根据本发明的实施例的图2的引擎的操作管理器的模块;图27图示了根据本发明的实施例的图2的代码转换器的模块;以及图28图示了根据本发明的实施例的图2的引擎的代码转换器的模块。
具体实施例方式术语多媒体服务(MMS)该术语用于通俗地表示多内容通信服务,其中通过网络在终 端当中交换诸如文本、音频信号、视频信号、图像、呈现等的不同形式的信息内容。从一个终 端传输到另一终端的编码信息通常被布置在单个数据流中,并且时间交织段对应于不同的信息内容。容器容器是存储在计算机可读介质上并且通过计算机网络传送的计算机文件。 容器被构造成包含各种类型的数据。容器可以支持具有同步信息的多个文本、音频和视频 流以使得能够协调回放各种流。容器组件容器包括分段,每个分段包括以特定形式编码的数据,诸如文本、音频 数据、图像数据或视频数据。术语“容器组件”指的是在一个分段中的数据。容器组件可以 被简称为“组件”。在多媒体消息系统中,组件也被称为“媒体”。容器筛选“容器筛选”指的是检查容器的内容的过程,包括所有组件,以确保没有 任何不想要的插入,尤其是有害的插入。容器适配“容器适配”指的是修改发现的容器组件的形式以与各自的接收器的解 码能力兼容的过程。如果呈现容器组件以适合接收器不可行,则可以删除容器组件。容器 适配过程是接收器特定的,而容器筛选的过程独立于希望接收器的类型。容器编辑术语“容器编辑”指的是容器筛选和容器适配的组合过程。容器调节该术语可以与“容器编辑”同义地使用。然而,即使当没有修改容器时, 容器调节也向容器附加了适当的通知。代码转换器代码转换器是执行编码信息的直接数字到数字转换的设备,以使得 能够以适合特定接收器的不同格式来再现一个格式的信息记录。图1图示了提供从传送设备120到接收设备160的路径的网络140,在下文中称为 传送器120和接收器160。除了许多不同类型的其它硬件终端设备,网络140支持服务控 制器103和编辑引擎106。传送器120发送容器到接收器160,其中容器可以包括诸如编码 文本、音频信号、静止图像、动画(图像的快速显示)以及视频信号的不同内容类型的数据。 容器可以被导向服务控制器103,其进而将容器导向用于检查该容器的编辑引擎106以及 在需要时编辑该容器的内容。编辑过程包括数据筛选以确保没有任何不想要的插入,尤其 是有害插入,满足具体要求的内容修改,以及与各自接收器的解码能力兼容的内容适配。图2图示了编辑引擎106。网络接口 210通过链路204从客户端接收容器。容器 被导向到分别标识为240(1),240(2),...,240(m)的m > 1个控制器240中的一个。控制 器204可以被实现为不同的硬件实体或将如下所述的共享主管多个代码转换器280的计算 设备。控制器240是协议特定的,每个被编程以处理根据相应协议形成的容器。处理特定协 议的控制器被认为具有相同控制器类型。控制器可以分组成控制器组,每个控制器组处理 根据相同协议规划的容器。编辑引擎106可以具有不同类型的控制器。然而,整个编辑引 擎106可以被配置成具有相同类型的控制器。编辑引擎106也可以具有负载平衡模块290。编辑引擎106包括多个代码转换器280,分别标识为280 (1) >280(2),... , 280 (n)。 代码转换器280的主要功能是执行编码信息的直接数字到数字转换,以使得能够以适于特 定接收器的不同格式来再现一个格式的信息记录。然而,代码转换器还可以执行内容过滤 以及内容适配的过程。多个选择的代码转换器280被分配到每个控制器240,一起形成控 制配件。例如,在图2中,控制器240(1)和代码转换器280(1)至280(5)形成了安装在各 自的计算设备上的一个控制配件。控制器240 (m)和代码转换器280 (n-2)至280 (n)形成 了安装在另一计算设备上的另一控制配件。控制配件优选地安装在也被称为“刀片服务器” 服务器单元上,它是支持处理器和存储设备的单个电路板。
处理器220托管网络接口 210,并且操作管理器230还被称为操作控制器。网络接 口 210从通信地耦合到网络140的客户端接收容器(图1)。操作管理器230包括存储在计 算机可读存储介质中的计算机可读指令,用于执行操作、管理和维护功能。服务控制器103可以接收容器,并且向编辑引擎106中的一个发送容器编辑请求。处理器220还托管图形用户接口(未示出),它包括存储在计算机可读存储介质中 的计算机可读指令,耦合到操作管理器230,用于输入编码的规则的阵列并且用于向每个控 制器240分配代码转换器的各自的子集。配置存储设备260存储分配到每个控制器的代码 转换器的标识符。控制内容过滤过程的规则可以被存储为存储在每个代码转换器280可访问的规 则存储器225中的共同规则文件。替代地,托管控制器和关联代码转换器的每个计算设备 (服务器单元)可以存储规则文件的相关子集。图3图示了具有分别标识为320(1) ,320(2)等的多个组件320的容器。组件320可 以包含文本、音频记录、编码图像、视频记录和任何其它内容类型。使用分别标识为332 (1)、 332(2)、...332 (j)和332 (D)的描述符332的集合330来表征组件的内容。D是描述符的 总数目。根据诸如内容类型、标识符(名称)、扩展、数字签名、密码功能、优先级和文件大小 的若干属性来定义内容描述符。因为内容过滤要求随着多媒体电信的演进技术而变化,所 以可以添加或删除描述符。根据本发明的实施例,容器组件的内容的特性被表示为二元变量的集合,每个二 元变量确定内容是否满足特定准则。通过检查容器的内容来确定接收到的容器的内容描述 符的值。因此,执行该功能的代码转换器知道所接收到的容器的格式以及规划容器所根据 的协议的暗示。通过将运算符344应用于两个运算数来确定表征二元变量的值;内容描述 符(342)的值和相对应的准则346由内容过滤系统的安装者(用户)输入。运算符344和 两个运算数342和346据称形成过滤器340 (也被称为内容条件或简化条件)。因此,容器 组件的内容的特征在于过滤器的集合,每个过滤器具有值“真”或“假”。在为适合接收器而适配之前编辑容器是基于规则的集合的,每个规则确定编辑动 作,诸如删除整个内容、删除在内容中发现的恶意插入、或移除内容的附加。规则是过滤器 的各自子集的函数。已经选择过滤器是二元变量,定义规则的函数优选被规划为过滤器子 集的布尔表达。因此,用于内容过滤的系统的安装者(用户)(如将针对图7和图8更详细 描述的)通过过滤器的子集、布尔表达以及根据执行布尔表达的结果而执行的动作定义了 规则。图4图示了与可应用于数据容器的组件的存储在规则阵列420中的四个规则集合 相关联的布尔表达的代数形式。相同的规则集合还可应用于规则过滤器的至少一个其它组 件。通过一个过滤器(大小> 30000)来定义第一规则,规则-1,其中内容描述符是组 件的大小,运算符是“大于”并且准则是30000 (附图标记440)。如果规则结果是布尔“真”, 则各自的动作是放弃组件并且终止用于考虑中的组件的剩余规则的处理。通过两个过滤器(大小> 5000)并且(族兴消息)的布尔表达450来定义第二规 则,规则-2。第一过滤器的描述符是“大小”,准则是“5000”,并且运算符是“大于”。第二 过滤器的描述符是“族”,准则是“消息”,并且运算符是“不等于”。布尔表达包含单个运算符“或”。与规则_2相关联的动作与规则-1的动作相同。通过三个过滤器(大小> 25000)、(内容-类型=图像/wbmp)并且(内容-类 型=图像/png)的布尔表达460来定义第三规则,规则-3。第一过滤器的描述符是“大小”, 准则是“25000”,并且运算符是“大于”。第二过滤器的描述符是“内容_类型”,准则是“图 像/wbmp”,并且运算符是“等于”。第三过滤器的描述符是“内容_类型”,准则是“图像/ png”,并且运算符是“等于”。布尔表达包含两个运算符“与”和“或”。规则_3的动作与规 则-1的动作相同。注意到,“wbmp”指的是无线位图(无线应用协议、WAP、图形格式),并且 “png”指的是“便携式网络图形”。通过一个过滤器(族=消息)来定义第四规则,规则-4,其中描述符的内容是 “族”,准则是“消息”并且运算符是“等于”(附图标记470)。图5图示了合并在图2的操作管理器230中并且包括用户接口 520、用于获取过滤 器定义的过滤器创建模块530、用于获取规则定义的规则构造模块540、用于存储过滤器定 义的存储分隔550以及用于存储规则定义(规则结构)的存储分隔560的数据获取子系统 的基本组件。用户接口 520使得安装者(用户)能够提供输入数据512,以定义过滤器的集 合和规则的集合。过滤器创建模块530包括存储在计算机可读存储介质中的计算机可读指 令,计算机可读指令当被执行时使处理器提示安装者输入内容描述符定义、用于每个定义 的准则以及运算符。根据接收到的容器的内容来确定描述符的值。规则构造模块540包含存储在计算机可读存储介质中的计算机可读指令,当执行 计算机可读指令时,计算机可读指令当被执行时使处理器提示安装者输入用于每个规则的 布尔表达,并且从预定义的动作的集合中选择动作。计算机可读指令还使处理器解析布尔 表达并且确定表达的执行方面的序列。过滤器定义被存储在存储设备的存储分隔550中,并且规则定义被存储在同一存 储设备或另一其它存储设备的存储分隔560中。图6图示了使用存储在存储分隔550中的内容描述符的定义来确定接收到的容器 612的内容描述符的值的过程。在步骤620中解析所接收到的容器612,以标识容器的组件。 在步骤640中分析每个组件,并且在步骤650中将结果与从存储分隔550中读取的内容描 述符定义配对。图7图示了根据本发明的实施例的用于内容过滤的系统的整体组织。存储器710 存储用于所有相关过滤器的数据。通过来自由图5的模块530确定的运算符的集合740的 运算符来定义每个过滤器,在图6的步骤650中确定来自内容描述符720的内容描述符,并 且在图5的模块530中确定来自描述符的集合730的描述符准则。每个过滤器的二元值 (“真”或“假”)被存储在存储设备750中,用于在执行图5的模块540中定义的规则的集 合中使用。通过过滤器子集、布尔表达和动作的来定义每个规则。存储器770存储根据系统 安装者(用户)输入在图5的模块540中确定的编码的布尔表达。存储器760存储在每个 规则和各自的布尔表达中使用的过滤器的标识符。存储器780存储由于估计布尔表达的各 自的结果而将执行的编辑动作的指示。每个布尔表达的执行产生二元结果以及各自的编辑 动作。一旦完成了编辑动作,则将已编辑的内容放置在存储器790中。尽管图7图示了根据本发明的实施例的当应用于一个组件时用于内容过滤的系统,但是图8图示了当应用于k> 1容器组件时用于图7的内容过滤的系统。存储设备810 存储k个容器组件中的每个的所有相关过滤器的数据。与每个过滤器有关的数据分别被标 识为812(1)至812 (k)。容器的组件被顺序地处理。对于考虑中的组件,应用每个过滤器的 运算符的结果被保持在存储器850中。N > 1个编码的布尔表达的集合被存储在存储器864 中。布尔表达被分别标识为870(1)至870 (N),每个与来自被分别标识为880(1)至880 (N) 的N个编辑动作的各自的编辑动作相关联。图9图示了内容过滤的示例性过程。用于图7或图8的内容过滤的系统的安装 者(用户)已经初始定义了分别标识为920(1)至920 (5)的五个内容描述符,分别标识为 922(1)至922(8)的八个描述符准则、以及分别标识为924(1)至924(4)的四个运算 符。安 装者已经定义了分别标识为930(1)至930 (12)的十二个过滤器,每个过滤器指定内容描述 符920中的一个、准则922中的一个以及运算符924中的一个。如在图6的步骤650中描 述的,一旦确定了五个内容描述符920(1)至920 (5)的值,确定了十二个过滤器的二元值。安装者已经定义了分别标识为950(1)至950(6)的六个布尔表达,其中每个布尔 表达与12个过滤器的子集相关联。例如,布尔表达950 (2)与过滤器930(2)、930(8)和 930(11)相关联。安装者定义了分别标识为960(1)至960 (4)的四个动作。然后,安装者使 用图5的规则构造模块540来定义分别标识为940(1)至940 (9)的九个规则。每个规则与 单个布尔表达950和单个动作960相关联。例如,规则940 (1)指定布尔表达950 (2)和动 作960 (2),而规则940 (9)指定布尔表达950 (5)和动作960 (4)。规则可以基于一个过滤器,其中该规则的结果是过滤器的二元值。例如,规则 940(7)仅取决于过滤器930(11)。布尔表达表示用于图7或图8的内容过滤的系统的安装者可以根据常规代数句法或根据树结构 来提供布尔表达950。图5的用户接口 520包括用于以代数形式编码布尔表达的第一模块 (未示出)以及用于编码作为树结构呈现的布尔表达的第二模块(未示出)。两个模块中 的每个提供了各自的模板,以使得安装者能够正确地指定布尔表达。布尔表达包括简单操作、复合操作和复杂操作。简单操作被展现为运算符和两个 运算数,该运算符和运算数由两个分隔符(诸如两个括号)来定界。运算符和运算数可以 以任何顺序列出,并且两个分隔符不需要彼此区分。两个运算符是表示两个过滤器的布尔 变量。复合操作包括运算符和两个简单操作,该运算符和两个简单操作由两个分隔符来定 界。复杂操作包括运算符和两个操作,所有都由两个分隔符来定界,其中两个操作中的任一 个可以是简单操作或复合操作。构成复杂操作的两个操作还可以是复杂操作。简单操作、 复合操作或复杂操作的分隔符可以相同。图10图示了根据本发明的实施例的估计布尔表达的方法,这要求仅识别和执行 简单操作。根据该方法,解析编码的布尔表达以标识简单操作。标识的简单操作的运算符被 应用于各自的运算数(过滤器)以产生“真”或“假”的二元值(例如,表示为“1”或“0”)。 已标识的简单操作、因此处理的运算符、运算数和两个分隔符被删除并且被运算的结果取 代。该过程递归地继续,直到已编码的布尔表达减少到单个简单操作,其结果变为布尔表达 的结果。在图10的步骤1012中,检查布尔表达以标识简单操作。如果发现了简单操作(步骤1014),则步骤1016执行简单操作并产生二元值。步骤1018用二元值来取代简单操作 的运算符、运算数和分隔符。然后,再次访问步骤1012以在减少的布尔结构中寻找另一简 单操作。如果步骤1014确定在布尔表达的当前形式中没有发现进一步的简单操作,则步骤 1020检查当前形式以确定它是否已经真正减少到单个二元值(“真”、“假”或“1”、“0”)。 如果是,则步骤1022报告单个二元值作为执行布尔表达的结果。如果步骤1020确定已处 理的布尔表达包含不止单个二元值,则步骤1024报告尚未正确地形成布尔表达的指示。 图10的过程优选地在数据输入期间执行,使得用户(安装者)可以纠正布尔表 达。用户接口 520或编辑引擎的某个其它组件可以被提供有计算机指令以分析错误地形成 的布尔表达并分析错误。根据本发明的实施例的编码和估计布尔表达的替代方法以来布尔表达的图形树 表示。图11中图示了示例性规则树1100,图11图示了标识为过滤器1至过滤器6的六个 运算数(六个过滤器)的布尔表达,每个是树的叶。标记为θ” 02和θ 3的三个运算符定 义了三个操作{过滤器1,θ ρ过滤器2}、{过滤器3,θ 2,过滤器4}和{过滤器4,θ3,过 滤器6}。每个运算符的中间后继者被定义。例如,θ” 02和θ 3的后继者分别是运算符 θ5、04和θ4,并且运算符04和95的后继者分别是θ5和“空”。具有“空”后继者的运 算符产生布尔表达的结果。运算符Q1产生二元输出Bi,它是运算符θ 5的运算数。运算符θ 2产生二元输出 Β2,它是运算符θ 4的运算数。运算符θ 3产生二元输出Β3,它是运算符θ 4的另一运算数。 运算符θ 4产生二元输出Β4,它是运算符θ 5的另一运算数。运算符θ5产生二元输出纩, 它是由树表示的布尔表达的结果。图12图示了用于表示图11的规则树1100的模板阵列1230。模板阵列1230的索 引1220如图12所示从0到19变化。模板阵列1230被划分成等于运算符总数目的多个记 录(在图11的示例性树中为五个),每个记录对应于运算符并且表示具有两个运算数的简 单操作。在处理了考虑中的容器之后已知过滤器的二元值。因此,记录包括各自的过滤器、 运算符定义和针对与中间后继运算符相对应的另一记录的指针的索引。“空”指针指示当前 记录是要处理的最后记录。用户可以以任何顺序输入记录,并且在图5的用户接口 520内 的模块(未示出)重新组织记录,使得可以顺序地处理记录,并且当处理任何记录时,已经 确定了各自的运算数的值。如图12所示,前三个记录对应于可应用于形成树的叶的六个过滤器的运算数θ ρ 92和θ3。第一记录的指针π (1)指向保持运算符Q1的二元结果B(I)的阵列的索引16。 第二记录的指针η (2)指向保持运算符θ2的二元结果Β(2)的阵列的索引12。第三记录 的指针η⑶指向保持运算符θ3的二元结果Β(3)的阵列的索引13。因此,当到达第四记 录时,已经计算了两个运算数B (2)和B (3)。运算符θ 4的二元结果B (4)被写入位置π (4) =17。因此,当到达第五记录时,已经知道各自的两个运算数B(I)和Β(4)。运算符94的 二元输出是布尔表达的结果,因为运算数θ 4没有后继者(即,空后继者)。图12中还图示了模板阵列1230的示例性激活。根据图6的过程确定的过滤器1 至过滤器6的值分别是“真”、“假”、“真”、“假”“真”和“真”。布尔运算符9工至θ5由用户 分别指定为“与”、“或”、“与”、“与”、和“异或”。由于运算符θ4( “异或”)具有空后继者, 所以运算符“X0R”产生二元输出,该二元输出是布尔表达的结果。
图13图示了与标记为Ll至Lll的十一个叶(过滤器)的布尔表达相对应的第二 示例性规则树1300,并且图14图示了应用于图13的规则树的模板阵列1430,类似于图12 的模板阵列1230,索引1420的范围从0至43。规则树1300包括标记为θ 2至θ ^的十个 运算符。第一叶Ll是运算符θ η的运算数,它没有后继者。对于一致性,表示规则树1300 的图14的模板阵列1430的第一记录(在图14中标记为记录1)概念上被查看,以包括运 算数Ll以及“不关注”运算数Φ和许可非存在运算符θ ”它传送Ll的值作为后继者运算 符θ η的运算数。如本领域所已知的,分配给运算数Φ的“不关注”值可以方便地是“真” 状态或“假”状态。剩余的十个记录,模板阵列1430的记录2至记录11,对应于运算符θ2 至θη。在图14的模板阵列1430中每个条目Li、L2至Lll是过滤器的索引。如上所述, 参照图12,与图5的用户接口相关联的输入组织模块522布置记录,使得可以顺序地处理记 录,每个记录已经确定了运算数。图15总结了使用模板阵列1230 (图12)或1430 (图14)的树编码方法。在步骤1520中,创建了具有多个记录的模板,每个记录对应于树中的节点。每个记录包括含有两 个过滤器的索引、当前运算符和指向与当前运算符的后继者相对应的后继者记录的指针的 四个字段。在步骤1530中,根据图6的过程确定的过滤器的列表准备用于考虑中的容器。 在步骤1540中,顺序地处理树模板的记录。每个记录的运算数通过对过滤器的列表编索引 来获取。各自的运算符被应用于运算数,并且二元值被放置在后继者记录的运算数字段中。 在步骤1550中,最后的记录的运算符的结果被呈现为由树表示的布尔表达。图16图示了根据本发明的实施例的表示规则树结构的替代方法。与规则相关的 过滤器(条件)集合基于如先前所述的内容描述符、描述符准则和过滤器运算符来定义。过 滤器集合的定义被存储在过滤器定义阵列。布尔运算符的集合被定义具有被指定空后继者 的一个运算符以及被指定来自运算符的集合的后继者的每个其它运算符。过滤器形成树的 叶并且被划分成过滤器的子集,其中子集的过滤器形成了来自布尔运算符的集合当中的布 尔运算符的运算数。注意到,如果过滤器的每个子集包括两个过滤器,则布尔运算符的总数 目等于过滤器的总数目减去1。考虑M个过滤器的集合,M > 1,形成了包括N个叶记录的叶向量的模板;1 < N <Μ。每个叶记录包括来自运算符的集合当中的叶运算符和过滤器的各自的子集。在安装 阶段,每个叶记录包括运算符和过滤器定义阵列中的运算数(过滤器)的索引。每个叶记 录的过滤器的值被确定用于各个容器组件。形成了具有等于N个数目的叶记录的多个节点记录的节点向量。每个节点记录具 有节点运算符字段和节点状态字段。在安装阶段,节点记录为空,不包含数据。在叶记录的 处理期间初始地确定节点记录的布尔运算符和节点状态。N个节点记录可以以任何顺序来 布置。然而,方便的是,假设节点记录初始具有与叶记录的一对一对应关系。因此,节点记 录j的布尔运算符是叶向量j,1 < j < N的后继者布尔运算符。一旦确定了过滤器的值,就将每个叶运算符应用于各自的过滤器(各自的二元条 件),并且将结果放置在节点记录的节点状态字段中。将每个叶运算符的后继者放置在节点 记录的节点运算符字段中。在处理了所有叶记录之后,处理节点记录。然后标识在此被称为连接节点记录的 具有共同运算符的节点记录。然后,将共同运算符应用于所有连接节点记录的节点状态以产生新的状态。从连接的节点记录中选择的节点记录的运算符字段被共同运算符的后继者 取代,并且所选择的节点记录的节点状态字段被刚确定的新的状态取代。从节点向量中删 除剩余的连接节点记录。因此,通过用组合的节点记录取代连接节点记录的每个集合,减少 了在节点向量中的节点记录的数目。标识连接节点记录的过程继续递归,直到节点向量仅 包含一个节点记录。在剩余的一个节点记录的运算符字段中应用布尔运算符的结果是估计 布尔表达的结果。最后的节点记录的布尔运算符具有空后继者。 图16图示了用于编码图13的示例性树的规则树的递归规则构造1600,它表示形 成树的叶的十一个过滤器的布尔表达。叶(过滤器)被标记为Ll至L11。在图13的树中, 叶Ll与任何其它叶都不相关联。为了一致性,叶Ll人工地与叶Φ相关联,它与其共享被 动运算符θ1()插入的叶φ被分配了“不关注”值。如本领域中已知的,“不关注”值可以方 便地分配“真”状态或“假”状态。由用户来定义布尔运算符θ 2至θ n的集合。运算符θ 2至θ 6与叶记录相关联, 而运算符97至θ η与节点记录相关联。运算符θ η具有空后继者,并且每个其它运算符 02至θ 1Q具有来自运算符97至θ η的集合的后继者,如图16的列表1610所图示的。叶向量1620包括分配了放置在运算符字段1624(1)至1624(6)中的运算符θ 至θ 6的六个记录1622,分别被标识为1622(1)至1622 (6),相对应运算数的索引被放置在 运算数字段1626(1)至1626(12)中。在六个叶记录的运算数字段中的运算数是{Φ, 1}、 {L2, L3}、{L4, L5}、{L6, L7}、{L8, L9}和{L10, L11}。当确定了二元值时(图5和图6),处理叶记录1622。从叶记录1622(1)开始,人工 被动运算符Q1仅将Ll的值传递到节点记录1642(1)的节点状态字段。作为9工的后继者 的运算符θ η被放置在节点记录1642(1)的运算符字段中。然后,处理第二叶记录1622 (2), 其中将运算符θ2应用于级别L2和L3(过滤器L2和L3)以产生要放置在节点记录1642 (2) 的节点状态字段中的二元值B2。作为运算符99的运算符θ 2后继者被放置在节点记录 1622(2)的运算符字段中。该过程继续直到确定了所有节点记录1642(1)至1642(6)。该过程仅使用节点向量1640来递归地继续;不再需要叶向量1620。在节点 1642(1)中的运算符θ η在节点向量1640(1)中不配对。因此,节点记录1642 (1)保持不 变。类似地,节点记录1642 (2)保持不变,因为节点记录1642中的任何一个都不包括运算符 θ9。节点记录1642 (3)和1642 (4)具有取代Β3的共同运算符θ 7,它被应用于运算数Β3和 Β4以产生要在节点记录1642 (3)的节点状态字段中放置的二元结果Β7。作为θ 9的运算符 θ 7的后继者运算符被放置在记录1642 (3)的运算符字段中,取代θ7。删除了现在在新的 组合记录1642(3)中占用的节点记录1642(4)。类似地,节点记录1642(5)和1642(6)被组 合在具有运算符θ 8的后继者运算符θ 1Q以及通过将共同运算符θ8应用于运算数B5和B6 确定的节点状态Β8的新的节点记录中。节点向量1640现在缩减成通过附图标记1640(2) 标识的四个节点记录。节点记录1640(2)简单地重写节点记录1640(1)。该过程递归地继续,组合了节点记录1642(2)和1642(3)以产生新组合的节点记 录1642(2)同时节点记录1642(1)和1642(4)保持不变;两个不变的节点记录现在是在减 少的节点向量1640(3)中的记录1642(1)和1642(3)。节点记录1642(2)和1642(3)具有共同运算符θ 1(|。运算符θ 1(|被应用于运算数 Β9和Β8以产生放置在节点记录1642(2)的节点状态字段中的新状态Β10。运算符θ 1(|的后继者运算符θ η被放置在节点记录1642 (2)的节点运算符字段中。节点记录1642(1)和 1642(2)的节点记录的共同运算符θ η被应用于运算数Bl和BlO以产生布尔表达的输出
B*。 图17图示了使用图16的叶向量模板1620和节点向量模板1640来确定规则树的 输出的过程。在步骤1720中,确定了表征考虑中的数据内容的布尔条件(布尔过滤器L2 至Lll)的集合。在步骤1722中,形成了具有N > 1个叶记录1622的叶向量1620。每个叶 记录1622包括布尔运算符字段1624和用于布尔条件(过滤器L2至Lll的子集)的子集 的字段。在步骤1724中,形成了 N个节点记录1642的节点向量1640。每个节点记录1642 包括布尔运算符字段1644和节点状态字段1648。在步骤1726中,每个叶运算符被应用于 从如上参照图5和图6描述的内容数据的特性确定的布尔条件(布尔过滤器)的各自的子 集。二元结果被放置在选择的节点记录1642的节点状态字段中。在步骤1728中,每个叶 运算符的后继者被放置在所选择的节点记录的运算符字段中。在步骤1730中,用组合的记 录来取代具有共同运算符的节点记录,因此减少了节点向量1640的节点记录1642的数目。 在步骤1732中,共同运算符被应用于所取代的节点记录的节点状态,并且二元结果被放置 在所组合的记录的运算符字段中。在步骤1734中,从图16的列表1610确定的共同运算符 的后继者被放置在所组合的节点记录的运算符字段中。在步骤1736中,如果剩余节点记录 的数目大于1,则重新访问步骤1730以继续组合共同运算符的节点记录的过程。如果剩余 记录的数目是1,则剩余节点记录的运算符被应用于节点记录的节点状态,并且该结果确定 是否需要执行编辑动作(步骤1740)。图18是详述图17的过程的流程图。在步骤1820中,为了在图19中详细描述,规 划了叶向量1620。顺序地考虑叶记录1622(1)至1622 (N)。在步骤1824中,索引j被设置 成等于0。如果步骤1826确定要处理更多的叶记录,则步骤1828将索引j增加1并且获取 与当前叶记录的叶索引相对应的叶集合(过滤器集合),并且步骤1830获取当前叶记录的 运算符θ⑶工至06中的一个)。步骤1832将该运算符应用于所获取的叶集合,从而产生 二元输出B。在步骤1834中,从图16的列表1610确定后继者S( θ )。节点向量1640的节点状态字段和运算符字段在此被标记为U(j)、V(j), 1 ( j彡N,即,U(j)和V(j)定义节点记录1642(j),l彡j彡N。在步骤1836中,B的值被 放置在节点向量1640的节点状态字段U(j)中,并且S(e)的值被放置在节点向量1640的 运算符字段V(j)中。当处理了所有叶记录1622(1)至1622 (N)时,索引j等于叶记录N的 数目,并且节点向量1640的每个节点记录1642具有各自的节点运算符和节点状态。在步 骤1840中,节点向量1640的节点记录1642的当前数目ν被设置成等于j (它等于N)。在 步骤1842中,如果节点记录ν的当前数目大于1,则节点向量被扫描以收集具有相同运算符 的所有节点记录1642并且组合这样的记录。在扫描之前,节点记录的当前数目ν* = ν被 注意(步骤1843)以使得能够检测节点记录的数目的变化。在步骤1844中,索引k被设置 成等于零,并且步骤1846记录节点记录1642(k)的运算符θ =V(k)。步骤1848检查节点 向量1640的后续节点记录以标识具有相同运算符θ的后续节点记录的数目μ。如果所 标识的后续节点记录的数目μ是零(步骤1850),则在步骤1852中索引k增加1,并且如 果索引k小于节点记录的当前数目v,则重新访问步骤1846。否则,步骤1856收集相同运 算符θ的节点记录的(μ+l)个运算数,并且将运算符θ应用到(μ+l)个运算数以确定组合的节点记录的新状态B。在步骤1860中,删除了后续μ个标识的节点记录,并且步骤 1862在节点记录1642 (k)的节点状态字段U(k)中插入新状态B,并且在节点记录1642 (k) 的运算符字段V (k)中插入后继者运算符S( θ )。在步骤1864中,剩余节点记录的数目被确 定为(ν-μ)。在步骤1864之后应用了步骤1852和1854,以确定节点向量1640是否包含 进一步的共同运算符的节点记录。如果步骤1854确定k小于v,则继续从步骤1846扫描节 点向量。否则,如果步骤1854确定k = ν (k无法超过ν),则步骤1855确保ν的当前值(在 步骤1864中最后更新的)小于先前的值/。否则,在步骤1880中报告错误。注意到,如果 用户提供的布尔表达的表示不正确,则不满足步骤1855的要求ν < ν*。如果ν < /,则步 骤1855之后是步骤1842。如果步骤1842确定剩余节点记录的数目是1,则剩余节点记录 的运算符被应用于各自的运算数,以确定状态步骤1890),其确定各自的编辑动作。 图19详述了规划图16的叶向量1620的图18的步骤1820。在步骤1920中,规划 了过滤器(条件)的集合,并且在步骤1922中,基于如上参照图5和图6描述的用户输入 确定了叶运算符。叶运算符被顺序应用以生成相对应的叶记录1622。如果步骤1924确定 还没有应用所述至少一个运算符,则步骤1926向叶向量添加新的叶记录1622。步骤1928 选择剩余运算符中的一个,并且步骤1930向叶记录的运算数字段1624添加相关联的过滤 器。重复步骤1930,直到步骤1932确定属于所选择的运算符的所有过滤器已经被包括在当 前叶记录1622中。当完成了当前叶记录1622时,如在步骤1932中确定的,重新访问步骤 1924。当步骤1924确定已经考虑了所有的叶运算符,则将完成的叶向量1620呈现给图18 的步骤1824。图20图示了预先计算过滤器集合的每个值的布尔表达的二元值的方法。过滤器 的集合通过具有含有与过滤器的一对一对应关系的多个比特的比特字符串来表示,使得在 该字符串中的每个比特对应于一个过滤器。利用μ >ι个过滤器,字符串包含μ个比特, 并且假设值的范围从0到2μ-1。在步骤2012中,设置了开始字符串值0(μ个比特都被设 置成零),并且具有2μ个条目的规则向量的每个条目被初始化成“0”。在步骤2014中,使 用如参照图10、15或17描述的方法中的一个来估计布尔表达。在步骤2016中,二元结果 (“真”、“假”)被存储在与字符串(0到2μ-1)的当前值相对应的位置处的规则向量中。在 步骤2018中,字符串值通过添加1而增加。当步骤2030确定字符串的μ个比特中的每个 具有值0时,完成了规则向量的生成(步骤2040)。注意到,μ个比特中的每个具有值“1” 的字符串对应于规则向量的第2 μ -1条目,并且在步骤2018中添加1将字符串重新设置成 μ个零。替代地,字符串可以具有(μ+i)个比特,最高有效位用于指示完成了规则向量生 成。然后,规则向量可以用于直接确定运行时布尔表达的二元值,因此增加了内容过滤系统 的吞吐量。总之,过滤数据容器的方法然后包括以下步骤(1)定义过滤器(二元条件)的集合,其中每个过滤器是选择的内容的描述符和各 自的描述符的准则的函数。(2)定义规则的集合,每个规则指定布尔表达以及相应的内容过滤动作。(3) 一次考虑一个布尔表达。(4)考虑μ个过滤器(二元条件)的布尔表达。过滤器被表示为μ个比特的字 符串,μ > 1。
(5)估计该字符串的2μ个值中的每个的布尔表达,以产生2μ个条目的规则向量, 每个条目是与该字符串的2μ个值中的一个相对应的内容度量的状态。(6)对所有布尔表达重复步骤(5)。(7)接收和解析数据容器。(8)选择规则和根据数据容器的内容确定所指定的已选择的规则的μ个过滤器 的值。(9)对于所选择的规则相对应的规则向量编索引,并且确定与由μ个比特的字符 串确定的索引相对应的规则向量中的条目的值。(10)根据条目的值执行内容过滤动作。(11)如果需要将新规则应用于所接收到的容器,则重复步骤(8)至(10)。图21图示了用于执行标记为L1、L2、L3和L4的四个过滤器的集合(μ = 4)的布 尔表达的规则的规则向量。过滤器的集合通过四个比特的字符串来表示。布尔表达被估计 用于范围从“0000”至“1111”的该字符串的16个值2112中的每个,以产生与该字符串的 字符串值j,0< μ相对应的标记为“真”或“假”的二元输出2114(j)。一旦接收到容器,则检查容器组件的内容以确定图21中考虑的用于该规则的四 个过滤器的集合。如果例如四个过滤器的集合具有值“1”、“0”、“0”和“1”,产生“1001”的 字符串2140,则直接从二元规则向量2114的位置9( 二元数1001)读取布尔表达的值。通过图21的示例性图示,图20的方法适合采用适度数目的运算数(过滤器)的 布尔表达的规则。例如,利用8个过滤器,二元规则向量2114将相对短,仅具有256比特。 如果布尔表达具有不止16个运算数,则例如,它可以优选地每当需要时估计布尔表达而不 是存储大的二元规则向量。超过16的每个布尔表达的运算数的数目可以不同。图22图示了与过滤器定义和规则定义相关的数据条目的过程。该过程开始于确 定是否已经创建了规则文件(步骤2220)。如果还没有创建规则文件,则步骤2222使用本 领域已知的常规方法来创建文件。下一步骤是向规则文件添加规则。在步骤2224中开始 填充或更新规则文件。步骤2224打开规则文件并且将该过程导向步骤2226,它提示用户指 示是否要编码新规则并将新规则添加到规则文件。填充或更新规则文件由用户来终止(步 骤2228)。如果要添加更多的规则,则放置在用户接口 520(图5)中的数据获取模块(未示 出)或在操作、管理和维护模块230中创建规则模板(步骤2230)。规则模板可以可选地采 取多种形式中的一种,这由用户来决定。规则模板的形式取决于(1)要顺序地还是根据等 级顺序来应用由用户指定的规则;以及(2)要以代数分析形式还是以树结构格式来输入规 则的布尔表达,在树结构中,树的节点表示运算符和各自的运算数。在任一情况下,数据获 取模块可以提供具有方便数据输入的指令的各自的模板。例如,数据获取模块可以通过提 示用户输入简单的操作来引导用户构造代数形式的布尔表达,每个操作包括运算符和运算 数的集合,然后进行到想要的表达。可以通过分别添加新运算符来验证所构造的表达的有 效性。如果布尔表达被呈现为树结构,则数据获取模块可以显示通用树结构,它可以当用户 输入与选择的树的节点相关的数据时被修整和验证。在步骤2232中,提供了 以任何合适格式编码的规则标识符。在步骤2234中,指 定了规则动作,并且步骤2240定义了与规则相关联的布尔表达。根据相关联的布尔表达 的值来应用特定规则的规则动作。步骤2240包括步骤2242、2244、2246、2248、2250、2252和2260。步骤2242如图3所示创建了附图标记为340的过滤器模板。步骤2244设置了 过滤器的类型,它可以是考虑中的容器的内容的多个描述符中的一个。步骤2246设置过滤 器的运算符,它可以从一元运算符、二元运算符、算术运算符、比较运算符、逻辑运算符、设 置运算符和用户定义的运算符的菜单中选择。步骤2248设置了过滤器的准则,它是与在步 骤2244中选择的描述符相关的目标值或阈值。步骤2250提示用户定义用于该规则的新的 过滤器或继续定义要应用于目前为止指定的过滤器的集合的布尔表达。为了添加另一过滤 器,重新访问步骤2242至2248,直到在步骤2250中用户确定所有相关的过滤器都存在。步 骤2252提示用户输入根据上述格式中的一个的布尔表达。注意到,规则可以仅基于一个过 滤器,如图9所示,在这种情况下,布尔表达缩减成被动运算符,它仅适用一个过滤器的值 以确定是否要应用在步骤2234中 指定的规则工作。步骤2260将刚构造的规则附加到在步骤2224中打开的规则文件。注意到,一旦 处理了接收到的容器,则在“运行时间”要确定因此构造的每个规则的过滤器的值。编码的 规则包括过滤器标识符,它仅是存储过滤器的阵列(未示出)的索引。在系统安装或更新期间执行图22的过程。编码和存储在规则文件中的规则被“实 时”地激活。图23图示了顺序过滤接收到的具有多个组件的容器的组件的过程。处理用于内 容过滤的容器的组件的顺序是任意的,并且可以由用户来设置。如果由于一些操作原因而 对整个容器施加了整体约束,则作为结果将具有处理组件的顺序。当控制器提示时,内容过滤的过程在步骤2320中开始(图2)。如果已经选择了要 处理组件的顺序,则步骤2340确定在步骤2350是否要处理至少一个组件。否则,步骤2380 结束该处理并报告结果。在步骤2360中,执行可应用于考虑中的组件的规则设置的所有规 贝U,并且步骤2340被重新访问以确定是否需要处理另一组件。模块插入指示应用于组件的 任何过滤动作的通知。图24详述了步骤2360 (图23),其中规则的集合被应用于容器的内容。步骤2360 应用于容器的组件。步骤2424确定是否已经应用了整个规则集合。如果是,则步骤2480将 指示由于指定规则的集合而引起的任何内容过滤动作的通知附加到容器。否则,步骤2428 选择当前规则,并获取与所选择的当前规则相关联的所有相关过滤器的定义。注意到,如果 一个规则的结果影响了另一规则的选择,则可以以特定顺序来布置规则。另外,如将参照图 25描述的,可以通过形式图而不是简单的阵列来表示规则相互依赖性。步骤2430执行所选择的当前规则。步骤2430包括步骤2432、2436、2440和2444。 步骤2432确定是否已经激活了在步骤2428中标识的所有过滤器以确定每个过滤器的二 元值。当将过滤器的运算符应用于各自的运算数以产生该过滤器的二元值时就称为激活 了过滤器。如果已经激活了与当前规则相关的所有过滤器,则步骤2432将控制传输到步骤 2460。否则,执行步骤2346、2440和2444以产生考虑中的过滤器的值。如参照图5和图6 描述的,步骤2436基于考虑中的容器内容的特性来获取运算符和各自的运算数的值。步骤 2440将运算符应用于运算数,并且步骤2444记录当前过滤器的值用于在估计当前规则的 布尔表达中使用。步骤2460根据图10、图15或图17的编码方法中的一个来获取布尔表达。步骤 2464估计布尔表达。步骤2468可以将与当前规则相关联的内容过滤动作应用于服从如在步骤2464中确定的布尔表达的值的考虑中的内容的内容。在步骤2470中,如果当前规则 的内容过滤动作导致删除整个容器组件,则不需要执行后续规则(如果有的话),并且步骤 2360向所删除的组件附加各自的通知。如果没有编辑内容,或编辑但没有删除,则重新访问 步骤2424以确定是否需要将更多的规则应用于考虑中的内容。注意到,如果具有超过特定 阈值的附件,或者如果具有无法移除的恶意插入,则可以删除整个组件。规则相互依赖性
通常,可应用于特定内容的规则可以具有补充动作、冲突动作或互斥动作。利用补 充动作,内容过滤结果可以与实现规则的顺序无关。利用冲突动作或互斥动作,一个动作代 替另一个。根据本发明的实施例,可以提示用户使用图形来定义规则的相互关系。图25图示了指示标记为规则1至规则5的五个规则的等级布置的图形。规则的 状态在此被定义为由于执行规则的布尔表达而产生的二元值。规则1的“真”状态导致标记为“动作1”的动作,之后,认为完成了步骤2360。“动 作1”可以需要两个相反极性中的一个;第一个是因为它太大或不能修复而删除整个组件, 或因为它太短以致不能包含恶意插入而确定组件是可接受的。规则1的“假”状态指示内 容通过第一测试并且应当进行规则2的第二测试。规则2的“真”状态导致后面是实现规则5的标记为“动作2”的动作。规则2的 “假”状态指示内容通过第二测试并且应当进行规则3的第三测试等等。如果规则4的状态 是“假”,则该过程在没有编辑内容的情况下结束。该过程还可以在(仅)实现一个的情况 下结束{动作1}、{动作2和动作5}、{动作3}和{动作5}。图26图示了由操作管理器230使用的在下面列出的模块。每个模块包括存储在 计算机可读存储介质中的计算机可读指令。(1)服务器单元配置模块2610,用于配置服务器单元以接受根据指定的协议形成 的多媒体数据容器。(2)负载平衡模块2612,用于在同样配置的服务器单元当中公平地分发多媒体数 据容器以处理共同类型的数据容器。(3)过滤器定义模块2614,用于从用户获取过滤器集合的定义,每个过滤器指定 内容描述符、描述符准则和运算符的定义。(4)布尔表达获取模块2616,用于使得用户能够根据代数句法来提供布尔表达。(5)布尔表达获取模块2618,用于使得用户能够以树结构的形式来提供布尔表 达。(6)布尔表达获取模块2620,用于使得用户能够通过编辑和修整通用树的图形来 输入布尔表达,其中树的每个节点表示运算符和各自的运算数集合。(7)规则构造模块2622,用于从用户获取内容过滤规则的集合,每个规则指定过 滤器和过滤动作的子集的布尔表达。(8)规则验证模块2624,用于验证针对规则指定的布尔表达的正确性。(9)规则布置模块2626,用于以由规则执行的特定过滤动作排除至少一个后续规 则的执行所根据的顺序来布置规则。(10)规则互依赖性模块2628,用于提示用户以给定规则的各自的布尔表达的值 为条件来指定给定规则的连续规则。
(11)规则图形定义模块2630,用于以形式图的形式来呈现内容过滤规则的集合(图 25)。(12)规则优化模块2632,用于使用常规逻辑优化技术来优化每个规则的布尔表 达,以最小化处理努力。(13)规则预处理模块2634,用于选择特定规则,每个规则实行最多包括预设数目 的过滤器的过滤器子集;对特定规则中的每个估计用于过滤器的子集的所有的值的过滤器 子集的布尔表达,以产生2-个比特的阵列,m> 1是过滤器子集中的过滤器的数目;以及将 比特的阵列存储在存储设备中(图20和21)。(14)分类模块2636,用于将容器分类成容器类型,每个容器类型对应于在源处规 划的容器所根据的协议;以及从多个容器当中将特定类型的容器导向特定控制器。分类模 块2636可以与网络接口 210或操作管理器230相关联。图27图示了根据本发明的实施例的由代码转换器280使用的在下面列出的模块。 每个模块包括存储在计算机可读存储介质中的计算机可读指令。(a)模块2710,用于表征多媒体数据容器的每个组件的内容,确定内容描述符,应 用运算符以及确定过滤器的状态。(b)模块2720,用于布尔表达的运行时间估计并且确定规则的二元输出。可以根 据代数句法或作为树结构来呈现布尔表达。(c)模块2730,用于执行与服从于各自规则的布尔表达的预设值的给定容器内容 相关的过滤动作。图28图示了根据本发明的实施例的包括代码转换器服务模块2810、程序寄存器 2820和程序存储器2840的代码转换器280。代码转换器服务模块包括存储在计算机可读 存储介质中的计算机可读指令,当执行计算机可读指令时,使得处理器的核心从多个控制 器中的特定控制器接收特定容器和编辑请求;选择和执行与编辑请求相关的程序;以及将 结果返回特定控制器。程序寄存器包括计算机可读指令,当执行计算机可读指令时,使得处 理器根据各自的功能来组织程序;以及用各自的新的程序来取代现有程序。控制器240 (图2)将编辑请求转发到代码转换器280。一旦接收到编辑请求2850, 则代码转换器服务模块2810标识使用包含在编辑请求中的信息执行的插件程序。代码转 换器服务模块2810执行所选择的插件程序并且将结果返回各自的控制器240。“插件”在此被定义为设计成执行特定任务的自包含的模块。程序存储器2840包 括存储在计算机可读存储介质中的计算机可读指令,并且包括两种类型的插件(a)初始加载的驻留插件2842 ;以及(b)动态加载的外部插件2844,外部插件可以取代驻留插件。驻留插件提供了基本的功能,并且外部插件提供了附加功能,内容过滤和病毒扫 描时这样的功能的两个例子。插件被注册到程序寄存器2820,程序寄存器2820管理插件注册和接入。程序寄存 器2820基于它们的特性来组织插件。插件可以布置在插件组中。插件程序以预定义的方式来组织插件的执行。从确定用于预定义的具有特定目标 的插件集合的执行逻辑的简单的指令集合来构建插件程序。接下来呈现使用插件的简单程序的指令的例子。
(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注意到,引入左边的数目仅是便于参考并且不一定构成指令的一部分。每个“执行(Excute) ”命令具有作为总是表示驻留插件名称的变量的插件的名称。 因为外部插件是可选的,所以从未通过名称来直接参考外部插件,并且因此仅当存在时才 执行外部插件。每个“ExecuteGroup”命令具有作为变量的插件组的名称。命令“Execute Group”执行属于该组的所有插件。行1声明在任何错误时程序跳转到行14并且继续执行行15至18。行2和3执行 要完成的适配的设置;如果需要,行4执行输入的解码,例如,如果输入是电子邮件,则将它 分解成它的子组件;行5和行9执行内容过滤插件所属于的插件组。因此,如果存在,则它 在行5开始执行并且在行9终止;行6和行7分别用于执行创建适配管线所必需的设置操 作并且实际创建它。适配管线包含要执行的操作的集合以执行所要求的适配;行8意指执 行在执行之前对适配管线有影响的外部插件;行10提供将参与适配的输入组件的详情。行 18对输出组件执行类似的任务。这样的信息可以被分析用于报告、付费和与适配功能不一 定相关的其它目的;行11执行适配管线优化;行12执行在它的执行之前执行适配管线的 分析和优化的任何外部插件;行13执行适配管线;行15表征由于执行适配管线而生成的 输出组件;行16执行对生成的输出组件具有影响的任何外部插件;以及行17执行完成适 配的附加步骤(诸如提供详细的适配记录)。规则被永久存储在“规则文件”中。规则文件可以应用到不止一个控制器。使用 规则文件的内容过滤器将包含在规则文件中的规则应用于媒体(内容)。如果给定规则估 计成“真”,则执行相对应的动作。动作可以包括移除诸如病毒(包括移动特定的病毒)的 不想要的内容;移除特定类型的媒体(诸如游戏);使用第三方应用对媒体执行动作(诸如 扫描病毒媒体)。然而,特定类型的内容可以未经处理地通过。
在操作管理器230中完成规则的定义(图2)。在代码转换器280中完成用于影响 内容编辑(过滤和适配)的规则的应用。一旦创建了规则文件,则用户可选地配置控制器 240中的一个以将规则文件以及任何适配请求发送到它选择的代码转换器280。动作“放弃”确保媒体不是内容适配过程的输出的一部分。动作“扫描保持”导致 扫描媒体病毒。这假设安装了反病毒外部插件。媒体实际上被“标记”为“扫描病毒”,使得 在执行适当插件程序时,其中执行了反病毒插件,扫描了标记为“扫描病毒”的所有媒体以 寻找病毒。下面给出了称为规则1的规则的例子。 Rule Name = " MaxFileSize50000〃 Action = " Drop"Filter Type = " MaxFileSize " Operator ="GreaterThan" Value=" 50000"Filter FilterOperator = " AND" Type=" Family" Operator =〃 NotEqual"Value=" MESSAGE"与规则1相关联的名称是“MaxFileSizdOOOO”,而与该规则相对应的动作是用于 移除匹配包含在规则中的过滤器(多个)的任何媒体的“放弃(Drop)”。该规则指定了两个 过滤器。第一过滤器是针对文件的大小应用的“MaxFileSize”类型。过滤器运算符是“大 于”,其中作为值是“50000”。第二过滤器特征在于称为“族(Family)”的类型。该过滤器 针对媒体族来应用(例如,图像、音频等)。与过滤器相关联的运算符不是“不等于”并且该 值是“消息”。通过使用布尔运算符“与”来组合过滤器。因此,如果文件具有大于50000的 大小,并且不是族“消息”,则执行所指定的动作。接下来描述称为规则2的另一规则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该规则的名称是“MaxFileSize25000AndContentTypes”并且相应的动作是“放弃 (Drop)”。规则2的目的是移除匹配包含在该规则中的过滤器(多个)的任何媒体。接下 来呈现规则2的结构的详细描述。 仅指定了下列过滤器〇第一过滤器
■过滤器类型是“MaxFileSize”并且针对文件的大小来应用过滤器;■运算符是“大于”;■值是 “25000”;〇以“与”布尔过滤器运算符开始的括号〇第二过滤器■过滤器类型是“ContentType”并且针对媒体的内容类型(等同于mimetype)来应用过滤器;■运算符是“等于”;■值是“图像/Vbmp”〇第三过滤器■具有布尔过滤器运算符“或”;■过滤器类型是“ContentType”并且针对媒体的内容类型(等同于mimetype)来 应用过滤器;■运算符是“等于”;■值是“图像/png”〇括号关闭因此,如果文件具有大于“25000”的大小且(具有等于“图像/Vbmp”的内容类型或 具有等于图像/png的内容类型),则执行在该规则中指定的动作。如果媒体是诸如电子邮 件或MMS的容器,则动作可以影响媒体或任何它的附件。动作可以包括保持(适配媒体); 保持和扫描(在适配之前对媒体进行病毒扫描);放弃(在最后的消息中不包括附件);通 过(没有适配媒体,使其保持未改变)。接下来描述在共同规则文件中定义的例子规则3。Rule Name = " MaxFileSize300000〃 Action = " Drop"Filter Type=" MaxFileSize" Operator = " GreaterThan" Value ="300000"呈现了完成该共同规则文件的另一例子规则4。Rule Name = “ VirusScan“ Action = “ ScanKeep “Filter Type = " Family" Operator = " Equals" Value = " MESSAGE"在这种情况下,共同规则文件包含 规则3,该规则3 “放弃”具有大于300000的大小的所有文件;以及·规则4,该规则4对作为消息的任何媒体执行病毒扫描。考虑将共同规则文件应用于所有控制器并且一些控制器“X”已经定义了包含规则 1和2的规则文件的情况。当向选择的代码转换器发送适配请求时,该控制器将发送包含规 则1至4的被称为“RuleFilel”的规则文件。呈现了 “RuleFilel”的结构。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"在提供该特征的实施例的背景下,XML用于管理在规则文件内部的规则的结构。这 确保了便携性和缩放性。接下来呈现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>下面呈现了内容过滤的例子。考虑多媒体容器MMS 特性名称mmsLmms族消息大小171100内容类型应用 /vnd. wap. multipart, mixed附件的数目3匪S附件特性名称image, jpg族图像大小75000内容类型图像/jpg名称image2. jpg族图像大小45000内容类型图像/jpg名称image, png族图像大小50000内容类型 图像/png
根据下面的步骤来执行内容过滤·匪S通过内容过滤;■由于媒体属于族“消息”,所以规则“VirusScan”估计成“真”;■媒体被标记为“扫描病毒”。
·附件image, jpg通过内容过滤;■由于媒体不是消息并且它的大小大于50000,所以规则“MaxFileSizeSOOOO”估 计成“真”;■媒体被标记为“放弃”。·附件image2. jpg通过内容过滤; ■对于该媒体没有任何规则估计成“真”; 第二附件image, png通过内容过滤;■由于媒体具有大于25000的大小并且具有内容类型“图像/png”,所以对于该媒 体规则 “MaxFileSize25000AndContentTypes” 估计成“真”;■媒体被标记为“放弃”。在执行了内容过滤插件之后继续插件程序。这导致通过反病毒插件来病毒扫描 MMS媒体及其内容。然后,开始适配过程。考虑适配和内容过滤产生具有下列形式的输出 匪S的情况。MMS 特性名称mmslout, mms族消息大小25175内容类型应用 /vnd. wap. multipart, mixed附件的数目2匪S附件特性名称image2. gif族图像大小24000内容类型图像/gif名称:removal_notification. txt族文本大小75内容类型文本/明文(plain)假设,作为内容适配的结果,适配了“image2· jpg”以输出“image2· gif”。注意到, “image, jpg”和“image, png”两者都被“放弃”并且由于应用了内容过滤动作而不是输出 匪S的一部分。新媒体“removal_notification. txt”被添加到输出消息。这由于移除了 “image, jpg”和“image, png”。代码转换器被设计成,一旦移除了媒体,则附接解释性文本 通知。该通知意在向MMS的接收器提供对没有适配并且移除了原来在MMS中的一些媒体的 解释。以外部插件的形式在代码转换器中呈现了反病毒扫描。在这种情况下,插件架构用于向诸如McAffee或Kaspersky的第三方反病毒扫描引擎提供接口。由于具有任何外部 插件,反病毒插件的存在是可选的。在插件程序级别,意指执行反病毒插件的插件程序将包 含执行反病毒插件所属于的插件组的命令。反病毒插件的执行并没有自动暗示将对媒体病毒扫描。仅在通过内容过滤标记为 “扫描病毒”的媒体上执行病毒扫描。一些第三方反病毒引擎可以被安装为单独的库。其它 第三方反病毒引擎可以被安装为客户端服务器。反病毒插件将以正确地与第三方反病毒引 擎对接这样的方式来写入。在任何情况下,反病毒插件是代码转换器进入点以在通过内容 适配的媒体上执行病毒扫描。
因此,在上述实施例中,已经提供了下列特征(1)解析消息的能力,以便检查附 件;(2)表征附件的能力,以便根据内容类型来对其过滤;以及⑶调节用户定义的、可扩展 的并分级的规则集合,以确定是否需要媒体元素。编辑动作确定怎样处理媒体附件。编辑动作可以包括下列中的一个或多个将附 件呈现给适配过程;保持附件并在呈现给适配过程之前对媒体进行病毒扫描;以及放弃附 件。编辑动作可以包括调用反病毒和入侵防护软件程序。尽管已经详细描述了本发明的具体实施例,但是应当理解,所描述的实施例意在 是说明性的而非限制性的。在不背离本发明的最广义方面的范围的情况下,可以在下面的 权利要求的范围内做出在附图中示出并在说明书中描述的实施例的各种变化和修改。
权利要求
一种用于过滤多媒体数据容器的内容的系统,包括网络接口,用于从网络接收所述多媒体数据容器;以及多个服务器单元,每个服务器单元包括处理器的集合和存储设备的集合;在其上安装了过滤器定义模块,具有存储在计算机可读存储介质中的计算机可读指令,用于从用户获取过滤器的集合的定义,每个过滤器指定内容描述符的定义、描述符准则以及运算符;规则构造模块,具有存储在计算机可读存储介质中的计算机可读指令,用于从所述用户获取内容过滤规则的集合,每个规则指定所述过滤器的子集和过滤动作的布尔表达;用于表征多媒体数据容器的每个组件的内容,确定所述内容描述符,应用所述运算符并且确定所述每个过滤器的状态的模块;用于确定每个所述规则的二元输出的模块;以及用于执行与服从所述二元输出的预设值的所述内容相关的过滤动作的模块。
2.根据权利要求1所述的系统,进一步包括用于使得所述用户能够根据代数句法来提 供所述布尔表达的模块。
3.根据权利要求1至2中的任何一个所述的系统,进一步包括用于使得所述用户能够 以树结构的形式来提供所述布尔表达的模块。
4.根据权利要求1至3中的任何一个所述的系统,进一步包括用于使得所述用户能够 通过编辑和修整树的图形来输入所述布尔表达的模块,所述树的每个节点表示运算符和各 自的运算数的集合。
5.根据权利要求1至4中的任何一个所述的系统,进一步包括用于以由规则执行的特 定过滤动作排除至少一个后续规则的执行所根据的顺序来布置所述规则的模块。
6.根据权利要求1至5中的任何一个所述的系统,进一步包括用于以形式图表的形式 来呈现内容过滤的所述集合的模块。
7.根据权利要求1至6中的任何一个所述的系统,进一步包括用于以下操作的模块 选择特定规则,每个指定包括最多预设数目的过滤器的过滤器子集;对于所述特定规则中的每个,估计用于过滤器子集的所有的值的过滤器子集的所述布 尔表达,以产生作为在所述过滤器子集中的过滤器的数目的2μ个比特的阵列,其中μ > 1 ;以及在存储设备中存储所述比特的阵列。
8.—种过滤数据容器的内容的方法,包括 指定表征所述内容的二元条件的集合;指定运算符的集合,一个运算符被指定空后继者,并且每个其它运算符被指定来自所 述运算符的集合的后继者;形成包括N > 1个叶记录的叶向量,每个叶记录具有来自所述运算符的集合和所述二 元条件的各自的子集当中的叶运算符;形成N个节点记录的节点向量,每个具有节点运算符字段和节点状态字段; 将每个叶运算符向量应用于各自的二元条件,将结果放置在节点记录的节点状态字段中;将所述每个叶运算符的后继者放置在所述节点记录的节点运算符字段中;以及递归地执行以下步骤用具有共同运算符的后继者的组合的记录来取代具有所述共同的运算符的标识的节 点记录;以及将所述共同运算符应用于所述标识的节点记录的节点状态字段的条目,将结果状态放 置在所述组合的记录的节点状态字段中。
9.根据权利要求8所述的方法,进一步包括将内容索引确定为服从作为所述空后继者 的所述共同运算符的所述后继者的所述结果状态。
10.根据权利要求8至9中的任何一个所述的方法,进一步包括 在所述取代之后确定所述节点向量的节点记录的数目;以及将内容索引确定为与等于一的节点记录的数目相对应的所述结果状态。
11.根据权利要求9至10中的任何一个所述的方法,进一步包括根据所述内容索引的 值来执行与所述内容相关的指定的编辑动作。
12.根据权利要求8至11中的任何一个所述的方法,进一步包括 接收表征所述数据容器的接收器的数据;利用所述接收器的特性来确定所述内容的兼容性;以及只要所述内容与所述特性不可兼容,就根据所述特性修改所述内容。
13.一种用于在过滤多媒体数据容器的内容的系统中使用的操作控制器,所述操作控 制器包括处理器;过滤器定义模块,用于从用户获取过滤器的集合的定义,其中每个过滤器是选择的所 述内容的描述符和各自的所述描述符的准则的函数;布尔表达获取模块,用于使得所述用户能够提供所述过滤器的布尔表达的集合以及相 对应的内容过滤动作;以及 预处理模块,用于选择表示为μ个比特的字符串的指定的μ个过滤器的布尔表达,μ > 1 ;以及 对所述字符串的2μ个值中的每个估计所述布尔表达,以产生2μ个条目的规则向量,每 个条目是与所述字符串的2μ个值中的一个相对应的内容度量的状态;所述过滤器定义模块、布尔表达获取模块和预处理模块中的每个具有存储在计算机可 读存储介质中的计算机可读指令。
14.根据权利要求13所述的操作控制器,其中,所述布尔表达获取模块包括存储在计 算机可读介质中的计算机可读指令,以使得所述用户能够获取以具有布尔运算符、运算数 和分隔符的代数格式的所述布尔表达;并且其中,所述预处理模块包括存储在计算机可读 存储介质中的计算机可读指令,用于检查所述布尔表达以标识简单模式,所述简单模式将布尔运算符和两个运算数封闭在 两个分隔符之间,以及只要发现了所述简单模式,则将所述布尔运算符应用到所述两个运算数以确定所述模式的二元值;以及 用所述二元值来取代所述简单模式和所述两个分隔符。
15.根据权利要求13至14中的任何一个所述的操作控制器,其中,所述布尔表达获取模块包括计算机可读指令,以使得所述用户能够获取以具有多个节点的树结构形式的所述 布尔表达,并且其中,所述预处理模块包括计算机可读指令,用于创建具有多个记录的树模板,每个记录对应于各自的节点并且具有用于第一运算数、 第二运算数、当前运算数和后继者记录的四个字段;以及 以第一记录开始,并且顺序处理到最后的记录 对各自的二元值应用当前记录的运算符,以产生新的二元值; 只要所述当前记录是最后的记录,则将所述新的二元值确定为所述布尔表达的值;以及只要所述当前记录是中间记录,则将所述新的二元值放置在所述后继者记录的运算数 字段中。
全文摘要
公开了一种用于在支持多用途通信服务的网络中的数据容器的内容过滤的系统和方法。该内容过滤系统与内容适配系统集成。若干个服务器单元根据不同的协议来处理在源处规划的5个容器。内容过滤过程取决于表征容器的每个组件以产生内容描述符的集合以及根据每个描述符的预设准则来产生每个组件的二元条件的集合。规则的集合被设计,其中每个规则将各自的布尔表达应用于条件的子集以规定各自的内容编辑动作。公开了指定和估计规则的布尔表达的方法。使用形式图定义规则的相互依赖性。
文档编号H04L29/02GK101849399SQ200880114945
公开日2010年9月29日 申请日期2008年11月7日 优先权日2007年11月9日
发明者J·L·C·M·拉瓦利埃, L-R·普瓦里耶-博舍曼, R·E·诺顿, R·埃鲁 申请人:万特里克斯公司