[go: up one dir, main page]

JP2024536720A - Event processing system and method - Patents.com - Google Patents

Event processing system and method - Patents.com Download PDF

Info

Publication number
JP2024536720A
JP2024536720A JP2024514016A JP2024514016A JP2024536720A JP 2024536720 A JP2024536720 A JP 2024536720A JP 2024514016 A JP2024514016 A JP 2024514016A JP 2024514016 A JP2024514016 A JP 2024514016A JP 2024536720 A JP2024536720 A JP 2024536720A
Authority
JP
Japan
Prior art keywords
event
event data
data
events
constraint
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
JP2024514016A
Other languages
Japanese (ja)
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
Priority claimed from US17/446,924 external-priority patent/US11698907B2/en
Application filed by コジリティ・ソフトウェア・コーポレーション filed Critical コジリティ・ソフトウェア・コーポレーション
Publication of JP2024536720A publication Critical patent/JP2024536720A/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24568Data stream processing; Continuous queries
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24564Applying rules; Deductive queries
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24575Query processing with adaptation to user needs using context
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/252Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Multimedia (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Figure 2024536720000001

イベントを処理するシステムおよび方法を開示する。受動イベントデータ、能動イベントデータ、またはこの両方を含むイベントデータを受信する。受信したイベントデータが受動イベントデータおよび能動イベントデータのパターンに利用可能か否かを判断する。受信したイベントデータが受動イベントデータおよび能動イベントデータのパターンに利用可能か否かの判断に応答して、受動イベントデータと能動イベントデータとの間の1つ以上の制約を1つ以上のクエリ用語に変換する。クエリ用語を使用して、少なくとも1つのクエリを作成する。能動イベントデータの全部ではなく一部に関係する残りの受動イベントデータを、作成した少なくとも1つのクエリを用いて取得する。
【選択図】図14

Figure 2024536720000001

A system and method for processing events is disclosed: receiving event data including passive event data, active event data, or both; determining whether the received event data is available for a pattern of passive event data and active event data; translating one or more constraints between the passive event data and the active event data into one or more query terms in response to determining whether the received event data is available for a pattern of passive event data and active event data; creating at least one query using the query terms; and obtaining remaining passive event data related to some but not all of the active event data using the created at least one query.
[Selected figure] Figure 14

Description

関連出願の相互参照
本明細書は、2021年9月3日に出願された米国特許出願第17/446,924号の利益を主張するものであり、同文献の開示を参照して本願に援用する。
CROSS-REFERENCE TO RELATED APPLICATIONS This application claims the benefit of U.S. Patent Application No. 17/446,924, filed September 3, 2021, the disclosure of which is incorporated herein by reference.

本開示の実施形態は、全般的にイベント処理に関する。さらに詳細には、本開示の実施形態は、階層型複合イベント処理(H-CEP)のシステムおよび方法に関する。 Embodiments of the present disclosure relate generally to event processing. More particularly, embodiments of the present disclosure relate to systems and methods for hierarchical complex event processing (H-CEP).

政府、企業、組織、および個人のセキュリティは、多くの個人およびグループに脅かされることが増えていることから、ますます重要になっている。したがって、潜在的な脅威を検出して防止し、さらには拡大傾向にある脅威に対応するのに有用な情報を適切な時期に効果的に処理できるセキュリティ対策を講じることが重要である。 The security of governments, businesses, organizations, and individuals is becoming more and more important as they are increasingly threatened by many individuals and groups. It is therefore important to have security measures that can detect and prevent potential threats, as well as process information that is useful in responding to growing threats in a timely and effective manner.

トランザクションシステム、ソーシャルネットワーク、ウェブアクティビティ、履歴ログなど、数多くのソースから大量のデータを利用できるようになったことで、有用な情報をマイニングし関連付けるために、データテクノロジーを使用することが必要になっている。ストリーム処理アプローチ、および複合イベント処理(CEP)を組み込んだイベントベースのシステムは、多くのアプリケーション分野でビッグデータを処理する対策として広く受け入れられている。CEPとは、時間的または地理的な要素を含んでいることが多い複雑な関係を有するイベントの検出を指す。 The availability of large amounts of data from numerous sources, including transactional systems, social networks, web activity, and historical logs, necessitates the use of data technologies to mine and correlate useful information. Stream processing approaches and event-based systems incorporating complex event processing (CEP) have gained widespread acceptance for processing big data in many application domains. CEP refers to the detection of events with complex relationships that often include a temporal or geographical component.

残念ながら、現在のCEPシステムには、入力データがよく似たデータソースから取得されることが想定されたり、データ構造およびスキーマが頻繁に変更されないことが想定されたりする欠点がある。 Unfortunately, current CEP systems have shortcomings, such as assuming that input data comes from similar data sources and that data structures and schemas do not change frequently.

米国特許明細書第17/446,924号U.S. Patent Specification No. 17/446,924 米国特許第9,858,260号U.S. Pat. No. 9,858,260

本開示の実施形態を添付図面に例として非限定的に示しており、図面では同様の符号はほぼ同じ要素を指している。 Embodiments of the present disclosure are illustrated by way of example and not by way of limitation in the accompanying drawings, in which like reference numbers refer to substantially the same elements.

1つの実施形態によるイベント処理システムを示すブロック図である。FIG. 1 is a block diagram illustrating an event processing system according to one embodiment. 1つの実施形態によるイベント処理システムを示すブロック図である。FIG. 1 is a block diagram illustrating an event processing system according to one embodiment. 1つの実施形態によるイベント処理方法を示す流れ図である。1 is a flow diagram illustrating a method for processing events according to one embodiment. 別の実施形態によるイベント処理方法を示す流れ図である。4 is a flow diagram illustrating an event processing method according to another embodiment. 1つの実施形態によるテンプレート表記を示す図である。FIG. 2 illustrates a template representation according to one embodiment. 1つの実施形態によるテンプレート表記を示す図である。FIG. 2 illustrates a template representation according to one embodiment. 1つの実施形態によるテンプレート表記を示す図である。FIG. 2 illustrates a template representation according to one embodiment. 1つの実施形態によるテンプレート表記を示す図である。FIG. 2 illustrates a template representation according to one embodiment. 1つの実施形態によるテンプレート表記を示す図である。FIG. 2 illustrates a template representation according to one embodiment. 1つの実施形態によるテンプレート表記を示す図である。FIG. 2 illustrates a template representation according to one embodiment. 1つの実施形態によるテンプレート表記を示す図である。FIG. 2 illustrates a template representation according to one embodiment. 1つの実施形態によるテンプレートの例を示す図である。FIG. 2 illustrates an example of a template according to one embodiment. 1つの実施形態によるテンプレートの例を示す図である。FIG. 2 illustrates an example of a template according to one embodiment. 1つの実施形態によるテンプレートの例を示す図である。FIG. 2 illustrates an example of a template according to one embodiment. 1つの実施形態によるテンプレートの例を示す図である。FIG. 2 illustrates an example of a template according to one embodiment. 1つの実施形態によるJava Script Object Notation(JSON)でのテンプレートの表現を示す図である。FIG. 2 illustrates a representation of a template in Java Script Object Notation (JSON) according to one embodiment. 1つの実施形態によるJava Script Object Notation(JSON)でのテンプレートの表現を示す図である。FIG. 2 illustrates a representation of a template in Java Script Object Notation (JSON) according to one embodiment. 1つの実施形態による解を生成する方法を示す流れ図である。4 is a flow diagram illustrating a method for generating a solution according to one embodiment. 別の実施形態による解を生成する方法を示す流れ図である。4 is a flow diagram illustrating a method for generating a solution according to another embodiment. 1つの実施形態による結果またはアクションを処理する方法を示す流れ図である。1 is a flow diagram illustrating a method for processing results or actions according to one embodiment. 1つの実施形態によるイベントを発行する方法を示す流れ図である。4 is a flow diagram illustrating a method for publishing an event according to one embodiment. 1つの実施形態による制約を処理する方法を示す流れ図である。1 is a flow diagram illustrating a method for processing constraints according to one embodiment. 別の実施形態による制約を処理する方法を示す流れ図である。11 is a flow diagram illustrating a method for processing constraints according to another embodiment. 1つの実施形態によるイベント保持の方法を示す流れ図である。1 is a flow diagram illustrating a method for event retention according to one embodiment. 1つの実施形態によるイベント保持の別の方法を示す流れ図である。11 is a flow diagram illustrating another method of event retention according to one embodiment. 1つの実施形態によるデータ処理システムを示すブロック図である。1 is a block diagram illustrating a data processing system according to one embodiment.

本開示の様々な実施形態および態様を、以下に考察する詳細を参照して説明する。添付の図面は、様々な実施形態を示している。以下の説明および図面は、本発明を例示するものであり、本発明を限定するものと解釈してはならない。本開示の様々な実施形態を完全に理解してもらうために多くの具体的な詳細を説明している。しかしながら、場合によっては、本開示の実施形態を簡潔に説明するために、周知の詳細または従来の詳細については説明しない。 Various embodiments and aspects of the present disclosure will be described with reference to the details discussed below. The accompanying drawings illustrate various embodiments. The following description and drawings are illustrative of the present disclosure and should not be construed as limiting the present disclosure. Numerous specific details are set forth to provide a thorough understanding of various embodiments of the present disclosure. However, in some cases, well-known or conventional details are not described in order to concisely describe the embodiments of the present disclosure.

本明細書で「1つの実施形態」または「一実施形態」という場合、その実施形態に関連して説明する特定の特徴、構造または特性が、本開示の少なくとも1つの実施形態に含まれ得ることを意味している。本明細書の様々な箇所で「1つの実施形態では」という語句が現れていても、そのすべてが必ずしも同じ実施形態を指しているわけではない。 When "one embodiment" or "an embodiment" is used herein, it means that a particular feature, structure, or characteristic described in connection with that embodiment may be included in at least one embodiment of the present disclosure. The appearances of the phrase "in one embodiment" in various places in this specification are not necessarily all referring to the same embodiment.

本明細書で使用したように、テンプレート種類(またはテンプレート定義)とは、システムが監視することになっているアサーションと制約とのセットの仕様を指す。解のテンプレートインスタンス(またはテンプレートインスタンス)とは、集合的にテンプレートを満たす一連のイベントを指す。これは、テンプレートの解とも呼ばれる。例えば、1つのイベントが複数の解に関わっている可能性がある。各解は、テンプレート内の制約をすべて満たす。解は、すべての多重要件を満たさないことがあり、その場合、そのアサーションに基づくアクションは、暗黙に示されることはない。アサーションとは、真である場合にテンプレート定義が表している仮説を有効とする数セットのデータを示すテンプレート定義の一部を指す。最も一般的には、これはイベント種類を指すものであり、制約がすべて満たされている場合にその種類のイベントがアサーションを満たし得ることを示している。結果(またはアクション)とは、アクションが依存しているアサーションがすべて真である場合にシステムが開始するアクションを指す。これは、イベントを公開するためのアクションである場合がある。グループとは、満たすべきそのグループに対して集合で満たされている一連のアサーションを指す。制約とは、制約が適用されるアサーションを満たすと考えられるイベントに対する制限の仕様を指す。例えば、引き出しと預け入れは同じ口座のものでなければならないという制約は、引き出しおよび預け入れのイベント/アサーションに関する制約である。フィールドとは、制約またはアクションへの入力として使用されるイベント内の1つのデータを指す。イベント種類(またはイベント定義)とは、取り込まれたデータからのイベント、またはテンプレートから発行されるイベントを生成するための仕様を指す。この仕様は、処理済みのイベントに含まれるフィールドの定義を含む。 As used herein, a template kind (or template definition) refers to the specification of a set of assertions and constraints that the system is to monitor. A solution template instance (or template instance) refers to a set of events that collectively satisfy the template. This is also called a solution of the template. For example, an event may be involved in multiple solutions. Each solution satisfies all of the constraints in the template. A solution may not satisfy all of the multiple requirements, in which case no action based on that assertion is implied. An assertion refers to a part of a template definition that indicates a set of data that, if true, validates the hypothesis expressed by the template definition. Most commonly, this refers to an event kind, indicating that an event of that kind can satisfy the assertion if all of the constraints are satisfied. A consequence (or action) refers to an action that the system will initiate if all of the assertions that the action depends on are true. This could be an action to publish an event. A group refers to a set of assertions that are satisfied in a set for that group to be satisfied. A constraint refers to a specification of restrictions on the events that are considered to satisfy the assertions to which the constraint applies. For example, the constraint that withdrawals and deposits must be to the same account is a constraint on withdrawal and deposit events/assertions. A field is a piece of data in an event that is used as input to a constraint or action. An event kind (or event definition) is a specification for generating an event from ingested data or emitted from a template. This specification includes a definition of the fields that will be included in the processed event.

いくつかの実施形態によれば、1つ以上のイベントのイベントデータを含む入力ソースデータを受信する。イベントデータに一致する1つ以上のイベント定義を選択する。一致しているイベント定義ごとに、イベント定義は、テンプレートに入力されて一連のイベントを生成する。テンプレートは、多くのアサーションを含み、イベント定義をアサーションの1つとして有し、各アサーションは制約を含んでいる。アサーションの制約は、徐々に処理されて、一連のイベントのサブセットである1つ以上の解を作成する。各制約および各解について、その解に対して実行可能な一連のターゲットイベントを識別し、解および識別した一連のターゲットイベントに基づいて1つの新たな解を作成し、それによって一連の新たな解を作成する。 According to some embodiments, input source data is received that includes event data for one or more events. One or more event definitions that match the event data are selected. For each matching event definition, the event definition is input into a template to generate a set of events. The template includes a number of assertions, with the event definition as one of the assertions, and each assertion includes a constraint. The constraints of the assertions are processed incrementally to create one or more solutions that are subsets of the set of events. For each constraint and each solution, a set of target events that are executable for that solution is identified, and a new solution is created based on the solution and the identified set of target events, thereby creating a set of new solutions.

1つの実施形態では、テンプレート内の各々の新たな解および各々の結果について、すべてのアサーションが満たされているか否かを判断する。すべてのアサーションが満たされているという判断に応答して、同等の結果が以前にトリガーされたことがあるか否かを判断する。結果は、同等の結果が以前にトリガーされていないという判断に応答してトリガーされる。 In one embodiment, for each new solution and each outcome in the template, it is determined whether all assertions are satisfied. In response to determining that all assertions are satisfied, it is determined whether an equivalent outcome has been previously triggered. An outcome is triggered in response to determining that an equivalent outcome has not been previously triggered.

1つの実施形態では、少なくとも1つのアサーションが満たされておらず、同等の結果が以前にトリガーされたことがあるという判断に応答して、結果はトリガーされない。 In one embodiment, in response to a determination that at least one assertion is not satisfied and an equivalent outcome has previously been triggered, the outcome is not triggered.

1つの実施形態では、結果をトリガーするために、新たな解のイベントデータが作成され、新たな解に対してイベントデータが発行される。 In one embodiment, to trigger an outcome, event data is created for the new solution and event data is published for the new solution.

1つの実施形態では、新たな解のイベントデータを発行するために、新たな解の基本データを生成する。結果の各データマッピングエントリについて、そのデータマッピングエントリで参照されているソースイベントからのソースイベント値を収集し、そのソースイベント値に関する計算を実行して結果を作成し、その結果を新たな解に加える。ソースイベントからエンティティデータを抽出する。エンティティデータは、エンティティマップに集約され、エンティティマップは、ソースイベントで参照される各エンティティを識別する。 In one embodiment, generate new solution base data to publish event data for the new solution. For each resulting data mapping entry, collect source event values from the source events referenced in that data mapping entry, perform calculations on the source event values to create results, and add the results to the new solution. Extract entity data from the source events. The entity data is aggregated into an entity map, which identifies each entity referenced in the source events.

1つの実施形態では、アサーションの制約を徐々に処理するために、各分割制約の前に分割制約のソースイベントをターゲットとする制約が来るように、分割制約を順序付けする。分割制約の順番にイベントサブセットを生成する。残りの非分割制約を処理する。 In one embodiment, to process the constraints of an assertion incrementally, order the split constraints such that each split constraint is preceded by a constraint that targets the source event of the split constraint. Generate an event subset in the order of the split constraints. Process the remaining non-split constraints.

別の実施形態では、アサーションの制約を徐々に処理するために、非分割制約をステージにグループ化する。ステージは、階層データ構造を形成するように順序付けされる。各イベントは、イベントのイベント定義を有する各々のアサーション内の多数の部分解のうちの1つに置かれ、部分解は、階層データ構造に含まれている。部分解は、分割キーに基づいて分離される。共通の分割キーを有する部分解を組み合わせて1つ以上の完全解を形成する。組み合わせた部分解が処理されて結果になる。 In another embodiment, to process the constraints of an assertion incrementally, non-split constraints are grouped into stages. The stages are ordered to form a hierarchical data structure. Each event is placed into one of multiple partial solutions within each assertion with the event's event definition, and the partial solutions are included in the hierarchical data structure. The partial solutions are separated based on a split key. Partial solutions with a common split key are combined to form one or more complete solutions. The combined partial solutions are processed into a result.

いくつかの実施形態によれば、イベントを処理するシステムおよび方法を提供する。受動イベントデータ、能動イベントデータ、またはこの両方を含むイベントデータを受信する。受信したイベントデータが受動イベントデータおよび能動イベントデータのパターンに利用可能か否かを判断する。受信したイベントデータが受動イベントデータおよび能動イベントデータのパターンに利用可能であるという判断に応答して、受動イベントデータと能動イベントデータとの間の1つ以上の制約を1つ以上のクエリ用語に変換する。クエリ用語は、少なくとも1つのクエリを構築するために使用される。能動イベントデータの全部ではなく一部に関連する残りの受動イベントデータは、構築された少なくとも1つのクエリを使用して取得される。イベントデータと残りの受動イベントデータを一致させる1つ以上のイベント定義を選択する。一致する各々のイベント定義について、イベント定義をテンプレートに入力して一連のイベントを生成する。テンプレートは、多数のアサーションを含み、イベント定義をアサーションの1つとして有し、各アサーションは制約を含んでいる。アサーションの制約は、徐々に処理されて、一連のイベントのサブセットである1つ以上の解を作成する。各制約および各解について、その解に対して実行可能な一連のターゲットイベントを識別し、解および識別した一連のターゲットイベントに基づいて1つの新たな解を作成し、一連の新たな解を作成する。 According to some embodiments, a system and method for processing events is provided. Receive event data including passive event data, active event data, or both. Determine whether the received event data is available for a pattern of passive event data and active event data. In response to determining that the received event data is available for a pattern of passive event data and active event data, convert one or more constraints between the passive event data and the active event data into one or more query terms. The query terms are used to construct at least one query. Remaining passive event data related to some but not all of the active event data is obtained using the constructed at least one query. Select one or more event definitions that match the event data and the remaining passive event data. For each matching event definition, input the event definition into a template to generate a set of events. The template includes a number of assertions, having the event definition as one of the assertions, each assertion including a constraint. The constraints of the assertions are processed incrementally to create one or more solutions that are subsets of the set of events. For each constraint and each solution, identify a set of target events that are executable for that solution, create a new solution based on the solution and the identified set of target events, and create a set of new solutions.

図1Aおよび図1Bは、1つの実施形態によるイベント処理システムを示すブロック図である。図1Aおよび図1Bでは、イベント処理システム100は、階層型複合イベント処理(H-CEP)システムであってよい。H-CEPでの「階層」という用語は、システムの一部からシステムの別の一部に入力するイベントを作成して、処理の概念上の階層を形成する能力を指す。階層という用語を使用しているが、情報フローの任意のグラフを形成することが可能である。本明細書で使用しているように、「テンプレート」という用語は、一連のイベントおよびイベント間の関係の検出単位を表すために使用している。イベント間の関係は、「制約」と表現され、テンプレートの一致は、「制約ソルバー」法を用いて実行される。いくつかの実施形態では、制約ソルバーは、数値問題に対する「解」を計算するのではなく、起こり得る一連のイベント一致をフィルタリングする。 1A and 1B are block diagrams illustrating an event processing system according to one embodiment. In FIG. 1A and 1B, the event processing system 100 may be a hierarchical complex event processing (H-CEP) system. The term "hierarchy" in H-CEP refers to the ability to create events that enter from one part of the system into another part of the system, forming a conceptual hierarchy of processing. Although the term hierarchy is used, any graph of information flow can be formed. As used herein, the term "template" is used to represent a unit of detection of a set of events and the relationships between the events. The relationships between the events are expressed as "constraints," and template matching is performed using a "constraint solver" method. In some embodiments, the constraint solver filters a set of possible event matches rather than computing a "solution" to a numerical problem.

図1Aを参照すると、システム100は、ネットワーク103を介してサーバ150に通信可能に結合された1つ以上のユーザデバイス101~102を含んでいるが、これに限定されない。ユーザデバイス101~102は、ホストまたはサーバ、パーソナルコンピュータ(例えばデスクトップ、ラップトップ、およびタブレット)、「シン」クライアント、携帯情報端末(PDA)、Web対応機器、携帯電話(例えばスマートフォン)、ウェアラブルデバイス(例えばスマートウォッチ)など、どのような種類のデバイスであってもよい。ネットワーク303は、有線か無線かを問わず、ローカルエリアネットワーク(LAN)、インターネットなどのワイドエリアネットワーク(WAN)、ファイバネットワーク、ストレージネットワーク、またはこれらの組み合わせなど、どのような種類のネットワークであってもよい。 Referring to FIG. 1A, system 100 includes, but is not limited to, one or more user devices 101-102 communicatively coupled to server 150 via network 103. User devices 101-102 may be any type of device, such as a host or server, a personal computer (e.g., desktop, laptop, and tablet), a "thin" client, a personal digital assistant (PDA), a web-enabled appliance, a mobile phone (e.g., smartphone), a wearable device (e.g., smart watch), etc. Network 303 may be any type of network, whether wired or wireless, such as a local area network (LAN), a wide area network (WAN) such as the Internet, a fiber network, a storage network, or a combination thereof.

ユーザデバイス101~102は、入力/出力機能を伴う電子ディスプレイを提供するとしてよい。あるいは、別個の電子ディスプレイおよび入力/出力デバイス、例えばキーボードをサーバ150との直接電子通信に利用できる。多種多様な電子ディスプレイおよび入力/出力デバイスのうちのいずれでもシステム100で利用してよい。1つの実施形態では、ユーザは、ユーザデバイス101~102を利用してサーバ150にホストされるウェブページにネットワーク103経由でアクセスしてよい。サーバ150は、ユーザデバイス101~102にインストールできる従来のウェブブラウザまたはビューア、例えばSafari、Internet Explorerなどを使用してユーザがアクセスできるウェブページを提供するとしてよい。発行されたイベント165(以下でさらに詳細に説明する)は、ウェブページを介してユーザに提示されるとしてよい。別の実施形態では、サーバ150は、ユーザデバイス101~102にダウンロードできるコンピュータアプリケーションを提供するとしてよい。例えばユーザは、サーバ150によってホストされたウェブページにアクセスしてコンピュータアプリケーションをダウンロードすることができる。コンピュータアプリケーションは、ユーザデバイス101~102にインストールでき、ユーザデバイスは、発行されたイベントを閲覧するためのインターフェースをユーザに提供する。 The user devices 101-102 may provide an electronic display with input/output capabilities. Alternatively, a separate electronic display and input/output device, such as a keyboard, may be used for direct electronic communication with the server 150. Any of a wide variety of electronic displays and input/output devices may be used in the system 100. In one embodiment, the user may use the user devices 101-102 to access a web page hosted on the server 150 via the network 103. The server 150 may provide a web page that the user can access using a conventional web browser or viewer, such as Safari, Internet Explorer, etc., that may be installed on the user devices 101-102. The published events 165 (described in more detail below) may be presented to the user via the web page. In another embodiment, the server 150 may provide a computer application that can be downloaded to the user devices 101-102. For example, the user may access a web page hosted by the server 150 to download the computer application. A computer application can be installed on the user device 101-102, and the user device provides the user with an interface for viewing the published events.

引き続き図1Aを参照すると、サーバ150は、ネットワーク103とほぼ同じネットワーク上にあるとしてよい外部システム171およびデータ記憶部172に通信可能に結合または接続されている。サーバ150は、どのような種類のサーバまたはサーバのクラスタであってもよく、Webまたはクラウドサーバ、アプリケーションサーバ、バックエンドサーバなど、またはこれらの組み合わせであってよい。以下にさらに詳細に説明するように、サーバ150は、入力イベントの1つ以上の外部ソースに依存し、1セット以上の出力(イベントも)を作成する。1つの実施形態では、出力のセットは、サーバ150自体への入力として作用できる。いくつかの実施形態では、サーバ150は、対象となるイベントを選択し、それを所定のテンプレートと比較し、それをテンプレート固有の制約と一致するイベントの組み合あせについてフィルタリングし、可能性としてテンプレートと一致させるために新たなイベントを発行し、そのイベントは、テンプレートによって一致する可能性がある。この結果を使用して、一致したイベントによって表される動作パターンを検出し、対象となるイベントの組み合わせに対するアラートを生成し、低レベルのデータから概要情報を合成することができる。 Continuing to refer to FIG. 1A, server 150 is communicatively coupled or connected to external systems 171 and data stores 172, which may be on substantially the same network as network 103. Server 150 may be any type of server or cluster of servers, such as web or cloud servers, application servers, back-end servers, etc., or combinations thereof. As described in more detail below, server 150 relies on one or more external sources of input events and produces one or more sets of outputs (events). In one embodiment, the set of outputs may act as inputs to server 150 itself. In some embodiments, server 150 selects events of interest, compares them to predefined templates, filters them for combinations of events that match template-specific constraints, and issues new events to potentially match the templates, which may be matched by the templates. The results may be used to detect behavioral patterns represented by the matched events, generate alerts for combinations of events of interest, and synthesize summary information from low-level data.

外部システム171は、サーバ150とインターフェース接続するための計算能力およびネットワーク接続能力を備えた任意のコンピュータシステムとすることができる。1つの実施形態では、外部システム171は、複数のコンピュータシステムを含んでいてよい。つまり、外部システム171は、計算およびソースデータストレージの仕事量を共有するマシンのクラスタであってよい。1つの実施形態では、データ記憶部172は、電子データを記憶するのに適した任意のメモリ記憶媒体、コンピュータメモリ、データベース、またはデータベースサーバであってよい。データ記憶部172は、サーバ150から独立した別個のコンピュータであってよい。データ記憶部172は、リレーショナルデータ記憶部であってもよい。1つの実施形態では、データ記憶部172は、外部システム171上に常駐してよく、あるいは、1つ以上の場所に別個に常駐するように構成することもできる。 External system 171 may be any computer system with computational and network connectivity capabilities to interface with server 150. In one embodiment, external system 171 may include multiple computer systems. That is, external system 171 may be a cluster of machines that share computational and source data storage workloads. In one embodiment, data store 172 may be any memory storage medium, computer memory, database, or database server suitable for storing electronic data. Data store 172 may be a separate computer independent of server 150. Data store 172 may be a relational data store. In one embodiment, data store 172 may reside on external system 171 or may be configured to reside separately in one or more locations.

図1Bを参照すると、サーバ150は、入力データ受信モジュール151、イベント処理モジュール152、解生成モジュール153、結果処理モジュール154およびイベント発行モジュール155を含むが、これに限定されない。モジュール151~155のいくつかまたはすべてを、ソフトウェア、ハードウェア、またはこれらの組み合わせに実装してよい。例えば、これらのモジュールを永続記憶装置182(例えばハードディスク、ソリッドステートドライブ)にインストールし、メモリ181にロードし、サーバ150の1つ以上のプロセッサ(図示せず)で実行してよい。これらのモジュールのいくつかまたはすべてを、サーバ150のいくつかまたはすべてのモジュールに通信可能に結合してもよいし、同モジュールに統合してもよいことに注意されたい。モジュール151~155のいくつかを統合モジュールとして一つに統合してよい。 Referring to FIG. 1B, the server 150 includes, but is not limited to, an input data receiving module 151, an event processing module 152, a solution generating module 153, a result processing module 154, and an event publishing module 155. Some or all of the modules 151-155 may be implemented in software, hardware, or a combination thereof. For example, these modules may be installed on persistent storage 182 (e.g., hard disk, solid state drive), loaded into memory 181, and executed on one or more processors (not shown) of the server 150. It should be noted that some or all of these modules may be communicatively coupled to or integrated into some or all modules of the server 150. Some of the modules 151-155 may be integrated together as an integrated module.

1つの実施形態では、入力データ受信モジュール151が外部システム171またはデータ記憶部172からソースデータを受信してよい。例えば、ソースデータは、利用可能なときにデータがサーバ150に直接提供される場合に(すなわち直接フィード)プッシュされてよい。あるいは、ソースデータは、サーバ150(すなわちモジュール151)が例えばSolr、構造化クエリ言語(SQL)などのデータベースクエリを介して外部システムから定期的にソースデータを要求する場合にプルされてよい。ソースデータは、入力イベントを含んでいてよく、任意の形式の構造化データおよび非構造化データ(例えば不均一なコンテンツ)であってよい。Extensible MarkupLanguage(XML)、Comma-Separated Values(CSV)、Java Script Notation(JSON)、およびResource Description Framework(RDF)データなどのあらゆるデータを構造化データとして使用できる。1つの実施形態では、ソースデータは、米国特許第9,858,260号の「System and method for analyzing items using lexicon analysis and filtering process」に記載されているように、外部ソースからのレキシコンでマッピングできる(またはレキシコンデータを使用してフィルタリングできる)ソースデータであってもよく、この開示を参照して本願に援用する。ソースデータを受信すると、モジュール151は、ソースデータを入力ソースデータ161として永続記憶装置182に記憶してよい。 In one embodiment, the input data receiving module 151 may receive source data from the external system 171 or data store 172. For example, the source data may be pushed, where data is provided directly to the server 150 when available (i.e., a direct feed). Alternatively, the source data may be pulled, where the server 150 (i.e., module 151) periodically requests the source data from the external system via a database query, such as Solr, Structured Query Language (SQL), etc. The source data may include input events and may be any form of structured and unstructured data (e.g., heterogeneous content). Any data can be used as structured data, such as Extensible Markup Language (XML), Comma-Separated Values (CSV), Java Script Notation (JSON), and Resource Description Framework (RDF) data. In one embodiment, the source data can be source data that can be mapped with a lexicon (or filtered using lexicon data) from an external source, as described in U.S. Patent No. 9,858,260, entitled "System and method for analyzing items using lexicon analysis and filtering process," the disclosure of which is incorporated herein by reference. Upon receiving the source data, module 151 may store the source data in persistent storage 182 as input source data 161.

様々な実施形態では、イベント処理を実行する際の重要な要素が、外部のソースまたはシステムから入力イベントを取得することである。例えば、正しいイベントを適時に取得することが肝要であることがある。したがって、一実施形態では、ストリーミング/能動(またはプッシュ)データソースを受動(またはプル)データソースと組み合わせて、取得したイベントの精度および受動データストア(例えば構造化クエリ言語(SQL)データベース、ウェブサービスなど)から取得したイベントの適時性を向上させることができる。 In various embodiments, a key element in performing event processing is obtaining input events from external sources or systems. For example, obtaining the correct events in a timely manner may be essential. Thus, in one embodiment, streaming/active (or push) data sources may be combined with passive (or pull) data sources to improve the accuracy of the events obtained and the timeliness of the events obtained from passive data stores (e.g., Structured Query Language (SQL) databases, web services, etc.).

一実施形態では、受動ソースからのデータ取得を開始するために能動データのソースを活用してよい。アサーションと制約とのパターンを仮定し、あるアサーションがソースイベントと関係がある可能性があり、そのアサーションと他のアサーションとの制約を集合的に満たす一連のイベントを表して全体としてそのパターンに一致する可能性がある場合、能動データソースと受動データソースとが混在するパターンを処理し、受動データソースから一連のターゲットイベントを適時に取得する方法を定義できる。 In one embodiment, a source of active data may be leveraged to initiate data acquisition from passive sources. Given a pattern of assertions and constraints, where an assertion may be related to a source event and may represent a set of events that collectively satisfy the constraints of that assertion and other assertions and may collectively match the pattern, a method can be defined to handle a mixed pattern of active and passive data sources and acquire a set of target events from the passive data sources in a timely manner.

一実施形態では、1つ以上のソースからイベント(例えばポーリング)を取得して更新をトリガーし、能動データソースを有する効果をシミュレーションするために、定期的なクエリを使用して全受動データのパターンを処理できる。(能動またはポーリングされた)イベントのソースをパターンで利用できるようになると、残りの受動データソースに関連するイベントについて問い合わせることができる。一実施形態では、能動データと受動データとの間の制約(例えば能動データと受動データとの共通の制約)がクエリ用語に変換される(例えば2つのアサーション間のすべての制約が単一のクエリに変換される)。このクエリ用語は、利用可能なイベントの各々の値(例えば前のクエリで能動的または受動的に取得された値)を利用して、処理中のアサーションで表わされる受動データソースに目的のクエリを構築する。複数のアサーションから複数の利用可能なイベントがある場合、クエリ用語は、そのイベントを適切な制約と併せて利用して最適なクエリを生成する。例えば、能動イベントが時間値を含んでいて、受動イベントが能動イベントの時間値から+/-5分に制限されている場合、その時間枠内にある受動データソース内のイベントを識別するクエリを構築できる。一連の受動イベントでイベントの数が制限されている場合、クエリは、目標値(例えば時間)に最も近いイベントを取得するように構築される。これには、目標値を上回る/下回る値を取得するために2つのクエリを実行する必要があることがある。受動アサーションの一連のイベントが取得されると、そのイベントは、能動であるかのようにパターンにストリーミングされ、これにより、さらに多くの制約処理がトリガーされることがあり、さらに多くの受動データソースを含む可能性がある。 In one embodiment, the pattern of all passive data can be processed using periodic queries to retrieve events (e.g., polled) from one or more sources to trigger updates and simulate the effect of having an active data source. Once a source of events (active or polled) is available in the pattern, the remaining passive data sources can be queried for events related to them. In one embodiment, constraints between the active and passive data (e.g., common constraints between active and passive data) are translated into a query term (e.g., all constraints between two assertions are translated into a single query). This query term uses the values of each of the available events (e.g., values obtained actively or passively in a previous query) to build the desired query on the passive data source represented by the assertion being processed. If there are multiple available events from multiple assertions, the query term uses the events along with the appropriate constraints to generate the optimal query. For example, if an active event contains a time value and a passive event is constrained to +/- 5 minutes from the time value of the active event, a query can be constructed to identify events in the passive data source that fall within that time window. If the number of events is limited in the set of passive events, a query is constructed to retrieve the events closest to a target value (e.g., time). This may require running two queries to retrieve values above/below the target value. Once the set of events for a passive assertion is obtained, the events are streamed into the pattern as if they were active, which may trigger more constraint processing and may involve more passive data sources.

多数のイベントを含んでいる入力ソースデータ161は、テンプレート162内の所定のテンプレートごとに、イベント処理モジュール152に供給されてよい。1つの実施形態では、テンプレート162を予め定義し、後に使用するために永続記憶装置182に記憶してよい。テンプレート162は、視覚的な表記を用いて定義されてよく、テンプレートの処理に使用する機械可読フォーマットの定義(例えば、JSON、XML、バイナリなど)で記憶されよい。各テンプレートは、テンプレートに現れているイベント種類であるイベントをすべて受け取るイベント処理モジュール152によって表される。テンプレートごとに、モジュール152は、制約が定義されていれば、入力ソースデータ161からイベントと一致する可能性があるものをすべて探して、イベントを(アサーションとして)選別してよい。 Input source data 161, which may contain a number of events, may be provided to event processing module 152 for each given template in templates 162. In one embodiment, templates 162 may be predefined and stored in persistent storage 182 for later use. Templates 162 may be defined using a visual notation and stored with a definition of a machine-readable format (e.g., JSON, XML, binary, etc.) used to process the template. Each template is represented by event processing module 152, which receives all events of the event type that appears in the template. For each template, module 152 may filter events (as assertions) from input source data 161 by looking for all possible matches for the event, if constraints are defined.

一致するイベントの各セットに対して、イベント発行モジュール155は、1つ以上の新たなイベントを発行し、それを発行イベント165として記憶装置182に記憶してよい。イベントを発行するとき、テンプレート定義は、発行イベントに含まれるソースイベントからデータを定義できる。さらに、明示的にデータをコピーするために、ソースイベントのいつくかの局面が自動的にコピーされて発行イベントの追跡可能性およびシステム全体の関心事(エンティティの追跡など)が可能になる。1つの実施形態では、発行イベント165は、サーバ150への入力イベントとして機能してよい。 For each set of matching events, the event publishing module 155 may publish one or more new events and store them in the storage device 182 as published events 165. When publishing an event, the template definition may define data from the source events that are included in the published event. Additionally, to explicitly copy data, some aspects of the source events may be automatically copied to enable traceability of the published event and system-wide concerns (e.g., entity tracking). In one embodiment, the published events 165 may serve as input events to the server 150.

解生成モジュール153は、テンプレート(例えばテンプレート162のいずれか)に対して(記憶装置182に記憶されている)一連の実行可能な解163を作成してよい。解163を作成するために、モジュール153は、すべてのイベントから始め、その後制約を徐々に処理して、元の一連のイベントのサブセットである解を作成してよい。制約ごとに、前の制約によって作成された各解がその制約に一致するイベントによって強化される。このプロセスは、いずれか1つの解のイベントを徐々にプルーニングし、実行可能な代わりの解がある場合に新たな解を生成することによって、可能性のあるすべての解の幅優先トラバーサル(または検索)を実行する。制約の種類ごとに、入力解に対して実行可能なターゲットイベントを生成することは、制約固有のロジックである。一連のターゲットイベントが識別されると、入力解および識別されたターゲットイベントから新たな解が生成される。複数セットのターゲットが識別された場合、1つの入力解から複数の解を作成できる。すべての制約が処理されると、新たな一連の解が完成する。各々のこのような解は、そのテンプレート種類に一致するインスタンスを意味する「テンプレートインスタンス」とも呼ばれる。 Solution generation module 153 may create a set of feasible solutions 163 (stored in storage 182) for a template (e.g., any of templates 162). To create solutions 163, module 153 may start with all events and then incrementally process the constraints to create solutions that are subsets of the original set of events. For each constraint, each solution created by the previous constraint is augmented with events that match that constraint. This process performs a breadth-first traversal (or search) of all possible solutions by incrementally pruning the events of any one solution and generating new solutions if there are viable alternative solutions. For each type of constraint, generating feasible target events for an input solution is constraint-specific logic. Once a set of target events is identified, a new solution is generated from the input solution and the identified target events. If multiple sets of targets are identified, multiple solutions can be created from one input solution. Once all constraints have been processed, a new set of solutions is completed. Each such solution is also called a "template instance" to mean an instance that matches that template type.

一致するイベントを含むテンプレートインスタンスがモジュール153によって判断されると、結果処理モジュール154が取るアクション164などのアクションが評価される。アクション164は、事前に決定されて記憶装置182に記憶されてよい。アクションへの入力に対してすべてのアサーションの多重度が満たされた場合、モジュール154は、そのアクションをトリガーしてよい。トリガーされたアクションは、アクションを開始した入力イベントにアクセスできる。以前にトリガーされたアクションが解の更新後にトリガーされていない場合、そのアクションはトリガーされない。そのため、解が一連の多重度と一致し、新たなイベントが届いた場合、つまりもうそうならない場合、以前にトリガーされたアクションはトリガーされない。発行イベントである場合、そのイベントはトリガーされない場合に取り消される。これにより、イベントを含んでいる可能性のあるすべての解からイベントが削除され、それらのテンプレートインスタンスが再評価される。 Once the template instances containing matching events are determined by module 153, an action is evaluated, such as action 164 taken by result processing module 154. Action 164 may be predetermined and stored in storage 182. If all assertion multiplicities are satisfied for the inputs to the action, module 154 may trigger the action. A triggered action has access to the input event that initiated the action. If a previously triggered action has not been triggered since updating the solution, it is not triggered. Thus, if a solution matches a set of multiplicities and a new event arrives, which is no longer the case, a previously triggered action is not triggered. If it is an issue event, the event is cancelled if it is not triggered. This removes the event from all solutions that may contain it and re-evaluates their template instances.

図2は、1つの実施形態によるイベント処理方法を示す流れ図である。プロセス200は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含んでいてよい処理ロジックによって実行されてよい。例えば、プロセス200は、サーバ150、例えばモジュール151~155の一部または全部によって実行されてよい。 FIG. 2 is a flow diagram illustrating a method for processing events according to one embodiment. Process 200 may be performed by processing logic that may include software, hardware, or a combination thereof. For example, process 200 may be performed by server 150, e.g., some or all of modules 151-155.

図2を参照すると、動作201で、処理ロジックは、1つ以上のイベントのイベントデータを含む入力ソースデータを受信する。動作202で、処理ロジックは、イベントデータと一致する1つ以上のイベント定義を選択する。動作203では、一致するイベント定義ごとに、処理ロジックは、イベント定義をテンプレートに入力して一連のイベントを生成する。テンプレートは、多数のアサーションを含み、イベント定義をアサーションの1つとして有し、各アサーションが制約を含んでいる。動作204で、処理ロジックは、アサーションの制約を徐々に処理して、一連のイベントのサブセットである1つ以上の解を作成する。動作205では、各制約および各解について、処理ロジックは、その解に対して実行可能な一連のターゲットイベントを識別し、解および識別した一連のターゲットイベントに基づいて新たな解を作成し、それによって一連の新たな解を作成する。 Referring to FIG. 2, in operation 201, processing logic receives input source data including event data for one or more events. In operation 202, processing logic selects one or more event definitions that match the event data. In operation 203, for each matching event definition, processing logic inputs the event definition into a template to generate a set of events. The template includes a number of assertions, with the event definition as one of the assertions, and each assertion includes a constraint. In operation 204, processing logic incrementally processes the constraints of the assertions to create one or more solutions that are subsets of the set of events. In operation 205, for each constraint and each solution, processing logic identifies a set of target events that are executable for that solution and creates a new solution based on the solution and the identified set of target events, thereby creating a set of new solutions.

図3は、別の実施形態によるイベント処理方法を示す流れ図である。プロセス300は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含んでいてよい処理ロジックによって実行されてよい。例えば、プロセス300は、サーバ150、例えばモジュール151~155の一部または全部によって実行されてよい。 FIG. 3 is a flow diagram illustrating a method for processing events according to another embodiment. Process 300 may be performed by processing logic that may include software, hardware, or a combination thereof. For example, process 300 may be performed by server 150, e.g., some or all of modules 151-155.

図3を参照すると、動作301で、処理ロジックは、(イベントを含む)入力ソースデータを、例えば外部システム171から直接受信するか、新たなデータを外部システム171からポーリングすることによって受信する。前述したように、外部システム171は、入力ソースデータをまとめて提供するマシンのクラスタであってよい。入力ソースデータが受信されると、動作302で、処理ロジックは、入力ソースデータをイベント定義と照合し、データが照合対象のパターンに表す役割を判断する。動作303で、処理ロジックは、入力ソースデータがイベント定義と一致しているか否かを判断する。1つのデータが複数のイベント定義と一致する可能性があるため、複数のテンプレート種類の処理要素に転送される。データと一致するイベント定義がない場合、動作304でデータは、今後作成されるイベント定義と一致する可能性があるためにアーカイブするか、全体の要件に基づいて破棄することができる。そうではない場合、動作305で、イベント種類ごとに、処理ロジックは、イベント種類をテンプレート定義内のアサーションとして有する関連するテンプレート種類の処理要素(1103)にデータを転送する。テンプレート種類のイベントを受信すると、動作306で、処理ロジックは、既知のイベントに対する一連の解を更新する。この更新は、遅延後、または待ち時間およびスループットの要件に基づいて十分な数の新たなイベントを受信したときに、すぐに実行できる。解は、テンプレート定義のアサーションと集合的に一致し、そのアサーション間の制約をすべて満たしているテンプレート処理要素(モジュール、ユニット、またはロジックとも呼ばれる)に送信されるすべてのイベントのサブセットである。アサーション内の必要なイベント数は、解が「一致する」か否かの二次条件であり、解で考慮されるイベントを制限するものではない。各テンプレート種類のテンプレート処理要素は、イベントが既知のものであれば、更新後の一連の解を作成する。各々の解を別々に処理し、動作307で、処理ロジックは、結果に入力されるすべてのアサーションが満たされたか否かを検査して判断する。満たされていて結果が同等のイベントを発行していない場合(動作308)、動作309で、処理ロジックは、そのイベントを結果として発行する。そうではない場合、処理ロジックは動作310に進む。1つの実施形態では、イベントの発行には、結果の定義を検討してソースイベントからどのデータ要素を発行イベントにコピーすべきかを判断し、システムが判断したデータを発行イベントに追加し、その後、そのイベントを送信するように要求しているいずれかの外部システム(例えばシステム171)に送信し、かつ/またはそのイベントを新たに受信したイベントとしてサーバ150自体に送信する(動作301)ことが含まれる。動作309に続いて、影響を受けたあらゆるテンプレート処理要素が存続し、動作310で、処理ロジックは、状態を更新して、受信され発行されたイベントをすべて記録するか追跡する。各解の状態は、他の解とは独立して追跡され保持されてよく、状態の更新は、計算処理の最中または終了時に連続して起きてよく、状態の更新は、スループットまたは待ち時間の要件を満たすために1つのイベントまたは少数のイベントを処理する間に起きてもよいことに注意されたい。 3, in operation 301, the processing logic receives input source data (including events), for example, directly from the external system 171 or by polling new data from the external system 171. As previously described, the external system 171 may be a cluster of machines that collectively provide the input source data. Once the input source data is received, in operation 302, the processing logic matches the input source data against the event definitions to determine the role that the data represents in the pattern being matched. In operation 303, the processing logic determines whether the input source data matches an event definition. Since one piece of data may match multiple event definitions, it is forwarded to multiple template type processing elements. If no event definition matches the data, in operation 304, the data can be archived for possible matches with future event definitions or discarded based on overall requirements. Otherwise, in operation 305, for each event type, the processing logic forwards the data to the processing element (1103) of the associated template type that has the event type as an assertion in the template definition. Upon receiving an event of a template type, processing logic updates the set of solutions for known events in operation 306. This update can be performed after a delay or immediately when a sufficient number of new events are received based on latency and throughput requirements. A solution is a subset of all events sent to the template processing element (also called a module, unit, or logic) that collectively match the assertions of the template definition and satisfy all the constraints between the assertions. The required number of events in an assertion is a secondary condition for whether a solution "matches" and does not limit the events considered in the solution. Each template processing element of the template type creates an updated set of solutions if the event is known. Each solution is processed separately, and processing logic checks to determine whether all assertions that are input to the result are satisfied in operation 307. If they are satisfied and the result does not emit an equivalent event (operation 308), processing logic emits the event as a result in operation 309. If not, processing logic proceeds to operation 310. In one embodiment, publishing an event involves reviewing the result definition to determine which data elements from the source event should be copied to the published event, adding the data determined by the system to the published event, and then sending the event to any external systems (e.g., system 171) that have requested it to be sent, and/or sending the event as a newly received event to server 150 itself (operation 301). Following operation 309, any affected template processing elements persist, and in operation 310, the processing logic updates state to record or track all received and published events. Note that the state of each solution may be tracked and maintained independently of other solutions, state updates may occur continuously during or at the end of computation processing, and state updates may occur while processing one event or a small number of events to meet throughput or latency requirements.

テンプレート表記
以下の節では、使用する表記、およびシステム(例えばシステム100)内でテンプレートを定義するのに利用可能なオプションを定義する。図4A~4Gは、1つの実施形態によるテンプレート表記を示す図である。
Template Notation The following sections define the notation used and the options available for defining templates within a system, such as system 100. Figures 4A-4G are diagrams illustrating template notation according to one embodiment.

ソースイベント/アサーション
図4Aを参照すると、アサーションと呼ばれるイベントがテンプレート上に、例えば楕円形で、イベント種類(例えば火災警報、煙)を示すラベルと共に現れる。定数値または構成値など、他の種類のアサーションがサポートされている。イベントは、システムの説明で定義したように、システムに提供された入力データから抽出される。イベント定義が変更されれば、抽出された一連のイベントは、アーカイブされた生データから更新される。このような変更により、新たに一致する新たなイベントを発行したり、変更後の定義に一致しなくなったが以前に一致していたイベントを削除したりすることができる。
Source Events/Assertions Referring to Figure 4A, events called assertions appear on the template, e.g., as ovals, with a label indicating the event type (e.g., fire alarm, smoke). Other types of assertions are supported, such as constant values or configuration values. Events are extracted from the input data provided to the system, as defined in the system description. If an event definition is changed, the extracted set of events is updated from the archived raw data. Such changes may result in the publication of new matching events or the removal of previously matching events that no longer match the changed definition.

ソースイベントは、そのようなイベントの最小数と最大数が1つのテンプレートインスタンス(適合/一致イベントの1セット)に一致することを示す多重度の仕様を有することができる。例えば、送金を検索するテンプレートが、引き出しの後に預け入れている一回分を検索し、別のテンプレートが、同じ街への旅行を予約している特定のグループから少なくとも3人を検索する。 A source event can have a multiplicity specification that indicates the minimum and maximum number of such events that match one template instance (one set of matching/conforming events). For example, a template that searches for money transfers might search for a withdrawal followed by a deposit, while another template might search for at least three people from a particular group who have booked a trip to the same city.

発行イベント/結果/アクション
図4Bを参照すると、本開示の態様は、テンプレートが想定した条件を表すイベントを発行することを含んでいる。発行イベントは、テンプレートのアクションまたは結果の一種であってよく、例えば以下に示したテキスト名ラベルを付した角の丸い長方形で表されてよく、各ソースイベントまたはグループにつながっている。その他の結果は、アラートまたは特定のプログラミングロジックの呼び出しを含んでいることがある。各ソースイベントは、例えば線で結果につながっている。1つの実施形態では、イベントを発行する各結果は、ソースイベントから発行イベントへのデータマッピングを定義するマップを含んでいてよい。1つの実施形態では、すべてのソースイベントの時間範囲が、ソーステンプレートインスタンスと同じように発行イベントに自動的に記録される。例えば、各イベントに時間が記録されている場合、システムは、発行イベントにすべての入力イベントの最短時間および/または最長時間を記録してよい。テンプレート作成者は、ソースイベントから選択したフィールドを発行イベントに伝播するように指定できる。テンプレート上にさらに多くのソースイベントがあっても、つながっている各ソースイベントにイベントが一致すれば直ちにイベントが発行される。そのため、これにより、保証されている場合には、テンプレートの部分一致でイベントを引き続き発行できるようになる。例えば、プロセスの重要な一段階が検出された場合、検出される可能性のある他の工程がプロセス内にあっても、テンプレートはイベントの発行を望むことがある。このような部分一致は、視覚化、リスク管理、および/またはアラートを推進するのに使用できる。
Emission Events/Results/Actions Referring to FIG. 4B, aspects of the disclosure include issuing events that represent conditions assumed by the template. An issue event may be a type of template action or result, e.g., represented by a rounded rectangle with a text name label as shown below, and is connected to each source event or group. Other results may include alerts or invocation of specific programming logic. Each source event is connected to a result, e.g., by a line. In one embodiment, each result that issues an event may include a map that defines a data mapping from the source event to the issue event. In one embodiment, the time range of all source events is automatically recorded in the issue event as in the source template instance. For example, if each event is timed, the system may record the minimum and/or maximum time of all input events in the issue event. The template creator can specify that selected fields from the source events are propagated to the issue event. Even if there are more source events on the template, an event is issued as soon as it matches each connected source event. This therefore allows events to still be issued on partial template matches, if warranted. For example, if a critical step in a process is detected, the template may want to issue an event even though there are other steps in the process that may also be detected. Such partial matches can be used to drive visualization, risk management, and/or alerts.

時間面
図4Cを参照すると、いくつかの実施形態では、テンプレートの主な制約は、イベント時間の関係制御である。時間的制約があると、作成者は、特定の期間内に1つのイベントに続いて別のイベントがある必要があることを簡単に示すことができたり、特定の期間内に相互に一定の許容範囲内にあることができたりする。このような制約は、データがシステムによって処理または記録される時間ではなく、現実世界のイベントの時間に当てはまることがある。時間的な制約は、Bの15~20分後にAが来る必要がある、またはBの10+/-2分後にAが来る必要があるなど、曖昧な一致パラメータを含むことができる。時間範囲に加えて、時間的制約は、時間差が指定期間より長いか短いか(4分未満、または少なくとも5分など)を要求できる。時間的制約は、例えば、線の上のテキストラベルとして何らかの時間制約が書かれた方向付の矢印で表されてよい。イベントは、2つ以上の時間値(航空券の予約時間、出発時間、および到着時間など)を有することができ、その場合、時間フィールド名は、制約テキストに、「到着<出発」または「予約+24h<出発」のように表示される。
Time Plane With reference to FIG. 4C, in some embodiments, the primary constraint of the template is the relationship control of event times. With time constraints, the author can simply indicate that one event must follow another within a certain period of time, or within a certain tolerance of each other within a certain period of time. Such constraints may apply to the real-world times of events, rather than the time at which the data is processed or recorded by the system. Time constraints can include fuzzy matching parameters, such as A must come 15-20 minutes after B, or A must come 10+/-2 minutes after B. In addition to time ranges, time constraints can require that the time difference be greater or less than a specified period (such as less than 4 minutes, or at least 5 minutes). Time constraints may be represented, for example, by a directional arrow with some time constraint as a text label on the line. An event can have more than one time value (such as airline booking time, departure time, and arrival time), in which case the time field name appears in the constraint text, such as "arrival<departure" or "booking+24h<departure".

関係面
図4Dを参照すると、関係制約とは、例えば2つのイベントが2つのフィールド間の特定の関係の値を有する必要があることを示すものであってよい。データフィールドは、イベント定義に一致する元のデータ項目から来るものである。この制約は、トランザクションを同じアカウントに適用すること、同じエンティティに由来するか同じエンティティを参照すること(=)、金額が~より大きい(>)、~より小さい(<)、~以上(>=)、~以下(<=)であることなどを確実にするのに有用である。関係制約は、例えば、矢印付きの線、フィールド名、および「name=name」などの関係演算子で表されてよく、矢印の原点からの第1のフィールド名と、矢印の頭からの第2のフィールド名とで矢印の方向に読み取られる(以下に示す通り)。関係制約は、互換性のある種類の両方のフィールドで、文字列、数値、時間データ、一意のID、および地理データに対して操作できる。
Relationship Aspects Referring to FIG. 4D, a relationship constraint may indicate, for example, that two events must have a particular relationship value between two fields. The data fields come from the original data items that match the event definition. The constraints are useful to ensure that transactions apply to the same account, originate from or refer to the same entity (=), that amounts are greater than (>), less than (<), greater than or equal to (>=), less than or equal to (<=), etc. A relationship constraint may be represented, for example, by a line with an arrow, field names, and a relational operator such as "name=name", read in the direction of the arrow with the first field name from the origin of the arrow and the second field name from the head of the arrow (as shown below). Relationship constraints can operate on strings, numbers, time data, unique IDs, and geographic data, with both fields of compatible type.

集計
集計制約は、一連のソースイベントに対して計算を実行し、それを閾値と比較する。閾値は、定数とするか、別の一連のソースイベントまたは同じ一連のソースイベントからの計算値とすることができる。例として、30日間で10,000ドルを超える送金の合計を検索したり、同じ購入者、または同じ組織またはセルに関連付けられた購入者に対して販売された集計金額200ポンドの肥料を検索したりすることが挙げられる。集計制約は、例えば、(図4Eに示したように)主要な計算(例えば合計、平均、最低、最高)と、閾値または第2の計算のいずれかを示す記号を含む線で表されてよい。
Aggregation An aggregation constraint performs a calculation on a set of source events and compares it to a threshold. The threshold can be a constant or a calculated value from another set of source events or the same set of source events. Examples include finding a total of remittances over $10,000 in a 30 day period, or finding an aggregate amount of 200 pounds of fertilizer sold to the same buyer, or buyers associated with the same organization or cell. An aggregation constraint may be represented, for example, as a line containing a primary calculation (e.g., sum, average, minimum, maximum) and a symbol indicating either a threshold or a secondary calculation (as shown in FIG. 4E).

分割
分割制約は、フィールド値に基づいて、一致する可能性のある一連のイベントをサブセットに分割する。1つの実施形態では、フィールド値は、人、場所、または物の識別子であってよい。別の実施形態では、フィールド値は、ドル金額または比較される他の計測などの数量値であってよい。これは、フィールド値の異なるイベントが同じテンプレートの解に組み入れられないようにするために使用される。例えば、制限のある国への旅行が制限に一致するか否かを検討する場合、分割制約を使用して、各解が一人の旅行のみを検討するようにする。分割制約は一般に、1つのアサーションから、それが1セットのイベントに当てはまることを示す同じアサーションまでであり、例えば、図4Fに示すように、「field_name par field_name」のように、フィールド名と演算子としての「par」とを含む行で表されて、そのようなイベントすべてが、同じテンプレートインスタンス(解)内で考慮される同じ名前を有している必要があることを示すとしてよい。
Partitioning A partitioning constraint partitions a set of potentially matching events into subsets based on a field value. In one embodiment, the field value may be an identifier for a person, place, or thing. In another embodiment, the field value may be a quantitative value, such as a dollar amount or other measurement to be compared. This is used to ensure that events with different field values are not incorporated into the same template solution. For example, when considering whether travel to a restricted country matches a restriction, a partitioning constraint is used to ensure that each solution only considers travel by one person. A partitioning constraint is generally from an assertion to the same assertion indicating that it applies to a set of events, and may be represented by a line containing the field name and "par" as an operator, such as "field_name par field_name", as shown in FIG. 4F, indicating that all such events must have the same name to be considered within the same template instance (solution).

論理的な組み合わせ
さらに複雑な状況をサポートするために、条件(ソースイベント)を組み合わせるためのグループを使用できる。グループを満たすためには、そのグループに入っている全イベントを満たす必要がある。1つのアクションが複数の入力を有する場合、その入力のいずれかがそのアクションをトリガーできる。そのため、各グループは、「and」条件のように機能し、複数の入力行は、「or」条件として機能する。グループは、例えば、図4Gに示すように、ソースイベント(例えば燃料油、肥料、起爆剤など)を囲む楕円で表される。
Logical Combinations To support more complex situations, groups can be used to combine conditions (source events). For a group to be satisfied, all events contained in the group must be satisfied. If an action has multiple inputs, any of the inputs can trigger the action. Thus, each group acts like an "and" condition, and multiple input rows act as "or" conditions. Groups are represented, for example, by ellipses surrounding source events (e.g., fuel oil, fertilizer, explosives, etc.) as shown in FIG. 4G.

テンプレート例
図5A~図5Dは、1つの実施形態によるテンプレート例を示す図である。サンプルテンプレートは、文脈上の表記を示すために提供されている。例えば、図5Aでは、サンプルテンプレート(例えばテンプレート1)は、妨害策略を検出するために定義されてよい。図5Bでは、サンプルテンプレート(例えばテンプレート2)は、妨害発行イベントおよびカスタム制約を使用する攻撃戦略であってよい。図5Cでは、サンプルテンプレート(例えばテンプレート3)は、2セットの相関イベント間の集計であってよい。図5Dでは、サンプルテンプレート(例えばテンプレート4)は、さらに複雑な条件に対してAnd/Orを使用するものであってよい。
5A-5D are diagrams illustrating example templates according to one embodiment. The sample templates are provided to illustrate contextual notations. For example, in FIG. 5A, a sample template (e.g., Template 1) may be defined to detect jamming tactics. In FIG. 5B, a sample template (e.g., Template 2) may be an attack strategy using jamming issue events and custom constraints. In FIG. 5C, a sample template (e.g., Template 3) may be an aggregation between two sets of correlated events. In FIG. 5D, a sample template (e.g., Template 4) may use And/Or for more complex conditions.

表現
図6Aおよび図6Bは、1つの実施形態によるJavaScript Object Notation(JSON)でのテンプレートの表現を示す図である。図6Aおよび図6Bは、表記の1つの永続的な表現として、前述の例の1つをJSONで表現したものを記述している。表記は、XMLまたはRDFでも表されてよい。
Representation Figures 6A and 6B are diagrams illustrating a representation of a template in JavaScript Object Notation (JSON) according to one embodiment. Figures 6A and 6B describe a JSON representation of one of the previous examples as a persistent representation of one of the expressions. The expression may also be represented in XML or RDF.

テンプレート一致/制約解決/解フィルタリング
本開示の態様は、テンプレート一致を含む。例えば、テンプレート定義のアサーションの1つを満たすイベントのセットをEとし、それらのアサーションに対する全制約のセットをCとすると、テンプレート一致の成分は、各Cのターゲットアサーションにイベントがある制約のセットCを満たすEのサブセットをすべて作成する。アサーションがオプションである場合、イベントがある場合もない場合もあり、ない場合は、有効な解のために該当する制約を満たす必要はないことに注意されたい。そのため、解は、所定の全アサーションのサブセットを有することができ、それらのアサーションのいずれかをターゲットとして有する全制約を満たしていれば、依然として解であるとみなすことができる。各々のこのような解がシステムのテンプレートインスタンスとなる。各インスタンスは、新たなイベントを受信すると、持続され、追跡され、既知の一連のイベントに適用できなくなれば削除されてよい(以下にさらに詳細に説明するように、重要なイベントが取り消された場合に最も一般的である)。
Template Matching/Constraint Solving/Solution Filtering Aspects of the present disclosure include template matching. For example, let E be the set of events that satisfy one of the assertions in the template definition, and let C be the set of all constraints on those assertions. The template matching component creates all subsets of E that satisfy the set of constraints C where the target assertion of each C has an event. Note that if an assertion is optional, it may or may not have an event, and if it does not, it does not need to satisfy the corresponding constraint for a valid solution. Thus, a solution may have a subset of all the assertions given and still be considered a solution if it satisfies all the constraints that have any of those assertions as a target. Each such solution becomes a template instance of the system. Each instance may be persisted and tracked as it receives new events, and may be deleted if it no longer applies to the known set of events (most commonly when a significant event is cancelled, as explained in more detail below).

1つの実施形態では、Eのサブセットを作成する方法は、以下の通りである:
1)各制約の前に、分割制約のソースおよび分割制約からのソースをターゲットとする制約を有する制約が来るように、分割制約を順序付けする。言い換えれば、全制約(source->target)を、その方向順序に基づいた有向グラフ順序の分割制約として扱う。
2)分割制約のイベントサブセットを順に生成する:
a.分割制約のソースイベントの場合、制約で参照されるフィールドに対する値が同じセットにイベントを分割する。
b.分割制約のターゲットに由来するすべての非分割制約を、分割制約が発生するまで順に処理する。
3)残りの未処理の非分割制約をすべて処理する。
In one embodiment, the method for creating a subset of E is as follows:
1) Order the split constraints such that each constraint is preceded by a constraint that has a source of the split constraint and a constraint that targets a source from the split constraint. In other words, treat all constraints (source->target) as split constraints in a directed graph order based on their direction order.
2) Generate the event subsets of the partition constraints in order:
For the source event of a split constraint, split the event into sets with the same values for the fields referenced in the constraint.
b) Iterate through all non-split constraints that stem from the target of the split constraint until a split constraint is encountered.
3) Process all remaining unprocessed non-split constraints.

