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 .
Claim Rejections - 35 USC § 101
35 U.S.C. 101 reads as follows:
Whoever invents or discovers any new and useful process, machine, manufacture, or composition of matter, or any new and useful improvement thereof, may obtain a patent therefor, subject to the conditions and requirements of this title.
Claims 1-20 are rejected under 35 U.S.C. 101 because the claimed invention is directed to processing a data stream using an execution graph, and determining if graph parameters have been modified, without significantly more.
The limitations in Independent Claims 1, 10 and 18 of processing data and determining if parameters have been updated, as drafted, are processes that, under their broadest reasonable interpretation, covers steps that could reasonably be performed in the mind, including with the aid of pen and paper, but for the recitation of generic computer components. That is, the limitations of “processing the plurality of streams of data items using the execution graph and the timestamp associated with each data item in the plurality of streams of data items, wherein: an individual operator of the plurality of operators is configured to perform a function on at least one stream of data items” and “determining that the programmable connector has been modified via an update,” in Claims 1, 10 and 18, as drafted, are processes that, under their broadest reasonable interpretation, recite the abstract idea of mental processes. These limitations encompass a human mind carrying out these functions through observation, evaluation judgment and/or opinion, or even with the aid of pen and paper. Thus, these limitations recite and fall within the “Mental Processes” grouping of abstract ideas.
This judicial exception is not integrated into a practical application. Claims 1, 10 and 18 recite the following additional elements “receiving, from the plurality of data sources, a respective plurality of streams of data items, wherein each data item in the plurality of streams of data items is associated with a timestamp” and “providing the plurality of processed data items to the one or more data destinations,” these limitations do nothing more than add insignificant extra solution activity to the judicial exception, such as data gathering and outputting the results of the abstract idea, see MPEP 2106.05(g).
Further, with regard to the “the processing the plurality of streams of data items generates a plurality of processed data items” and “performing the update on a host server, within the cluster of host servers, while continuing to receive and process the plurality of streams of data items” elements of Claims 1, 10 and 18; the “processing system of Claim 10; and the “computer storage media storing instructions” of Claims 10 and 18; these elements are recited at a high-level of generality such that it amounts no more than mere instructions to apply the exception using a generic computer component, see MPEP 2106.05(f). Accordingly, the additional elements do not integrate the abstract idea into a practical application because they do not impose any meaningful limits on practicing the abstract idea.
With regard to the individual dependent claims:
Claims 2, 11 and 19 recite, “wherein the individual operator includes a uniform resource identifier that identifies a module that contains code that is downloadable to a corresponding host server within the cluster of host servers.”
Claims 4 and 13 recite, “wherein the module is referenced by operators in multiple different programmable connectors written in multiple different formats.”
Claims 9 and 17 recite, “wherein the individual operator comprises: a map operator configured to perform a transformation on a data item in the at least one stream of data items; a concatenate operator configured to merge at least two input streams of data items into a single stream of data items; an inspect operator configured to examine a data item in the at least one stream of data items for debugging and monitoring purposes; a filter operator configured to select a data item in the at least one stream of data items based on a predicate; a broadcast operator configured to send a copy of data items in the at least one stream of data items to a set of next operators or data destinations; or a branch operator configured to split the at least one stream of data items based on a condition.”
These limitations of Claims 2, 4, 9, 11, 13, 17 and 19, as drafted, are processes that, under their broadest reasonable interpretation, recite the abstract idea of a mental process. These limitations encompass a human mind carrying out this function through observation, evaluation judgment and/or opinion, or even with the aid of pen and paper. Thus, these limitations recite and fall within the “Mental Processes” grouping of abstract ideas. Accordingly, these additional elements do not integrate the abstract idea into a practical application because they do not impose any meaningful limits on practicing the abstract idea.
Claims 3, 12 and 20 recite, “wherein the module is written in a portable binary code format.”
These limitations of Claims 3, 12 and 20 do nothing more than generally link the judicial exception to a particular technological environment, see MPEP 2106.05(h). Accordingly, these additional elements do not integrate the abstract idea into a practical application because they do not impose any meaningful limits on practicing the abstract idea.
Claims 5 and 14 recite, “wherein: the update targets an existing operator in the execution graph; the host server is executing the existing operator; and performing the update on the host server comprises installing the update on the host server.”
Claims 6 and 15 recite, “wherein: the update adds a new operator to the execution graph; the host server is assigned to execute the new operator; and performing the update on the host server comprises adding the new operator to the host server.”
Claims 7 and 16 recite, “wherein: the update removes an existing operator from the execution graph; the host server is executing the existing operator; and performing the update on the host server comprises removing the existing operator from the host server.”
Claim 8 recites, “wherein the update adds or removes at least one of: a data source from which an associated stream of data items is received; or a data destination to which at least a portion of the plurality of processed data items is provided.”
These limitations of Claims 5-8 and 14-16 are recited at a high-level of generality such that they amount to no more than mere instructions to apply the exception using generic computer components, see MPEP 2106.05(f). Accordingly, these additional elements do not integrate the abstract idea into a practical application because they do not impose any meaningful limits on practicing the abstract idea.
Further, these limitations of Claims 5-8 and 14-16 amount to no more than mere instructions to apply the exception using well-understood, routine and conventional computer components and functions, recited at a high level of generality, i.e. receiving/transmitting data over a network and storing/retrieving information in memory. As such, these additional elements do not amount to an inventive concept and are not by themselves sufficient to transform the judicial exception into a patent eligible invention, see MPEP 2106.05(d).
Claim Rejections - 35 USC § 102
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 (i.e., changing from AIA to pre-AIA ) 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 the appropriate paragraphs of 35 U.S.C. 102 that form the basis for the rejections under this section made in this Office action:
A person shall be entitled to a patent unless –
(a)(1) the claimed invention was patented, described in a printed publication, or in public use, on sale, or otherwise available to the public before the effective filing date of the claimed invention.
Claims 1, 5-10 and 14-18 are rejected under 35 U.S.C. 102(a)(1) as being anticipated by Potharaju et al. (US PGPUB 2020/0034185; hereinafter “Potharaju”).
Claim 1:
Potharaju teaches a method for modifying a programmable connector that defines a plurality of data sources, one or more data destinations, a plurality of operators, and a plurality of edges that collectively construct an execution graph, the plurality of operators installed on a cluster of host servers in an edge computing environment ([0051] “the controller 210 generates the control message. That control message represents the topology of the new dataflow execution graph, and possibly also new or modified functions that are to be performed by specified operators, new or modified parameters or parameter values that are to be held by operators or edges, and how state is to be allocated amongst multiple stateful operators,” wherein the “control message” is the “programmable connector”.), the method comprising:
receiving, from the plurality of data sources, a respective plurality of streams of data items, wherein each data item in the plurality of streams of data items is associated with a timestamp ([0023] “These source operators receive the raw input data messages (either as a stream, or in batches) received by the dataflow execution graph.” [0022] “Each operator sends and/or receives logically timestamped data messages along directed edges of the dataflow execution graph.”);
processing the plurality of streams of data items using the execution graph and the timestamp associated with each data item in the plurality of streams of data items ([0005] “Such dataflow execution graphs are often used to execute some processing (such as in response to a query) against incoming data messages (either as a stream or in batches).” [0022] “Each operator sends and/or receives logically timestamped data messages along directed edges of the dataflow execution graph.”),
wherein:
an individual operator of the plurality of operators is configured to perform a function on at least one stream of data items and provide the at least one stream of data items to a next operator or a data destination via an edge of the plurality of edges ([0023] “Upon receiving a data message along an input edge, an operator performs its function, updates its local state if appropriate, potentially generates new data messages, and sends those new data messages to downstream operators along output edge(s).”); and
the processing the plurality of streams of data items generates a plurality of processed data items ([0023] “In the example dataflow execution graph 100, the source operator 101 receives input data messages (as represented by arrow 121), performs a function, generates resulting data message(s), and sends those resulting data messages along directed edges 111 and 112, as appropriate,” wherein the “resulting data message(s)” are the “processed data items”.);
determining that the programmable connector has been modified via an update ([0005] “a performance parameter of the dataflow execution graph is monitored and compared against a service level objective. Based on the comparison, it is automatically decided whether a configuration of the dataflow execution graph should be changed. If a change is decided to be made, the configuration of the dataflow execution graph is altered.”);
performing the update on a host server, within the cluster of host servers, while continuing to receive and process the plurality of streams of data items ([0049] “The method 600 also includes generating an intermediate dataflow execution graph (act 602) based on both the original dataflow execution graph that is about to be modified as well as the new dataflow execution graph that is to be the result of the modification.” [0052] “The data stream(s) is/are then flowed to the intermediate dataflow execution graph (act 604) along with the control message(s) (also act 604). Note that this flowing of the data stream(s) is not deferred until the new dataflow execution graph is already established. As an example, in the environment 200 of FIG. 2, the data messages 211 and the control message are fed into the dataflow execution graph 220, which is now the intermediate dataflow execution graph during the reconfiguration,” wherein the recitation that the “flowing of the data stream(s) is not deferred” indicates that the server is “continuing to receive and process the plurality of streams of data items”.); and
providing the plurality of processed data items to the one or more data destinations ([0024] “Operators without output edges are termed ‘sink’ operators, or simply ‘sinks’. One or more of these sink operators generate the output result of the dataflow execution graph. In the example dataflow execution graph 100, the sink operator 103 receives data messages along directed edges 111 and 113, performs its function, and generates resulting output data (as represented by arrow 123). The sink operator 104 receives data messages along directed edges 112 and 114, performs its function, and generates resulting output data (as represented by arrow 124).” [0028] “The dataflow execution graph 220 performs a computational job on the input data messages 211, and generates output results 221.”).
Claim 5:
Potharaju teaches the method of claim 1, wherein:
the update targets an existing operator in the execution graph ([0047] “The method 600 determines a new dataflow execution graph that the old dataflow execution graph is to be changed to (act 601). As an example, suppose that the example original dataflow execution graph 500 of FIG. 5 is to be modified to a new dataflow execution graph 700 of FIG. 7.” [0048] “The operators 501′, 502′, 503′ and 504′ of the example new dataflow execution graph 700 of FIG. 7 are the same operators 501, 502, 503 and 504, respectively, of the example original dataflow execution graph 500 of FIG. 5. Thus, the operators 501 and 501′ are common, operators 502 and 502′ are common, operators 503 and 503′ are common, and operators 504 and 504′ are common. However, the prime suffix is added in FIG. 7 to represent that the operator may have its function, parameter(s) and/or state changed as a result of the reconfiguration,” wherein the updated operator 501’ targets an existing operator 501.);
the host server is executing the existing operator ([0052] “The data stream(s) is/are then flowed to the intermediate dataflow execution graph (act 604) along with the control message(s) (also act 604). Note that this flowing of the data stream(s) is not deferred until the new dataflow execution graph is already established.”); and
performing the update on the host server comprises installing the update on the host server ([0059] “The control message is provided first to the operators 501”. [0060] “After operator 501′ processes the control message, the control message is passed along directed edges 511′, 715 and 512′.”).
Claim 6:
Potharaju teaches the method of claim 1, wherein:
the update adds a new operator to the execution graph ([0049] “The method 600 also includes generating an intermediate dataflow execution graph (act 602) based on both the original dataflow execution graph that is about to be modified as well as the new dataflow execution graph that is to be the result of the modification.” [0055] “the intermediate dataflow execution graph 800A includes operators 501 through 504, 501′ through 504′ and 705,” wherein “operator 705” is “a new operator”.);
the host server is assigned to execute the new operator; and performing the update on the host server comprises adding the new operator to the host server ([0062] “After operators 503′, 705 and 504′ each process the control message, the respective operator thereafter begins processing incoming data messages, and also reports the completion of the processing of the control message to the controller 210.”).
Claim 7:
Potharaju teaches the method of claim 1, wherein:
the update removes an existing operator from the execution graph ([0041] “A third type of change in configuration is a change to the actual structure of the dataflow execution graph itself. This change in structure might include adding or removing an operator, or adding or removing an edge, or combinations or multiples of the above.”);
the host server is executing the existing operator ([0052] “The data stream(s) is/are then flowed to the intermediate dataflow execution graph (act 604) along with the control message(s) (also act 604). Note that this flowing of the data stream(s) is not deferred until the new dataflow execution graph is already established.”); and
performing the update on the host server comprises removing the existing operator from the host server (Claim 2 of Potharaju: “altering the configuration of the dataflow execution graph results in an addition or removal of an operator of the dataflow execution graph.”).
Claim 8:
Potharaju teaches the method of claim 1, wherein the update adds or removes at least one of:
a data source from which an associated stream of data items is received; or a data destination to which at least a portion of the plurality of processed data items is provided ([0003] “Operators without output edges are termed ‘sink’ operators, or simply ‘sinks’,” wherein the “sink operators” are “a data destination”.[0049] “The method 600 also includes generating an intermediate dataflow execution graph (act 602) based on both the original dataflow execution graph that is about to be modified as well as the new dataflow execution graph that is to be the result of the modification.” [0055] “the intermediate dataflow execution graph 800A includes operators 501 through 504, 501′ through 504′ and 705,” wherein “operator 705” is added and, as shown in Figs. 8A-8C, is a “sink operator”, i.e. “a data destination”.).
Claim 9:
Potharaju teaches the method of claim 1, wherein the individual operator comprises:
a map operator configured to perform a transformation on a data item in the at least one stream of data items; a concatenate operator configured to merge at least two input streams of data items into a single stream of data items; an inspect operator configured to examine a data item in the at least one stream of data items for debugging and monitoring purposes; a filter operator configured to select a data item in the at least one stream of data items based on a predicate; a broadcast operator configured to send a copy of data items in the at least one stream of data items to a set of next operators or data destinations; or a branch operator configured to split the at least one stream of data items based on a condition ([0047] “for instance, the operators 501 and 502 were mapping operators, and operators 503 and 504 were reducer operators in a map-reduce model,” wherein operators 501/502 are a “map operator” and operators 503/504 are a “concatenate operator”.).
Claims 10 and 14-17:
With regard to Claims 10 and 14-17, these claims are equivalent in scope to Claims 1, 5-7 and 9 rejected above, merely having a different independent claim type, and as such Claims 10 and 14-17 are rejected under the same grounds and for the same reasons as discussed above with regard to Claims 1, 5-7 and 9.
With further regard to Claim 10, the claim recites additional elements not specifically addressed in the rejection of Claim 1. The Potharaju reference also anticipates these additional elements of Claim 10, for example, the system comprising:
a processing system (Fig. 9: Processor(s) 902); and
computer storage media storing instructions that, when executed by the processing system, cause the system to perform operations (Fig. 9: Memory 904. [0072] “If such acts are implemented in software, one or more processors… direct the operation of the computing system in response to having executed computer-executable instructions that constitute an executable component. For example, such computer-executable instructions may be embodied on one or more computer-readable media that form a computer program product.” [0073] “The computer-executable instructions (and the manipulated data) may be stored in the memory 904 of the computing system 900.”).
Claim 18:
With regard to Claim 18, this claim is equivalent in scope to Claim 1 rejected above, merely having a different independent claim type, and as such Claim 18 is rejected under the same grounds and for the same reasons as discussed above with regard to Claim 1.
With further regard to Claim 18, the claim recites additional elements not specifically addressed in the rejection of Claim 1. The Potharaju reference also anticipates these additional elements of Claim 18, for example, Potharaju teaches:
Computer storage media storing instructions for modifying a programmable connector that defines a plurality of data sources, one or more data destinations, a plurality of operators, and a plurality of edges that collectively construct an execution graph, the plurality of operators installed on a cluster of host servers in an edge computing environment, the instructions, when executed by a processing system, causing a system to perform operations ([0072] “If such acts are implemented in software, one or more processors… direct the operation of the computing system in response to having executed computer-executable instructions that constitute an executable component. For example, such computer-executable instructions may be embodied on one or more computer-readable media that form a computer program product.” [0073] “The computer-executable instructions (and the manipulated data) may be stored in the memory 904 of the computing system 900.”).
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 (i.e., changing from AIA to pre-AIA ) 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, 11 and 19 are rejected under 35 U.S.C. 103 as being unpatentable over Potharaju as applied to Claims 1, 10 and 18 above, and further in view of Kuhr et al. (US PGPUB 2017/0091460; hereinafter “Kuhr”).
Claim 2:
Potharaju teaches all the limitations of claim 1 as described above. Potharaju does not teach the following, however, Kuhr teaches:
wherein the individual operator includes a uniform resource identifier that identifies a module that contains code that is downloadable to a corresponding host server within the cluster of host servers ([0053] “the grains of an application (the circles) happen to be arranged in a graph structure where the grains are nodes of the graph. This can be considered a directed graph with edges exiting nodes to lower nodes. This graph might represent webpages with the edges representing hyperlinks and the nodes corresponding to a URL of a web application. The grains/nodes of the graph might have different uses, with some nodes representing a subset of a webpage, a routine within a subroutine, a feature of an interface, an API call or other granular element,” wherein a “grain”/“node” is the “operator” and further wherein a “URL” is a type of “uniform resource identifier”.).
Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified the method as disclosed by Potharaju with the operator including a uniform resource identifier (URI) as taught by Kuhr since the use a URI/URL to identify associated code for a specified operator advantageously enables the execution graph to be modified or updated by changing the code stored at the specified URI/URL, without having to modify the execution graph itself.
Claims 11 and 19:
With regard to Claims 11 and 19, these claims are equivalent in scope to Claim 2 rejected above, merely having a different independent claim type, and as such Claims 11 and 19 are rejected under the same grounds and for the same reasons as discussed above with regard to Claim 2.
Claims 3, 12 and 20 are rejected under 35 U.S.C. 103 as being unpatentable over Potharaju in view of Kuhr as applied to Claims 2, 11 and 19 above, and further in view of Van Emden et al. (US PGPUB 2024/0411533; hereinafter “Van Emden”).
Claim 3:
Potharaju in view of Kuhr teaches all the limitations of claim 2 as described above. Potharaju in view of Kuhr does not teach the following, however, Van Emden teaches:
wherein the module is written in a portable binary code format ([0022] “computational graphs are known per se, and typically represented by a directed graph comprised of nodes and edges between nodes. The nodes may define computational operations, which may typically be mathematical operations (e.g., simple operations such as additions, subtractions, and multiplications, but also more complex operation such as convolutions or nonlinear functions). In general, such operations may also be referred to as functions, and may accept an input and produce an output.” [0099] “each operator of the machine learned model may be available as a pure C, e.g., C99 version which may be included in the code which may be later compiled into a universal WebAssembly binary intermediate representation, with the latter also being simply referred to as a WebAssembly binary,” wherein the “WebAssembly binary” is a type of “portable binary code format”.).
Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified the method as disclosed by Potharaju in view of Kuhr with the portable binary code format as taught by Van Emden in order to “facilitate deployment across different devices and types of devices” (Van Emden [0095]).
Claims 12 and 20:
With regard to Claims 12 and 20, these claims are equivalent in scope to Claims 3 rejected above, merely having a different independent claim type, and as such Claims 12 and 20 are rejected under the same grounds and for the same reasons as discussed above with regard to Claims 3.
Claims 4 and 13 are rejected under 35 U.S.C. 103 as being unpatentable over Potharaju in view of Kuhr as applied to Claims 2 and 11 above, and further in view of Patro et al. (US PGPUB 2023/0090828; hereinafter “Patro”).
Claim 4:
Potharaju in view of Kuhr teaches all the limitations of claim 2 as described above. Potharaju in view of Kuhr does not teach the following, however, Patro teaches:
wherein the module is referenced by operators in multiple different programmable connectors written in multiple different formats ([0023] “a tree structure (e.g., a configuration tree) that is instantiated using extensible markup language (XML) (e.g., an XML data model instantiation), a JavaScript Object Notation (JSON), or other framework that enables the model to be referenced at a specific level or node within the hierarchical model,” wherein “XML” and “JSON” are the “multiple different formats”. [0033] “a configuration modification request may be referred to as an XML or JSON request. Moreover, the XML or JSON request may reference a hierarchical model that forms a directed acyclic graph (DAG).”).
Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified the method as disclosed by Potharaju in view of Kuhr with the referenced operators as taught by Patro in order to “effectively synchronize configuration modifications across any number of server nodes and associated virtual services” (Patro [0010]).
Claim 13:
With regard to Claim 13, this claim is equivalent in scope to Claim 4 rejected above, merely having a different independent claim type, and as such Claim 13 is rejected under the same grounds and for the same reasons as discussed above with regard to Claim 4.
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure is as follows:
Ravid et al. (US PGPUB 2018/0239615) discloses a method for processing keyed data items, including use of a parameterized application which has one or more parameters that are configurable with one or more values.
Jin et al. (“Towards Dataflow-based Graph Accelerator,” 2017) discusses an in-depth micro-architectural study on a variety of graph algorithms as well as discussing the building of a build a preliminary graph processing accelerator based on a dataflow model.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to Joanne G. Macasiano whose telephone number is (571)270-7749. The examiner can normally be reached Monday to Thursday, 10:30 AM to 6:00 PM Eastern Standard Time.
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, Bradley Teets can be reached at (571) 272-3338. 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.
/JOANNE G MACASIANO/Examiner, Art Unit 2197