# US 2018/0322170 A1 · Event processing system

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2018/0322170 A1
- Document ID: US20180322170A1
- Status: Published application
- Kind: A1
- Application number: 15/588,306
- Filed: 2017-05-05
- Published: 2018-11-08
- Earliest claimed: 2017-05-05
- Applicants: Mediasift Limited
- Inventors: Lorenzo ALBERTON; Ashley David JEFFS
- Web page: https://patentgrep.com/patent/US20180322170A1

## CPC

- G06F 16/24568: {Data stream processing; Continuous queries}
- G06F 16/24552: {Database cache management}
- G06F 21/6254: {by anonymising data, e.g. decorrelating personal data from the owner's identification}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

This disclosure relates to the processing of user events. In particular, it addresses various problems relating to the augmentation of a user event—received in a data stream of sequenced events—with data of one or more cooperating reference data items. For example, the augmented user events may be stored in an index on which queries can be run in real-time to extract aggregate and preferably anonymized information from those events according to the queries. Other example use-cases are also disclosed.

## Claims

### Claim 1

An event processing system for creating an index of events relating to published content, wherein the events are stored in the index and the index is queryable to extract aggregate information pertaining to the stored events for releasing to a querying device, the event processing system comprising:
a processing stage configured to receive content-related events and reference events for the content-related events, the events having identifiers to allow cooperating content-related and reference events to be matched, wherein the events are received in at least one data stream whereby a later content-related event may arrive at the processing stage at a time prior to an earlier cooperating reference event;
a buffer for holding content-related events;
computer storage for caching reference events for comparison with later content-related events in the buffer;
wherein the processing stage is configured to enrich the reference events with metadata, and store in the index the enriched reference events comprising the metadata, wherein a copy of the enriched reference events comprising the metadata is cached in the computer storage; and
wherein the processing stage is configured to check for each received content-related event if there is an earlier cooperating reference event in the computer storage, and:
1) if so, augment the received content-related event with a copy of the metadata from the earlier cooperating reference event in the computer storage and store the augmented event in the index, and
2) if not, hold the received content-related event in the buffer and check the computer storage again at a later time to determine if the earlier cooperating reference event has arrived.

### Claim 2 (depends on 1)

An event processing system according to claim 1, wherein, at step 2), the processing stage is configured to continue checking other content consuming events of the stream of content consuming events whilst the received content consuming is being held in the buffer.

### Claim 3 (depends on 1)

An event processing system according to claim 1, wherein the buffer comprises a retry queue.

### Claim 4 (depends on 3)

An event processing system according to claim 3, wherein the retry queue is one of a plurality of retry queues of the event processing system having different retry delays.

### Claim 5 (depends on 4)

An event processing system according to claim 4, wherein the retry queue is selected for the received content-related event from the plurality of retry queues based on: a type of the received content-related event, or a type of the reference event.

### Claim 6 (depends on 4)

An event processing system according to claim 4, wherein the retry queue is selected for the received content-related event from the plurality of retry queues based on: a number of checks that have been performed for that event, or a duration for which checks have been performed for that event.

### Claim 7 (depends on 6)

An event processing system according to claim 6, wherein the data processing state is configured to additionally augment at least one of the content-related events with data of a third streamed event from the third data stream cached in the computer storage.

### Claim 8 (depends on 7)

An event processing system according to claim 7, wherein the third event is located in the computer storage by matching an identifier in the reference event with an identifier in the third event.

### Claim 9 (depends on 7)

An event processing system according to claim 7, wherein the third event is located in the computer storage by matching an identifier in the content-related event with an identifier in the third event.

### Claim 10 (depends on 1)

An event processing system according to claim 1, wherein the content-related events are content publication events.

### Claim 11 (depends on 1)

An event processing system according to claim 1, wherein the content-related events are content consuming events.

### Claim 12 (depends on 11)

An event processing system according to claim 11, wherein the reference events are content-publication events.

### Claim 13 (depends on 1)

An event processing system according to claim 1, wherein at least some of the reference events are received in the same data stream as the content-related events.

### Claim 14 (depends on 1)

An event processing system according to claim 1, wherein the content-related events and at least some of the reference events are received in separate data streams.

### Claim 15