制約は、前の制約によって検出されたすべてのイベントサブセットを入力として受信し、問題となる制約も満たしているサブセットのサブセットを作成することによって処理される。そのため、例として、制約に3つのサブセットが提示され、サブセット1と3がその制約を満たしているが、その制約を満たすためにサブセット2を2つのサブセットに分割する必要があることが検出された場合、次の制約への入力として4つのサブセットを作成する。このプロセスは、幅優先検索にたとえることができるが、すべての解が作成されるとすると、単一の解を探すという通常の意味での検索ではない。この場合、すべての実行可能な解が識別される。 Constraints are processed by taking as input all event subsets found by the previous constraint, and creating a subset of subsets that also satisfy the constraint in question. So, as an example, if a constraint presents three subsets, and it is found that subsets 1 and 3 satisfy the constraint, but subset 2 needs to be split into two subsets to satisfy the constraint, then create four subsets as input to the next constraint. This process can be likened to a breadth-first search, but it is not a search in the usual sense of looking for a single solution, given that all solutions are created. In this case, all feasible solutions are identified.

図7は、1つの実施形態による解を生成する方法を示す流れ図である。プロセス700は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含んでいてよい処理ロジックによって実行されてよい。例えば、プロセス700は、サーバ150、例えば解生成モジュール153によって実行されてよい。 FIG. 7 is a flow diagram illustrating a method for generating a solution according to one embodiment. Process 700 may be performed by processing logic that may include software, hardware, or a combination thereof. For example, process 700 may be performed by server 150, such as solution generation module 153.

