Prosecution Insights
Last updated: July 17, 2026
Application No. 18/670,461

SYSTEMS AND METHODS FOR DATAFLOW GRAPH OPTIMIZATION

Final Rejection §103
Filed
May 21, 2024
Priority
May 30, 2018 — continuation of 12/032,631
Examiner
ZHAO, YU
Art Unit
2169
Tech Center
2100 — Computer Architecture & Software
Assignee
Ab Initio Technology LLC
OA Round
2 (Final)
52%
Grant Probability
Moderate
3-4
OA Rounds
2y 0m
Est. Remaining
94%
With Interview

Examiner Intelligence

Grants 52% of resolved cases
52%
Career Allowance Rate
191 granted / 365 resolved
-2.7% vs TC avg
Strong +41% interview lift
Without
With
+41.3%
Interview Lift
resolved cases with interview
Typical timeline
4y 2m
Avg Prosecution
8 currently pending
Career history
377
Total Applications
across all art units

Statute-Specific Performance

§101
3.8%
-36.2% vs TC avg
§103
92.5%
+52.5% vs TC avg
§102
1.0%
-39.0% vs TC avg
§112
2.4%
-37.6% vs TC avg
Black line = Tech Center average estimate • Based on career data from 365 resolved cases

Office Action

§103
DETAILED ACTION Notice of Pre-AIA or AIA Status The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA . Response to Amendment Acknowledgment is made of applicant’s amendment filed on 31 March 2026. Claims 2-21 are presented for examination. Claim 1 is cancelled. Information Disclosure Statement The information disclosure statement (IDS) submitted on 31 March 2026 is in compliance with the provisions of 37 CFR 1.97. Accordingly, the information disclosure statement is being considered by the examiner. Priority It is acknowledged that the pending application claims priority to non-provisional application 15/993,284 filed on 30 May 2018. Priority date of 30 May 2018 is given. Response to Argument Applicant’s arguments filed in the amendment filed on 31 March 2026, have been fully considered but they are not deemed persuasive: Applicant argued that “In rejecting claim 2, the Office Action (pp.15-16) alleges that Schechter (9191 4, 28-29, 44, 49- 50, 52, 56, 69, 72, 78) describes the above-quoted language. It does not. Instead, Schechter (PP 4, 28-29, 44, 49-50, 52) describes that a node in a dataflow graph can be configured to execute a custom graph function, which may be a regular expression or a pattern matching expression. Thus, when a dataflow graph executes, the custom graph function associated with a node in the graph may be executed. Therefore, the mention of "pattern matching expression" in Schechter relates to a function that a dataflow graph performs during its execution, and this function - performed by a dataflow graph during its execution - has absolutely nothing to do with operations performed to optimize a dataflow graph prior to its execution. (See Declaration Я 12-13). The cited portions of Schechter do not describe identifying a portion of a dataflow graph to optimize by identifying nodes in the dataflow graph that represent data processing operations which commute with one another, much less using "an expression of a dataflow graph pattern matching language" to identify, prior to execution of a dataflow graph, the nodes in the dataflow graph that represent data processing operations that commute with one another. (See Declaration II 12-13). Moreover, although Schechter (9191 56, 72) describes altering the dataflow graph to generate an optimized dataflow graph (e.g., by merging or removing graph components), these paragraphs simply do not describe identifying a portion of a dataflow graph to optimize by identifying nodes in the dataflow graph that represent data processing operations which commute with one another, much less using "an expression of a dataflow graph pattern matching language" for identifying the nodes in the dataflow graph that represent data processing operations that commute with one another. (See Declaration III 12, 14). Thus, these passages of Schechter also fail to describe at least the above-quoted language of claim 2. (See Declaration III 12, 14).” Examiner respectfully disagrees. Schechter, paragraph [0076], recites “FIG. 12 is a flowchart 1200 showing exemplary operations of a graph generation computer system 706 (shown in FIG. 7). In step 1202, the graph generation computer system receives a query plan, for example, a query plan produced by a query plan generator of a query planning computer system. The query plan represents operations for executing a database query on at least one input representing a source of data. In step 1204, the graph generation computer system uses a graph generation engine to produce a dataflow graph from the query plan based on the operations described in the query plan. The resulting dataflow graph includes at least one node that represents at least one operation represented by the query plan, and includes at least one link that represents at least one dataflow associated with the query plan. In step 1206, the graph generation computer system alters components of the dataflow graph based on a characteristic of the input representing the source of data. The components may be altered to optimize the dataflow graph, for example, to reduce the number of components in the dataflow graph.” which does not disclose “executing a dataflow graph” or “dataflow graph during its execution.” At the most Schechter discloses nodes in dataflow graph are linked to executable processes. These processes are “executable” does not meaning “dataflow graph” is executed or “executable processes” are executing when dataflow graph is generated. Schechter discloses when the query is executed, query plan generator generates a query plan. The graph generation computer system uses a graph generation engine to produce a dataflow graph from the query plan. After the dataflow graph is generated, Schechter discloses the graph generation computer system alters components of the dataflow graph based on a characteristic of the input representing the source of data. If the dataflow graph is executed after optimizing the dataflow graph, it will not save any time and resources. Therefore dataflow graph optimization is performed before dataflow graph is expected. Paragraph [0056],“ The dataflow graph 716 can be converted by a graph optimizer 704 to an optimized dataflow graph 718…After the optimized dataflow graph 718 is generated, the optimized dataflow graph 718 can be provided to the database management computer system 744 for execution.” Where “after” indicates optimizing a “dataflow graph” is prior to its execution. Further, the claim language merely recites “pattern matching language.” Schechter discloses dataflow graph optimization which require to identify pattern which will require some language (e.g. to perform the function “matching”). If claim language recites specific “pattern matching language” than, it will overcome the cited references For the above reasons, the rejection is maintained. Claim Rejections - 35 USC § 103 In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status. The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action: A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made. Claims 2, 3, 5, 8-14, 16-18 and 20-21 are rejected under 35 U.S.C. 103 as being unpatentable over Schechter et al. (U.S. Pub. No.: US 20120284255, hereinafter Schechter), in view of Pandis et al. (U.S. Patent No.: US 10528599, hereinafter Pandis). For claim 2, Schechter discloses a method for use by a data processing system to optimize dataflow graphs and execute optimized dataflow graphs, the data processing system configured to read data from one or more data sources and/or write data to one or more data sinks, the method comprising: using at least one computer hardware processor to perform (Schechter: paragraph [0006], “…a computer-readable medium stores a computer program for generating a dataflow graph representing a database query, and the computer program includes instructions for causing a computer to receive a query plan from a plan generator” Paragraph [0009], “…a system for generating a dataflow graph…a processor configured to produce a dataflow graph from the query plan provided by the plan generator…”): generating an initial data structure embodying an initial dataflow graph, the initial dataflow graph comprising a first plurality of nodes representing a first plurality of data processing operations to be performed on data and a first plurality of links representing flows of data among nodes in the first plurality of nodes (Schechter: Paragraph [0004], “…generating a dataflow graph representing a database query…the query plan representing operations for executing a database query on at least one input representing a source of data ,producing a dataflow graph from the query plan, wherein the dataflow graph includes at least one node that represents at least one operation represented by the query plan, and includes at least one link that represents at least one dataflow…” paragraph [0005], “…The at least one operation is capable of being performed by executable functionality associated with the source of data represented by the at least one input…” paragraph [0023], “…a dataflow may be provided through a directed graph, with components of the computation being associated with the vertices of the graph and dataflows between the components corresponding to links (arcs, edges) of the graph…” Paragraph [0044], “…the dataflow graph 312 has nodes representing operations described in the query plan, and node links representing flows of data between the operations…” paragraph [0051], “…operate on a database query that is constructed to operate on input data acquired from multiple data sources and/or multiple types of data sources…”); generating, based on the initial dataflow graph, an updated data structure embodying an updated dataflow graph, the updated dataflow graph comprising one or more input nodes representing the one or more data sources, one or more output nodes representing the one or more data sinks, a second plurality of nodes representing a second plurality of data processing operations to be performed on data and a second plurality of links representing flows of data among nodes in the second plurality of nodes, the generating comprising (Schechter: Paragraph [0004], paragraph [0023], Paragraph [0044], “…the dataflow graph 312 has nodes representing operations described in the query plan, and node links representing flows of data between the operations…”, paragraph [0051], “…operate on a database query that is constructed to operate on input data acquired from multiple data sources and/or multiple types of data sources…” paragraph [0056], “The dataflow graph 716 can be converted by a graph optimizer 704 to an optimized dataflow graph 718…Some of the operations carried out by the dataflow graph 716 may be redundant and can be removed or consolidated with other operations…” paragraph [0069], “…FIG. 10 shows a query plan 1010 undergoing transformation to an optimized dataflow graph 1030…a dataflow graph 1020…” paragraph [0072], “…The dataflow graph 1020 can be converted 1018 (e.g., by a graph optimizer such as the graph optimizer 704 shown in FIG. 7) to an optimized dataflow graph 1030…” Fig. 10, dataflow graph 1030): identifying a first portion of the initial dataflow graph to which a first optimization rule is to be applied, the identifying performed in part by using an expression of a dataflow graph pattern matching language to identify nodes in the initial dataflow graph that represent data processing operations that commute with one another (Schechter: Paragraph [0004], “…the dataflow graph 312 has nodes representing operations described in the query plan…,” paragraphs [0028]-[0029], paragraph [0052], “FIG. 7 shows a graph generation computer system 706 that includes a graph generation engine 908 and a graph optimizer 704” Paragraph [0044], “…the dataflow graph 312 has nodes representing operations described in the query plan, and node links representing flows of data between the operations…”, : Paragraphs [0049]-[0050], “When the dataflow graph 606 is generated 608, the custom graph function 602 could act as a node 610 of the dataflow graph…custom graph function may be a function used to execute a regular expression or pattern matching expression…” paragraph [0056], “The dataflow graph 716 can be converted by a graph optimizer 704 to an optimized dataflow graph 718…the dataflow graph 716 can be executed by a computer system…Some of the operations carried out by the dataflow graph 716 may be redundant and can be removed or consolidated with other operations. For example, the dataflow graph 716 may include a group of components that can be merged into a single component that performs the same operations as would the group of components. The graph optimizer 704 analyzes the dataflow graph 716 and performs an optimization to alter the dataflow graph, for example, to remove redundant components, merge components, and otherwise reduce the number of components in the dataflow graph 716 to generate the optimized dataflow graph 718…the optimized dataflow graph 718 can be provided to the database management computer system 744 for execution.” paragraph [0069], “…FIG. 10 shows a query plan 1010 undergoing transformation to an optimized dataflow graph 1030…The query plan 1010 represents a federated query and has two database tables 1012, 1014 as input. The query plan can be converted 1016 to a dataflow graph 1020…” Paragraph [0072], “The dataflow graph 1020 can be converted 1018 (e.g., by a graph optimizer such as the graph optimizer 704 shown in FIG. 7) to an optimized dataflow graph 1030 in which some of the components have been removed based on the internal functionality of the data selection component 1022 and the data component 1026. Because the data selection component 1022 includes rollup functionality, the data selection component 1022 and its associated rollup component 1024 can be merged into a combined data selection component 1032 incorporating the rollup operations otherwise performed by the rollup component 1024…” Paragraph [0078], “…Each such computer program is preferably stored on or downloaded to a storage media or device (e.g., solid state memory or media, or magnetic or optical media) readable by a general or special purpose programmable computer, for configuring and operating the computer when the storage media or device is read by the computer system to perform the procedures described herein…”); and applying the first optimization rule to the identified first portion of the initial dataflow graph (Schechter: paragraphs [0028]-[0029], paragraph [0052], “FIG. 7 shows a graph generation computer system 706 that includes a graph generation engine 908 and a graph optimizer 704” paragraph [0056], “The dataflow graph 716 can be converted by a graph optimizer 704 to an optimized dataflow graph 718…the dataflow graph 716 can be executed by a computer system…Some of the operations carried out by the dataflow graph 716 may be redundant and can be removed or consolidated with other operations. For example, the dataflow graph 716 may include a group of components that can be merged into a single component that performs the same operations as would the group of components. The graph optimizer 704 analyzes the dataflow graph 716 and performs an optimization to alter the dataflow graph, for example, to remove redundant components, merge components, and otherwise reduce the number of components in the dataflow graph 716 to generate the optimized dataflow graph 718…the optimized dataflow graph 718 can be provided to the database management computer system 744 for execution.” Paragraphs [0049]-[0050], “When the dataflow graph 606 is generated 608, the custom graph function 602 could act as a node 610 of the dataflow graph…custom graph function may be a function used to execute a regular expression or pattern matching expression…” Paragraph [0072], “The dataflow graph 1020 can be converted 1018 (e.g., by a graph optimizer such as the graph optimizer 704 shown in FIG. 7) to an optimized dataflow graph 1030 in which some of the components have been removed based on the internal functionality of the data selection component 1022 and the data component 1026. Because the data selection component 1022 includes rollup functionality, the data selection component 1022 and its associated rollup component 1024 can be merged into a combined data selection component 1032 incorporating the rollup operations otherwise performed by the rollup component 1024…” Paragraph [0078], “…Each such computer program is preferably stored on or downloaded to a storage media or device (e.g., solid state memory or media, or magnetic or optical media) readable by a general or special purpose programmable computer, for configuring and operating the computer when the storage media or device is read by the computer system to perform the procedures described herein…”); and executing the updated dataflow graph at least in part by: reading input data from the one or more data sources represented by the one or more input nodes, performing the second plurality of data processing operations on the input data by executing a first data processing operation represented by a first node using a first computer system process and executing a second data processing operation represented by a second node linked to the first node using a second computer system process different from the first computer system process (Schechter: paragraph [0005], “Altering one or more components of the dataflow graph includes removing at least one component of the dataflow graph. The component of the graph corresponds to an operation represented by the query plan. The at least one operation is capable of being performed by executable functionality associated with the source of data represented by the at least one input. A characteristic of the at least one input includes executable functionality associated with the source of data represented by the input. …The method also includes identifying functionality associated with a database associated with a component representing the at least one source of data, and based on the identification, configuring the component to provide a database query to the database. The at least one input representing a dataset includes at least one of a data file, a database table, output of a second dataflow graph, and a network socket. Output of the dataflow graph is assigned to at least one of a data file, a database table, a second dataflow graph, and a network socket. The database query includes an SQL query. The dataflow graph includes a component configured to receive output from the plan generator.” Paragraph [0046], “…the database management computer system 304 can execute operations of the dataflow graph 312 and use the database table 326 in order to produce results 402 of the database query. The database management computer system 304 provides the database table 326 to one or more nodes 404a, 404b, 404c of the dataflow graph 312 and executes the dataflow graph using the graph execution engine 306. The graph execution engine 306 performs the operations represented by the nodes 404a, 404b, 404c of the dataflow graph 312, which correspond to database operations for executing the underlying database query. Further, links 408a, 408b, 408c between the nodes represent flows of data between the database operations as the database table is processed. The dataflow graph 312 outputs the results 402 of the database query…”), and writing output data obtained as a result of performing the second plurality of data processing operations to the one or more data sinks represented by the one or more output nodes (Schechter: paragraph [0005], “Altering one or more components of the dataflow graph includes removing at least one component of the dataflow graph. The component of the graph corresponds to an operation represented by the query plan. The at least one operation is capable of being performed by executable functionality associated with the source of data represented by the at least one input. A characteristic of the at least one input includes executable functionality associated with the source of data represented by the input. …The method also includes identifying functionality associated with a database associated with a component representing the at least one source of data, and based on the identification, configuring the component to provide a database query to the database. The at least one input representing a dataset includes at least one of a data file, a database table, output of a second dataflow graph, and a network socket. Output of the dataflow graph is assigned to at least one of a data file, a database table, a second dataflow graph, and a network socket. The database query includes an SQL query. The dataflow graph includes a component configured to receive output from the plan generator.” Paragraph [0046], “…the database management computer system 304 can execute operations of the dataflow graph 312 and use the database table 326 in order to produce results 402 of the database query. The database management computer system 304 provides the database table 326 to one or more nodes 404a, 404b, 404c of the dataflow graph 312 and executes the dataflow graph using the graph execution engine 306. The graph execution engine 306 performs the operations represented by the nodes 404a, 404b, 404c of the dataflow graph 312, which correspond to database operations for executing the underlying database query. Further, links 408a, 408b, 408c between the nodes represent flows of data between the database operations as the database table is processed. The dataflow graph 312 outputs the results 402 of the database query …”). However, Schechter do not explicitly disclose performing the second plurality of data processing operations on the input data by executing a first data processing operation represented by a first node using a first computer system process and executing a second data processing operation represented by a second node linked to the first node using a second computer system process different from the first computer system process. Pandis discloses executing, performing the second plurality of data processing operations on the input data by executing a first data processing operation represented by a first node using a first computer system process and executing a second data processing operation represented by a second node linked to the first node using a second computer system process different from the first computer system process (Pandis: column 3, lines 36-46, “As discussed below with regard to FIGS. 6-8B, different techniques may be implemented to reassign operations that could be executed locally at request execution 130 to remote request execution 160. For example, filter operations may be reassigned as remote operations…”); It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to improve upon “MANAGING DATA QUERIES” as taught by Schechter by implementing “Tiered data processing for distributed data” as taught by Pandis, because it would provide Schechter’s modified medium with the enhanced capability of “generate a centralized execution plan for performing an access request directed to a distributed data that leverages the performance improvements of distributed processing” (Pandis: column 2, lines 59-64), in order to “without sacrificing the execution performance optimizations that may be obtained assigning data processing operations to remote data processing engines” (Pandis: column 2, lines 59-64). For claim 3, Schechter and Pandis disclose the method of claim 2, wherein identifying the first portion of the initial dataflow graph comprises using the expression of the dataflow graph pattern matching language to identify a first node of the first plurality of nodes representing a first data processing operation that commutes with a second data processing operation represented by a second node of the first plurality of nodes connected to the first node (Schechter: paragraph [0032], “…database operations may be executed in various orders while still providing equivalent outputs…” paragraph [0056], “The dataflow graph 716 can be converted by a graph optimizer 704 to an optimized dataflow graph 718…Some of the operations carried out by the dataflow graph 716 may be redundant and can be removed or consolidated with other operations. For example, the dataflow graph 716 may include a group of components that can be merged into a single component that performs the same operations as would the group of components. The graph optimizer 704 analyzes the dataflow graph 716 and performs an optimization to alter the dataflow graph, for example, to remove redundant components, merge components, and otherwise reduce the number of components in the dataflow graph 716 to generate the optimized dataflow graph 718. After the optimized dataflow graph 718 is generated, the optimized dataflow graph 718 can be provided to the database management computer system 744 for execution.”, paragraph [0066], paragraph [0072], “…Because the data selection component 1022 includes rollup functionality, the data selection component 1022 and its associated rollup component 1024 can be merged into a combined data selection component 1032 incorporating the rollup operations otherwise performed by the rollup component 1024…” which indicates that “a group of components”). For claim 5, Schechter and Pandis disclose the method of claim 2, wherein applying the first optimization rule to the identified first portion of the initial dataflow graph comprises: changing an order of the nodes identified in the initial dataflow graph that represent data processing operations that commute with one another (Schechter: paragraph [0032], “…database operations may be executed in various orders while still providing equivalent outputs…”); and applying the first optimization rule to the identified first portion of the initial dataflow graph having the changed order of the nodes (Schechter: paragraph [0032], “…database operations may be executed in various orders while still providing equivalent outputs…” paragraph [0056], “The dataflow graph 716 can be converted by a graph optimizer 704 to an optimized dataflow graph 718…the dataflow graph 716 can be executed by a computer system (for example, a database management computer system 744) to carry out operations corresponding to operations defined by the query plan 714. Some of the operations carried out by the dataflow graph 716 may be redundant and can be removed or consolidated with other operations. For example, the dataflow graph 716 may include a group of components that can be merged into a single component that performs the same operations as would the group of components. The graph optimizer 704 analyzes the dataflow graph 716 and performs an optimization to alter the dataflow graph, for example, to remove redundant components, merge components, and otherwise reduce the number of components in the dataflow graph 716 to generate the optimized dataflow graph 718…the optimized dataflow graph 718 can be provided to the database management computer system 744 for execution.” Paragraph [0072], “The dataflow graph 1020 can be converted 1018 (e.g., by a graph optimizer such as the graph optimizer 704 shown in FIG. 7) to an optimized dataflow graph 1030 in which some of the components have been removed based on the internal functionality of the data selection component 1022 and the data component 1026. Because the data selection component 1022 includes rollup functionality, the data selection component 1022 and its associated rollup component 1024 can be merged into a combined data selection component 1032 incorporating the rollup operations otherwise performed by the rollup component 1024…,” where “to remove redundant components” indicates the rule “remove redundant components” is selected, then identify “redundant components” to “remove redundant components.” Similarly, “an optimized dataflow graph 1030 in which some of the components have been removed based on the internal functionality of the data selection component 1022 and the data component 1026. Because the data selection component 1022 includes rollup functionality, the data selection component 1022 and its associated rollup component 1024 can be merged into a combined data selection component 1032” indicates the rule “includes rollup functionality” is selected, then identify all the operations which “includes rollup functionality.” paragraph [0080], “It is to be understood that the foregoing description is intended to illustrate and not to limit the scope of the invention, which is defined by the scope of the appended claims. For example, a number of the function steps described above may be performed in a different order without substantially affecting overall processing…” For claim 8, Schechter and Pandis disclose the method of claim 2, further comprising: obtaining an input structured query language (SQL) query (Schechter: paragraph [0005], “…The database query includes an SQL query…” paragraph [0022], “…some database systems perform database queries written in a dedicated database query language such as Structured Query Language (SQL). In these database systems, an SQL query is the primary instrument for manipulating the contents of the database…” paragraphs [0028]-[0029], “…FIG. 2 shows an example of a database query 200 written in SQL…the database query 200 can be converted 206 (using techniques described herein) from an SQL query into a dataflow graph 208.” Paragraph [0058], “…the dataflow graph 716 may operate faster or more efficiently when executed if a complex component is replaced by a group of more efficient components…”); generating a query plan for the input SQL query (Schechter: paragraph [0004], “…generating a dataflow graph representing a database query includes receiving a query plan from a plan generator, the query plan representing operations for executing a database query on at least one input representing a source of data, producing a dataflow graph from the query plan, wherein the dataflow graph includes at least one node that represents at least one operation represented by the query plan, and includes at least one link that represents at least one dataflow associated with the query plan, and altering one or more components of the dataflow graph based on at least one characteristic of the at least one input representing the source of data.” paragraph [0006], “…a computer-readable medium stores a computer program for generating a dataflow graph representing a database query, and the computer program includes instructions for causing a computer to receive a query plan from a plan generator” Paragraph [0009], “…a system for generating a dataflow graph…a processor configured to produce a dataflow graph from the query plan provided by the plan generator…” paragraph [0051], “…operate on a database query that is constructed to operate on input data acquired from multiple data sources and/or multiple types of data sources…” paragraph [0052], “…a graph generation engine 908 and a graph optimizer 704…” paragraph [0056], “The dataflow graph 716 can be converted by a graph optimizer 704 to an optimized dataflow graph 718… the dataflow graph 716 can be executed by a computer system …Some of the operations carried out by the dataflow graph 716 may be redundant and can be removed or consolidated with other operations…” paragraph [0064], “…The output component 826 represents a data destination…,” paragraph [0077]); and generating the initial dataflow graph using the query plan, wherein the initial dataflow graph is executable and different from the query plan (Schechter: paragraph [0004], “…generating a dataflow graph representing a database query includes receiving a query plan from a plan generator, the query plan representing operations for executing a database query on at least one input representing a source of data, producing a dataflow graph from the query plan, wherein the dataflow graph includes at least one node that represents at least one operation represented by the query plan, and includes at least one link that represents at least one dataflow associated with the query plan, and altering one or more components of the dataflow graph based on at least one characteristic of the at least one input representing the source of data, producing a dataflow graph from the query plan, wherein the dataflow graph includes at least one node that represents at least one operation represented by the query plan, and includes at least one link that represents at least one dataflow.” paragraph [0005], “…The at least one operation is capable of being performed by executable functionality associated with the source of data represented by the at least one input…” paragraph [0006], “…a computer-readable medium stores a computer program for generating a dataflow graph representing a database query, and the computer program includes instructions for causing a computer to receive a query plan from a plan generator” paragraph [0023], “…a dataflow may be provided through a directed graph, with components of the computation being associated with the vertices of the graph and dataflows between the components corresponding to links (arcs, edges) of the graph…” Paragraph [0044], “…the dataflow graph 312 has nodes representing operations described in the query plan, and node links representing flows of data between the operations…” paragraph [0051], “…operate on a database query that is constructed to operate on input data acquired from multiple data sources and/or multiple types of data sources…” paragraph [0056], “The dataflow graph 716 can be converted by a graph optimizer 704 to an optimized dataflow graph 718…Some of the operations carried out by the dataflow graph 716 may be redundant and can be removed or consolidated with other operations…” paragraph [0069], “…FIG. 10 shows a query plan 1010 undergoing transformation to an optimized dataflow graph 1030…a dataflow graph 1020…” paragraph [0072], “…The dataflow graph 1020 can be converted 1018 (e.g., by a graph optimizer such as the graph optimizer 704 shown in FIG. 7) to an optimized dataflow graph 1030…” Fig. 10, dataflow graph 1030). For claim 9, Schechter and Pandis disclose the method of claim 2, wherein the dataflow subgraph pattern matching language includes one or more expressions for identifying a series of nodes of at least a threshold length representing a respective series of calculations that are suitable to be combined and represented by a single node in the dataflow graph (Schechter: paragraph [0056], “The dataflow graph 716 can be converted by a graph optimizer 704 to an optimized dataflow graph 718…the dataflow graph 716 can be executed by a computer system (for example, a database management computer system 744) to carry out operations corresponding to operations defined by the query plan 714. Some of the operations carried out by the dataflow graph 716 may be redundant and can be removed or consolidated with other operations. For example, the dataflow graph 716 may include a group of components that can be merged into a single component that performs the same operations as would the group of components. The graph optimizer 704 analyzes the dataflow graph 716 and performs an optimization to alter the dataflow graph, for example, to remove redundant components, merge components, and otherwise reduce the number of components in the dataflow graph 716 to generate the optimized dataflow graph 718…the optimized dataflow graph 718 can be provided to the database management computer system 744 for execution.” Paragraph [0072], “The dataflow graph 1020 can be converted 1018 (e.g., by a graph optimizer such as the graph optimizer 704 shown in FIG. 7) to an optimized dataflow graph 1030 in which some of the components have been removed based on the internal functionality of the data selection component 1022 and the data component 1026. Because the data selection component 1022 includes rollup functionality, the data selection component 1022 and its associated rollup component 1024 can be merged into a combined data selection component 1032 incorporating the rollup operations otherwise performed by the rollup component 1024…,” where “to remove redundant components” WHERE “a threshold length” is broadly interpreted as “a group of components that can be merged into a single component” which indicates the “a threshold length” is greater than 1.). For claim 10, Schechter and Pandis disclose the method of claim 2, wherein: the one or more data sources comprises a first data source of a first type and a second data source of a second type different from the first type (Schechter: Paragraph [0004], paragraph [0005], “Altering one or more components of the dataflow graph includes removing at least one component of the dataflow graph. The component of the graph corresponds to an operation represented by the query plan. The at least one operation is capable of being performed by executable functionality associated with the source of data represented by the at least one input. A characteristic of the at least one input includes executable functionality associated with the source of data represented by the input. …The method also includes identifying functionality associated with a database associated with a component representing the at least one source of data, and based on the identification, configuring the component to provide a database query to the database. The at least one input representing a dataset includes at least one of a data file, a database table, output of a second dataflow graph, and a network socket. Output of the dataflow graph is assigned to at least one of a data file, a database table, a second dataflow graph, and a network socket. The database query includes an SQL query. The dataflow graph includes a component configured to receive output from the plan generator.” paragraph [0023], Paragraph [0044], “…the dataflow graph 312 has nodes representing operations described in the query plan, and node links representing flows of data between the operations…”, paragraph [0051], “…operate on a database query that is constructed to operate on input data acquired from multiple data sources and/or multiple types of data sources…” Paragraph [0046], “…the database management computer system 304 can execute operations of the dataflow graph 312 and use the database table 326 in order to produce results 402 of the database query. The database management computer system 304 provides the database table 326 to one or more nodes 404a, 404b, 404c of the dataflow graph 312 and executes the dataflow graph using the graph execution engine 306. The graph execution engine 306 performs the operations represented by the nodes 404a, 404b, 404c of the dataflow graph 312, which correspond to database operations for executing the underlying database query. Further, links 408a, 408b, 408c between the nodes represent flows of data between the database operations as the database table is processed. The dataflow graph 312 outputs the results 402 of the database query …” paragraph [0056], “The dataflow graph 716 can be converted by a graph optimizer 704 to an optimized dataflow graph 718…Some of the operations carried out by the dataflow graph 716 may be redundant and can be removed or consolidated with other operations…” paragraph [0069], “…FIG. 10 shows a query plan 1010 undergoing transformation to an optimized dataflow graph 1030…a dataflow graph 1020…” paragraph [0072], “…The dataflow graph 1020 can be converted 1018 (e.g., by a graph optimizer such as the graph optimizer 704 shown in FIG. 7) to an optimized dataflow graph 1030…” Fig. 10, dataflow graph 1030); the data processing system is external to the one or more data sources and/or the one or more data sinks (Schechter: Paragraph [0004], paragraph [0005], “Altering one or more components of the dataflow graph includes removing at least one component of the dataflow graph. The component of the graph corresponds to an operation represented by the query plan. The at least one operation is capable of being performed by executable functionality associated with the source of data represented by the at least one input. A characteristic of the at least one input includes executable functionality associated with the source of data represented by the input. …The method also includes identifying functionality associated with a database associated with a component representing the at least one source of data, and based on the identification, configuring the component to provide a database query to the database. The at least one input representing a dataset includes at least one of a data file, a database table, output of a second dataflow graph, and a network socket. Output of the dataflow graph is assigned to at least one of a data file, a database table, a second dataflow graph, and a network socket. The database query includes an SQL query. The dataflow graph includes a component configured to receive output from the plan generator.” paragraph [0023], Paragraph [0044], “…the dataflow graph 312 has nodes representing operations described in the query plan, and node links representing flows of data between the operations…”, paragraph [0051], “…operate on a database query that is constructed to operate on input data acquired from multiple data sources and/or multiple types of data sources…” Paragraph [0046], “…the database management computer system 304 can execute operations of the dataflow graph 312 and use the database table 326 in order to produce results 402 of the database query. The database management computer system 304 provides the database table 326 to one or more nodes 404a, 404b, 404c of the dataflow graph 312 and executes the dataflow graph using the graph execution engine 306. The graph execution engine 306 performs the operations represented by the nodes 404a, 404b, 404c of the dataflow graph 312, which correspond to database operations for executing the underlying database query. Further, links 408a, 408b, 408c between the nodes represent flows of data between the database operations as the database table is processed. The dataflow graph 312 outputs the results 402 of the database query …” paragraph [0056], “The dataflow graph 716 can be converted by a graph optimizer 704 to an optimized dataflow graph 718…Some of the operations carried out by the dataflow graph 716 may be redundant and can be removed or consolidated with other operations…” paragraph [0069], “…FIG. 10 shows a query plan 1010 undergoing transformation to an optimized dataflow graph 1030…a dataflow graph 1020…” paragraph [0072], “…The dataflow graph 1020 can be converted 1018 (e.g., by a graph optimizer such as the graph optimizer 704 shown in FIG. 7) to an optimized dataflow graph 1030…” paragraph [0077], “…The database query managing approach described above can be implemented using software for execution on a computer. For instance, the software forms procedures in one or more computer programs that execute on one or more programmed or programmable computer systems (which may be of various architectures such as distributed, client/server, or grid) each including at least one processor, at least one data storage system (including volatile and non-volatile memory and/or storage elements), at least one input device or port, and at least one output device or port. The software may form one or more modules of a larger program, for example, that provides other services related to the design and configuration of computation graphs. The nodes and elements of the graph can be implemented as data structures stored in a computer readable medium or other organized data conforming to a data model stored in a data repository…” Fig. 10, dataflow graph 1030); and the data processing system is configured to execute software that performs generating the updated data structure embodying the updated dataflow graph and executing the updated dataflow graph (Schechter: Paragraph [0004], paragraph [0005], “Altering one or more components of the dataflow graph includes removing at least one component of the dataflow graph. The component of the graph corresponds to an operation represented by the query plan. The at least one operation is capable of being performed by executable functionality associated with the source of data represented by the at least one input. A characteristic of the at least one input includes executable functionality associated with the source of data represented by the input. …The method also includes identifying functionality associated with a database associated with a component representing the at least one source of data, and based on the identification, configuring the component to provide a database query to the database. The at least one input representing a dataset includes at least one of a data file, a database table, output of a second dataflow graph, and a network socket. Output of the dataflow graph is assigned to at least one of a data file, a database table, a second dataflow graph, and a network socket. The database query includes an SQL query. The dataflow graph includes a component configured to receive output from the plan generator.” paragraph [0023], Paragraph [0044], “…the dataflow graph 312 has nodes representing operations described in the query plan, and node links representing flows of data between the operations…”, paragraph [0051], “…operate on a database query that is constructed to operate on input data acquired from multiple data sources and/or multiple types of data sources…” Paragraph [0046], “…the database management computer system 304 can execute operations of the dataflow graph 312 and use the database table 326 in order to produce results 402 of the database query. The database management computer system 304 provides the database table 326 to one or more nodes 404a, 404b, 404c of the dataflow graph 312 and executes the dataflow graph using the graph execution engine 306. The graph execution engine 306 performs the operations represented by the nodes 404a, 404b, 404c of the dataflow graph 312, which correspond to database operations for executing the underlying database query. Further, links 408a, 408b, 408c between the nodes represent flows of data between the database operations as the database table is processed. The dataflow graph 312 outputs the results 402 of the database query …” paragraph [0056], “The dataflow graph 716 can be converted by a graph optimizer 704 to an optimized dataflow graph 718…Some of the operations carried out by the dataflow graph 716 may be redundant and can be removed or consolidated with other operations…” paragraph [0069], “…FIG. 10 shows a query plan 1010 undergoing transformation to an optimized dataflow graph 1030…a dataflow graph 1020…” paragraph [0072], “…The dataflow graph 1020 can be converted 1018 (e.g., by a graph optimizer such as the graph optimizer 704 shown in FIG. 7) to an optimized dataflow graph 1030…” paragraph [0077], “…The database query managing approach described above can be implemented using software for execution on a computer. For instance, the software forms procedures in one or more computer programs that execute on one or more programmed or programmable computer systems (which may be of various architectures such as distributed, client/server, or grid) each including at least one processor, at least one data storage system (including volatile and non-volatile memory and/or storage elements), at least one input device or port, and at least one output device or port. The software may form one or more modules of a larger program, for example, that provides other services related to the design and configuration of computation graphs. The nodes and elements of the graph can be implemented as data structures stored in a computer readable medium or other organized data conforming to a data model stored in a data repository…” Fig. 10, dataflow graph 1030). For claim 11, it is a computer product claim (one non-transitory computer-readable storage medium) having similar limitations as cited in claim 2. Thus, claim 11 is also rejected under the same rationale as cited in the rejection of rejected claim 2. For claim 12, it is a computer product claim (one non-transitory computer-readable storage medium) having similar limitations as cited in claim 3. Thus, claim 12 is also rejected under the same rationale as cited in the rejection of rejected claim 3. For claim 13, it is a computer product claim (one non-transitory computer-readable storage medium) having similar limitations as cited in claim 5. Thus, claim 13 is also rejected under the same rationale as cited in the rejection of rejected claim 5. For claim 14, it is a computer product claim (one non-transitory computer-readable storage medium) having similar limitations as cited in claim 9. Thus, claim 14 is also rejected under the same rationale as cited in the rejection of rejected claim 9. For claim 16, it is a method claim having similar limitations as cited in claim 2. Thus, claim 11 is also rejected under the same rationale as cited in the rejection of rejected claim 2. For claim 17, it is a method claim having similar limitations as cited in claim 3. Thus, claim 17 is also rejected under the same rationale as cited in the rejection of rejected claim 3. For claim 18, it is a method claim having similar limitations as cited in claim 5. Thus, claim 18 is also rejected under the same rationale as cited in the rejection of rejected claim 5. For claims 20-21, it is a method claim having similar limitations as cited in claim 8. Thus, claims 20-21 are also rejected under the same rationale as cited in the rejection of rejected claim 8. Claim 4 is rejected under 35 U.S.C. 103 as being unpatentable over Schechter et al. (U.S. Pub. No.: US 20120284255, hereinafter Schechter), in view of Pandis et al. (U.S. Patent No.: US 10528599, hereinafter Pandis), and further in view of Weyerhaeuser et al. (U.S. Pub. No.: US 20130290298, hereinafter Weyerhaeuser). For claim 4, Schechter and Pandis disclose the method of claim 2. However, Schechter and Pandis do not explicitly disclose, wherein the generating the updated data structure embodying the updated dataflow graph is performed iteratively including: a first iteration during which the first portion of the initial dataflow graph is identified and the first optimization rule is applied to the identified first portion, and multiple further iterations, in each of which a respective optimization rule is selected and applied in furtherance of generating the updated data structure embodying the updated dataflow graph. Weyerhaeuser discloses wherein the generating the updated data structure embodying the updated dataflow graph is performed iteratively (Weyerhaeuser: paragraph [0003], “The initial data flow graph is optimized using a model optimizer that accesses at least one of a plurality of patterns to identify a matching pattern and executes at least one optimization rule associated with a matching pattern.”, paragraph [0016], “…The initial data flow graph is optimized, at 130, using a model optimizer. The model optimizer accesses at least one of a plurality of patterns to identify a matching pattern and executes at least one optimization rule associated with a matching pattern. Subsequently, at 140, execution of the query is initiated using the optimized data flow graph.” paragraph [0037], “…FIG. 6, it is first determined that pattern 1 and corresponding rule 1 cannot be applied. This process continues until it is determined that pattern N, and as a result, corresponding rule N can be applied. FIG. 7 illustrates that Rule N being applied. Thereafter, with reference to FIG. 8, only pattern N+1 is checked because pattern N previously was a match and the corresponding rule N was applied (resulting in the removal of a node specifying an aggregation operation). Pattern N+1 is identified as being a match and, with reference to FIG. 9, the corresponding rule N+1 can be applied…”) including: a first iteration during which the first portion of the initial dataflow graph is identified and the first optimization rule is applied to the identified first portion, and multiple further iterations, in each of which a respective optimization rule is selected and applied in furtherance of generating the updated data structure embodying the updated dataflow graph (Weyerhaeuser: paragraph [0016], “…The initial data flow graph is optimized, at 130, using a model optimizer. The model optimizer accesses at least one of a plurality of patterns to identify a matching pattern and executes at least one optimization rule associated with a matching pattern. Subsequently, at 140, execution of the query is initiated using the optimized data flow graph.” paragraph [0037], “…FIG. 6, it is first determined that pattern 1 and corresponding rule 1 cannot be applied. This process continues until it is determined that pattern N, and as a result, corresponding rule N can be applied. FIG. 7 illustrates that Rule N being applied. Thereafter, with reference to FIG. 8, only pattern N+1 is checked because pattern N previously was a match and the corresponding rule N was applied (resulting in the removal of a node specifying an aggregation operation). Pattern N+1 is identified as being a match and, with reference to FIG. 9, the corresponding rule N+1 can be applied…” It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to improve upon “MANAGING DATA QUERIES” as taught by Schechter by implementing “Data Flow Graph Optimization Using Adaptive Rule Chaining” as taught by Weyerhaeuser, because it would provide Schechter’s medium with the enhanced capability of “the adaptive rule chaining approach” (Weyerhaeuser: paragraph [0037]), in order to “more efficient in that the identification of patterns requires less computing resources” (Weyerhaeuser: paragraph [0037]). Claims 6, 7, 15 and 19 are rejected under 35 U.S.C. 103 as being unpatentable over Schechter et al. (U.S. Pub. No.: US 20120284255, hereinafter Schechter), in view of Pandis et al. (U.S. Patent No.: US 10528599, hereinafter Pandis), and further in view of Hunter et al. (U.S. Pub. No.: US 20150088856, hereinafter Hunter). For claim 6, Schechter and Pandis disclose the method of claim 2. However, Schechter and Pandis do not explicitly disclose, wherein applying the first optimization rule comprises applying a strength reduction optimization. Hunter discloses wherein applying the first optimization rule comprises applying a strength reduction optimization (Hunter: paragraph [0089], “The query processor may rewrite the query by replacing the fact join key expression that appears in the group by operation with the corresponding dimension join key expression. In a particular example, the initial query may be of the form, "SELECT . . . FROM dim d, fact f WHERE f.x=d.x AND . . . GROUP BY f.x, . . . ;" The initial query may be rewritten to " . . . GROUP BY d.x, . . . ". The transformation allows the grouping key expression "d.x" to be more fully analyzed, because d.x may be processed during the (relatively small) dimension scan, rather than "f.x," which is processed during the (relatively large) fact scan.” paragraph [0090], “In a second example, unnecessary aggregation may be removed from or shifted in the initial query if the initial query includes such aggregation on a column that would otherwise qualify as a dimension…The query processor may move the column out of the aggregation operation (i.e., MAX) and add the column to a group by operation to make it distinct. Then, the query processor may place the MAX operation in a top-level outer query. In a particular example, the initial query may be of the form, "SELECT . . . state, MAX(country) . . . FROM . . . WHERE . . . GROUP BY state;" The query processor moves "country" out of the aggregation, "MAX(country)", and adds country as another GROUP BY column, to make multi-dimensional query optimizations available to the query…”). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to improve upon “MANAGING DATA QUERIES” as taught by Schechter by implementing “INFERRING DIMENSIONAL METADATA FROM CONTENT OF A QUERY” as taught by Hunter, because it would provide Schechter’s medium with the enhanced capability of “Removing redundant joins… Alternatively, removing redundant joins may allow the server to create and use a simpler and possibly faster dense data structure during query evaluation” (Hunter: paragraph [0091]), in order to “create and use a simpler and possibly faster dense data structure during query evaluation” (Hunter: paragraph [0091]) For claim 7, Schechter and Pandis disclose the method of claim 2. However, Schechter and Pandis do not explicitly disclose, wherein applying the first optimization rule comprises applying a width reduction optimization. Hunter discloses wherein applying the first optimization rule comprises applying a width reduction optimization (Hunter: paragraph [0089], “The query processor may rewrite the query by replacing the fact join key expression that appears in the group by operation with the corresponding dimension join key expression. In a particular example, the initial query may be of the form, "SELECT . . . FROM dim d, fact f WHERE f.x=d.x AND . . . GROUP BY f.x, . . . ;" The initial query may be rewritten to " . . . GROUP BY d.x, . . . ". The transformation allows the grouping key expression "d.x" to be more fully analyzed, because d.x may be processed during the (relatively small) dimension scan, rather than "f.x," which is processed during the (relatively large) fact scan.” WHERE “width reduction” is broadly interpreted as “d.x” which is “may be processed during the (relatively small) dimension scan,” (e.g. narrower range of data needs to be scanned), paragraph [0090]). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to improve upon “MANAGING DATA QUERIES” as taught by Schechter by implementing “INFERRING DIMENSIONAL METADATA FROM CONTENT OF A QUERY” as taught by Hunter, because it would provide Schechter’s medium with the enhanced capability of “Removing redundant joins… Alternatively, removing redundant joins may allow the server to create and use a simpler and possibly faster dense data structure during query evaluation” (Hunter: paragraph [0091]), in order to “create and use a simpler and possibly faster dense data structure during query evaluation” (Hunter: paragraph [0091]) For claim 15, it is a computer product claim (one non-transitory computer-readable storage medium) having similar limitations as cited in claims 6 and7. Thus, claim 15 is also rejected under the same rationale as cited in the rejection of rejected claims 6 and 7. For claim 19, it is a method claim having similar limitations as cited in claims 6 and7. Thus, claim 19 is also rejected under the same rationale as cited in the rejection of rejected claims 6 and 7. Conclusion. THIS ACTION IS MADE FINAL. Applicant is reminded of the extension of time policy as set forth in 37 CFR 1.136(a). A shortened statutory period for reply to this final action is set to expire THREE MONTHS from the mailing date of this action. In the event a first reply is filed within TWO MONTHS of the mailing date of this final action and the advisory action is not mailed until after the end of the THREE-MONTH shortened statutory period, then the shortened statutory period will expire on the date the advisory action is mailed, and any nonprovisional extension fee (37 CFR 1.17(a)) pursuant to 37 CFR 1.136(a) will be calculated from the mailing date of the advisory action. In no event, however, will the statutory period for reply expire later than SIX MONTHS from the mailing date of this final action. Any inquiry concerning this communication or earlier communications from the examiner should be directed to YU ZHAO whose telephone number is (571)270-3427. The examiner can normally be reached Monday-Friday 9AM-5PM. Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice. If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Sherief Badawi can be reached at (571) 272-9782. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300. Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000. /YU ZHAO/Primary Examiner, Art Unit 2169
Read full office action

Prosecution Timeline

May 21, 2024
Application Filed
Jun 20, 2024
Response after Non-Final Action
Oct 01, 2025
Non-Final Rejection mailed — §103
Jan 20, 2026
Examiner Interview Summary
Jan 20, 2026
Applicant Interview (Telephonic)
Mar 31, 2026
Response Filed
Jun 17, 2026
Final Rejection mailed — §103 (current)

Precedent Cases

Applications granted by this same examiner with similar technology

Patent 12681937
Cloud-Based Metadata Management For On-Premise Storage Systems
1y 10m to grant Granted Jul 14, 2026
Patent 12670124
Tag-Based Enforcement Of Object Storage Policies Across Tenants Of An Object Storage System
2y 5m to grant Granted Jun 30, 2026
Patent 12651020
DIGITAL ASSISTANT INTELLIGENCE ENGINE
1y 2m to grant Granted Jun 09, 2026
Patent 12645677
ENABLING REAL-TIME INTEGRATION OF UP-TO-DATE SILOED DATA
1y 2m to grant Granted Jun 02, 2026
Patent 12639328
ENTERPRISE INFORMATION ITEM LOCATION AND MANAGEMENT SYSTEMS
2y 2m to grant Granted May 26, 2026
Study what changed to get past this examiner. Based on 5 most recent grants.

Strategy Recommendation AI-generated — please review before filing

Get a prosecution strategy drawn from examiner precedents, rejection analysis, and claim mapping.
Typically takes 5-10 seconds — AI-generated, attorney review required before filing

Prosecution Projections

3-4
Expected OA Rounds
52%
Grant Probability
94%
With Interview (+41.3%)
4y 2m (~2y 0m remaining)
Median Time to Grant
Moderate
PTA Risk
Based on 365 resolved cases by this examiner. Grant probability derived from career allowance rate.

Sign in with your work email

Enter your email to receive a magic link. No password needed.

Personal email addresses (Gmail, Yahoo, etc.) are not accepted.

Free tier: 3 strategy analyses per month