Dynamic pattern matching code generation

US11093218B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-11093218-B2
Application numberUS-201715650455-A
CountryUS
Kind codeB2
Filing dateJul 14, 2017
Priority dateJul 14, 2017
Publication dateAug 17, 2021
Grant dateAug 17, 2021

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

An intermediate representation of a workflow of one or more modules may be generated to decouple language implementations of the one or more modules. In response to receiving a workflow of one or more modules, the workflow may be analyzed to determine an optimal implementation language for each of the one or more modules to thereby reduce effects of data marshalling. An intermediate representation of the workflow that is configured to decouple any implementation languages associated with the one or more modules may be generated. To allow for decoupling, the intermediate representation may be written in a declarative language. The generated intermediate representation may then be compiled to generate an executable program that corresponds to the workflow and is implemented in the determined optimal language for each of the one or more modules.

First claim

Opening claim text (preview).

What is claimed: 1. A computer system comprising: one or more processors; and one or more computer-readable storage media having stored thereon computer-executable instructions that are executable by the one or more processors to cause the computer system to generate code that is specific to a particular augmented finite automaton for efficient identification of patterns within a stream of data, the identification of patterns being based on processing one or more events in the stream of data, the computer-executable instructions including instructions that are executable to configure the computer system to perform at least the following: access a specification corresponding to an augmented finite automaton that is configured to identify one or more patterns within a stream of data, the augmented finite automaton comprising a directed graph with nodes representing states of pattern detection, with edges between the nodes comprising arcs that define transitions between the different states, each arc including a fence function and a transfer function, the fence function defining when each corresponding arc is triggered and the transfer function including a counter element for tracking a count within a register associated with the corresponding arc, wherein the fence function and the transfer function are operable to define conditions for the augmented finite automaton to transition from one state to another state while identifying events and/or patterns within the stream of data; analyze the specification corresponding to the augmented finite automaton; based on the analysis of the specification corresponding to the augmented finite automaton, identify one or more characteristics associated with the specification corresponding to the augmented finite automaton, the one or more characteristics including at least the transfer function and the fence function for a corresponding arc; based on the identified one or more characteristics, dynamically generate code specific to the augmented finite automaton that is configured to identify the one or more patterns within the stream of data by at least transitioning between different states in response to a triggering of the corresponding arc caused by the fence function and the transfer function being satisfied; and configure the code to identify events in the stream of data and to process the events to identify patterns in the stream of data by at least configuring the code to cause transitioning between the different states of pattern detection according to the augmented finite automaton specification in response to event data in the stream of data satisfying the fence function and the transfer function for triggering the corresponding arc associated with the transitioning. 2. The computer system in accordance with claim 1 , wherein the accessed specification corresponding to the augmented finite automaton comprises an augmented finite automaton that has been generated using a software programming language. 3. The computer system in accordance with claim 2 , wherein the software programming language comprises one or more of C#, C++, and Java. 4. The computer system in accordance with claim 1 , wherein the one or more characteristics associated with the specification corresponding to the augmented finite automaton further comprises at least a grouping factor and at least a determinism factor. 5. The computer system in accordance with claim 1 , wherein the computer-executable instructions further include instructions that are executable to cause the computer system to, in response to receiving the stream of data, utilize the dynamically generated code to identify the one or more patterns within the stream of data. 6. The computer system in accordance with claim 1 , wherein the register is configured to aid in identifying complex patterns within the stream of data. 7. The computer system in accordance with claim 1 , wherein based on the one or more characteristics associated with the specification corresponding to the augmented finite automaton, the dynamically generated code is further configured to identify overlapping instances of pattern matches. 8. A method, implemented at a computer system that includes one or more processors, for generating code that is specific to a particular augmented finite automaton for efficient identification of patterns within a stream of data, the identification of patterns being based on processing one or more events in the stream of data, comprising: accessing a specification corresponding to an augmented finite automaton that is configured to identify one or more patterns within a stream of data, the augmented finite automaton comprising a directed graph with nodes representing states of pattern detection, with edges between the nodes comprising arcs that define transitions between the different states, each arc including a fence function and a transfer function, the fence function defining when each corresponding arc is triggered and the transfer function including a counter element for tracking a count within a register associated with the corresponding arc, wherein the fence function and the transfer function are operable to define conditions for the augmented finite automaton to transition from one state to another state while identifying events and/or patterns within the stream of data; analyzing the specification corresponding to the augmented finite automaton; based on the analysis of the specification corresponding to the augmented finite automaton, identifying one or more characteristics associated with the specification corresponding to the augmented finite automaton, the one or more characteristics including at least the transfer function and the fence function for a corresponding arc; based on the identified one or more characteristics, dynamically generating code specific to the augmented finite automaton that is configured to identify the one or more patterns within the stream of data by at least transitioning between different states in response to a triggering of the corresponding arc caused by the fence function and the transfer function being satisfied; and configuring the code to identify events in the stream of data and to process the events to identify patterns in the stream of data by at least configuring the code to cause transitioning between the different states of pattern detection according to the augmented finite automaton specification in response to event data in the stream of data satisfying the fence function and the transfer function for triggering the corresponding arc associated with the transitioning. 9. The method in accordance with claim 8 , wherein the accessed specification corresponding to the augmented finite automaton comprises an augmented finite automaton that has been generated using a software programming language. 10. The method in accordance with claim 9 , wherein the software programming language comprises one or more of C#, C++, and Java. 11. The method in accordance with claim 8 , wherein the one or more characteristics associated with the specification corresponding to the augmented finite automaton further comprises at least a grouping factor and at least a determinism factor. 12. The method in accordance with claim 8 , further comprising, in response to receiving the stream of data, utilizing the dynamically generated code to identify the one or more patterns within the stream of data. 13. The method in accordance with claim 8 , wherein the register is configured to aid in identifying complex patterns within the stream of data. 14. The method in accordance with claim 8 , wherein the specification corresponding to th

Assignees

Inventors

Classifications

  • by using string matching techniques · CPC title

  • Subject matter not provided for in other groups of this subclass · CPC title

  • Runtime code conversion or optimisation · CPC title

  • G06F8/315Primary

    Object-oriented languages · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US11093218B2 cover?
An intermediate representation of a workflow of one or more modules may be generated to decouple language implementations of the one or more modules. In response to receiving a workflow of one or more modules, the workflow may be analyzed to determine an optimal implementation language for each of the one or more modules to thereby reduce effects of data marshalling. An intermediate representat…
Who is the assignee on this patent?
Microsoft Technology Licensing Llc
What technology area does this patent fall under?
Primary CPC classification G06F16/90344. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Aug 17 2021 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 2 related publications on this page (citations in our corpus or others sharing the same primary CPC).