図7を参照すると、動作701で、処理ロジックは、制約をソートする。前述したように、分割制約は、各制約の前に、分割制約のソースおよび分割制約からのソースをターゲットとする制約を有するいずれかの制約が来るように順序付けされよい。言い換えれば、全制約(source->target)を、その方向順序に基づいた有向グラフ順序の分割制約として扱う。動作702で、処理ロジックは、すべてのイベントを含む解から始め、その後、制約を徐々に処理して、元の一連のイベントのサブセットである解を作成する。つまり、動作703~705では、各制約について、処理ロジックは、前の制約によって作成された各解を、その制約に一致するイベントで増強する。つまり、処理ロジックは、制約を独立して満たす一連のターゲットイベントを収集する。このプロセスは、いずれか1つの解内のイベントを徐々にプルーニングし、代替の実行可能な解がある場合に新たな解を作成することにより、すべての可能な解の幅優先トラバーサル(または検索)を実行する。制約の種類ごとに、入力解に対して実行可能なターゲットイベントを作成するのは、制約固有のロジックである。一連のターゲットイベントが識別されると、入力解および識別されたターゲットイベントから新たな解が作成される。したがって、動作706で、処理ロジックは、ターゲットイベントのセットごとに入力解を新たな解に置き換える。1つの実施形態では、複数セットのターゲットイベントが識別された場合、1つの入力解から複数の解を作成できる。制約すべて処理されると、新たな一連の解が完成する。各々のこのような解は、「テンプレートインスタンス」とも呼ばれ、そのテンプレート種類と一致するインスタンスを意味する。動作707で、処理ロジックは、更新する解が他にあるか否かを判断する。あれば、処理ロジックは動作704に進む。なければ、処理ロジックは動作708に進み、処理ロジックは、他に制約があるか否かを判断する。あれば、処理ロジックはブロック703に進む。なければ、処理ロジックは動作709に進み、一連の実行可能な解(例えば図1Bの解163)がテンプレートに対して作成される。 7, at operation 701, processing logic sorts the constraints. As previously described, the partition constraints may be ordered such that each constraint is preceded by any constraints that have a source of the partition constraint and a constraint that targets a source from the partition constraint. In other words, all constraints (source->target) are treated as partition constraints in a directed graph order based on their direction order. At operation 702, processing logic starts with a solution that includes all events, and then progressively processes the constraints to create solutions that are subsets of the original set of events. That is, at operations 703-705, for each constraint, processing logic augments each solution created by the previous constraint with events that match that constraint. That is, processing logic collects a set of target events that independently satisfy the constraint. This process performs a breadth-first traversal (or search) of all possible solutions by progressively pruning events in any one solution and creating new solutions if there are alternative viable solutions. For each type of constraint, it is constraint-specific logic that creates executable target events for the input solution. Once a set of target events is identified, a new solution is created from the input solution and the identified target events. Thus, at operation 706, processing logic replaces the input solution with a new solution for each set of target events. In one embodiment, multiple solutions can be created from an input solution if multiple sets of target events are identified. Once all constraints have been processed, a new set of solutions is completed. Each such solution is also called a "template instance," meaning an instance that matches that template type. At operation 707, processing logic determines whether there are any more solutions to update. If so, processing logic proceeds to operation 704. If not, processing logic proceeds to operation 708, where processing logic determines whether there are any more constraints. If so, processing logic proceeds to block 703. If not, processing logic proceeds to operation 709, where a set of executable solutions (e.g., solution 163 of FIG. 1B) is created for the template.

