IP Library Granted Patent US 8,442,928
Granted Patent B2
US 8,442,928 · App. 12/869,715 · Granted May 14, 2013

Method and apparatus for employing rules to filter streaming data

Inventors: Richard Elliott Norton (Ste-Genevieve, CA); Louis-Rene Poirier-Beauchemin (Montreal, CA); Robert Héroux (Montreal, CA); Mario Joseph Leo Claude Lavalliere (Mascouche, CA)
Assignee: Vantrix Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,442,928
App. No.
12/869,715
Granted
May 14, 2013
Kind
B2
Abstract

Content filtering of data containers is based on defining content types, receiving identifiers of a set of rules applicable to each content type, and determining dependence of at least one rule on other rules. The identifiers are sorted into rule strata where rules within each rule stratum are independent of each other and rules within each rule stratum beyond a first stratum depend on at least one rule of at least one preceding rule stratum. Upon receiving a data container of multiple components from a network, a content type is determined for each component. Rules of rule strata specific to a content type of a component are applied starting with rules of a first rule stratum and proceeding sequentially to selected rules of succeeding rule strata. An apparatus for content filtering stores processor-executable instructions for arranging rules in rule strata and sequentially applies successive rules to data containers.

Claims (84)

1. At an engine employing at least one processor and at least one memory device, a method of content filtering of data containers, the method comprising:

defining content types;

receiving rule identifiers of a set of rules applicable to each content type;

determining dependence of at least one rule on at least one other rule;

sorting said rule identifiers according to said dependence to produce rule strata specific to said each content type where rules within each rule stratum are independent of each other and rules within each rule stratum beyond a first stratum depend on at least one rule of at least one preceding rule stratum;

receiving an array of processor-executable instructions modules, each instructions module corresponding to a rule among said set of rules;

receiving from a network a data container having components of different content types;

ascertaining for each component a respective content type; and

applying rules of rule strata specific to said respective content type to said each component starting with rules of a first rule stratum and proceeding sequentially to selected rules of succeeding rule strata.

2. The method of claim 1 further comprising:

receiving an array of actions, each action presented as a set of processor executable instructions; and

receiving identifications of actions, within said array of actions, performed by each rule in said set of rules.

3. The method of claim 2 wherein said array of actions includes actions which perform at least one of:

transcoding content of a data component;

transcoding an attachment of a data component;

deleting content of a data component;

invoking anti-virus and intrusion-prevention software programs;

deleting malicious insertions; and

removing an attachment.

4. The method of claim 2 further comprising:

receiving an action-description array with entries having a one-to-one correspondence to entries of said array of actions, each entry of said action-description array holding a natural-language description of a respective action; and

storing said action-description array in a memory device.

5. The method of claim 4 further comprising:

reading a description of each action performed on each component from said memory device; and

inserting said description of each action in said data container.

6. The method of claim 2 wherein said determining comprises receiving rule-succession records, each rule succession record corresponding to a specific rule identifier and containing:

an indicator of a first action and an indicator of a first succeeding rule corresponding to a value of “0” of said specific rule identifier; and

an indicator of a second action and an indicator of a second succeeding rule corresponding to a value of “1” of said specific rule identifier.

7. The method of claim 6 further comprising:

forming a rule-inclusion list including a rule identifier corresponding to said each rule succession record;

determining a dependency count for each rule in said rule-inclusion list, where said dependency count indicates a number of rules directly preceding said each rule in said rule-inclusion list;

identifying rules within said rule-inclusion list having zero dependency count to produce rules of a new stratum;

determining first and second succeeding rules of each rule of said new stratum;

reducing dependency count of each of said first and second succeeding rules by 1;

removing said rules of said new stratum from said rule-inclusion list;

and

repeating said identifying until said rule-inclusion list becomes empty.

8. The method of claim 2 further comprising arranging said rules in at least one rule tree, each rule tree having:

a respective number μ of rules, μ>1, labeled as R 0 to R μ-1 ; and

2×μ actions, labeled as A 1 to A 2μ ;

wherein

rule R j , 0≦j<μ, resolves to one of two states, 0 and 1, and results in one of two actions A 2j+1 and A 2j+2 ;

at least one rule R j , 0≦j<(μ−1)/2, proceeds to one of two rules R 2j+1 and R 2j+2 ; and

at least two rules are null rules.

9. The method of claim 8 further comprising:

applying action A 2j+1 in response to an indication that R, resolves to 0; and

applying action A 2j+2 in response to an indication that R, resolves to 1.

10. A method of filtering data components, the method implemented by an apparatus having a processor and a memory device storing processor-readable instructions, the method comprising:

acquiring a set of M rules, M>1, where each rule evaluates to a binary value;

indexing said rules as 0 to (M−1) and initializing arrays U and V, as U(j)=V(j)=0, 0≦j<M;

acquiring L rule-succession records, 1<L≦M, and for each record:

determining an identifier m of a respective rule, an identifier j of a first successor rule corresponding to a value “false” of said respective rule, and an identifier k of a second successor rule corresponding to a value “true” of said respective rule;

