DETAILED ACTION
Continued Examination Under 37 CFR 1.114
A request for continued examination under 37 CFR 1.114, including the fee set forth in 37 CFR 1.17(e), was filed in this application after final rejection. Since this application is eligible for continued examination under 37 CFR 1.114, and the fee set forth in 37 CFR 1.17(e) has been timely paid, the finality of the previous Office action has been withdrawn pursuant to 37 CFR 1.114. Applicant's submission filed on 8/5/2026 has been entered.
Summary and Status of Claims
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
This Office Action is in response to Applicant’s request for continued examination filed 8/21/2026.
Claims 1-20 are pending.
Claims 1-4, 6-10, and 15-17 are rejected under 35 U.S.C. 103 as being unpatentable over Brende et al (US Patent Pub 2024/0394251), in view of Choudhary et al. (US Patent Pub 2022/0067538), further in view of Wang et al. (US Patent Pub 2018/0067857), further in view of Cole et al. (US Patent 8,732,118).
Claim 5 is rejected under 35 U.S.C. 103 as being unpatentable over Brende et al (US Patent Pub 2024/0394251), in view of Choudhary et al. (US Patent Pub 2022/0067538), further in view of Wang et al. (US Patent Pub 2018/0067857), further in view of Cole et al. (US Patent 8,732,118), further in view of Clarkson (US Patent Pub 2025/0013646).
Claims 11, 12, 18, and 19 are rejected under 35 U.S.C. 103 as being unpatentable over Brende et al (US Patent Pub 2024/0394251), in view of Choudhary et al. (US Patent Pub 2022/0067538), further in view of Wang et al. (US Patent Pub 2018/0067857), further in view of Cole et al. (US Patent 8,732,118), further in view of Bernardin et al. (US Patent Pub 2006/0195508).
Claims 13, 14, and 20 are rejected under 35 U.S.C. 103 as being unpatentable over Brende et al (US Patent Pub 2024/0394251), in view of Choudhary et al. (US Patent Pub 2022/0067538), further in view of Wang et al. (US Patent Pub 2018/0067857), further in view of Cole et al. (US Patent 8,732,118), further in view of Hinkle et al. (US Patent Pub 2025/0190248).
The text of those sections of Title 35, U.S. Code not included in this action can be found in a prior Office action.
Note on Prior Art Rejections
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.
Claim Rejections - 35 USC § 103
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 of this title, 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.
The text of those sections of Title 35, U.S. Code not included in this action can be found in a prior Office action.
The factual inquiries set forth in Graham v. John Deere Co., 383 U.S. 1, 148 USPQ 459 (1966), that are applied for establishing a background for determining obviousness under 35 U.S.C. 103 are summarized as follows:
1. Determining the scope and contents of the prior art.
2. Ascertaining the differences between the prior art and the claims at issue.
3. Resolving the level of ordinary skill in the pertinent art.
4. Considering objective evidence present in the application indicating obviousness or nonobviousness.
This application currently names joint inventors. In considering patentability of the claims the examiner presumes that the subject matter of the various claims was commonly owned as of the effective filing date of the claimed invention(s) absent any evidence to the contrary. Applicant is advised of the obligation under 37 CFR 1.56 to point out the inventor and effective filing dates of each claim that was not commonly owned as of the effective filing date of the later invention in order for the examiner to consider the applicability of 35 U.S.C. 102(b)(2)(C) for any potential 35 U.S.C. 102(a)(2) prior art against the later invention.
Claims 1-4, 6-10, and 15-17 are rejected under 35 U.S.C. 103 as being unpatentable over Brende et al (US Patent Pub 2024/0394251) (Brende), in view of Choudhary et al. (US Patent Pub 2022/0067538) (Choudhary), further in view of Wang et al. (US Patent Pub 2018/0067857) (Wang), further in view of Cole et al. (US Patent 8,732,118) (Cole).
In regards to claim 1, Brende discloses a computer method for chaining data operations, comprising:
receiving, from a client device, a definition of a multi-stage data operation that is expressed in a user-facing syntax (Brende at paras. 0059, 0070, 0204)1;
translating the user-facing syntax of the multi-stage data operation into a definition of the multi-stage data operation that is expressed in an intermediate syntax (Brende at paras. 0070,0206, 0214, 0216, 0218)2;
parsing, by a data processing platform, the intermediate syntax of the multi-stage data operation, to identify a series of data operations included in the multi-stage data operation (Brende at paras. 0207-208, 0237)3;
coordinating, by the data processing platform, execution of the series of data operations included in the multi-stage data operation (Brende at Figs. 4-7), by:
for each data operation in the series of data operations:
generating, by the data processing platform, domain-specific syntax that is used by the client agent for executing the data operation (Brende at paras. 0237-240)4; and
providing, by the data processing platform and to the client agent, the domain-specific syntax for executing the data operation (Brende at paras. 0209-210)5;
after all data operations in the series of data operations have been successfully executed, providing a result of the multi-stage data operation to the client device. Brende at paras. 0151-153, 0210-211.
Brende does not expressly disclose wherein the intermediate syntax separately defines a first data operation, a second data operation, and a third data operation, wherein the first data operation, the second data operation, and the third data operation are different data operations, and wherein the third data operation references respective outputs of the first data operation and the second data operation as inputs to the third data operation. Brende does disclose that the abstracted query structure, such as an abstract syntax tree, can include and define constructs for representing entities and operations. Brende at para. 0219. What is not expressly disclosed is a discussion of how the abstract syntax tree is structured to define operations and reference input and output as claimed.
Choudhary discloses a system and method for generating knowledge graphs from program source code for execution in a workflow on different platforms. Choudhary at para. 0023. The method includes parsing program source code to generate an abstract syntax tree (AST) (i.e., intermediate syntax). The AST identifies relationships between different operations in hierarchical fashion such that nodes on lower levels represent input into nodes, which represent operations) on higher levels of the AST. Choudhary at para. 0025. The generated AST comprises nodes which represent variables or operations (i.e., data operation). Generating the AST can comprise building successive sub-trees that represent different operations (i.e., separately defines … different data operations). Choudhary at para. 0040. Traversal of the AST begins at the bottom, which represents initial operations (i.e., first data operation, second data operation) that are to be performed to reach the workflow result at the root of the AST. Intermediate nodes (i.e., third data operation) represent subsequent operations that are performed in order to reach the result. Choudhary at para. 0045. The AST is generated using rules that define the structure of specific nodes in the AST in terms of inputs and outputs. Choudhary at para. 0055. Accordingly, the generated AST separately defines nodes or sub-trees, which represent different operations. These nodes are hierarchically related to provide input to other nodes with their output as the AST is traversed from the bottom to the root, where the output of the workflow is generated. In this way, Choudhary discloses an AST (i.e., intermediate syntax) that separate defines the first, second, and third data operations as different data operations and an operation node references input and output as required. For example, an intermediate node would receive input from related preceding nodes and provide output to a node related above it (i.e., third data operation references respective outputs of the first data operation and the second data operation as inputs to the third data operation).
Brende and Choudhary are analogous art because they are directed to the same field of endeavor of executing commands by first generating an intermediate form of the commands to allow broad compatibility with different platforms.
At the time before the effective filing date of the instant application, it would have been obvious to one of ordinary skill in the art to modify Brende by adding the features of wherein the intermediate syntax separately defines a first data operation, a second data operation, and a third data operation, wherein the first data operation, the second data operation, and the third data operation are different data operations, and wherein the third data operation references respective outputs of the first data operation and the second data operation as inputs to the third data operation, as disclosed by Choudhary.
The motivation for doing so would have been because like Choudhary, Brende also discloses generating intermediate forms of received commands, including generating an abstract syntax tree. Brende at para. 0218-219. Choudhary discloses that doing so aids in accelerating implementations and executions of workflows on different platforms. Choudhary at para. 0023.
Brende in view of Choudhary does not expressly disclose for each data operation in the series of data operations, selecting, by the data processing platform, a respective operation handler that is configured to execute the data operation, generating the domain-specific syntax for the selected handler and providing the domain-specific syntax to the selected handler for executing the data operation, mapping, by the data processing platform, (i) a first portion of a data cache to the first output variable for storing first operation results data that results from execution of the first data operation, and (ii) a second portion of the data cache to the second output variable for storing second operation results data that results from execution of the second data operation, and for the third data operation in the series of data operations: in response to identifying, based on the intermediate syntax, a first input variable that indicates input for the third data operation and that corresponds to the first output variable of the first data operation, and identifying, based on the intermediate syntax, a second input variable that indicates input for the third data operation and that corresponds to the second output variable of the second data operation, waiting for availability of the first operation results data and the second operation results data; retrieving, by the data processing platform, (1) the first operation results data from the first portion of the data cache that is mapped to the first input variable, and (ii) the second operation results data form the second portion of the data cache that is mapped to the second input variable, and providing, by the data processing platform, (i) the retrieved first operation results data, (ii) the retrieved second operation results data, and (iii) the generated domain-specific syntax for executing the third data operation, to the selected operation handler for the third data operation. As set forth above, Choudhary discloses providing input to intermediate operation nodes using output from lower operation nodes, as defined by the generated AST. Also set forth above, Brende discloses generating standardized expressions from the abstracted form (i.e., intermediate syntax), which can have broad compatibility across different database systems. In addition, Brende discloses validating the standardized expression to make sure it aligns with database-specific requirements (i.e., generated domain-specific syntax) (Brende at para. 0240), which are provided for execution. Brende at para. 0209-210.
Wang a data processing platform in a large scale computing cluster having large data processing jobs that include a sequence of processing stages, each stage representing a data operation or transformation. Wang at paras. 0047, 0071. The system provides a data processing cluster having a plurality of nodes (i.e., operation handlers). Wang at para. 0063. A cluster master assigns resources for different tasks to task workers based on analysis of a job profile, resources, and availability of data (i.e., selecting … a respective operation handler …). Wang at paras. 0078, 0085, 0092. The system utilizes a cluster wide cache for storing intermediate data to support data sharing between stages, which is determined based on job metadata, which provides what input data is for an individual stage and what output data is provided by the stage, such as for input to the next stage or as a final result (i.e., identifying an input variable that indicates an input … corresponds to the output variable of another data operation). Wang at paras. 0050, 0069. Wang also provides an operations table and a cache information table, which maps different stages and operations in each stage to intermediate cache data for each stage (i.e., mapping … a portion of a data cache to the output variable). Wang at paras. 0065-66. Wang further discloses a worker (i.e., operation handler) can receive two inputs to perform its operation, which can be from the cache or from other workers. Wang at para. 0092. In other words, for a third operation, the method identifies the two inputs and retrieves the appropriate intermediate results from the cache (i.e., first output variable and second output variable) for processing.
Brende, Choudhary, Wang are analogous art because they are directed to the same field of endeavor of data processing platforms with large data sets.
At the time before the effective filing date of the instant application, it would have been obvious to one of ordinary skill in the art to modify Brende in view of Choudhary by adding the features of for each data operation in the series of data operations, selecting, by the data processing platform, a respective operation handler that is configured to execute the data operation, generating the domain-specific syntax for the selected handler and providing the domain-specific syntax to the selected handler for executing the data operation, mapping, by the data processing platform, (i) a first portion of a data cache to the first output variable for storing first operation results data that results from execution of the first data operation, and (ii) a second portion of the data cache to the second output variable for storing second operation results data that results from execution of the second data operation, and for the third data operation in the series of data operations: in response to identifying, based on the intermediate syntax, a first input variable that indicates input for the third data operation and that corresponds to the first output variable of the first data operation, and identifying, based on the intermediate syntax, a second input variable that indicates input for the third data operation and that corresponds to the second output variable of the second data operation, waiting for availability of the first operation results data and the second operation results data; retrieving, by the data processing platform, (1) the first operation results data from the first portion of the data cache that is mapped to the first input variable, and (ii) the second operation results data form the second portion of the data cache that is mapped to the second input variable, and providing, by the data processing platform, (i) the retrieved first operation results data, (ii) the retrieved second operation results data, and (iii) the generated domain-specific syntax for executing the third data operation, to the selected operation handler for the third data operation, as disclosed by Wang.
The motivation for doing so would have been to provide utilization of a cluster architecture to improve and simplify stages of jobs. Wang at para. 0052.
Brende in view of Choudhary and Wang does not expressly disclose for the first data operation and the second data operation in the series of data operations: in response to determining that neither the first data operation nor the second data operation depend on input from another data operation, (i) identifying a first output variable that indicates output of the first data operation, and (ii) identifying a second output variable that indicates output of the second data operation, and coordinating a concurrent execution of the first data operation and the second data operation. It is noted that Choudhary discloses defining input and output for operations and that operations corresponding to nodes at the bottom of the abstract syntax tree did not have input and provided output that was used as input to a subsequent node. Choudhary at para. 0045.
Cole discloses a system and method for distributed performance of data aggregation operations. The system includes a multi-stage architecture comprising nodes, where nodes perform data operations in multiple stages. Nodes in a first stage operate on the data to be processed and therefore, do not require input from a prior stage (i.e., for a first data operation and a second data operation in the series of data operations: in response to determining that neither the first data operation nor the second data operation depend on input from another data operation). Cole at col. 2, lines 43-57. The nodes operating in the first stage produce output, which are known as intermediate results. These results are stored on the node and on a storage node of the system, where they can be accessed by nodes operating in subsequent stages to use as input (i.e., storing first operation results … storing second operation results). Cole at col. 12, lines 9-18. Cole further discloses that a node in an intermediate or later stage can receive input from more than one node in a prior stage (i.e., in response to identifying a first input variable indicates input for the third data operation … and identifying a second input variable indicates input for the third data operation … waiting for availability of the first operation results data and the second operations results data) and retrieving the appropriate intermediate output corresponding to the correct input for the node in the next stage (i.e., retrieving … the first operation results data … the second operations results data) and providing it to the node for processing. This can be seen in Figs. 2B and 2C. Computing Nodes A and B (i.e., first/initial stage) perform data operations on data (i.e., do not depend on input from another data operation). They produce respective intermediate outputs (220a, 220b), which are provided as input for computing nodes P and Q in the second stage. As can be seen in Fig. 2C, intermediate results 220a and 220b can be input into a single node (i.e., operation handler). Cole at Figs. 2B, 2C; col. 10, lines 58-67; col. 11, lines 29-32, 43-57. Cole further discloses the multiple execution jobs can be executed on multiple computing nodes to support task and/or data parallelism (i.e., coordinating a concurrent execution of first data operation and second data operation). Cole at col. 2, lines 64-67; col. 3, lines 1-5.
Brende, Choudhary, Wang, and Cole are analogous art because they are directed to the same field of endeavor of data processing.
At the time before the effective filing date of the instant application, it would have been obvious to one of ordinary skill in the art to modify Brende in view of Wang by adding the features of for the first data operation and the second data operation in the series of data operations: in response to determining that neither the first data operation nor the second data operation depend on input from another data operation, (i) identifying a first output variable that indicates output of the first data operation, and (ii) identifying a second output variable that indicates output of the second data operation, and coordinating a concurrent execution of the first data operation and the second data operation, as disclosed by Cole.
The motivation for doing so would have been because determining that a data operation does not depend on input indicates that the data operation utilizes data extracted from a source to perform its operation to produce an output that can be input into subsequent operations in a subsequent stage of processing (Cole at col. 27, lines 40-51) and coordinating concurrent execution of the data operations in a multi-stage architecture can process large data sets more efficiently and reliably. Cole at col. 4, lines 58-67; col. 5, lines 1-5.
In regards to claim 2, Brende in view of Choudhary, Wang, and Cole discloses the computer-implemented method of claim 1, wherein the intermediate syntax is formatted as an abstract syntax tree. Brende at para. 0217.
In regards to claim 3, Brende in view of Choudhary, Wang, and Cole discloses the computer-implemented method of claim 2, wherein parsing the definition of the multi-stage data operation comprises traversing nodes of the abstract syntax tree, wherein each operation is defined in a respective node of the abstract syntax tree. Brende at para. 0218. Choudhary at paras. 0045, 0055.
In regards to claim 4, Brende in view of Choudhary, Wang, and Cole discloses the computer-implemented method of claim 1, wherein mapping a given portion of the data cache to a given output variable comprises:
generating a cache key that references the given portion of the data cache (Wang at para. 0066); and
maintaining an association between the cache key and the given output variable. Wang at para. 0066.6
In regards to claim 6, Brende in view of Choudhary, Wang, and Cole discloses the computer-implemented method of claim 1, wherein the translating of the user- facing syntax is performed by the data processing platform. Brende at para. 0065.7
In regards to claim 7, Brende in view of Choudhary, Wang, and Cole discloses the computer-implemented method of claim 1, wherein at least two of the operation handlers are configured to execute data operations on different data platforms. Wang at para. 0069.8
In regards to claim 8, Brende in view of Choudhary, Wang, and Cole discloses the computer-implemented method of claim 1, wherein at least two of the operation handlers are configured to execute different types of data operations on a same data platform. Wang at para. 0069.9
In regards to claim 9, Brende in view of Choudhary, Wang, and Cole discloses the computer-implemented method of claim 1, further comprising:
receiving, by the data processing platform from a given operation handler, operation results data that results from execution of a given data operation (Wang at paras. 0048, 0059, 0066); and
storing the operation results data, by the data processing platform and in a given portion of the data cache that corresponds to a given output variable. (Wang at paras. 0048, 0059, 0066)10
In regards to claim 10, Brende in view of Choudhary, Wang, and Cole discloses the computer-implemented method of claim 1, wherein a given operation handler is configured to store results data that results from execution of a given data operation, in a given portion of the data cache that corresponds to a given output variable. (Wang at paras. 0048, 0059, 0066)11
In regards to claim 15, Brende discloses a computer system for chaining data operations, comprising:
one or more data processing apparatuses including one or more processors, memory, and storage devices storing instructions that, when executed, cause the one or more processors to perform operations (Brende at para. 0202) comprising:
receiving, from a client device, a definition of a multi-stage data operation that is expressed in a user-facing syntax (Brende at paras. 0059, 0070, 0204)12;
translating the user-facing syntax of the multi-stage data operation into a definition of the multi-stage data operation that is expressed in an intermediate syntax (Brende at paras. 0070,0206, 0214, 0216, 0218)13;
parsing, by a data processing platform, the intermediate syntax of the multi-stage data operation, to identify a series of data operations included in the multi- stage data operation (Brende at paras. 0207-208, 0237)14;
coordinating, by the data processing platform, execution of the series of data operations included in the multi-stage data operation (Brende at Figs. 4-7), by:
for each data operation in the series of data operations:
generating, by the data processing platform, domain-specific syntax that is used by the client agent for executing the data operation (Brende at paras. 0237-240)15; and
providing, by the data processing platform and to the client agent, the domain-specific syntax for executing the data operation (Brende at paras. 0209-210)16
after each data operation in the series of data operations has been successfully executed, providing a result of the multi-stage data operation to the client device. Brende at paras. 0151-153, 0210-211.
Brende does not expressly disclose wherein the intermediate syntax separately defines a first data operation, a second data operation, and a third data operation, wherein the first data operation, the second data operation, and the third data operation are different data operations, and wherein the third data operation references respective outputs of the first data operation and the second data operation as inputs to the third data operation. Brende does disclose that the abstracted query structure, such as an abstract syntax tree, can include and define constructs for representing entities and operations. Brende at para. 0219. What is not expressly disclosed is a discussion of how the abstract syntax tree is structured to define operations and reference input and output as claimed.
Choudhary discloses a system and method for generating knowledge graphs from program source code for execution in a workflow on different platforms. Choudhary at para. 0023. The method includes parsing program source code to generate an abstract syntax tree (AST) (i.e., intermediate syntax). The AST identifies relationships between different operations in hierarchical fashion such that nodes on lower levels represent input into nodes, which represent operations) on higher levels of the AST. Choudhary at para. 0025. The generated AST comprises nodes which represent variables or operations (i.e., data operation). Generating the AST can comprise building successive sub-trees that represent different operations (i.e., separately defines … different data operations). Choudhary at para. 0040. Traversal of the AST begins at the bottom, which represents initial operations (i.e., first data operation, second data operation) that are to be performed to reach the workflow result at the root of the AST. Intermediate nodes (i.e., third data operation) represent subsequent operations that are performed in order to reach the result. Choudhary at para. 0045. The AST is generated using rules that define the structure of specific nodes in the AST in terms of inputs and outputs. Choudhary at para. 0055. Accordingly, the generated AST separately defines nodes or sub-trees, which represent different operations. These nodes are hierarchically related to provide input to other nodes with their output as the AST is traversed from the bottom to the root, where the output of the workflow is generated. In this way, Choudhary discloses an AST (i.e., intermediate syntax) that separate defines the first, second, and third data operations as different data operations and an operation node references input and output as required. For example, an intermediate node would receive input from related preceding nodes and provide output to a node related above it (i.e., third data operation references respective outputs of the first data operation and the second data operation as inputs to the third data operation).
Brende and Choudhary are analogous art because they are directed to the same field of endeavor of executing commands by first generating an intermediate form of the commands to allow broad compatibility with different platforms.
At the time before the effective filing date of the instant application, it would have been obvious to one of ordinary skill in the art to modify Brende by adding the features of wherein the intermediate syntax separately defines a first data operation, a second data operation, and a third data operation, wherein the first data operation, the second data operation, and the third data operation are different data operations, and wherein the third data operation references respective outputs of the first data operation and the second data operation as inputs to the third data operation, as disclosed by Choudhary.
The motivation for doing so would have been because like Choudhary, Brende also discloses generating intermediate forms of received commands, including generating an abstract syntax tree. Brende at para. 0218-219. Choudhary discloses that doing so aids in accelerating implementations and executions of workflows on different platforms. Choudhary at para. 0023.
Brende in view of Choudhary does not expressly disclose for each data operation in the series of data operations, selecting, by the data processing platform, a respective operation handler that is configured to execute the data operation, generating the domain-specific syntax for the selected handler and providing the domain-specific syntax to the selected handler for executing the data operation, mapping, by the data processing platform, (i) a first portion of a data cache to the first output variable for storing first operation results data that results from execution of the first data operation, and (ii) a second portion of the data cache to the second output variable for storing second operation results data that results from execution of the second data operation, and for the third data operation in the series of data operations: in response to identifying, based on the intermediate syntax, a first input variable that indicates input for the third data operation and that corresponds to the first output variable of the first data operation, and identifying, based on the intermediate syntax, a second input variable that indicates input for the third data operation and that corresponds to the second output variable of the second data operation, waiting for availability of the first operation results data and the second operation results data; retrieving, by the data processing platform, (1) the first operation results data from the first portion of the data cache that is mapped to the first input variable, and (ii) the second operation results data form the second portion of the data cache that is mapped to the second input variable, and providing, by the data processing platform, (i) the retrieved first operation results data, (ii) the retrieved second operation results data, and (iii) the generated domain-specific syntax for executing the third data operation, to the selected operation handler for the third data operation. As set forth above, Choudhary discloses providing input to intermediate operation nodes using output from lower operation nodes, as defined by the generated AST. Also set forth above, Brende discloses generating standardized expressions from the abstracted form (i.e., intermediate syntax), which can have broad compatibility across different database systems. In addition, Brende discloses validating the standardized expression to make sure it aligns with database-specific requirements (i.e., generated domain-specific syntax) (Brende at para. 0240), which are provided for execution. Brende at para. 0209-210.
Wang a data processing platform in a large scale computing cluster having large data processing jobs that include a sequence of processing stages, each stage representing a data operation or transformation. Wang at paras. 0047, 0071. The system provides a data processing cluster having a plurality of nodes (i.e., operation handlers). Wang at para. 0063. A cluster master assigns resources for different tasks to task workers based on analysis of a job profile, resources, and availability of data (i.e., selecting … a respective operation handler …). Wang at paras. 0078, 0085, 0092. The system utilizes a cluster wide cache for storing intermediate data to support data sharing between stages, which is determined based on job metadata, which provides what input data is for an individual stage and what output data is provided by the stage, such as for input to the next stage or as a final result (i.e., identifying an input variable that indicates an input … corresponds to the output variable of another data operation). Wang at paras. 0050, 0069. Wang also provides an operations table and a cache information table, which maps different stages and operations in each stage to intermediate cache data for each stage (i.e., mapping … a portion of a data cache to the output variable). Wang at paras. 0065-66. Wang further discloses a worker (i.e., operation handler) can receive two inputs to perform its operation, which can be from the cache or from other workers. Wang at para. 0092. In other words, for a third operation, the method identifies the two inputs and retrieves the appropriate intermediate results from the cache (i.e., first output variable and second output variable) for processing.
Brende, Choudhary, Wang are analogous art because they are directed to the same field of endeavor of data processing platforms with large data sets.
At the time before the effective filing date of the instant application, it would have been obvious to one of ordinary skill in the art to modify Brende in view of Choudhary by adding the features of for each data operation in the series of data operations, selecting, by the data processing platform, a respective operation handler that is configured to execute the data operation, generating the domain-specific syntax for the selected handler and providing the domain-specific syntax to the selected handler for executing the data operation, mapping, by the data processing platform, (i) a first portion of a data cache to the first output variable for storing first operation results data that results from execution of the first data operation, and (ii) a second portion of the data cache to the second output variable for storing second operation results data that results from execution of the second data operation, and for the third data operation in the series of data operations: in response to identifying, based on the intermediate syntax, a first input variable that indicates input for the third data operation and that corresponds to the first output variable of the first data operation, and identifying, based on the intermediate syntax, a second input variable that indicates input for the third data operation and that corresponds to the second output variable of the second data operation, waiting for availability of the first operation results data and the second operation results data; retrieving, by the data processing platform, (1) the first operation results data from the first portion of the data cache that is mapped to the first input variable, and (ii) the second operation results data form the second portion of the data cache that is mapped to the second input variable, and providing, by the data processing platform, (i) the retrieved first operation results data, (ii) the retrieved second operation results data, and (iii) the generated domain-specific syntax for executing the third data operation, to the selected operation handler for the third data operation, as disclosed by Wang.
The motivation for doing so would have been to provide utilization of a cluster architecture to improve and simplify stages of jobs. Wang at para. 0052.
Brende in view of Choudhary and Wang does not expressly disclose for the first data operation and the second data operation in the series of data operations: in response to determining that neither the first data operation nor the second data operation depend on input from another data operation, (i) identifying a first output variable that indicates output of the first data operation, and (ii) identifying a second output variable that indicates output of the second data operation, and coordinating a concurrent execution of the first data operation and the second data operation. It is noted that Choudhary discloses defining input and output for operations and that operations corresponding to nodes at the bottom of the abstract syntax tree did not have input and provided output that was used as input to a subsequent node. Choudhary at para. 0045.
Cole discloses a system and method for distributed performance of data aggregation operations. The system includes a multi-stage architecture comprising nodes, where nodes perform data operations in multiple stages. Nodes in a first stage operate on the data to be processed and therefore, do not require input from a prior stage (i.e., for a first data operation and a second data operation in the series of data operations: in response to determining that neither the first data operation nor the second data operation depend on input from another data operation). Cole at col. 2, lines 43-57. The nodes operating in the first stage produce output, which are known as intermediate results. These results are stored on the node and on a storage node of the system, where they can be accessed by nodes operating in subsequent stages to use as input (i.e., storing first operation results … storing second operation results). Cole at col. 12, lines 9-18. Cole further discloses that a node in an intermediate or later stage can receive input from more than one node in a prior stage (i.e., in response to identifying a first input variable indicates input for the third data operation … and identifying a second input variable indicates input for the third data operation … waiting for availability of the first operation results data and the second operations results data) and retrieving the appropriate intermediate output corresponding to the correct input for the node in the next stage (i.e., retrieving … the first operation results data … the second operations results data) and providing it to the node for processing. This can be seen in Figs. 2B and 2C. Computing Nodes A and B (i.e., first/initial stage) perform data operations on data (i.e., do not depend on input from another data operation). They produce respective intermediate outputs (220a, 220b), which are provided as input for computing nodes P and Q in the second stage. As can be seen in Fig. 2C, intermediate results 220a and 220b can be input into a single node (i.e., operation handler). Cole at Figs. 2B, 2C; col. 10, lines 58-67; col. 11, lines 29-32, 43-57. Cole further discloses the multiple execution jobs can be executed on multiple computing nodes to support task and/or data parallelism (i.e., coordinating a concurrent execution of first data operation and second data operation). Cole at col. 2, lines 64-67; col. 3, lines 1-5.
Brende, Choudhary, Wang, and Cole are analogous art because they are directed to the same field of endeavor of data processing.
At the time before the effective filing date of the instant application, it would have been obvious to one of ordinary skill in the art to modify Brende in view of Wang by adding the features of for the first data operation and the second data operation in the series of data operations: in response to determining that neither the first data operation nor the second data operation depend on input from another data operation, (i) identifying a first output variable that indicates output of the first data operation, and (ii) identifying a second output variable that indicates output of the second data operation, and coordinating a concurrent execution of the first data operation and the second data operation, as disclosed by Cole.
The motivation for doing so would have been because determining that a data operation does not depend on input indicates that the data operation utilizes data extracted from a source to perform its operation to produce an output that can be input into subsequent operations in a subsequent stage of processing (Cole at col. 27, lines 40-51) and coordinating concurrent execution of the data operations in a multi-stage architecture can process large data sets more efficiently and reliably. Cole at col. 4, lines 58-67; col. 5, lines 1-5.
Claims 16 and 17 are essentially the same as claims 9 and 10, respectively, in the form of a system. Therefore, they are rejected for the same reasons.
Claim 5 is rejected under 35 U.S.C. 103 as being unpatentable over Brende et al (US Patent Pub 2024/0394251) (Brende), in view of Choudhary et al. (US Patent Pub 2022/0067538) (Choudhary), further in view of Wang et al. (US Patent Pub 2018/0067857) (Wang), further in view of Cole et al. (US Patent 8,732,118) (Cole), further in view of Clarkson (US Patent Pub 2025/0013646).
In regards to claim 5, Brende in view of Choudhary, Wang, and Cole discloses the computer-implemented method of claim 1, but does not expressly disclose wherein the translating of the user- facing syntax is performed at the client device.
Clarkson discloses a system and method with a query engine for graph databases. The system includes client devices that have respective query compilers. The query compilers are configured to generate intermediate representations of a received query (i.e., translating of the user-facing syntax … at the client device). Clarkson at Fig. 1; para. 0022.
Brende, Choudhary, Wang, Cole, and Clarkson are analogous art because they are directed to the same field of endeavor of data processing systems.
At the time before the effective filing date of the instant application, it would have been obvious to one of ordinary skill in the art to modify Brende in view of Choudhary, Wang, and Cole by adding the features of wherein the translating of the user- facing syntax is performed at the client device, as disclosed by Clarkson.
The motivation for doing so would have been to lower the cost of implementing different query languages at the server because only the intermediate representation needs to be supported. Clarkson at para. 0021.
Claims 11, 12, 18, and 19 are rejected under 35 U.S.C. 103 as being unpatentable over Brende et al (US Patent Pub 2024/0394251) (Brende), in view of Choudhary et al. (US Patent Pub 2022/0067538) (Choudhary), in view of Wang et al. (US Patent Pub 2018/0067857) (Wang), further in view of Cole et al. (US Patent 8,732,118) (Cole), further in view of Bernardin et al. (US Patent Pub 2006/0195508) (Bernardin).
In regards to claim 11, Brende in view of Choudhary, Wang, and Cole discloses the computer-implemented method of claim 1, but does not expressly discloses further comprising:
receiving, by the data processing platform, a set of execution parameters in association with the multi-stage data operation, wherein the set of execution parameters includes, for at least one data operation of the multi-stage data operation, a number of retries for the data operation;
for the at least one data operation in the series of data operations, receiving, from a given operation handler, a notification that execution of the at least one data operation has failed; and
in response to receiving the notification, providing, by the data processing platform, an instruction to re-execute the at least one data operation.
Bernardin discloses a system and method for distributing computing where multi-stage jobs are scheduled and distributed to nodes of a cluster. The system provides a configurable parameter (configurable here is interpreted to mean it is received from a user) called Max Attempts, which indicates the maximum number of times to retry a task. If a task fails (i.e., at least one data operation), The reschedule will reschedule a task when it becomes aware that the task has failed (i.e., receiving … a notification that execution of the data operation has failed). The number of times it is rescheduled (i.e., re-execute) is dependent on the Max Attempts parameter. Bernardin at para. 0491.
Brende, Choudhary, Wang, Cole, and Bernardin are analogous art because they are directed to the same field of endeavor of data processing systems.
At the time before the effective filing date of the instant application, it would have been obvious to one of ordinary skill in the art to modify Brende in view of Choudhary, Wang, and Cole by adding the features of receiving, by the data processing platform, a set of execution parameters in association with the multi-stage data operation, wherein the set of execution parameters includes, for the at least one data operation of the multi-stage data operation, a number of retries for the data operation, for at least one data operation in the series of data operations, receiving, from a given operation handler, a notification that execution of the at least one data operation has failed, and in response to receiving the notification, providing, by the data processing platform, an instruction to re-execute the at least one data operation, as disclosed by Bernardin.
The motivation for doing so would have been to ensure tasks get completed but also to ensure there are no runaway tasks that are consuming unlimited resources and delaying job completion indefinitely. Bernardin at para. 0491.
In regards to claim 12, Brende in view of Choudhary, Wang, and Cole discloses the computer-implemented method of claim 1, but does not expressly disclose wherein coordinating execution of the series of data operations included in the multi-stage data operation comprises:
maintaining a state object that tracks a current status of the data operations in the series of data operations; and
providing the client device with access to the state object.
Bernardin discloses a graphical user interface that allows a user to view the status of jobs (i.e., current status of the data operations …). Bernardin at paras. 0068-69.
At the time before the effective filing date of the instant application, it would have been obvious to one of ordinary skill in the art to modify Brende in view of Choudhary, Wang, and Cole by adding the features of maintaining a state object that tracks a current status of the data operations in the series of data operations providing the client device with access to the state object, as disclosed by Bernardin.
The motivation for doing so would have been to allow users to modify job priorities based on job statuses. Bernardin at para. 0068-69.
Claims 18 and 19 are essentially the same as claims 11 and 12, respectively, in the form of a system. Therefore, they are rejected for the same reasons.
Claims 13, 14, and 20 are rejected under 35 U.S.C. 103 as being unpatentable over Brende et al (US Patent Pub 2024/0394251) (Brende), in view of Choudhary et al. (US Patent Pub 2022/0067538) (Choudhary), further in view of Wang et al. (US Patent Pub 2018/0067857) (Wang), further in view of Cole et al. (US Patent 8,732,118) (Cole), further in view of Hinkle et al. (US Patent Pub 2025/0190248) (Hinkle)
In regards to claim 13, Brende in view of Choudhary, Wang, and Cole discloses the computer-implemented method of claim 1, but does not expressly disclose wherein a given operation handler is selected from a pool of idle operation handlers that are configured to execute the given data operation.
Hinkle discloses a system and method for management of asynchronous task processors. The system manages worker entities to perform computing tasks. The number of idle workers is tracked to determine when to add or remove workers. Hinkle at paras. 0012, 0025, 0027.
Brende, Choudhary, Wang, Cole, and Hinkle are analogous art because they are directed to the same field of endeavor of distributed data processing systems.
At the time before the effective filing date of the instant application, it would have been obvious to one of ordinary skill in the art to modify Brende in view of Choudhary, Wang, and Cole by adding the features of wherein a given operation handler is selected from a pool of idle operation handlers that are configured to execute the given data operation, as disclosed by Hinkle.
The motivation for doing so would have been to ensure dynamic conservation of resources. Hinkle at para. 0007.
In regards to claim 14, Brende in view of Choudhary, Wang, Cole, and Hinkle discloses the computer-implemented method of claim 13, further comprising: tracking a number of idle operation handlers over time, and (i) increasing a number of active operation handlers in response to the number of idle operation handlers being fewer than a minimum threshold number, or (ii) decreasing the number of active operation handlers in response to the number of idle operation handlers being greater than a maximum threshold number. Hinkle at para. 0012.17
Claim 20 is essentially the same as claim 13 in the form of a system. Therefore, it is rejected for the same reasons.
Response to Amendment
Rejection of Claims 13, 14, and 20 under 35 U.S.C 112(b)
Applicant’s amendment to claims 13, 14, and 20 is acknowledged. Consequently, the rejection to claims 13, 14, and 20 under 35 U.S.C. 112(b) is withdrawn.
Response to Arguments
Rejection of claims 1-4, 6-10, and 15-17 under 35 U.S.C. 103
Applicant’s arguments in regards to the rejections to claims 1-4, 6-10, and 15-17 under 35 U.S.C. 103, have been fully considered but they are persuasive with regards to the limitation” wherein the intermediate syntax separately defines … and wherein the third data operation references respective outputs of the first data operation and the second data operation as inputs to the third data operation”.
However, upon further search and consideration, new grounds of rejection are set forth above as necessitated by Applicant’s amendments. The new grounds of rejection rely on Choudhary, which discloses a system and method for generating an intermediate abstraction of operations, where the intermediate form is an abstract syntax tree (AST). The AST includes nodes, which can represent individual operations and is generated based on rules that define input and output for the operations.
Applicant additionally argues the cited prior art fails to disclose (1) “providing, by the data processing platform, (i) the retrieved first operation results data, (ii) the retrieved second operation results data, and (iii) the generated domain-specific syntax for executing the third data operation, to the selected operation handler for the third data operation,” (2) “for the first data operation and the second data operation in the series of data operations: in response to determining that neither the first data operation nor the second data operation depend on input from another data operation, (i) identifying a first output variable that indicates output of the first data operation, and (ii) identifying a second output variable that indicates output of the second data operation,” and (3) “coordinating a concurrent execution of the first data operation and the second data operation.”
Examiner is required to give claims their broadest reasonable interpretation in light of the specification. However, limitations from the specification are not read into the claims. MPEP 2111.
In regards to limitation (1), Applicant argues Wang discloses a sequential arrangement in which each stage receives only one input data. Remarks at 12-13. Examiner respectfully disagrees. While Wang discloses “each stay may, for example, only have one input data” (Want at para. 0069), Wang seems to describe “one input data” as a particular embodiment. Wang discloses in embodiments that a stage of a job can execute “operations” (i.e., more than one operation). Wang at para. 0066. In such a case, each operation would produce its own output, which is cached and/or stored for retrieval when identified as needed. The cited passages describe the process of retrieving the necessary input data depending on where it is available. Since a stage can execute multiple operations (i.e., first and second data operations), then they would produce respective output for that stage, which would be used by a subsequent data operation in the next stage (i.e., third data operation). In regards to Applicant’s argument about providing “generated domain-specific syntax for executing the third data operation,” as noted, Brende discloses generating domain-specific syntax to be executed for a particular database system (i.e., operation handler). Brende at para. 0239-240. Modified by Wang, the result is a system that provides the appropriate instructions (i.e., domain-specific syntax) for a worker node to perform its assigned data operations while accessing necessary input data that may be stored in the cache. For at least these reasons, Examiner asserts Wang discloses limitation (1).
In regards to limitation (2), Applicant argues Cole discloses compute nodes that perform the same function and does not disclose compute nodes that perform different data operations. Remarks at 14. Examiner respectfully disagrees. Applicant seems to have a narrower interpretation of the limitation than is required. Under the broadest reasonable interpretation of the limitation a “different data operations” (as recited in amended claims 1 and 15 above), merely requires that they are different in some manner. The same type of data operation (i.e., an aggregation operation) performed on different sets of data, which Applicant acknowledges is being performed, satisfies the limitation because it is a “different data operation”. If Applicant’s intention is to require that the data operations are of different types of operations, then such clarifying amendments should be added. For at least these reasons, Examiner asserts Cole discloses limitation (2).
In regards to limitation (3), Applicant argues Cole does not disclose the limitation is performed “in response to determining that neither the first data operation nor the second data operation depend on input from another data operation. Remarks at 14. The limitation of “coordinating a concurrent execution of the first data operation and the second data operation” is not required to be “in response to determining …” as argued by Applicant, at least as recited and presented in the claims. First, there is no recitation that the “coordinating” is in response to the “determining”. Second, the formatting of the limitations indicates that both the “mapping” and the “coordinating” limitations are on the same level as the ”in response to determining” limitation and therefore would not be included as being performed “in response to determining” like the “identifying” limitations. If Applicant intends the “coordinating” to be in response to the “determining”, Examiner suggests making clarifying amendments to the limitations. For at least these reasons, Cole discloses limitation (3).
Applicant additionally argues the stated motivation to combine Cole with Brende and Wang (and now additionally Choudhary) does not explain why one of ordinary skill in the art would have been motivated to modify the references to arrive at the arrangement recited in claims 1 and 15. In particular, why one of ordinary skill in the art would modify the references to determine that two separately defined and different data operations do not depend on another data operation and, in response, “identifying a first output variable that indicates output of the first data operation,” “identifying a second output variable that indicates output of the second data operation,” and “coordinating a concurrent execution of the first data operation and the second data operation.” Remarks at 14-15. Examiner respectfully disagrees. One of ordinary skill in the art would be aware of the benefits of parallel processing (i.e., concurrent execution), such as being able to process data more efficiently since tasks can be performed in parallel (i.e., concurrently). Cole discloses such benefits, which are cited for the motivation in the rejection above. For these reasons, one of ordinary skill in the art would be motivated to utilize the multi-stage architecture as disclosed in Cole to allow for parallel execution (i.e., concurrent execution) of tasks. In regards to motivation to modify the references with Cole to achieve the remaining limitations at issue, Cole discloses a multi-stage data manipulation process as set forth in the rejection above. One of ordinary skill in the art, upon reviewing Cole, would recognize that functions that merely utilize extracted data in a first stage of the multi-stage operation (i.e., determining that neither … depend on input from another data operation) would provide output that would be utilized by second stage operations, as disclosed by Cole. Cole at col. 2, lines 51-57; col. 28, lines 40-51. Therefore, one of ordinary skill would recognize that in order to gain the benefits of a multi-stage architecture disclosed by Cole, the operations performed in the multi-stage architecture would need to behave in the manner disclosed by Cole. For at least these reasons, one of ordinary skill in the art would have been motivated to modify the references with Cole.
Applicant does not present arguments in regards to the remaining limitations and also does not present arguments in regards to the remaining claims. Therefore, claims 1-4, 6-10, and 15-17 remain rejected under 35 U.S.C. 103 based on the new grounds of rejection set forth above, as necessitated by Applicant’s amendments, and the additional explanations provided above.
Rejection of claims 11, 12, 18, and 19 under 35 U.S.C. 103
Applicant does not present arguments in regards to the rejections to claims 11, 12, 18, and 19 under 35 U.S.C. 103. However, they are now rejected under the new grounds of rejection set forth above as necessitated by Applicant’s amendments.
Rejection of claims 13, 14, and 20 under 35 U.S.C. 103
Applicant does not present arguments in regards to the rejections to claims 13, 14, and 20 under 35 U.S.C. 103. However, they are now rejected under the new grounds of rejection set forth above as necessitated by Applicant’s amendments.
Interview
Applicant is invited to contact Examiner to conduct an interview to clarify the rejections and discuss amendments to advance prosecution.
Additional Prior Art
Additional relevant prior art are listed on the attached PTO-892 form. Some examples are:
Ben-Artzi et al. (US Patent Pub 2009/0313613) discloses a system and method for automatic translation of computer code using an abstract syntax tree.
Higgins et al. (US Patent Pub 2020/0089710) discloses a system and method for processing time series data using parallelization of instructions and converting a query into a query tree.
Kondiles et al. (US Patent Pub 2020/0117664) discloses a system and method for generating a query plan through the use of an abstract syntax tree.
Deshwal et al. (US Patent Pub 2023/0119724) discloses a system and method for graph querying using deferred join processing where the query is translated to an abstract syntax tree for additional processing.
Conclusion
Any inquiry concerning this communication or earlier communications from the examiner should be directed to Examiner Michael Le whose telephone number is 571-272-7970 and fax number is 571-273-7970. The examiner can normally be reached Mon-Fri 9:30 AM – 6 PM.
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, Tony Mahmoudi can be reached on 571-272-4078. 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.
/MICHAEL LE/Examiner, Art Unit 2163
/TONY MAHMOUDI/Supervisory Patent Examiner, Art Unit 2163
1 Query is received from a user in natural language (i.e., definition of a multi-stage data operation expressed in user facing syntax).
2 The natural language query (i.e., user facing syntax) is translated to an intermediate syntax, such as AST.
3 The abstract representation is analyzed to determine what the user intends with what data elements (i.e., identify series of data operations in the multi-stage data operation).
4 The abstract representation is used to generate a standardized expression that can be validated for syntax correctness and database specific requirements (i.e., domain-specific syntax).
5 The executable query (i.e., domain specific syntax) is sent to the client agent to be executed
6 An operations table stores cache IDs (i.e., cache key) that references cached intermediate data. Since this information is stored in a table, the association is maintained.
7 Translation to AST is performed at
8 Jobs can come from different data sources (i.e., different processing platforms) and the worker nodes are capable of executing the data operations (i.e., configured to execute data operations on different data platforms).
9 Jobs can come from different users (i.e., same data platform) and the worker nodes are capable of executing the different data operations required of the requested job (i.e., configured to execute different types of data operations on a same data platforms).
10 Each stage (i.e. handler) produces an output based on its execution of its portion of the job. The output data is stored in an assigned cache location referenced by an ID (i.e., cache key).
11 Each stage (i.e. handler) produces an output based on its execution of its portion of the job. The output data is stored in an assigned cache location referenced by an ID (i.e., cache key).
12 Query is received from a user in natural language (i.e., definition of a multi-stage data operation expressed in user facing syntax).
13 The natural language query (i.e., user facing syntax) is translated to an intermediate syntax, such as AST.
14 The abstract representation is analyzed to determine what the user intends with what data elements (i.e., identify series of data operations in the multi-stage data operation).
15 The abstract representation is used to generate a standardized expression that can be validated for syntax correctness and database specific requirements (i.e., domain-specific syntax).
16 The executable query (i.e., domain specific syntax) is sent to the client agent to be executed
17 Workers are added or removed based on the number of workers meeting respective thresholds.