別の実施形態では、Eのサブセットを作成する方法は以下の通りである:
1)等価制約が最初で、同じアサーション間の他の制約が続くように、非分割制約を関連するアサーションごとにグループ化する。それぞれをステージと呼ぶ。
2)階層データ構造(例えば生の入力イベントとして葉を持つツリー)を形成し、単一のステージで頂点に達するようにステージを順序付けする。これにより、いずれかの入力アサーションを使用して、生のイベントが1つのステージのみに入力され、処理された結果のみが他のステージに入力されることを確実にする。ステージの識別および制約の順序付けは、イベントが受信されるか、前処理されてテンプレート定義とともに配信されるため、テンプレートが処理用にインスタンス化されるときに起こるとしてよい。
3)各ステージの各アサーションは、各入力から各イベントを受信し、制約を満たすすべての有効なイベントのペアを作成する順序で処理される。制約がステージ内の別の制約に続いている場合、処理されたペアのセットを受信し、そのペアをその制約に対しても有効なペアに対してフィルタリングする。
4)これにより、テンプレートで制約されたアサーションごとに1つのイベントを有する部分解のストリームができる。
5)分割制約のセットを使用して、各部分解の分割キーを形成する。
6)アサーションの最小多重度が>1である場合、同じ分割キーのすべての部分解がマージされて完全解を形成し、これがすべてのアサーションの多重度制限と比較され、有効な解として受け入れられるか拒否される。有効な解が見つかると、テンプレートで定義されている通りにイベント発行を行う。
7)すべてのアサーションの最小多重度が<=1である場合、部分解とイベント発行とを組み合わせるのは、以前に発行されていないイベントデータを含む新たな部分解を受信したときに、以前に発行された結果を追加イベントで増分的に変更することによって組み合わせることができる。
8)いずれかの分割キーに対して有効な解が見つかり、包含している無効な解が後に見つかった場合(有効な解にすべてのイベントが含まれているもの)、撤回が発行されて、以前の有効な解は有効ではなく、そのイベントに依存するどの解も疑わしく、再評価する必要があることを示す。
9)最小多重度が0である場合、処理は、必須制約とオプション制約に分割され、必須制約からの部分解はいずれも、組み合わせと発行に対してオプション制約と直接の両方で処理される。必須制約のみからの結果を発行した後にオプションのアサーションが一致した場合、撤回となる可能性がある。
In another embodiment, a method for creating a subset of E is as follows:
1) Group non-split constraints by related assertions, with equality constraints first, followed by other constraints between the same assertions, each of which is called a stage.
2) Form a hierarchical data structure (e.g. a tree with leaves as raw input events) and order the stages to culminate in a single stage, using any input assertions to ensure that raw events only enter one stage and only processed results enter other stages. The identification of stages and ordering of constraints may happen when the template is instantiated for processing, as events are received or pre-processed and delivered along with the template definition.
3) Each assertion in each stage is processed in order to receive each event from each input and create all valid event pairs that satisfy the constraint. If the constraint follows another constraint in the stage, it receives the set of processed pairs and filters them against those that are also valid for that constraint.
4) This results in a stream of partial solutions with one event for each assertion constrained in the template.
5) Use the set of partition constraints to form partition keys for each partial solution.
6) If the minimum multiplicity of an assertion is >1, then all partial solutions for the same partition key are merged to form a complete solution, which is compared against the multiplicity constraints of all assertions and either accepted or rejected as a valid solution. If a valid solution is found, it fires an event as defined in the template.
7) If the minimum multiplicity of all assertions is <= 1, partial solutions and event emissions can be combined by incrementally modifying previously emitted results with additional events when a new partial solution containing previously unemitted event data is received.
8) If a valid solution is found for any partition key and a containing invalid solution is later found (one in which all events are included in the valid solution), a retract is issued to indicate that the previous valid solution is no longer valid and that any solutions that depend on that event are suspect and need to be reevaluated.
9) If the minimum multiplicity is 0, the processing is split into required and optional constraints, and any partial solutions from the required constraints are processed with both the optional constraints and directly for combination and emission. If an optional assertion matches after emitting the results from the required constraints only, it may result in a retraction.

この手法で、図8は、別の実施形態による解を生成する方法を示す流れ図である。プロセス800は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含んでいてよい処理ロジックによって実行されてよい。例えば、プロセス800は、サーバ150、例えば解生成モジュール150によって実行されてよい。 In this manner, FIG. 8 is a flow diagram illustrating a method for generating a solution according to another embodiment. Process 800 may be performed by processing logic that may include software, hardware, or a combination thereof. For example, process 800 may be performed by server 150, e.g., solution generation module 150.

