KR20130108303A - 데이터 스트림 필터링을 위한 디바이스 및 컨텐트 필터링 방법 - Google Patents

데이터 스트림 필터링을 위한 디바이스 및 컨텐트 필터링 방법 Download PDF

Info

Publication number
KR20130108303A
KR20130108303A KR1020137006897A KR20137006897A KR20130108303A KR 20130108303 A KR20130108303 A KR 20130108303A KR 1020137006897 A KR1020137006897 A KR 1020137006897A KR 20137006897 A KR20137006897 A KR 20137006897A KR 20130108303 A KR20130108303 A KR 20130108303A
Authority
KR
South Korea
Prior art keywords
rule
rules
content
filter
encoded
Prior art date
Application number
KR1020137006897A
Other languages
English (en)
Other versions
KR101713004B1 (ko
Inventor
리차드 엘리엇 노턴
루이-르네 프와리에-보쉐멩
로베르 에록스
조제프 레오 끌로드 마리오 라발리에르
Original Assignee
밴트릭스 코오퍼레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 밴트릭스 코오퍼레이션 filed Critical 밴트릭스 코오퍼레이션
Publication of KR20130108303A publication Critical patent/KR20130108303A/ko
Application granted granted Critical
Publication of KR101713004B1 publication Critical patent/KR101713004B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0781Error filtering or prioritizing based on a policy defined by the user or on a policy defined by a hardware/software module, e.g. according to a severity level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • G06N5/022Knowledge engineering; Knowledge acquisition
    • G06N5/025Extracting rules from data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • G06F11/3072Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • G06F11/3072Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting
    • G06F11/3075Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting the data filtering being achieved in order to maintain consistency among the monitored data, e.g. ensuring that the monitored data belong to the same timeframe, to the same system or component
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1734Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/335Filtering based on additional data, e.g. user or group profiles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • G06F16/43Querying
    • G06F16/435Filtering based on additional data, e.g. user or group profiles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0263Rule management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Quality & Reliability (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computer Hardware Design (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Analysis (AREA)
  • Business, Economics & Management (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • Algebra (AREA)
  • Multimedia (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

다수의 컨텐트 타입의 데이터 컨테이너의 컨텐트 필터링 방법은 각 컨텐트 타입에 대한 인코딩된 규칙들의 집합과 인코딩된 필터들의 집합을 생성하는 것에 기초한다. 각 인코딩된 필터는 사용자 정의 연산자들 중에서의 각 연산자와, 컨텐트 기술자 및 기술 기준을 포함하는 2개의 피 연산자로부터 표현된다. 필터는 2진 상태를 가지며, 규칙은 단일 필터 또는 다수의 선택된 필터에 기초한다. 그 방법을 구현한 장치는 사용자 정의 구성 데이터를 수신하는 사용자 인터페이스, 각 컨텐트 타입에 대한 인코딩된 규칙들의 집합과 인코딩된 필터들의 집합을 생성하는 구성 모듈과, 네트워크로부터 데이터 컨테이너를 수신하고 필터링된 데이터 컨테이너를 네트워크로 전송하는 네트워크 인터페이스 및 수신된 데이터 컨테이너에 그 규칙들들 적용하는 필터링 모듈을 가진다.

Description

데이터 스트림 필터링을 위한 디바이스 및 컨텐트 필터링 방법{METHOD AND APPARATUS FOR FILTERING STREAMING DATA}
본 발명은 서로 다른 컨텐트 타입의 다수의 컴포넌트들(components)의 데이터 컨테이너(data container)의 컨텐트 필터링에 관한 것으로, 보다 구체적으로는, 다수의 연관된 규칙에 기초하여 컨텐트 필터링을 하는 방법 및 장치에 관한 것이다.
다른 컨텐트 타입의 데이터를 포함하는 데이터 스트림들을 네트워크 전송하는 네트워크에 있어서, 컨텐트 수정이 수신기 능력, 다운스트림 전송 용량 또는 임의의 다른 제약과의 호환성을 보장할 필요가 있는지를 결정하기 위해 데이터 스트림을 검사하는 것이 바람직할 수 있다. 컨텐트 수정은 인코딩 방법을 변경하기 위해 데이터 트랜스코딩(transcoding)을 채용하거나 인코딩 레이트(rate)를 변경하기 위해 트랜스-레이팅(trans-rating)을 채용하여 네트워크 수율을 개선하는 것이 바람직하다. 컨텐트 검사 또는 잠재적 수정에 추가하여, 다른 컨텐트-관리 특징은 통신된 데이터의 개인화를 포함할 수 있으며, 수신기에게 데이터 컨텐트 또는 통신 경로의 상황에 관한 유용한 정보를 제공하는 것을 포함할 수 있다.
컨텐트 타입은 비디오 신호, 오디로 신호, 정지 이미지, 애니메이션, 또는 텍스트를 포함할 수 있다. 다른 컨텐트 타입에 적용할 수 있는 수정은 다른 기준에 기초할 수 있다. 또한, 단일 컨텐트 타입에 적용되는 수정은 컨텐트 관리의 프로세스가 도전적인 작업을 할 수 있게 하는 다수의 연관된 조건에 기초할 수 있다. 그러므로, 컨텐트 관리를 효율적으로 처리하고, 실시간으로 가상의 순시적인 컨텐트 검사를 촉진하며, 필요한 경우 컨텐트 수정을 촉진하는 장치가 필요하다.
본 발명의 목적은 멀티미디어 서비스를 제공하는 네트워크에 있어서 컨텐트-필터링 기능을 제공하는데 있다. 또 다른 목적은 컨텐트-필터링 기능을 컨텐트-적응화 기능과 합체하는 것이다.
일 측면에 따르면, 본 발명은 데이터 스트림 필터링을 위한 장치를 제공한다. 그 장치는 프로세서 및 프로세서 판독 가능 명령어를 저장하는 메모리 디바이스(memory device)를 포함한다. 그 디바이스는 사용자 인터페이스, 구성 모듈, 네트워크 인터페이스 및 필터링 모듈로 구성된다. 사용자 인터페이스는 사용자로부터 데이터 컨텐트 기술자의 집합(a set of data-content descriptors), 기술자의 기준의 집합(a set of descriptors' criteria), 연산자 집합, 필터 정의 집합, 규칙 정의 집합을 수신한다.
구성 모듈은 제 1 프로세서가 인코딩된 필터 및 인코딩된 규칙들을 생성하게 하는 명령어를 저장하는 메모리 디바이스를 포함한다. 인코딩된 필터는 필터 정의에 기초한다. 필터 정의는 연산자와 두개의 피 연산자를 특정하는데, 피 연산자중 하나는 컨텐트 기술자이고, 다른 것은 기술자 기준이다. 필터는 2진 상태를 가진다. 인코딩된 규칙은 규칙 정의에 기반한다. 규칙 정의는 선택된 필터의 부울 함수를 특정한다. 각 인코딩된 규칙은 선택된 필터들의 각각의 2진 상태에 따라 결정된 2진 결과를 가진다. 규칙은 단일 필터로서 정의된다. 인코딩된 규칙들, 인코딩된 필터들, 및 기술자 정의들은 메모리 디바이스에 저장되어 필터링 모듈에 의해 액세스된다.
그 장치는 각 동작이 프로세서 판독 가능 명령어로서 구현되는 동작의 집합을 저장하는 동작-메모리 디바이스를 포함하며, 프로세서 판독 가능 명령어는 프로세서가 데이터 스트림의 데이터 컨테이너의 대응하는 편집 기능을 수행할 수 있게 한다. 그 장치는, 또한 각 동작 기술이 동작 집합 내의 대응하는 동작의 자연 언어 기술을 포함하는, 동작 기술의 집합을 저장하는 기술-메모리 디바이스를 포함한다.
네트워크 인터페이스는 네크워크로부터 데이터 스트림을 수신하고, 그 데이터 스트림을 수정하는 필터링 모듈로 그 데이터 스트림을 보내며, 네트워크를 통해 각 종착지에 그 데이터 스트림을 전송한다.
필터링 모듈은, 제 2 프로세서가 데이터 스트림으로부터 데이터 컨테이너를 추출하고 각 데이터 컨테이너를 컴포넌트들로 파싱할 수 있게 하는 명령어를 저장하는 명령어 메모리를 포함한다. 각 데이터 컨테이너의 각 컴포넌트에 대하여, 필터링 모듈은 컨텐트 타입을 결정하고, 관련 인코딩된 규칙과 각 인코딩된 필터를 선택한다. 필터링 모듈은 컨텐트의 각 기술자의 값을 결정하고, 선택된 인코딩된 필터 및 인코딩된 규칙을 평가하며, 선택된 인코딩된 규칙의 값에 따라 동작을 실행한다. 명령어 메모리는, 제 2 프로세서가 기술 메모리 디바이스로부터의 데이터 컨테이너에 대해 실행된 각 동작의 기술을 판독하고 데이터 컨테이너에 각 동작의 기술을 삽입한다.
규칙들은 상호 상관되며, 그 경우 구성 모듈은 필터링 모듈에 있어서의 적절한 순차적인 평가를 위한 인코딩된 규칙들을 배열한다. 그 규칙들은 규칙 트리 또는 계층적 규칙층들로 배열된다.
다른 측면에 따르면, 본 발명은 데이터 컨테이너의 컨텐트 필터링을 위한 장치를 제공한다. 그 디바이스는 데이터-메모리 디바이스 및 명령어-메모리 디바이스를 포함한다. 제 1 데이터 메모리는 컨텐트 타입들의 집합, 컨텐트 기술자들의 집합, 기술자의 기준들의 집합 및 연산자들의 집합을 포함하는 구성 데이터를 저장한다. 제 1 명령어 메모리는 프로세서 판독 가능 명령어를 저장하며, 프로세서 판독 가능 명령어는 제 1 프로세서가 사용자로 하여금 필터 집합, 규칙 집합을 정의하고 그 규칙들을 적용하는 순서를 선택하는 것을 유도한다. 각 필터는 컨텐트 타입, 컨텐트 기술자, 컨텐트 기준 및 연산자에 따라 정의된다. 규칙은 2 이상의 필터의 부울 함수로서 표현된다. 그러나, 규칙은 단일 필터에 기초한다.
제 2 명령어-메모리는 제 2 프로세서가 각 데이터 컨테이너를 컴포넌트들로 파싱하고, 각 컴포넌트의 컨텐트 타입을 결정하고, 각 컴포넌트에 각 순서화된 규칙의 집합을 적용할 수 있게 하는 프로세서 판독 가능 명령어를 저장한다.
제 1 명령어 메모리는, 제 1 프로세서가 적어도 하나의 규칙 트리에 그 규칙들을 배열할 수 있게 하는 프로세서 판독 가능 명령어를 저장하며, 각 규칙 트리는 다수의 규칙과 다수의 동작을 가진다. 각 규칙은 2가지 상태 "0" 및 "1" 중 하나로 되고 2 동작 중 한 동작으로 결과한다. 적어도 하나의 규칙은 2개의 계승자 규칙(successor) 중 하나로 진행한다.
제 1 명령어 메모리는, 제 1 프로세서가 사용자로 하여금 각 규칙 및 2개의 계승 규칙(succeeding rules)에 대한 2개의 동작 및 2개의 연속하는 규칙을 특정하게 하여 각 규칙을 따를 수 있게 하는 프로세서 판독 가능 명령어를 저장하며, 이때, 적어도 하나의 규칙은 널 계승 규칙(null succeeding rules)을 가진다. 그 명령어는 제 1 프로세서가 규칙의 집합을 다수의 층들로 분류할 수 있게 하며, 이때, 층내의 규칙들은 서로 독립적이며, 제 1 층 이외의 층의 규칙들은 선행하는 층들중 임의의 층들의 규칙들에 좌우된다.
그 디바이스는, 제 1 프로세서가 필터 집합을 정의하기 위해 컨텐트 기술자 집합과, 기준 집합과, 연산자들을 디스플레이할 수 있게 하고, 규칙의 집합을 정의하기 위해 인코딩된 필터의 집합을 디스플레이할 수 있게 하고, 인코딩된 규칙의 실행 순서를 선택하기 위해 인코딩된 규칙의 집합을 디스플레이할 수 있게 하는 프로세서 판독 가능 명령어를 저장하는 메모리 디바이스를 가진 사용자 인터페이스를 더 포함한다.
추가적인 측면에 따르면, 본 발명은 데이터 컨테이너의 컨텐트 필터링 방법을 제공한다. 그 방법은 적어도 하나의 프로세서와 적어도 하나의 메모리 디바이스를 채용하는 것을 포함한다. 그 방법은 사용자 입력을 수신하고, 사용자 입력에 기초하여 인코딩된 필터의 집합과 각 컨텐트 타입에 대한 인코딩된 규칙의 집합을 생성하는 단계를 포함한다.
사용자 입력은 컨텐트 타입, 컨텐트 기술자, 기술자의 기준, 연산자, 필터 및 규칙들의 정의를 포함한다. 각 인코딩된 필터는 사용자 정의 연산자들 중에서의 각 연산자와, 컨텐트 기술자 및 기술자 기준을 포함하는 2개의 피연산자로서 표현된다. 필터는 2진 상태를 가진다. 규칙은 단일 필터 또는 다수의 선택된 필터에 기초한다. 후자의 경우, 규칙은 선택된 필터의 2진 상태의 사용자 특정 함수로서 표현된다.
그 방법은 네트워크로부터 서로 다른 컨텐트 타입의 컴포넌트를 가진 데이터 컨테이너를 수신하고, 각 컴포넌트에 대해 각각의 컨텐트 타입을 결정하고, 각 컴포넌트에 각 컨텐트 타입과 관련된 각 규칙 집합을 할당하는 단계를 추가로 포함한다.
그 방법은 프로세서 실행 가능 명령어 집합으로서 표현된 각 동작들의 동작 집합을 수신하고, 규칙 집합의 개별적인 규칙에 의해 실행되는 동작 집합내의 동작들의 신원(identification)을 수신하는 것을 더 포함한다.
그 방법은, 동작-기술(action-description)들의 집합을 수신하고, 기술-메모리(description-memory) 디바이스내에 동작-기술의 집합을 저장하는 것을 더 포함하며, 각 동작 기술은 동작 집합내의 동작에 대응하고, 각 동작의 자연 언어 기술(natural-language description)을 포함한다.
그 방법은 규칙의 값을 결정하고, 그 규칙에 대응하는 동작을 실행하고, 기술-메모리 디바이스로부터 컴포넌트에 대해 실행되는 동작의 기술을 판독하고, 그 동작의 기술을 컴포턴트에 삽입하는 것을 포함한다.
일 실시 예에 있어서, 그 방법은 컨텐트 타입의 사용자 정의 우선권을 획득하고, 각 컨텐트 타입의 우선권 순위에 따라 데이터 컨테이너의 데이터 컴포넌트를 분류하여 분류된 컴포넌트를 생성하고, 분류된 컴포넌트를 연속적으로 필터링하는 단계를 포함한다. 컴포넌트의 컨텐트 타입에 대해 특정된 선택된 규칙 집합이 적용된다. 다른 실시 예에 있어서, 그 방법은 컴포넌트를 동시에 필터링하고, 필터링된 컴포넌트를 단일 데이터 스트림으로 조합하는 단계를 포함한다.
본 발명은 컨텐트 관리를 효율적으로 처리하고, 실시간으로 가상의 순시적인 컨텐트 검사를 촉진하며, 필요한 경우 컨텐트 수정을 촉진할 수 있다.
이제 본 발명의 실시예가 동반되는 도면들에 대한 참조와 함께 예시의 방법으로써 기술될 것이다.
도 1은 본 발명의 실시예에 따른, 네트워크를 통해 전달된 데이터 컨테이너들을 필터링하고 적응화하기 위한 네트워크 지원 서비스 제어기들 및 편집 엔진들을 나타낸다.
도 2는 본 발명의 실시예에 따른, 제어기들 및 트랜스코더들을 포함하는 편집 엔진을 나타낸다.
도 3은 본 발명의 실시예에 따른, 멀티미디어 컨테이너, 컨텐트 컴포넌트의 컨텐트 기술자들 및 컨텐트 필터의 바람직한 구조들을 나타낸다.
도 4는 본 발명의 실시예에 따른, 데이터 컨테이너에 적용 가능한 규칙들의 집합과 관련된 부울 식들의 대수적 형식들을 나타낸다.
도 5는 본 발명의 실시예에 따른, 컨텐트 필터링 프로세스의 기본 컴포넌트들을 나타낸다.
도 6은 본 발명의 실시예에 따른, 컨테이너 컨텐트의 기술자들을 도출하는 프로세스를 나타낸다.
도 7은 본 발명의 실시예에 따른, 컨텐트 필터링을 위한 시스템을 나타낸다.
도 8은 본 발명의 실시예에 따른, 다중 컴포넌트를 갖는 컨테이너들을 위한 도 7의 시스템과 유사한 시스템을 나타낸다
도 9는 본 발명의 실시예에 따른, 컨텐트 필터링 프로세스를 상술한다.
도 10은 본 발명의 실시예에 따른, 규칙의 부울 식을 평가하는 방법을 나타낸다.
도 11은 본 발명의 실시예에 따른, 필터링 규칙을 인코딩하기 위한 바람직한 제1 규칙 트리 구조를 나타낸다.
도 12는 본 발명의 실시예에 따른, 도 11의 규칙 트리 구조를 인코딩하기 위한 제1 데이터 구조를 나타낸다.
도 13은 본 발명의 실시예에 따른, 필터링 규칙을 인코딩하기 위한 바람직한 제2 규칙 트리 구조를 나타낸다.
도 14는 도 13의 바람직한 제2 규칙 트리에 적용되는 도 12의 제1 데이터 구조를 나타낸다.
도 15는 본 발명의 실시예에 따른, 도 12 및 도 14에 예시된 제1 데이터 구조를 적용하는 프로세스를 나타낸다.
도 16은 본 발명의 실시예에 따른, 규칙 트리를 인코딩하기 위한 제2 데이터 구조를 나타낸다.
도 17은 본 발명의 실시예에 따른, 도 16에 예시된 제2 데이터 구조를 적용하는 프로세스를 나타낸다.
도 18은 본 발명의 실시예에 따른, 규칙 결과를 결정하기 위하여 규칙 트리를 이용하는 프로세스를 나타낸다.
도 19는 본 발명의 실시예에 따른, 도 18의 프로세스와 관련된 리프 벡터(leaf vector)를 형성하는 단계를 상술한다.
도 20은 본 발명의 실시예에 따른, 빠른 런 타임(run-time) 규칙 실행을 위한 부울 식의 전처리 방법을 나타낸다.
도 21은 도 20의 방법의 바람직한 구현을 나타낸다.
도 22는 본 발명의 실시예에 따른, 필터 정의들 및 규칙 정의들과 관련 있는 데이터 엔트리의 프로세스를 나타낸다.
도 23은 멀티미디어 컨테이너의 컴포넌트들의 순차적인 필터링 프로세스를 나타낸다.
도 24는 본 발명의 실시예에 따른, 컨텐트 필터링을 위한 다중 규칙들을 적용하는 프로세스를 나타낸다.
도 25는 본 발명의 실시예에 따른, 컨텐트 필터링 동작들을 결정하는 규칙들의 상호 의존을 묘사하는 그래프이다.
도 26은 본 발명의 실시예에 따른, 도 2의 엔진의 연산 매니저(operation manager)를 나타낸다.
도 27은 본 발명의 실시예에 따른, 도 2의 엔진의 트랜스코더의 모듈들을 나타낸다.
도 28은 본 발명의 실시예에 따른, 도 2의 엔진의 트랜스코더의 모듈들을 나타낸다.
도 29는 본 발명의 실시 예에 따른, 서로 다른 컨텐트 타입의 컴포넌트들을 각각 포함하는 데이터 컨테이너로서 구성된 데이터 스트림을 필터링하는 방법의 개요를 제공한다.
도 30은 도 29의 방법에서 이용된 필터, 규칙 및 동작의 상호관계를 나타낸다.
도 31은 본 발명의 실시 예에 따른 도 29의 방법을 구현하는 디바이스를 나타낸다.
도 32는 도 31의 디바이스의 세부 사항을 나타낸다.
도 33은 본 발명의 실시 예에 따른, 사전 설정된 순서로 배열된 인코딩된 규칙들을 생성하는 예시적인 디바이스를 나타낸다.
도 34는 본 발명의 실시 예에 따른, 도 33의 디바이스에 의해 생성된 인코딩된 규칙을 이용하여 서로 다른 컨텐트 타입의 다수의 컴포넌트들의 데이터 컨테이너들을 프로세싱하는 예시적인 디바이스를 나타낸다.
도 35는 본 발명의 실시 예에 따른, 도 33의 디바이스에 의해 생성된 인코딩된 규칙을 이용하여 데이터 컨테이너의 다수의 컴포넌트들을 병렬 프로세싱하는 예시적인 디바이스를 나타낸다.
도 36은 도 35의 디바이스의 변형을 나타낸다.
도 37은 본 발명의 실시 예에 따른, 각각이 임의의 특정된 컨텐트 타입의 컴포넌트를 프로세싱하도록 구성된 4개의 필터링 모듈을 채용한 예시적인 장치를 나타낸다.
도 38은 본 발명의 실시 예에 따른, 도 37의 장치에 대한 제어 시스템을 나타낸다.
도 39는 본 발명의 실시 예에 따른, 데이터 컨테이너를 필터링하는 장치를 나타낸다.
도 40은 규칙이 2진 결과를 가지며 두 동작중 하나와 다른 두개의 규칙중 한 규칙이 뒤따르는 완전한 규칙 트리 형태의 도 33의 디바이스에 의해 생성된 인코딩된 규칙의 배열을 나타낸 것으로, 여기에서 각 리프 규칙은 연속하는 규칙을 갖지 않으며 동작을 요구하지도 않은 널 규칙(null rule)이다.
도 41은 도 40의 규칙 트리를 횡단하는 2개의 경로를 나타낸다.
도 42는 하나의 규칙 뒤에 유효 규칙(valid rule) 및 널 규칙이 뒤따르는 도 40의 완전한 규칙 트리로부터 도출된 불완전한 규칙 트리를 나타낸다.
도 43은 본 발명의 실시 예에 따른, 널 엔트리(null entries)를 이용하여 불완전한 규칙 트리에 대한 적용이 이루어지는 완전 규칙 트리를 나타내는 예시적인 정규 데이터 구조(canonical data structure)를 나타낸다.
도 44는 본 발명의 실시 예에 따른, 다수의 규칙 층들내의 도 33의 구성 디바이스에 의해 생성된 인코딩된 규칙들의 배열을 나타낸 것으로, 규칙층 내의 규칙들은 서로 독립적이고, 제 1 규칙층 이외의 규칙층들의 규칙들은 선행 규칙층의 규칙들에 좌우된다.
도 45는 도 44의 다수의 층 배열 중 중간 층의 제 1 규칙을 나타낸 것으로, 제 1 규칙은 2개의 동작 중 하나로 이어지고, 2개의 다른 규칙들 중 하나에 의해 계승되며, 마지막 층내의 제 2 규칙은 2개의 동작중 하나로 이어지되, 계승자 규칙을 갖지 않는다.
도 46은 본 발명의 실시 예에 따른, 다수의 규칙층내의 도 33의 구성 디바이스에 의해 생성된 인코딩된 규칙을 분류하는데 이용하기 위한, 다수의 규칙 레코드를 가진 예시적인 사용자 특정 규칙 계승 테이블을 나타내며, 각 규칙 레코드는 "false(거짓)" 또는 "true(참)"의 2진 결과를 가진 현재 규칙을 나타내며, 동작과 계승 규칙은 각 결과에 대응한다.
도 47은 도 46의 규칙 계승 테이블에 대응하는 규칙 그래프를 나타낸다.
도 48은 본 발명의 실시 예에 따른, 도 44의 다수의 규칙층들내의 도 33의 구성 디바이스에 의해 생성된 인코딩된 규칙을 분류하는 전반적인 방법을 나타낸 흐름도이다.
도 49는 본 발명의 실시 예에 따른, 도 48의 방법의 예시적인 구현을 나타낸 흐름도이다.
도 50은 도 46의 예시적인 규칙 계승 테이블에 대한, 도 49의 구현이 이루어지는 도 48의 방법을 나타낸다.
도 51은 도 46의 규칙 계승 테이블과 유사하지만, 하나의 규칙 레코드내의 계승 규칙이 널 규칙으로 대체되는, 사용자 특정 규칙 계승 테이블을 나타낸다.
도 52는 도 51의 규칙 계승 테이블에 적용된 도 49의 구현이 이루어지는 도 48의 방법을 나타낸다.
도 53은 도 51의 규칙 계승 테이블에 따른 규칙을 프로세싱하는 순서의 예시를 나타낸다.
도 54는 도 51의 규칙 계승 테이블에 따른 규칙을 프로세싱하는 순서의 다른 예시를 나타낸다.
용어들
멀티 미디어 서비스(Multi-Media Service: MMS): 이 용어는 텍스트, 오디오 신호, 비디오 신호, 이미지, 프레젠테이션 등과 같은 서로 다른 형식의 정보 컨텐트가 네트워크를 통해 단말들 사이에서 교환되는 멀티 컨텐트 통신 서비스를 나타내기 위하여 구어적으로 사용된다. 하나의 단말로부터 다른 단말로 전송된 인코딩된 정보는 전형적으로 서로 다른 정보 컨텐트에 대응하는 타임-인터리브드(time-interleaved) 세그먼트들을 갖는 단일 데이터 스트림으로 배열된다.
컨테이너(Container): 컨테이너는 컴퓨터로 읽을 수 있는 매체에 저장된 컴퓨터 파일이며 컴퓨터 네트워크를 통해 전송된다. 컨테이너는 다양한 타입의 데이터가 들어가도록 구조화된다. 컨테이너는 다양한 스트림들의 조정된 플레이 백(coordinated play back)이 가능하도록 동기화 정보와 함께 다중 텍스트, 오디오 및 비디오 스트림들을 지원할 수 있다.
컨테이너 컴포넌트(Container component): 컨테이너는 섹션들―각 섹션은 텍스트, 오디오 데이터 이미지 데이터 또는 비디오 데이터와 같은 특정한 형태로 인코딩된 데이터를 포함함―을 포함한다. 컨테이너 컴포넌트라는 용어는 한 섹션 내의 데이터를 나타낸다. 컨테이너 컴포넌트는 줄여서 "컴포넌트"로 언급될 수 있다. 멀티미디어 메시징 시스템에서, 컴포넌트는 또한 "미디어"로 알려져 있다.
컨테이너 스크리닝(Container screening): "컨테이너 스크리닝"은 임의의 바람직하지 않은 삽입들, 특히 해로운 삽입들의 부재를 보장하기 위해, 모든 컴포넌트를 포함하는 컨테이너의 컨텐트를 검사하는 프로세스를 나타낸다.
컨테이너 적응화(Container adaptation): "컨테이너 적응화"는 각각의 수신기의 디코딩 능력에 맞지 않는 것으로 확인된 컨테이너 컴포넌트의 형식을 수정하는 프로세스를 나타낸다. 만약 수신기에 적합하도록 컨테이너 컴포넌트를 표현하는 것이 실현 가능하지 않다면, 컨테이너 컴포넌트는 삭제될 수 있다. 컨테이너 스크리닝 프로세스가 대상이 되는 수신기의 타입에 대해 독립적인 반면에, 컨테이너 적응화 프로세스는 수신기 지정적(receiver specific)이다.
컨테이너 편집(Container editing): "컨테이너 편집"이라는 용어는 컨테이너 스크리닝 및 컨테이너 적응화의 결합된 프로세스를 나타낸다.
컨테이너 컨디셔닝(Container conditioning): 이 용어는 "컨테이너 편집"과 같은 뜻으로 사용될 수 있다. 하지만 컨테이너 컨디셔닝은 또한, 컨테이너가 수정되지 않을 때 조차도, 컨테이너와 함께 적절한 통지(notification)를 첨부한다.
트랜스코더(Transcoder): 트랜스코더는 한 포맷의 정보 레코드가 특정한 수신기에 적합한 다른 포맷으로 재생성되는 것을 가능하게 하는 인코딩된 정보의 직접 디지털-디지털 변환(direct digital-to-digital translation)을 수행하는 디바이스이다.
도 1은 이하에서 송신기(120) 및 수신기(160)로 언급되는, 송신 디바이스(120)로부터 수신 디바이스(160)로의 경로를 제공하는 네트워크(140)를 나타내며, 송신 디바이스(120)는 송신기(120)라 하고, 수신 디바이스(160)는 수신기(160)라고도 한다. 네트워크(140)는 서로 다른 타입의 복수의 다른 하드웨어 단말 디바이스들에 더하여 서비스 제어기들(103) 및 편집 엔진들(106)을 지원한다. 송신기(120)는 컨테이너들을 수신기(160)로 보내는데, 컨테이너는 인코딩된 텍스트, 오디오 신호들, 정지된 이미지들, 애니메이션(이미지들의 빠른 디스플레이) 및 비디오 신호들과 같은 서로 다른 컨텐트 타입의 데이터를 포함할 수 있다. 컨테이너는 서비스 제어기(103)로 보내질 수 있고, 서비스 제어기(103)는 차례로 편집 엔진(106)에 컨테이너를 검사하고, 필요한 경우 컨테이너의 컨텐트를 편집하는 컨테이너를 보낸다. 편집 프로세스는 임의의 바람직하지 않은 삽입들(특히 해로운 삽입들)의 부재를 보장하기 위한 데이터 스크리닝, 특정한 요건들을 만족시키기 위한 컨텐트 수정들 및 각각의 수신기의 디코딩 능력과 호환시키기 위한 컨텐트 적응화를 포함한다.
도 2는 편집 엔진(106)을 나타낸다. 네트워크 인터페이스(210)는 링크(204)를 통해 클라이언트들로부터의 컨테이너들을 수신한다. 컨테이너는 각각 240(1), 240(2), ... , 240(m)으로 확인되는 m(m>1)개의 제어기들(240) 중 하나로 보내진다. 제어기들(240)은 별개의 하드웨어 개체로 구현되거나, 복수의 트랜스코더들(280)을 호스팅하는 컴퓨팅 디바이스를 공유할 수 있는 바, 이에 대해서는 아래에 기술될 것이다. 제어기들(240)은 프로토콜 지정적(protocol specific)이며, 각각은 프로토콜에 따라 형성된 컨테이너들을 처리하도록 프로그램된다. 특정한 프로토콜을 처리하는 제어기들은 동일한 제어기 타입으로 불린다. 그 제어기들은 제어기 그룹들로 그룹화될 수 있는데, 각 제어기 그룹은 동일한 프로토콜에 따라 만들어진 컨테이너들을 처리한다. 편집 엔진(106)은 서로 다른 타입의 제어기들을 가질 수 있다. 하지만, 전체 편집 엔진(106)은 동일한 타입의 제어기들을 갖도록 구성될 수 있다. 편집 엔진(106)은 또한 부하 분산 모듈(290)을 가질 수 있다.
편집 엔진(106)은 각각 280(1), 280(2), ... , 280(n)으로 확인되는 복수의 트랜스코더들(280)을 포함한다. 트랜스코더들(280)의 주요한 기능은 한 포맷의 정보 레코드가 특정한 수신기에 적합한 다른 포맷으로 재생성될 수 있도로 하기 위해 인코딩된 정보의 직접 디지털-디지털 변환을 수행하는 것이다. 하지만, 트랜스코더는 또한 컨텐트 적응화와 함께 컨텐트 필터링 프로세스를 수행할 수 있다. 선택된 복수의 트랜스코더들(280)은 각 제어기(240)에 할당되어 함께 제어 어셈블리(control assembly)를 형성한다. 예를 들어, 도 2에서, 제어기(240(1)) 및 트랜스코더들(280(1) 내지 280(5))은 각각의 컴퓨팅 디바이스에 인스톨되는 제어 어셈블리를 형성한다. 제어기(240(m)) 및 트랜스코더들(280(n-2) 내지 280(n))은 다른 컴퓨팅 디바이스에 인스톨되는 다른 제어 어셈블리를 형성한다. 제어 어셈블리는 바람직하게 "블레이드 서버(blade server)"으로도 불리는 서버 유닛에 인스톨되는데, 서버 유닛은 프로세서들 및 메모리 디바이스들을 지원하는 단일 회로 기판이다.
프로세서(220)는 네트워크 인터페이스(210) 및 연산 매니저(230)를 호스트(host)한다. 네트워크 인터페이스(210)는 도 1의 네트워크(140)에 통신 가능하도록 결합된 클라이언트들로부터의 컨테이너들을 수신한다. 연산 매니저(230)는 연산, 관리 및 유지 기능을 수행하기 위한, 컴퓨터 판독 가능 저장 매체에 저장된 컴퓨터 판독 가능 명령어들을 포함한다.
서비스 제어기(103)는 컨테이너들을 수신할 수 있으며, 편집 엔진들(106) 중 하나에 컨테이너 편집 요청들을 보낼 수 있다.
프로세서(220)는 또한 그래픽 사용자 인터페이스(미도시)를 호스트할 수 있는데, 이는 컴퓨터 판독 가능 저장 매체에 저장된 컴퓨터 판독 가능 명령어들을 포함하고, 연산 매니저(230)에 결합되어, 인코딩된 규칙들의 배열을 입력하고 각 제어기(240)에 트랜스코더들의 각각의 부분집합을 할당하기 위한 것이다. 구성 메모리 디바이스(260)는 각 제어기에 할당된 트랜스코더들의 식별자들을 저장한다.
컨텐트 필터링 프로세스를 지배하는 규칙들은 각 트랜스코더(280)에 의해 액세스되는 규칙 메모리(225)에 저장된 공통 규칙 파일로써 저장될 수 있다. 대안적으로, 제어기 및 관련된 트랜스코더들을 호스팅하는 각 컴퓨팅 디바이스(서버 유닛)는 규칙 파일의 관련된 부분집합을 저장할 수 있다.
도 3은 각각 320(1), 320(2) 등으로 확인되는 다중 컴포넌트들(320)을 갖는 컨테이너를 나타낸다. 컴포넌트(320)는 텍스트, 오디오 레코딩, 인코딩된 이미지, 비디오 레코딩 및 임의의 다른 컨텐트 타입들을 포함할 수 있다. 컴포넌트의 컨텐트는 각각 332(1), 332(2), ... , 332(j) 및 332(D) (D는 기술자들의 전체 수)로 확인되는 기술자들(332)의 집합(330)을 이용하여 특징화된다. 컨텐트 기술자들은 컨텐트 타입, 식별자(이름), 확장자(extension), 디지털 서명, 암호화 함수(cryptographic functions), 우선권 및 파일 크기와 같은 여러 가지 속성들에 따라 정의된다. 진화하는 멀티미디어 전자통신기술에 따라 컨텐트 필터링 요건들이 달라짐에 따라서 기술자들은 추가되거나 삭제될 수 있다.
본 발명의 일 측면에 따르면, 컨테이너 컴포넌트의 컨텐트의 특징들은 2진 변수들의 집합으로써 표현되는데, 각 2진 변수는 컨텐트가 특정한 기준을 만족시키는지 여부를 결정한다. 수신된 컨테이너의 컨텐트 기술자의 값은 그 컨테이너의 컨텐트를 검사함으로써 결정된다. 따라서 이 기능을 수행하는 트랜스코더는 프로토콜―여기서, 컨테이너는 프로토콜에 따라 형성됨―의 의미들 및 수신된 컨테이너의 포맷을 인식한다. 특징화된 2진 변수의 값은, 연산자(344)를 두 개의 피연산자, 즉 컨텐트 기술자(342)의 값 및 컨텐트 필터링 시스템의 인스톨러(사용자)에 의해 입력된 대응하는 기준(346)에 적용함으로써 결정된다. 연산자(344) 및 두 개의 피연산자(342 및 346)는 컨텐트 조건 또는 단순히 조건이라고 불리기도 하는 필터(340)를 형성하는 것으로 일컬어진다. 그러므로, 컨테이너 컴포넌트의 컨텐트는 필터들의 집합에 의해 특징화되며, 각각은 "true(참)" 또는 "false(거짓)"의 값을 갖는다.
수신기에 적합하도록 이전에 컨테이너를 편집하는 것은 규칙들의 집합에 기반하는데, 각 규칙은 전체 컨텐트의 삭제, 컨텐트에서 발견된 악의적인 삽입들의 삭제 또는 컨텐트의 첨부물의 제거와 같은 편집 동작들을 결정한다. 규칙은 필터들의 각각의 부분집합의 함수이다. 필터들이 2진 변수들이 되도록 선택하면, 규칙을 정의하는 함수는 바람직하게 필터들의 부분집합의 부울 식으로써 만들어진다. 따라서, 컨텐트 필터링을 위한 시스템(도 7 및 도 8과 관련하여 보다 상세하게 기술될 것임)의 인스톨러(사용자)는 필터들의 부분집합, 부울 식 및 부울 식을 실행한 결과에 따라 수행되는 동작에 의해 규칙을 정의한다.
도 4는 규칙 벡터(420)에 저장되며, 데이터 컨테이너의 컴포넌트에 적용 가능한 4개의 규칙들의 집합과 관련있는 부울 식들의 대수적 형식을 나타낸다. 규칙들의 동일한 집합은 또한 규칙 필터의 적어도 하나의 다른 컴포넌트에 적용될 수 있다.
제1 규칙, 즉 규칙-1은 단일 필터, 즉 (size>30000)에 의해 정의되는데, 여기서 컨텐트 기술자는 컴포넌트의 크기이고, 연산자는 "GREATER THAN"이며, 기준은 30000이다(참조 번호 440). 만약 규칙 결과가 부울 "true"이면, 각각의 동작은 컴포넌트를 드롭(drop)하고, 고려 중인 컴포넌트에 대한 남은 규칙들의 프로세싱을 종료하는 것이다.
제2 규칙, 즉 규칙-2는 두 개의 필터, 즉 (size>5000) 및 (family≠message)의 부울 식(450)에 의해 정의된다. 제1 필터의 기술자는 "size"이고, 기준은 "5000"이며, 연산자는 ">"이다. 제2 필터의 기술자는 "family"이고, 기준은 "message"이며, 연산자는 "≠"이다. 이 부울 식은 단일 연산자 "OR"을 포함한다. 규칙-2와 관련된 동작은 규칙-1의 그것과 같다.
제3 규칙, 즉 규칙-3은 세 개의 필터, 즉 (size>25000), (content-type=image/wbmp) 및 (content-type=image/png)의 부울 식(460)에 의해 정의된다. 제1 필터의 기술자는 "size"이고, 기준은 "25000"이며, 연산자는 ">"이다. 제2 필터의 기술자는 "content-type"이고, 기준은 "image/wbmp"이며, 연산자는 "="이다. 제3 필터의 기술자는 "content-type"이고, 기준은 "image/png"이며, 연산자는 "="이다. 이 부울 식은 "AND" 및 "OR"의 두 연산자를 포함한다. 규칙-3의 동작은 규칙-1의 동작과 같다. 여기서 "wbmp"은 Wireless Bitmap(Wireless Application Protocol, WAP, 그래픽 포맷)을 나타내며, "png"은 "Portable Network Graphics"을 나타낸다.
제4 규칙, 즉 규칙-4는 단일 필터, 즉 (family=message)에 의해 정의되는데, 그 기술자의 컨텐트는 "family"이고, 기준은 "message"이며, 연산자는 "="이다(참조 번호 470).
도 5는 사용자 인터페이스(520), 필터 정의들을 획득하기 위한 필터 생성 모듈(530), 규칙 정의들의 획득을 위한 규칙 구성 모듈(540), 필터 정의들을 저장하기 위한 메모리부(550) 및 규칙 정의들(규칙 구조들)을 저장하기 위한 메모리부(560)를 포함하고, 도 2의 연산 매니저(230)에 합체되는 데이터 획득 서브 시스템의 기본 컴포넌트들을 나타낸다. 사용자 인터페이스(520)는 필터들의 집합 및 규칙들의 집합을 정의하기 위하여 인스톨러(사용자)가 입력 데이터(512)를 제공하는 것을 가능하게 한다. 필터 생성 모듈(530)은, 실행되었을 때 프로세서로 하여금 인스톨러가 컨텐트 기술자 정의들, 각 정의에 대한 기준 및 연산자를 입력하도록 하는, 컴퓨터로 읽을 수 있는 매체에 저장되는 컴퓨터로 읽을 수 있는 명령어들을 포함한다. 기술자들의 값들은 수신된 컨테이너의 컨텐트에 따라 결정된다.
규칙 구성 모듈(540)은, 실행되었을 때 프로세서로 하여금 인스톨러가 각 규칙에 대한 부울 식을 입력하고 미리 정의된 동작의 집합으로부터 동작을 선택하도록 하는, 컴퓨터로 읽을 수 있는 매체에 저장되는 컴퓨터로 읽을 수 있는 명령어들을 포함한다. 컴퓨터 판독 가능 명령어들은 또한 프로세서가 부울 식을 파싱하고 그 식의 실행 항들(executing terms)의 순서를 결정하게 한다.
필터 정의들은 메모리 디바이스의 메모리부(550)에 저장되고, 규칙 정의들은 동일한 메모리 디바이스 또는 임의의 다른 메모리 디바이스의 메모리부(560)에 저장된다.
도 6은 메모리부(550)에 저장된 컨텐트 기술자들의 정의들을 이용하여 수신된 컨테이너(612)의 컨텐트 기술자들의 값들을 결정하는 프로세스를 나타낸다. 단계(620)에서, 수신된 컨테이너(612)는 그 컨테이너의 컴포넌트들을 확인하기 위하여 파싱된다. 단계(640)에서 각 컴포넌트는 분석되며, 단계(650)에서는 그 결과들이 메모리부(550)로부터 읽혀진 컨텐트 기술자 정의들과 짝지어진다.
도 7은 본 발명의 실시예에 따른 컨텐트 필터링을 위한 시스템의 전체 구조를 나타낸다. 메모리(710)는 모든 관련 필터들에 대한 데이터를 저장한다. 도 5의 모듈(530)에 의해 결정된 연산자들(740)의 집합으로부터의 연산자, 도 6의 단계(650)에서 결정된 컨텐트 기술자들(720)의 집합으로부터의 컨텐트 기술자 및 도 5의 모듈(530)에서 결정된 기술자 기준(730)의 집합으로부터의 기술자 기준에 의해 각 필터가 정의된다. 각 필터의 2진 값("true" 또는 "false")은 도 5의 모듈(540)에서 정의된 규칙들의 집합을 수행하는데 사용되기 위하여 메모리 디바이스(750)에 저장된다.
각 규칙은 필터들의 부분집합, 부울 식 및 동작에 의해 정의된다. 메모리(770)는 시스템 인스톨러(사용자) 입력에 따라 도 5의 모듈(540)에서 결정된 인코딩된 부울 식들을 저장한다. 메모리(760)는 각 규칙에서 사용되는 필터들의 식별자들 및 각각의 부울 식들을 저장한다. 메모리(780)는 부울 식들을 평가한 각각의 결과에 대해 수행될 편집 동작들의 표시들을 저장한다. 각 부울 식의 실행은 2진 결과 및 각각의 편집 동작을 만든다. 편집 동작이 완료되면, 편집된 컨텐트는 메모리(790)에 저장된다.
도 7이 본 발명의 실시예에 따라 단일 컴포넌트에 적용되는 컨텐트 필터링을 위한 시스템을 나타내는 반면에, 도 8은 k(k>1)개의 컨테이너 컴포넌트들에 적용되는 도 7의 컨텐트 필터링을 위한 시스템을 나타낸다. 메모리 디바이스(810)는 k개의 컨테이터 컴포넌트 각각의 모든 관련 필터들의 데이터를 저장한다. 각 필터에 적절한 데이터는 각각 812(1) 내지 812(k)로 확인된다. 컨테이너의 컴포넌트들은 순차적으로 처리된다. 고려중인 컴포넌트에 대해, 각 필터의 연산자를 적용한 결과들은 메모리(850)에 유지된다. N(N>1)개의 인코딩된 부울 식들의 집합은 메모리(864)에 저장된다. 부울 식들은 각각 870(1) 내지 870(N)으로 확인되는데, 각각은 880(1) 내지 880(N)으로 확인되는 N개의 편집 동작들로부터의 각각의 편집 동작과 관련된다.
도 9는 컨텐트 필터링의 바람직한 프로세스를 나타낸다. 도 7 또는 도 8의 컨텐트 필터링을 위한 시스템의 인스톨러(사용자)는 각각 920(1) 내지 920(5)로 확인되는 5개의 컨텐트 기술자, 각각 922(1) 내지 922(8)로 확인되는 8개의 기술자 기준 및 각각 924(1) 내지 924(4)로 확인되는 4개의 연산자들을 초기에 정의하였다. 인스톨러는 각각 930(1) 내지 930(12)로 확인되는 12개의 필터를 정의하는데, 각 필터는 컨텐트 기술자들(920) 중 하나, 기준(922) 중 하나, 그리고 연산자들(924) 중 하나를 특정한다. 5개의 컨텐트 기술자들(920(1) 내지 920(5)의 값들을 결정하면, 도 6의 단계(650)에 기술된 바와 같이, 12개 필터들의 2진 값들이 결정된다.
인스톨러는 각각 950(1) 내지 950(6)으로 확인되는 6개의 부울 식들을 정의하는데, 여기서 각 부울 식은 12개 필터들의 부분집합과 관련된다. 예를 들어, 부울 식(950(2))은 두 필터(930(1) 및 930(6))와 관련되며, 부울 식(950(5))은 필터(930(2), 930(8) 및 930(11))와 관련된다. 인스톨러는 각각 960(1) 내지 960(4)로 확인되는 4개의 동작들을 정의하였다. 그리고 나서 인스톨러는 도 5의 규칙 구성 모듈(540)을 이용하여, 각각 940(1) 내지 940(9)로 확인되는 9개의 규칙들을 정의하였다. 각 규칙은 단일 부울 식(950) 및 단일 동작(960)과 관련된다. 예를 들어, 규칙(940(1))은 부울 식(950(2)) 및 동작(960(2))을 특정하며, 규칙(940(9))은 부울 식(950(5)) 및 동작(960(4))을 특정한다.
규칙은 단일 필터에 기반할 수 있는데, 여기서 그 규칙의 결과는 필터의 2진 값이다. 예를 들어, 규칙(940(7))은 오직 필터(930(11)에만 의존한다.
부울 식 표현
도 7 또는 도 8의 컨텐트 필터링을 위한 시스템의 인스톨러는 종래의 대수적 신택스(algebraic syntax)에 따라 또는 트리 구조에 따라 부울 식(950)을 제공할 수 있다. 도 5의 사용자 인터페이스(520)는 대수적 형식으로 표현된 부울 식을 인코딩하기 위한 제1 모듈(미도시) 및 트리 구조로 표현된 부울 식을 인코딩하기 위한 제2 모듈(미도시)을 포함한다. 두 모듈 각각은 인스톨러가 부울 식을 적절히 특정할 수 있도록 각각의 템플릿(template)을 제공한다.
부울 식은 단순 연산들, 복합 연산들(compound operations) 및 복잡 연산들(complex operations)을 포함한다. 단순 연산은 (두 개의 괄호와 같은) 두 개의 구획문자로 둘러싸인 연산자 및 두개의 피연산자들로 표시된다. 연산자 및 피연산자들은 임의의 순서로 나열될 수 있으며 두 개의 구획문자는 서로 구분될 필요는 없다. 두 개의 피연산자는 두 개의 필터를 나타내는 부울 변수들이다. 복잡 연산은 두 개의 구획문자로 둘러싸인 연산자 및 단순 연산을 포함한다. 복잡 연산은 전부 두 개의 구획문자로 둘러싸인 연산자 및 두 개의 연산을 포함하는데, 여기서 두 연산 중 어느 하나는 단순 연산 또는 복합 연산이 될 수 있다. 복잡 연산을 구성하는 두 개의 연산은 또한 복잡 연산들이 될 수 있다. 단순 연산, 복합 연산 또는 복잡 연산의의 구획문자는 동일할 수 있다.
도 10은 본 발명의 실시예에 따른 부울 식들의 평가 방법을 나타내는데, 이는 단지 단순 연산들을 인식하고 수행하는 것을 필요로 한다. 이 방법에 따르면, 인코딩된 부울 식은 단순 연산들을 확인하기 위하여 파싱된다. "true" 또는 "false"의 2진 값(예를 들면, "1" 및 "0"으로 표현됨)을 생성하기 위하여, 확인된 단순 식의 연산자는 각각의 피연산자(필터)들에 적용된다. 이와 같이 처리된, 확인된 단순 연산의 연산자, 피연산자 및 두 개의 구획문자는 삭제되고 그 연산의 결과로써 교체된다. 그 프로세스는 인코딩된 부울 식이 하나의 단순 연산으로 축소할 때까지 반복적으로 계속되는데, 그 결과는 그 부울 식의 결과가 된다.
도 10의 단계(1012)에서, 단순 연산을 확인하기 위해 부울 식이 검사된다. 만약 단순 연산이 발견되면(단계(1014)), 단계(1016)에서는 그 단순 연산을 실행하고 2진 값을 생성한다. 단계(1018)에서는 단순 연산의 연산자, 피연산자들 및 구획문자들을 2진 값으로 교체한다. 그리고 나서 축소된 부울 구조에서 다른 단순 연산을 찾기 위해 단계(1012)가 다시 수행된다. 만약 단계(1014)에서 부울 식의 현재 형식에 더 이상의 단순 연산이 없는 것으로 결정된 경우, 단계(1020)에서는 그것이 실제로 단일 2진 값("true, false" 또는 "1", "0")으로 축소되었는지 여부를 판정하기 위해 현재 형식을 검사한다. 만약 그렇다면, 단계(1022)에서는 부울 식의 실행 결과로써 단일 2진 값을 보고한다. 만약 단계(1020)에서 처리된 부울 식이 단일 2진 값을 초과하여 포함한 것으로 판정되면, 단계(1024)에서는 부울 식이 정확하게 형성되지 않았다는 표시를 보고한다.
도 10의 프로세스는 바람직하게 사용자(인스톨러)가 부울 식을 정정할 수 있도록 데이터 엔트리 동안에 수행된다. 잘못 형성된 부울 식을 분석하고 오류의 위치를 찾기 위한 컴퓨터 명령어들과 함께, 사용자 인터페이스(520) 또는 편집 엔진의 몇몇 다른 컴포넌트가 제공될 수 있다.
본 발명의 실시예에 따른, 대안적인 부울 식들의 인코딩 및 평가 방법은 부울 식의 그래픽 트리 표현에 의존한다. 바람직한 규칙 트리(1100)가 도 11에 나타나 있는데, 이는 각각 트리의 리프(leaf)인 필터-1 내지 필터-6으로 확인되는 6개의 피연산자들(6개의 필터들)의 부울 식을 묘사한다. Θ1, Θ2 및 Θ3으로 표시되는 3개의 연산자는 {필터-1, Θ1, Filter필터-2}, {필터-3, Θ2, 필터-4}, {필터-5, Θ3, 필터-6}의 세 연산을 정의한다. 각 연산자의 가장 가까운 계승자가 정의된다. 예를 들어, Θ1, Θ2 및 Θ3의 계승자는 각각 연산자 Θ5, Θ4, 및 Θ4이고, 연산자 Θ4 및 Θ5 의 계승자는 각각 Θ5 및 "NULL"이다. "NULL" 계승자를 갖는 연산자는 부울 식의 결과를 생성한다.
연산자 Θ1 은 2진 출력 B1을 생성하는데, 이는 연산자 Θ5 의 피연산자이다. 연산자 Θ2 는 Θ4 의 피연산자인 2진 출력 B2를 생성한다. 연산자 Θ3 은 연산자 Θ4 의 다른 피연산자인 2진 출력 B3을 생성한다. 연산자 Θ4 는 연산자 Θ5 의 다른 피연산자인 2진 출력 B4를 생성한다. 연산자 Θ5 는 2진 출력 B*을 생성하는데, 이는 트리에 의해 표현된 부울 식의 결과이다.
도 12는 도 11의 규칙 트리(1100)를 나타내기 위한 템플릿 배열(1230)을 나타낸다. 템플릿 배열(1230)의 인덱스(1220)는 도 12에 표시된 바와 같이 0에서 19까지 변화한다. 템플릿 배열(1230)은 연산자들의 전체 수(도 11의 바람직한 트리에서는 5)와 동등한 복수의 레코드들로 나누어지는데, 각 레코드는 연산자와 대응하며, 두 개의 피연산자를 갖는 단순 연산을 나타낸다. 필터들의 2진 값들은 고려중인 컨테이너가 처리된 후 알려진다. 따라서, 레코드는 각각의 필터들의 인덱스들, 연산자 정의 및 가장 가까운 계승 연산자에 대응하는 다른 레코드에 대한 포인터를 포함한다. "NULL" 포인터는 현재 레코드가 처리될 마지막 레코드임을 가리킨다. 사용자는 임의의 순서로 레코드들을 입력할 수 있으며, 도 5의 사용자 인터페이스(520) 내의 모듈(미도시)은 레코드들이 순차적으로 처리될 수 있도록, 그리고 임의의 레코드가 처리되었을 때 각각의 피연산자들의 값들이 이미 결정될 수 있도록 레코드들을 재조직한다.
도 12에 나타난 바와 같이, 처음 세 개의 레코드는 트리의 리프들을 형성하는 6개의 필터들에 적용 가능한 Θ1, Θ2 및 Θ3의 연산자들에 대응한다. 첫 번째 레코드의 포인터 π(1)은 연산자 Θ1의 2진 결과 B(1)을 유지하는 배열의 인덱스 16을 가리킨다. 두 번째 레코드의 포인터 π(2)는 연산자 Θ2의 2진 결과 B(2)를 유지하는 배열의 인덱스 12를 가리킨다. 세 번째 레코드의 포인터 π(3)은 연산자 Θ3의 2진 결과 B(3)을 유지하는 배열의 인덱스 13을 가리킨다. 그러므로, 네 번째 레코드에 도달했을 때, 두 피연산자 B(2) 및 B(3)은 이미 계산되어 있을 수 있다. 연산자 Θ4의 2진 결과 B(4)는 위치 π(4) = 17에 쓰여진다. 그러므로, 다섯 번째 레코드에 도달했을 때, 각각의 두 피연산자 B(1) 및 B(4)는 이미 알려져 있을 것이다. 피연산자 Θ4가 계승자를 갖지 않으므로(즉, 널(null) 계승자), 연산자 Θ4의 2진 결과는 부울 식의 결과이다.
템플릿 배열(1230)의 바람직한 활성화(activation)가 또한 도 12에 나타나 있다. 도 6의 프로세스에 따라 결정된 필터-1 내지 필터-6의 값들은 각각 "true", "false", "true", "false", "true" 및 "true" 이다. Θ1 내지 Θ5 의 부울 연산자들은 사용자에 의해 각각 "AND", "OR", "AND", "AND" 및 "XOR"으로 특정된다. 연산자 Θ4 ("XOR")가 널 계승자를 갖기 때문에 연산자 "XOR"은 부울 식의 결과인 2진 출력 "true"을 생성한다.
도 13은 L1 내지 L11로 표시된 11개의 리프들(필터들)의 부울 식에 대응하는 두 번째 바람직한 규칙 트리(1300)를 나타내고, 도 14는 도 12의 템플릿 배열(1230)과 유사하며, 0부터 43의 범위의 인덱스(1420)를 가지며, 도 13의 규칙 트리에 적용되는 템플릿 배열(1430)을 나타낸다. 규칙 트리(1300)는 Θ2 내지 Θ11로 표시되는 10개의 연산자를 포함한다. 첫 번째 리프 L1은 계승자를 갖지 않는 연산자 Θ11의 피연산자이다. 균일성을 위해, 규칙 트리(1300)를 나타내는 도 14의 템플릿 배열(1430)의 첫 번째 레코드(도 14에서 레코드 1로 표시됨)는 "don't care" 피연산자 φ 및 관용적인 부존재 연산자(permissive non-existent operator) Θ1과 함께 피연산자 L1을 포함하는 것으로 개념적으로 보여지고 있는데, 이는 계승 연산자 Θ11의 피연산자로서 L1의 값을 운반한다. 본 기술분야에 알려진 바와 같이, 피연산자 φ에 할당된 "don't care" 값은 편의상 "true" 상태 또는 "false" 상태가 될 수 있다. 템플릿 배열(1430)의 나머지 10개의 레코드, 즉 레코드-2 내지 레코드-11은 연산자 Θ2 내지 Θ11에 대응한다. 도 14의 템플릿 배열(1430)의 L1, L2 내지 L11의 각 엔트리는 필터에 대한 인덱스(포인터)이다. 위에서 기술된 바와 같이, 도 12를 참조하면, 도 5의 사용자 인터페이스(520)와 관련된 입력 조직화 모듈(522)은 레코드들이 이미 결정된 피연산자들을 갖는 각 레코드들과 함께 순차적으로 처리될 수 있도록 레코드들을 배열한다.
도 15는 도 12의 템플릿 배열(1230) 또는 도 14의 템플릿 배열(1430)을 이용한 트리 인코딩 방법을 요약한다. 단계(1520)에서, 트리의 노드에 각각 대응하는 복수의 레코드를 갖는 템플릿이 생성된다. 각 레코드는 두 필터들의 인덱스들, 현재 연산자 및 현재 연산자의 계승자에 대응하는 계승 레코드에 대한 포인터를 포함하는 4개의 필드를 포함한다. 단계(1530)에서, 도 6의 프로세스에 따라 결정된 필터들의 목록이 고려 중인 컨테이너를 위해 준비된다. 단계(1540)에서, 트리 템플릿의 레코드들은 순차적으로 처리된다. 각 레코드의 피연산자들은 필터들의 목록을 인덱싱함으로써 획득된다. 각각의 연산자는 피연산자들에 적용되고 2진 결과는 계승자 레코드의 피연산자 필드에 위치한다. 단계(1550)에서, 마지막 레코드의 연산자의 결과는 트리에 의해 표현된 부울 식의 결과로서 나타난다.
도 16은 본 발명의 실시예에 따른 규칙 트리 구조의 대안적인 표현 방법을 나타낸다. 규칙과 관련 있는 필터들(조건들)의 집합은 이전에 기술된 바와 같이 컨텐트 기술자들, 기술자 기준 및 필터 연산자들에 기반하여 정의된다. 필터들의 집합의 정의들은 필터-정의 배열로 저장된다. Θ1, Θ2, Θ3, Θ4, ..., Θ11로 표시된 부울 연산자들의 집합은 널 계승자로 지정된 연산자Θ11 및 부울 연산자들의 집합으로부터의 계승자로 지정된 각각의 다른 연산자와 함께 정의된다. 필터들은 트리의 리프들을 형성하며 필터들의 부분집합들로 나뉘어지는데 여기서 부분집합의 필터들은 부울 연산자들의 집합으로부터의 부울 연산자의 피연산자들을 형성한다. 특히, 필터들의 각 부분집합이 두 개의 필터를 포함한다면, 부울 연산자들의 전체 수는 필터들의 전체 수에서 1을 뺀 수와 동일하다.
M(M>1)개의 필터들의 집합을 고려하면, N개의 리프 레코드(1622)들을 포함하는 리프 벡터(1620)가 형성된다(1<N<M). 각 리프 레코드(1622)는 필터들의 각각의 부분 집합 및 부울 연산자들의 집합으로부터의 리프 연산자(1628)를 포함한다. 인스톨 단계에서, 각 리프 레코드(1620)는 필터 정의 배열 내의 피연산자들(필터들)의 인덱스들 및 연산자를 포함한다. 각 리프 레코드(1622)의 필터들의 값들은 각각의 컨테이너 컴포넌트들에 대하여 결정된다.
리프 레코드들의 수인 N과 동일한 노드 레코드(1624)들의 수를 갖는 노드 벡터(1640)가 형성된다. 각 노드 레코드(1642)는 노드 연산자 필드(1648) 및 노드 상태 필드(1644)를 갖는다. 인스톨 단계에서, 노드 레코드(1642)들은 아무런 데이터도 포함하지 않고 비어있다. 노드 레코드(1642)들의 노드 상태(1644)들 및 부울 연산자(1648)들은 리프 레코드들을 처리하는 동안 초기에 결정된다. N개의 노드 레코드(1642)들은 임의의 순서로 배열될 수 있다. 하지만, 노드 레코드(1642)들이 초기에 리프 레코드(1622)들에 대한 1대1 대응을 갖도록 하는 것이 편리하다. 따라서, 노드 레코드 1642(j)의 부울 연산자는 리프 벡터 1622(j)의 계승 부울 연산자이다(1≤j≤N).
필터들의 값들이 결정되면, 각 리프 연산자(1628)는 각각의 필터들(각각의 2진 조건들)에 적용되고 결과는 노드 레코드(1642)의 노드 상태 필드(1644)에 위치한다. 각 리프 연산자(1628)의 계승자는 노드 레코드의 노드 연산자 필드(1648)에 위치한다.
모든 리프 레코드(1622)(도 16의 예시에서는 1622(1) 내지 1622(6))를 처리한 후, 노드 레코드(1642)(도 16의 예시에서는 1642(1) 내지 1642(6))들이 처리된다. 그리고 나서 공통 연산자를 갖는 노드 레코드들(이하, 연결된(connected) 노드 레코드들)이 확인된다. 그리고 나서 새로운 상태를 생성하기 위해 모든 연결된 노드 레코드들의 노드 상태들에 공통 연산자가 적용된다. 연결된 노드 레코드들로부터 선택된 노드 레코드의 연산자 필드는 공통 연산자의 계승자로 교체되고, 선택된 노드 레코드의 노드 상태 필드는 바로 결정된 새로운 상태로 교체된다. 나머지 연결된 노드 레코드들은 노드 벡터로부터 삭제된다. 이렇게 해서, 연결된 노드 레코드의 각 집합을 결합된(combined) 노드 레코드로 교체하는 것과 함께, 노드 벡터 내의 노드 레코드들의 수가 감소한다. 연결된 노드 레코드들을 확인하는 프로세스는 노드 벡터가 오직 한 노드 레코드만을 포함할 때까지 반복적으로 계속된다. 남은 하나의 노드 레코드의 연산자 필드의 부울 연산자를 적용한 결과는 부울 식을 평가한 결과이다. 마지막 노드 레코드의 부울 연산자는 널 계승자를 갖는다.
도 16은 트리의 리프들을 형성하는 11개 필터들의 부울 식을 표현하는, 도 13의 바람직한 트리에 대한 규칙 트리를 인코딩하기 위한 반복적 규칙 구성(1600)을 나타낸다. 리프들(필터들)은 L1 내지 L11로 표시된다. 도 13의 트리에서, 리프 L1은 어떠한 다른 리프와도 관련이 없다. 균일성을 위해, 리프 L1은 리프 φ 와 인위적으로 연관되는데, 그것은 리프 φ와 함께 수동적 연산자 Θ1을 공유한다. 삽입된 리프 φ는 "don't care" 값을 할당받는다. 본 기술분야에 알려진 바와 같이, "don't care" 값은 "true" 상태 또는 "false" 상태 중 어느 하나를 편리하게 할당받을 수 있다.
부울 연산자 Θ2 내지 Θ11 의 집합은 사용자에 의해 정의된다. 연산자 Θ2 내지 Θ6은 리프 레코드들(1622(2) 내지 1622(6))과 관련되고 연산자 Θ7 내지 Θ11은 노드 레코드들(1642(2) 내지 1642(6))과 관련된다. 도 16의 목록(1610)에 나타난 바와 같이, 연산자 Θ11 은 널 계승자를 가지며 각각의 다른 연산자 Θ2 내지 Θ10은 연산자 Θ7 내지 Θ11의 집합으로부터의 계승자를 갖는다.
리프 벡터(1620)는 각각 1622(1) 내지 1622(6)으로 확인되고, 피연산자 필드 1620에 위치한 대응하는 피연산자들의 인덱스들과 함께 연산자 필드 1628에 위치한 연산자 Θ1 내지 Θ6 가 할당된 6개의 리프 레코드들(1622)를 포함한다. 6개 리프 레코드들의 피연산자 필드 내의 피연산자들은 {φ, L1}, {L2, L3}, {L4, L5}, {L6, L7}, {L8, L9} 및 {L10, L11}이다.
필터들의 2진 값들이 결정되면(도 5 및 도 6), 리프 레코드들(1622)이 처리된다. 리프 레코드(1622(1))부터 시작하며, 인위적인 수동적 연산자 Θ1는 L1의 값을 노드 레코드(1642(1))의 노드 상태 필드에게 단순히 넘겨준다. Θ1의 계승자인 연산자 Θ11,은 노드 레코드(1642(1))의 연산자 필드에 위치한다. 그리고 나서 두 번째 리프 레코드(1622(2))가 처리되는데, 연산자 Θ2는 리프 L2 및 L3(필터 L2 및 L3)에 적용되어 노드 레코드(1642(2)의 노드 상태 필드에 위치할 2진 값 B2를 생성한다. 연산자 Θ2의 계승자인 연산자 Θ9는 노드 레코드(1642(2))의 연산자 필드에 위치한다. 1642(1) 내지 1642(6)의 모든 노드 레코드가 결정될 때까지 프로세스는 계속된다.
오직 노드 벡터(1640)만을 이용하여 프로세스는 반복적으로 계속되며, 리프 벡터(1620)는 더 이상 필요하지 않다. 노드 레코드(1642(1))의 연산자 Θ11은 노드 벡터(1640(1))에서 짝지어지지 않는다. 따라서, 노드 레코드(1642(1))는 바뀌지 않은 채로 남는다. 마찬가지로, 노드 레코드(1642(2))는 바뀌지 않은 채로 남는데 이는 노드 레코드들(1642) 중 어느 것도 연산자 Θ9를 포함하고 있지 않기 때문이다. 노드 레코드(1642(3)) 및 노드 레코드(1642(4))는 공통 연산자 Θ7를 갖는데, 이는 피연산자 B3 및 B4에 적용되어, B3를 대신하여, 노드 레코드(1642(3))의 노드 상태 필드에 위치할 2진 결과 B7을 생성한다. 연산자 Θ7의 계승 연산자인 Θ9는 Θ7을 대신하여 레코드(1642(3)의 연산자 필드에 위치한다. 이제 새롭게 결합된 레코드(1642(3))에서 소비된 노드 레코드(1642(4))는 삭제된다. 마찬가지로, 노드 레코드(1642(5)) 및 노드 레코드(1642(6))는, 공통 연산자 Θ8을 피연산자 B5 및 B6에 적용함으로써 결정된 노드 상태 B8과 연산자 Θ8의 계승 연산자 Θ10을 갖는 새로운 노드 레코드에서 결합된다. 노드 벡터(1640)는 이제 참조 번호 1640(2)로 확인되며 4개의 노드 레코드로 축소된다. 노드 벡터(1640(2))는 단순히 노드 벡터(1640(1))를 중복 기재(over-write)한다.
노드 레코드(1642(1)) 및 노드 레코드(1642(4))는 바뀌지 않은 채로 남으며, 새로운 결합된 노드 레코드(1642(2))를 생성하도록 결합되는 노드 레코드(1642(2)) 및 노드 레코드(1642(3))와 함께 프로세스는 반복적으로 계속된다. 이제 두 개의 바뀌지 않은 노드 레코드는 축소된 노드 벡터(1640(3))에서 노드 레코드(1642(1)) 및 노드 레코드(1642(3))이다.
노드 레코드(1642(2)) 및 노드 레코드(1642(3))는 공통 연산자 Θ10을 갖는다. 연산자 Θ10는 피연산자 B9 및 B8에 적용되어, 노드 레코드(1642(2))의 노드 상태 필드에 위치하는 새로운 상태 B10을 생성한다. 연산자 Θ10의 계승 연산자 Θ11은 노드 레코드(1642(2))의 노드 연산자 필드에 위치한다. 노드 레코드(1642(1)) 및 노드 레코드(1642(2))의 공통 연산자 Θ11은 피연산자 B1 및 B10에 적용되어 부울 식의 출력 B*을 생성한다.
도 17은 도 16의 노드 벡터(1640) 및 리프 벡터(1620)을 이용하여 규칙 트리의 출력을 결정하는 프로세스를 나타낸다. 단계(1720)에서, 고려 중인 데이터 컨텐트를 특징화하는 부울 조건들의 집합(부울 필터 L2 내지 L11)이 결정된다. 단계(1722)에서, N(N>1)개의 리프 레코드들(1622)을 갖는 리프 벡터(1620)가 형성된다. 각 리프 레코드(1622)는 부울 연산자 필드(1624) 및 부울 조건들의 부분집합(필터 L2 내지 L11의 부분집합)에 대한 필드를 포함한다. 단계(1724)에서, N개의 노드 레코드들(1642)의 노드 벡터(1640)가 형성된다. 각 노드 레코드(1642)는 부울 연산자 필드(1648) 및 노드 상태 필드(1644)를 포함한다. 단계(1726)에서, 도 5 및 도 6을 참조하여 위에서 기술된 바와 같이 컨텐트 데이터의 특징들로부터 결정된 부울 조건들(부울 필터들)의 각각의 부분집합에 각 리프 연산자가 적용된다. 2진 결과는 선택된 노드 레코드(1642)의 노드 상태 필드에 위치한다. 단계(1728)에서, 각 리프 연산자의 계승자는 선택된 노드 레코드의 연산자 필드에 위치한다. 단계(1730)에서, 공통 연산자를 갖는 노드 레코드들은 결합된 레코드들로 교체되며, 따라서 노드 벡터(1640)의 노드 레코드들(1642)의 수가 감소한다. 단계(1732)에서, 공통 연산자는 교체된 노드 레코드들의 노드 상태들에 적용되고, 2진 결과는 결합된 레코드의 연산자 필드에 위치한다. 단계(1734)에서, 도 16의 목록(1610)으로부터 결정된 공통 연산자의 계승자는 결합된 노드 레코드의 연산자 필드에 위치한다. 단계(1736)에서, 남아 있는 노드 레코드들의 수가 1보다 크다면, 공통 연산자의 노드 레코드들을 결합하는 프로세스를 계속하기 위하여 단계(1730)가 다시 수행된다. 만약 남아 있는 레코드의 수가 1이라면, 남아 있는 노드 레코드의 연산자는 노드 레코드의 노드 상태들에 적용되고, 그 결과는 편집 동작이 수행될 필요가 있는지 여부를 결정한다(단계 1740).
도 18은 도 17의 프로세스를 상세하게 설명한 흐름도이다. 도 19에서 상술될 단계(1820)에서, 리프 벡터(1620)가 만들어진다. 리프 레코드들(1622(1) 내지 1622(N))은 순차적으로 고려된다. 단계(1824)에서 인덱스 j 는 0과 같도록 설정된다. 단계(1826)에서 더 많은 리프 레코드들이 처리되어야 하는 것으로 결정된 경우, 단계(1828)에서는 인덱스 j를 1 증가시키고 현재 리프 레코드의 리프 인덱스들에 대응하는 리프 집합(필터 집합)을 획득하며, 단계(1830)에서는 현재 리프 레코드의 연산자 Θ (연산자 Θ1 내지 Θ6 중 하나)를 획득한다. 단계(1832)에서는 그 연산자를 획득된 리프 집합에 적용하여, 2진 출력 B를 얻는다. 단계(1834)에서, 도 16의 목록(1610)으로부터 계승자 S(Θ)가 결정된다.
노드 벡터(1640)의 노드 상태 필드들 및 연산자 필드들은 이하에서 U(j), V(j)로 표시된다(1≤j≤N). 즉, U(j) 및 V(j)는 노드 레코드(1642(j))를 정의한다(1≤j≤N). 단계(1836)에서, B의 값은 노드 벡터(1640)의 노드 상태 필드 U(j)에 위치하며, S(Θ)의 값은 노드 벡터(1640)의 연산자 필드 V(j)에 위치한다. 모든 리프 레코드들(1622(1) 내지 1622(N))이 처리될 때, 인덱스 j는 리프 레코드들의 수 N과 같으며, 노드 벡터(1640)의 각 노드 레코드(1642)는 각각의 노드 연산자 및 노드 상태를 갖는다. 단계(1840)에서, 노드 벡터(1640)의 노드 레코드들(1642)의 현재 수 ν는 j(여기서 j는 N과 같음)와 같도록 설정된다. 단계(1842)에서, 노드 레코드들의 현재 수 ν가 1보다 크다면, 동일한 연산자를 갖는 모든 노드 레코드들(1642)을 모으고 그러한 레코드들을 결합하기 위해 노드 벡터는 스캐닝된다. 스캐닝 이전에, 노드 레코드들의 수의 변화를 검출하는 것을 가능하게 하기 위해 노드 레코드들의 현재 수 ν*=ν가 기록된다(단계 1843). 단계(1844)에서 인덱스 k는 0과 같도록 설정되고, 단계(1846)에서는 노드 레코드(1642(k)의 연산자 Θ=V(k)를 기록한다. 단계(1848)에서는 동일한 연산자 Θ를 갖는 다음의(subsequent) 노드 레코드들의 수 μ을 확인하기 위해 노드 벡터(1640)의 다음 노드 레코드들을 검사한다. 만약 확인된 다음 노드 레코드들의 수 μ이 0이라면(단계(1850)), 단계(1852)에서 인덱스 k는 1 증가하고, 만약 인덱스 k가 노드 레코드들의 현재 수 ν보다 작다면, 단계(1846)가 다시 수행된다. 그렇지 않으면, 단계(1856)에서는 동일한 연산자 Θ의 노드 레코드들의 (μ+1)개 피연산자들을 모으고, 결합된 노드 레코드의 새로운 상태 B를 결정하기 위해 연산자들 Θ를 (μ+1)개 피연산자들에게 적용한다. 단계(1860)에서, 다음의 μ개의 확인된 노드 레코드들은 삭제되고, 단계(1862)에서는 새로운 상태 B를 노드 레코드(1642(k))의 노드 상태 필드 U(k)에 삽입하며 계승 연산자 S(Θ)를 노드 레코드(1642(k))의 연산자 필드 V(k)에 삽입한다. 단계(1864)에서, 남아 있는 노드 레코드들의 수는 (ν-μ)로 결정된다. 노드 벡터(1640)가 공통 연산자의 노드 레코드들을 더 포함하고 있는지 결정하기 위하여, 단계(1864) 이후에 단계(1852) 및 단계(1854)가 적용된다. 만약 단계(1854)에서 k가 ν보다 작은 것으로 결정된다면, 단계(1846)에서부터 노드 벡터의 스캐닝이 계속된다. 그렇지 않고, 단계(1854)에서 k=ν (k는 ν를 초과할 수 없음)인 것으로 결정된 경우, 단계(1855)에서는 ν의 현재 값(단계(1864)에서 마지막으로 업데이트됨)이 이전 값 ν*보다 작음을 보장한다. 그렇지 않으면, 단계(188)에서 오류가 보고된다. 특히, 사용자에 의해 제공된 부울 식이 부정확한 경우 단계(1855)의 요건 ν<ν*는 만족되지 않는다. 만약 ν<ν*이면, 단계(1855) 다음으로 단계(1842)가 따른다. 만약 단계(1842)에서 남아 있는 노드 레코드의 수가 1인 것으로 결정된 경우, 남아 있는 노드 레코드의 연산자는 각각의 피연산자에 적용되어 상태 B*를 결정하는데(단계(1890)), 이는 각각의 편집 동작을 결정한다.
도 19는 도 16의 리프 벡터(1620)를 만드는 도 18의 단계(1820)를 설명한다. 단계(1920)에서, 필터들(조건들)의 집합이 만들어지며 단계(1922)에서는 도 5 및 도 6을 참조하여 기술된 바와 같이 사용자 입력에 기반하여 리프 연산자들이 결정된다. 리프 연산자들은 순차적으로 적용되어 대응하는 리프 레코드들(1622)을 생성한다. 만약 단계(1924)에서 적어도 하나의 연산자가 아직 적용되지 않은 것으로 결정된 경우, 단계(1926)에서는 새로운 리프 레코드(1622)를 리프 벡터에 추가한다. 단계(1928)에서는 남아 있는 연산자들 중 하나를 선택하며, 단계(1930)에서는 리프 레코드의 피연산자 필드(1624)와 관련된 필터를 추가한다. 선택된 연산자에 속하는 모든 필터들이 현재 리프 레코드(1622)에 포함되는 것으로 단계(1932)에서 결정될 때까지, 단계(1930)가 반복된다. 현재 리프 레코드(1622)가 완성되면, 단계(1932)에서 결정된 바와 같이, 단계(1924)가 다시 수행된다. 단계(1924)에서 모든 리프 연산자들이 고려된 것으로 결정될 때, 완성된 리프 벡터(1620)가 도 18의 단계(1824)에 제시된다.
도 20은 필터들의 집합의 각 값에 대해 규칙의 부울 식의 2진 값을 미리 연산하는 방법을 나타낸다. 필터들의 집합은 필터들과 1대 1 대응하는 다수의 비트들을 갖는 비트 열로써 표현되며, 그 결과 비트 열의 각 비트는 하나의 필터의 대응한다. μ(μ>1)개의 필터들의 경우, 비트 열은 μ 비트들을 포함하며 0에서 2μ-1범위의 값을 갖는다. 단계(2012)에서, 0의 시작 비트 열 값(μ 비트들은 모두 0으로 설정됨)이 설정되며, 2μ 엔트리들을 갖는 규칙 벡터의 각 엔트리는 "0"으로 초기화된다. 단계(2014)에서, 도 10, 15 또는 17을 참조하여 기술된 방법들 중 하나를 이용하여 부울 식이 평가된다. 단계(2016)에서, 2진 결과("true", "false")가 0 에서 2μ -1의 비트 열의 현재 값에 대응하는 위치에 있는 규칙 벡터에 저장된다. 단계(2018)에서, 1을 더함으로써 비트 열 값은 증가된다. 단계(2030)에서 비트 열의 μ 비트들 각각이 0의 값을 갖는 것으로 결정될 때, 규칙 벡터의 생성이 완료된다(단계(2040)). 특히, 각각의 μ 비트들이 "1"의 값을 가진 스트링은 규칙 벡터의 2μ -1번째 엔트리에 대응하며, 단계(2018)에서 1을 더하여 비트 열을 μ 개의 0으로 리셋시킨다. 대안적으로, 비트 열은 규칙 벡터 생성의 완료를 가리키는데 이용되는 최상위 비트(most-significant bit)를 갖는 μ+1개의 비트들을 가질 수 있다. 그리고 나서 실행 시간에 부울 식의 2진 값을 직접 결정하는데 규칙 벡터가 이용될 수 있으며, 이에 따라 컨텐트 필터링 시스템의 처리량(throughput)이 향상된다.
요약하면, 데이터 컨테이너들의 컨텐트를 필터링하는 방법은 다음 단계들을 포함한다.
(1) 필터들(2진 조건들)의 집합이 정의되는데, 여기서 각 필터는 컨텐트의 선택된 기술자 및 그 기술자의 각각의 기준의 함수이다.
(2) 규칙들의 집합이 정의되는데, 여기서 각 규칙은 부울 식 및 대응하는 컨텐트 필터링 동작을 특정한다.
(3) 부울 식들이 한번에 하나씩 고려된다.
(4) μ개의 필터들(2진 조건들)의 부울 식을 고려한다. 필터들은 μ 비트들(μ>1)의 비트 열로서 표현된다.
(5) 2μ 엔트리들의 규칙 벡터를 생성하기 위하여 비트 열의 2μ 값들 각각에 대한 부울 식을 평가하는데, 여기서 각 엔트리는 비트 열의 2μ 값들 중 하나에 대응하는 컨텐트 메트릭(metric)의 상태이다.
(6) 모든 부울 식들에 대하여 단계 (5)를 반복한다.
(7) 데이터 컨테이너를 수신하고 파싱한다.
(8) 규칙을 선택하고, 데이터 컨테이너의 컨텐트에 따라 선택된 규칙의 특정된 μ 필터들의 값을 결정한다.
(9) 선택된 규칙에 대응하는 규칙 벡터를 인덱싱하고, μ 비트들의 비트 열에 의해 결정되는 인덱스에 대응하는 규칙 벡터 내의 엔트리의 값을 결정한다.
(10) 엔트리의 값에 따라 컨텐트 필터링 동작을 실행한다.
(11) 수신된 컨테이너에 새로운 규칙이 적용될 필요가 있는 경우 단계 (8) 내지 (10)을 반복한다.
도 21은 L1, L2, L3 및 L4로 표시되는 4개의 필터들(μ=4)의 집합의 부울 식을 특정하는 규칙에 대한 규칙 벡터를 나타낸다. 필터들의 집합은 4비트의 비트 열에 의해 표현된다. 부울 식은 '0000'에서 '1111' 범위의 값을 가진 비트 열의 16개 값(2112) 각각에 대하여 평가됨으로써, 2진 출력(2114(j))을 생성하는데, 2진 출력(2114(j))은 "true" 또는 "false"을 나타내며, 비트 열의 비트 열 값 j (0≤j<μ)에 대응한다.
컨테이너를 수신하면, 도 21에서 고려된 규칙에 대한 4개 필터들의 집합을 결정하기 위해 컨테이너 컴포넌트의 컨텐트가 검사된다. 예를 들어, 만약 4개 필터들의 집합이 "1", "0", "0" 및 "1"의 값을 가져 "1001"의 비트 열(2140)을 나타낸다면, 부울 식의 값은 2진 규칙 벡터(2114)의 위치 9 (2진 값 1001)로부터 직접 독출될 것이다.
도 21의 바람직한 예시와 함께, 도 20의 방법은 적정한 수의 피연산자들(필터들)의 부울 식들을 사용하는 규칙들에 적합하다. 예를 들어, 8개의 필터의 경우, 2진 규칙 벡터(2114)는 상대적으로 짧을 것이며, 단지 256비트만을 갖는다. 예를 들어, 만약 부울 식이 16개보다 많은 피연산자를 갖는다면, 큰 2진 규칙 벡터를 저장하는 것 보다는 그것이 필요해질 때마다 부울 식을 평가하는 것이 바람직할 수 있다. 부울 식 당 피연산자의 수가 16개를 넘을 가능성은 낮다.
도 22는 필터 정의들 및 규칙 정의들과 관련 있는 데이터 엔트리의 프로세스를 나타낸다. 프로세스는 규칙 파일이 이미 생성되었는지 여부를 결정하는 데서 시작한다(단계(2220)). 만약 규칙 파일이 아직 생성되지 않았다면, 단계(2222)에서는 본 기술분야에 알려진 종래의 방법들을 이용하여 파일을 생성한다. 다음 단계는 규칙 파일에 규칙들을 추가하는 것이다. 단계(2224)에서는 규칙 파일을 상주시키거나 업데이트 하기 시작한다. 단계(2224)에서는 규칙 파일을 열고 프로세스를 단계(2226)으로 보내는데, 단계(2226)에서는 사용자로 하여금 새로운 규칙이 인코딩되고 규칙 파일에 추가될지 여부를 지시하도록 한다. 규칙 파일을 상주시키거나 업데이트하는 것은 사용자에 의해 종결된다(단계(2280)). 만약 더 많은 규칙들이 추가되어야 한다면, 사용자 인터페이스(520)(도 5) 또는 연산, 관리 및 유지 모듈(230)(도 2)에 위치하는 데이터 획득 모듈(미도시)이 규칙 템플릿을 생성한다(단계(2230)). 규칙 템플릿은 많은 형식들 중 하나를 선택적으로 취할 수 있는데, 이는 사용자에 의해 결정된다. 규칙 템플릿의 형식은 (1) 사용자에 의해 특정된 규칙들이 순차적으로 적용될지 또는 계층적(hierarchical) 순서에 따라 적용될지 여부 및 (2) 규칙의 부울 식이 대수 분석적(algebraic-analytical) 형식으로 입력될지 또는 트리 구조 형식―여기서, 트리의 노드는 연산자 및 각각의 피연산자를 나타냄―으로 입력될지 여부에 의존한다. 어느 경우든지, 데이터 획득 모듈은 데이터 엔트리를 용이하게 하는(facilitate) 명령어들을 각각의 템플릿에 제공할 수 있다. 예를 들어, 데이터 획득 모듈은 사용자로 하여금 단순한 연산들―여기서, 각 연산은 연산자 및 피연산자들의 집합을 포함함―을 입력하게 함으로써 부울 식의 대수적 형식을 구성하도록 사용자를 안내하여, 원하는 식으로 진행하게 한다. 새로운 연산자의 각각의 추가와 함께, 구성된 식의 유효성(validity)이 검증될 수 있다. 만약 부울 식이 트리 구조로 표현된다면, 데이터 획득 모듈은 속 트리 구조(generic tree structure)를 보여줄 수 있는데, 트리의 선택된 노드들과 관련 있는 데이터를 사용자가 입력함으로써 속 트리 구조는 축소되고 검증(validate)될 수 있다.
단계(2232)에서, 임의의 적절한 포맷으로 인코딩된 규칙 식별자가 제공된다. 단계(2234)에서, 규칙 동작이 특정되며, 단계(2240)에서는 규칙과 관련된 부울 식을 정의한다. 특정된 규칙의 규칙 동작은 관련된 부울 식의 값에 따라 적용된다. 단계(2240)는 단계(2242), 단계(2244), 단계(2246), 단계(2248), 단계(2250), 단계(2252) 및 단계(2260)를 포함한다. 단계(2242)에서는 도 3의, 참조 번호 340에 나타난 바와 같이 필터 템플릿을 생성한다. 단계(2244)에서는 필터의 타입이 설정되는데, 이는 고려되는 컨테이너의 컨텐트의 많은 기술자들 중 하나일 수 있다. 단계(2246)에서는 필터의 연산자를 설정하는데, 이는 1진 연산자들, 2진 연산자들, 산술 연산자들, 비교 연산자들, 논리 연산자들, 집합 연산자들 및 사용자 정의 연산자들의 메뉴로부터 선택될 수 있다. 단계(2248)에서는 필터의 기준을 설정하는데, 이는 단계(2244)에서 선택된 기술자와 관련 있는 임계값(threshold) 또는 타겟 값이다. 단계(2250)에서는 사용자로 하여금 규칙에 대한 새로운 필터를 정의하거나 어느 정도까지만 특정된 필터들의 집합에 적용될 부울 식을 정의하는 것으로 진행하도록 한다. 다른 필터를 추가하기 위해, 단계(2250)에서 사용자가 모든 관련 필터들이 표현된 것으로 결정할 때까지, 단계(2242) 내지 단계(2248)가 다시 수행된다. 단계(2252)에서는 사용자로 하여금 위에서 기술된 포맷들 중 하나에 따라 부울 식을 입력하도록 한다. 도 9에 나타난 바와 같이, 규칙은 오직 하나의 필터에 기반할 수 있는데, 그러한 경우 부울 식은 수동적 연산자로 축소되어, 단순히 단일 필터의 값을 이용하여 단계(2234)에서 특정된 규칙 동작이 적용될지 여부를 결정한다.
단계(2260)에서는 구성된 규칙을 단계(2224)에서 열린 규칙 파일에 첨부한다. 이렇게 하여 구성된 각 규칙의 필터들의 값들은 수신된 컨테이너들을 처리할 때 "런 타임"에서 결정된다. 인코딩된 규칙들은 필터들의 식별자들을 포함하는데, 이는 단순히 필터들을 저장하는 배열(미도시)의 인덱스들일 수 있다.
시스템 인스톨 또는 업데이트 중에 도 22의 프로세스가 수행된다. 인코딩되고 규칙 파일에 저장되는 규칙들은 "실시간"으로 활성화된다.
도 23은 복수의 컴포넌트를 갖는 수신된 멀티미디어 컨테이너의 컴포넌트들의 순차적인 필터링 프로세스를 나타낸다. 컨텐트 필터링을 위한 컨테이너의 컴포넌트들의 프로세싱의 순서는 임의적이며 사용자에 의해 설정될 수 있다. 전체 컨테이너에 대한 모든 제약이 몇몇 연산적인 이유들로 인해 강요된다면 컴포넌트들의 프로세싱의 순서는 중요하다.
제어기(240)(도 2)에 의해 요구되었을 때, 단계(2320)에서 컨텐트 필터링 프로세스가 시작된다. 순서―여기서, 컴포넌트들은 순서에 따라 처리됨―를 선택하면, 단계(2340)에서는 단계(2350)에서 적어도 하나의 컴포넌트가 아직 처리되지 않았는지를 판정한다. 그렇지 않으면, 단계(2380)에서는 프로세스를 종료하고 결과를 보고한다. 단계(2360)에서, 고려중인 컴포넌트에 적용 가능한 규칙 집합의 모든 규칙들이 실행되고, 단계(2340)가 다시 수행되어, 다른 컴포넌트가 처리될 필요가 있는지 결정한다. 모듈은 컴포넌트에 적용되는 임의의 필터링 동작을 가리키는 통지를 삽입한다.
도 24는 규칙들의 집합이 컨테이너의 컨텐트에 적용되는 단계(2360)(도 23)을 설명한다. 단계(2360)는 컨테이너의 컴포넌트에 적용한다. 단계(2424)에서는 전체 규칙 집합이 적용되었는지 여부를 결정한다. 만약 그렇다면, 단계(2480)에서는 규칙들의 집합을 수행한 결과로 나타난 임의의 컨텐트 필터링 동작들을 가리키는 컨테이너에 통지를 첨부한다. 그렇지 않으면, 단계(2428)에서는 현재 규칙을 선택하고 선택된 현재 규칙과 관련된 모든 연관 필터들의 정의들을 획득한다. 특히, 한 규칙의 결과가 다른 규칙의 선택에 영향을 미치는 경우, 규칙들은 특정한 순서로 배열될 수 있다. 또한, 도 25를 참조하여 기술되는 바와 같이 단순 배열보다는 형식적인 그래프에 의해 규칙 상호 의존이 표현될 수 있다.
단계(2430)에서는 선택된 현재 규칙을 실행한다. 단계(2430)는 단계(2432), 단계(2436), 단계(2440) 및 단계(2444)를 포함한다. 단계(2432)에서는 단계(2428)에서 확인된 모든 필터들이 각 필터의 2진 값을 결정하기 위하여 활성화되었는지 여부를 결정한다. 필터의 연산자가 각각의 피연산자들에 적용되어 그 필터의 2진 값을 생성할 때, 그 필터가 활성화 되었다고 한다. 만약 현재 규칙과 관련 있는 모든 필터들이 활성화 되었다면, 단계(2432)에서는 제어를 단계(2460)으로 옮긴다. 그렇지 않으면, 고려 중인 필터의 값을 생성하기 위해 단계(2436), 단계(2440) 및 단계(2444)가 수행된다. 단계(2436)에서는 도 5 및 도 6을 참조하여 기술된 바와 같이 고려 중인 컨테이너 컨텐트의 특징들에 기반하여 연산자 및 각각의 피연산자들의 값들을 획득한다. 단계(2440)에서는 연산자를 피연산자들에 적용하며, 단계(2444)에서는 현재 규칙의 부울 식을 평가하는데 사용하기 위해 현재 필터의 값을 기록한다.
단계(2460)에서는 도 10, 도 15 또는 도 17의 인코딩 방법들 중 하나에 따라 부울 식을 획득한다. 단계(2464)에서는 부울 식을 평가한다. 단계(2468)에서는 현재 규칙과 관련된 컨텐트 필터링 동작을 단계(2464)에서 결정된 부울 식의 값에 따라 고려 중인 컨텐트에 적용할 수 있다. 단계(2470)에서, 만약 현재 규칙의 컨텐트 필터링 동작으로 인해 모든 컨테이너 컴포넌트가 삭제된다면, 후속하는 규칙들을 실행할 필요가 없으며, 단계(2360)에서는 각각의 통지를 삭제된 컴포넌트에 첨부한다. 만약 컨텐트가 편집되지 않았거나, 편집됐지만 삭제되지 않았다면, 더 많은 규칙들이 고려 중인 컨텐트에 적용될 필요가 있는지 여부를 결정하기 위해 단계(2424)가 다시 수행된다. 특히, 특정 임계값을 초과하는 첨부물을 가지고 있거나 제거될 수 없는 악의적인 삽입을 가지고 있다면, 전체 컴포넌트가 삭제될 수 있다.
규칙 상호 의존( Rules inter - dependence )
일반적으로, 특정한 컨텐트에 적용 가능한 규칙들은 보완하는 동작들, 상충하는 동작들 또는 상호 배타적인 동작들을 가질 수 있다. 보완 동작들의 경우, 컨텐트 필터링 결과는 규칙들의 구현 순서에 독립적일 수 있다. 상충 동작들 또는 상호 배타적인 동작들의 경우, 하나의 동작이 다른 동작을 대체한다. 본 발명의 실시예에 따르면, 사용자는 그래프를 이용하여 규칙들의 상호 관계를 정의하도록 요구받을 수 있다.
도 25는 규칙 1 내지 규칙 5로 표시되는 5개 규칙들의 계층적 배열을 가리키는 그래프를 나타낸다. 여기서 규칙의 상태는 규칙의 부울 식을 실행함으로써 나타나는 2진 값으로써 정의된다.
규칙 1의 "true" 상태의 결과는 "동작 1"으로 표기되는 동작인데, 이 동작 이후 단계(2360)은 완료된 것으로 고려된다. "동작 1"은 두 개의 서로 다른 극단들(extremes) 중 하나를 요구할 수 있는데, 첫째는 그것이 너무 크거나 회복할 수 없다는 이유로 전체 컴포넌트를 삭제하는 것이며, 둘째는 그것이 너무 짧아서 악의적인 삽입들을 포함할 수 없다는 이유로 컴포넌트를 허용 가능한 것으로 결정하는 것이다. 규칙 1의 "false" 상태는 컨텐트가 첫 번째 테스트를 통과하고, 규칙 2의 두 번째 테스트의 대상이 되어야 함을 가리킨다.
규칙 2의 "true" 상태의 결과는 "동작 2"으로 표기되는 동작이며, 동작 2 다음에는 규칙 5의 구현이 뒤따른다. 규칙 2의 "false" 상태는 컨텐트가 두 번째 테스트를 통과하고, 규칙 3의 세 번째 테스트의 대상이 되어야 함을 가리키며, 이와 같이 계속된다. 규칙 4의 상태가 "false"인 경우, 프로세스는 컨텐트의 편집 없이 종료된다. 프로세스는 또한 {동작 1}, {동작 2 및 동작 5}, {동작 3} 및 {동작 5} 중 (오직) 하나를 구현한 후 종료될 수 있다.
도 26은 아래 나열되는 것과 같이, 연산 매니저(230)에 의해 이용되는 모듈들을 나타낸다. 각 모듈은 컴퓨터 판독 가능 매체에 저장되는 컴퓨터로 읽을 수 있는 명령어들을 포함한다.
(1) 특정된 프로토콜에 따라 형성되는 멀티미디어 데이터 컨테이너들을 서버 유닛이 수용하도록 구성하기 위한 서버 유닛 구성 모듈(2610).
(2) 공통 타입의 데이터 컨테이너들을 처리하도록 동일하게 구성된 서버 유닛들에게 멀티미디어 데이터 컨테이너들을 공평하게 분산시키기 위한 부하 분산 모듈(2612).
(3) 필터들의 집합―여기서, 각 필터는 컨텐트 기술자, 기술자 기준 및 연산자의 정의를 특정함―의 정의들을 사용자로부터 획득하기 위한 필터 정의 모듈(2614).
(4) 사용자가 대수적 신택스에 따라 부울 식을 제공하는 것을 가능하게 하기 위한 부울 식 획득 모듈(2616).
(5) 사용자가 트리 구조의 형식으로 부울 식을 제공하는 것을 가능하게 하기 위한 부울 식 획득 모듈(2618).
(6) 속 트리―여기서, 트리의 각 노드는 연산자 및 피연산자들의 각각의 집합을 나타냄―의 드로잉(drawing)을 편집하고 가지치기 함으로써 사용자로 하여금 부울 식을 입력하는 것을 가능하게 하는 부울 식 획득 모듈(2620).
(7) 사용자로부터 컨텐트 필터링 규칙들의 집합―여기서, 각 규칙은 필터링 동작 및 필터들의 부분 집합의 부울 식을 특정함―을 획득하기 위한 규칙 구성 모듈(2622).
(8) 규칙에 대하여 특정된 부울 식의 정확함을 검증하기 위한 규칙 검증 모듈(validation module)(2624).
(9) 규칙들을 순서―여기서, 규칙에 의해 수행되는 특정 필터링 동작은 순서에 따라 적어도 하나의 후속하는 규칙의 실행을 불가능하게 함―에 따라 배열하기 위한 규칙 배열 모듈(2626).
(10) 주어진 규칙의 각각의 부울 식의 값에 의거한 주어진 규칙의 연속적인 규칙을 사용자로 하여금 특정하게 하기 위한 규칙 상호 의존 모듈(2628).
(11) 형식적인 그래프의 형식으로 컨텐트 필터링 규칙들의 집합을 표현하기 위한(도 25) 규칙 그래프 정의 모듈(2630).
(12) 프로세싱 노력을 최소화하기 위해, 기존의 논리 최적화(logic-optimization) 테크닉들을 이용하여 각 규칙의 부울 식을 최적화하기 위한 규칙 최적화 모듈(2632).
(13) 특정 규칙들―여기서, 각 규칙은 필터들의 프리셋 수보다는 많지 않은 필터들의 부분집합을 특정함―을 선택하고, 2m 비트―여기서, m>1이고 m는 필터들의 부분집합 내의 필터들의 수―의 배열을 생성하기 위해 특정 규칙들 각각에 대하여 필터들의 부분집합의 모든 값들에 대한 필터들의 부분집합의 부울 식을 평가하고, 메모리 디바이스에 비트들의 배열을 저장하기 위한(도 20 및 21) 규칙 전처리 모듈(2634).
(14) 컨테이너들을 컨테이너 타입들―여기서, 각 컨테이너 타입은 프로토콜에 대응하고, 컨테이너는 프로토콜에 따라 소스에서 만들어짐―로 정렬하고, 복수의 제어기들 중에서 특정 제어기로 특정 타입의 컨테이너들을 보내기 위한 정렬 모듈(2636). 정렬 모듈(2636)은 네트워크 인터페이스(210) 또는 연산 매니저(230)와 관련될 수 있다.
도 27은 아래 나열되는 것과 같이, 본 발명의 실시예에 따라 트랜스코더(280)에 의해 이용되는 모듈들을 나타낸다. 각 모듈은 컴퓨터로 읽을 수 있는 매체에 저장되는 컴퓨터로 읽을 수 있는 명령어들을 포함한다.
(a) 멀티미디어 데이터 컨테이너의 각 컴포넌트의 컨텐트를 특징화하고, 컨텐트 기술자들을 결정하고, 연산자를 적용하고, 필터의 상태를 결정하기 위한 모듈(2710).
(b) 부울 식들의 런 타임 평가 및 규칙의 2진 출력의 결정을 위한 모듈(2720). 부울 식은 대수적 신택스에 따라 또는 트리 구조로서 표현될 수 있다.
(c) 각각의 규칙의 부울 식의 프리셋 값에 따른, 주어진 컨테이너 컨텐트와 관련 있는 필터링 동작을 수행하기 위한 모듈(2730).
도 28은 본 발명의 실시예에 따른, 트랜스코더 서비스 모듈(2810), 프로그램 레지스트리(2820) 및 프로그램 스토리지(2840)를 포함하는 트랜스코더(280)를 나타낸다. 트랜스코더 서비스 모듈은 실행되었을 때 프로세서의 코어로 하여금 복수의 제어기들 중 특정 제어기로부터의 편집 요청 및 특정 컨테이너를 수신하고, 편집 요청과 관련 있는 프로그램들을 선택하고, 특정 제어기에 결과를 반환하도록 하는, 컴퓨터로 읽을 수 있는 매체에 저장되는 컴퓨터로 읽을 수 있는 명령어들을 포함한다. 프로그램 레지스트리는 실행되었을 때 프로세서로 하여금 각각의 기능들에 따라 프로그램들을 조직화하고, 기존의 프로그램들을 각각의 새로운 프로그램들로 교체하도록 하는, 컴퓨터로 읽을 수 있는 명령어들을 포함한다.
제어기(240)(도 2)는 편집 요청을 트랜스코더(280)로 포워딩한다. 편집 요청(2850)을 수신하면, 트랜스코더 서비스 모듈(2810)은 편집 요청에 포함된 정보를 이용하여 실행할 플러그인 프로그램을 확인한다. 트랜스코더 서비스 모듈(2810)은 선택된 플러그인 프로그램을 실행하고 그 결과를 각각의 제어기(240)에 반환한다.
여기서 "플러그인"은 특정한 작업을 수행하도록 고안된 자립적인(self-contained) 모듈로 정의된다. 프로그램 스토리지(2840)는 컴퓨터로 읽을 수 있는 매체에 저장되는 컴퓨터로 읽을 수 있는 명령어들을 포함하며, 다음 두 개 타입의 플러그인을 포함한다.
(a) 초기에 로드되는 상주 플러그인(2842) 및
(b) 동적으로 로드되는 외부 플러그인(2844), 외부 플러그인은 상주 플러그 인을 대체할 수 있음.
상주 플러그인들은 기본적인 기능들을 제공하며, 외부 플러그인들은 부가적인 기능들을 제공하는데, 컨텐트 필터링 및 바이러스 스캐닝이 그러한 기능들의 두 가지 예이다.
플러그인들은 플러그인 등록(registration) 및 액세스를 관리하는 프로그램 레지스트리(2820)에 등록된다. 프로그램 레지스트리(2820)는 그들의 특징들에 기반하여 플러그인들을 조직화한다. 플러그인들은 플러그인 그룹들로 정렬될 수 있다.
플러그인 프로그램들은 플러그인들의 실행을 미리 정의된 방식으로 조직화한다. 플러그인 프로그램들은 특정한 목적을 갖는 플러그인들의 미리 정의된 집합에 대한 실행 논리를 결정하는 명령어들의 단순한 집합으로부터 만들어질 수 있다.
플러그인들을 이용하는 단순한 프로그램의 명령어들의 예시가 다음에 보여진다.
(01) OnErrorGoto TERMINATION_PLUGIN
(02) Execute DEFAULT_SETUP_INITIAL_PROFILE
(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
(10) Execute DEFAULT_CHARGE_DATA_RECORD_PLUGIN
(11) 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
왼쪽의 숫자들은 단지 참조의 편의를 위한 것이며 명령어들의 일부를 구성하는데 필수적인 것은 아니다.
각 "Execute" 커맨드는 언제나 상주 플러그인 이름들을 나타내는 인수(argument)로서 플러그인의 이름을 갖는다. 외부 플러그인은 선택적이기 때문에 절대로 이름에 의해 직접적으로 참조되지 않으며, 따라서 존재할 때만 실행된다. 각 "ExecuteGroup" 커맨드는 인수로서 플러그인 그룹의 이름을 갖는다. 커맨드 "Execute Group"은 그 그룹에 속하는 모든 플러그인들을 실행한다.
라인 1은 임의의 에러 발생 시 프로그램이 라인 14로 점프하며 라인 15 내지 18에 따른 실행을 재개함을 나타낸다. 라인 2 및 3은 실행되어야 할 적응화의 셋업을 수행한다. 라인 4는 필요한 경우 입력의 디코딩을 수행하는데, 예를 들어 입력이 이메일인 경우 그것은 서브 컴포넌트들로 분리되어야 한다. 라인 5 및 라인 9는 컨텐트 필터링 플러그인이 속하는 플러그인 그룹을 실행한다. 따라서 존재하면, 그것은 라인 5에서 실행을 시작하며 라인 9에서 종료한다. 라인 6 및 라인 7은 적응화 파이프라인의 생성을 위해 필요한 연산들의 셋업을 수행하는데, 및 실제로 그것을 생성하는데 각각 이용된다. 적응화 파이프라인은 필요한 적응화를 수행하기 위해 실행되는 연산들의 집합을 포함한다. 라인 8은 그것이 실행되기 전에 적응화 파이프라인에 영향을 미치는 임의의 외부 플러그인을 실행하는 것으로 정해진다. 라인 10은 적응화에 참여할 입력 컴포넌트들의 세부 사항들을 제공한다. 라인 18은 유사한 작업을 출력 컴포넌트들에 대해 수행한다. 그러한 정보는 보고, 빌링(billing) 및 적응화 기능과 필수적으로 관련된 것은 아닌 다른 목적들을 위하여 분석될 수 있다. 라인 11은 적응화 파이프라인 최적화를 수행한다. 라인 12는 그것의 실행 전에 적응화 파이프라인의 분석 및 최적화를 수행하는 임의의 외부 플러그인을 실행한다. 라인 13은 적응화 파이프라인을 실행한다. 라인 15는 적응화 파이프라인 실행의 결과로서 생성된 출력 컴포넌트들을 특징화한다. 라인 16은 생성되었던 출력 컴포넌트들에 영향을 미치는 임의의 외부 플러그인을 실행한다. 라인 17은 (상세한 적응화 레코드의 제공과 같은) 적응화를 완료하는 부가적인 단계들을 수행한다.
규칙들은 "규칙 파일들"에 영구적으로 저장된다. 규칙 파일은 둘 이상의 제어기에 적용할 수 있다. 규칙 파일을 이용하여 컨텐트 필터링은 규칙 파일에 포함된 규칙들을 미디어 (컨텐트)에 적용한다. 만약 주어진 규칙이 "true"으로 평가된다면, 대응하는 동작이 수행된다. 동작은 바이러스(모바일에 특정한 바이러스를 포함)와 같이 바람직하지 않은 컨텐트의 제거, (게임과 같은) 특정한 타입의 미디어의 제거, (미디어의 바이러스에 대한 스캐닝과 같은) 미디어에 대한 동작들을 수행하기 위한 제3자 어플리케이션(third party application)들의 이용을 포함할 수 있다. 하지만, 특정 타입의 컨텐트는 처리 없이 통과할 수 있다.
규칙들의 정의는 연산 매니저(230)(도2)에서 수행된다. 컨텐트 편집(필터링 및 적응화)에 영향을 미치는 규칙들의 적용은 트랜스코더(280)에서 수행된다. 규칙 파일이 생성되면 사용자는 제어기들(240) 중 하나가 임의의 적응화 요청에 따라 그것이 선택한 트랜스코더(280)에 규칙 파일을 보내도록 선택적으로 설정할 수 있다.
"드롭(Drop)" 동작은 미디어가 컨텐트 적응화 프로세스의 출력의 일부분이 아님을 보장한다. "스캔 유지(scan keep)" 동작은 바이어스를 찾기 위한 미디어의 스캐닝으로 결과한다. 이는 안티 바이러스 외부 플러그인이 인스톨되어 있음을 가정한다. 미디어는 실제로 "scan for virus"으로 "표시"되며, 따라서 안티 바이러스 플러그인이 실행되는 적절한 플러그인 프로그램의 실행 시점에, "scan for virus"으로 표시된 모든 미디어에 대해 바이러스 스캔이 이루어진다.
규칙 1로 불리는 규칙의 예제가 아래에 주어진다.
Rule Name =" MaxFileSize50000 " Action =" Drop "
Filter Type =" MaxFileSize " Operator =" GreaterThan " Value ="50000"
Filter FilterOperator =" AND " Type =" Family " Operator =" NotEqual " Value="MESSAGE"
규칙 1과 관련된 이름은 "MaxFileSize50000"이며 그 규칙에 대응하는 동작은 규칙에 포함된 필터(들)과 매치되는 임의의 미디어를 제거하기 위한 "Drop"이다. 이 규칙은 두 개의 필터를 특정한다. 첫 번째 필터는 파일의 크기에 대해 적용되는 "MaxFileSize" 타입이다. 필터 연산자는 "GreaterThan"이며 값은 "50000"이다. 두 번째 필터는 "Family"으로 불리는 타입에 의해 특징화된다. 이 필터는 미디어 패밀리(예: 이미지, 오디오 등)에 적용된다. 그 필터와 관련된 연산자는 "NotEqual"이며 값은 "MESSAGE"이다. 필터들은 부울 연산자 "AND"을 이용하여 결합된다. 따라서, 만약 어떤 파일이 50000보다 큰 크기를 가지며 패밀리 "MESSAGE"가 아닌 경우, 특정된 동작이 수행된다.
규칙 2로 불리는 다른 규칙이 다음에 기술된다.
Rule Name =" MaxFileSize25000AndContentTypes "
Action =" Drop "
Filter Type =" MaxFileSize "
Operator =" GreaterThan " Value ="25000"
BracketOpen
FilterOperator =" AND "
Filter Type =" ContentType "
Operator =" Equals " Value =" image / wbmp "
Filter FilterOperator =" OR "
Type =" ContentType " Operator =" Equals " Value ="image / png "
BracketClose
규칙의 이름은 "MaxFileSize25000AndContentTypes"이며 대응하는 동작은 "Drop"이다. 규칙 2의 목적은 그 규칙에 포함된 필터(들)와 매치되는 임의의 미디어를 제거하는 것이다. 규칙 2의 구조의 상세한 기술이 다음에 보여진다.
● 오직 후속하는 필터들만이 특정된다.
○ 첫 번째 필터:
■ 필터 타입은 "MaxFileSize"이며 필터는 파일의 크기에 적용된다.
■연산자는 "GreaterThan"이다.
■값은 "25000"이다.
○ "AND" 부울 필터 연산자와 함께 괄호 열림(Bracket Open).
○ 두 번째 필터:
■ 필터 타입은 "ContentType"이며 필터는 미디어의 (마임타입(mimetype)과 동등한)컨텐트 타입에 적용된다.
■ 연산자는 "Equals"이다.
■ 값은 "image/wbmp"이다.
○ 세 번째 필터:
■ 부울 필터 연산자 "OR"을 가진다.
■ 필터 타입은 "ContentType"이며 필터는 미디어의 (마임타입(mimetype)과 동등한)컨텐트 타입에 적용된다.
■ 연산자는 "Equals"이다.
■ 값은 "image/png"이다.
○ 괄호 닫힘(Bracket Close).
따라서, 만약 어떤 파일이 ("25000"보다 큰 크기를 가진다) 및 ("image/wbmp"와 동일한 컨텐트 타입 또는 "image/png"와 동일한 컨텐트 타입을 가진다)를 모두 만족하면, 규칙에 특정된 동작이 수행된다. 미디어가 이메일 또는 MMS와 같은 컨테이너인 경우, 동작들은 미디어 또는 그것의 임의의 첨부물들에 영향을 미칠 수 있다. 동작들은 유지(keep)(미디어를 적응화함), 유지 및 스캔(keep & scan)(적응화 전에 바이러스를 찾기 위해 미디어를 스캔함), 드롭(drop)(마지막 메시지의 첨부물을 포함시키지 않음), 통과(pass-through)(미디어를 적응화하지 않고, 바뀌지 않은 채로 남겨둠)를 포함할 수 있다.
공통 규칙 파일에서 정의되는 규칙 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 "
이 경우 공통 규칙 파일은 다음을 포함한다.
● 300000보다 큰 크기를 갖는 모든 파일들을 "드롭"하는 규칙 3 및
● 메시지들인 임의의 미디어들에 대하여 바이러스 스캔을 수행하는 규칙 4.
공통 규칙 파일이 모든 제어기에 적용되고 몇몇 제어기 "X"가 규칙 1 및 2를 포함하는 규칙 파일을 정의했던 경우를 고려한다. 선택된 트랜스코더에 적응화 요청을 보낼 때, 그 제어기는 규칙 1 내지 4를 포함했던 "규칙파일1"으로 불리는 규칙 파일을 보낼 것이다. "규칙파일1"의 구조가 나타난다.
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 FilterOperator =" OR " Type =" ContentType " Operator="Equals" Value =" image / png"
BracketClose
Rule Name =" MaxFileSize300000 " Action =" Drop "
Filter Type =" MaxFileSize " Operator =" GreaterThan " Value ="300000"
Rule Name =" VirusScan " Action =" ScanKeep "
Filter Type =" Family " Operator =" Equals " Value =" MESSAGE "
이러한 특성을 제공하는 실시예의 맥락에서, 규칙 파일들 내의 규칙들의 구조를 관리하기 위해 XML이 이용된다. 이는 이식성(portability) 및 확장성(scalability)을 보장한다. 규칙파일1의 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 > RuleFile1 </ Name >
< FilterRule Name =" MaxFileSize50000 " Action =" Drop ">
< Filter Type =" MaxFileSize " Operator =" GreaterThan " Value="50000"/>
< Filter FilterOperator =" AND " Type =" Family " Operator="NotEqual" Value =" MESSAGE "/>
</ FilterRule >
< FilterRule Name =" MaxFileSize25000AndContentTypes " Action =" 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 >
< FilterRule Name =" MaxFileSize300000 " Action =" Drop ">
< Filter Type =" MaxFileSize " Operator =" GreaterThan " Value="300000"/>
</ FilterRule >
< FilterRule Name =" VirusScan " Action =" ScanKeep ">
< Filter Type =" Family " Operator =" Equals " Value =" MESSAGE "/>
</ FilterRule >
</ ContentFiltering >
컨텐트 필터링의 예제가 아래에 나타난다. 아래와 같은 멀티미디어 컨테이너를 고려한다.
MMS characteristics:
Name: mms1.mms
Family: MESSAGE
Size: 171100
Content-type: application/vnd.wap.multipart.mixed
Number of attachments: 3
MMS attachment characteristics:
Name: image.jpg
Family: IMAGE
Size: 75000
Content-type: image/jpg
Name: image2.jpg
Family: IMAGE
Size: 45000
Content-type: image/jpg
Name: image.png
Family: IMAGE
Size: 50000
Content - type : image / png
컨텐트 필터링은 다음 단계들에 따라 수행된다.
● MMS가 컨텐트 필터링을 거친다.
■ 미디어가 패밀리 "MESSAGE"에 속하기 때문에, 규칙 "VirusScan"은 이 미디어에 대하여 "true"으로 평가한다.
■ 미디어는 "scan for virus"으로 표시된다.
첨부물 image.jpg가 컨텐트 필터링을 거친다.
■ 미디어가 메시지가 아니며 그것의 크기가 50000보다 크기 때문에, 규칙 "MaxFileSize50000"은 "true"으로 평가한다.
■ 미디어는 "Drop"으로 표시된다.
첨부물 image2.jpg가 컨텐트 필터링을 거친다.
■ 이 미디어에 대해 어떠한 규칙들도 "true"으로 평가하지 않는다.
두 번째 첨부물 image.png가 컨텐트 필터링을 거친다.
미디어가 25000보다 큰 크기를 가지며 컨텐트 타입 "image/png"을 갖기 때문에, 규칙 "MaxFileSize25000AndContentTypes"은 이 미디어에 대하여 "true"으로 평가한다.
■ 미디어는 "Drop"으로 표시된다.
컨텐트 필터링 플러그인의 실행 후에 플러그인 프로그램이 재개된다. 이는 안티 바이러스 플러그인에 의한, MMS 미디어 및 그것의 컨텐트에 대한 바이러스 스캐닝으로 이어진다. 그리고 나서 적응화 프로세스가 시작된다. 적응화 및 컨텐트 필터링이 다음 형식들의 출력 MMS를 생성하는 경우를 고려한다.
MMS characteristics:
Name: mms1out.mms
Family: MESSAGE
Size: 25175
Content-type: application/vnd.wap.multipart.mixed
Number of attachments: 2
MMS attachment characteristics:
Name: image2.gif
Family: IMAGE
Size: 24000
Content-type: image/gif
Name: removal_notification.txt
Family: TEXT
Size: 75
Content-type: text/plain
컨텐트 적응화의 결과로써, "image2.jpg"이 적응화되어 "image2.gif"을 출력한다고 가정된다. "image.jpg" 및 "image.png" 모두 "드롭"되었으며, 적용된 컨텐트 필터링 동작들로부터 기인한 출력 MMS의 일부분이 아니다. 새로운 미디어 "removal_notification.txt"이 출력 메시지에 추가된다. 이는 "image.jpg" 및 "image.png"의 제거로부터 기인한다. 트랜스코더들은 미디어의 제거시에 주석문 통지(explanatory text notification)가 첨부되도록 고안된다. 이 통지는 원래 MSS에 있던 몇몇 미디어는 적응화될 수 없었으며 제거되었다는 설명을 MMS의 수신자에게 제공하기 위한 것이다.
안티 바이러스 스캐닝은 외부 플러그인의 형식으로 트랜스코더들에 존재한다. 이 경우 McAffee 또는 Kaspersky와 같은 제3자 안티 바이러스 스캐닝 엔진에 인터페이스를 제공하기 위하여 플러그인 아키텍처가 이용된다. 안티 바이러스 플러그인의 존재는 임의의 다른 플러그인들과 함께 선택적이다. 플러그인 프로그램 레벨에서, 안티 바이러스 플러그인을 실행하도록 정해진 플러그인 플로그램은 안티 바이러스 플러그인이 속하는 플러그인 그룹을 실행하는 커맨드를 포함할 것이다.
안티 바이러스 플러그인의 실행은 미디어에 대한 바이러스의 스캔이 이루어질 것임을 자동적으로 의미하지는 않는다. 바이러스 스캐닝은 오직 컨텐트 필터링에 의해 "scan for virus"으로 표시된 미디어에 대해서만 수행된다. 몇몇 제3자 안티 바이러스 엔진들이 독립형 라이브러리(stand-alone libraries)로서 인스톨될 수 있다. 다른 제3자 안티 바이러스 엔진들은 클라이언트 서버(client-servers)로서 인스톨될 수 있다. 제3자 안티 바이러스 엔진과 적절히 인터페이스하는 식으로 안티 바이러스 플러그인은 쓰여질 수 있다. 임의의 경우에, 안티 바이러스 플러그인은 컨텐트 적응화를 거치는 미디어에 대한 바이러스 스캐닝을 수행하기 위한 트랜스코더의 엔트리 포인트이다.
따라서, 위에서 기술된 실시예들에서, 다음 특성들이 제공된다. (1) 첨부물들을 체크하기 위해 메시지를 파싱하는 능력, (2) 컨텐트 타입에 따라 그것을 필터링하기 위해 첨부물을 특징화하는 능력 및 (3) 미디어 요소가 바람직한지 아닌지 결정하기 위하여 규칙들의 사용자 정의, 확장 가능 및 계층적 집합을 수용함.
편집 동작들은 미디어 첨부물들이 어떻게 취급될지 결정한다. 편집 동작들은 적응화 프로세스에 대한 첨부물의 제시, 적응화 프로세스에 제시하기 이전의 바이러스에 대한 미디어의 스캐닝 및 첨부물의 유지 및 첨부물의 드롭 중 하나 이상을 포함할 수 있다. 편집 동작들은 안티 바이러스 및 침입 방지 소프트웨어 프로그램들의 호출(invoking)을 포함할 수 있다.
도 29는 데이터 스트림을 필터링하는 방법의 개요를 제공한다. 데이터 스트림은, 각각이 서로 다른 타입의 컴포넌트를 포함하는 데이터 컨테이너로서 구성된다. 그 방법은 범용 컴퓨터일 수 있는 계산 디바이스로 구현된다.
단계 2920에서, 사용자(인스톨러)는 컨텐트 타입 및 컨텐트 기술자의 정의를 제공한다. 컴포넌트 크기와 같은 컨텐트 기술자는 다수의 컨텐트 타입에 대해 공통일 수 있다. 인코딩 방법과 같은 컨텐트 기술자는, 단일 컨텐트 타입에 대해 특정된다. 또한, 사용자는 데이터 필터의 정의를 제공하고, 각 필터는 연산자와 2개의 피연산자를 가지는데, 피연산자중 하나는 컨텐트 기술자의 값이고, 다른 것은 대응하는 기준(임계값)이다. 연산자는 필터의 2진 상태를 결정한다. 예를 들어, 기술자는 컴포넌트 크기일 수 있고, 기준은 80킬로바이트(kilobyte)일 수 있으며, 연산자는 비교를 실행하여, 컴포넌트 크기가 80킬로바이트 미만이면, "false"로 결과하고, 그렇지 않으면, "true"로 결과한다.
사용자는 단일 필터 또는 다수 필터의 부울 함수에 기초하는 규칙을 추가 제공한다. 규칙이 단일 필터로서 정의되면, 필터의 상태는 규칙의 결과로 된다. 규칙이 다수의 필터에 기초하면, 부울 함수는 규칙의 2진 결과를 결정한다. 규칙은 그 규칙의 2진 결과에 좌우되는 동작을 작동시킨다. 동작은 수신된 컴포넌트를 수용하거나, 바람직하지 않은 컨텐트를 제거하도록 컴포넌트를 편집하거나, 수신기의 알려진 용량을 따르도록 컴포넌트를 다시 인코딩하는 것이다. 컴포넌트는 독립적인 또는 상호 상관된 규칙일 수 있는 다수개의 규칙에 따라 필터링될 수 있다. 그러나, 컴포넌트에 적용된 다수의 규칙이 상호 상관되는 것이 타당해 보인다. 예를 들어, 컴포넌트의 크기가 특정된 임계값을 초과하면 제 1 규칙은 컴포넌트를 압축하게 되고, 컴포넌트가 특정의 원하지 않은 컨텐트를 포함함을 알게 되면 제 2 규칙은 컴포넌트를 폐기하고 그렇지 않으면 컴포넌트를 유지한다. 바람직하게, 제 2 규칙이 처음에 적용된다.
단계 2940에서, 메모리 디바이스에 설치된 프로세서 실행 가능 명령어는, 도 36 내지 48을 참조하여 설명하겠지만, 규칙 트리 또는 계층적 규칙층들에 기초하여, 프로세서가 인코딩된 필터 집합 및 인코딩된 규칙 집합을 생성할 수 있게 한다. 프로세서 실행 가능 명령어는 각 규칙에 의해 결정된 동작을 실행한다. 각 컨텐트 타입은 인코딩된 규칙 집합의 부분 집합과 연관된다. 단계 2940은 단계 2920에서 획득한 사용자 입력의 갱신을 설명하기 위해 주기적으로 또는 필요한 경우에 반복될 수 있다. 단계 2940은 "오프-라인(off-line)" 프로세스로 구현된다.
단계 2960은 네트워크로부터 수신한 데이터에 필터링 규칙을 적용한다. 수신된 데이터 컨테이너는 서로 다른 컨텐트 타입의 컴포넌트들로 파싱된다. 각 컴포넌트에 대하여, 컴포넌트의 컨텐트 타입에 대해 지정된 인코딩된 규칙이 적용된다. 컨테이너의 임의 컴포넌트에 대해 실행된 임의 편집 동작의 표시는 데이터 컨테이너에 첨부된다. 편집 동작이 전체 데이터 컨테이너의 삭제로 결과하면, 편집 동작의 표시만이 의도된 수신기에 전송될 수 있다.
도 30에는 각각 3022(0) 내지 3022(6)으로 표시된 7개의 필터(3022)와, 각각 3032(0) 내지 3032(8)로 표시된 9개의 규칙(3032)을 가진 규칙 집합(3030)과, 각각 3042(1) 내지 3042(5)로 표시된 5개의 동작(3042)을 가진 동작 집합이 도시된다. 동작들 중 한 동작은 고려중인 컴포넌트에 대해 임의의 변경을 일으키지 않은 수동 동작일 수 있다. 컨텐트 기술자(3010), 기술자의 기준(3012) 및 연산자의 리스트(3014)는 단계 2920에서 획득되고, 단계 2940에서 인코딩된 필터(302)를 형성한다. 단계 2940에서 결정된 인코딩된 필터(3022)와 단계 2920에서 획득된 사용자 정의 부울 식(3024)은 단계 2940에서 인코딩된 규칙을 형성한다. 필터(3022)는 독립적인 2진 변수이고, 규칙(3032)은 각 부울 함수에 따라 다수의 필터 또는 단일 필터로부터 결정된 2진 값을 가진다. 데이터 컨테이너의 컨포넌트에 적용된 단일 규칙은 그 규칙의 2진 값에 따라 결정된 2개의 동작(3042)중 한 동작으로 이어진다. 2개의 동작중 한 동작은 수동 동작일 수 있다. 규칙(3032)의 부분 집합은 단일 컴포넌트에 적용되고 다수의 동작으로 이어질 수 있다.
도 31에는 도 29의 방법을 구현한 디바이스가 도시된다. 사용자 인터페이스(3120)는 사용자 입력(2920)을 수신하고, 입력 세너티(sanity)를 검증하고, 필요한 경우에 사용자가 입력 데이터를 수정할 수 있게 한다. 사용자 입력은 프로세서 판독 가능 인코딩된 필터 및 인코딩된 규칙을 생성하는 구성 모듈(314)에 제공된다. 구성 모듈(3140)은 새로운 사용자 데이터 엔트리(user-data entry)에 응답하여 활성화된다. 구성 모듈(3140)은, 도 36 내지 39를 참조하여 설명하겠지만, 적어도 하나의 규칙 트리의 형태로 인코딩된 규칙을 분류하고 재배열하거나, 도 40 내지 48을 참조하여 설명하겠지만, 계층적 규칙층들 형태로 인코딩된 규칙을 분류하고 재배열한다.
구성 모듈(3140)의 주요 출력은 각 컨텐트 타입에 대한 인코딩된 규칙 집합이다. 그러나, 인코딩된 규칙들은 다수의 컨텐트 타입에 적용 가능하다. 규칙의 결과는 하나의 필터의 상태 또는 다수의 필터의 부울 함수일 수 있다. 각 필터는 컨텐트 기술자, 기술자 기준 및 연산자의 함수이다. 필터의 기술자 기준 및 연산자는 인코딩된 필터내에 포함되고, 기술자 값은 수신된 컨테이너의 컨텐트로부터 결정된다. 구성 모듈(3140)에서 결정된 프로세서 판독 가능 인코딩된 규칙 및 인코딩된 필터는 필터링 모듈(3160)에서의 이용을 위해 메모리 디바이스(3150)에 저장된다. 인코딩된 필터 또는 인코딩된 규칙중 임의의 것은 서로 다른 컨텐트 타입의 데이터 컴포넌트에 적용할 수 있다. 메모리 디바이스(3150)는 기술자의 정의를 저장한다.
네트워크 인터페이스(3180)는 네트워크로부터 데이터 스트림을 수신하고, 수신된 데이터를 필터링 모듈(3160)에 제공하며, 필터링 모듈(3160)은 수신된 데이터로부터 데이터 컨테이너를 추출하여 각 데이터 컨테이너를 서로 다른 컨텐트 타입일 수 있는 컴포넌트들로 파싱한다. 각 컴포넌트의 기술자의 값은 인코딩된 필터 및 그에 따른 인코딩된 규칙을 평가하도록 결정된다. 필터링 모듈(3160)은 인코딩된 규칙을 각 컨테이너의 컴포넌트에 적용하여 편집된 컴포넌트를 생성하고, 편집된 컴포넌트는 편집된 컨테이너로 조합되어 네트워크 인터페이스(3180) 및 링크(3182)를 통해 종착지로 전송된다. 주목할 것은, 컨테이너가 필터링 모듈(3160)에서 어떠한 변경도 없을 것이며, 그러나 편집 결과의 통지가 컨테이너에 선택적으로 첨부될 것이라는 점이다.
도 32에는 도 31의 장치의 구현이 도시되며, 거기에서는 구성 모듈(3240)과 필터링 모듈(3260)이 도 31의 모듈(3140, 3160)의 예시적인 구현을 나타낸다. 사용자 인터페이스(3120)는 기술자 정의의 목록(3222), 기술자의 기준의 목록(3226), 필터 연산자의 목록(3224), 필터 정의(3232) 및 규칙 정의(3234)를 포함하는 입력 데이터를 획득한다. 규칙은 각 필터의 부울 함수로서 정의된다. 입력 데이터는 메모리 디바이스(3220)에 저장된다. 구성 모듈(3240)은 프로세서(3242), 제 1 명령어 집합(3246)(명령-1로 표시됨)을 저장하는 메모리 디바이스(3250)를 구비하며, 제 1 명령어 집합(3246)은 필터 정의(3232), 기술자 정의(3222), 기술자 기준(3226) 및 연산자(3224)에 기초하여 프로세서(3242)가 인코딩된 필터를 생성할 수 있게 한다. 인코딩된 필터는 메모리 디바이스(3245)에 저장된다. 명령어 메모리 디바이스(3250)는, 또한, 프로세서(3242)가 메모리 디바이스(3245)에 저장된 인코딩된 필터와 규칙 정의(3234)를 이용하여 인코딩된 규칙을 생성할 수 있게 하는 제 2 명령어 집합(3248)(명령어-2로 표시됨)을 저장한다. 인코딩된 규칙은 메모리 디바이스(3255)에 저장된다. 주목할 것은, 인코딩된 필터를 저장하는 메모리 디바이스(3245)와 인코딩된 규칙을 저장하는 메모리 디바이스(3255)가 공유 메모리 디바이스의 일부들이라는 점이다.
필터링 모듈(3260)은 프로세서(3262)와, 명령어(명령어-3으로 표기됨)를 저장하는 메모리 디바이스(3264)를 구비하는데, 그 명령어는 프로세서(3262)가 네트워크-인터페이스 모듈(3180)로부터 수신된 컨테이너(3284)의 컨텐트 기술자(3265)의 값을 결정할 수 있게 하고 네트워크 인터페이스(3180)를 통해 종착지로 전송되는 편집된 컨테이너(3270)를 생성하도록 메모리 디바이스(3255)에 저장된 인코딩된 규칙을 적용할 수 있게 한다.
도 33에는 도 31의 디바이스의 예시적인 구현이 도시되는데, 거기에서 구성 모듈(3340)은 모듈(3140)의 예시적인 구현을 나타낸다. 도 32의 디바이스에서 처럼, 사용자 인터페이스(3120)는 기술자 정의의 목록(3322), 기술자 기준의 목록(3326), 필터 연산자의 목록(3324), 필터 정의(3332), 각 필터의 부울 함수를 포함할 수 있는 규칙 정의(3334)를 획득한다. 추가적으로, 사용자 인터페이스(3120)는 인코딩된 규칙의 실행 순서를 결정하는데 이용하기 위해 사용자 정의 규칙 순서(3338)를 획득한다. 모든 사용자 입력은 메모리 디바이스(3320)에 저장된다. 구성 모듈(3340)은 프로세서(3342)와, 제 1 명령어 집합(3344)(명령어-A로 표시됨)을 저장하는 메모리 디바이스(3350)를 구비하는데, 제 1 명령어 집합(3344)은 프로세서(3342)가, 필터 정의(3332), 기술자 정의(3322), 기술자 기준(3226) 및 연산자(3324)에 기초하여 인코딩된 필터를 생성할 수 있게 하고, 메모리 디바이스(3345)에 인코딩된 필터를 저장할 수 있게 한다. 메모리 디바이스(3350)는 제 1 명령어 집합(3346)(명령어-B로 표시됨)을 저장하는데, 제 2 명령어 집합(3346)은 프로세서(3342)가 메모리 디바이스(3345)에 저장된 인코딩된 필터와 규칙 정의(3334)를 이용하여 인코딩된 규칙을 생성할 수 있게 한다. 인코딩된 규칙은 메모리 디바이스(3355)에 저장된다. 메모리 디바이스(3350)는 제 3 명령어 집합(3348)(명령어-C로 표시됨)을 저장하는데, 제 3 명령어 집합(3348)은 프로세서(3342)가 사용자 정의 규칙 순서(3338)에 따라 인코딩된 규칙을 분류할 수 있게 한다. 분류된 규칙은 메모리 디바이스(3358)에 저장된다.
필터의 집합을 정의하고, 규칙의 집합을 정의하고, 인코딩된 규칙을 분류하고 적용하는 순서를 선택하는 것을 용이하게 하기 위하여, 구성 모듈(3240 또는 3340)은 사용자 인터페이스(3120)를 통해 사용자에게 관련 데이터를 디스플레이할 수 있다. 따라서, 구성 모듈(3240 또는 3340)과 연관된 메모리 디바이스(도시되지 않음)는, 프로세서(3242)가 컨텐트 기술자의 집합, 기준의 집합 및 연산자를 디스플레이할 수 있게 하고, 인코딩된 필터의 집합(3245 또는 3345)을 디스플레이할 수 있게 하고, 인코딩된 규칙의 집합(3255 또는 3355)을 디스플레이할 수 있게 하는 프로세서 판독 가능 명령어를 상주시킨다.
도 34에는 도 33의 구성 모듈에 의해 생성된 인코딩된 규칙을 이용하여 서로 다른 컨텐트 타입의 다수의 컴포넌트의 데이터 컨테이너를 프로세싱하는 필터링 모듈(3460)이 도시된다. 필터링 모듈(3460)은 프로세서(3462)와, 그 프로세서(3462)가 네트워크-인터페이스 모듈(3180)으로부터 수신한 각 컨테이너(3484)를 구성 컴포넌트로 파싱하고, 사용자 지정 컴포넌트 우선 순위에 따라 컴포넌트를 분류하고, 메모리 디바이스(3452)에 분류된 컴포넌트를 저장할 수 있게 하는 명령어(명령어-D로 표시됨)를 저장하는 메모리 디바이스(3464)를 구비한다. 그 명령어는 프로세서(3462)가 기술자 정의(3322)를 이용하여 각 컴포넌트의 각 컨텐트 기술자의 값을 결정하고, 메모리 디바이스(3465)에 기술자 값을 저장하며, 메모리 디바이스(3345)에 저장된 인코딩된 필터를 이용하여 메모리(3358)에 저장된 순서화된 규칙을 적용함으로써, 네트워크 인터페이스(3180)를 통해 종착지에 전송되는 편집된 컨테이너(3470)를 생성할 수 있게 한다.
구성 모듈(3240 또는 3340)은 동작-기술 집합을 저장하는 기술-메모리 디바이스를 포함할 수 있으며, 각 동작-기술은 동작 집합내의 대응하는 동작의 자연-언어 기술을 포함한다. 필터링 모듈(3460)의 명령 메모리(3464)는, 프로세서(3462)가 구성 모듈(3340)의 기술-메모리 디바이스로부터 데이터 컨테이너에 대해 실행된 각 동작의 기술을 판독하고, 각 데이터 컨테이너에 각 동작의 기술을 삽입할 수 있게 하는 프로세서 판독 가능 명령어를 저장한다.
도 35에는, 도 33의 구성 모듈(3340)에 의해 생성된 인코딩된 규칙과 다수의 컨텐트-특정 필터링 모듈을 이용하여 데이터 컨테이너의 다수의 컴포넌트를 병렬 프로세싱하는 예시적인 디바이스가 도시된다. 도 35의 예시적인 디바이스는, 3560-A, 3560-B, 3560-C 및 3560-D로 각각 표기된 4개의 컨텐트-특정 필터링 모듈(3560)을 가진다. 네트워크 인터페이스(3180)(도 31)는 데이터 컨테이너를 수신하고, 수신된 데이터 컨테이너를 버퍼(3584)에 배치한다. 모듈(3588)은 수신된 데이터 컨테이너를 컴포넌트들로 파싱하고, 각 컴포넌트에 대해 사전 정의된 컨텐트 타입의 집합중으로부터 컨텐트 타입을 확인하며, 각 컴포넌트를 각 필터링 모듈(3560)로 제공한다. 도 35에는 수신된 컨테이너의 4개의 버퍼링된 컴포넌트 3512-A, 3512-B, 3512-C 및 3512-D가 도시된다.
각 컨텐트-특정 필터링 모듈(3560)은 대응하는 프로세서, 명령어 메모리 및 데이터 메모리를 가진다. 필터링 모듈(3560-A)은 프로세서(3562-A), 명령어 메모리(3564-A) 및 데이터 메모리(3580-A)를 구비한다. 필터링 모듈(3560-B)은 프로세서(3562-B), 명령어 메모리(도시되지 않음) 및 데이터 메모리(도시되지 않음)를 구비한다. 필터링 모듈(3560-C)은 프로세서(3562-C), 명령어 메모리(도시되지 않음) 및 데이터 메모리(도시되지 않음)를 구비한다. 필터링 모듈(3560-D)은 프로세서(3562-D), 명령어 메모리(3564-D) 및 데이터 메모리(3580-D)를 구비한다.
수신된 컨테이너의 컴포넌트(3512-D)는 필터링 모듈(3560-A)에서 프로세싱된다. 데이터 메모리(3580-A)는 제 1 컨텐트 타입에 대하여, 기술자 집합(3522-A); 각각이 컨텐트 기술자와, 기술자 기준 및 연산자를 특정하는 인코딩된 필터의 집합(3545-A); 및 규칙이 각 필터의 2진 상태의 부울 식으로 인코딩되는 순서화된 규칙의 집합(3568-A)을 저장한다. 명령어-메모리 디바이스(3564-A)에 저장된 명령어는, 버퍼(3590-A)에 유지된 편집된 컴포넌트를 생성하기 위해, 프로세서(3562-A)가 순서화된 규칙(3568-A)에 따라 컴포넌트(3512-A)를 편집할 수 있게 한다.
유사하게, 컴포넌트(3512-B, 3512-C 및 3512-D)는 제 2 컨텐트 타입의 컴포넌트를 처리하는 필터링 모듈(3560-B)과, 제 3 컨텐트 타입의 컴포넌트를 처리하는 필터링 모듈(3560-C) 및 제 4 컨텐트 타입의 컴포넌트를 처리하는 필터링 모듈(3560-D)에서 프로세싱된다. 데이터 메모리(3580-D)는 제 4 컨텐트 타입의 대응하는 기술자 집합(3522-D)과; 컨텐트 기술자, 각각 기술자 기준 및 연산자를 특정하는 인코딩된 필터의 집합(3545-D)과; 각 필터의 2진 상태의 부울 식으로서 인코딩되는 순서화된 규칙의 집합(3568-D)을 저장한다. 명령어-메모리 디바이스(3564-D)에 저장된 명령어는 프로세서(3562-D)가 순서화된 규칙(3568-D)에 따라 컴포넌트(3512-D)를 편집하여, 버퍼(3590-D)에 유지된 편집된 컴포넌트를 생성할 수 있게 한다. 멀티플렉서(3594)는 네트워크 인터페이스(3180)를 통해 종착지로 전송될, 4개의 필터링 모듈에 의해 생성된 편집 컴포넌트를 조합한다(도 31 참조). 임의 필터링 모듈(3560-A, 3560-B, 3560-C 또는 3560-D)은 각 규칙을 적어도 하나의 규칙 트리로 배열하는데, 거기에서 각 규칙은 2개의 동작중 하나 및 선택적으로 2개의 다른 규칙중 하나의 규칙으로 이어지는 2진 결과를 가지며, 이에 대해서는 도 40 내지 도 43을 참조하여 설명하겠다.
사용자 정의된 규칙의 순서(3338)(도 33)는 도 44 내지 54를 참조하여 설명하겠지만, 규칙 프로세싱의 계층적 순서를 결정하는데 이용될 규칙 계승 레코드의 형태일 수 있다.
필터링 모듈(3560-A, 3560-B, 3560-C 및 3560-D)중 적어도 하나는 각 데이터 컴포넌트에 대해 신호-프로세싱 기능을 실행한다. 이것은 관련된 명령어 메모리에 저장된 각 명령어를 실행하는 전용 디지털 회로 또는 모듈 프로세서(3562-A, 3562-B, 3562-C 및 3562-D)를 이용하여 구현될 수 있다.
각 필터링 모듈은 각 데이터 컴포넌트의 특징을 결정하고, 결정된 특징으로부터 각 컴포넌트의 기술자를 확인하며, 기술자의 값을 결정하고, 관련 메모리 디바이스로부터 대응하는 기술자 기준을 획득한다. 그 다음 필터들의 집합이 결정되는데, 이때, 각 필터는 컨텐트 기술자, 기술자 기준 및 필터의 2진 상태를 결정하는 연산자를 특정한다. 이러한 필터 집합의 2진 값들은 규칙 집합의 값들을 결정하는데 이용된다. 바람직하게, 각 규칙은 각 필터의 2진 상태의 부울식으로서 인코딩된다. 필터 모듈은 각각의 규칙에 따라 각 컴포넌트를 편집함으로써, 편집된 컴포넌트를 생성한다.
도 35의 디바이스에 있어서, 데이터 컨테이너는 서로 다른 컨텐트 타입의 컴포넌트들로 파싱되고, 개별적인 컴포넌트들은 각 필터링 모듈로 제공된다. 그러나, 컨테이너가 크기 제한 또는 유해 컨텐트로부터의 자유도(freedom from harmful content)와 같은 특정 기준을 충족시키는지를 결정하기 위해 전체 컨테이너를 사전에 검사하는 것이 바람직하다. 도 36에는 도 35의 디바이스의 변형이 도시되는데, 거기에서 루트 모듈(root module)(3620)은 그 자신의 프로세서, 명령어 메모리 및 데이터 메모리를 가지며, 특정 규칙을 전체 컨테이너에 적용한다. 루트 모듈(3620)은 전체 데이터 컨테이너를 소거하거나, 컴포넌트를 소거하거나, 데이터 컨테이너의 첨부물을 소거한다. 루트 모듈(3620)은 데이터 컨테이너를 그의 구성 컴포넌트들로 파싱하고, 임의의 컴포넌트가 수신기의 알려진 기능과 호환 가능하도록 트랜스코딩(transcoding)할 것을 요구하는지 결정한다.
루트 모듈(3620)은 데이터 컨테이너 및 전체 데이터 컨테이너의 첨부물에 적용할 수 있는 기본 규칙의 집합과, 루트 프로세서가 필요한 필터링 기능을 실행할 수 있게 하는 프로세서 실행 가능 명령어를 저장한다.
도 36의 디바이스는 컨텐트-특정 필터링 모듈(3560-A, 3560-B, 3560-C, 3560-D)과 루트 모듈에 액세스 가능한 동작 메모리(도시되지 않음)를 포함한다. 동작 메모리는 동작들의 집합을 저장하는데, 각 동작은 대응하는 편집 기능을 실행하기 위한 프로세서 판독 가능 명령어로서 제시된다. 또한, 동작 메모리는 기본 규칙의 집합의 각 규칙과 컨텐트 특정 규칙의 집합의 각 규칙에 대응하는 동작을 나타내며, 규칙 식별자에 의해 인덱싱되는 포인터들의 배열을 저장한다.
루트 모듈(3620)은 수신된 데이터 컨테이너를 검사하고, 다음과 같은 기능, 즉, 첨부물의 소거, 컴포넌트의 소거, 컴포넌트에 대한 신호 프로세싱 기능의 실행 및 수신된 데이터 컨테이너에 통지를 첨부하는 것 중의 일부 또는 전부를 실행한다.
도 36의 장치는 규칙 메모리 디바이스내의 모든 사전 정의된 컨텐트 타입과 동작 메모리 디바이스내의 대응하는 동작들의 확대 집합(superset)에 적용 가능한 규칙들의 확대 집합을 중앙 데이터 메모리(central data memory)에 저장할 수 있다. 규칙과 동작은 컴퓨터 실행 가능 명령어로서 인코딩될 수 있다. 특정 필터링 모듈(3560)의 메모리 디바이스는 특정 필터링 모듈에 적용 가능한 규칙들의 확대 집합내의 규칙 집합의 인덱스와, 그 집합의 규칙들에 대응하는 동작들의 확대 집합내의 동작들의 인덱스를 저장한다.
도 35 또는 도 36의 디바이스에 있어서, 각 필터링 모듈은 특정 컨텐트 타입에 적용되고, 필터링 모듈은 데이터 컨테이너의 다른 컴포넌트에 대해 동시에 작동한다. 그러나, 각 모듈이 데이터 컨테이너의 모든 컴포넌트를 연속적으로 다룰 수 있게 하고 다른 데이터 컨테이너에 대해 동시에 작동하도록 다수의 모듈을 채용하는 것이 바람직하다. 따라서, 각 필터링 모듈의 명령어 메모리 디바이스는 각각의 특정된 컨텐트 타입에 대한 명령어를 저장한다. 그러한 기법의 장점은 개선된 수율인데, 그 이유는 임의 필터링 모듈이 임의의 데이터 컨테이너를 다룰 수 있고, 현재의 데이터 컨테이너의 프로세싱의 완료 이후에 새로운 데이터 컨테이너를 즉시 프로세싱할 수 있기 때문이다. 도 37에는 각각이 임의의 특정된 컨텐트 타입의 컴포넌트를 프로세싱하도록 구성된, 3760-1, 3760-2, 3760-3 및 3760-4로 표기된 4개의 필터링 모듈(3760)을 채용한 예시적인 장치가 도시된다. 바람직하게, 4개의 필터링 모듈은 동일하게 구성된다.
각 필터링 모듈(3760)은 모듈 프로세서, 데이터 메모리, 명령어 메모리 및 편집된 데이터 컨테이너를 유지하는 버퍼를 구비한다. 필터링 모듈(3760-1, 3760-2, 3760-3 및 3760-4)의 구성 소자는 도 37에 도시되어 있지 않다. 데이터 메모리는 인코딩된 규칙을 저장한다. 명령어 메모리는, 모듈 프로세서가 인코딩된 규칙을 전체로서 데이터 컨테이너에 적용하고 데이터 컨테이너의 개별 컴포넌트에 적용하여 편집된 데이터 컨테이너를 생성할 수 있게 하는 프로세서 실행 가능 명령어를 저장한다.
네트워크 인터페이스(3710)는 다수의 데이터 스트림에 속하는 데이터 컨테이너를 수신하고, 네트워크 링크를 통해 편집된 데이터 컨테이너를 전송한다. 입력 모듈(3720)은 입력 메모리 디바이스(3722)내에 수신된 데이터 컨테이너를 유지하고, 입력 메모리 디바이스에서 대기중인 데이터 컨테이너를 입력 선택기(3724)를 통해 점유되지 않은 필터링 모듈(3760-1, 3760-2, 3760-3 또는 3760-4)에 전달한다. 출력 모듈(3730)은 필터링 모듈의 버퍼내에 유지된 편집된 데이터 컨테이너를 출력 선택기(3726)를 통해 네트워크 인터페이스로 전달한다. 입력 선택기(3724)와 출력 선택기(3726)는 각각 입력 모듈(3720) 및 출력 모듈(3730)의 일부로서 구현될 수 있다.
도 38에는 도 37의 장치에 대한 제어 시스템이 도시된다. 제어 시스템은 중앙 프로세서(3810), 중앙 데이터 메모리(3830) 및 중앙 프로세서(3810)가 네트워크 인터페이스(3710), 입력 모듈(3720) 및 출력 모듈(3730)의 기능을 실행할 수 있도록 하는 프로세서 실행 가능 명령어를 저장하는 중앙 명령어 메모리(38200를 구비한다(도 37).
중앙 명령어 메모리(3820)는 입력 모듈 명령어를 저장하는데, 그 입력 모듈 명령어는 각 수신된 컨테이너가 속하는 데이터 스트림 및 그 데이터 스트림내의 순환 컨테이너 번호(cyclic container number)를 확인하기 위한 라벨(label)을 중앙 프로세서(3810)가 각각의 수신된 데이터 컨테이너에 부착할 수 있게 한다. 중앙 명령어 메모리(3820)는 출력 모듈 명령어를 저장하는데, 그 출력 모듈 명령어는 중앙 프로세서가 부착된 라벨을 이용하여 각 데이터 스트림의 편집된 데이터 컨테이너를 대응하는 수신 데이터 컨테이너의 순차적 순서로 배열할 수 있게 한다.
각 필터링 모듈(3760-j)(1≤j≤4)은 모듈 프로세서(3862-j), 모듈 명령어 메모리(3864-j) 및 데이터 메모리(3880-j)를 가진다. 중앙 프로세서(3810)는 데이터 메모리 디바이스(3880-1, 3880-2, 3880-3 및 3880-4)를 통해 모듈 프로세서(3862-1, 3862-2, 3862-3, 3862-4)와 통신한다. 필터링 모듈(3760-j)의 명령어 메모리(3864-j)는, 대응하는 모듈 프로세서(3862-j)가 인코딩된 규칙을 컨텐트 특정 규칙의 집합들로 분류하고 컨텐트 특정 규칙의 각 집합내의 규칙을 계층적 층들로 추가 분류할 수 있게 하는 명령어를 저장하며, 이에 대한 것은 도 44 내지 54를 참조하여 설명할 것이다.
중앙 명령어 메모리(3820)는, 중앙 프로세서(3810)가 각 수신된 데이터 컨테이너를 서로 다른 컨텐트 타입의 구성 컴포넌트들로 파싱하고, 수신된 데이터 컨테이너내의 각 컴포넌트들의 위치의 표시를 각 라벨에 삽입할 수 있게 하는 입력 모듈 명령어를 저장한다. 대안적으로, 데이터 컨테이너 파싱은 각 필터링 모듈(3760)에 의해 구현될 수 있는데, 거기에서 저장된 명령어는 모듈 프로세서(3862)가 입력 모듈로부터 전달된 데이터 컨테이너를 서로 다른 컨텐트 타입의 구성 컴포넌트들로 파싱할 수 있게 한다.
데이터 컨테이너는 종착지에서 수신기와 호환하기 위한 트랜스코딩 또는 컴포넌트 크기를 줄이기 위해 압축과 같은 컴포넌트 요구 신호 프로세싱을 포함한다. 중앙 명령어 메모리(3820)는, 중앙 프로세서(3810)가 특정 데이터 컴포넌트 요구 신호 프로세싱을 확인하고 각 신호 프로세싱 기능을 적용할 수 있게 하는 프로세서 판독 가능 명령어를 저장할 수 있다.
데이터 컨테이너는 첨부물을 포함할 수 있으며, 그것은 그 첨부물을 검사하고 필요시에 편집하는 것이 바람직하다. 이것은, 입력 모듈(3270)에서 실행된다. 따라서, 중앙 명령어 메모리(3820)는, 중앙 프로세서(3810)가 수신된 데이터 컨테이너의 첨부물을 검출하고 첨부물이 발견되면 각 인코딩된 규칙에 적용할 수 있게 하는 프로세서 판독 가능 명령어를 저장한다.
기술 메모리 디바이스(3816)는 동작 기술의 집합을 저장하며, 각 동작 기술은 사전 정의된 동작 집합내의 대응하는 동작의 자연 언어 기술을 포함한다. 중앙 명령어 메모리(3820)는, 중앙 프로세서(3810)가 기술 메모리 디바이스(3816)로부터 각 데이터 컨테이너에 대해 실행된 각 동작의 기술을 판독하고 각 데이터 컨테이너에 각 동작의 기술을 삽입할 수 있게 하는 프로세서 실행 가능 명령어를 저장한다.
도 39에는, 데이터 컨테이너를 필터링하는 장치(3900)가 도시된다. 그 장치는 구성 모듈(3902)과 필터링 모듈(3904)을 구비한다. 구성 모듈(3902)은 구성 데이터의 "오프-라인" 전처리("off-line" preprocessing)를 수행한다. 필터링 모듈(3904)은 데이터 컨테이너를 "실시간"으로 프로세싱한다.
구성 모듈(3902)은 구성 프로세서(3920), 명령어 메모리 디바이스(3930)(명령어-1로 표기됨), 인코딩된 규칙과 동작을 저장하는 데이터 메모리 디바이스(3940), 규칙 계승 레코드를 저장하는 메모리 디바이스(3944) 및 분류된 규칙 또는 분류된 규칙에 대한 포인터 및 대응하는 동작을 유지하는 메모리 디바이스(3946)를 구비한다.
메모리 디바이스(3940)는 각각이 2진 값에 대해 평가되고 프로세서 실행 가능 명령어로서 인코딩되는 규칙들의 집합을 저장하는 메모리 섹션(3941)과 각각이 데이터 컴포넌트를 편집하기 위한 프로세서 실행 가능 명령어의 집합으로 인코딩되는 동작들의 집합을 저장하는 메모리 섹션(3942)로 분할된다.
메모리 디바이스(3944)는, 각각이 특정 규칙에 대응하는 규칙 계승 레코드의 집합을 저장하고, 특정 규칙의 "0"의 값에 대응하는 제 1 계승 규칙과 제 1 동작의 표시자와, 특정 규칙의 "1"의 값에 대응하는 제 2 계승 규칙 및 제 2 동작의 표시자를 포함한다.
명령어 메모리 디바이스(3930)는, 구성 프로세서(3920)가 분류된 규칙을 생성하여 메모리 디바이스(3946)에 분류된 규칙을 저장할 수 있게 하는 프로세서 판독 가능 명령어를 저장한다. 분류된 규칙은 규칙층내에 배열되고, 그 규칙층에서는 각 규칙층내의 규칙들이 서로 독립적이고, 제 1 규칙층 이외의 각 규칙층내의 규칙들은 적어도 하나의 선행 규칙층의 적어도 하나의 규칙에 좌우된다. 대안적으로, 분류된 규칙들은 각 규칙에 대하여 규칙의 "0"의 값에 대응하는 제 1 동작과 규칙의 "1"의 값에 대응하는 제 2 동작을 나타내는 규칙 2진 트리의 형태로 제시된다.
필터링 모듈(3904)은 데이터 컨테이너의 실시간 프로세싱을 위한 필터링 프로세서(3960), 명령어 메모리(3970)("명령어-2"로 표시됨), 네트워크로부터 수신된 데이터 컨테이너를 유지하는 버퍼(3982) 및 메모리(3946)에 저장된 규칙에 따라 편집된 데이터 컨테이너를 유지하는 버퍼(3984)를 가진다. 명령어 메모리(3970)는, 필터링 프로세서(3960)가 분류된 규칙을 데이터 컨테이너에 순차적으로 적용할 수 있게 하는 프로세서 판독 가능 명령어를 저장한다.
장치(3900)는 도 38의 메모리 디바이스(3816)와 유사한, 동작-기술 집합을 저장하는 기술 메모리 디바이스(도시되지 않음)를 채용한다. 명령어 메모리 디바이스(3970)는, 필터링 프로세서(3960)가 기술 메모리 디바이스로부터 각 데이터 컨테이너에 대해 실행된 각 동작의 기술을 판독하고 각 동작의 기술을 데이터 컨테이너에 삽입할 수 있게 하는 프로세서 실행 가능 명령어를 저장한다.
도 40은 규칙이 2진 결과를 가지며 두 동작중 하나와 다른 두개의 규칙중 한 규칙이 뒤따르는 완전한 규칙 트리 형태의 도 33의 디바이스에 의해 생성된 인코딩된 규칙의 배열을 나타낸 것으로, 여기에서 각 리프 규칙은 연속하는 규칙을 갖지 않으며 동작을 요구하지도 않은 널 규칙(null rule)(도시되지 않음)이다.
깊이 d(도 40의 규칙 트리에서 d=3)의 완전한 규칙 트리의 경우, 널 규칙을 제외한 규칙의 개수 μ는 μ=(2d-1)이고, 동작의 개수는 규칙의 개수의 2배이다. 그러나, 임의 데이터 컴포넌트에 적용되는 규칙의 최대 개수는 d와 동일하며, 임의 데이터 컴포넌트에 적용되는 동작의 최대 개수는, 유사하게, d이다. R0 내지 Rμ-1로 표시된 μ 규칙들과, A1 내지 A로 표시된 2×μ 동작의 경우, 규칙 Rj(0≤j<μ) 뒤에는 A2j+1 또는 A2j+2의 두 동작 중 하나가 뒤따르고, 규칙 Rj(0≤j<(2d-1-1)=(μ-1)/2)은 두개의 규칙 R2j +1 및 R2j +2중 하나로 진행한다. 둘 이상의 규칙이 동일한 계승 규칙으로 이어지고 다수의 규칙이 동일한 동작으로 결과함을 알아야 한다. 따라서, 고유한 규칙(unique rules)들의 개수와 고유한 동작(unique actions)들의 개수가 필수적으로 서로간의 임의 특정한 관계를 함유하는 것은 아니다.
표기 Rj 및 Rj(j>0)는 인덱스 j의 규칙을 나타내기 위해 동의어로 이용됨을 알아야 한다.
루트 규칙 R0의 값이 "0"이면, 필터링 모듈은 동작-1(4020-1)을 적용하고, R1의 값을 결정한다. 그렇지 않고, 루트 규칙 R0의 값이 "1"이면, 필터링 모듈은 동작-2(4020-2)을 적용하고, 규칙 R2의 값을 결정한다. 유사하게, 규칙 R1은 동작-3(4020-3) 또는 규칙 R3으로 이어지거나, 동작-4(4020-4)와 규칙 R4로 이어진다. 규칙 R2는 동작-5(4020-5)와 규칙 R5으로 이어지거나, 동작-6(4020-6)과 규칙 R6으로 이어진다. 규칙 R3은 동작-7(4020-7) 또는 동작-8(4020-8)로 이어지고, 규칙 R4는 동작-9(4020-9) 또는 동작-10(4020-10)로 이어지고, 규칙 R5는 동작-11(4020-11) 또는 동작-12(4020-12)로 이어지고, 규칙 R6은 동작-13(4020-13) 또는 동작-14(4020-14)로 이어진다. 동작-7 내지 동작-14의 각각은 널 규칙 R*(도시되지 않음)이 뒤따른다.
도 41은 루트 규칙 R0이 "0"의 값을 가지고 있어서, 동작-1(4020-1) 및 규칙 R1으로 이어지는 첫 번째 경우가 도시된다. 규칙 R1은 동작-4(4020-4) 및 규칙 R4로 이어지는 "1"의 값을 가지며, 규칙 R4는 동작-9(4020-9)로 이어지는 "0"의 값을 가진다. 두 번째 경우에 있어서, R0의 값은 동작-2(2040-2)와 규칙 R2로 이어지는 "1"이고, 규칙 R2의 값은 동작-5(4020-5)와 규칙 R5로 이어지는 "0"이며, R5의 값은 동작-11(4020-11)로 이어지는 "0"이다.
도 42는 규칙 R5가 널 규칙으로서 명시되고, 그에 따라 동작 4020(11) 및 동작 4020(12)이 적용될 수 없는, 도 40의 완전한 규칙 트리로부터 도출된 불완전한 규칙 트리를 나타낸다. R2의 값이 "1"일 경우, 규칙 R2는 단지 하나의 유효 규칙으로만 이어진다.
도 43에는 0 내지 2×μ로서 인덱스된 (2×μ+1) 셀을 가진 배열(4320)을 이용하여, R0 내지 Rμ-1로서 표기된 μ 규칙들과 A1 내지 A(μ>1)로 표기된 2×μ 동작에 대한 도 40의 완전 규칙 트리를 나타내는 정규 데이터 구조(canonical data structure)가 도시된다. μ=7에 대한 셀 인덱스들은 표시된 대로 1 내지 14(참조번호 4310)이다. 인덱스 j(0≤j<μ)의 배열(4320)의 셀은 분류된 규칙들을 저장하는 메모리 디바이스(도시되지 않음)에 인코딩된 규칙에 대한 포인터(참조번호 4316)를 저장한다. 인덱스 j(1≤j<2×μ)의 배열(4320)내의 셀은 동작들의 목록을 저장하는 메모리 디바이스(도시되지 않음)에 인코딩된 동작에 대한 포인터(참조번호 4314)를 저장한다. 인덱스 j(0≤j<μ)의 배열(4320)내의 셀은 라인 4325에 표시된 바와 같이 인덱스 (2j+1) 및 (2j+2)의 2개의 셀로 이어진다. 인덱스 j=0의 셀은 루트 규칙 R0의 식별자를 저장하고, 인덱스 1 및 2의 셀로 이어진다. 인덱스 j=1의 셀은 동작 A1 및 규칙 R1에 대한 포인터들을 저장하고, 인덱스 3 및 4의 셀로 이어진다. 인덱스 j=2의 셀은 동작 A2 및 규칙 R2에 대한 포인터들을 저장하고, 인덱스 5 및 6(2×2+1 및 2×2+2)의 셀로 이어진다. 인덱스 j=3의 셀은 동작 A3 및 규칙 R3에 대한 포인터들을 저장하고, 인덱스 7 및 8(2×3+1 및 2×3+2)의 셀로 이어진다. 인덱스 j=4의 셀은 동작 A4 및 규칙 R4에 대한 포인터들을 저장하고, 인덱스 9 및 10(2×4+1 및 2×4+2)의 셀로 이어진다. 인덱스 j=5의 셀은 동작 A5 및 규칙 R5에 대한 포인터들을 저장하고, 인덱스 11 및 12의 셀로 이어진다. 인덱스 j=6의 셀은 동작 A6 및 규칙 R6에 대한 포인터들을 저장하고, 인덱스 13 및 14의 셀로 이어진다. 인덱스 7 내지 14의 셀은 동작 A7 내지 A14에 대한 포인터들을 저장한다.
배열(4340)은 도 42의 불완전 규칙 트리에 대응하는데, 거기에서는 규칙 R5가 널 규칙이다. 따라서, 배열(4340)내의 인덱스 5의 셀은 최종 동작 A5를 제공하며, 임의의 다른 셀로 이어지지 않는다.
도 44는 다수의 규칙 층들내의 도 33의 구성 디바이스에 의해 생성된 인코딩된 규칙들의 배열을 나타낸 것으로, 규칙층 내의 규칙들은 서로 독립적이고, 제 1 규칙층(루트층) 이외의 규칙층의 규칙들은 선행 규칙층의 규칙들에 좌우된다. 도 44에는, 각각 층 1, 층 2, 층 3 및 층 4로 표기된 4개의 규칙층(4420(1), 4420(2), 4420(3), 4420(4))이 도시된다. 임의 다른 규칙에 좌우되지 않은 규칙을 본 명세서에서는 독립 규칙(independent rule) 또는 자유 규칙(free rule)이라 한다. 독립 규칙은 루트 규칙으로서, 층 1을 형성하도록 선택된다. 그러나, 서로간에 독립적이되 층 1의 규칙에 좌우되는 규칙들은 층 2를 형성한다. 서로간에 독립적이지만 층 2의 규칙 및 가능한 층 1의 규칙에 좌우되는 규칙들은 층 3을 형성한다. 서로간에 독립적이지만 층 3 및 가능한 층 2 또는 층 1의 규칙에 좌우되는 규칙들은 층 4를 형성한다.
도 45는 각각 4520(0) 내지 4520(7)로 식별되는 8개의 필터(4520)와, 각각 4530(0) 내지 4530(15)로 식별되는 16개의 규칙(4530)과, 각각 4540(1) 내지 4540(9)로 식별되고 A1 내지 A9로 표기된 9개의 동작(4540)을 채용하는 예시적인 필터링 모듈(3160)(도 31)을 도시한다. 이 예시에서, 규칙 R0은 두개의 필터(4520(0) 및 4520(2))의 부울 함수(4520(0))이고, 규칙 R11은 4개의 필터(4520(1), 4520(3), 4520(4) 및 4520(7))의 부울 함수(4525(11))이다. 도 44의 다수층 배열(multiple-strata arrangement)의 중간 규칙층내의 규칙 R5는 2개의 동작 A3 또는 A4중 하나의 동작 및 2개의 다른 규칙 R2 및 R7중 하나의 규칙으로 이어진다. 마지막 규칙층내의 규칙은 2개의 동작중 하나의 동작으로 이어지지만 계승자 규칙을 갖지 않는다. 예를 들어, 규칙 R11은 2개의 동작 A2 및 A9중 하나의 동작으로 이어지지만 다른 규칙으로 이어지지는 않는다.
도 46은 다수의 규칙 레코드(4610)를 가진 예시적인 사용자 특정 규칙 계승 테이블(4600)을 나타내며, 각 규칙 레코드(4610)는 "false(거짓)" 또는 "true(참)"의 2진 결과를 가진 현재 규칙을 나타내며, 동작(4621) 및 계승 규칙(4622)은 "false"의 결과에 대응한다. 동작(4623) 및 계승 규칙(4624)은 "true"의 결과에 대응한다. 규칙 계승 테이블(4600)은 도 44에 도시된 다수의 규칙층들에 있어서 도 33의 구성 디바이스에 의해 생성된 인코딩된 규칙들을 분류하는데 이용된다. 테이블(4600)내의 심볼 φ은 널 규칙을 지칭한다.
도 47에는 도 46의 규칙 계승 테이블을 이용하여 구성된 규칙 그래프가 도시된다. 계승 테이블(4600)에 표시된 바와 같이, 규칙 R12는 규칙 R5 또는 R3 중 어느 하나로 이어지지만 임의의 다른 규칙의 계승자는 아니다. 따라서, 규칙 R12는 루트 규칙이다. 규칙 그래프(4700)는 11개의 규칙, 즉, R0, R1, R2, R3, R5, R7, R9, R11, R12, R14 및 R15을 커버(cover)한다. 명백히, 점선으로 도시된 규칙 R5에 동작 A0을 접속하는 라인이 제거되면, 규칙 그래프(4700)는 도 51의 규칙 계승 테이블(5100)을 나타낼 것이다.
도 48에는 도 44에 도시된 다수의 규칙층들내의 도 33의 구성 디바이스에 의해 생성된 인코딩된 규칙을 분류하는 전반적인 방법을 나타낸 흐름도가 도시된다. 단계 4812에서, 규칙 계승 레코드가 수신된다. 각 규칙 계승 레코드는 규칙들의 집합내의 특정 규칙에 대응하며, (1) 특정 규칙의 "0"("false")의 값에 대응하는 제 1 계승 규칙 및 제 1 동작과, (2) 특정 규칙의 1("true")의 값에 대응하는 제 2 계승 규칙 및 제 2 동작을 나타낸다. 단계 4814는 각 규칙 계승 레코드내에 참조된 각 규칙의 규칙 식별자를 포함하는 규칙 포함 목록(rule-inclusion list)을 형성한다. 단계 4816은 각 규칙에 대한 종속성 카운트(dependency count)를 결정하는데, 특정 규칙의 종속성 카운트는 특정 규칙에 바로 선행하는 다수의 규칙들을 나타낸다.
단계 4818은 제로 종속성 카운트를 가진 규칙 포함 리스트내의 특정 규칙들을 확인한다. 단계 4820에서 발견된 제로 종속성 카운트가 없다고 결정하면, 단계 4860은 오류 데이터를 보고한다. 그렇지 않고, 단계 4820에서 적어도 하나의 규칙이 제로 종속성 카운트를 가진다고 결정하면, 단계 4822는 새로운 규칙 층을 정의하여 층 1에서 시작한다. 단계 4824에서는 새로운 층에 제로 종속성 카운트의 각 규칙의 식별자를 추가하고, 단계 4826에서는, 규칙 포함 목록에서 그 식별자를 제거하고, 제 1 계승 규칙 및 제 2 계승 규칙의 각각의 종속성 카운트를 1 감소시킨다. 단계 4828에서 규칙 포함 목록이 비어있다고 결정하면, 규칙 분류 프로세스가 완료된 것으로 간주된다(단계 4880). 그렇지 않으면, 후속하는 규칙 층의 규칙을 확인하도록 단계 4818로 복귀된다.
도 49에는 M(M>1) 규칙들의 집합에 적용된 도 48의 방법의 예시적인 구현을 나타낸 흐름도가 도시된다. 단계 4920에서, 메모리 디바이스(3350)에 저장된 프로세서 판독 가능 명령어에 의해, 프로세서(3342)(도 33)는 사용자로부터 L(L>1)개의 규칙 계승 레코드(도 46)를 포함하는 규칙 계승 테이블을 획득할 수 있게 된다. 규칙 계승 레코드의 개수 L은 규칙들의 집합내의 규칙들의 개수 M보다 적거나 그와 동일한데, 그 이유는 일부 규칙들이 고려중인 데이터 컴포넌트에 적용되지 않을 수 있기 때문이다. 각 레코드는 모 규칙(parent rule)의 식별자, 모 규칙의 값 "false"에 대응하는 제 1 계승자 규칙 및 제 1 동작, 모 규칙의 값 "true"에 대응하는 제 2 계승자 규칙 및 제 2 동작을 포함한다. 그 규칙들은 인덱스 0 내지 (M-1)에 의해 확인된다. 일부 규칙들은 고려되지 않을 수 있으며, 그러므로 임의의 규칙 계승 레코드에 참조되지 않을 수 있다. 단계 4924에서, 2개의 배열 U 및 V는 각각 M 정수 엔트리를 가지며, 모든 엔트리가 0으로 설정되면서 초기화된다. 단계 4926에서, 각 레코드의 계승 규칙자의 식별자 j 및 k와, 모 규칙의 식별자 m이 결정되어, 배열 U를 표시하는데 이용되며, 그에 따라 규칙 j가 유효 규칙이면 U(m)=1, U(j)=1이 되고, 규칙 k가 유효 규칙이면 U(k)=1이 된다. 따라서, 계승 레코드에서 규칙 y를 적어도 1회 조우하면, 엔트리 U(y)(0≤y<M)는 1과 동일하게 설정된다. 엔트리 V(y)는 규칙 y를 계승자 규칙으로서 조우한 횟수를 나타낸다. 따라서, 단계 4926에서는 규칙 j가 유효 규칙이면 엔트리 V(j)를 1 증가시키고, 규칙 k가 유효 규칙이면 엔트리 V(k)를 1 증가시킨다. 배열 U는 규칙 포함 목록으로서 작용하고, 배열 V는 규칙 포함 목록내의 각 규칙에 대한 종속성 카운트를 나타내는데, 이때 특정 규칙에 대한 종속성 카운트는 특정 규칙에 바로 선행하는 다수의 규칙들이다.
단계 4928은 현재 규칙층의 인덱스 χ를 1로 설정한다. 단계 4930은 모 규칙의 인덱스 m을 0으로 설정한다. 단계 4932에서 U(m)=0 또는 V(m)>0으로 결정하면, 인덱스 m은 단계 4938에서 1 증가되고, 단계 4940에서 m이 M 미만인 것으로 결정되면, 배열 V의 후속 엔트리를 고려하기 위해 단계 4932로 복귀한다. 단계 4932에서 U(m)=1 및 V(m)=0으로 결정되면, 규칙 m은 현재의 층χ에 속한다. 그 다음, 단계 4934는 모 규칙 m의 연속하는 규칙 j 및 k를 결정하고, 단계 4936은 규칙 m을 층의 규칙들의 목록에 추가하고, 규칙 j가 유효 규칙이면 엔트리 V(j)를 1 차변하고, 규칙 k가 유효 규칙이면 엔트리 V(k)를 1 차변한다. 인덱스 m은 단계 4938에서 1 증가하며, m이 M 미만이면 단계 4932로 복귀한다. 인덱스 m이 M과 동일하면, 단계 4940은 단계 4950으로 이어진다. 단계 4950에서, 현재 층χ내의 규칙들의 목록이 비어있다고 결정하면, 계층적 층내의 규칙들을 분류하는 프로세스는 완료된 것으로 간주된다(단계 4980). 그렇지 않으면, 단계 4952에서 층 인덱스χ가 1 증가하며, 새로운 규칙을 새로운 층에 연관시키는 것을 시작하기 위해 단계 3930으로 복귀한다. 명심할 것은, 최종 규칙층이 결정되고 나면 배열 U의 각 엔트리는 0의 값을 가지며, 배열 V의 각 엔트리는 0의 값을 가진다는 것이며, 이러한 특성은 분류 프로세스의 완료를 나타내는데 이용된다는 것이다.
도 50에는 규칙 계승 테이블(4600)을 이용하여 도 49의 구현이 이루어지는 도 48의 방법이 도시된다. 도 46의 예시적인 규칙 계승 테이블에 있어서, 규칙 식별자는 0 내지 15의 범위에 있으며, 도 50에서 그와 같이 표시된다(참조 번호 5010). 각 엔트리 U(j) 및 V(j)(0≤j<16)는 0으로 설정된다(단계 4924). 인덱스 4, 6, 8, 10 및 13의 규칙(R4, R6, R8, R10 및 R13)은 테이블(4600)에 목록화되어 있지 않으며, 도 49의 단계 4926에 따라 배열 U내의 각 대응하는 엔트리는 0으로 설정되고, 다른 엔트리들의 각각은 1로 설정된다. 테이블(4600)내의 제 1 레코드는, 규칙 2 및 7이 연속하는 규칙임을 나타낸다. 따라서, 각 엔트리 V(2) 및 V(7)은 1 증가된다. 유사하게, 제 2 레코드는 규칙 11 및 14가 연속하는 규칙임을 나타내고, 따라서 V(11) 및 V(14)의 각각은 1 증가된다. 모든 레코드를 고려한 후, 배열 V는 규칙 0,1,2,3,5,9,11 및 15의 각각에 대해 1의 엔트리를 가지며, 규칙 7 및 14의 각각에 대하여 2의 엔트리를 가진다. 부재 규칙(absent rules) 4,6,8,10 및 13에 대응하는 배열 V내의 각 엔트리는 0의 초기화된 값을 가진다. 그 다음, 배열 U 및 V는 형태 5020(1)을 취한다.
층 1에서 시작하여(단계 4928), m=0에서 시작하는 엔트리 U(m) 및 V(m)을 분류하면(단계 4930), 단계 4932에서는 단지 규칙 12만이 조건 U(12)=1 및 V(12)=0을 만족함을 나타낸다. 따라서, 규칙 12는 층 1(χ=1)의 유일한 규칙이다. 단계 4934에서는, (테이블 4600으로부터) 규칙 5 및 3이 규칙 12의 연속하는 규칙임을 결정하며, 단계 3946에서는 엔트리 U(12)를 0으로 설정하고 각 엔트리 V(3) 및 V(5)를 1 감소시킨다. 배열 U 및 V는 형태 5020(2)을 취한다. 단계 4950에서는, 층 1의 규칙의 목록이 비어있지 않음(그것은 규칙 12를 포함)을 결정하며, 그에 따라 층 인덱스 χ이 1 증가하고(단계 4952), 단계 4930으로 복귀한다.
배열 U 및 V를 스캐닝하는 것은, 규칙 3이 단계 4932의 조건(U(3)=1 및 V(3)=0)을 충족함을 나타낸다. 규칙 3의 규칙 계승자는 규칙 7 및 15(단계 4934, 테이블 4600)이며, 단계 4936에서는 U(3)을 0으로 설정하고 각 V(7) 및 V(15)를 1 감소시킨다. 배열 U 및 V의 계속적인 스캐닝은, 규칙 5가 단계 4932의 조건(U(5)=1 및 V(5)=0)을 충족함을 나타낸다. 규칙 5의 계승자 규칙은 규칙 2 및 7(단계 4934, 테이블 4600)이며, 단계 4936에서는 U(5)를 0으로 설정하고 각 V(2) 및 V(7)을 1 감소시킨다. 그 다음, 배열 U 및 V는 형태 5020(3)을 취한다. 따라서, 규칙 3 및 5는 층 2에 속하는 것으로 결정된다.
단계 4950에서는, 층 2의 규칙들의 목록이 비어있지 않음(그것은 규칙 3 및 5를 포함함)을 나타낸다. 따라서, 층 인덱스는 단계 4952에서 1 증가되고, 단계 4930으로 복귀한다. 프로세스를 계속하여, 규칙 2,7 및 15는 층 3에 속하는 것으로 결정되며, 배열 U 및 V는 형태 5020(3)을 취한다. 단계 4950에서는, 층 3의 규칙들의 목록이 비어있지 않음을 나타내고, 단계 4952에서는 층 인덱스를 4 증가시킨다(χ=4). 단계 4930 내지 4940을 반복하여, 규칙 0,1,9,11 및 14가 층 4에 속하는 것으로 결정하고, 배열 U 및 V는 배열 V내의 각 엔트리는 0의 값을 가지는 형태 5020(4)를 취하며, 따라서 모든 규칙이 고려되었다. 분류 프로세스의 완료를 결정하는 한가지 방식은 χ=5에 대해 단계 4930 내지 4950을 반복하는 것이다. 단계 4950에서는, 층 5의 규칙들의 목록이 비어있다고 결정하고 분류 프로세스를 종료한다.
도 51에는, 도 46의 규칙 계승 테이블과 유사하지만, 규칙 12가 단지 하나의 계승자 규칙 R3만을 가지는 사용자 특정 규칙 계승 테이블이 도시된다. 계승 테이블 4600에서 처럼, 규칙 R5는 2개의 계승자 규칙 R2 및 R7을 가지지만, 임의의 다른 규칙의 계승자는 아니다. 따라서, 규칙 R5 및 R12는 루트 규칙들이다.
도 52에는 도 51의 규칙 계승 테이블을 이용하는 도 49의 구현이 이루어지는 도 48의 방법의 응용이 도시된다. 도 51의 예시적인 규칙-계승 테이블에 있어서, 규칙 식별자는 0 내지 15의 범위에 있고, 도 52에서는 그와 같이 표시된다(참조 번호 5210). 도 50을 참조하여 상술한 바와 유사한 단계들에 이어서, 규칙들은 4개의 층으로 분류되는데, 거기에서는 층 1이 규칙 R5 및 R12를 포함하고, 층 2는 규칙 R2 및 R3을 포함하고, 층 3은 규칙 R0, R1, R7 및 R15를 포함하고, 층 4는 규칙 R9, R11 및 R14를 포함한다. 따라서, 규칙 R5 및 R12가 우선적으로 적용되어 R5 또는 R12에서 시작할 수 있다. 규칙 R2 및 R3은 임의 순서로 서로 후속하여 적용될 수 있다(즉, R2 다음에 R3 또는 R3 다음에 R2). 규칙 R0, R1, R7 및 R15는 임의 순서로 적용될 수 있다. 마지막으로, 규칙 R9, R11 및 R14는 임의 순서로 적용될 수 있다.
도 51의 규칙 계승 테이블 5100에 기초하면, 규칙 R5 및 R12는 도 52에 표시된 바와 같이 제 1 층에 속하는 자유 규칙(free rule)으로서, 우선적으로 평가된다. 도 53에는, R5가 "1"의 값을 가지고, 규칙 R12가 "1"의 값을 가진 경우가 도시된다. 규칙 R5의 계승자는 규칙 R7이고, 규칙 R12의 계승자는 규칙 R3이다. 규칙 R3이 "0"의 값을 가지면, 규칙 R7은 규칙 R3의 계승자가 된다. 도 52에 도시된 바와 같이, 규칙 R3은 상호 독립적인 규칙들의 제 2 층에 속하고, 규칙 R7은 상호 독립적인 규칙들의 제 3 층에 속한다. 따라서, 규칙 R3은 자연스럽게 규칙 R7 전에 평가된다.
도 54에는 규칙 R5가 "0"의 값을 가지고, 규칙 R12가 "1"의 값을 가진 경우가 도시된다. 규칙 R5의 계승자는 규칙 R2이고, 규칙 R12의 계승자는 규칙 R3이다. 도 54에 도시된 바와 같이, 규칙 R2 및 R3은 상호 독립적이다. 도 52는, 규칙 R2 및 R3이 상호 독립적인 규칙의 제 2 층에 속함을 나타낸다.
비록 본 발명의 특정 실시예들이 상세하게 기술되었으나, 기술된 실시예들은 예시적인 것이며 제한적이 아님이 이해되어야 한다. 다음의 청구항들의 범위 내에서 본 발명의 범위에서 벗어나지 않으면서 보다 넓은 관점에서, 도면에서 보여지고 상세한 설명에서 기술된 실시예들의 다양한 변경 및 수정이 이루어질 수 있다.
3210: 사용자 인터페이스
3140: 구성 모듈
3150: 규칙 메모리 디바이스
3180: 네트워크 인터페이스
3160: 필터링 모듈

Claims (15)

  1. 데이터 스트림 필터링을 위한 디바이스로서,
    컨텐트 타입들의 집합(a set of content types)과, 컨텐트 기술자들의 집합(a set of content descriptors)과, 기술자의 기준들의 집합(a set of descriptor's criteria)과, 연산자들의 집합(a set of operators)과, 필터 정의들의 집합(a set of filter definitions)과, 규칙 정의들의 집합(a set of rule definitions)을 수신하는 사용자 인터페이스와;
    제 1 프로세스가, 상기 필터 정의들에 기초하여, 연산자와, 컨텐트 기술자 및 기술자 기준에 의해 결정되는 2진 상태를 각각으로 가지는 인코딩된 필터들을 생성할 수 있게 하고, 상기 규칙 정의들에 기초하여, 적어도 하나의 필터들의 각각의 2진 상태에 따라 결정된 2진 결과를 각각으로 가진 인코딩된 규칙들을 생성할 수 있게 하는, 프로세서 판독 가능 명령어를 저장하는 구성 모듈과;
    상기 인코딩된 규칙들과, 상기 인코딩된 필터들과, 상기 기술자 정의들을 저장하는 규칙 메모리 디바이스와;
    네트워크로부터 데이터 스트림을 수신하는 네트워크 인터페이스와;
    상기 데이터 스트림에 상기 인코딩된 규칙들을 적용하는 필터링 모듈을 포함하는
    데이터 스트림 필터링을 위한 디바이스.
  2. 제 1 항에 있어서,
    프로세서가 데이터 스트림(data stream)의 데이터 컨테이너(data container)의 대응하는 편집 기능을 수행할 수 있게 하는 프로세서 판독 가능 명령어로서 구현되는 각 동작들의 동작 집합을 저장하는 동작-메모리 디바이스와,
    제 2 프로세서가, 데이터 스트림으로부터 데이터 컨테이너를 추출하고, 각 데이터 컨테이너를 컴포넌트들(components)로 파싱(parsing)하고, 각 컴포넌트에 대한 컨텐트 타입(content type)을 결정하고, 상기 컨텐트 타입과 관련된 특정 인코딩된 규칙과 특정 인코딩된 필터를 평가하고, 상기 특정 인코딩된 규칙의 값에 따라 동작을 실행할 수 있게 하는, 프로세서 판독 가능 명령어를 저장하는 명령어 메모리를 더 포함하는
    데이터 스트림 필터링을 위한 디바이스.
  3. 제 2 항에 있어서,
    상기 동작들의 집합내의 대응하는 동작의 자연 언어 기술(natural-language description)을 각각으로 포함하는 동작 기술들의 집합을 저장하는 기술 메모리 디바이스와,
    상기 제 2 프로세서가 상기 각 데이터 컨테이너에 대해 실행되는 각 동작의 기술을 상기 기술 메모리 디바이스로부터 판독하고, 상기 각 데이터 컨테이너에 상기 각 동작의 상기 기술을 삽입할 수 있게 하는, 상기 명령어 메모리에 저장된 프로세서 판독 가능 명령어를 더 포함하느
    데이터 스트림 필터링을 위한 디바이스.
  4. 제 1 항 내지 제 3 항중 어느 한 항에 있어서,
    상기 제 1 프로세서가, 적어도 하나의 규칙 트리와 계층 규칙층들 중 하나에 상기 인코딩된 규칙들을 배열할 수 있게 하는, 상기 구성 모듈의 메모리 디바이스에 저장된 명령어를 더 포함하되,
    상기 각 규칙 트리내의 각 규칙은 2진 결과를 가지며, 2개의 동작 중 한 동작이 뒤따르고, 상기 적어도 하나의 규칙은 적어도 하나의 계승자 규칙을 가지며,
    규칙층내의 규칙들은 서로 독립적이고, 루트층 이외의 규칙층의 규칙들은 선행하는 규칙층의 규칙에 좌우되는
    데이터 스트림 필터링을 위한 디바이스.
  5. 제 1 항에 있어서,
    제 1 프로세서가 사용자로 하여금 컨텐트 타입과, 컨텐트 기술자와, 기술자 기준 및 연산자를 각각으로 특정하는 필터들의 집합을 정의할 수 있게 하고, 인코딩된 필터들의 집합을 생성하도록 상기 각 필터를 인코딩할 수 있게 하며, 사용자로 하여금 규칙들의 집합을 정의할 수 있게 하고, 인코딩된 규칙들의 집합을 생성하도록 상기 규칙들을 인코딩할 수 있게 하고, 상기 사용자로 하여금 컨텐트 특정 순서화된 규칙의 집합(a set of content-specific ordered rules)을 생성하도록 각 컨텐트 타입에 대해 각 인코딩된 규칙들 실행하는 순서를 선택할 수 있게 하는 프로세스 판독 가능 명령어의 제 1 집합이 저장된 제 1 명령어 메모리 디바이스와;
    제 2 프로세서가 각 데이터 컨테이너를 컴포넌트들로 파싱하고, 각 컴포넌트의 컨텐트 타입을 결정하고, 상기 각 컴포넌트에 순서화된 규칙의 집합들의 각각을 적용할 수 있게 하는 프로세서 판독 가능 명령어의 제 2 집합이 저장된 제 2 명령어 메모리 디바이스를 더 포함하는
    데이터 스트림 필터링을 위한 디바이스.
  6. 제 5 항에 있어서,
    상기 제 1 프로세서가 적어도 하나의 규칙 트리에 상기 컨텐트 특정 순서화된 규칙들의 집합을 배열할 수 있게 하는 프로세서 판독 가능 명령어를 저장하는 메모리 디바이스를 더 포함하되,
    상기 적어도 하나의 규칙 트리의 각 규칙 트리들은 R0 내지 Rμ-1로 표기된 μ개의 규칙(μ>1)과, A1 내지 A로 표기된 2×μ개의 동작을 가지며,
    규칙 Rj(0≤j<μ)는 두가지 상태 0 및 1로 되고, 두 동작 A2j+1 및 A2j+2 중 하나의 동작으로 결과하며,
    적어도 하나의 규칙 Rj(0≤j<(μ-1)/2)은 두 규칙 R2j +1 및 R2j +2 중 하나의 규칙으로 진행하는
    데이터 스트림 필터링을 위한 디바이스.
  7. 제 6 항에 있어서,
    상기 프로세서 판독 가능 명령어의 제 2 집합은, 상기 제 2 프로세서가 규칙 Rj(0≤j<μ)를 평가하고, Rj가 0으로 되는 표시에 응답하여 동작 A2j+1을 적용하고, Rj가 1로 되는 표시에 응답하여 동작 A2j+ 2을 적용할 수 있게 하는
    데이터 스트림 필터링을 위한 디바이스.
  8. 제 5 항 내지 제 7 항 중 어느 한 항에 있어서,
    상기 제 1 명령어 메모리 디바이스에 저장되어, 상기 제 1 프로세서가 사용자로 하여금 각 규칙에 대해 상기 규칙의 집합들로부터 2개의 계승 규칙과 2개의 동작을 특정할 수 있게 하고, 상기 규칙의 집합을 분류할 수 있게 하는 프로세서 판독 가능 명령어를 더 포함하되,
    적어도 하나의 규칙은 널 계승 규칙(null succeeding rule)을 가지며, 층내의 규칙들은 서로간에 독립적이고, 제 1 층 이외의 층의 규칙들은 임의 선행층의 규칙에 좌우되는
    데이터 스트림 필터링을 위한 디바이스.
  9. 제 5 항 내지 제 7 항 중 어느 한 항에 있어서,
    상기 제 1 프로세서가 상기 컨텐트 기술자들의 집합과, 상기 기준들의 집합 및 상기 연산자들을 디스플레이하여 상기 필터들의 집합을 정의하는 것을 도모할 수 있게 하고, 상기 인코딩된 필터들의 집합을 디스플레이하여 상기 규칙들의 집합을 정의하는 것을 도모할 수 있게 하며, 상기 인코딩된 규칙들의 집합을 디스플레이하여 상기 인코딩된 규칙들을 실행하는 상기 순서를 선택하는 것을 도모할 수 있게 하는 프로세서 판독 가능 명령어를 저장하는 메모리 디바이스를 더 포함하는
    데이터 스트림 필터링을 위한 디바이스.
  10. 제 5 항 내지 제 7 항 중 어느 한 항에 있어서,
    상기 규칙들의 집합내의 규칙은,
    상기 단일 필터; 및
    적어도 2개의 필터의 부울 함수
    중 하나에 따라 정의되는
    데이터 스트림 필터링을 위한 디바이스.
  11. 데이터 컨테이너를 컨텐트 필터링하는 방법으로서,
    적어도 하나의 프로세서와, 프로세서 실행 가능 명령어를 저장하는 적어도 하나의 메모리 디바이스를 채용하는 것을 포함하고,
    사용자로부터 컨텐트 타입들, 컨텐트 기술자들, 기술자의 기준들, 필터들 및 규칙들의 정의들을 수신하고,
    상기 정의들에 기초하여 상기 컨텐트 타입에 대하여,
    인코딩된 필터의 집합 - 각 인코딩된 필터는 2진 상태를 가지며, 사용자 특정 연산자(user-specified operators)로부터의 각 연산자와, 컨텐트 기술자 및 기술자 기준을 포함하는 2개의 피연산자로서 표현됨 -과,
    규칙들의 집합 - 각 규칙들은 선택된 필터의 2진 상태의 사용자 특정 함수(user-specified function)로서 표현됨 -
    을 생성하고,
    네트워크로부터 서로 다른 컨텐트 타입의 컴포넌트를 가진 데이터 컨테이너를 수신하고,
    각 컴포넌트에 대하여 각 컨텐트 타입을 결정하고,
    상기 각 컨텐트 타입에 관련된 각 규칙 집합을 상기 각 컴포넌트에 할당하는
    컨텐트 필터링 방법.
  12. 제 11 항에 있어서,
    프로세서 실행 가능 명령어의 집합으로서 표현된 각 동작들의 동작 집합을 수신하고,
    상기 규칙 집합의 개별적인 규칙에 의해 실행되는 상기 동작 집합내의 동작들의 신원(identification)을 수신하고,
    각 동작 기술이 상기 동작 집합내의 동작에 대응하고, 각 동작의 자연 언어 기술(natural-language description)을 포함하는 상기 동작 기술들의 집합을 수신하고,
    기술 메모리 디바이스에 상기 동작 기술의 집합을 저장하고,
    상기 규칙들의 각 집합으로부터 선택된 규칙의 값을 결정하고,
    상기 선택된 규칙들의 값에 대응하는 동작을 실행하고,
    상기 기술 메모리 디바이스로부터 상기 동작의 기술을 판독하고,
    상기 기술을 상기 데이터 컨테이너에 삽입하는 것을 더 포함하는
    컨텐트 필터링 방법.
  13. 제 11 항 또는 제 12 항에 있어서,
    상기 컨텐트 타입의 사용자 정의 우선권(user-defined priority)을 획득하고,
    각 컨텐트 타입의 우선권 순위에 따라 데이터 컨테이너의 데이터 컴포넌트를 분류하여 분류된 컴포넌트를 생성하고,
    특정 컨텐트 타입의 각 컴포넌트에 대하여 상기 특정 콘텐트 타입에 대응하는 규칙들의 선택된 집합을 채용하여 상기 분류된 컴포넌트를 연속적으로 필터링하는 것을 더 포함하는
    컨텐트 필터링 방법.
  14. 제 11 항 또는 제 12 항에 있어서,
    상기 각 컴포넌트에 대하여 상기 규칙들의 집합을 채용하여 상기 컴포넌트들을 동시에 필터링하여 필터링된 컴포넌트를 생성하고,
    상기 필터링된 컴포넌트들을 단일 데이터 스트림으로 조합하는 것을 더 포함하는
    컨텐트 필터링 방법.
  15. 제 11 항 또는 제 12 항에 있어서,
    상기 선택된 필터의 모든 2진 상태에 대하여 상기 사용자 특정 함수를 사전 계산하고 저장하는 것을 더 포함하는
    컨텐트 필터링 방법.
KR1020137006897A 2010-08-26 2010-08-30 데이터 스트림 필터링을 위한 디바이스 및 컨텐트 필터링 방법 KR101713004B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/869,635 2010-08-26
US12/869,635 US8447718B2 (en) 2007-11-09 2010-08-26 Method and apparatus for filtering streaming data
PCT/CA2010/001347 WO2012024762A1 (en) 2010-08-26 2010-08-30 Method and apparatus for filtering streaming data

Publications (2)

Publication Number Publication Date
KR20130108303A true KR20130108303A (ko) 2013-10-02
KR101713004B1 KR101713004B1 (ko) 2017-03-07

Family

ID=45722774

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137006897A KR101713004B1 (ko) 2010-08-26 2010-08-30 데이터 스트림 필터링을 위한 디바이스 및 컨텐트 필터링 방법

Country Status (8)

Country Link
US (1) US8447718B2 (ko)
EP (1) EP2609720B1 (ko)
JP (1) JP2013536513A (ko)
KR (1) KR101713004B1 (ko)
CN (1) CN103081430B (ko)
CA (3) CA3110584C (ko)
IL (1) IL224358A (ko)
WO (1) WO2012024762A1 (ko)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8478764B2 (en) * 2007-11-09 2013-07-02 Vantrix Corporation Method and apparatus for concurrent filtering of multiple components of streaming data
US8019709B2 (en) * 2007-11-09 2011-09-13 Vantrix Corporation Method and system for rule-based content filtering
FR2941584B1 (fr) * 2009-01-27 2011-04-01 St Nxp Wireless France Procede de traitement de flux de donnees recues par un appareil de communication sans fil et necessitant au moins en partie des traitements cryptographiques et appareil correspondant
US8098677B1 (en) * 2009-07-31 2012-01-17 Anue Systems, Inc. Superset packet forwarding for overlapping filters and related systems and methods
US8934495B1 (en) 2009-07-31 2015-01-13 Anue Systems, Inc. Filtering path view graphical user interfaces and related systems and methods
US8018943B1 (en) 2009-07-31 2011-09-13 Anue Systems, Inc. Automatic filter overlap processing and related systems and methods
WO2015006698A1 (en) 2013-07-11 2015-01-15 Rofori Corporation Communication streams
US9529858B2 (en) * 2014-03-06 2016-12-27 Yahoo! Inc. Methods and systems for ranking items on a presentation area based on binary outcomes
US9467385B2 (en) 2014-05-29 2016-10-11 Anue Systems, Inc. Cloud-based network tool optimizers for server cloud networks
US9781044B2 (en) 2014-07-16 2017-10-03 Anue Systems, Inc. Automated discovery and forwarding of relevant network traffic with respect to newly connected network tools for network tool optimizers
US10050847B2 (en) 2014-09-30 2018-08-14 Keysight Technologies Singapore (Holdings) Pte Ltd Selective scanning of network packet traffic using cloud-based virtual machine tool platforms
US9992134B2 (en) 2015-05-27 2018-06-05 Keysight Technologies Singapore (Holdings) Pte Ltd Systems and methods to forward packets not passed by criteria-based filters in packet forwarding systems
US10652112B2 (en) 2015-10-02 2020-05-12 Keysight Technologies Singapore (Sales) Pte. Ltd. Network traffic pre-classification within VM platforms in virtual processing environments
US10116528B2 (en) 2015-10-02 2018-10-30 Keysight Technologies Singapore (Holdings) Ptd Ltd Direct network traffic monitoring within VM platforms in virtual processing environments
US10142212B2 (en) 2015-10-26 2018-11-27 Keysight Technologies Singapore (Holdings) Pte Ltd On demand packet traffic monitoring for network packet communications within virtual processing environments
FI127266B (en) * 2016-07-08 2018-02-28 Sarokal Test Systems Oy A system for processing data stream messages
US10476673B2 (en) 2017-03-22 2019-11-12 Extrahop Networks, Inc. Managing session secrets for continuous packet capture systems
US20180324061A1 (en) * 2017-05-03 2018-11-08 Extrahop Networks, Inc. Detecting network flow states for network traffic analysis
US9967292B1 (en) 2017-10-25 2018-05-08 Extrahop Networks, Inc. Inline secret sharing
US10389574B1 (en) 2018-02-07 2019-08-20 Extrahop Networks, Inc. Ranking alerts based on network monitoring
US10038611B1 (en) 2018-02-08 2018-07-31 Extrahop Networks, Inc. Personalization of alerts based on network monitoring
US10270794B1 (en) 2018-02-09 2019-04-23 Extrahop Networks, Inc. Detection of denial of service attacks
US10411978B1 (en) 2018-08-09 2019-09-10 Extrahop Networks, Inc. Correlating causes and effects associated with network activity
US10594718B1 (en) 2018-08-21 2020-03-17 Extrahop Networks, Inc. Managing incident response operations based on monitored network activity
US10764211B2 (en) * 2018-10-19 2020-09-01 Avago Technologies International Sales Pte. Limited Flexible switch logic
CN109918516B (zh) * 2019-03-13 2021-07-30 百度在线网络技术(北京)有限公司 一种数据处理方法、装置及终端
US10965702B2 (en) 2019-05-28 2021-03-30 Extrahop Networks, Inc. Detecting injection attacks using passive network monitoring
US11165814B2 (en) 2019-07-29 2021-11-02 Extrahop Networks, Inc. Modifying triage information based on network monitoring
US10742530B1 (en) 2019-08-05 2020-08-11 Extrahop Networks, Inc. Correlating network traffic that crosses opaque endpoints
US11388072B2 (en) 2019-08-05 2022-07-12 Extrahop Networks, Inc. Correlating network traffic that crosses opaque endpoints
US10742677B1 (en) 2019-09-04 2020-08-11 Extrahop Networks, Inc. Automatic determination of user roles and asset types based on network monitoring
US11165823B2 (en) 2019-12-17 2021-11-02 Extrahop Networks, Inc. Automated preemptive polymorphic deception
CN112100620B (zh) * 2020-09-04 2024-02-06 百度在线网络技术(北京)有限公司 代码安全检测方法、装置、设备和可读存储介质
US11463466B2 (en) 2020-09-23 2022-10-04 Extrahop Networks, Inc. Monitoring encrypted network traffic
EP4218212A1 (en) 2020-09-23 2023-08-02 ExtraHop Networks, Inc. Monitoring encrypted network traffic
US11349861B1 (en) 2021-06-18 2022-05-31 Extrahop Networks, Inc. Identifying network entities based on beaconing activity
US11296967B1 (en) 2021-09-23 2022-04-05 Extrahop Networks, Inc. Combining passive network analysis and active probing
US11843606B2 (en) 2022-03-30 2023-12-12 Extrahop Networks, Inc. Detecting abnormal data access based on data similarity

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6421733B1 (en) * 1997-03-25 2002-07-16 Intel Corporation System for dynamically transcoding data transmitted between computers
US20030031260A1 (en) * 2001-07-16 2003-02-13 Ali Tabatabai Transcoding between content data and description data
WO2009059420A1 (en) * 2007-11-09 2009-05-14 Vantrix Corporation System and method for rule based content filtering

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6226630B1 (en) 1998-07-22 2001-05-01 Compaq Computer Corporation Method and apparatus for filtering incoming information using a search engine and stored queries defining user folders
US6624761B2 (en) 1998-12-11 2003-09-23 Realtime Data, Llc Content independent data compression method and system
EP1248975B1 (en) 1999-12-15 2003-09-17 Sun Microsystems, Inc. System and method for creating a graphical user interface from a filter expression tree
US20020049705A1 (en) 2000-04-19 2002-04-25 E-Base Ltd. Method for creating content oriented databases and content files
US7242324B2 (en) 2000-12-22 2007-07-10 Sony Corporation Distributed on-demand media transcoding system and method
US7120702B2 (en) 2001-03-03 2006-10-10 International Business Machines Corporation System and method for transcoding web content for display by alternative client devices
US8959231B2 (en) 2002-04-12 2015-02-17 Siemens Aktiengesellschaft Representation of Boolean expressions for specifying filters using XML
FR2847693B1 (fr) 2002-11-22 2005-02-25 Bosch Gmbh Robert Procede de conception d'une forme assistee par ordinateur et procede de construction d'une piece ainsi concue
US20040158741A1 (en) 2003-02-07 2004-08-12 Peter Schneider System and method for remote virus scanning in wireless networks
US20050108176A1 (en) 2003-04-30 2005-05-19 Jarol Scott B. Configurable rules based content item consumption
US7801874B2 (en) 2004-10-22 2010-09-21 Mahle Powertrain Llc Reporting tools
US7606832B2 (en) 2004-11-12 2009-10-20 International Business Machines Corporation System and method for orchestrating composite web services in constrained data flow environments
US9288078B2 (en) * 2005-03-25 2016-03-15 Qualcomm Incorporated Apparatus and methods for managing content exchange on a wireless device
US7545978B2 (en) 2005-07-01 2009-06-09 International Business Machines Corporation Methods and apparatus for filtering video packets for large-scale video stream monitoring
WO2007082190A2 (en) * 2006-01-06 2007-07-19 Qualcomm Incorporated Apparatus and methods of selective collection and selective presentation of content
US9251520B2 (en) 2006-02-22 2016-02-02 Google Inc. Distributing mobile advertisements
US10070164B2 (en) 2008-01-10 2018-09-04 At&T Intellectual Property I, L.P. Predictive allocation of multimedia server resources
US9135363B2 (en) 2009-06-09 2015-09-15 Gvoto (Hong Kong) Ltd. Methods and systems for automatic content retrieval and organization
US9491409B2 (en) 2009-10-30 2016-11-08 Comcast Cable Communications, Llc Network interface to content source
US8732784B2 (en) 2010-12-07 2014-05-20 At&T Intellectual Property I, L.P. Hierarchical storage management for data

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6421733B1 (en) * 1997-03-25 2002-07-16 Intel Corporation System for dynamically transcoding data transmitted between computers
US20030031260A1 (en) * 2001-07-16 2003-02-13 Ali Tabatabai Transcoding between content data and description data
WO2009059420A1 (en) * 2007-11-09 2009-05-14 Vantrix Corporation System and method for rule based content filtering
KR20100098385A (ko) * 2007-11-09 2010-09-06 밴트릭스 코오퍼레이션 규칙 기반 컨텐트 필터링 시스템 및 방법

Also Published As

Publication number Publication date
US20100332618A1 (en) 2010-12-30
EP2609720B1 (en) 2018-01-10
KR101713004B1 (ko) 2017-03-07
CA2805302A1 (en) 2012-03-01
EP2609720A1 (en) 2013-07-03
JP2013536513A (ja) 2013-09-19
CN103081430A (zh) 2013-05-01
CA3110584C (en) 2023-07-18
CA3110746A1 (en) 2012-03-01
EP2609720A4 (en) 2014-01-22
WO2012024762A8 (en) 2012-04-12
CA2805302C (en) 2021-09-21
IL224358A (en) 2016-07-31
CN103081430B (zh) 2016-09-14
WO2012024762A1 (en) 2012-03-01
US8447718B2 (en) 2013-05-21
CA3110746C (en) 2023-04-18
CA3110584A1 (en) 2012-03-01

Similar Documents

Publication Publication Date Title
KR101713004B1 (ko) 데이터 스트림 필터링을 위한 디바이스 및 컨텐트 필터링 방법
KR101451285B1 (ko) 규칙 기반 컨텐트 필터링 시스템 및 방법
CA2809197C (en) Method and apparatus for concurrent filtering of multiple components of streaming data
CA2809172C (en) Method and apparatus for employing rules to filter streaming data

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right