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
Claims 1-20 are rejected under 35 U.S.C. 101 because the claimed invention is directed to a judicial exception (i.e., a law of nature, a natural phenomenon, or an abstract idea) without significantly more.
Claim 1
Step 1, This part of the eligibility analysis evaluates whether the claim falls within any statutory category. See MPEP 2106.03. The claim recites at least one step or act. Thus, the claim is to a process, which is one of the statutory categories of invention. (Step 1: YES).
Step 2A – Prong One: This part of the eligibility analysis evaluates whether the claim recites a judicial exception. As explained in MPEP 2106.04, subsection II, a claim “recites” a judicial exception when the judicial exception is “set forth” or “described” in the claim.
Step “perform… an operation specified by the command on the distributed data object…” An operation can be a calculation of 2+2. Clearly, a human can simply perform this operation. This step is nothing more than observations, evaluations, judgments that can be performed in human mind (i.e., a mental process [Wingdings font/0xF3] abstract idea). Further, the limitations “a dataset manager”, “the operation executed in parallel on the plurality of computer nodes” simply uses multiple computers/computer components as tools to perform abstract ideas.
Step “produce… derived data generated by the operation on the distributed data object…” Since a calculation is 2+2, a derived data is 4. This step is nothing more than observations, evaluations, judgments that can be performed in human mind (i.e., a mental process [Wingdings font/0xF3] abstract idea). Further, limitation “the dataset manager” is simple a computer tool that is used to perform the abstract idea.
“Unless it is clear that a claim recites distinct exceptions, such as a law of nature and an abstract idea, care should be taken not to parse the claim into multiple exceptions, particularly in claims involving abstract ideas.” MPEP 2106.04, subsection II.B. However, if possible, the examiner should consider the limitations together as a single abstract idea rather than as a plurality of separate abstract ideas to be analyzed individually. “For example, in a claim that includes a series of steps that recite mental steps as well as a mathematical calculation, an examiner should identify the claim as reciting both a mental process and a mathematical concept for Step 2A, Prong One to make the analysis clear on the record.” MPEP 2106.04, subsection II.B. Under such circumstances, however, the Supreme Court has treated such claims in the same manner as claims reciting a single judicial exception. Id. (discussing Bilski v. Kappos, 561 U.S. 593 (2010)). Here, the limitations fall within the mental process grouping of abstract ideas and they are considered together as a single abstract idea for further analysis. (Step 2A, Prong One: YES).
The claim recites the additional elements/limitations: “receiving, at a system comprising a plurality of computer nodes in an interactive programming session, a command based on program code of a program being developed in the interactive programming session”, “distribute, by the system, data items from a network-attached memory to a distributed data object comprising data in node memories of the plurality of computer nodes”
a) MPEP § 2106.05(a) "Improvements to the Functioning of a Computer or to Any Other Technology or Technical Field."
There is no improvement to Functioning of a Computer or to Any Other Technology or Technical Field. The limitation “receiving, at a system comprising a plurality of computer nodes in an interactive programming session, a command based on program code of a program being developed in the interactive programming session” simply data gathering step and the limitation “distribute, by the system, data items from a network-attached memory to a distributed data object comprising data in node memories of the plurality of computer nodes” simply transmitting data from point A to point B. These limitations do not make any improvements to the functionalities of a computer, database technology, or any other technologies.
b) MPEP § 2106.05(b) Particular Machine. The judicial exception does not apply to any particular machine.
The claim is silent regarding specific limitations directed to an improved computer system, processor, memory, network, database, or Internet, nor do applicant direct examiner’s attention to such specific limitations. "[T]he mere recitation of a generic computer cannot transform a patent-ineligible abstract idea into a patent-eligible invention." Alice, 573 U.S. at 223; see also Bascom Glob. Internet Servs., Inc. v. AT&T Mobility LLC, 827 F.3d 1341, 1348 (Fed. Cir. 2016) ("An abstract idea on 'an Internet computer network' or on a generic computer is still an abstract idea."). Applying this reasoning here, the claim is not directed to a particular machine, but rather merely implement an abstract idea using generic computer components such as “a system”, “computer nodes “, “an interactive programming session”, ‘a network-attached memory”, “a distributed data object”, “a dataset manager.” Thus, the claims fail to satisfy the "tied to a particular machine" prong of the Bilski machine-or-transformation test.
c) MPEP § 2106.05(c) Particular Transformation.
The claim operates to gathering data, transmitting data, executing operations on gathered data, and obtaining the results. The steps are not a "transformation or reduction of an article into a different state or thing constituting patent-eligible subject matter[.]" See In re Bilski, 545 F.3d 943, 962 (Fed. Cir. 2008) (en bane), aff'd sub nom, Bilski v. Kappas, 561 U.S. 593 (2010); see also CyberSource Corp. v. Retail Decisions, Inc., 654 F.3d 1366, 1375 (Fed. Cir. 2011) ("The mere manipulation or reorganization of data ... does not satisfy the transformation prong."). Applying this guidance here, the claims fail to satisfy the transformation prong of the Bilski machine-or-transformation test.
d) MPEP § 2106.05(e) Other Meaningful Limitations.
This section of the MPEP guides: Diamond v. Diehr provides an example of a claim that recited meaningful limitations beyond generally linking the use of the judicial exception to a particular technological environment. 450 U.S. 175, ... (1981). In Diehr, the claim was directed to the use of the Arrhenius equation ( an abstract idea or law of nature) in an automated process for operating a rubber-molding press. 450 U.S. at 177-78 .... The Court evaluated additional elements such as the steps of installing rubber in a press, closing the mold, constantly measuring the temperature in the mold, and automatically opening the press at the proper time, and found them to be meaningful because they sufficiently limited the use of the mathematical equation to the practical application of molding rubber products. 450 U.S. at 184... In contrast, the claims in Alice Corp. v. CLS Bank International did not meaningfully limit the abstract idea of mitigating settlement risk. 573 U.S._ .... In particular, the Court concluded that the additional elements such as the data processing system and communications controllers recited in the system claims did not meaningfully limit the abstract idea because they merely linked the use of the abstract idea to a particular technological environment (i.e., "implementation via computers") or were well-understood, routine, conventional activity. MPEP § 2106.05(e). The limitations data gathering and transmitting data are not meaningful limitations because they are pre-solution activities. The limitations are not meaningful limitations.
e) MPEP § 2106.05(g) Insignificant Extra-Solution Activity.
The limitations data gathering and transmitting data are not meaningful limitations because they are pre-solution activities
6) MPEP § 2106.05(h) Field of Use and Technological Environment.
[T]he Supreme Court has stated that, even if a claim does not wholly pre-empt an abstract idea, it still will not be limited meaningfully if it contains only insignificant or token pre- or post-solution activity-such as identifying a relevant audience, a category of use, field of use, or technological environment. Ultramercial, Inc. v. Hulu, LLC, 722 F.3d 1335, 1346 (Fed. Cir. 2013). Limitations “a system”, “computer nodes “, “an interactive programming session”, ‘a network-attached memory”, “a distributed data object”, “a dataset manager” are simply a field of use that attempts to limit the abstract idea to a particular technological environment.
Accordingly, the additional limitations “receiving, at a system comprising a plurality of computer nodes in an interactive programming session, a command based on program code of a program being developed in the interactive programming session”; “distribute, by the system, data items from a network-attached memory to a distributed data object comprising data in node memories of the plurality of computer nodes” do not integrate the abstract ideas into a practical application because they do not impose any meaningful limits on practicing the abstract idea. The claim is directed to an abstract idea.
Step 2B, the claim does not include additional elements that are sufficient to amount to significantly more than the judicial exception. The limitations collecting data and transmitting data do not recite any non-convention or non-generic arrangement. Taking these limitations as an ordered combination adds nothing that is not already present when the elements are taken individually. Therefore, the claim does not amount to significantly more than the recited abstract idea. The claim is not patent eligible.
Claim 2 recites “wherein the data items on which the operation is applied are part of a data array stored in the network-attached memory, the data array having a total size greater than a memory capacity of any of the node memories of the plurality of computer nodes.” This limitation is merely a pre-solution activity which is considered to be insignificant extra solution activity.
Claim 3 recites “storing, by the dataset manager, the derived data in the network-attached memory; and sharing the derived data stored in the network-attached memory with another programmer in another interactive programming session” The limitations are mere generic storing and sharing data which are considered to be insignificant extra solution activities.
Claim 4 recites “receiving, by an ingest program executed in the system, further data; storing, by the ingest program, the further data as further data items in the network-attached memory; and incrementally updating the derived data based on the further data items.” The limitations are mere generic receiving/gathering and storing data which are considered to be insignificant extra solution activities. Further, updating the derived data (e.g.,4+2) encompasses the user thinking. This limitation recited an abstract mental process because it can be performed in the human mind through observations, evaluation, and judgement
Claim 5 recites “receiving, by the dataset manager, an indication that an automatic update of the derived data is to be performed, wherein the incremental update of the derived data is responsive to the indication” The limitations are mere generic receiving/gathering indication/data which is considered to be insignificant extra solution activities. Further, updating the derived data (e.g.,4+2) encompasses the user thinking. This limitation recited an abstract mental process because it can be performed in the human mind through observations, evaluation, and judgement
Claim 6 recites “wherein the incremental update is performed by a data updater executed on a further computer node that is different from the plurality of computer nodes on which the dataset manager executes.” Updating data encompasses the user thinking (e.g., for instance, the previous data is 4, and 2 is added to 4). This limitation recited an abstract mental process because it can be performed in the human mind through observations, evaluation, and judgement. Further, the limitation “a data updated executed on a further computer node” is used as a tool to perform the abstract ideas.
Claim 7 recites “wherein the distributed data object is part of a dataset, the method further comprising: setting, by the dataset manager, metadata associated with the dataset, the metadata indicating that the dataset is published for access by another dataset manager associated with another programmer in another interactive programming session” Dataset and metadata is data about another data which are considered to be insignificant extra solution activities.
Claim 8 recites “wherein the distributed data object is part of a dataset, and wherein the derived data comprises indexes of rows of the dataset that satisfy a condition.” The limitation is pre-solution activity which is considered to be insignificant extra solution activities.
Claim 9 recites “wherein the distributed data object is part of a dataset, and wherein the derived data comprises derived column data of the dataset, the derived column data produced by the operation on one or more columns of the dataset.” The limitation is pre-solution activity which is considered to be insignificant extra solution activities.
Claim 10 recites “wherein the program code of the interactive programming session contains a further command comprising a class referring to the distributed data object.” The limitation recited at a high-level of generality (i.e., as a generic programming code) such that it amounts no more than mere instructions to apply the exception using a generic computer component. 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 (see MPEP 2106.05(f)).
Claim 11 recites “presenting a programming interface comprising functions accessible by the dataset manager to access data in the network-attached memory.” The limitation recited at a high-level of generality (i.e., as a generic programming interface) such that it amounts no more than mere instructions to apply the exception using a generic computer component. 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 (see MPEP 2106.05(f)).
Claim 12 recites “wherein the program code comprises a plurality of lines of code, the method further comprising: sending, to the system, a first command for a first line of code of the plurality of lines of code, the first command specifying a first operation relating to the network-attached memory; and sending, to the system, a second command for a second line of code of the plurality of lines of code, the second command specifying a second operation relating to the network-attached memory.” The limitation recited at a high-level of generality (i.e., as a generic lines of code, sending first and second command to the networked-attached memory) such that it amounts no more than mere instructions to apply the exception using a generic computer component. 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 (see MPEP 2106.05(f)).
Claim 13 recites “presenting, by the dataset manager, data of the data items to the programmer in column format” The limitation is post-solution activity which is considered to be insignificant extra solution activities.
Claim 14 is similar to claim 1. The claim is rejected based on the same reason.
Claim 15 recites “wherein the distributed data object is a first distributed data object including a first portion of the retrieved data, and wherein the instructions are executable on the at least one of the plurality of computer nodes to: store a second portion of the retrieved data in a second distributed data object distributed across the node memories, wherein the operation is performed by the dataset manager on the first distributed data object and the second distributed data object.” Retrieving data and storing data in first and second distributed data objects are recited at a high-level of generality (i.e., data storage and data gathering) such that it amounts no more than mere instructions to apply the exception using a generic computer component. Further, perform operations on the data is a process that, under the broadest reasonable interpretation, covers performance of the limitation in the mind but for the recitation of generic computer components. That is, nothing in the limitation precludes the step from practically being performed in the mind. This limitation, in the context of this claim, encompasses the user thinking about analyzing data. Thus, this limitation recites an abstract mental process under 2019 PEG because it can be performed in the human mind either through observation, evaluation and judgment and opinion;
Claim 16 recites “wherein the instructions are executable on the at least one of the plurality of computer nodes to: arrange the retrieved data as columns in a dataset stored in the node memories, the columns comprising a first column including data of the first distributed data object, and a second column including data of the first distributed data object.” Arranging data is a process that, under the broadest reasonable interpretation, covers performance of the limitation in the mind. That is, nothing in the limitation precludes the step from practically being performed in the mind. This limitation, in the context of this claim, encompasses the user thinking about arranging data. Thus, this limitation recites an abstract mental process under 2019 PEG because it can be performed in the human mind either through observation, evaluation and judgment and opinion
Claim 17 recites “wherein the dataset manager is a server for the program, and the dataset manager is a client of the network-attached memory.” The claim recites generic computer components. 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 (see MPEP 2106.05(f)).
Claim 18 recites “wherein the instructions are executable on the at least one of the plurality of computer nodes to: store, in a memory, an indicator of whether the operation is an order-preserving derivation operation or an order-destroying derivation operation; and incrementally update the derived data using the indicator.” Updating data based on the stored indicator is a process that, under the broadest reasonable interpretation, covers performance of the limitation in the mind. That is, nothing in the limitation precludes the step from practically being performed in the mind. This limitation, in the context of this claim, encompasses the user thinking about observing the indicator data and updating derived data based on the indicator. Thus, this limitation recites an abstract mental process under 2019 PEG because it can be performed in the human mind either through observation, evaluation and judgment and opinion
Claim 19
Step 1, This part of the eligibility analysis evaluates whether the claim falls within any statutory category. See MPEP 2106.03. The claim recites at least a non-transitory machine-readable storage medium. Thus, the claim is to a product, which is one of the statutory categories of invention. (Step 1: YES).
Step 2A – Prong One: This part of the eligibility analysis evaluates whether the claim recites a judicial exception. As explained in MPEP 2106.04, subsection II, a claim “recites” a judicial exception when the judicial exception is “set forth” or “described” in the claim.
Step “perform… an operation specified by the command on the distributed data object, the operation executed in parallel on the plurality of computer nodes” An operation can be a calculation of 2+2. Clearly, a human can simply perform this operation. This step is nothing more than observations, evaluations, judgments that can be performed in human mind (i.e., a mental process [Wingdings font/0xF3] abstract idea). Further, the limitations “a dataset manager”, “the operation executed in parallel on the plurality of computer nodes” simply uses multiple computers/computer components as tools to perform abstract ideas.
Step “produce… derived data generated by the operation on the distributed data object, the derived data accessible by a programmer in the interactive programming session” Since a calculation is 2+2, a derived data is 4. This step is nothing more than observations, evaluations, judgments that can be performed in human mind (i.e., a mental process [Wingdings font/0xF3] abstract idea). Further, limitation “the dataset manager” is simple a computer tool that is used to perform the abstract idea.
“Unless it is clear that a claim recites distinct exceptions, such as a law of nature and an abstract idea, care should be taken not to parse the claim into multiple exceptions, particularly in claims involving abstract ideas.” MPEP 2106.04, subsection II.B. However, if possible, the examiner should consider the limitations together as a single abstract idea rather than as a plurality of separate abstract ideas to be analyzed individually. “For example, in a claim that includes a series of steps that recite mental steps as well as a mathematical calculation, an examiner should identify the claim as reciting both a mental process and a mathematical concept for Step 2A, Prong One to make the analysis clear on the record.” MPEP 2106.04, subsection II.B. Under such circumstances, however, the Supreme Court has treated such claims in the same manner as claims reciting a single judicial exception. Id. (discussing Bilski v. Kappos, 561 U.S. 593 (2010)). Here, the mentioned limitations fall within the mental process grouping of abstract ideas and are considered together as a single abstract idea for further analysis (Step 2A, Prong One: YES).
Step 2A, Prong Two: This part of the eligibility analysis evaluates whether the claim as a whole integrates the recited judicial exception into a practical application of the exception or whether the claim is “directed to” the judicial exception. This evaluation is performed by (1) identifying whether there are any additional elements recited in the claim beyond the judicial exception, and (2) evaluating those additional elements individually and in combination to determine whether the claim as a whole integrates the exception into a practical application. See MPEP 2106.04(d).
The claim recites the additional elements/limitations:
“ingest, from a data source, data into a network-attached memory”;
“receive a command based on an interpretation of program code of a program being developed at a client computer in an interactive programming session”;
“based on the command, retrieve the data from the network-attached memory over an interconnect to a plurality of computer nodes”;
“store the retrieved data in a distributed data object distributed across node memories of the plurality of computer nodes”;
“write the derived data to the network-attached memory, the derived data in the network-attached memory accessible by another programmer.”
a) MPEP § 2106.05(a) "Improvements to the Functioning of a Computer or to Any Other Technology or Technical Field."
There is no improvement to Functioning of a Computer or to Any Other Technology or Technical Field. The limitations ingest… data [Wingdings font/0xF3] data gathering; receive a command [Wingdings font/0xF3] data gathering, retrieve the data from the network-attached memory [Wingdings font/0xF3] data gathering, store the retrieved data… in a distributed data object [Wingdings font/0xF3] data storage, write the derived data [Wingdings font/0xF3] data storage. These limitations do not make any improvements to the functionalities of a computer, database technology, or any other technologies
b) MPEP § 2106.05(b) Particular Machine. The judicial exception does not apply to any particular machine.
The claims are silent regarding specific limitations directed to an improved computer system, processor, memory, network, database, or Internet, nor do applicant direct examiner’s attention to such specific limitations. "[T]he mere recitation of a generic computer cannot transform a patent-ineligible abstract idea into a patent-eligible invention." Alice, 573 U.S. at 223; see also Bascom Glob. Internet Servs., Inc. v. AT&T Mobility LLC, 827 F.3d 1341, 1348 (Fed. Cir. 2016) ("An abstract idea on 'an Internet computer network' or on a generic computer is still an abstract idea."). Applying this reasoning here, the claim is not directed to a particular machine, but rather merely implement an abstract idea using generic computer components such as “a data source”, “a network-attached memory”, “an interpretation of program code of a program”, “a client computer”, “an interactive programming session”, “computer nodes”, “an interconnect”, “a distributed data object”, “node memories”, “a dataset manager”, “derived data”. Thus, the claims fail to satisfy the "tied to a particular machine" prong of the Bilski machine-or-transformation test.
c) MPEP § 2106.05(c) Particular Transformation.
The claim operates to gathering data, storing data, executing operations on gathered data, and storing/storing the results. The steps are not a "transformation or reduction of an article into a different state or thing constituting patent-eligible subject matter[.]" See In re Bilski, 545 F.3d 943, 962 (Fed. Cir. 2008) (en bane), aff'd sub nom, Bilski v. Kappas, 561 U.S. 593 (2010); see also CyberSource Corp. v. Retail Decisions, Inc., 654 F.3d 1366, 1375 (Fed. Cir. 2011) ("The mere manipulation or reorganization of data ... does not satisfy the transformation prong."). Applying this guidance here, the claims fail to satisfy the transformation prong of the Bilski machine-or-transformation test.
d) MPEP § 2106.05(e) Other Meaningful Limitations.
This section of the MPEP guides: Diamond v. Diehr provides an example of a claim that recited meaningful limitations beyond generally linking the use of the judicial exception to a particular technological environment. 450 U.S. 175, ... (1981). In Diehr, the claim was directed to the use of the Arrhenius equation ( an abstract idea or law of nature) in an automated process for operating a rubber-molding press. 450 U.S. at 177-78 .... The Court evaluated additional elements such as the steps of installing rubber in a press, closing the mold, constantly measuring the temperature in the mold, and automatically opening the press at the proper time, and found them to be meaningful because they sufficiently limited the use of the mathematical equation to the practical application of molding rubber products. 450 U.S. at 184... In contrast, the claims in Alice Corp. v. CLS Bank International did not meaningfully limit the abstract idea of mitigating settlement risk. 573 U.S._ .... In particular, the Court concluded that the additional elements such as the data processing system and communications controllers recited in the system claims did not meaningfully limit the abstract idea because they merely linked the use of the abstract idea to a particular technological environment (i.e., "implementation via computers") or were well-understood, routine, conventional activity. MPEP § 2106.05(e).
The limitations ingest… data [Wingdings font/0xF3] data gathering; receive a command [Wingdings font/0xF3] data gathering, retrieve the data from the network-attached memory [Wingdings font/0xF3] data gathering, store the retrieved data… in a distributed data object [Wingdings font/0xF3] data storage, write the derived data [Wingdings font/0xF3] data storage are not meaningful limitations because collecting, storing data are pre and post-solution activities. The limitations are not meaningful limitations.
e) MPEP § 2106.05(g) Insignificant Extra-Solution Activity.
The limitations ingest… data [Wingdings font/0xF3] data gathering; receive a command [Wingdings font/0xF3] data gathering, retrieve the data from the network-attached memory [Wingdings font/0xF3] data gathering, store the retrieved data… in a distributed data object [Wingdings font/0xF3] data storage, write the derived data [Wingdings font/0xF3] data storage are not meaningful limitations because collecting, storing data are pre and post-solution activities. The limitations are not meaningful limitations.
f) MPEP § 2106.05(h) Field of Use and Technological Environment.
[T]he Supreme Court has stated that, even if a claim does not wholly pre-empt an abstract idea, it still will not be limited meaningfully if it contains only insignificant or token pre- or post-solution activity-such as identifying a relevant audience, a category of use, field of use, or technological environment. Ultramercial, Inc. v. Hulu, LLC, 722 F.3d 1335, 1346 (Fed. Cir. 2013). “A processor”, “memory”, “table”, “social network”, “social object”, “class”, “tables” limitations are simply a field of use that attempts to limit the abstract idea to a particular technological environment.
Accordingly, the additional limitations ingest… data [Wingdings font/0xF3] data gathering; receive a command [Wingdings font/0xF3] data gathering, retrieve the data from the network-attached memory [Wingdings font/0xF3] data gathering, store the retrieved data… in a distributed data object [Wingdings font/0xF3] data storage, write the derived data [Wingdings font/0xF3] data storage do not integrate the abstract idea into a practical application because they do not impose any meaningful limits on practicing the abstract idea. The claim is directed to an abstract idea
Step 2B, the claim does not include additional elements that are sufficient to amount to significantly more than the judicial exception. The additional limitations ingest… data [Wingdings font/0xF3] data gathering; receive a command [Wingdings font/0xF3] data gathering, retrieve the data from the network-attached memory [Wingdings font/0xF3] data gathering, store the retrieved data… in a distributed data object [Wingdings font/0xF3] data storage, write the derived data [Wingdings font/0xF3] data storage do not recite any non-convention or non-generic arrangement. Taking these limitations as an ordered combination adds nothing that is not already present when the elements are taken individually. Therefore, the claim does not amount to significantly more than the recited abstract idea. The claim is not patent eligible.
Claim 20 recites “wherein the instructions upon execution cause the system to: receive an indication that an automatic update of the derived data is to be performed; based on the indication, incrementally update the derived data based on ingestion of further data into the network-attached memory” The limitations are mere generic receiving/gathering indication/data which is considered to be insignificant extra solution activities. Further, updating the derived data (e.g.,4+2) encompasses the user thinking. This limitation recited an abstract mental process because it can be performed in the human mind through observations, evaluation, and judgement
Claim Rejections - 35 USC § 112
The following is a quotation of 35 U.S.C. 112(b):
(b) CONCLUSION.—The specification shall conclude with one or more claims particularly pointing out and distinctly claiming the subject matter which the inventor or a joint inventor regards as the invention.
The following is a quotation of 35 U.S.C. 112 (pre-AIA ), second paragraph:
The specification shall conclude with one or more claims particularly pointing out and distinctly claiming the subject matter which the applicant regards as his invention.
Claim 19-20 are rejected under 35 U.S.C. 112(b) or 35 U.S.C. 112 (pre-AIA ), second paragraph, as being indefinite for failing to particularly point out and distinctly claim the subject matter which the inventor or a joint inventor (or for applications subject to pre-AIA 35 U.S.C. 112, the applicant), regards as the invention.
Claim 19: “A non-transitory machine-readable storage medium storing instructions that upon execution cause a system…” It is unclear how instructions could run on their own.
Claim 20 is rejected for failing to cure deficiencies.
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.
Claim(s) 1, 4-5, 8-18 are rejected under 35 U.S.C. 102(a)(1) as being anticipated by Hien Luu Beginning Apache Spark, Apress, ISBN-13 (electronic): 978-1-4842-3579-9, 2018
Claim 1
Luu discloses a method comprising:
receiving, at a system comprising a plurality of computer nodes in an interactive programming session (pg. 4, fig. 1-1, a system comprising multiple works), a command based on program code of a program being developed in the interactive programming session (pg. 5, “… The application data processing logic can be as simple as a few lines of code to perform a few data processing operations…” pg. 13, “… spark applications can be written in multiple languages including Scala, Java, Python, and R…” <examiner note: Python interpreter executes code line-by-line and provides immediate feedback>);
distribute, by the system, data items from a network-attached memory to a distributed data object comprising data in node memories of the plurality of computer nodes (pg. 8, “… you have a 1.5TB log file that resides on HDFS and you need to find out the number of lines containing the word Exception. You can create an instance of RDD to represent all the log statements in that log file, and Spark can partition them across the nodes in the cluster…” pg. 5, “… an external storage system like HDFS…” <examiner note: network-attached memory [Wingdings font/0xF3] external storage system HDFS, distributed data object [Wingdings font/0xF3] RDD, node memories [Wingdings font/0xF3] local memory of each worker);
perform, by a dataset manager (pg. 5, spark driver) executed in the system, an operation specified by the command on the distributed data object, the operation executed in parallel on the plurality of computer nodes (pg. 8, “… You can create an instance of RDD to represent all the log statements in that log file, and Spark can partition them across the nodes in the cluster such that filtering and counting logic can be executed in parallel…” pg. 61, “… Another example is to filter a 1TB log file down to only the lines that contain the word Exception. See Listing 3-14 for an example… val awesomeLineRDD = stringRDD.filter(line => line.contains("awesome")) awesomeLineRDD.collect <examiner note: assume that the term “exception” is in the place of “awesome”, the output should be lines contain the term “exception”>); and
produce, by the dataset manager in the system, derived data generated by the operation on the distributed data object, the derived data accessible by a programmer in the interactive programming session (pg. 5, “… The Spark driver is the central coordinator of a Spark application, and it interacts with a cluster manager to figure out which machines to run the data processing logic on. For each one of those machines, the Spark driver requests that the cluster manager launch a process called the Spark executor. Another important job of the Spark driver is to manage and distribute Spark tasks onto each executor on behalf of the application. If the data processing logic requires the Spark driver to display the computed results to a user, then it will coordinate with each Spark executor to collect the computed result and merge them together…”)
Claim 4
Claim 1 is included, Huu discloses
receiving, by an ingest program executed in the system, further data (pg. 235, fig. 6-9, processing logic receives further data from data source);
storing, by the ingest program, the further data as further data items in the network-attached memory (pg. 239, the processing logic stores the further data in data sinks, i.e., File sink HDFS); and
incrementally updating the derived data based on the further data items (fig. 6-8, pg. 238, each time t1, t2, and t3 the output is incrementally updated)
PNG
media_image1.png
544
610
media_image1.png
Greyscale
Claim 5
Claim 4 is included, Huu discloses receiving, by the dataset manager, an indication (trigger) that an automatic update of the derived data is to be performed, wherein the incremental update of the derived data is responsive to the indication (pg. 238, “… Trigger is another important concept to understand. The Structured Streaming engine uses the trigger information to determine when to run the provided streaming computation logic in your streaming application not specified (default); Fixed interval; One-time; Continuous…” <examiner note: the automatic update will run differently based on the trigger type>)
Claim 8
Claim 1 is included, Huu further discloses wherein the distributed data object is part of a dataset (pg. 8, “… you have a 1.5TB log file that resides on HDFS and you need to find out the number of lines containing the word Exception. You can create an instance of RDD to represent all the log statements in that log file, and Spark can partition them across the nodes in the cluster…”), and wherein the derived data comprises indexes of rows of the dataset that satisfy a condition (pg. 89-90, “… Let’s start with creating a DataFrame from an RDD. Listing 4-1 first creates an RDD with two columns of the integer type, and then it calls the toDF implicit function to convert an RDD to a DataFrame using the specified column names…” <examiner note: dataFrame is considered as derived data of the RDD. The left column is considered as indexes of first five rows>)
PNG
media_image2.png
368
174
media_image2.png
Greyscale
Claim 9
Claim 1 is included, Luu discloses wherein the distributed data object is part of a dataset (pg. 8, “… you have a 1.5TB log file that resides on HDFS and you need to find out the number of lines containing the word Exception. You can create an instance of RDD to represent all the log statements in that log file, and Spark can partition them across the nodes in the cluster…”), and wherein the derived data comprises derived column data of the dataset, the derived column data produced by the operation on one or more columns of the dataset (pg. 89-90, “… Let’s start with creating a DataFrame from an RDD. Listing 4-1 first creates an RDD with two columns of the integer type, and then it calls the toDF implicit function to convert an RDD to a DataFrame using the specified column names…”)
Claim 10
Claim 1 is included, Luu discloses wherein the program code of the interactive programming session contains a further command comprising a class referring to the distributed data object (pg. 59), the case class considered as further command comprising a class, i.e., case class, referring the contactDataRDD => distributed data object)
PNG
media_image3.png
458
1004
media_image3.png
Greyscale
Claim 11
Claim 1 is included, Luu discloses presenting a programming interface comprising functions accessible by the dataset manager to access data in the network-attached memory (pg. 56, “Listing 3-2. Creating an RDD from a File Data Source val fileRDD = spark.sparkContext.textFile("/tmp/data.txt") The first argument of the textFile method is an URI that points to a path or a file on the local machine or to a remote storage system. When it starts with an hdfs:// prefix, it points to a path or a file that resides on HDFS…” <examiner note: spark driver[Wingdings font/0xF3] dataset manager uses sparkContext to access to external storage [Wingdings font/0xF3] network-attached memory>)
Claim 12
Claim 1 is included, Luu discloses wherein the program code comprises a plurality of lines of code, the method further comprising: sending, to the system, a first command for a first line of code of the plurality of lines of code, the first command specifying a first operation relating to the network-attached memory; and sending, to the system, a second command for a second line of code of the plurality of lines of code, the second command specifying a second operation relating to the network-attached memory.
PNG
media_image4.png
270
956
media_image4.png
Greyscale
(pg. 12, <examiner note: the first line access the hdfs [Wingdings font/0xF3] network attached memory, the second command save to hdfs>)
Claim 13
Claim 1 is included, Luu discloses: presenting, by the dataset manager, data of the data items to the programmer in column format ((pg. 89-90, “… Let’s start with creating a DataFrame from an RDD)
PNG
media_image2.png
368
174
media_image2.png
Greyscale
Claim 14 is similar to claim 1. The claim is rejected based on the same reason.
Claim 15
Claim 14 is included, Huu discloses wherein the distributed data object is a first distributed data object including a first portion of the retrieved data, and wherein the instructions are executable on the at least one of the plurality of computer nodes to: store a second portion of the retrieved data in a second distributed data object distributed across the node memories, wherein the operation is performed by the dataset manager on the first distributed data object and the second distributed data object (pg. 8, “… you have a 1.5TB log file that resides on HDFS and you need to find out the number of lines containing the word Exception. You can create an instance of RDD to represent all the log statements in that log file, and Spark can partition them across the nodes in the cluster…” pg. 5, “… an external storage system like HDFS…” pg. 58, “union(otherRDD) this transformation does what it sounds like. it combines the rows in the source rDD with otherRDD. intersection(otherRDD) Only the rows that exist in both the source rDD and otherRDD are returned. substract(otherRDD) this subtracts the rows in otherRDD from the source rDD. distinct([numTasks]) this removes duplicate rows from the source rDD. <examiner note: another distributed data object (i.e., another RDD) can be created. The four operations is performed by spark driver on the two RDDs>)
Claim 16
Claim 15 is included, Luu discloses wherein the instructions are executable on the at least one of the plurality of computer nodes to pg. 8, “… You can create an instance of RDD to represent all the log statements in that log file, and Spark can partition them across the nodes in the cluster such that filtering and counting logic can be executed in parallel…”: arrange the retrieved data as columns in a dataset stored in the node memories, the columns comprising a first column including data of the first distributed data object, and a second column including data of the first distributed data object (pg. 91, assume that the RDD created based on the data from HDFS has two rows in listing 4-4, the spark driver executes the code to arrange data in to columns such name, age as in listing 4-5)
PNG
media_image5.png
1084
990
media_image5.png
Greyscale
Claim 17
Claim 14 is included, Luu discloses wherein the dataset manager is a server for the program, and the dataset manager is a client of the network-attached memory (pg. 4, the spark driver is considered as a server for the program because it manages and distributes spark tasks onto each executor. The spark driver is also considered as client of the external storage, e.g., HDFS, to retrieve data items to create RDD)
PNG
media_image6.png
464
912
media_image6.png
Greyscale
Claim 18
Claim 14 is included, Luu discloses wherein the instructions are executable on the at least one of the plurality of computer nodes to: store, in a memory, an indicator of whether the operation is an order-preserving derivation operation or an order-destroying derivation operation; and incrementally update the derived data using the indicator (listing 6-10 has filter function that s order-destroying derivation operation, and the derived data is incrementally updated)
PNG
media_image7.png
380
968
media_image7.png
Greyscale
PNG
media_image1.png
544
610
media_image1.png
Greyscale
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.
Claim(s) 2 is rejected under 35 U.S.C. 103 as being unpatentable over Hien Luu Beginning Apache Spark, Apress, ISBN-13 (electronic): 978-1-4842-3579-9, 2018, as applied to claim 1, and further in view of Alcantara (U.S. Pub 2018/0081798 A1)
Claim 2
Claim 1 is included, however, Luu does not explicitly disclose wherein the data items on which the operation is applied are part of a data array stored in the network-attached memory, the data array having a total size greater than a memory capacity of any of the node memories of the plurality of computer nodes.
Alcantara discloses wherein the data items on which the operation is applied are part of a data array stored in the network-attached memory, the data array having a total size greater than a memory capacity of any of the node memories of the plurality of computer nodes ([0048], “… Spark lets programmers construct RDDs in four ways… by parallelizing a Scala collection (e.g., an array) in the driver program, which means dividing it into a number of partitions or “slices” that will be sent to multiple nodes…” [0051], “… Each worker may further be configured to perform all of the parallel operations defined under Spark… The worker may respond to a cache or persist action by storing the entire RDD in the data buffer if the size of the buffer is adequate, and otherwise by storing a portion of the RDD in the data buffer and storing the remainder elsewhere (e.g., in the flash memory)…” <examiner note: data items in the RDD are data array in external storage. Further, if the data buffer of worker can not cache the RDD, then storing the remainder somewhere, i.e., flash memory [Wingdings font/0xF3] data array is more than the memory capacity of the worker>)
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to include intelligent solid state drives capable if executing tasks sent by a driver node as disclosed by Alcantara into Luu because the use of intelligent solid state drives reduces the need to exchange data with a CPU in a server and increase the number of worker nodes in the system.
Claim(s) 3, 19-20 are rejected under 35 U.S.C. 103 as being unpatentable over Hien Luu (Beginning Apache Spark, Apress, ISBN-13 (electronic): 978-1-4842-3579-9, 2018), as applied to claim 1, and further in view of Srowen, pg. 4, My Clouderra, 08-18-2015, https://community.cloudera.com/t5/Support-Questions/Share-1-RDD-between-2-Spark-applications-memory-persistence/m-p/30807#:~:text=If%20both%20my%20applications%20works,maintain%20fault%20tolerance%20across%20apps.
Claim 3
Claim 1 is included, however, Luu does not disclose storing, by the dataset manager, the derived data in the network-attached memory; and sharing the derived data stored in the network-attached memory with another programmer in another interactive programming session.
Srowen discloses storing, by the dataset manager, the derived data in the network-attached memory; and sharing the derived data stored in the network-attached memory with another programmer in another interactive programming session.
PNG
media_image8.png
146
648
media_image8.png
Greyscale
PNG
media_image9.png
188
726
media_image9.png
Greyscale
<examiner note: the derived data of application A by developer A is stored in external storage (e.g., HDFS) and it can be seen by other developers>)
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to incorporate the teaching of Srowen into Luu because the RDD is bound to an application. By storing the derived data as RDD in external storage, other application and developers can see the derived data.
Claim 19
Luu discloses a non-transitory machine-readable storage medium storing instructions that upon execution cause a system to:
ingest, from a data source, data into a network-attached memory (pg. 235-239, fig. 6-9, data from data source is ingested into data sink (e.g., file sink HDFS);
receive a command based on an interpretation of program code of a program being developed at a client computer in an interactive programming session (pg. 5, “… The application data processing logic can be as simple as a few lines of code to perform a few data processing operations…” pg. 13, “… spark applications can be written in multiple languages including Scala, Java, Python, and R…” <examiner note: Python interpreter executes code line-by-line and provides immediate feedback>);
based on the command, retrieve the data from the network-attached memory over an interconnect to a plurality of computer nodes (pg. 8, “… you have a 1.5TB log file that resides on HDFS and you need to find out the number of lines containing the word Exception. You can create an instance of RDD to represent all the log statements in that log file, and Spark can partition them across the nodes in the cluster…” pg. 5, “… an external storage system like HDFS…” <examiner note: network-attached memory [Wingdings font/0xF3] external storage system HDFS, distributed data object [Wingdings font/0xF3] RDD, node memories [Wingdings font/0xF3] local memory of each worker. Interconnect [Wingdings font/0xF3] the connection between the spark driver and the HDFS);
store the retrieved data in a distributed data object distributed across node memories of the plurality of computer nodes (pg. 8, “… You can create an instance of RDD to represent all the log statements in that log file, and Spark can partition them across the nodes in the cluster such that filtering and counting logic can be executed in parallel…” pg. 61, “… Another example is to filter a 1TB log file down to only the lines that contain the word Exception. See Listing 3-14 for an example… val awesomeLineRDD = stringRDD.filter(line => line.contains("awesome")) awesomeLineRDD.collect <examiner note: assume that the term “exception” is in the place of “awesome”, the output should be lines contain the term “exception”>);
perform, by a dataset manager, an operation specified by the command on the distributed data object, the operation executed in parallel on the plurality of computer nodes (pg. 8, “… You can create an instance of RDD to represent all the log statements in that log file, and Spark can partition them across the nodes in the cluster such that filtering and counting logic can be executed in parallel…” pg. 61, “… Another example is to filter a 1TB log file down to only the lines that contain the word Exception. See Listing 3-14 for an example… val awesomeLineRDD = stringRDD.filter(line => line.contains("awesome")) awesomeLineRDD.collect <examiner note: assume that the term “exception” is in the place of “awesome”, the output should be lines contain the term “exception”>);
produce, by the dataset manager, derived data generated by the operation on the distributed data object, the derived data accessible by a programmer in the interactive programming session (pg. 5, “… The Spark driver is the central coordinator of a Spark application, and it interacts with a cluster manager to figure out which machines to run the data processing logic on. For each one of those machines, the Spark driver requests that the cluster manager launch a process called the Spark executor. Another important job of the Spark driver is to manage and distribute Spark tasks onto each executor on behalf of the application. If the data processing logic requires the Spark driver to display the computed results to a user, then it will coordinate with each Spark executor to collect the computed result and merge them together…”)
However, Luu does not explicitly disclose write the derived data to the network-attached memory, the derived data in the network-attached memory accessible by another programmer.
Srowen discloses write the derived data to the network-attached memory, the derived data in the network-attached memory accessible by another programmer.
PNG
media_image8.png
146
648
media_image8.png
Greyscale
PNG
media_image9.png
188
726
media_image9.png
Greyscale
<examiner note: the derived data of application A by developer A is stored in external storage (e.g., HDFS) and it can be seen by other developers>)
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to incorporate the teaching of Srowen into Luu because the RDD is bound to an application. By storing the derived data as RDD in external storage, other application and developers can see the derived data.
Claim 20
Claim 19 is included, Luu discloses wherein the instructions upon execution cause the system to: receive an indication that an automatic update of the derived data is to be performed; based on the indication, incrementally update the derived data based on ingestion of further data into the network-attached memory (pg. 238, “… Trigger is another important concept to understand. The Structured Streaming engine uses the trigger information to determine when to run the provided streaming computation logic in your streaming application not specified (default); Fixed interval; One-time; Continuous…” <examiner note: the automatic update will run differently based on the trigger type>)
PNG
media_image1.png
544
610
media_image1.png
Greyscale
Claim(s) 6 is rejected under 35 U.S.C. 103 as being unpatentable over Hien Luu (Beginning Apache Spark, Apress, ISBN-13 (electronic): 978-1-4842-3579-9, 2018), as applied to claim 5, and further in view of Spark Streaming: Dynamic Scaling And Backpressure in Action by Priya Matpadi, Oct 7, 2018
Claim 6
Claim 5 is included, however, Luu does not explicitly disclose wherein the incremental update is performed by a data updater executed on a further computer node that is different from the plurality of computer nodes on which the dataset manager executes.
Matpadi discloses wherein the incremental update is performed by a data updater executed on a further computer node that is different from the plurality of computer nodes on which the dataset manager executes (pg. 7, section Dynamic Scaling kicks in, “… Since 4 executors are clearly not able to deal with the incoming traffic rate, dynamic scaling of executors kicks in…” pg. 8, section Dynamic Scaling continues, “… As a result of dynamic scaling, the number of executors eventually launched becomes 27*…”)
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to incorporate dynamic resource allocation as disclosed by Matpadi because if there is a sudden spike in traffic, this could cause bottlenecks in downstream dependencies, that slows down the stream processing, a robust backpressure mechanism to ensure your application executes reliably.
Claim(s) 7 is rejected under 35 U.S.C. 103 as being unpatentable over Hien Luu (Beginning Apache Spark, Apress, ISBN-13 (electronic): 978-1-4842-3579-9, 2018), as applied to claim 5, and further in view of Huang (U.S. Pub 2021/0173714 A1)
Claim 7
Claim 1 is included, Luu discloses wherein the distributed data object is part of a dataset (pg. 8, “… you have a 1.5TB log file that resides on HDFS and you need to find out the number of lines containing the word Exception. You can create an instance of RDD to represent all the log statements in that log file, and Spark can partition them across the nodes in the cluster…”)
However, Luu does not explicitly disclose setting, by the dataset manager, metadata associated with the dataset, the metadata indicating that the dataset is published for access by another dataset manager associated with another programmer in another interactive programming session.
Huang discloses setting, by the dataset manager, metadata associated with the dataset, the metadata indicating that the dataset is published for access by another dataset manager associated with another programmer in another interactive programming session ([0060], “… FIG. 3C… The system 380 uses a data connector 140 to receive a request from an application server 381… specifies a destinations 391 for the response that is different from the application server 381 that provided the request 390. For example, the destinations 391 can specify a service, application, server, or other component…” [0065], “….the destination 391 is an application server 383… the destination 391… an electronica address, our URL, report number, and identifier, or another technique. The destination 391 is an application server 383 that is different from the application server 381 that provided initial request 390…” <examiner note: the destination 391 for the response, i.e., derived data, is considered as metadata that is published for access by application another another driver/dataset manager of application server – fig. 3b>)
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to incorporate a data connector as disclosed by Huang into Luu because the data connector can allow an application server to bypass traditional drivers… The data connector can be arranged so that the processing nodes provide their results in parallel to a destination, e.g., to the application server that provided the request or a different destination specified by the application server. As a result, the output data can be provided with the full combined bandwidth of all of the processing nodes.
Conclusion
Any inquiry concerning this communication or earlier communications from the examiner should be directed to HAU HAI HOANG whose telephone number is (571)270-5894. The examiner can normally be reached 1st biwk: Mon-Thurs 7:00 AM-5:00 PM; 2nd biwk: Mon-Thurs: 7:00 am-5:00pm, Fri: 7:00 am - 4:00pm.
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, Boris Gorney can be reached at 571-270-5626. 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.
HAU HAI. HOANG
Primary Examiner
Art Unit 2154
/HAU H HOANG/ Primary Examiner, Art Unit 2154