動作801および802では、処理ロジックは、イベントが到着して、順序付けおよびステージへのグループ化によって確立された制約処理パイプラインに供給されると、継続的にイベントを処理する。動作803で、処理ロジックは、受信した各イベントを、そのイベント種類を有する各アサーションの部分解に置いてよい。これにより、制約が部分解を入力および出力として使用できるようになる。各制約は、ステージの最初の制約である場合、制約フィールド内の観測値ごとに、その入力ごとに一致する部分解のリストを保持する。これにより、新たな入力を受信したときに、両方の入力を組み合わせた新たな部分解を作成することが可能になる。例えば:ある制約が、フィールド識別子(id)を有するアサーションAを、フィールドperson_idを有するアサーションBと等しくするように制約する。A.idおよびB.person_idで受信した各値について、その値を有する部分解を追跡する。Aを含む新たな部分解が特定の値で到着したとき、同じ値を有するB.person_idを含むすべての一致する部分解と組み合わせることができる。部分解が何らかの形式の等価性に基づいて統合されると、その同じステージ内の残りの制約は、部分解のストリームを、その制約も満たしているものに対してフィルタリングする必要があるだけである。動作804は、ステージごとのこの処理と、テンプレートで定義されているように、ステージ内での1つの制約から次の制約へ、および1つのステージから次のステージへの部分解の供給とを反映する。動作804で、処理ロジックは、オプションステージがあるか否かを判断する。オプションステージがあれば、部分解のストリームは、分割されて直接動作806と動作807に進む。オプションステージは、必須ステージと同じように処理されてよいが、各ステージの出力が動作807にも次のオプションステージにも送られる点が異なる。1つの実施形態では、オプションステージは、新たな入力が1つのステージのみで処理され、その後、前のステージから受信した部分解に結合されるように、必須ステージと同じように順序付けされる(動作806)。次の制約処理の部分解は、分割フィールドから構築された分割キーに基づいて分割される。キーは、テンプレート内の各分割フィールドの値の部分解内の値から形成されてよい(動作807)。異なる分割キーを有する部分解は、同じ解には結合されない。動作808では、処理ロジックは、最小多重度が1より大きいか否かを判断する。最小多重度>1のアサーションがなければ、部分解のストリームを結果処理に直接供給でき、新たな入力として増分的に実行される結果の結合は、特定の分割キーに対する前の結果に追加される必要がある(動作809)。このような多重度がテンプレートに存在する場合、部分解は、結合され、有効または無効な解が見つかるまで保持されてよい(動作810)。無効な解が最初に見つかった場合、その分割キーに対して結果はトリガーされない。分割キーに対して有効な解が最初に見つかった場合、結果はトリガーされてよい。無効な解が有効な解の後に見つかった場合、トリガーされた結果はトリガーされない(以下にさらに詳細に説明するように、イベント発行の場合、この結果は撤回になる)。 In operations 801 and 802, the processing logic continues to process events as they arrive and feed into the constraint processing pipeline established by ordering and grouping into stages. In operation 803, the processing logic may place each received event into a partial solution for each assertion with that event type. This allows constraints to use partial solutions as inputs and outputs. Each constraint, if it is the first constraint of a stage, keeps a list of matching partial solutions for each of its inputs for each observed value in the constraint field. This allows it to create a new partial solution that combines both inputs when a new input is received. For example: A constraint constrains assertion A with field identifier (id) to be equal to assertion B with field person_id. For each value received for A.id and B.person_id, keep track of the partial solutions with that value. When a new partial solution containing A arrives with a particular value, it can be combined with all matching partial solutions containing B.person_id with the same value. Once the partial solutions have been consolidated based on some form of equality, the remaining constraints in that same stage only need to filter the stream of partial solutions to those that also satisfy the constraint. Operation 804 reflects this stage-by-stage processing and feeding the partial solutions from one constraint to the next within a stage and from one stage to the next, as defined in the template. At operation 804, the processing logic determines whether there is an optional stage. If there is an optional stage, the stream of partial solutions is split and proceeds directly to operations 806 and 807. The optional stages may be processed in the same manner as the required stages, except that the output of each stage is sent to both operation 807 and the next optional stage. In one embodiment, the optional stages are ordered in the same manner as the required stages, such that new inputs are processed by only one stage and then combined with the partial solution received from the previous stage (operation 806). The partial solutions for the next constraint processing are split based on a split key constructed from the split fields. The key may be formed from the values in the partial solution for each split field value in the template (operation 807). Partial solutions with different split keys are not combined into the same solution. In operation 808, processing logic determines whether the minimum multiplicity is greater than 1. In the absence of the assertion of minimum multiplicity > 1, the stream of partial solutions can be fed directly to the result processing, and the combination of results performed incrementally as new inputs need to be added to the previous result for a particular split key (operation 809). If such multiplicity is present in the template, the partial solutions may be combined and held until a valid or invalid solution is found (operation 810). If an invalid solution is found first, the result is not triggered for that split key. If a valid solution is found first for a split key, the result may be triggered. If an invalid solution is found after a valid solution, the triggered result is not triggered (in the case of event publishing, this result is retracted, as described in more detail below).

イベント発行およびアクション
一致するイベントを含むテンプレートインスタンスが判断されると(上記のように)、実行すべきアクション(例えば図1Bのアクション164)が評価される。すべてのアサーションの多重度がアクションへの入力に対して満たされていれば、そのアクションはトリガーされてよい。トリガーされたアクションは、アクションを開始した入力イベントにアクセスできる。以前にトリガーされたアクションが解の更新後にトリガーされていない場合、そのアクションはトリガーされない。そのため、解が一連の多重度と一致し、新たなイベントが到着すれば、つまりもうそうならない場合、以前にトリガーされたアクションはトリガーされない。発行イベントの場合、そのイベントは、トリガーされないと撤回される。これにより、イベントを含んでいる可能性のあるすべての解からイベントが削除され、それらのテンプレートインスタンスが再評価される。
Event Emission and Actions Once the template instances containing matching events have been determined (as described above), the action to be executed (e.g., action 164 in FIG. 1B) is evaluated. If all assertion multiplicities are satisfied for the input to the action, the action may be triggered. A triggered action has access to the input event that initiated the action. If a previously triggered action has not been triggered since updating the solution, the action is not triggered. Thus, if a solution matches a set of multiplicities and a new event arrives, which is no longer the case, previously triggered actions are not triggered. For emission events, the event is retracted if it is not triggered. This removes the event from all solutions that may contain it and causes their template instances to be re-evaluated.

図9は、1つの実施形態による結果またはアクションを処理する方法を示す流れ図である。プロセス900は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含んでいてよい処理ロジックによって実行されてよい。例えば、プロセス900は、サーバ150、例えば結果処理モジュール154によって実行されてよい。 FIG. 9 is a flow diagram illustrating a method for processing results or actions according to one embodiment. Process 900 may be performed by processing logic that may include software, hardware, or a combination thereof. For example, process 900 may be performed by server 150, such as result processing module 154.

図9を参照すると、一連の解が識別されると、結果処理が実行される。動作901~903で、識別された各解およびテンプレート内の各結果について、処理ロジックは、その解の結果の状態を評価する。つまり、動作903では、処理ロジックは、すべてのアサーションを満たしているか否かを判断する。すべてのアサーションが満たされていれば、動作904で、処理ロジックは、同等のアクションが以前に起きたか否かを判断する。同等のアクションが以前に起こっていない、またはトリガーされていなければ、動作905で、処理ロジックは、アクション(例えば図1Bのアクション164の1つ)をトリガーする。アサーションが満たされておらず、アクションが以前にトリガーされていれば(動作907)、動作906で、処理ロジックは、そのアクションがトリガーされていないと判断し、そのアクションを元に戻す。 Referring to FIG. 9, once a set of solutions has been identified, result processing is performed. At operations 901-903, for each identified solution and each result in the template, processing logic evaluates the state of the results for that solution. That is, at operation 903, processing logic determines whether all assertions are satisfied. If all assertions are satisfied, then at operation 904, processing logic determines whether an equivalent action has previously occurred. If an equivalent action has not previously occurred or been triggered, then at operation 905, processing logic triggers an action (e.g., one of actions 164 of FIG. 1B). If the assertion is not satisfied and an action was previously triggered (operation 907), then at operation 906, processing logic determines that the action has not been triggered and undoes the action.

結果が新たなイベントを発行する場合、トリガーすることは、イベントデータを作成し、それを発行することからなり、トリガーしないことは、イベントデータをシステムから削除し、影響を受けたテンプレートの状態を計算し直すこと(すなわち逆のアクション)からなる。どちらの場合でも、発行または撤回されたイベントによってテンプレートが更新されるため、波及効果が生じる可能性がある If the outcome is to publish a new event, triggering consists of creating the event data and publishing it, whereas non-triggering consists of removing the event data from the system and recalculating the state of the affected templates (i.e. the reverse action). In both cases, ripple effects can occur, since templates are updated by the published or retracted event.

このようにしてイベントが発行されると、入力イベント(アサーション)からのデータは、結果の「データマッピング」で定義されている通り、発行イベントに移される。このデータマッピングは、どのアサーションの何のフィールドが、発行されるイベントのどのフィールドにコピーされるのかを定義する。この明示的なデータマッピングのほかに、暗黙的なマッピングがある。黙示的マッピングでは、発行イベントにデータを追加したり(全文検索に必要など)、入力イベントからデータをアルゴリズムでコピーしたりできる(エンティティ追跡など)。 When an event is emitted in this way, data from the input event (assertion) is transferred to the emitted event as defined in the resulting "data mapping". This data mapping defines which fields of which assertion are copied to which fields of the emitted event. In addition to this explicit data mapping, there are implicit mappings, which allow adding data to the emitted event (e.g. needed for full-text search) or algorithmically copying data from the input event (e.g. entity tracking).

エンティティ追跡とは、テンプレートの一致に関わる「エンティティ」を追跡するために、ソースイベントから発行イベントへ識別情報を自動コピーすることを指す。ソースイベントで参照されるエンティティはすべて、発行イベントに集約され、このイベントをソースとして発行されたあらゆるイベントのエンティティリストに加えられる。エンティティデータのこの階層集約は、人、組織、またはデバイス(一般に「エンティティ」と呼ばれる)の動作を追跡するために本発明が使用される多くの状況で有用である。単純なデータ複製に加えて、「データマッピング」プロセスの一部として起きる計算をサポートすることも可能であり、マッピングは、計算の式、ならびに計算への入力としてのアサーションおよびフィールドの参照を含む。 Entity tracking refers to the automatic copying of identifying information from source events to emitted events in order to track "entities" involved in template matches. All entities referenced in the source event are aggregated in the emitted event and added to the entity list of any events emitted with this event as the source. This hierarchical aggregation of entity data is useful in many situations where the invention is used to track the behavior of people, organizations, or devices (commonly referred to as "entities"). In addition to simple data duplication, it is also possible to support calculations that occur as part of a "data mapping" process, where the mapping includes the formula for the calculation as well as assertions and field references as inputs to the calculation.

図10は、1つの実施形態によるイベントを発行する方法を示す流れ図である。プロセス1000は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含んでいてよい処理ロジックによって実行されてよい。例えば、プロセス1000は、サーバ150、例えばイベント発行モジュール155によって実行されてよい。 FIG. 10 is a flow diagram illustrating a method for publishing an event according to one embodiment. Process 1000 may be performed by processing logic that may include software, hardware, or a combination thereof. For example, process 1000 may be performed by server 150, such as event publishing module 155.

図10では、イベント発行は、データマッピングから開始する。動作1001で、処理ロジックは、基本的なデータまたは値(すなわち一意のID、データ型マーキング、作成時間など)を含むイベントのスケルトンを作成してよい。動作1002と1006とを合わせて、処理ロジックは、結果定義内のデータマッピングエントリごとに繰り返す。動作1003で、処理ロジックは、それらのイベントからのデータマッピングエントリで参照されるソースイベントから値を収集してよい。動作1004で、処理ロジックは、入力値に対して指定の計算を実行する。動作1005で、処理ロジックは、生成されたイベントに結果を置く。動作1006で、処理ロジックは、他にマッピングがあるか否かを判断する。ある場合、処理は動作1002に戻る。ない場合、処理ロジックは動作1007に進み、処理ロジックは、入力またはソースイベントからエンティティデータを抽出または収集する。動作1008で、処理ロジックは、エンティティデータを集約または構築してエンティティマップにして、このエンティティマップは、ソースイベントで参照された各エンティティを識別し、どのフィールドによって参照されたかを識別する。動作1009で、処理ロジックは、テキスト索引付けなどの全体的な計算を実行し、イベントを何らかの外部システム(例えば図1Aのシステム171)に発行し、かつ/またはシステム(例えばサーバ150)に戻す。 In FIG. 10, event publication begins with data mapping. At operation 1001, processing logic may create a skeleton for the event that includes basic data or values (i.e., a unique ID, a data type marking, a creation time, etc.). Together, operations 1002 and 1006, processing logic iterates for each data mapping entry in the result definition. At operation 1003, processing logic may collect values from source events referenced in the data mapping entries from those events. At operation 1004, processing logic performs the specified calculation on the input values. At operation 1005, processing logic places the results in the generated event. At operation 1006, processing logic determines whether there are any more mappings. If so, processing returns to operation 1002. If not, processing logic proceeds to operation 1007 where processing logic extracts or collects entity data from the input or source events. At operation 1008, processing logic aggregates or constructs the entity data into an entity map that identifies each entity referenced in the source event and by which field it is referenced. At operation 1009, processing logic performs global computations, such as text indexing, and publishes the event to some external system (e.g., system 171 of FIG. 1A) and/or back to the system (e.g., server 150).

制約の詳細
本開示の実施形態は、「分割」制約または「関係」制約である制約をサポートするとしてよく、制約が、イベントからフィールドまたは集約を制約への入力として参照することを可能にする。
Constraint Details Embodiments of the present disclosure may support constraints that are "split" or "relationship" constraints, allowing the constraint to reference fields or aggregations from the event as inputs to the constraint.

以下のプロセス1100および1200は、2つのイベントストリームを合わせる制約内で部分解を結合する場合に、上記のプロセス700および800に適用してよい。制約が単一のイベントストリームをフィルタリングしている場合、各部分解の実際の値を単純に比較すれば十分である。 The following processes 1100 and 1200 may be applied to processes 700 and 800 above when combining partial solutions within a constraint that merges two event streams. If the constraint is filtering a single event stream, simply comparing the actual values of each partial solution is sufficient.

分割制約は、選択したフィールドに異なる値を有するイベントが同じ解にないことを確実にする。これにより、イベントを別々のサブセットに分割する。これは、すべてのイベントが同じ人物、場所、組織または活動に関連していることを確実にするために広く用いられている。例えば、不審な旅行を探すテンプレートでは、1人の旅行記録を調べ、メンテナンスパターンを調べるテンプレートでは、1つの航空会社または施設の記録を調べる。この制約は、以下の段落で説明する均等性に基づいて機能する。 A partitioning constraint ensures that events with different values for a selected field are not in the same solution, thus splitting the events into separate subsets. It is widely used to ensure that all events relate to the same person, place, organization or activity. For example, a template looking for suspicious travel might look at the travel records of one person, while a template looking at maintenance patterns might look at the records of one airline or facility. This constraint works based on evenness, which is explained in the following paragraphs.

関係制約は、何らかの関係に一致する値を含むイベントを有するものに対して解を制限する。厳密な等価性は、テストするのが最も簡単で、この値に基づいてイベントをハッシュに置くことで実装できる。これは、一意の識別子またはその他の文字列値の場合によくあることである。数値の場合、あいまいな等価性を許容する±などの許容誤差を指定できる。これは、浮動小数点値で必要になることがよくある。例えば、A=B±0.5は、Aの値の0.5以内にあるすべての浮動小数点数をBで見つける。これは、AおよびBのすべての値をソートし、Bの各値をテストしてAの現在値と比較することによって計算される。BがAの値の範囲外になると、システムは、Aの次の値に移り、Aの現在値の範囲内にあるBの値の識別を続ける。同じ方法を日時の値に使用できる。数値と日時の値の両方について、A<B+5±2のようなオフセットを許可することが可能である。この場合、オフセットにより、Aと比較する前にBの値がオフセットされるが、それ以外は前述のものと同じように動作する。 A relationship constraint restricts the solutions to those that have events containing values that match some relationship. Strict equality is easiest to test for and can be implemented by putting the events into a hash based on this value. This is often the case for unique identifiers or other string values. For numbers, a tolerance can be specified, such as ±, which allows for fuzzy equality. This is often needed with floating point values. For example, A=B±0.5 finds all floating point numbers in B that are within 0.5 of the value of A. This is calculated by sorting all the values of A and B, and testing each value of B to compare it to the current value of A. When B falls outside the range of A's values, the system moves on to the next value of A and continues identifying values of B that are within the range of A's current value. The same method can be used for datetime values. For both numbers and datetime values, it is possible to allow an offset, such as A<B+5±2. In this case, the offset offsets the value of B before comparing it to A, but it otherwise works the same as the previous one.

図11は、1つの実施形態による制約を処理する方法を示す流れ図である。プロセス1100は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含んでいてよい処理ロジックによって実行されてよい。例えば、プロセス1100は、サーバ150、例えば解生成モジュール154によって実行されてよい。 FIG. 11 is a flow diagram illustrating a method for processing constraints according to one embodiment. Process 1100 may be performed by processing logic that may include software, hardware, or a combination thereof. For example, process 1100 may be performed by server 150, such as solution generation module 154.

プロセス1100は、いくつかの実施形態では、文字列、識別子、またはその他の一意の値に対して厳密な等価性を使用してよい。動作1101で、処理ロジックは、一連のターゲットイベントの値を制約された値ごとにグループ化する。動作1102で、処理ロジックは、各解を繰り返し、ソース値を使用してターゲットイベントをソースイベント値ごとに収集する。動作1103で、処理ロジックは、ソース解をターゲットイベントと組み合わせて新たな解にする。つまり、ソースセット内の各々の別個の値が、制約によって新たな解出力になる。いくつかの実施形態では、プロセス1100は、分割制約にも使用される。 Process 1100 may use strict equality for strings, identifiers, or other unique values in some embodiments. At operation 1101, processing logic groups a set of target event values by constrained value. At operation 1102, processing logic iterates through each solution and collects target events by source event value using the source values. At operation 1103, processing logic combines the source solutions with the target events into a new solution; that is, each distinct value in the source set becomes a new solution output by the constraint. In some embodiments, process 1100 is also used for partitioning constraints.

図12は、別の実施形態による制約(例えば関係制約)を処理する方法を示す流れ図である。プロセス1200は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含んでいてよい処理ロジックによって実行されてよい。例えば、プロセス1200は、サーバ150、例えば解生成モジュール154によって実行されてよい。 12 is a flow diagram illustrating a method for processing constraints (e.g., relationship constraints) according to another embodiment. Process 1200 may be performed by processing logic that may include software, hardware, or a combination thereof. For example, process 1200 may be performed by server 150, such as solution generation module 154.

図12を参照すると、動作1201で、処理ロジックは、比較される制約フィールド値に基づいてソースイベントとターゲットイベントをソートしてよい。動作1201で、処理ロジックは、ソースイベントおよびターゲットイベントがすべて処理されたか否かを判断する。ソースおよびターゲットイベントがすべて処理されていれば、処理ロジックは動作1209に進み、一連のターゲットイベント(またはターゲットセット)を入力解に追加することによって新たな解が計算される。処理されていなければ、処理ロジックは動作1203および1204に進み、処理ロジックは、現在のソースイベント値とターゲットイベント値を比較する。ターゲットイベント値が制約を満たしていれば、動作1205で、処理ロジックは、ターゲットイベント値をターゲットセット(または解)に追加し、次のターゲットに進む(動作1206)。ターゲットイベント値が現在のソースイベント値より後であれば、動作1207で、処理ロジックは、ターゲットイベント値を破棄する。ターゲットイベント値が現在のソースイベント値より前であれば、動作1208で処理ロジックは次のソースイベント値に進み、すべてのソースイベント値およびターゲットイベント値が検査されるまで繰り返す(動作1202および1209)。 Referring to FIG. 12, at operation 1201, processing logic may sort source and target events based on the constraint field values being compared. At operation 1201, processing logic determines whether all source and target events have been processed. If all source and target events have been processed, processing logic proceeds to operation 1209 where a new solution is calculated by adding a set of target events (or target set) to the input solution. If not, processing logic proceeds to operations 1203 and 1204 where processing logic compares the current source and target event values. If the target event value satisfies the constraint, at operation 1205, processing logic adds the target event value to the target set (or solution) and proceeds to the next target (operation 1206). If the target event value is later than the current source event value, processing logic discards the target event value at operation 1207. If the target event value precedes the current source event value, then at operation 1208 the processing logic proceeds to the next source event value and repeats until all source and target event values have been examined (operations 1202 and 1209).

図13は、1つの実施形態によるイベント保持の方法を示す流れ図である。プロセス1300は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含んでいてよい処理ロジックによって実行されてよい。例えば、プロセス1300は、サーバ150、例えば入力データ処理モジュール151によって実行されてよい。 FIG. 13 is a flow diagram illustrating a method of event retention according to one embodiment. Process 1300 may be performed by processing logic that may include software, hardware, or a combination thereof. For example, process 1300 may be performed by server 150, such as input data processing module 151.