setting each of U(m), U(j), and U(k) to equal 1; and

increasing each of V(j) and V(k) by 1;

defining a new stratum, starting with a first stratum and for each value of μ, 0≦μ<M, where U(μ)=1 and V(μ)=0:

determining successive rules α and β of rule μ;

setting U(μ) to 0, and decreasing each of V(α) and V(β) by 1; and

adding rule μ to said new stratum;

and

applying rules of said first stratum and succeeding rules of successive strata to each of said data components.

11. The method of claim 10 wherein said applying comprises:

setting all rules of said first stratum as selected rules; and

determining selected rules of each subsequent stratum according to values of each selected rule in a preceding stratum.

12. The method of claim 10 further comprising ascertaining that at least one of said L rule-succession records specifies a null first successor rule and a null second successor rule.

13. The method of claim 10 further comprising determining that said new stratum is a last stratum when each entry in array V has a value of zero.

14. The method of claim 10 wherein each rule of said set of M rules comprises processor-executable instructions which cause said processor to determine a value of said each rule according to descriptors of said data components.

15. The method of claim 10 further comprising acquiring a set of actions where each action comprises processor-executable instructions which cause said processor to edit any of said data components.

16. The method of claim 15 wherein said applying comprises:

determining from said each record a respective first action, from among said set of actions, corresponding to a value “false” of said respective rule, and a respective second action, from among said set of actions, corresponding to a value “true” of said respective rule; and

for each selected rule of each stratum, executing a respective one of said first action and said second action according to a value of said each selected rule.

17. An apparatus for filtering data containers comprising:

a first memory storing:

a set of rules, each rule encoded as a set of processor-executable instructions and evaluates to a binary value; and

a set of actions, each action encoded as a set of processor-executable instructions;

a second memory storing a set of rule-succession records, each rule succession record corresponding to a specific rule and containing:

an indicator of a first action and an indicator of a first succeeding rule corresponding to a value of “0” of said specific rule; and

an indicator of a second action and an indicator of a second succeeding rule corresponding to a value of “1” of said specific rule;

a first instructions memory storing processor readable instructions which cause a first processor to produce sorted rules arranged in rule strata where rules within each rule stratum are independent of each other and rules within each rule stratum beyond a first stratum depend on at least one rule of at least one preceding rule stratum; and

a second instructions memory storing processor readable instructions which cause a second processor to sequentially apply said sorted rules to said data containers.

18. The apparatus of claim 17 further comprising a memory device for storing a set of action-descriptions each action-description containing a natural-language description of a corresponding action within said set of actions.

19. The apparatus of claim 18 further comprising processor-readable instructions stored in said second instructions memory which cause said second processor to

read a description of each action performed on each data container from said memory device; and

insert said description of said each action in said each data container.

20. The apparatus of claim 17 further comprising a third instructions memory storing processor-readable instructions which cause said first processor to arrange said set of rules in a rule binary tree indicating for each rule a first action corresponding to a value of “0” of said each rule and a second action corresponding to a value of “1” of said each rule.

Assignments (8)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 1, 2021
From: VANTRIX CORPORATION
To: MASIMO CORPORATION
Reel/Frame 057394/0452 →
CHANGE OF COMPANY ADDRESS Recorded Nov 26, 2019
From: VANTRIX CORPORATION
To: VANTRIX CORPORATION
Reel/Frame 051136/0148 →
RELEASE OF SECURITY INTEREST Recorded Mar 21, 2017
From: NXT CAPITAL LLC
To: VANTRIX CORPORATION
Reel/Frame 042050/0722 →
CHANGE OF ADDRESS Recorded Mar 1, 2017
From: VANTRIX CORPORATION
To: VANTRIX CORPORATION
Reel/Frame 041845/0022 →
RELEASE OF SECURITY INTEREST Recorded Jun 14, 2013
From: WF FUND III LIMITED PARTNERSHIP, C.O.B. WELLINGTON FINANCIAL FUND III AND WELLINGTON FINANCIAL LP
To: VANTRIX CORPORATION
Reel/Frame 030615/0063 →
SECURITY AGREEMENT Recorded Mar 20, 2013
From: VANTRIX CORPORATION
To: NXT CAPITAL, LLC, ITS SUCCESSORS AND ASSIGNS
Reel/Frame 030053/0824 →
SECURITY AGREEMENT Recorded Mar 7, 2011
From: VANTRIX CORPORATION
To: WF FUND III LIMITED PARTNERSHIP, C.O.B. WELLINGTON FINANCIAL FUND III AND WELLINGTON FINANCIAL LP
Reel/Frame 025907/0804 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 27, 2010
From: NORTON, RICHARD ELLIOT; POIRIER-BEAUCHEMIN, LOUIS-RENE; HEROUX, ROBERT; LAVALLIERE, JOSEPH LEO CLAUDE MARIO
To: VANTRIX CORPORATION
Reel/Frame 024902/0127 →
Continuity (3)
Continuation In Part 12266353 · Nov 6, 2008
Provisional Application 60986835 · Nov 9, 2007
Related Publication 20100325079A1 · Dec 23, 2010