A method of augmenting user events, relating to user activity on a platform, with data of reference data items having different reference data types, the method comprising:
receiving, at a data processing stage, the user events to be augmented and the reference data items for augmenting the user events, the user events arriving at the data processing stage as a data stream of sequenced events;
caching the reference data items in computer storage; and
for each of the user events to be augmented, performing an augmentation process for at least one identifier in the user event by:
matching a type of the identifier in the user event with a first of the multiple reference data types, and
checking whether a matching reference data item of the first reference data type is available in the computer storage by comparing the identifier in the user event with identifiers of the cached reference data item of the first reference data type, and if a match is found:
augmenting the user event with data of the matching reference data item of the first reference data type, and
repeating the augmentation process for at least one identifier in the matching reference data item of the first reference data type by: matching a type of that identifier with a second of the multiple reference data types, and checking whether a matching reference data item of the second reference data type is available in the computer storage by comparing that identifier with identifiers of the cached reference data items of the second reference data type, and if a match is found: further augmenting the user event with data of the matching reference data item of the second reference data type.

### Claim 16 (depends on 15)

A method according to claim 15, wherein if no matching reference data item of the first reference data type is found, the user event is held in a buffer and the method comprises checking the computer storage again at a later time to determine if the matching reference data item of the first reference data type has arrived.

### Claim 17 (depends on 15)

A method according to claim 15, wherein if no matching reference data item of the second reference data type is found, the user event augmented with the data of the reference data item of the first type is held in a buffer and the method comprises checking the computer storage again at a later time to determine if the matching reference data item of the second reference data type has arrived.

### Claim 18 (depends on 15)

A method according to claim 15, wherein at least one of the user events to be augmented comprises multiple identifiers, and the augmentation process is performed for each of those identifiers.

### Claim 19 (depends on 15)

A method according to claim 15, wherein the reference data item of the first reference data type comprises multiple identifiers and the augmentation process is performed for each of those identifiers.

### Claim 20 (depends on 15)

A method according to claim 15, wherein the augmentation process is repeated again for at least one identifier in the reference data item of the second reference data type by: determining a type of that identifier as a third of the multiple reference data types, and checking whether a matching reference data item of the third reference data type is available in the computer storage by comparing that identifier with identifiers of the cached reference data items of the third reference data type, and if a match is found: further augmenting the user event with data of the matching reference data item of the third reference data type.

### Claim 21 (depends on 15)

A method according to claim 15, wherein the computer storage embodies multiple reference data stores for the different reference data types and the reference data item are allocated to the reference data stores for caching according to reference data type;
wherein the augmentation process comprises selecting one of the reference data stores by matching the identifier type with the reference data type for that data store, and checking the selected data store for the matching reference data item of that type.

### Claim 22 (depends on 15)

A method according to claim 15, wherein each of the cached reference data items is cached in association with an indicator of a type of that reference event.

### Claim 23 (depends on 15)

A method according to claim 15, the augmentation is performed by generating a modified field, from at least one field in the reference data item, and incorporating the modified field into the user event.

### Claim 24 (depends on 23)

A method according to claim 23, wherein the modified field is generated by renaming the at least one field.

### Claim 25 (depends on 15)

A method according to claim 15, wherein the computer storage embodies multiple data stores for caching the reference events.

### Claim 26 (depends on 25)

A method according to claim 25, wherein reference events are initially cached in both a primary one of the data stores and a secondary one of the reference data stores, and evicted from the primary data store if not accessed within a time limit.

### Claim 27 (depends on 25)

A method according to claim 25, wherein each of the data stores is associated with a different compression algorithm used to compress reference events for caching in that data store.

### Claim 28 (depends on 15)

A method according to claim 15, wherein the reference data items are reference events, each being received in the same data stream as the user events or in a separate data stream of sequenced events.

### Claim 29 (depends on 15)

A method according to claim 15, wherein the reference data items constitute a static data set that is periodically refreshed.

### Claim 30

A computer program product for augmenting user events, relating to user activity on a platform, with data of reference data items having different reference data types, the computer program product comprising computer readable instructions stored on a non-transitory computer readable storage medium, the computer readable instructions being configured, when executed, to implement steps of:
receiving, at a data processing stage, the user events to be augmented and the reference data items for augmenting the user events, the user events arriving at the data processing stage as a data stream of sequenced events;
caching the reference data items in computer storage; and
for each of the user events to be augmented, performing an augmentation process for at least one identifier in the user event by:
matching a type of the identifier in the user event with a first of the multiple reference data types, and
checking whether a matching reference data item of the first reference data type is available in the computer storage by comparing the identifier in the user event with identifiers of the cached reference data item of the first reference data type, and if a match is found:
augmenting the user event with data of the matching reference data item of the first reference data type, and
repeating the augmentation process for at least one identifier in the matching reference data item of the first reference data type by: matching a type of that identifier with a second of the multiple reference data types, and checking whether a matching reference data item of the second reference data type is available in the computer storage by comparing that identifier with identifiers of the cached reference data items of the second reference data type, and if a match is found: further augmenting the user event with data of the matching reference data item of the second reference data type.

### Claim at position 31

31-38. (canceled)