図13を参照すると、制約1301および能動データ1302(例えばイベント)を使用して単純なクエリを構築してよい(動作1303)。例えば、制約1301が単純な関係演算である場合(例えば=,!=,<,<=,>,>=)、能動データ1302と受動データとの間の制約をすべて含むようにクエリを構築できる。前述したように、能動データ1302と受動データとの間の制約は、クエリ用語に変換されてよい(例えば2つのアサーション間の制約をクエリに変換してよい)。クエリ用語は、利用可能な各々のイベント(前のクエリで取得された能動イベントまたは受動イベント)の値を利用して、処理中のアサーションによって表される受動データソース上にターゲットクエリを構築してよい。一実施形態では、複数のアサーションから利用可能なイベントが複数ある場合、クエリ用語は、その値を適切な制約と一緒に利用して最適なクエリを生成してよい。制約1301は、データ(能動および/または受動)のパターンの一部として事前に定義されてよく、システム(例えば図1のシステム100)の展開開始時に利用可能であってよい。これにより、各データパターンに対してクエリ構築を誘導し、能動データ1302(例えば能動イベント)からの値を使用してクエリを構築する。 13, a simple query may be constructed using constraints 1301 and active data 1302 (e.g., events) (operation 1303). For example, if constraints 1301 are simple relational operations (e.g., =, !=, <, <=, >, >=), a query may be constructed to include all constraints between active data 1302 and passive data. As previously described, the constraints between active data 1302 and passive data may be converted into query terms (e.g., the constraints between two assertions may be converted into a query). The query terms may utilize the values of each available event (active or passive events obtained in a previous query) to construct a target query on the passive data source represented by the assertion being processed. In one embodiment, if there are multiple events available from multiple assertions, the query terms may utilize the values along with the appropriate constraints to generate an optimal query. Constraints 1301 may be predefined as part of patterns of data (active and/or passive) and may be available at the beginning of deployment of a system (e.g., system 100 of FIG. 1 ) to guide query construction for each data pattern, constructing queries using values from active data 1302 (e.g., active events).

動作1304では、構築されたターゲットクエリを使用して、受動イベントデータを表すクエリ結果(受動データストアからのものであってよい)を取得してよい。クエリ結果は、制約解消のためにシステム(前述した他のストリーミングソースと同様または同じであってよい)にストリーミングされてよい。 In operation 1304, the constructed target query may be used to obtain query results (which may be from a passive data store) representing passive event data. The query results may be streamed to a system (which may be similar or the same as the other streaming sources described above) for constraint resolution.

動作1305では、クエリ結果に対して制約解消を実行してよい。制約解消の態様については本明細書で以前に説明しており、簡潔にするために再度説明しない。 At operation 1305, constraint solving may be performed on the query results. Aspects of constraint solving have been previously described herein and will not be described again for the sake of brevity.

動作1306では、クエリ結果に対してイベント保持を実行してよい。いくつかの実施形態では、制約解消を通過したクエリ結果(例えば受動イベント)は、参照用に保持されてよい。例えば、能動入力により変更が可能になる場合、また、さらに複雑な場合には、(動作1305で)制約解消を通過したクエリ結果が参照用に保持される。いくつかの実施形態では、能動データソースが1つのみで、データソースが時間の経過に伴う入力イベントの変更をサポートしていない場合、クエリ結果の処理は、本質的に受け身とすることができ、制約を解決するためにイベントからのデータ(例えば受動ソースからのイベント)を一切保持する必要はない。能動データのデータを時間の経過に伴って変更できる場合(例えばイベントの削除など)、能動イベントが修正されたときに制約解消を変更できるように、クエリ結果を保持できる。いくつかの実施形態では、受動ソースデータは変更された可能性があり、それによって一貫性のない結果が生じる可能性があるため、受動ソースに再度問い合わせて変更を処理することはできない。例えば、能動イベントがデータストリームから削除された場合、そのイベントに関するあらゆる受動データをこのパターンの一連のイベントから削除する必要があることがあり、パターン全体の出力を修正することが求められることがある。異なるイベントを返す可能性があるクエリを構築するのに使用される値を変更する場合も同じであり、よって新たな値に対して調整するために前のイベントの一部を削除する必要があることがある。例として、日付フィールドが修正された場合、古い日付に関連して選択されたイベントが修正された日付と一致しなくなることがある。いくつかの実施形態では、受動ソースに再度問い合わせることができるが、他の実施形態では、受動ソースも変更されている場合に、完全で適切な一連の結果を生み出すために以前の結果を保持する必要があることがある。 In operation 1306, an event retention may be performed on the query results. In some embodiments, the query results that have passed constraint resolution (e.g., passive events) may be retained for reference. For example, in cases where active inputs allow for changes, and in more complex cases, the query results that have passed constraint resolution (in operation 1305) are retained for reference. In some embodiments, if there is only one active data source and the data source does not support changes to the input events over time, the processing of the query results may be passive in nature and no data from the events (e.g., events from the passive source) needs to be retained to resolve the constraints. If the data in the active data can change over time (e.g., events are removed), the query results may be retained so that the constraint resolution can be modified when the active events are modified. In some embodiments, the passive sources cannot be queried again to process the changes, since the passive source data may have changed, which may cause inconsistent results. For example, if an active event is removed from the data stream, any passive data for that event may need to be removed from the set of events for this pattern, and the output of the entire pattern may need to be modified. The same is true when changing values used to construct a query that may return different events, and therefore may need to remove some previous events to adjust for the new values. As an example, if a date field is modified, events selected related to the old date may no longer match the modified date. In some embodiments, the passive source can be queried again, but in other embodiments, if the passive source has also been modified, previous results may need to be retained to produce a complete and appropriate set of results.

図14は、1つの実施形態によるイベント保持の別の方法を示す流れ図である。プロセス1400は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含んでいてよい処理ロジックによって実行されてよい。例えば、プロセス1400は、サーバ150、例えば入力データ処理モジュール151によって実行されてよい。 FIG. 14 is a flow diagram illustrating another method of event retention according to one embodiment. Process 1400 may be performed by processing logic that may include software, hardware, or a combination thereof. For example, process 1400 may be performed by server 150, such as input data processing module 151.

図14を参照すると、制約1401および能動データ1402(例えばイベント)を使用して曖昧なクエリや複雑なクエリを構築してよい(動作1403)。例えば、制約1401に+/-の値があって曖昧な場合、複数のクエリ用語を使用して各制約に対するクエリを構築してよい。曖昧な局面が単純な関係演算子に適用される場合でも、依然として追加のクエリ用語を含む単一のクエリに結合されてよい。前述したように、クエリを最適にするために結果イベントの数が制限されている場合、目標値を上回る/下回るイベントを取得するために、2つのクエリを使用して曖昧な用語を解決してよい。これらをさらに単純な用語に組み合わせてクエリの数を制限したり、他の同様の曖昧なクエリと組み合わせて、例えば上回るものと下回るものとの組み合わせごとに、n*2のクエリ(nは目標値を上回る/下回るイベントの数)にしたりできる。場合によっては、動作の順序は重要であり、クエリを構築する際に考慮されることがある。 Referring to FIG. 14, constraints 1401 and active data 1402 (e.g., events) may be used to construct ambiguous or complex queries (operation 1403). For example, if constraints 1401 are ambiguous with +/- values, multiple query terms may be used to construct queries for each constraint. Even if the ambiguity aspect applies to simple relational operators, it may still be combined into a single query with additional query terms. As mentioned above, if the number of result events is limited to optimize the query, two queries may be used to resolve the ambiguous terms to obtain events above/below a target value. These may be combined into simpler terms to further limit the number of queries, or with other similar ambiguous queries, for example, n*2 queries (where n is the number of events above/below a target value) for each above/below combination. In some cases, the order of operations is important and may be considered when constructing the query.

制約1401がより複雑な演算(例えば合計(sum)、平均(avg)関数、または配列演算などの集計)を伴う場合、クエリ実行で候補となる一連のイベントが提供されて他のすべての制約が処理された後に、そのような制約の処理を実行することが必要になることがある。一部の受動データストア(例えばSQLデータベース)では、サブクエリまたは先行のクエリを実行して主制約を満たすクエリで使用される集計の値または関数値を取得することも可能であってよい。例えば、イベントAのフィールド「a」の合計がイベントBのフィールド「a」の合計と等しくなければならないという制約では、他のすべての制約を使用して、他のすべての制約を満たすAとBとのセットを取得し、次に、合計が等しいAとBとのセットに絞り込むようにクエリを構築できる。別の例として、AとBとの間に国コードが等しいことを求める制約がある場合、国コードによってAとBの合計を計算するSQLクエリを、事前に実行するか、制約クエリのサブクエリとして実行することができ、合計が等しい国のみが、個々のイベントを返す実際の制約クエリでフェッチする必要がある。 If the constraint 1401 involves a more complex operation (e.g., an aggregate such as sum, average (avg) function, or array operation), it may be necessary to perform the processing of such a constraint after the query execution provides a set of candidate events and all other constraints have been processed. In some passive data stores (e.g., SQL databases), it may also be possible to execute a subquery or preceding query to obtain the aggregate or function value used in the query that satisfies the primary constraint. For example, in a constraint that the sum of field "a" of event A must be equal to the sum of field "a" of event B, a query can be constructed to use all other constraints to obtain the set of A and B that satisfies all other constraints, and then narrow down to the set of A and B whose sum is equal. As another example, if there is a constraint that requires country codes to be equal between A and B, a SQL query that calculates the sum of A and B by country code can be executed in advance or as a subquery of the constraint query, and only the countries whose sum is equal need to be fetched in the actual constraint query that returns the individual events.

動作1404では、構築された各クエリを使用して、受動イベントデータを表すクエリ結果(受動データストアからのものであってよい)を取得してよい。クエリ結果は、制約解消のためにシステム(前述した他のストリーミングソースと同様または同じであってよい)にストリーミングされてよい。 In operation 1404, each constructed query may be used to obtain query results (which may be from a passive data store) representing passive event data. The query results may be streamed to a system (which may be similar or the same as the other streaming sources described above) for constraint resolution.

動作1405では、構築された各クエリからのクエリ結果に対して制約解消を実行してよい。制約解消の態様については本明細書で以前に説明しており、簡潔にするために再度説明しない。 At operation 1405, constraint resolution may be performed on the query results from each constructed query. Aspects of constraint resolution have been previously described herein and will not be described again for the sake of brevity.

動作1406では、構築された各クエリからのクエリ結果に対してイベント保持を実行してよい。いくつかの実施形態では、制約解消を通過したクエリ結果(例えばイベント)は、参照用に保持されてよい。例えば、能動入力により変更が可能になる場合、かつ、さらに複雑な場合には、(動作1405で)制約解消を通過したクエリ結果が参照用に保持される。いくつかの実施形態では、能動データソースが1つのみで、データソースが時間の経過に伴う入力イベントの変更をサポートしていない場合、クエリ結果の処理は、本質的に受け身とすることができ、制約を解決するためにイベントからのデータ(例えば受動ソースからのイベント)を一切保持する必要はない。能動データのデータを時間の経過に伴って変更できる場合(例えばイベントの削除など)、能動イベントが修正されたときに制約解消を変更できるように、クエリ結果を保持できる。いくつかの実施形態では、受動ソースデータは変更された可能性があり、それによって一貫性のない結果が生じる可能性があるため、受動ソースに再度問い合わせて変更を処理することはできない。例えば、能動イベントが削除された場合、そのイベントに関するあらゆる受動データをこのパターンの一連のイベントから削除する必要があることがあり、パターン全体の出力を修正することが求められることがある。異なるイベントを返す可能性があるクエリを構築するのに使用される値を変更する場合も同じであり、よって新たな値に対して調整するために前のイベントの一部を削除する必要があることがある。例として、日付フィールドが修正された場合、古い日付に関連して選択されたイベントが修正された日付と一致しなくなることがある。いくつかの実施形態では、受動ソースに再度問い合わせることができるが、他の実施形態では、受動ソースも変更されている場合に、完全で適切な結果セットを生み出すために以前の結果を保持する必要があることがある。 In operation 1406, an event retention may be performed on the query results from each constructed query. In some embodiments, the query results (e.g., events) that have passed through constraint resolution may be retained for reference. For example, in cases where active inputs allow for changes, and in more complex cases, the query results that have passed through constraint resolution (in operation 1405) are retained for reference. In some embodiments, if there is only one active data source and the data source does not support changes to the input events over time, the processing of the query results may be passive in nature and no data from the events (e.g., events from the passive source) needs to be retained to resolve the constraints. If the data in the active data can change over time (e.g., events are deleted), the query results may be retained so that the constraint resolution can be modified when the active event is modified. In some embodiments, the passive source cannot be queried again to process the changes, since the passive source data may have changed, which may cause inconsistent results. For example, if an active event is deleted, any passive data related to that event may need to be removed from the set of events for this pattern, which may require the output of the entire pattern to be modified. The same is true when changing values used to construct a query that may return different events, and therefore may need to remove some previous events to adjust for the new values. As an example, if a date field is modified, events selected related to the old date may no longer match the modified date. In some embodiments, the passive source can be queried again, but in other embodiments, if the passive source has also been modified, previous results may need to be retained to produce a complete and relevant result set.

上記に示し説明した構成要素の一部またはすべては、ソフトウェア、ハードウェア、またはこれらの組み合わせで実装してよいことに注意されたい。例えば、このような構成要素は、永続記憶装置にインストールされて記憶されたソフトウェアとして実装でき、永続記憶装置は、本明細書全体にわたって記載したプロセスまたは動作を実行するために、プロセッサ(図示せず)によってメモリにロードされて実行されるとすることができる。あるいは、このような構成要素は、プログラムされた実行可能コードとして実装するか、対応するドライバやオペレーティングシステムを介してアプリケーションからアクセスできる集積回路(例えば特定用途向けICすなわちASIC)、デジタルシグナルプロセッサ(DSP)、またはフィールドプログラマブルゲートアレイ(FPGA)などの専用ハードウェアに埋め込むことができる。さらに、このような構成要素は、1つ以上の特定の命令を介してソフトウェア構成要素によってアクセス可能な一連の命令の一部として、プロセッサまたはプロセッサコアに特定のハードウェアロジックとして実装できる。 It should be noted that some or all of the components shown and described above may be implemented in software, hardware, or a combination thereof. For example, such components may be implemented as software installed and stored in a persistent storage device that is loaded into memory and executed by a processor (not shown) to perform the processes or operations described throughout this specification. Alternatively, such components may be implemented as programmed executable code or embedded in dedicated hardware such as an integrated circuit (e.g., an application specific integrated circuit or ASIC), a digital signal processor (DSP), or a field programmable gate array (FPGA) that is accessible to an application via a corresponding driver and operating system. Furthermore, such components may be implemented as specific hardware logic in a processor or processor core as part of a set of instructions that are accessible by the software components via one or more specific instructions.

図15は、1つの実施形態で使用してよいデータ処理システムの一例を示すブロック図である。例えば、システム1500は、前述のプロセスまたは方法のいずれかを実行する、前述のユーザデバイス101~102、サーバ150、および/または外部システム171などのデータ処理システムのいずれかを表すとしてよい。システム1500は、多くの異なる構成要素を含むことができる。これらの構成要素は、集積回路(IC)、その一部、別個の電子機器、もしくはコンピュータシステムのマザーボードやアドインカードなどの回路基板に適合するその他のモジュールとして、それ以外の場合はコンピュータシステムのシャーシ内に組み込まれる構成要素として実装できる。システムは、1500は、コンピュータシステムの多くの構成要素の高レベル図を示すように意図されていることにも注意されたい。ただし、追加の構成要素が特定の実施形態に存在してもよく、さらに、図示した構成要素とは異なる配置が他の実施形態で起こり得ることを理解されたい。システム1500は、デスクトップ、ラップトップ、タブレット、サーバ、携帯電話、メディアプレーヤ、携帯情報端末(PDA)、パーソナルコミュニケータ、ゲーム装置、ネットワークルータまたはハブ、無線アクセスポイント(AP)または中継器、セットトップボックス、またはこれらの組み合わせを表すとしてよい。さらに、単一のマシンまたはシステムのみが示されているが、「マシン」または「システム」という用語は、本明細書で考察した方法論の1つ以上を実施するために、一組の(または複数組の)命令を個別に実行するかまとめて実行するマシンまたはシステムのあらゆる集合を含むとも解釈するものとする。 FIG. 15 is a block diagram illustrating an example of a data processing system that may be used in one embodiment. For example, system 1500 may represent any of the data processing systems, such as user devices 101-102, server 150, and/or external system 171, described above, that perform any of the processes or methods described above. System 1500 may include many different components. These components may be implemented as integrated circuits (ICs), parts thereof, separate electronic devices, or other modules that fit onto a circuit board, such as a computer system motherboard or add-in card, or as components that are otherwise integrated into the chassis of the computer system. It should also be noted that system 1500 is intended to illustrate a high-level view of many of the components of a computer system. However, it should be understood that additional components may be present in certain embodiments, and that different arrangements of the components than those shown may occur in other embodiments. System 1500 may represent a desktop, laptop, tablet, server, mobile phone, media player, personal digital assistant (PDA), personal communicator, gaming device, network router or hub, wireless access point (AP) or repeater, set-top box, or combinations thereof. Additionally, although only a single machine or system is shown, the term "machine" or "system" is also intended to include any collection of machines or systems that individually or collectively execute a set (or sets) of instructions to implement one or more of the methodologies discussed herein.

1つの実施形態では、システム1500は、バスまたは相互接続装置1510を介してプロセッサ1501、メモリ1503、およびデバイス1505~1508を有する。プロセッサ1501は、中に単一のプロセッサコアまたは複数のプロセッサコアが含まれている単一のプロセッサまたは複数のプロセッサを表すとしてよい。プロセッサ1501は、マイクロプロセッサ、中央処理装置(CPU)などの1つ以上の汎用プロセッサを表すとしてよい。さらに詳細には、プロセッサ1501は、複合命令セットコンピュータ(CISC)のマイクロプロセッサ、縮小命令セットコンピュータ(RISC)のマイクロプロセッサ、超長命令ワード(VLIW)のマイクロプロセッサ、または他の命令セットを実装するプロセッサ、または命令セットの組み合わせを実装するプロセッサであってよい。プロセッサ1501は、1つ以上の特定目的のプロセッサであってもよく、例えば特定用途向け集積回路(ASIC)、セルラープロセッサまたはベースバンドプロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、デジタルシグナルプロセッサ(DSP)、ネットワークプロセッサ、グラフィックスプロセッサ、ネットワークプロセッサ、通信プロセッサ、暗号化プロセッサ、コプロセッサ、組み込みプロセッサ、または命令を処理する能力のあるその他の種類のロジックであってよい。 In one embodiment, system 1500 includes processor 1501, memory 1503, and devices 1505-1508 connected via bus or interconnect 1510. Processor 1501 may represent a single processor or multiple processors including a single processor core or multiple processor cores. Processor 1501 may represent one or more general purpose processors such as a microprocessor, a central processing unit (CPU), or the like. More specifically, processor 1501 may be a complex instruction set computer (CISC) microprocessor, a reduced instruction set computer (RISC) microprocessor, a very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets or a combination of instruction sets. Processor 1501 may be one or more special purpose processors, such as an application specific integrated circuit (ASIC), a cellular or baseband processor, a field programmable gate array (FPGA), a digital signal processor (DSP), a network processor, a graphics processor, a network processor, a communications processor, a cryptographic processor, a co-processor, an embedded processor, or any other type of logic capable of processing instructions.

