DETAILED ACTION
Priority
This action is in response to the original filing dated 09 April 2024 which claims priority to a U.S. provisional application, dated 17 April 2023. Claims 1-20 are pending and have been considered below.
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 .
Information Disclosure Statement
The information disclosure statements (IDS) submitted on 09 July 2024 and 31 October 2025 have been received, entered into the record, and considered. The submission is in compliance with the provisions of 37 CFR 1.97. Accordingly, the information disclosure statements are being considered by the examiner.
Claim Rejections - 35 USC § 103
This application currently names joint inventors. In considering patentability of the claims the examiner presumes that the subject matter of the various claims was commonly owned as of the effective filing date of the claimed invention(s) absent any evidence to the contrary. Applicant is advised of the obligation under 37 CFR 1.56 to point out the inventor and effective filing dates of each claim that was not commonly owned as of the effective filing date of the later invention in order for the examiner to consider the applicability of 35 U.S.C. 102(b)(2)(C) for any potential 35 U.S.C. 102(a)(2) prior art against the later invention.
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 1-20 are rejected under 35 U.S.C. 103 as being unpatentable over Carver (US 2020/0034681 A1) in view of Nag et al. (US 2021/0232537 A1).
As for independent claim 1, Carver teaches a computer program product comprising:
receiving a source spreadsheet including: a first input data set; and a first output data set, wherein the first input data set is processed according to one or more formulas of the source spreadsheet to generate the first output data set [(e.g. see Carver paragraphs 0028-0030) ”As soon as the spreadsheet file is identified or uploaded by the user in 301 of FIG. 3, the invention identifies the input and output cells, 302, and input and output … identify likely input and output [c]ells is simply by looking for formulas … The sample spreadsheet in FIG. 8 is presented without formulas exposed as cell contents, which is the typical state of most spreadsheets when users open a workbook or worksheet. In 807, 808, 809, 811, 812, 813 and 814 of FIG. 8 are some of the cells in the sample workbooks that a typical spreadsheet user would recognize as containing values … FIG. 9 shows the same spreadsheet is in FIG. 8, but with the formulas displayed, as opposed to the outputs, to illustrate how the system identifies inputs and outputs”].
identifying one or more directives defining functionality of the source spreadsheet including one or more actions taken to generate the first output data set from the first input data set, wherein at least one of the one or more actions includes application of the one or more formulas [(e.g. see Carver paragraphs 0030, 0036) ”the sample spreadsheet, contains an independent variable that's directly referenced six (6) times by formulas that depend on its value. No other input is referred to more frequently in the sample spreadsheet FIG. 9, so the system initially assumes this is the most important input needed from a user and places this question first automatically, even though many other inputs precede the order of B12 on the sample spreadsheet in FIG. 9. This process happens as part of the input and output (I/O) ratio analysis shown in 309 of FIG. 3. In the prior art, a spreadsheet user, that didn't create the spreadsheet, may have to read a long list of instructions and wade through row after row of inputs and outputs to determine what information they need to gather in order to get a result … the same spreadsheet is in FIG. 8, but with the formulas displayed, as opposed to the outputs, to illustrate how the system identifies inputs and outputs to quickly generate a conversation that can automatically request information for inputs from a user, via text or voice, to generate the outputs most relevant to a user”].
analyzing at least one of the first input data set, the first output data set, and the one or more directives to determine input data criteria including one or more of (i) permissible data types, (ii) permissible data values, (iii) permissible data positions derived from data positions included within at least one of the first input data set and the first output data set of the source spreadsheet, and (iv) one or more input directives describing at least one of a permissible data type, a permissible data value, and a permissible data position of the first input data set [(e.g. see Carver paragraphs 0029, 0030, 0031 and Fig. 13) ”the system identifies inputs and outputs to quickly generate a conversation that can automatically request information for inputs from a user, via text or voice, to generate the outputs most relevant to a user … the present invention uses some of the cells identified as inputs to generate a fully formed text question and also to set the parameters for acceptable type of answers from a conversational bot users … information about the types of values is communicated to the typical user first by the format in those same cells, such as currency (“$” dollar sign symbol) in 809 and percentage (“%” symbol) in the same FIG. 8, and of course by the adjacent or nearby row and/or column labels, such as 804, 805, 806 and 810 in FIG. 8”].
Carver does not specifically teach automatically generating a sample input data set in a spreadsheet-compatible format conforming to the input data criteria, processing the sample input data set according to the one or more directives and the one or more formulas of the source spreadsheet to generate a sample output data set, or analyzing the sample output data set to identify an error and in response to identifying an error, updating the input data criteria based on a relationship between the error and the sample input data set. However, in the same field of invention, Nag teaches:
automatically generating a sample input data set in a spreadsheet-compatible format conforming to the input data criteria [(e.g. see Nag paragraphs 0036, 0096) ”generate a dataset that includes values in the spreadsheet file instance. For example, the values also may be referred to as contents, which includes numerical values, formulas, and rules in various cells of the spreadsheet file instance … may be associated with a plurality of scenarios. Each scenario is a set of predetermined values for one or more dashboard cells. For example, a scenario may include rules that are related to a number of cells. The scenario includes predetermined values for those cells”].
processing the sample input data set according to the one or more directives and the one or more formulas of the source spreadsheet to generate a sample output data set [(e.g. see Nag paragraphs 0043, 0090, 0099) ”The dataset may include values of a spreadsheet file instance. The values may be generated by calculations performed by the file server 120 for the spreadsheet file instance … The calculation engine 258 performs calculations of other cells in the spreadsheet file instance based on the new or edited value. In another example, the dataset inputted from the user may specify a new formula or rule. The calculation engine 258 applies the formula or rule to one or more cells in the spreadsheet file instance that is associated with the user. The calculation engine 258 generates the values in the spreadsheet file instance. The calculation engine 258 may repeat the calculation for other spreadsheet file instances and also for other spreadsheets. The values of a single spreadsheet file instances may be provided as an output dataset … may include a first set of results that are generated from one or more scenarios selected by the first user”].
analyzing the sample output data set to identify an error and in response to identifying an error, updating the input data criteria based on a relationship between the error and the sample input data set [(e.g. see Nag paragraphs 0077, 0104, 0105, 0109) ”the file server 120 may conduct different kinds of mapping tests to determine whether the spreadsheets, including the standardized spreadsheet, include one or more informalities. The informalities may include errors in values or formulas … The processor scans for each cell and provides a pass if no spreadsheet cell has a hash (error) value in the cell. The processor may identify a fail if any spreadsheet cell has a hash (error) value in the cell. If there are no hash values, this indicates the input sheet (e.g., the original file that includes a model) and the output sheet (e.g., the standardized spreadsheet) have integrated correctly or at least the two files do not fail to integrate in terms of hash errors … The file server 120 may checks values in the spreadsheets based on the predetermined values in one or more scenarios. With the change in input values based on a scenario, the scenario comparison check is run in a fashion similar to the value comparison test to make sure that the resulting values in the cells in two spreadsheets are similar … identifies any fields that are specified in the mapping file and use the data values in those fields to update the destination files. The update may include replacing the old value in the destination file with the value in the source file. The update also may be adding new values to the destination file”].
Therefore, considering the teachings of Carver and Nag, it would have been obvious to one having ordinary skill in the art before the effective filing date of the claimed invention to add automatically generating a sample input data set in a spreadsheet-compatible format conforming to the input data criteria, processing the sample input data set according to the one or more directives and the one or more formulas of the source spreadsheet to generate a sample output data set, and analyzing the sample output data set to identify an error and in response to identifying an error, updating the input data criteria based on a relationship between the error and the sample input data set, as taught by Nag, to the teachings of Carver because it enables the efficient and speedy deployment of complex spreadsheets (e.g. see Nag paragraph 0045).
As for dependent claim 2, Carver and Nag teach the product as described in claim 1 and Carver further teaches:
further comprising code that, when executing on one or more computing devices, performs the steps of receiving an allowed input directive defining at least one of a permissible data type, a permissible data value, and a permissible data position; and including the allowed input directive in the input data criteria [(e.g. see Carver paragraphs 0029, 0030, 0031, 0032 and Fig. 13) ”the system identifies inputs and outputs to quickly generate a conversation that can automatically request information for inputs from a user, via text or voice, to generate the outputs most relevant to a user … the present invention uses some of the cells identified as inputs to generate a fully formed text question and also to set the parameters for acceptable type of answers from a conversational bot users … information about the types of values is communicated to the typical user first by the format in those same cells, such as currency (“$” dollar sign symbol) in 809 and percentage (“%” symbol) in the same FIG. 8, and of course by the adjacent or nearby row and/or column labels, such as 804, 805, 806 and 810 in FIG. 8 … the example file shown in FIG. 8 and FIG. 9 can automatically be converted by the invention into logic, conversation and calculations”].
As for dependent claim 3, Carver and Nag teach the product as described in claim 2, but Carver does not specifically teach the following limitation. However, Nag teaches:
wherein the allowed input directive is based on a relationship between the error and the sample input data set [(e.g. see Nag paragraph 0104, 0105, 0109) ”the file server 120 may conduct different kinds of mapping tests to determine whether the spreadsheets, including the standardized spreadsheet, include one or more informalities. The informalities may include errors in values or formulas … The processor scans for each cell and provides a pass if no spreadsheet cell has a hash (error) value in the cell. The processor may identify a fail if any spreadsheet cell has a hash (error) value in the cell. If there are no hash values, this indicates the input sheet (e.g., the original file that includes a model) and the output sheet (e.g., the standardized spreadsheet) have integrated correctly or at least the two files do not fail to integrate in terms of hash errors … The file server 120 may checks values in the spreadsheets based on the predetermined values in one or more scenarios. With the change in input values based on a scenario, the scenario comparison check is run in a fashion similar to the value comparison test to make sure that the resulting values in the cells in two spreadsheets are similar”].
The motivation to combine is the same as that used for claim 1.
As for dependent claim 4, Carver and Nag teach the product as described in claim 2, but Carver does not specifically teach the following limitations. However, Nag teaches:
further comprising code that, when executing on one or more computing devices, performs the steps of: using the input data criteria including the allowed input directive, automatically generating a second sample input data set including data in a spreadsheet-compatible format; processing the second sample input data set according to the one or more directive and the one or more formulas of the source spreadsheet to generate a second sample output data set and analyzing the second sample output data set to identify an error [(e.g. see Nag paragraphs 0096, 0109) ”Each scenario is a set of predetermined values for one or more dashboard cells. For example, a scenario may include rules that are related to a number of cells. The scenario includes predetermined values for those cells. A different scenario includes a different set of predetermined values for those cells. A user may use the GUI to switch between scenarios. Upon receiving a selection of a scenario, the file server 120 automatically populates the predetermined values to the cells specified in the scenario's rules … The file server 120 may checks values in the spreadsheets based on the predetermined values in one or more scenarios. With the change in input values based on a scenario, the scenario comparison check is run in a fashion similar to the value comparison test to make sure that the resulting values in the cells in two spreadsheets are similar. This test may capture errors that are not captured in the value comparison test because the value comparison test reviews a file that is static. Values in the value comparison test may match, but when input values change as a user selects a different scenario, the scenario comparison check may discover that a multiplier is different in the formulas of the two files, or the direction of an arithmetic sign is reversed”].
The motivation to combine is the same as that used for claim 1.
As for dependent claim 5, Carver and Nag teach the product as described in claim 1 and Carver further teaches:
further comprising code that, when executing on one or more computing devices, performs the steps of: automatically generating an allowed input directive defining at least one of a permissible data type, a permissible data value, and a permissible data position and including the allowed input directive in the input data criteria [(e.g. see Carver paragraphs 0029, 0030, 0031, 0032 and Fig. 13) ”the system identifies inputs and outputs to quickly generate a conversation that can automatically request information for inputs from a user, via text or voice, to generate the outputs most relevant to a user … the present invention uses some of the cells identified as inputs to generate a fully formed text question and also to set the parameters for acceptable type of answers from a conversational bot users … information about the types of values is communicated to the typical user first by the format in those same cells, such as currency (“$” dollar sign symbol) in 809 and percentage (“%” symbol) in the same FIG. 8, and of course by the adjacent or nearby row and/or column labels, such as 804, 805, 806 and 810 in FIG. 8 … the example file shown in FIG. 8 and FIG. 9 can automatically be converted by the invention into logic, conversation and calculations”].
As for dependent claim 6, Carver and Nag teach the product as described in claim 5 and Carver further teaches:
wherein the allowed input directive describes one or more of the permissible data types and the permissible data values for a collection of cells of the source spreadsheet [(e.g. see Carver paragraphs 0029, 0030, 0031 and Fig. 13) ”the system identifies inputs and outputs to quickly generate a conversation that can automatically request information for inputs from a user, via text or voice, to generate the outputs most relevant to a user … the present invention uses some of the cells identified as inputs to generate a fully formed text question and also to set the parameters for acceptable type of answers from a conversational bot users … information about the types of values is communicated to the typical user first by the format in those same cells, such as currency (“$” dollar sign symbol) in 809 and percentage (“%” symbol) in the same FIG. 8, and of course by the adjacent or nearby row and/or column labels, such as 804, 805, 806 and 810 in FIG. 8”].
As for dependent claim 7, Carver and Nag teach the product as described in claim 5 and Carver further teaches:
wherein the allowed input directive defines a requirement that a first collection of cells and a second collection of cells have at least one of: an identical value and an identical size [(e.g. see Carver paragraph 0029) ”spreadsheet in FIG. 8 is presented without formulas exposed as cell contents, which is the typical state of most spreadsheets when users open a workbook or worksheet. In 807, 808, 809, 811, 812, 813 and 814 of FIG. 8 are some of the cells in the sample workbooks that a typical spreadsheet user would recognize as containing values. More information about the types of values is communicated to the typical user first by the format in those same cells, such as currency (“$” dollar sign symbol) in 809 and percentage (“%” symbol) in the same FIG. 8, and of course by the adjacent or nearby row and/or column labels, such as 804, 805, 806 and 810 in FIG. 8. The present invention also relies on cells formats for information, particularly in the case of a complex spreadsheet, as shown in 309 and 310 of FIG. 3 as further referenced specifically in the Flowchart of FIG. 7, which is described in more detail later in this specification. However, without regard to labels or formats, simply identifying formulas and cells referenced by formulas within a spreadsheet is a highly reliable way to get an initial indication of potential inputs and outputs”].
As for dependent claim 8, Carver and Nag teach the product as described in claim 5 and Carver further teaches:
wherein the allowed input directive describes a relationship between a set of values of the source spreadsheet and one or more collections of cells [(e.g. see Carver paragraph 0031) ”FIG. 9 shows a cell that doesn't contain a formula, but instead contains an integer. The integer in 904 is referenced directly by formulas in the cells indicated as 901 and 902, and indirectly by the cells indicated as 903 and 911. As such, the system can use this small amount of information to identify the four integers in the cells below 904, as well as 904, as input cells. Similarly, since the formulas, in 901, 902, 903 and 911 reference the input cells noted previously, all that's need to turn those observations into a conversation].
As for dependent claim 9, Carver and Nag teach the product as described in claim 5 and Carver further teaches:
wherein the allowed input directive defines that values within a first collection of cells be unique within a worksheet of the source spreadsheet [(e.g. see Carver paragraphs 0029, 0030, 0031 and Fig. 13) ”the system identifies inputs and outputs to quickly generate a conversation that can automatically request information for inputs from a user, via text or voice, to generate the outputs most relevant to a user … the present invention uses some of the cells identified as inputs to generate a fully formed text question and also to set the parameters for acceptable type of answers from a conversational bot users … information about the types of values is communicated to the typical user first by the format in those same cells, such as currency (“$” dollar sign symbol) in 809 and percentage (“%” symbol) in the same FIG. 8, and of course by the adjacent or nearby row and/or column labels, such as 804, 805, 806 and 810 in FIG. 8”].
As for dependent claim 10, Carver and Nag teach the product as described in claim 1, but Carver does not specifically teach the following limitation. However, Nag teaches:
further comprising code that, when executing on one or more computing device, performs the step of creating a file executable by a runtime that is configured to process data according to the one or more directives and the one or more formulas of the source spreadsheet [(e.g. see Nag paragraphs 0033, 0054, 0059, 0072, 0100) ”a software system that performs calculations and processing of files such as spreadsheets to generate datasets that includes values in the files such as spreadsheets … The data values may include integers, strings, and coordinates specifying the input cells. The calculation engine 258 performs calculations and processing of the values in the spreadsheet. The calculation engine 258 also may check one or more rules associated with the spreadsheet to determine whether the edits in the dataset transmitted from a client device may contradict any of the rules … cell may be calculated in runtime by the virtualization engine 316 … the file server 120 may run one or more mapping tests to check mapping and other quality issues of various standardized spreadsheets that are saved on the file server 120 … run a spreadsheet recalculation without performance degradation”].
The motivation to combine is the same as that used for claim 1.
As for dependent claim 11, Carver and Nag teach the product as described in claim 10, but Carver does not specifically teach the following limitation. However, Nag teaches:
wherein processing the sample input data set includes reading and executing the file using the runtime as applied to the sample input set [(e.g. see Nag paragraphs 0033, 0054, 0059, 0072, 0100) ”a software system that performs calculations and processing of files such as spreadsheets to generate datasets that includes values in the files such as spreadsheets … The data values may include integers, strings, and coordinates specifying the input cells. The calculation engine 258 performs calculations and processing of the values in the spreadsheet. The calculation engine 258 also may check one or more rules associated with the spreadsheet to determine whether the edits in the dataset transmitted from a client device may contradict any of the rules … cell may be calculated in runtime by the virtualization engine 316 … the file server 120 may run one or more mapping tests to check mapping and other quality issues of various standardized spreadsheets that are saved on the file server 120 … run a spreadsheet recalculation without performance degradation”].
The motivation to combine is the same as that used for claim 1.
As for dependent claim 12, Carver and Nag teach the product as described in claim 10, but Carver does not specifically teach the following limitation. However, Nag teaches:
wherein the file executable by the runtime is configured to analyze the first input data set for compliance with the input data criteria [(e.g. see Nag paragraphs 0033, 0054, 0059, 0072, 0100) ”a software system that performs calculations and processing of files such as spreadsheets to generate datasets that includes values in the files such as spreadsheets … The data values may include integers, strings, and coordinates specifying the input cells. The calculation engine 258 performs calculations and processing of the values in the spreadsheet. The calculation engine 258 also may check one or more rules associated with the spreadsheet to determine whether the edits in the dataset transmitted from a client device may contradict any of the rules. For example, a rule may restrict the change to a particular cell. Any edit in an attempt to change the cell may be rejected … cell may be calculated in runtime by the virtualization engine 316 … the file server 120 may run one or more mapping tests to check mapping and other quality issues of various standardized spreadsheets that are saved on the file server 120 … run a spreadsheet recalculation without performance degradation”].
The motivation to combine is the same as that used for claim 1.
As for dependent claim 13, Carver and Nag teach the product as described in claim 10 and Carver further teaches:
further comprising code that, when executing on one or more computing devices, performs the steps of: automatically generating an allowed input directive defining at least one of a permissible data type, a permissible data value, and a permissible data position and including the allowed input directive in the file [(e.g. see Carver paragraphs 0029, 0030, 0031, 0032 and Fig. 13) ”the system identifies inputs and outputs to quickly generate a conversation that can automatically request information for inputs from a user, via text or voice, to generate the outputs most relevant to a user … the present invention uses some of the cells identified as inputs to generate a fully formed text question and also to set the parameters for acceptable type of answers from a conversational bot users … information about the types of values is communicated to the typical user first by the format in those same cells, such as currency (“$” dollar sign symbol) in 809 and percentage (“%” symbol) in the same FIG. 8, and of course by the adjacent or nearby row and/or column labels, such as 804, 805, 806 and 810 in FIG. 8 … the example file shown in FIG. 8 and FIG. 9 can automatically be converted by the invention into logic, conversation and calculations”].
As for independent claim 14, Carver teaches a computer program product comprising:
receiving a source spreadsheet including first input data processed according to one or more directives of the source spreadsheet to create first output data [(e.g. see Carver paragraphs 0028-0030, 0036) ”As soon as the spreadsheet file is identified or uploaded by the user in 301 of FIG. 3, the invention identifies the input and output cells, 302, and input and output … identify likely input and output [c]ells is simply by looking for formulas … The sample spreadsheet in FIG. 8 is presented without formulas exposed as cell contents, which is the typical state of most spreadsheets when users open a workbook or worksheet. In 807, 808, 809, 811, 812, 813 and 814 of FIG. 8 are some of the cells in the sample workbooks that a typical spreadsheet user would recognize as containing values … FIG. 9 shows the same spreadsheet is in FIG. 8, but with the formulas displayed, as opposed to the outputs, to illustrate how the system identifies inputs and outputs … the sample spreadsheet, contains an independent variable that's directly referenced six (6) times by formulas that depend on its value. No other input is referred to more frequently in the sample spreadsheet FIG. 9, so the system initially assumes this is the most important input needed from a user and places this question first automatically, even though many other inputs precede the order of B12 on the sample spreadsheet in FIG. 9. This process happens as part of the input and output (I/O) ratio analysis shown in 309 of FIG. 3. In the prior art, a spreadsheet user, that didn't create the spreadsheet, may have to read a long list of instructions and wade through row after row of inputs and outputs to determine what information they need to gather in order to get a result … the same spreadsheet is in FIG. 8, but with the formulas displayed, as opposed to the outputs, to illustrate how the system identifies inputs and outputs to quickly generate a conversation that can automatically request information for inputs from a user, via text or voice, to generate the outputs most relevant to a user”].
analyzing the first input data and the one or more directives to identify input data criteria including at least one of (i) permissible data types, (ii) permissible data values, and (iii) permissible data positions [(e.g. see Carver paragraphs 0029, 0030, 0031 and Fig. 13) ”the system identifies inputs and outputs to quickly generate a conversation that can automatically request information for inputs from a user, via text or voice, to generate the outputs most relevant to a user … the present invention uses some of the cells identified as inputs to generate a fully formed text question and also to set the parameters for acceptable type of answers from a conversational bot users … information about the types of values is communicated to the typical user first by the format in those same cells, such as currency (“$” dollar sign symbol) in 809 and percentage (“%” symbol) in the same FIG. 8, and of course by the adjacent or nearby row and/or column labels, such as 804, 805, 806 and 810 in FIG. 8”].].
Carver does not specifically teach testing the input data criteria by: (a) generating one or more sample input data sets each including data in a spreadsheet-compatible format conforming to the input data criteria, (b) processing the one or more sample input data sets according to the one or more directives of the source spreadsheet, (c) identifying an error that causes a failure in the processing of the one or more sample input data sets, the error related to at least one of the permissible data types, the permissible data values, and the permissible data positions conforming to the input data criteria and (d) updating the input data criteria to correct the error by changing at least one of the permissible data types, the permissible data values, and the permissible data positions, or repeating steps (a)–(d) until there are no failures in the processing of one or more additional sample input data sets conforming to the updated input data criteria; and creating an allowed input directive for the source spreadsheet that specifies the updated input data criteria. However, in the same field of invention, Nag teaches:
testing the input data criteria by: (a) generating one or more sample input data sets each including data in a spreadsheet-compatible format conforming to the input data criteria [(e.g. see Nag paragraphs 0036, 0096) ”generate a dataset that includes values in the spreadsheet file instance. For example, the values also may be referred to as contents, which includes numerical values, formulas, and rules in various cells of the spreadsheet file instance … may be associated with a plurality of scenarios. Each scenario is a set of predetermined values for one or more dashboard cells. For example, a scenario may include rules that are related to a number of cells. The scenario includes predetermined values for those cells”].
(b) processing the one or more sample input data sets according to the one or more directives of the source spreadsheet [(e.g. see Nag paragraphs 0043, 0090, 0099) ”The dataset may include values of a spreadsheet file instance. The values may be generated by calculations performed by the file server 120 for the spreadsheet file instance … The calculation engine 258 performs calculations of other cells in the spreadsheet file instance based on the new or edited value. In another example, the dataset inputted from the user may specify a new formula or rule. The calculation engine 258 applies the formula or rule to one or more cells in the spreadsheet file instance that is associated with the user. The calculation engine 258 generates the values in the spreadsheet file instance. The calculation engine 258 may repeat the calculation for other spreadsheet file instances and also for other spreadsheets. The values of a single spreadsheet file instances may be provided as an output dataset … may include a first set of results that are generated from one or more scenarios selected by the first user”].
(c) identifying an error that causes a failure in the processing of the one or more sample input data sets, the error related to at least one of the permissible data types, the permissible data values, and the permissible data positions conforming to the input data criteria and (d) updating the input data criteria to correct the error by changing at least one of the permissible data types, the permissible data values, and the permissible data positions [(e.g. see Nag paragraphs 0077, 0104, 0105, 0109) ”the file server 120 may conduct different kinds of mapping tests to determine whether the spreadsheets, including the standardized spreadsheet, include one or more informalities. The informalities may include errors in values or formulas … The processor scans for each cell and provides a pass if no spreadsheet cell has a hash (error) value in the cell. The processor may identify a fail if any spreadsheet cell has a hash (error) value in the cell. If there are no hash values, this indicates the input sheet (e.g., the original file that includes a model) and the output sheet (e.g., the standardized spreadsheet) have integrated correctly or at least the two files do not fail to integrate in terms of hash errors … The file server 120 may checks values in the spreadsheets based on the predetermined values in one or more scenarios. With the change in input values based on a scenario, the scenario comparison check is run in a fashion similar to the value comparison test to make sure that the resulting values in the cells in two spreadsheets are similar … identifies any fields that are specified in the mapping file and use the data values in those fields to update the destination files. The update may include replacing the old value in the destination file with the value in the source file. The update also may be adding new values to the destination file”].
repeating steps (a)–(d) until there are no failures in the processing of one or more additional sample input data sets conforming to the updated input data criteria; and creating an allowed input directive for the source spreadsheet that specifies the updated input data criteria [(e.g. see Nag paragraphs 0045, 0105) ”The caching tool 220 may include caches such as memories that allow scenarios that have been previously run on a particular model instance to be saved and redeployed quickly to the appropriate user at the external API engine 210, rather than fully processing the data again through various engines in the model instance 250. For example, the memory of the caching tool 220 stores previously generated values of the spreadsheet in one or more previous runs that edited spreadsheet file instances … The processor scans for each cell and provides a pass if no spreadsheet cell has a hash (error) value in the cell”].
Therefore, considering the teachings of Carver and Nag, it would have been obvious to one having ordinary skill in the art before the effective filing date of the claimed invention to add testing the input data criteria by: (a) generating one or more sample input data sets each including data in a spreadsheet-compatible format conforming to the input data criteria, (b) processing the one or more sample input data sets according to the one or more directives of the source spreadsheet, (c) identifying an error that causes a failure in the processing of the one or more sample input data sets, the error related to at least one of the permissible data types, the permissible data values, and the permissible data positions conforming to the input data criteria and (d) updating the input data criteria to correct the error by changing at least one of the permissible data types, the permissible data values, and the permissible data positions, and repeating steps (a)–(d) until there are no failures in the processing of one or more additional sample input data sets conforming to the updated input data criteria; and creating an allowed input directive for the source spreadsheet that specifies the updated input data criteria, as taught by Nag, to the teachings of Carver because it enables the efficient and speedy deployment of complex spreadsheets (e.g. see Nag paragraph 0045).
As for independent claim 15, Carver teaches a computer program product comprising:
receiving a source spreadsheet including: a first input data set; and a first output data set, wherein the first input data set is processed according to one or more formulas of the source spreadsheet to generate the first output data set [(e.g. see Carver paragraphs 0028-0030) ”As soon as the spreadsheet file is identified or uploaded by the user in 301 of FIG. 3, the invention identifies the input and output cells, 302, and input and output … identify likely input and output [c]ells is simply by looking for formulas … The sample spreadsheet in FIG. 8 is presented without formulas exposed as cell contents, which is the typical state of most spreadsheets when users open a workbook or worksheet. In 807, 808, 809, 811, 812, 813 and 814 of FIG. 8 are some of the cells in the sample workbooks that a typical spreadsheet user would recognize as containing values … FIG. 9 shows the same spreadsheet is in FIG. 8, but with the formulas displayed, as opposed to the outputs, to illustrate how the system identifies inputs and outputs”].
identifying one or more directives defining functionality of the source spreadsheet including one or more actions taken to generate the first output data set from the first input data set, wherein at least one of the one or more actions includes application of the one or more formulas [(e.g. see Carver paragraphs 0030, 0036) ”the sample spreadsheet, contains an independent variable that's directly referenced six (6) times by formulas that depend on its value. No other input is referred to more frequently in the sample spreadsheet FIG. 9, so the system initially assumes this is the most important input needed from a user and places this question first automatically, even though many other inputs precede the order of B12 on the sample spreadsheet in FIG. 9. This process happens as part of the input and output (I/O) ratio analysis shown in 309 of FIG. 3. In the prior art, a spreadsheet user, that didn't create the spreadsheet, may have to read a long list of instructions and wade through row after row of inputs and outputs to determine what information they need to gather in order to get a result … the same spreadsheet is in FIG. 8, but with the formulas displayed, as opposed to the outputs, to illustrate how the system identifies inputs and outputs to quickly generate a conversation that can automatically request information for inputs from a user, via text or voice, to generate the outputs most relevant to a user”].
automatically generating an allowed input directive defining input data criteria including one or more of (i) permissible data types, (ii) permissible data values, (iii) permissible data positions derived from data included within at least one of the first input data set and the first output data set of the source spreadsheet, and (iv) one or more input directives describing at least one of a permissible data type, a permissible data value, and a permissible data position of the first input data set [(e.g. see Carver paragraphs 0029, 0030, 0031 and Fig. 13) ”the system identifies inputs and outputs to quickly generate a conversation that can automatically request information for inputs from a user, via text or voice, to generate the outputs most relevant to a user … the present invention uses some of the cells identified as inputs to generate a fully formed text question and also to set the parameters for acceptable type of answers from a conversational bot users … information about the types of values is communicated to the typical user first by the format in those same cells, such as currency (“$” dollar sign symbol) in 809 and percentage (“%” symbol) in the same FIG. 8, and of course by the adjacent or nearby row and/or column labels, such as 804, 805, 806 and 810 in FIG. 8”].
Carver does not specifically teach using the allowed input directive, automatically generating a sample input data set including data in a spreadsheet-compatible format conforming to input data criteria, processing the sample input data set according to the one or more directives and the one or more formulas of the source spreadsheet to generate a sample output data set, or analyzing the sample output data set to identify an error; and in response to identifying an error updating the allowed input directive based on a relationship between the error and the sample input data set. However, in the same field of invention, Nag teaches:
using the allowed input directive, automatically generating a sample input data set including data in a spreadsheet-compatible format conforming to input data criteria [(e.g. see Nag paragraphs 0036, 0096) ”generate a dataset that includes values in the spreadsheet file instance. For example, the values also may be referred to as contents, which includes numerical values, formulas, and rules in various cells of the spreadsheet file instance … may be associated with a plurality of scenarios. Each scenario is a set of predetermined values for one or more dashboard cells. For example, a scenario may include rules that are related to a number of cells. The scenario includes predetermined values for those cells”].
processing the sample input data set according to the one or more directives and the one or more formulas of the source spreadsheet to generate a sample output data set [(e.g. see Nag paragraphs 0043, 0090, 0099) ”The dataset may include values of a spreadsheet file instance. The values may be generated by calculations performed by the file server 120 for the spreadsheet file instance … The calculation engine 258 performs calculations of other cells in the spreadsheet file instance based on the new or edited value. In another example, the dataset inputted from the user may specify a new formula or rule. The calculation engine 258 applies the formula or rule to one or more cells in the spreadsheet file instance that is associated with the user. The calculation engine 258 generates the values in the spreadsheet file instance. The calculation engine 258 may repeat the calculation for other spreadsheet file instances and also for other spreadsheets. The values of a single spreadsheet file instances may be provided as an output dataset … may include a first set of results that are generated from one or more scenarios selected by the first user”].
analyzing the sample output data set to identify an error; and in response to identifying an error updating the allowed input directive based on a relationship between the error and the sample input data set [(e.g. see Nag paragraphs 0077, 0104, 0105, 0109) ”the file server 120 may conduct different kinds of mapping tests to determine whether the spreadsheets, including the standardized spreadsheet, include one or more informalities. The informalities may include errors in values or formulas … The processor scans for each cell and provides a pass if no spreadsheet cell has a hash (error) value in the cell. The processor may identify a fail if any spreadsheet cell has a hash (error) value in the cell. If there are no hash values, this indicates the input sheet (e.g., the original file that includes a model) and the output sheet (e.g., the standardized spreadsheet) have integrated correctly or at least the two files do not fail to integrate in terms of hash errors … The file server 120 may checks values in the spreadsheets based on the predetermined values in one or more scenarios. With the change in input values based on a scenario, the scenario comparison check is run in a fashion similar to the value comparison test to make sure that the resulting values in the cells in two spreadsheets are similar … identifies any fields that are specified in the mapping file and use the data values in those fields to update the destination files. The update may include replacing the old value in the destination file with the value in the source file. The update also may be adding new values to the destination file”].
Therefore, considering the teachings of Carver and Nag, it would have been obvious to one having ordinary skill in the art before the effective filing date of the claimed invention to add using the allowed input directive, automatically generating a sample input data set including data in a spreadsheet-compatible format conforming to input data criteria, processing the sample input data set according to the one or more directives and the one or more formulas of the source spreadsheet to generate a sample output data set, and analyzing the sample output data set to identify an error; and in response to identifying an error updating the allowed input directive based on a relationship between the error and the sample input data set, as taught by Nag, to the teachings of Carver because it enables the efficient and speedy deployment of complex spreadsheets (e.g. see Nag paragraph 0045).
As for dependent claim 16, Carver and Nag teach the product as described in claim 15; further, claim 16 discloses substantially the same limitations as claim 10. Therefore, it is rejected with the same rational as claim 10.
As for dependent claim 17, Carver and Nag teach the product as described in claim 16; further, claim 17 discloses substantially the same limitations as claim 11. Therefore, it is rejected with the same rational as claim 11.
As for dependent claim 18, Carver and Nag teach the product as described in claim 16; further, claim 18 discloses substantially the same limitations as claim 12. Therefore, it is rejected with the same rational as claim 12.
As for dependent claim 19, Carver and Nag teach the product as described in claim 18, but Carver does not specifically teach the following limitation. However, Nag teaches:
wherein the runtime extracts the allowed input directive from the file to analyze input data different from the first input data set according to the input data criteria [(e.g. see Nag paragraphs 0033, 0054, 0059, 0072, 0100) ”a software system that performs calculations and processing of files such as spreadsheets to generate datasets that includes values in the files such as spreadsheets … The data values may include integers, strings, and coordinates specifying the input cells. The calculation engine 258 performs calculations and processing of the values in the spreadsheet. The calculation engine 258 also may check one or more rules associated with the spreadsheet to determine whether the edits in the dataset transmitted from a client device may contradict any of the rules … cell may be calculated in runtime by the virtualization engine 316 … the file server 120 may run one or more mapping tests to check mapping and other quality issues of various standardized spreadsheets that are saved on the file server 120 … run a spreadsheet recalculation without performance degradation”].
The motivation to combine is the same as that used for claim 15.
As for dependent claim 20, Carver and Nag teach the product as described in claim 15, but Carver does not specifically teach the following limitations. However, Nag teaches:
further comprising code that, when executing on one or more computing devices, performs the steps of: receiving a second input data set different from the first input data set; applying the allowed input directive to the second input data set to determine compliance with the input data criteria; when data within the second input data set is found to deviate from the input data criteria, identifying the second input data set as incompatible for use with the source spreadsheet and when data within the second input data set is found to conform to the input data criteria, identifying the second input data set as compatible for use with the source spreadsheet [(e.g. see Nag paragraphs 0072, 0096, 0109) ”Each scenario is a set of predetermined values for one or more dashboard cells. For example, a scenario may include rules that are related to a number of cells. The scenario includes predetermined values for those cells. A different scenario includes a different set of predetermined values for those cells. A user may use the GUI to switch between scenarios. Upon receiving a selection of a scenario, the file server 120 automatically populates the predetermined values to the cells specified in the scenario's rules … The file server 120 may checks values in the spreadsheets based on the predetermined values in one or more scenarios. With the change in input values based on a scenario, the scenario comparison check is run in a fashion similar to the value comparison test to make sure that the resulting values in the cells in two spreadsheets are similar. This test may capture errors that are not captured in the value comparison test because the value comparison test reviews a file that is static. Values in the value comparison test may match, but when input values change as a user selects a different scenario, the scenario comparison check may discover that a multiplier is different in the formulas of the two files, or the direction of an arithmetic sign is reversed … The data values may include integers, strings, and coordinates specifying the input cells. The calculation engine 258 performs calculations and processing of the values in the spreadsheet. The calculation engine 258 also may check one or more rules associated with the spreadsheet to determine whether the edits in the dataset transmitted from a client device may contradict any of the rules. For example, a rule may restrict the change to a particular cell. Any edit in an attempt to change the cell may be rejected”].
The motivation to combine is the same as that used for claim 15.
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure.
U.S. PGPub 2012/0137204 A1 issued to Petrovicky et al. on 31 May 2012. The subject matter disclosed therein is pertinent to that of claims 1-20 (e.g. spreadsheet validation).
U.S. PGPub 2015/0193405 A1 issued to Gensburg et al. on 09 July 2015. The subject matter disclosed therein is pertinent to that of claims 1-20 (e.g. workbook testing).
Contact Information
Any inquiry concerning this communication or earlier communications from the examiner should be directed to CHRISTOPHER J FIBBI whose telephone number is (571)-270-3358. The examiner can normally be reached Monday - Thursday (8am-6pm).
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, William Bashore can be reached at (571)-272-4088. 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.
/CHRISTOPHER J FIBBI/Primary Examiner, Art Unit 2174