プロセッサ1501は、超低電圧プロセッサなどの低電力マルチコアプロセッサソケットであってよく、システムの様々な構成要素と通信するための主要処理部および中央ハブとして機能してよい。このようなプロセッサは、システムオンチップ(SoC)として実装できるものである。プロセッサ1501は、本明細書で考察した動作およびステップを実施するための命令を実行するように構成される。システム1500はさらに、オプションのグラフィックスサブシステム1504と通信するグラフィックスインターフェースを含んでいてよく、このサブシステムは、ディスプレイコントローラ、グラフィックスプロセッサ、および/または表示装置を含んでいてよい。 The processor 1501 may be a low-power multi-core processor socket, such as an ultra-low voltage processor, and may act as the main processing unit and central hub for communicating with the various components of the system. Such a processor may be implemented as a system on a chip (SoC). The processor 1501 is configured to execute instructions to perform the operations and steps discussed herein. The system 1500 may further include a graphics interface in communication with an optional graphics subsystem 1504, which may include a display controller, a graphics processor, and/or a display device.

プロセッサ1501は、メモリ1503と通信してよく、メモリは、1つの実施形態では、特定量のシステムメモリを提供するために複数のメモリ装置を介して実装できる。メモリ1503は、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、同期DRAM(SDRAM)、スタティックRAM(SRAM)、またはその他の種類の記憶装置などの揮発性記憶(またはメモリ)装置を1つ以上含んでいてよい。メモリ1503は、プロセッサ1501、または他の任意のデバイスによって実行される命令のシーケンスを含む情報を記憶してよい。例えば、多種多様なオペレーティングシステム、デバイスドライバ、ファームウェア(例えば入出力基本システムまたはBIOS)、および/またはアプリケーションの実行可能コードおよび/またはデータを、メモリ1503にロードし、プロセッサ1501で実行することができる。オペレーティングシステムは、どのような種類のオペレーティングシステムでもよく、例えば、Microsoft(登録商標)のWindows(登録商標)オペレーティングシステム、AppleのMacOS(登録商標)/iOS(登録商標)、Google(登録商標)のAndroid(登録商標)、Linux(登録商標)、Unix(登録商標)、またはVxWorksなどのその他のリアルタイムオペレーティングシステムまたは組み込みオペレーティングシステムであってよい。 The processor 1501 may communicate with the memory 1503, which in one embodiment may be implemented through multiple memory devices to provide a certain amount of system memory. The memory 1503 may include one or more volatile storage (or memory) devices, such as random access memory (RAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), static RAM (SRAM), or other types of storage devices. The memory 1503 may store information including sequences of instructions to be executed by the processor 1501, or any other device. For example, executable code and/or data for a wide variety of operating systems, device drivers, firmware (e.g., input/output basic system or BIOS), and/or applications may be loaded into the memory 1503 and executed by the processor 1501. The operating system may be any type of operating system, such as Microsoft's (registered trademark) Windows (registered trademark) operating system, Apple's (registered trademark) MacOS (registered trademark)/iOS (registered trademark), Google's (registered trademark) Android (registered trademark), Linux (registered trademark), Unix (registered trademark), or other real-time or embedded operating systems such as VxWorks.

システム1500は、デバイス1505~1508などのIOデバイスをさらに含んでいてよく、それにはネットワークインターフェースデバイス1505、オプションの入力デバイス1506、およびその他のオプションのIOデバイス1507が含まれる。ネットワークインターフェースデバイス1505は、無線トランシーバおよび/またはネットワークインターフェースカード(NIC)を含んでいてよい。無線トランシーバは、WiFiトランシーバ、赤外線トランシーバ、Bluetoothトランシーバ、WiMaxトランシーバ、無線携帯電話トランシーバ、衛星トランシーバ(例えば全地球測位システム(GPS)トランシーバ)、またはその他の無線周波(RF)トランシーバ、またはこれらの組み合わせであってよい。NICは、イーサネットカードであってよい。 System 1500 may further include IO devices such as devices 1505-1508, including a network interface device 1505, an optional input device 1506, and other optional IO devices 1507. Network interface device 1505 may include a wireless transceiver and/or a network interface card (NIC). The wireless transceiver may be a WiFi transceiver, an infrared transceiver, a Bluetooth transceiver, a WiMax transceiver, a wireless mobile phone transceiver, a satellite transceiver (e.g., a Global Positioning System (GPS) transceiver), or other radio frequency (RF) transceiver, or a combination thereof. The NIC may be an Ethernet card.

入力デバイス1506として、マウス、タッチパッド、タッチ感応画面(表示デバイス1504と統合されてよい)、スタイラスなどのポインタデバイス、および/またはキーボード(例えば、物理キーボードまたはタッチ感応画面の一部として表示される仮想キーボード)を挙げてよい。例えば、入力デバイス1506として、タッチ画面に接続されたタッチ画面コントローラを挙げてよい。タッチ画面およびタッチ画面コントローラは、例えば、容量性技術、抵抗性技術、赤外線技術、および表面音波技術などだがこれらに限定されない、複数のタッチ感度技術のうちのいずれかを、ならびに他の接近センサアレイまたはタッチ画面との1つ以上の接触点を判断するためのその他の要素を使用して、接触および移動または破壊を検出できる。 The input devices 1506 may include a mouse, a touchpad, a touch-sensitive screen (which may be integrated with the display device 1504), a pointer device such as a stylus, and/or a keyboard (e.g., a physical keyboard or a virtual keyboard displayed as part of a touch-sensitive screen). For example, the input devices 1506 may include a touch screen controller connected to a touch screen. The touch screen and touch screen controller may detect contact and movement or destruction using any of a number of touch sensitivity technologies, such as, but not limited to, capacitive, resistive, infrared, and surface acoustic wave technologies, as well as other proximity sensor arrays or other elements to determine one or more points of contact with the touch screen.

IOデバイス1507は、オーディオデバイスを含んでいてよい。オーディオデバイスとして、音声認識、音声複製、デジタル録音、および/または電話機能などの音声対応機能を促進するためのスピーカおよび/またはマイクロフォンを挙げてよい。その他のIOデバイス1507として、ユニバーサルシリアルバス(USB)ポート、パラレルポート、シリアルポート、プリンタ、ネットワークインターフェース、バスブリッジ(例えばPCI-PCIブリッジ)、センサ(例えば、加速度計、ジャイロスコープ、磁力計、光センサ、コンパス、近接センサなどのモーションセンサ)、またはそれらの組み合わせをさらに挙げてよい。デバイス1507としてさらに、画像処理サブシステム(例えばカメラ)を挙げてよく、これは、写真およびビデオクリップの記録などのカメラ機能を促進するために利用される電荷結合素子(CCD)または相補型金属酸化物半導体(CMOS)光学センサなどの光学センサを含んでいてよい。特定のセンサは、センサハブ(図示せず)を介して相互接続装置1510に結合されてよいが、キーボードまたは熱センサなどの他のデバイスは、システム1500の特定の構成または設計に応じて、組み込みコントローラ(図示せず)で制御されてよい。 IO devices 1507 may include audio devices. Audio devices may include speakers and/or microphones to facilitate voice-enabled functions such as voice recognition, voice duplication, digital recording, and/or telephony functions. Other IO devices 1507 may further include universal serial bus (USB) ports, parallel ports, serial ports, printers, network interfaces, bus bridges (e.g., PCI-PCI bridges), sensors (e.g., motion sensors such as accelerometers, gyroscopes, magnetometers, light sensors, compasses, proximity sensors, etc.), or combinations thereof. Devices 1507 may further include an image processing subsystem (e.g., a camera), which may include optical sensors such as charge-coupled device (CCD) or complementary metal-oxide semiconductor (CMOS) optical sensors utilized to facilitate camera functions such as recording of photographs and video clips. Certain sensors may be coupled to the interconnection arrangement 1510 via a sensor hub (not shown), while other devices such as a keyboard or thermal sensor may be controlled by an embedded controller (not shown), depending on the particular configuration or design of the system 1500.

データ、アプリケーション、1つ以上のオペレーティングシステムなどの情報の永続記憶を実現するために、大容量記憶装置(図示せず)もプロセッサ1501に結合してよい。様々な実施形態では、より薄く軽いシステム設計を可能にするとともに、システムの応答性を向上させるために、この大容量記憶装置をソリッドステートデバイス(SSD)を介して実装してよい。ただし、他の実施形態では、大容量記憶装置は、主に、SSDキャッシュとして機能する少量のSSD記憶装置を備えたハードディスクドライブ(HDD)を使用して実装されて、電源切断のイベント中にコンテキスト状態および他の同類の情報の不揮発性記憶装置を有効にし、システムの活動が再開された際に高速の電力供給を起こせるようにしてよい。また、フラッシュデバイスをプロセッサ1501に、例えばシリアルペリフェラルインターフェース(SPI)を介して結合してよい。このフラッシュデバイスは、基本入力/出力ソフトウェア(BIOS)およびシステムの他のファームウェアを含むシステムソフトウェアの不揮発性記憶装置を提供してよい。 A mass storage device (not shown) may also be coupled to the processor 1501 to provide persistent storage of information, such as data, applications, and one or more operating systems. In various embodiments, this mass storage may be implemented via a solid state device (SSD) to enable thinner and lighter system designs and improve system responsiveness. However, in other embodiments, the mass storage may be implemented primarily using a hard disk drive (HDD) with a small amount of SSD storage acting as an SSD cache to enable non-volatile storage of context state and other such information during power-down events and to allow for fast power up when system activity resumes. A flash device may also be coupled to the processor 1501, for example via a serial peripheral interface (SPI). This flash device may provide non-volatile storage of system software, including basic input/output software (BIOS) and other firmware of the system.

記憶装置1508は、コンピュータアクセス可能な記憶媒体1509(機械可読記憶媒体またはコンピュータ可読媒体としても知られる)を含んでいてよく、この記憶媒体には、本明細書に記載した方法論または機能のうちの1つ以上を具現化する1セット以上の命令またはソフトウェア(例えば処理モジュール、ユニット、および/またはロジック1528)が記憶される。処理モジュール/ユニット/ロジック1528は、前述したように、例えば入力データ受信モジュール151、イベント処理モジュール152、解生成モジュール153、結果処理モジュール154およびイベント発行モジュール155などの前述の構成要素のいずれか表すとしてよい。処理モジュール/ユニット/ロジック1528は、同じくマシンアクセス可能な記憶媒体を構成しているデータ処理システム1500、メモリ1503およびプロセッサ1501がそれを実行している間、メモリ1503内および/またはプロセッサ1501内に完全にまたは少なくとも部分的に常駐するとしてよい。処理モジュール/ユニット/ロジック1528はさらに、ネットワークインターフェースデバイス1505を介してネットワーク上で送信または受信されてよい。 The storage device 1508 may include a computer-accessible storage medium 1509 (also known as a machine-readable storage medium or computer-readable medium) that stores one or more sets of instructions or software (e.g., processing modules, units, and/or logic 1528) that embody one or more of the methodologies or functions described herein. The processing modules/units/logic 1528 may represent any of the previously described components, such as the input data receiving module 151, the event processing module 152, the solution generating module 153, the result processing module 154, and the event publishing module 155, as previously described. The processing modules/units/logic 1528 may reside completely or at least partially within the memory 1503 and/or within the processor 1501 during execution thereof by the data processing system 1500, the memory 1503, and the processor 1501, which also constitute a machine-accessible storage medium. The processing modules/units/logic 1528 may further be transmitted or received over a network via the network interface device 1505.

コンピュータ可読記憶媒体1509は、前述したいくつかのソフトウェア機能を永続的に記憶するために使用することも可能である。コンピュータ可読記憶媒体1509は、例示的な実施形態では単一の媒体であるように示されているが、「コンピュータ可読記憶媒体」という用語は、1セット以上の命令を記憶する単一の媒体または複数の媒体(例えば集中型または分散型データベース、および/または関連するキャッシュおよびサーバ)を含むものと解釈すべきである。「コンピュータ可読記憶媒体」という用語は、機械で実行するための一連のセットを記憶したり符号化したりすることができ、本開示の方法論のいずれか1つ以上を機械に実行させる任意の媒体も含むと解釈するものとする。したがって、「コンピュータ可読記憶媒体」という用語は、ソリッドステートメモリ、光学媒体および磁気媒体、またはその他の非一時的な機械可読媒体を含むと解釈するが、これに限定されない。 The computer-readable storage medium 1509 may also be used to persistently store some of the software functions described above. Although the computer-readable storage medium 1509 is shown in the exemplary embodiment as being a single medium, the term "computer-readable storage medium" should be interpreted to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store one or more sets of instructions. The term "computer-readable storage medium" should also be interpreted to include any medium that can store or encode a set of instructions for execution by a machine and cause the machine to perform any one or more of the methodologies of the present disclosure. Thus, the term "computer-readable storage medium" should be interpreted to include, but is not limited to, solid-state memory, optical and magnetic media, or other non-transitory machine-readable media.

本明細書に記載した処理モジュール/ユニット/ロジック1528、構成要素およびその他の特徴は、個別のハードウェア構成要素として実装するか、またはASICS、FPGA、DSPまたは同様のデバイスなどのハードウェア構成要素の機能に統合することができる。また、処理モジュール/ユニット/ロジック1528は、ハードウェアデバイス内のファームウェアまたは機能回路として実装できる。さらに、処理モジュール/ユニット/ロジック1528は、ハードウェアデバイスとソフトウェア構成要素の任意の組み合わせで実装できる。 The processing modules/units/logic 1528, components and other features described herein may be implemented as separate hardware components or integrated into the functionality of hardware components such as ASICS, FPGAs, DSPs or similar devices. Additionally, the processing modules/units/logic 1528 may be implemented as firmware or functional circuits within a hardware device. Additionally, the processing modules/units/logic 1528 may be implemented in any combination of hardware devices and software components.

システム1500は、データ処理システムの様々な構成要素と一緒に示されているが、構成要素を相互接続する特定のアーキテクチャまたは方法を表すことを意図するものではないことに注意されたい。そのような細部は本開示の実施形態とは密接な関連性はない。これよりも少ない構成要素または場合によっては多い構成要素を有するネットワークコンピュータ、ハンドヘルドコンピュータ、携帯電話、サーバ、および/またはその他のデータ処理システムも本開示の実施形態で使用してよいことも理解されるであろう。 It should be noted that while system 1500 is shown with various components of a data processing system, it is not intended to represent a particular architecture or manner of interconnecting the components. Such details are not germane to the embodiments of the present disclosure. It will also be understood that network computers, handheld computers, mobile phones, servers, and/or other data processing systems having fewer components or possibly more components may also be used with embodiments of the present disclosure.

上記の詳細な説明のいくつかの部分は、コンピュータメモリ内のデータビットに対する演算のアルゴリズムおよび記号表現の観点から提示されている。これらのアルゴリズムの記述および表現は、データ処理技術の当業者が仕事の内容を他の当業者に最も効果的に伝えるために使用する方法である。ここでのアルゴリズムとは、一般に、所望の結果に導く首尾一貫した一連の動作であると考える。この動作は、物理量の物理的操作を必要とする動作である。 Some portions of the above detailed descriptions are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the method used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of operations leading to a desired result. The operations are those requiring physical manipulations of physical quantities.

ただし、これらの用語および同様の用語はすべて、適切な物理量に関連付けられており、そのような量に用いる単なる便宜的なラベルであることに留意されたい。上記の考察から明らかなように、特に別途記載がない限り、説明全体を通して、下記の特許請求の範囲に記載したような用語を用いた考察は、コンピュータシステムのレジスタおよびメモリ内で物理(電子)量として表されるデータを、コンピュータシステムのメモリもしくはレジスタまたはその他の同類の情報記憶装置、送信装置もしくは表示装置内で同じように物理量として表される他のデータに変換するコンピュータシステム、または同様の電子コンピューティングデバイスの作用およびプロセスに関することであると理解される。 However, it should be noted that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels used for such quantities. As is apparent from the above discussion, unless otherwise indicated, throughout the description, discussion of terms such as those set forth in the claims below will be understood to refer to the actions and processes of a computer system, or similar electronic computing device, that transforms data represented as physical (electronic) quantities in the registers and memory of the computer system into other data similarly represented as physical quantities in the memory or registers of the computer system or other similar information storage, transmission or display devices.

本開示の実施形態は、本明細書の動作を実行するための機器にも関する。このようなコンピュータプログラムは、非一時的なコンピュータ可読媒体に格納される。機械可読媒体は、機械(例えばコンピュータ)による読み取りが可能な形式で情報を保存するための任意の機構を含むものである。例えば、機械可読(例えばコンピュータ可読)媒体として、機械(例えばコンピュータ)可読記憶媒体(例えばリードオンリーメモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイス)が挙げられる。 Embodiments of the present disclosure also relate to apparatus for performing the operations herein. Such computer programs are stored on non-transitory computer-readable media. Machine-readable media includes any mechanism for storing information in a form readable by a machine (e.g., a computer). For example, machine-readable (e.g., computer-readable) media includes machine (e.g., computer) readable storage media (e.g., read-only memory ("ROM"), random access memory ("RAM"), magnetic disk storage media, optical storage media, flash memory devices).

前述の図面に描いたプロセスまたは方法は、ハードウェア(例えば回路、専用ロジックなど)、ソフトウェア(例えば非一時的なコンピュータ可読媒体上に具体化されたもの)、または両者を組み合わせたものを含む処理ロジックによって実行されてよい。このプロセスまたは方法について、いくつかの一続きの動作の観点から上記に説明したが、説明した動作のいくつかは、別の順序で実行してよいことを理解されたい。さらに、一部の動作は、順次ではなく並行して実行されてよい。 The process or method depicted in the foregoing figures may be performed by processing logic that may include hardware (e.g., circuits, dedicated logic, etc.), software (e.g., embodied on a non-transitory computer-readable medium), or a combination of both. Although the process or method is described above in terms of several sequences of operations, it should be understood that some of the operations described may be performed in a different order. Additionally, some operations may be performed in parallel rather than sequentially.

本開示の実施形態は、特定のプログラミング言語を参照して説明したものではない。本明細書に記載した本開示の実施形態の教示を実現するために、多種多様なプログラミング言語を使用してよいことが理解されるであろう。 The embodiments of the present disclosure have not been described with reference to any particular programming language. It will be appreciated that a wide variety of programming languages may be used to implement the teachings of the embodiments of the present disclosure described herein.

上記の明細書では、本開示の実施形態を特定の例示的な実施形態を参照して説明した。特許請求の範囲に記載の本開示のさらに広範な趣旨および範囲から逸脱することなく、様々な修正を加えてよいことは明らかであろう。したがって、本明細書および図面は、限定的な意味ではなく例示的な意味で捉えるべきである。 In the foregoing specification, embodiments of the present disclosure have been described with reference to certain exemplary embodiments. It will be apparent that various modifications may be made therein without departing from the broader spirit and scope of the present disclosure as set forth in the appended claims. The present specification and drawings are therefore to be regarded in an illustrative rather than a restrictive sense.

Claims (22)

イベントを処理するためのコンピュータ実装方法であって、
受動イベントデータ、能動イベントデータ、またはこの両方を含むイベントデータを受信すること;
前記受信したイベントデータが受動イベントデータおよび能動イベントデータのパターンに利用可能か否かを判断すること;
前記受信したイベントデータが受動イベントデータおよび能動イベントデータのパターンに利用可能であるとの判断に応答して、前記受動イベントデータと前記能動イベントデータとの間の1つ以上の制約を1つ以上のクエリ用語に変換すること;
前記1つ以上のクエリ用語を使用して少なくとも1つのクエリを構築すること;
前記構築した少なくとも1つのクエリを使用して、前記能動イベントデータの全部ではなく一部に関連する残りの受動イベントデータを取得すること;
前記イベントデータおよび前記残りの受動イベントデータに一致する1つ以上のイベント定義を選択すること;
一致するイベント定義ごとに、前記イベント定義をテンプレートに入力して一連のイベントを生成し、前記テンプレートは、複数のアサーションを含み、前記イベント定義を前記アサーションの1つとして有し、各アサーションは制約を含むこと;
前記アサーションの前記制約を徐々に処理して、前記一連のイベントのサブセットである1つ以上の解を作成すること;ならびに
各制約および各解について、
前記解に対して実行可能な一連のターゲットイベントを識別すること、および
前記解および前記識別した一連のターゲットイベントに基づいて新たな解を作成し、一連の新たな解を作成すること
を含む、方法。
1. A computer-implemented method for processing an event, comprising:
receiving event data, including passive event data, active event data, or both;
determining whether the received event data is available for a pattern of passive event data and active event data;
responsive to determining that the received event data is available for a pattern of passive event data and active event data, translating one or more constraints between the passive event data and the active event data into one or more query terms;
constructing at least one query using the one or more query terms;
using the constructed at least one query to obtain remaining passive event data related to some but not all of the active event data;
selecting one or more event definitions that match the event data and the remaining passive event data;
for each matching event definition, inputting the event definition into a template to generate a set of events, the template including a plurality of assertions, the template having the event definition as one of the assertions, each assertion including a constraint;
incrementally processing the constraints of the assertion to generate one or more solutions that are a subset of the set of events; and for each constraint and each solution,
identifying a set of target events that are actionable for the solution; and generating a new solution based on the solution and the identified set of target events to generate a set of new solutions.
前記残りの受動イベントデータを取得することは、
前記構築した少なくとも1つのクエリを使用してクエリ結果を取得すること、
前記クエリ結果に対して制約解消を実行すること、および
前記クエリ結果を、前記制約解消を通過する前記残りの受動イベントデータとして保持すること
を含む、請求項1に記載の方法。
Obtaining the remaining passive event data includes:
obtaining a query result using the constructed at least one query;
The method of claim 1 , comprising performing constraint solving on the query results and retaining the query results as the remaining passive event data that passes through the constraint solving.
前記1つ以上のクエリ用語は、曖昧な用語であり、前記少なくとも1つのクエリは、2つ以上のクエリである、請求項1に記載の方法。 The method of claim 1, wherein the one or more query terms are ambiguous terms and the at least one query is two or more queries. 先行のクエリを実行して、制約を満たしているクエリで使用される集計の値または関数値を取得すること
をさらに含む、請求項1に記載の方法。
The method of claim 1 , further comprising executing a preceding query to obtain aggregate or function values used in the query that satisfy the constraint.
能動イベントが削除された場合、前記能動イベントデータからの前期能動イベントに関連する前記受動イベントデータのいずれかを削除することによって、受動イベントデータおよび能動イベントデータの前記パターンを修正すること
をさらに含む、請求項1に記載の方法。
2. The method of claim 1, further comprising modifying the pattern of passive and active event data by deleting any of the passive event data associated with a previous active event from the active event data if an active event is deleted.
前記能動イベントデータは能動データソースからプッシュされ、前記受動イベントデータは受動データソースからプルされる、請求項1に記載の方法。 The method of claim 1, wherein the active event data is pushed from an active data source and the passive event data is pulled from a passive data source. 前記テンプレート内の各々新たな解および各々の結果について、
前記アサーションをすべて満たしているか否かを判断すること、
前記アサーションをすべて満たしているという判断に応答して、同等の結果を以前にトリガーしたか否かを判断すること、および
前記同等の結果を以前にトリガーしていないという判断に応答して、前記結果をトリガーすること
をさらに含む、請求項1に記載の方法。
For each new solution and each result in the template:
determining whether all of said assertions are satisfied;
2. The method of claim 1, further comprising: in response to determining that all of the assertions are satisfied, determining whether an equivalent outcome has been previously triggered; and in response to determining that the equivalent outcome has not been previously triggered, triggering the outcome.
少なくとも1つのアサーションを満たしておらず、前記同等の結果を以前にトリガーしたという判断に応答して、前記結果をトリガーしないこと
をさらに含む、請求項7に記載の方法。
8. The method of claim 7, further comprising: in response to determining that at least one assertion has not been satisfied and that the equivalent outcome was previously triggered, not triggering the outcome.
前記結果をトリガーすることは、
前記新たな解からイベントデータを作成すること、および
前記新たな解に対して前記作成したイベントデータを発行すること
を含む、請求項7に記載の方法。
Triggering the result comprises:
The method of claim 7 , further comprising: creating event data from the new solution; and publishing the created event data to the new solution.
前記新たな解の前記イベントデータを発行することは、
前記新たな解に対して基本データを生成すること、
前記結果の各データマッピングエントリについて、
前記データマッピングエントリ内で参照したソースイベントからソースイベント値を収集すること、
前記ソースイベント値に対して計算を実行して結果を作成すること、および
前記結果を前記新たな解に置くこと、
前記ソースイベントからエンティティデータを抽出すること、ならびに
前記エンティティデータをエンティティマップの中に集約し、前記エンティティマップは、前記ソースイベント内で参照したエンティティを識別すること
を含む、請求項9に記載の方法。
Publishing the event data of the new solution includes:
generating basis data for said new solution;
For each resulting data mapping entry:
collecting source event values from the source events referenced in said data mapping entries;
performing a calculation on the source event values to generate a result; and placing the result in the new solution.
10. The method of claim 9, comprising extracting entity data from the source events and aggregating the entity data into an entity map, the entity map identifying entities referenced in the source events.
前記アサーションの前記制約を徐々に処理することは、
各分割制約の前に、前記分割制約のソースイベントをターゲットとする制約が来るように、前期分割制約を順序付けすること、
前期分割制約のイベントサブセットを順に生成すること、および
残りの非分割制約を処理すること
を含む、請求項1に記載の方法。
Incrementally processing the constraints of the assertions includes:
ordering the previous split constraints such that each split constraint is preceded by a constraint that targets the source event of the split constraint;
The method of claim 1 , further comprising generating an event subset of the pre-split constraints in order and processing remaining non-split constraints.
前記分割制約の前記イベントサブセットを順に生成することは、
前期分割制約ごとに、
前記分割制約のソースイベントを、前記分割制約が参照した同じフィールド値を有するセットに分離すること、および
前記分割制約のターゲットイベントに由来する非分割制約を、前記前記非分割制約が前記分割制約に出合うまで順に処理すること
を含む、請求項11に記載の方法。
Generating the event subsets of the partitioning constraints in order includes:
For each pre-split constraint,
12. The method of claim 11, comprising: separating source events of the split constraint into sets having the same field value referenced by the split constraint; and processing non-split constraints derived from target events of the split constraint in order until the non-split constraint encounters the split constraint.
前記アサーションの前記制約を徐々に処理することは、
非分割制約をステージにグループ化すること、
前記ステージを順序付けして階層データ構造を形成すること、
各イベントを、前記イベントのイベント定義を有する各々の前記アサーションの複数の部分解の1つに置き、前記部分解は、前記階層データ構造に含まれていること、
前記部分解を分割キーに基づいて分離すること、
共通の分割キーを有する部分解を組み合わせて1つ以上の完全解を形成すること、および
前記組み合わせた部分解を処理して結果にすること
を含む、請求項1に記載の方法。
Incrementally processing the constraints of the assertions includes:
Grouping non-split constraints into stages;
ordering said stages to form a hierarchical data structure;
placing each event into one of a plurality of partial solutions of each of said assertions having an event definition for said event, said partial solutions being included in said hierarchical data structure;
splitting the partial solutions based on a split key;
2. The method of claim 1, comprising combining partial solutions having a common partitioning key to form one or more complete solutions, and processing the combined partial solutions into a result.
前記アサーションの前記制約を徐々に処理することは、前記部分解を前期分割キーに基づいて分離する前に、
オプションステージがあるか否かを判断すること、
オプションステージがあるという判断に応答して、前記オプションステージの順序付けを含めて前記オプションステージを処理し、新たな入力イベントを1ステージごとに処理した後、前のステージから受信した部分解に組み入れるようにすること
をさらに含む、請求項13に記載の方法。
Incrementally processing the constraints of the assertion may include, before splitting the partial solutions based on the partition key,
Determining whether there are optional stages;
14. The method of claim 13, further comprising, in response to determining that there are optional stages, processing the optional stages, including ordering the optional stages, such that new input events are processed stage by stage before being incorporated into the partial solution received from a previous stage.
前記アサーションの前記制約を徐々に処理することは、前記部分解を前記分割キーに基づいて分離した後に、
前記アサーションのいずれかの最小多重度が1より大きいか否かを判断すること、
最小多重度が1より大きいアサーションがないという判断に応答して、
共通の分割キーを有する前記部分解を組み合わせて1つ以上の完全解を形成すること、および
前記組み合わせた部分解を処理して結果にすること、ならびに
少なくとも1つのアサーションの最小多重度が1より大きいという判断に応答して、前記部分解を組みあわせ、前記組み合わせた部分解を、有効または無効な解が見つかるまで保持すること
をさらに含む、請求項13に記載の方法。
Incrementally processing the constraints of the assertion includes, after separating the partial solutions based on the partition key,
determining whether the minimum multiplicity of any of said assertions is greater than one;
in response to determining that there are no assertions with a minimum multiplicity greater than one,
14. The method of claim 13, further comprising combining the partial solutions having a common partition key to form one or more complete solutions and processing the combined partial solutions into a result, and in response to determining that a minimum multiplicity of at least one assertion is greater than one, combining the partial solutions and retaining the combined partial solution until a valid or invalid solution is found.
前記分割キーは、前記部分解の1つ以上の分割フィールドに基づいて形成される、請求項13に記載の方法。 The method of claim 13, wherein the split key is formed based on one or more split fields of the partial solution. データ処理システムであって、
プロセッサと;
命令を保存するために前記プロセッサに接続されているメモリであって、前記命令は、前記プロセッサによって実行されると、プロセッサに動作を実行させる、メモリを有し、前記動作は、
受動イベントデータ、能動イベントデータ、またはこの両方を含むイベントデータを受信すること;
前記受信したイベントデータが受動イベントデータおよび能動イベントデータのパターンに利用可能か否かを判断すること;
前記受信したイベントデータが受動イベントデータおよび能動イベントデータのパターンに利用可能であるとの判断に応答して、前記受動イベントデータと前記能動イベントデータとの間の1つ以上の制約を1つ以上のクエリ用語に変換すること;
前記1つ以上のクエリ用語を使用して少なくとも1つのクエリを構築すること;
前記構築した少なくとも1つのクエリを使用して、前記能動イベントデータの全部ではなく一部に関連する残りの受動イベントデータを取得すること;
前記イベントデータおよび前記残りの受動イベントデータに一致する1つ以上のイベント定義を選択すること;
一致するイベント定義ごとに、前記イベント定義をテンプレートに入力して一連のイベントを生成し、前記テンプレートは、複数のアサーションを含み、前記イベント定義を前記アサーションの1つとして有し、各アサーションは制約を含むこと;
前記アサーションの前記制約を徐々に処理して、前記一連のイベントのサブセットである1つ以上の解を作成すること;ならびに
各制約および各解について、
前記解に対して実行可能な一連のターゲットイベントを識別すること、および
前記解および前記識別した一連のターゲットイベントに基づいて新たな解を作成し、一連の新たな解を作成すること
を含む、
データ処理システム。
1. A data processing system comprising:
A processor;
a memory coupled to the processor for storing instructions that, when executed by the processor, cause the processor to perform operations, the operations including:
receiving event data, including passive event data, active event data, or both;
determining whether the received event data is available for a pattern of passive event data and active event data;
responsive to determining that the received event data is available for a pattern of passive event data and active event data, translating one or more constraints between the passive event data and the active event data into one or more query terms;
constructing at least one query using the one or more query terms;
using the constructed at least one query to obtain remaining passive event data related to some but not all of the active event data;
selecting one or more event definitions that match the event data and the remaining passive event data;
for each matching event definition, inputting the event definition into a template to generate a set of events, the template including a plurality of assertions, the template having the event definition as one of the assertions, each assertion including a constraint;
incrementally processing the constraints of the assertion to generate one or more solutions that are a subset of the set of events; and for each constraint and each solution,
identifying a set of target events that are actionable for the solution; and generating a new solution based on the solution and the identified set of target events to generate a set of new solutions.
Data processing system.
前記残りの受動イベントデータを取得することは、
前記構築した少なくとも1つのクエリを使用してクエリ結果を取得すること、
前記クエリ結果に対して制約解消を実行すること、および
前記クエリ結果を、前記制約解消を通過する前記残りの受動イベントデータとして保持すること
を含む、請求項17に記載のシステム。
Obtaining the remaining passive event data includes:
obtaining a query result using the constructed at least one query;
20. The system of claim 17, further comprising: performing constraint solving on the query results; and retaining the query results as the remaining passive event data that passes through the constraint solving.
前記1つ以上のクエリ用語は、曖昧な用語であり、前記少なくとも1つのクエリは、2つ以上のクエリである、請求項17に記載のシステム。 The system of claim 17, wherein the one or more query terms are ambiguous terms and the at least one query is two or more queries. 前記動作は、
先行のクエリを実行して、制約を満たしているクエリで使用される集計の値または関数値を取得すること
をさらに含む、請求項17に記載のシステム。
The operation includes:
20. The system of claim 17, further comprising executing the preceding query to obtain aggregate or function values used in the query that satisfy the constraint.
前記動作は、
能動イベントが削除された場合、前記能動イベントデータからの前期能動イベントに関連する前記受動イベントデータのいずれかを削除することによって、受動イベントデータおよび能動イベントデータの前記パターンを修正すること
をさらに含む、請求項17に記載のシステム。
The operation includes:
20. The system of claim 17, further comprising: if an active event is deleted, modifying the pattern of passive and active event data by deleting any of the passive event data associated with the previous active event from the active event data.
前記能動イベントデータは能動データソースからプッシュされ、前記受動イベントデータは受動データソースからプルされる、請求項17に記載のシステム。 The system of claim 17, wherein the active event data is pushed from an active data source and the passive event data is pulled from a passive data source.
JP2024514016A 2021-09-03 2022-09-02 Event processing system and method - Patents.com Pending JP2024536720A (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/446,924 2021-09-03
US17/446,924 US11698907B2 (en) 2018-02-28 2021-09-03 System and method for processing of events
PCT/US2022/042519 WO2023034603A1 (en) 2021-09-03 2022-09-02 System and method for processing of events

Publications (1)

Publication Number Publication Date
JP2024536720A true JP2024536720A (en) 2024-10-08

Family

ID=85412941

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2024514016A Pending JP2024536720A (en) 2021-09-03 2022-09-02 Event processing system and method - Patents.com

Country Status (3)

Country Link
EP (1) EP4397014A4 (en)
JP (1) JP2024536720A (en)
WO (1) WO2023034603A1 (en)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8590021B2 (en) * 2009-01-23 2013-11-19 Microsoft Corporation Passive security enforcement
EP2589181A1 (en) * 2010-06-29 2013-05-08 Telefonaktiebolaget LM Ericsson (publ) Method and apparatus for analysis of the operation of a communication system using events
US11190538B2 (en) * 2018-01-18 2021-11-30 Risksense, Inc. Complex application attack quantification, testing, detection and prevention
US11126478B2 (en) * 2018-02-28 2021-09-21 Cogility Software Corporation System and method for processing of events

Also Published As

Publication number Publication date
EP4397014A1 (en) 2024-07-10
WO2023034603A1 (en) 2023-03-09
EP4397014A4 (en) 2025-06-11

Similar Documents

Publication Publication Date Title
US11379506B2 (en) Techniques for similarity analysis and data enrichment using knowledge sources
US10810472B2 (en) Techniques for sentiment analysis of data using a convolutional neural network and a co-occurrence network
US11126478B2 (en) System and method for processing of events
US10891272B2 (en) Declarative language and visualization system for recommended data transformations and repairs
JP5697172B2 (en) Method and system for processing information in an information stream
EP3594821B1 (en) Managing data profiling operations related to data type
US11120086B2 (en) Toponym disambiguation
CN109446341A (en) The construction method and device of knowledge mapping
CN110476151A (en) K selection using parallel processing
US11698907B2 (en) System and method for processing of events
WO2022098941A1 (en) System and method for email signature extraction from unstructured text
Ahsaan et al. Big data analytics: challenges and technologies
JP2024536720A (en) Event processing system and method - Patents.com
Liu et al. Beyond Function-Level Search: Repository-Aware Dual-Encoder Code Retrieval with Adversarial Verification
Zhang et al. A effective truth discovery algorithm with multi-source sparse data
JP5914186B2 (en) Information processing apparatus and information processing method
US10296990B2 (en) Verifying compliance of a land parcel to an approved usage
Haas Protocol to discover machine-readable entities of the ecosystem management actions taxonomy
Zhang et al. Smart Contract Code Clone Detection Based on Pre-training Techniques
CN116821160A (en) Correlation updating method, device, equipment and medium based on user behavior track information
Wu et al. Tuple Measure Model Based on CFI-Apriori Algorithm
Xu et al. MapReduce-based Parallelized Approximation of Frequent Itemsets Mining in Uncertain Data
Rui et al. Web Database Sampling Based on Dependency of Keywords

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20250827