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 .
This Non-Final action is in reply to the request for continued examination filed 2/25/26.
Claims 8, 16 and 24 were previously cancelled.
Claims 25-27 are new claims.
Claims 1-7, 9-15, 17-23 and 25-27 are pending.
Request for Continued Examination
A request for continued examination under 37 CFR 1.114, including the fee set forth in 37 CFR 1.17(e), was filed in this application after final rejection. Since this application is eligible for continued examination under 37 CFR 1.114, and the fee set forth in 37 CFR 1.17(e) has been timely paid, the finality of the previous Office action has been withdrawn pursuant to 37 CFR 1.114. Applicants’ submission filed on 2/25/2026 has been entered.
Response to arguments/amendment
With respect to the 35 USC 101 rejection, applicant’s arguments have been considered by the Examiner but are unpersuasive. Applicants cite various legal standards, case law and summarize how a claimed invention should be analyzed using the Alice Mayo two step framework to determine if a claimed invention is directed to an abstract idea, hence patent ineligible. Applicant subsequently quotes exceptions where patent eligible claims using computer-implement rules were/are eligible under 35USC 101, not directed to an abstract idea, and recognized by the Federal Circuit as an improvement to a computer-related technology. Applicant then provides an overview of the invention and states, “Claim 1 clearly recites technical features that goes beyond merely, ‘organizing [existing] information into a new form’ or carrying out a fundamental economic practice…[when] it uses a combined order of specific rules that renders information into a specific format that is then used and applied to create desired results.”McRO, 837 F.3d 1299 at 1315. The claimed features compare favorably to, for example, McRO where specific algorithms streamlining human steps (hand animation) and producing an intangible result, a sequence of synchronized, animated characters, was eligible because it improved an existing technological process of computer animation. Id. Applicant also states the “claims are like those of SiRF Tech., where the Federal Circuit " found that claims to a method for calculating an absolute position of a GPS receiver and an absolute time of reception of satellite signals" recited patent-eligible subject matter. SiRF Technology, Inc. v. International Trade Com'n, 601 F. 3d 1319 at 1331. Like the claims in SiRF Tech, the present claims are "not dealing with ... a method that [could] be performed without a machine" and there is no possibility "that the calculations [could] be performed entirely in the human mind."Id. at 1333. Just as SiRF’s “methods at issue could not be performed without the use of a GPS receiver" the claimed features also execute compare reports via use of the two-way grammar aware tool that are not possible even by other compare tools, much less humans”.
Applicant’s arguments have been fully considered but are unpersuasive. Examiner asserts that the unlike SiRF Technology, Inc where the claimed features (GPS receiver) placed meaningful limits on the scope of the claims whereby the claimed invention was directed to the operation of the GPS receiver itself generating pseudo ranges, determining the position of the GPS receiver and performing the receiving/processing steps, not just abstract data processing. In this case, applicant’s two-way grammar aware tool functions solely as an obvious process used for allowing a solution to be achieved more quickly, (via utilization of a computer for checking and/or analyzing grammar). Hence the two-way grammar aware tool is no more than mere instructions to apply the exception using generic computing components (“a computer implemented method”, “processor”, “two-way grammar aware compare tool”, “programming language grammar” [claim 1]; “system”, “memory”, [claim 9]; “non-transitory computer-readable storage medium”, “computer” [claim 17]”); while the parser generator [claims 3 and 25-27] comprising “Another Tool for Language Recognition (ANTLR) [claim 25] is generically used to further process/capture received data (language grammar) for reading, processing executing or translating: structured text or binary files, and/or build/walk parse trees including the respective object tree based on rules logic (algorithm, software, computer program) without more (see applicant’s specification ¶171, ¶172, ¶178).
Examiner also notes that the claims here are unlike the claims in McRO. In McRO, the Federal Circuit held the claimed methods of automatic lip synchronization and facial expression animation using computer-implemented rules patent eligible under 35 U.S.C. § 101, because they were not directed to an abstract idea (Step 2A of the USPTO's SME guidance). The basis for the McRO court's decision was that the claims were directed to an improvement in computer-related technology (allowing computers to produce "accurate and realistic lip synchronization and facial expressions in animated characters" that previously could only be produced by human animators) and thus did not recite a concept similar to previously identified abstract ideas. See McRO, Inc. dba Planet Blue v. Bandai Namco Games America Inc., 120 USPQ2d 1091 (Fed. Cir. 2016). In the instant case, the Examiner does not see an improvement to the computer itself, a computer-related technology, two-way grammar-aware tool, nor the parser generator (ANTLR)). Instead, the Examiner has interpreted the claimed limitations as simply utilizing existing technology to implement the abstract idea for comparing a first component and second component, generating a first compare report of differences; comparing the first component and a third component, generating a second compare report of differences; comparing the first compare report and second compare report, reconciling conflicts and providing an actionable comparison report in a computing environment. Therefore, Examiner maintains that the method, system, and/or non-transitory computer readable storage medium claims do not purport to improve the functioning of the computer itself; nor do they effect improvement in any other technology or technical field. Instead, the claims at issue amount to nothing significantly more than an instruction to apply the abstract idea noted above using a generic computer and computing components. Consequently, that is not enough to transform an abstract idea into a patent-eligible invention. Hence, Examiner maintains that the claims here are unlike the claims in McRO and they are not patent eligible.
Applicant then avers that, “the claim recites directed to a specific improvement in computer functionality accomplished in a specific way—namely, grammar-aware and schema-aware comparison of code/semi-structured artifacts that (i) converts free-form expressions into object trees using programming-language grammar, (ii) performs two distinct comparisons from a common baseline (first vs. second; first vs. third), and (iii) compares and reconciles the two comparison results using metadata/structure/grammar knowledge to produce an actionable (machine-consumable) output”. Applicant subsequently states the Office Action, “initially misidentifies ‘a two-way grammar-aware compare tool’ as an abstract idea”; “fails to properly distinguish, much less give meaningful weight, to the technical features”, and “cites the specification, but offers no evidence whatsoever for the allegation that the specific arrangement as described herein is conventional. To the contrary the claims are directed to a specific computer-functionality improvement, are integrated into a practical application, and in any event recite significantly more than generic computing”.
Applicants’ arguments have been re-considered but are not persuasive. As previously discussed above, applicant’s two-way grammar-aware tool (for comparing data) via a processor; and parser generator (for processing data (language grammar)) via generic computing components using general linguistic rules logic (grammar rules, grammar-related algorithms/programming language grammar), is/are well-known in the industry, does not require inventive effort and simply perform well-understood, routine, and conventional activity. Further applicant’s computing components as claimed (“computer implemented method”, “processor”, “two-way grammar aware compare tool”, “programming language grammar” [claim 1]; “system”, “memory”, [claim 9]; “non-transitory computer-readable storage medium”, “computer” [claim 17]”), and additional element in the dependent claims “parser generator” [claims 3, and 25-27] comprising “Another Tool for Language Recognition (ANTLR) [claim 25] are recited at a high level of generality, and amount to no more than mere instructions to apply the judicial exception in a manner previously known in the art see at least ¶77: “There are also general-purpose operations 202 that list commands that set any workbook property as needed”; ¶171: “the language grammar may be captured using a parser generator for reading, processing executing or translating structured text or binary files. ANTLR (Another Tool for Language Recognition) is an example of such a generator that builds languages, tools, and frameworks. From a grammar, ANTLR generates a parser that can build and walk parse trees”; ¶186: “System 1500 comprises one or more client computer(s) 1518, a first network (network 11502), one or more application server(s) 1506, a second network (network 2 1510), one or more data server(s) 1512, a database 1514,storage/disk 1508, and a version control 1516. The servers may be co-located and use a local network or can be hosted in multiple data centers or a public cloud”; ¶187: “Client computer(s) 1518, among other functions, may run a user interface. Client computer(s) 1518 can include a mobile device and may comprise a central processing unit (CPU), a disk and a volatile memory. In some embodiments, client computer(s) 1518 communicates with application server(s) 1506 via network 1 1502. ¶188: “Application server(s) 1506, among other functions, may run business logic for the system. Application server(s) 1506 may comprise a central processing unit (CPU), a disk and a volatile memory. There may be many application servers communicating with each other or performing specialized tasks”; ¶192: “Storage media can include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data. Storage/disk 1508 is an example of non-transitory computer-readable storage media”; ¶193: “Communication between client computer(s) 1518, application server(s) 1506, data server(s) 1512, storage/disk 1508, database 1514 and version control 1516 can be over various network types. Non-limiting example network types can include Fibre Channel, small computer system interface (SCSI), Bluetooth, Ethernet, Wi-fi, Infrared Data Association (IrDA), Local area networks (LAN), Wireless Local area networks (WLAN), wide area networks (WAN) such as the Internet, serial, and universal serial bus (USB)”). Hence, the additional elements do not integrate the abstract idea into a practical application since they do not impose any meaningful limits on practicing the abstract idea. Therefore, Examiner maintains that the claimed invention as a whole does not provide any additional elements (or include significantly more) that transform the abstract idea (noted above) into a patent-eligible application and is directed to non-statutory subject matter.
As it relates to the 35USC103 rejection, applicant provides a tabulation of how they perceive the components of Rix map to the claimed features and states, “the Office Action’s citations to Rix do not disclose or suggest at least “a first compare report of one or more differences between the first component and the second component, and a second compare report of one or more differences between the first component and the third component” as recited in claim 1 as amended”, and that “Rix fails to disclose or suggest, “comparing, by the processor, the first compare report and the second compare report and reconciling by the processor one or more conflicts between the first compare report and the second compare report”. Applicant then states, “while the Office Action cites extensively from Rix, the Office Action fails to explain how it’s interpretation plainly distinguishes, much less how Rix generates “a third component using the two-way grammar-aware compare tool, the third component generated by editing the first component” that is distinct from the “a first component and a second component using a two-way grammar-aware compare tool, the second component generated by editing the first component” as recited in claim 1. Applicant subsequently states, “the Office Action fails to provide a reasoned rationale how Reeves alleged disclosure of determining changes to a spreadsheet file combines with Rix’s disclosure of a differential trees 560 and subtrees based on semantic differences between a first document and the second document to disclose or render obvious “comparing, by the processor, the first compare report and the second compare report and reconciling, by the processor, one or more conflicts between the first compare report and the second compare report”. Applicant also states, “the Office Action fails to give a sufficient reason for combining Rix and Reeves in the same way as claim 1”
Applicant’s arguments have been considered but are not persuasive. In response to applicant's argument that the references fail to show certain features of the invention, it is noted that the features upon which applicant relies (i.e., “how Rix generates “a third component using the two-way grammar-aware compare tool, the third component… that is distinct from the “a first component and a second component using a two-way grammar-aware compare tool”) are not recited in the rejected claim(s). Although the claims are interpreted in light of the specification, limitations from the specification are not read into the claims. See In re Van Geuns, 988 F.2d 1181, 26 USPQ2d 1057 (Fed. Cir. 1993).
Moreover, Examiner contends that sufficient reasoning to combine the references was in fact provided in the Final action (9/25/25). Further, in response to applicant' s argument that there is no teaching, suggestion, or motivation to combine the references, the examiner recognizes that obviousness may be established by combining or modifying the teachings of the prior art to produce the claimed invention where there is some teaching, suggestion, or motivation to do so found either in the references themselves or in the knowledge generally available to one of ordinary skill in the art. See In re Fine, 837 F.2d 1071, 5 USPQ2d 1596 (Fed. Cir. 1988), In re Jones, 958 F.2d 347, 21 USPQ2d 1941 (Fed. Cir. 1992), and KSR International Co. v. Teleflex, Inc., 550 U.S. 398, 82 USPQ2d 1385 (2007). Examiner does not consider Rix to be as limiting as applicant avers and points applicant to Rix, at least ¶1: “the present disclosure addresses systems and methods to facilitate generation of information that indicates semantic differences between analyzed electronic documents”; ¶2: “One or more electronic documents (e.g., text documents, such as text files) can be stored by a data repository (e.g., a database). Such a document may be written in a coding language that encodes the information contained within the document, and in some situations, different portions of a single document may be written in different coding languages. Where two or more documents are at least partially written in a coding language that is shared in common, it may be helpful to analyze and compare such documents such that differences may be made known (e.g., easily seen or highlighted) to one or more users”; ¶10: “methods (e.g., algorithms) facilitate full or partial generation and full or partial presentation of a semantic diff of multiple documents, and example systems (e.g., special-purpose machines configured by special-purpose software) are configured to facilitate full or partial generation and full or partial presentation of a semantic diff of multiple documents”; ¶11: “The access of these documents may be in response to a user request for provision of a semantic differential report (e.g., a semantic diff) that indicates differences (e.g., textual differences) between the first and second documents. The machine generates first and second parse trees by parsing the first and second documents based on grammar of the coding language. The resulting first parse tree includes a first group (e.g., plurality) of subtrees, and the resulting second parse tree includes a second group of subtrees”; ¶13: “The machine then executes the selected comparison procedure with the selected two subtrees as input and generates a differential subtree that indicates one or more differences (e.g., textual differences) between the two subtrees (e.g., the first subtree from the first group and the second subtree from the second group)”; ¶14: “FIG. 1 is a network diagram illustrating a network environment suitable for fully or partially generating a semantic diff of multiple documents”; Fig 4, ¶27: “the server machine 110 or the device 130 may determine that a third subtree 432 in the first parse tree 430 shares a classification (e.g., a second classification) with a fourth subtree 442 in the second parse tree 440”; ¶29: “the server machine 110 or the device 130 may select a comparison procedure (e.g., a second comparison procedure, also from the group of comparison procedures 500) applicable to the third and fourth subtrees 432 and 442, based on the classification (e.g., the second classification) shared by the third and fourth subtrees 432 and 442”; ¶31: “As shown in the lower portion of FIG. 5, the server machine 110 or the device 130 may go on to generate a differential tree 560 (e.g., a diff tree) that includes the generated differential subtree 551. The generated differential tree indicates one or more differences (e.g., text differences) between pairs of corresponding subtrees (e.g., between the first and second subtrees 431 and 441, or between the third and fourth subtrees 432 and 442), where each pair of subtrees includes one subtree (e.g., first subtree 431) parsed from the first document 410 and one subtree (e.g., second subtree 441) parsed from the second document 420. All or part of the generated diff tree 560 may be presented (e.g., in a graphical representation, such as a rendered image) by the device 130 or cause to be presented by the device 130 (e.g., within a graphical user interface) for viewing by the user 132 of the device 130.
Applicant’s disclosure generally teaches, ¶12: “comparing, by a processor, a first component and a second component using a two-way grammar-aware compare tool, the second component generated by editing the first component. The computer-implemented method also includes generating, by the processor, a first compare report of one or more differences between the first component and the second component”. Rix discloses systems and methods to facilitate generation of semantic differences (report) of multiple electronic documents for subtrees based on grammar of the coding language and classification. Giving the broadest reasonable interpretation of applicant’s claim limitation in light of the specification, Examiner interprets at least the generated differential subtree that indicates one or more differences between two subtrees as taught by Rix as teaching applicant’s first compare report.
Further, applicant’s disclosure teaches, ¶19: “comparing, by the processor, the first component and a third component using the two-way grammar-aware compare tool, the third component generated by editing the first component” and “generating, by the processor, a second compare report of one or more differences between the first component and the third component, comparing, by the processor, the first compare report and the second compare report. Rix teaches that a differential tree can be created to include but not limited to a newly generated differential tree that includes a previously generated differential subtree indicating one or more differences between pairs of subtrees parsed from documents. Rix also discloses successor versions of a first document whereby the generated differential tree may indicate that a particular subtree has been inserted into a second document (inserted into the second parse tree) or deleted from the first document (first parse tree). Giving the broadest reasonable interpretation of applicant’s claim limitations in light of the specification, Examiner interprets at least a successor version of a first document as taught by Rix as teaching applicant’s third component and generating a new differential tree that includes a previously generated differential subtree (second compare report). Examiner further interprets identifying one or more differences between pairs of corresponding subtrees parsed from documents and deleted or replaced subtrees for indicating semantic differences between corresponding subtrees as taught by Rix as teaching applicant’s comparing the first compare report and second compare report. As it relates to the limitation, “reconciling by the processor one or more conflicts between the first compare report and the second compare report”, and in view of new claims 25-27, Examiner has modified the rejection with Gnazdowsky to further explain how the claims are being interpreted and has addressed all of the limitations as noted below in this Non-Final action.
Claim Objection
Claims 10 and 11 are objected to because they are duplicate claims. Appropriate correction is requested.
Claims 18 and 19 are objected to because they are duplicate claims. Appropriate correction is requested.
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 25 is 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 25 recites, “wherein the parser generator comprises”; there is insufficient antecedent basis for this limitation in the claim.
Claim Rejections - 35 USC § 101
35 U.S.C. 101 reads as follows:
Whoever invents or discovers any new and useful process, machine, manufacture, or composition of matter, or any new and useful improvement thereof, may obtain a patent therefor, subject to the conditions and requirements of this title.
Claims 1-7, 9-15, 17-23 and 25-27 are rejected under 35 U.S.C. § 101 because the claimed invention is directed to an abstract idea without significantly more. Claims 1-7 and 25 are directed to a process (an act, or series of acts or steps), claims 9-15 and 26 are directed to a system, and claims 17-23 and 27 are directed to manufacture or compositions of matter. Thus claims 1-7, 9-15, 17-23 and 25-27 fall within one of the four statutory categories.
Step 2A-Prong 1: Claim 1 recites in part, “comparing, by a processor, a first component and a second component using a two-way grammar-aware compare tool, the second component generated by editing the first component; and generating, by the processor, a first compare report of one or more differences between the first component and the second component; comparing, by the processor, the first component and a third component using the two-way grammar-aware compare tool, the third component generated by editing the first component; generating, by the processor, a second compare report of one or more differences between the first component and the third component
comparing by the processor, the first compare report and the second compare report; and reconciling, by the processor, one or more conflicts between the first compare report and the second compare report
wherein: the first component and the second component comprise one or more free-form expressions; the two-way grammar-aware compare tool uses programming language grammar to convert each of the one or more free-form expressions to a respective object tree”
and the two-way grammar-aware compare tool leverages metadata, structure, and grammar knowledge to provide an actionable comparison report.
The underlined limitations above demonstrate independent claim 1 is directed toward the abstract idea for comparing a first component and second component, generating a first compare report of differences; comparing the first component and a third component, generating a second compare report of differences; comparing the first compare report and second compare report, reconciling conflicts and providing an actionable comparison report in a computing environment. Applicant’s specification discusses rule-based systems and methods for customizing complex business solutions utilizing a baseline all- encompassing master copy of a created resource whereby a set of building blocks are created and assembled to create a solution customized for a given customer. It is then simplified using a rule-based system that generates a final solution based on declarative rules that express a customer's requirements. The master copy can be fully documented and fully tested, thus greatly reducing the scope of testing, documentation, and training that is required for individual customers (¶5). The specification further discusses a computer-implemented method comparing, by a processor, a first component and a second component using a two-way grammar-aware compare tool, the second component generated by editing the first component. The computer-implemented method also includes generating, by the processor, a first compare report of one or more differences between the first component and the second component. In the computer- implemented method, the first component and the second component comprise one or more free-form expressions; and the two-way grammar-aware compare tool uses programming language grammar to convert each of the one or more free-form expressions to a respective object tree. It further teaches that a two-way grammar-aware compare tool can tag and categorize each change between the first component and the second component; the two-way grammar-aware compare tool can use an identifier, an alternate identifier, a heuristic matching rule, metadata for mapping property changes to a testing process; an internal component dependency, an external component dependency, and a mapping hint, to provide a report of one or more differences (¶10, ¶15).
Claim 1 is considered an abstract idea because the (underlined) limitations as claimed pertains to creating customized business solutions using a baseline master copy to generate a solution for a customer based on their requirements in a computing environment. The claims use conventional computing components to create, customize and maintain data/information with rules-based logic for comparison and provide a (business) report(s) based on customer requirements; hence directed to (i) commercial or legal interactions (including agreements in the form of contracts; legal obligations; advertising marketing or sales activities or behaviors; business relations) since the steps for “comparing, by a processor, a first component and a second component using a two-way grammar-aware compare tool, the second component generated by editing the first component; and generating, by the processor, a first compare report of one or more differences between the first component and the second component; comparing, by the processor, the first component and a third component using the two-way grammar-aware compare tool, the third component generated by editing the first component; generating, by the processor, a second compare report of one or more differences between the first component and the third component
comparing by the processor, the first compare report and the second compare report; and reconciling, by the processor, one or more conflicts between the first compare report and the second compare report
wherein: the first component and the second component comprise one or more free-form expressions; the two-way grammar-aware compare tool uses programming language grammar to convert each of the one or more free-form expressions to a respective object tree”
and the two-way grammar-aware compare tool leverages metadata, structure, and grammar knowledge to provide an actionable comparison report.
and (ii) managing personal behavior or relationships or interactions between people (including social activities, teaching, and following rules or instructions) whereby “comparing, by a processor, a first component and a second component using a two-way grammar-aware compare tool, the second component generated by editing the first component; and generating, by the processor, a first compare report of one or more differences between the first component and the second component; comparing, by the processor, the first component and a third component using the two-way grammar-aware compare tool, the third component generated by editing the first component; generating, by the processor, a second compare report of one or more differences between the first component and the third component
comparing by the processor, the first compare report and the second compare report; and reconciling, by the processor, one or more conflicts between the first compare report and the second compare report
wherein: the first component and the second component comprise one or more free-form expressions; the two-way grammar-aware compare tool uses programming language grammar to convert each of the one or more free-form expressions to a respective object tree”
and the two-way grammar-aware compare tool leverages metadata, structure, and grammar knowledge to provide an actionable comparison report.
. Therefore, the claim is directed to certain methods of organizing human activity grouping of abstract idea--see MPEP 2106.04(II).
Independent claims 9 and 17 recite essentially the same abstract idea as independent claim 1, therefore they are also abstract based on the same rationale as independent claim 1.
Step 2A-Prong 2: This judicial exception is not integrated into a practical application because the additional elements “computer implemented method”, “processor”, “two way grammar aware compare tool”, “programming language grammar” [claim 1]; “system”, “memory” [claim 9]; “non-transitory computer-readable storage medium”, “computer” [claim 17] for (comparing, generating, reconciling, converting, providing) data gathering, analysis and merely to provide instructions for managing information, and to implement the abstract idea recited above utilizing “a computer implemented method”, “processor”, “two way grammar aware compare tool”, “programming language grammar” [claim 1]; “system”, “memory”, [claim 9]; “non-transitory computer-readable storage medium”, “computer” [claim 17] as a tool to perform the abstract idea, and generally links the abstract idea to a particular technological environment. See MPEP 2106.05 (f-h). Further, the additional elements do not impose any meaningful limits on practicing the abstract idea -see MPEP 2106.05(g).
Independent claim 1 fails to operate “a computer implemented method”, “processor”, “two way grammar aware compare tool”, “programming language grammar” [claim 1]; “system”, “memory” [claim 9]; “non-transitory computer-readable storage medium”, “computer” [claim 17] (which is merely a nominal recitation of a standard computer technology, database and hardware/software components) in any exceptional manner, and there is no evidence in the disclosure to suggest achieving an actual improvement in the computer functionality itself, or improvement in any specific computer technology other than utilizing ordinary computational tools to automate and perform the abstract idea for comparing a first component and second component, generating a first compare report of differences; comparing the first component and a third component, generating a second compare report of differences; comparing the first compare report and second compare report, reconciling conflicts and providing an actionable comparison report in a computing environment. Accordingly, applicant has not shown an improvement or practical application under the guidance of MPEP section 2106.04(d) or 2106.05(a).
Dependent claims 2-8, 10-16, 18-23 and 25-27 fail to cure the deficiencies of the above noted independent claim from which they depend on and are therefore rejected under the same grounds. The dependent claims further recite the abstract idea without imposing any meaningful limits on practicing the abstract idea. Dependent claims 2, 10, 11, 18 and 19 recite in part, “wherein the first component and second component are at least one of”; claim 3 recites in part, “wherein the programming language grammar is captured using”; claims 4, 12 and 20 recite in part, “wherein the two-way grammar-aware compare tool tags and categorizes”; claims 5, 13 and 21 recite in part, “wherein the two-way grammar-aware compare tool uses at least one of”; claims 6, 14 and 22 recite in part, “wherein the two-way grammar-aware compare tool recognizes a business objective”; claims 7, 15 and 23 recite in part, “wherein the two-way grammar-aware compare tool captures…”; claims 8 and 16 recite in part, “ comparing, by the processor, the first component and a third component…”; claim 25 recites in part, “wherein the parser generator comprises”; claims 26 and 27 recite in part, “wherein the two-way grammar-aware compare tool comprises”, which is still directed toward the abstract idea identified previously and are no more than mere instructions to apply the exception using a computer or with computing components. Therefore, the abstract idea fails to integrate into any practical application. Thus, under Step 2A-Prong Two the claims are directed to an abstract idea.
Step 2B: The claim(s) does/do not include additional elements that are sufficient to amount to significantly more than the judicial exception because as discussed above, with respect to integration of the abstract idea into a practical application, the additional element “a computer implemented method”, “processor”, “two way grammar aware compare tool”, “programming language grammar” [claim 1]; “system”, “memory” [claim 9]; “non-transitory computer-readable storage medium”, “computer” [claim 17]”, amounts to no more than mere instructions to apply the exception using a generic computer component and linking the use of the judicial exception to a computing environment which does not integrate a judicial exception into a practical application nor provide an inventive concept (significantly more than the abstract idea). In this case, the “computer implemented method”, “processor”, “two way grammar aware compare tool”, “programming language grammar” [claim 1]; “system”, “memory”[claim 9]; “non-transitory computer-readable storage medium”, “computer” [claim 17] are generically used to further process and store received data- see ¶186: “System 1500 comprises one or more client computer(s) 1518, a first network (network 11502), one or more application server(s) 1506, a second network (network 2 1510), one or more data server(s) 1512, a database 1514,storage/disk 1508, and a version control 1516. The servers may be co-located and use a local network or can be hosted in multiple data centers or a public cloud”; ¶187: “Client computer(s) 1518, among other functions, may run a user interface. Client computer(s) 1518 can include a mobile device and may comprise a central processing unit (CPU), a disk and a volatile memory. In some embodiments, client computer(s) 1518 communicates with application server(s) 1506 via network 1 1502”; ¶188: “Application server(s) 1506, among other functions, may run business logic for the system. Application server(s) 1506 may comprise a central processing unit (CPU), a disk and a volatile memory. There may be many application servers communicating with each other or performing specialized tasks”; ¶192: “Storage media can include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data. Storage/disk 1508 is an example of non-transitory computer-readable storage media”; ¶193: “Communication between client computer(s) 1518, application server(s) 1506, data server(s) 1512, storage/disk 1508, database 1514 and version control 1516 can be over various network types. Non-limiting example network types can include Fibre Channel, small computer system interface (SCSI), Bluetooth, Ethernet, Wi-fi, Infrared Data Association (IrDA), Local area networks (LAN), Wireless Local area networks (WLAN), wide area networks (WAN) such as the Internet, serial, and universal serial bus (USB)”.
Further applicant’s two-way grammar aware tool is merely used as a means to further process received data based on rules logic- see applicant’s disclosure, ¶8: “Disclosed herein is a method to use a syntax-aware and language grammar-aware tool to analyze the freeform code contained in the low-code solutions to identify dependencies, sub- expressions, logic branches, and composition of the expressions to permit robust reporting, comparison, and editing of the code. This permits automatic manipulation of code to support a range of actions that can alter the behavior or streamline the freeform code or by removing unnecessary sections.”; ¶77: “There are also general-purpose operations 202 that list commands that set any workbook property as needed”, and amounts to no more than applying the judicial exception using generic computing components, and linking the use of the judicial exception to a computing environment.
Moreover, the additional element “parser generator” [claims 3, and 25-27], “Another Tool for Language Recognition (ANTLR) [claim 25] (for processing data (language grammar) are generically used as a means to further process received data (reading, processing executing or translating structured text or binary files) via generic computing components using general linguistic rules logic (grammar rules, grammar-related algorithms/programming language grammar), is/are well-known in the industry, does not require inventive effort and simply perform well-understood, routine, and conventional activity- see applicant’s disclosure-¶171: “the language grammar may be captured using a parser generator for reading, processing executing or translating structured text or binary files. ANTLR (Another Tool for Language Recognition) is an example of such a generator that builds languages, tools, and frameworks. From a grammar, ANTLR generates a parser that can build and walk parse trees”; ¶172: “the language grammar may be captured using as an ANTLR grammar and used by the language parser and interpreter to validate and execute code contained in the LCP”; ¶188: “Application server(s) 1506, among other functions, may run business logic for the system. Application server(s) 1506 may comprise a central processing unit (CPU), a disk and a volatile memory. There may be many application servers communicating with each other or performing specialized tasks”. Hence, the additional elements do not integrate the abstract idea into a practical application because they do not impose any meaningful limits on practicing the abstract idea.
Accordingly, even when considered as a whole, the claims do not transform the abstract idea into a patent-eligible invention since the claim limitations do not amount to a practical application or significantly more than an abstract idea for comparing a first component and second component, generating a first compare report of differences; comparing the first component and a third component, generating a second compare report of differences; comparing the first compare report and second compare report, reconciling conflicts and providing an actionable comparison report in a computing environment. Hence, claims 1-7, 9-15, 17-23 and 25-27 are directed to non-statutory subject matter and are rejected under 35 USC 101. See MPEP 2106.
Claim Rejections - 35 USC § 103
In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
The factual inquiries for establishing a background for determining obviousness under 35 U.S.C. 103 are summarized as follows:
1. Determining the scope and contents of the prior art.
2. Ascertaining the differences between the prior art and the claims at issue.
3. Resolving the level of ordinary skill in the pertinent art.
4. Considering objective evidence present in the application indicating obviousness or nonobviousness.
This application currently names joint inventors. In considering patentability of the claims the examiner presumes that the subject matter of the various claims was commonly owned as of the effective filing date of the claimed invention(s) absent any evidence to the contrary. Applicant is advised of the obligation under 37 CFR 1.56 to point out the inventor and effective filing dates of each claim that was not commonly owned as of the effective filing date of the later invention in order for the examiner to consider the applicability of 35 U.S.C. 102(b)(2)(C) for any potential 35 U.S.C. 102(a)(2) prior art against the later invention.
Claims 1-7, 9-15, 17-23, and 25-27 are rejected under 35 U.S.C. 103 as being unpatentable over Rix et al., US Patent Application Publication No US 2019/0026255 A1 in view of Gnazdowsky et al., US Patent Application Publication No US 2019/0361686 A1.
With respect to claims 1, 9 and 17,
Rix discloses,
A computer-implemented method comprising: comparing, by a processor, a first component and a second component using a two-way grammar-aware compare tool, the second component generated by editing the first component (¶1: “the present disclosure addresses systems and methods to facilitate generation of information that indicates semantic differences between analyzed electronic documents”; ¶10: “methods (e.g., algorithms) facilitate full or partial generation and full or partial presentation of a semantic diff of multiple documents …are configured to facilitate full or partial generation and full or partial presentation of a semantic diff of multiple documents”; ¶11: “The access of these documents may be in response to a user request for provision of a semantic differential report (e.g., a semantic diff) that indicates differences (e.g., textual differences) between the first and second documents. The machine generates first and second parse trees by parsing the first and second documents based on a grammar of the coding language. The resulting first parse tree includes a first group (e.g., plurality) of subtrees, and the resulting second parse tree includes a second group of subtrees”; ¶13: “The machine then executes the selected comparison procedure with the selected two subtrees as input and generates a differential subtree that indicates one or more differences (e.g., textual differences) between the two subtrees (e.g., the first subtree from the first group and the second subtree from the second group)”; ¶14: “FIG. 1 is a network diagram illustrating a network environment suitable for fully or partially generating a semantic diff of multiple documents”; Fig 1, Fig 2, ¶20: “FIG. 2 …The server machine 110 is shown as including a request handler 210, a document parser 220, a subtree classifier 230, a procedure selector 240, a diff generator 250, and a diff renderer 260, all configured to communicate with each other (e.g., via a bus, shared memory, or a switch)”; ¶21: “The diff generator 250 may be or include a semantic diff module (e.g., a semantic diff generation module) or equivalent software code. The diff renderer 260 may be or include a rendering module (e.g., a semantic differential report rendering module) or equivalent software code”; ¶24: “FIG. 3, the request handler 210, the document parser 220, the subtree classifier 230, the procedure selector 240, the diff generator 250, the diff renderer 260, or any suitable combination thereof, may form all or part of the diff application 200 (e.g., a client-side application for generating and presenting a semantic diff) that is stored (e.g., in memory, installed, or otherwise present) on the device 130 and executable thereon”) Rix teaches a method/system for facilitating the comparison/analysis/parsing of electronic documents using grammar of a coding language common to both documents, generating first and second parse trees, subtrees, and differential trees whereby semantic difference are identified between documents. Examiner interprets the network environment (Fig 1, Fig 2) including diff generator, and at least the diff application for generating and presenting a semantic diff report of multiple documents as taught by Rix as teaching applicant’s two-way grammar tool.
generating, by the processor, a first compare report of one or more differences between the first component and the second component; (¶11: “The access of these documents may be in response to a user request for provision of a semantic differential report (e.g., a semantic diff) that indicates differences (e.g., textual differences) between the first and second documents. The machine generates first and second parse trees by parsing the first and second documents based on a grammar of the coding language. The resulting first parse tree includes a first group (e.g., plurality) of subtrees, and the resulting second parse tree includes a second group of subtrees”; ¶26: “FIGS. 4 and 5 are conceptual diagrams illustrating generation of a differential tree (e.g., a diff tree) that indicates differences between two documents, according to some example embodiments. Starting at the top of FIG. 4, a first document 410 may be a first electronic document in the example form of a first text file (e.g., a first file that stores human-readable text characters), and a second document 420 may be a second electronic document in the example form of a second text file (e.g., a second file that stores human-readable text characters). The server machine 110 or the device 130 parses the first and second documents 410 and 420 based on a grammar 429, where the grammar 429 corresponds to a coding language (e.g., a protocol in which a specification of the coding language defines a syntax for encoding content as human-readable text, machine-readable text, or any suitable combination thereof) that is common to both the first and second documents 410 of 420. As shown by the heavy arrows in FIG. 4, the results of the parsing include a first parse tree 430 that corresponds to the first document 410, as well as a second parse tree 440 that corresponds to the second document 420”; ¶27: “With at least some of the subtrees thus classified, the server machine 110 or the device 130 determines that a first subtree 431 in the first parse tree 430 matches with a second subtree 441 in the second parse tree 440. That is, the server machine 110 or the device 130 determines that the first subtree 431 shares a classification (e.g., a first classification) with the second subtree 441, where the shared classification is included in the set of classifications (e.g., as maintained by the server machine 110).”; ¶29: As shown at the top of FIG. 5, the server machine 110 or the device 130 then selects a comparison procedure 510 (e.g., a first comparison procedure) that is applicable to the first and second subtrees 431 and 441, and this selection is made from a group (e.g., plurality) of available comparison procedures 500”; ¶30: “the machine 110 or the device 130 executes the selected comparison procedure 510, with the selected first and second subtrees 431 and 441 as inputs to the comparison procedure 510, to generate a differential subtree 551 (e.g., a diff subtree) as an output of the selected comparison procedure 510. The generated differential subtree 551 indicates at least one difference (e.g., difference in text) between the selected first subtree 431 and the selected second subtree 441”; ¶31: “As shown in the lower portion of FIG. 5, the server machine 110 or the device 130 may go on to generate a differential tree 560 (e.g., a diff tree) that includes the generated differential subtree 551. The generated differential tree indicates one or more differences (e.g., text differences) between pairs of corresponding subtrees (e.g., between the first and second subtrees 431 and 441… All or part of the generated diff tree 560 may be presented (e.g., in a graphical representation, such as a rendered image) by the device 130 or cause to be presented by the device 130 (e.g., within a graphical user interface) for viewing by the user 132 of the device 130”; ¶44: “in situations where the second document 420 is a successor version of the first document 410, the generated differential tree 560 may indicate that this particular subtree has been inserted into the second document 420 (e.g., inserted into the second parse tree 440) or deleted from the first document 410 (e.g., deleted from the first parse tree 430)”)
Applicant’s disclosure discusses, ¶12: “comparing, by a processor, a first component and a second component using a two-way grammar-aware compare tool, the second component generated by editing the first component. The computer-implemented method also includes generating, by the processor, a first compare report of one or more differences between the first component and the second component”.
Rix discloses systems and methods to facilitate generation of semantic differences (report) of multiple electronic documents for subtrees based on grammar of the coding language and classification. Giving the broadest reasonable interpretation of applicant’s claim limitation in light of the specification, Examiner interprets at least the generated differential subtree that indicates one or more differences between two subtrees as taught by Rix as teaching applicant’s first compare report.
comparing, by the processor, the first component and a third component using the two- way grammar-aware compare tool, the third component generated by editing the first component; (¶28: “the server machine or the device 130 may select the third and fourth subtrees 432 and 442 for comparison to each other, and this selection may be based on a previous determination that the third or fourth subtrees 432 and 442 share the same classification (e.g., a second classification)”; ¶31: “FIG. 5, the server machine 110 or the device 130 may go on to generate a differential tree 560 (e.g., a diff tree) that includes the generated differential subtree 551. The generated differential tree indicates one or more differences (e.g., text differences) between pairs of corresponding subtrees (e.g., between the first and second subtrees 431 and 441, or between the third and fourth subtrees 432 and 442), where each pair of subtrees includes one subtree (e.g., first subtree 431) parsed from the first document 410 and one subtree (e.g., second subtree 441) parsed from the second document 420”; Fig 7, ¶44 “as part of generating the differential tree 560, the diff renderer 260 causes the generated differential tree 560 to indicate that a particular subtree (e.g., a fifth subtree, which may be similar to the first subtree 431 or similar to the second subtree 441) is present in one document but not the other (e.g., present in the second document 420 but absent from the first document 410, or vice versa). Accordingly, in situations where the second document 420 is a successor version of the first document 410, the generated differential tree 560 may indicate that this particular subtree has been inserted into the second document 420 (e.g., inserted into the second parse tree 440) or deleted from the first document 410 (e.g., deleted from the first parse tree 430)”; Fig 7, ¶48: the vertical positioning performed in operation 781 may have the effect of visually aligning the tops (e.g., top edges or top boundaries) of the depictions of the first and second subtrees 431 and 441 within the graphical representation (e.g., the output document) to indicate that the first and second subtrees 431 and 441 share a common classification, to indicate that one is a successor version of the other, or both”; ¶51: “identifying all compared subtrees (e.g., first and second subtrees 431 and 441) that share the same classification as the first and second subtrees 431 and 441), thereby identifying their corresponding differential subtrees (e.g., similar to differential subtree 551”; Fig 8, ¶57: “the subtree classifier 230 classifies (e.g., iteratively) the subtrees (e.g., first, second, third, and fourth subtrees 431, 432, 441, and 442) found in the first and second parse trees 430 and 440 that were respectively derived from the first and second documents 410 of 420. By performance of operation 830, some or all of the subtrees present in the first and second parse trees 430 and 440 become classified, and the classification of the subtrees may be based on a set of available classifications”)
generating, by the processor, a second compare report of one or more differences between the first component and the third component; comparing, by the processor, the first compare report and the second compare report (¶14: “FIG. 1 is a network diagram illustrating a network environment suitable for fully or partially generating a semantic diff of multiple documents”; ¶28: “the server machine or the device 130 may select the third and fourth subtrees 432 and 442 for comparison to each other, and this selection may be based on a previous determination that the third or fourth subtrees 432 and 442 share the same classification (e.g., a second classification)”;.¶29: “the server machine 110 or the device 130 may select a comparison procedure (e.g., a second comparison procedure, also from the group of comparison procedures 500) applicable to the third and fourth subtrees 432 and 442, based on the classification (e.g., the second classification) shared by the third and fourth subtrees 432 and 442”; Fig 6, ¶41: “the generated differential subtree 551 indicates one or more differences (e.g., textual differences) between the compared first and second subtrees 431 and 441”; ¶43: “the generated differential subtree 551 may be incorporated into the differential tree 560 (e.g., such that the differential subtree 551 becomes a portion of the differential tree 560)”; ¶44: as part of generating the differential tree 560, the diff renderer 260 causes the generated differential tree 560 to indicate that a particular subtree (e.g., a fifth subtree, which may be similar to the first subtree 431 or similar to the second subtree 441) is present in one document but not the other (e.g., present in the second document 420 but absent from the first document 410, or vice versa). Accordingly, in situations where the second document 420 is a successor version of the first document 410, the generated differential tree 560 may indicate that this particular subtree has been inserted into the second document 420 (e.g., inserted into the second parse tree 440) or deleted from the first document 410 (e.g., deleted from the first parse tree 430); ¶46: “the generated graphical representation visually indicates at least one difference (e.g., textual difference) between the first and second subtrees 431 and 441, between the first and second parse trees 430 and 440, between the first and second documents 410 of 420, or any suitable combination thereof”; ¶48: “the graphical representation (e.g., the output document) to indicate that the first and second subtrees 431 and 441 share a common classification, to indicate that one is a successor version of the other, or both”; Fig 8, ¶76: “one or more of the methodologies described herein may facilitate generation and presentation of a semantic diff (e.g., a differential report, in the form of an image or document), as well as accurate and convenient visual indication of semantic differences between such documents”)
Applicant’s disclosure teaches, ¶19: “comparing, by the processor, the first component and a third component using the two-way grammar-aware compare tool, the third component generated by editing the first component” and “generating, by the processor, a second compare report of one or more differences between the first component and the third component, comparing, by the processor, the first compare report and the second compare report.
Rix teaches that a differential tree can be created to include but not limited to a newly generated differential tree that includes a previously generated differential subtree indicating one or more differences between pairs of subtrees parsed from documents. Rix also discloses successor versions of a first document whereby the generated differential tree may indicate that a particular subtree has been inserted into a second document (inserted into the second parse tree) or deleted from the first document (first parse tree). Giving the broadest reasonable interpretation of applicant’s claim limitations in light of the specification, Examiner interprets at least a successor version of a first document as taught by Rix as teaching applicant’s third component and generating a new differential tree that includes a previously generated differential subtree (second compare report). Examiner further interprets identifying one or more differences between pairs of corresponding subtrees parsed from documents and deleted or replaced subtrees for indicating semantic differences between corresponding subtrees as taught by Rix as teaching applicant’s comparing the first compare report and second compare report.
wherein: the first component and the second component comprise one or more free-form expressions; (¶11: “ The access of these documents may be in response to a user request for provision of a semantic differential report (e.g., a semantic diff) that indicates differences (e.g., textual differences) between the first and second documents”; ¶64: “the document parser 220 detects the coding language in which the first and second documents 410 and 420 are written… the coding language is a programming language, and operation 911 is performed by detecting (e.g., by analyzing the first and second documents 410 and 420) the programming language in which the first and second documents 410 and 420 are written”; claim 9)
the two-way grammar-aware compare tool uses programming language grammar to convert each of the one or more free-form expressions to a respective object tree (¶11: “A machine (e.g., a server machine or a device) is configured to access first and second documents (e.g., text documents) written in a coding language that is common to both. The access of these documents may be in response to a user request for provision of a semantic differential report (e.g., a semantic diff) that indicates differences (e.g., textual differences) between the first and second documents. The machine generates first and second parse trees by parsing the first and second documents based on a grammar of the coding language. The resulting first parse tree includes a first group (e.g., plurality) of subtrees, and the resulting second parse tree includes a second group of subtrees”; ¶55: FIG. 8, “the subtree classifier 230 accesses a specification of a coding language (e.g., the coding language in which the first and second documents 410 and 420 are at least partially written), a grammar of the coding language, or both”; ¶57: “the subtree classifier 230 classifies (e.g., iteratively) the subtrees (e.g., first, second, third, and fourth subtrees 431, 432, 441, and 442) found in the first and second parse trees 430 and 440 that were respectively derived from the first and second documents 410 of 420”; ¶64: “the document parser 220 detects the coding language in which the first and second documents 410 and 420 are written. This may be performed by analyzing the first and second documents 410 and 420. In some example embodiments, the coding language is a programming language, and operation 911 is performed by detecting (e.g., by analyzing the first and second documents 410 and 420) the programming language in which the first and second documents 410 and 420 are written”; ¶65: “the document parser 220 selects the grammar of the programming language based on the detected programming language. For example, a data repository (e.g., database 115, server machine 110, device 150, or device 130) may store a set of grammars for various coding languages (e.g., programming languages), and the document parser 220 may select the grammar therefrom, based on the detected coding language for the first and second documents 410 and 420”) Rix teaches a method/system for facilitating the comparison/analysis/parsing of electronic documents using grammar of a coding language common to both documents, generating first and second parse trees, subtrees, and differential trees whereby semantic difference are identified between documents. Examiner interprets the network environment (Fig 1, Fig 2) including diff generator, and at least the diff application for generating and presenting a semantic diff report of multiple documents as taught by Rix as teaching applicant’s two way grammar tool.
the two-way grammar-aware compare tool leverages metadata, structure, and grammar knowledge to provide an actionable report (¶10; ¶11; ¶13: “The machine may go on and generate a differential tree that indicates differences between the entireties of the first and second documents. Furthermore, the machine may cause presentation of a graphical representation of at least a portion of the generated differential tree. This may be performed in response (e.g., fulfillment) to the user request for provision of the semantic differential report”; Fig 2, Fig 6, Fig 8; ¶55: “the subtree classifier 230 accesses a specification of a coding language (e.g., the coding language in which the first and second documents 410 and 420 are at least partially written), a grammar of the coding language, or both”; ¶56: “the subtree classifier 230 updates the set of classifications discussed above with respect to operation 630, and the updating of the set of classifications is based on the information (e.g., the specification, the grammar, or both) accessed in operation 801“;¶57: “the subtree classifier 230 classifies (e.g., iteratively) the subtrees (e.g., first, second, third, and fourth subtrees 431, 432, 441, and 442) found in the first and second parse trees 430 and 440 that were respectively derived from the first and second documents 410 of 420”; ¶76: “one or more of the methodologies described herein may facilitate generation and presentation of a semantic diff (e.g., a differential report, in the form of an image or document), as well as accurate and convenient visual indication of semantic differences between such documents, compared to capabilities of pre-existing systems and methods)”) Rix teaches a method/system for facilitating the comparison/analysis/parsing of electronic documents using grammar of a coding language common to both documents, generating first and second parse trees, subtrees, and differential trees whereby semantic difference are identified between documents. Examiner interprets the network environment (Fig 1, Fig 2) including diff generator, and at least the diff application for generating and presenting a semantic diff report of multiple documents as taught by Rix as teaching applicant’s two way grammar tool.
Rix discloses all the above limitations, Rix does not distinctly describe the following limitations, but Gnazdowsky however as shown discloses,
reconcile by the processor, one or more conflicts between the first compare report and the second compare report (¶13: “facilitating Change Impact Analysis (CIA) using modular program dependency graphs, …receiving, using a communication device, a source code for a software application and one or more changed lines corresponding to the source code from a user device… analyzing using a processing device, the source code to determine one or more modules within the source code, called as modules, that may include syntactic elements specific to a programming language that possess a well-defined calling interface, e.g. function, procedure, method, subroutine”; ¶42: “ the server computer may include a processing device configured for performing data processing tasks such as, for example, but not limited to, analyzing, identifying, determining, generating, transforming, calculating, computing, compressing, decompressing, encrypting, decrypting, scrambling, splitting, merging, interpolating, extrapolating, redacting, anonymizing, encoding and decoding”; ¶51: “allowing modifications to the software system under analysis to result in modifications to only the modules directly affected”; ¶63: “Change impact analysis (CIA) may be defined as “the activity of identifying what to modify to accomplish a change, and/or of identifying the potential consequences of a change”; ¶64: “Planned changes and low-level decisions may be rapidly modified”; ¶65: “update may be performed with a knowledge of atomic change types and changes in dynamic dispatch. For mPDGs, those of deleted methods may be removed, those of newly added methods may be built, and those of updated methods may be deleted and then reconstructed with new code”; Fig 2, ¶98: “processing device 204 may be configured for parsing the source code based on the determining of the one or more programming languages to identify the one or more modules associated with the source code”; Fig 3, Fig 7, ¶119: “the method 700 may include a step of combining, using the processing device, one or more mPDGs to create a comprehensive Program Dependency Graph (PDG). The comprehensive PDG may represent all data dependencies and control dependencies in the one or more modules in the source code of the software application; ¶120: “One or more changes in the source code may represent changes in one or multiple lines of code in the one or more modules of the source code. The one or more changes may be updates, corrections, or deletions to improve, add, correct, or remove one or more procedures, or parts thereof in the one or more modules of the source code”; ¶126: “the Parsed, language-identified source-code module data store 1006, in an instance, may be a data store organized on a per-file-version-basis, which may be configured for recording: identifiers of files; identifiers of file-versions; descriptors for the modules in each file; the language in which the module is written, as identified by a concrete parser; and a parsed representation of the syntactic structures present within each module, as defined by the language in which the module is written”; ¶131-¶138; ¶131: “the system 1000 may include a Versioning analyzer 1016… compare input source code file(s) against file versions stored in the file versioning data store 1002, using standard lexical comparison technique”; ¶135: “the system 1000 may include a Language-specific parsers 1018 Standard technology”; ¶136: “the system 1000 may include a Language classifier/module analyzer 1020”; Fig 12, ¶152: “system 1200 may include the Change impact analyzer 1212”)
Gnazdowsky teaches analyzing and correcting differences in source code for software application, determining one or more different modules corresponding to one or more procedures, their respective data dependencies and control dependencies for providing one or more features. Gnazdowsky further teaches a method/system for analyzing and modifying source code for a software application via Change Impact Analysis (CIA) including but not limited to allowing modifications to the software system under analysis to result in modifications to only the modules directly affected, and/or identifying the potential impact/consequences of a change. Rix and Gnazdowsky are directed to the same field of endeavor since they are related to comparing, analyzing, parsing data/information via program code in a computing environment. Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of applicant’s invention to combine the method/system for comparison/analysis of electronic documents of Rix with the techniques for analyzing source code/software, and facilitating change impact analysis as taught by Gnazdowsky since it reduces time for processing and modifying source code/modules while identifying the respective one or more impacted lines, interface, function, procedure, method, subroutine and/or updates to at least one data structure (mPDG) based on the one or more changed lines associated with the software application change(s) (Figs, 2, 7, 10, 12, ¶13, ¶14, ¶42, ¶51, ¶63-¶66, ¶98, ¶119, ¶120, ¶131-¶137).
With respect to claims 2, 10, 11, 18 and 19,
Rix and Gnazdowsky disclose all the above limitations, Rix further discloses,
wherein the first component and second component are at least one program, a code, an expression, a macro, an embedded documentation, a user documentation, a test plan, a training material, test data, a solution packaging and an installation (¶11: “The access of these documents may be in response to a user request for provision of a semantic differential report (e.g., a semantic diff) that indicates differences (e.g., textual differences) between the first and second documents. The machine generates first and second parse trees by parsing the first and second documents based on a grammar of the coding language... The machine generates first and second parse trees by parsing the first and second documents based on a grammar of the coding language. The resulting first parse tree includes a first group (e.g., plurality) of subtrees, and the resulting second parse tree includes a second group of subtrees”; ¶64: “the document parser 220 detects the coding language in which the first and second documents 410 and 420 are written. This may be performed by analyzing the first and second documents 410 and 420. In some example embodiments, the coding language is a programming language, and operation 911 is performed by detecting (e.g., by analyzing the first and second documents 410 and 420) the programming language in which the first and second documents 410 and 420 are written”)
With respect to claims 3, 26 and 27,
Rix and Gnazdowsky disclose all the above limitations, Rix further discloses,
wherein the programming language grammar is captured using a parser generator for reading, processing, executing or translating: structured text, code or freeform text (¶11: “The access of these documents may be in response to a user request for provision of a semantic differential report (e.g., a semantic diff) that indicates differences (e.g., textual differences) between the first and second documents. The machine generates first and second parse trees by parsing the first and second documents based on a grammar of the coding language... The machine generates first and second parse trees by parsing the first and second documents based on a grammar of the coding language. The resulting first parse tree includes a first group (e.g., plurality) of subtrees, and the resulting second parse tree includes a second group of subtrees”; ¶34: “the document parser 220 generates the first parse tree 430 based on (e.g., by parsing, with or without further processing) the first document 410, and the document parser 220 generates a second parse tree 440 based on (e.g., by parsing, with or without further processing) the second document 420. For example, the document parser 220 may parse the first and second documents 410 and 420 based on (e.g., in accordance with or otherwise using) the grammar 429 of the coding language that is common to both the first and second documents 410 and 420”; ¶64: “the document parser 220 detects the coding language in which the first and second documents 410 and 420 are written”; ¶65: the document parser 220 selects the grammar of the programming language based on the detected programming language. For example, a data repository (e.g., database 115, server machine 110, device 150, or device 130) may store a set of grammars for various coding languages (e.g., programming languages), and the document parser 220 may select the grammar therefrom, based on the detected coding language for the first and second documents 410 and 420”)
wherein the two-way grammar-aware compare tool comprises a parser generator configured to capture the programming language grammar using reading, processing, executing or translating structured text, code or freeform text (¶11: “The machine generates first and second parse trees by parsing the first and second documents based on a grammar of the coding language. The resulting first parse tree includes a first group (e.g., plurality) of subtrees, and the resulting second parse tree includes a second group of subtrees”; ¶34: “the document parser 220 generates the first parse tree 430 based on (e.g., by parsing, with or without further processing) the first document 410, and the document parser 220 generates a second parse tree 440 based on (e.g., by parsing, with or without further processing) the second document 420.”; ¶64: “the document parser 220 detects the coding language in which the first and second documents 410 and 420 are written. This may be performed by analyzing the first and second documents 410 and 420… the coding language is a programming language, and operation 911 is performed by detecting (e.g., by analyzing the first and second documents 410 and 420) the programming language in which the first and second documents 410 and 420 are written”; ¶65: the document parser 220 selects the grammar of the programming language based on the detected programming language. For example, a data repository (e.g., database 115, server machine 110, device 150, or device 130) may store a set of grammars for various coding languages (e.g., programming languages), and the document parser 220 may select the grammar therefrom, based on the detected coding language for the first and second documents 410 and 420”)
With respect to claims 4, 12 and 20,
Rix and Gnazdowsky disclose all of the above limitations, Gnazdowsky further discloses,
wherein the two-way grammar-aware compare tool tags and categorizes each change between the first component and the second component (Figs 8-10, ¶65: “disclosure provides a data structure (called as modular PDGs, or mPDGs) and one or more algorithms for building modular dependency graphs for a single language, for e.g. Java. The data structure and algorithms may also translate to other languages, such as Python, C++, and so on. The PDGs are called “modularized” in that the PDGs may capture intra-procedural data and control-dependencies only”; ¶66: “FIG. 8 is an exemplary representation of an mPDG 800 associated with a source code as disclosed in Appendix—D below. Further, FIG. 9 is an exemplary representation of an mPDG 900 associated with a source code as disclosed in Appendix—D below. In mPDGs (such as mPDG 800 and the mPDG 900), rectangles on top (such as node 802 and node 902 as shown in FIG. 8 and FIG. 9 respectively) may represent entry vertices of procedures, labeled with the method name; other rectangles (such as second child node 806 and second child node 906 as shown in FIG. 8 and FIG. 9 respectively) may represent statements. Ovals (such as first child node 804 and first child node 904 as shown in FIG. 8 and FIG. 9 respectively) may represent parameters, in which variable names may be labeled with “in” and “out”, representing in- (input) and out- (output) parameters respectively. Solid arrows (such as solid arrow 808 and solid arrow 908 as shown in FIG. 8 and FIG. 9 respectively) may represent control dependencies; dashed arrows (such as dashed arrow 810 and dashed arrow 910 as shown in FIG. 8 and FIG. 9 respectively) may represent data dependencies; ¶128: “Further, the system 1000 may include a Modular dependency graphs data store 1010… Nodes in the graph can possess annotations recording whether a node is “external” or “local” plus syntactic clues as to external references and the kind of technology in use; such annotations are created and used at later phases. Each module is marked as “done”, “new”, or “changed”. This data store is indexed to permit fast access to “new” and “changed” modules”; ¶128-¶136; ¶131: “the system 1000 may include a Versioning analyzer 1016. Further, the Versioning analyzer 1016 may compare input source code file(s) against file versions stored in the file versioning data store 1002, using standard lexical comparison techniques… explicitly deleted files may be handled identically to non-deleted files for later processing steps. Further, there may be three cases to consider. In one instance, a file may be presented without a version identifier. Further, in another instance, a file may be presented with a version identifier that may differ from existing ones for that file. Further, in another instance, a file may be presented with a version identifier that may be identical to one that may exist for a version of that file.”)
Rix and Gnazdowsky are directed to the same field of endeavor since they are related to comparing, analyzing, parsing data/information via program code in a computing environment. Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of applicant’s invention to combine the method/system for comparison/analysis of electronic documents of Rix with the techniques for analyzing source code/software, and facilitating change impact analysis as taught by Gnazdowsky since it reduces time for processing and modifying source code/modules while identifying the respective one or more impacted lines, interface, function, procedure, method, subroutine and/or updates to at least one data structure (mPDG) based on the one or more changed lines associated with the software application change(s) (Figs, 2, 7, 10, 12, ¶13, ¶14, ¶42, ¶51, ¶63-¶66, ¶98, ¶119, ¶120, ¶131-¶137).
With respect to claims 5, 13 and 21,
Rix and Gnazdowsky disclose all the above limitations, Gnazdowsky further discloses,
wherein the two-way grammar-aware compare tool uses at least one of an identifier, an alternate identifier, a heuristic matching rule, metadata for mapping property changes to a testing process; an internal component dependency, an external component dependency, and a mapping hint, to provide a report of one or more differences (¶71: “a retrospective analysis of a change history of sample open-source systems may be performed to measure effects of real, historic changes to those systems on the mPDGs. For instance, consider a sequence of versions for a system from version v1, v2, up to vn. For such a system, the difference between two adjacent versions j−1 and j may be Δvj. Accordingly, an mPDG monolithically built for vn should be identical to building an mPDG for v1 and updating it repeatedly up to vn. This property may be tested for a small subset of sample systems and identified errors may be corrected. Then, time and space costs for incrementally maintaining mPDGs across the sample systems may be calculated. Further, relationships between the size and extent of changes may be considered to check for possible categorizations that could be better leveraged to speed up maintenance”; ¶128: “system 1000 may include a Modular dependency graphs data store 1010. Further, the Modular dependency graphs data store 1010, in an instance, may be a data store organized on a per-module basis, recording: the identifier of the module; the identifier of the file and the modifier of the file-version in which the module resides; identifier of language and dialect; graph consisting of nodes representing key processing elements in the module (i.e., expressions in a typical language) and key data flowing through the module (this graph is the standard notion of a so-called program dependence graph). Nodes in the graph can possess annotations recording whether a node is “external” or “local” plus syntactic clues as to external references and the kind of technology in use; such annotations are created and used at later phases. Each module is marked as “done”, “new”, or “changed”. This data store is indexed to permit fast access to “new” and “changed” modules”; ¶143: “clues to target declarations referenced by external references in modules may be stored as annotations on the representations of those external references, within the modular dependency graphs data store 1010 for the pertinent file, file version, and module”; Fig 15, ¶168: “a modular dependency graphs data store 1504 may be leveraged to find declarations that may be exposed externally (using an external exposure analyzer 1510) via each communication technology references that may not correspond to declarations within a module but may be exposed externally via each communication technology. Further, such declarations and references may be annotated within the modular dependency graphs store 1504 as potential connection points with an indication of the technology mediating the potential interconnection… The module interconnections identifier 1508 may combine modular dependency graphs according to identified interconnections, to form a global dependency graph (that may be stored in a global dependency graph data store 1512) for an entire heterogeneous software system”; ¶169: “a change impact analyzer 1602 may derive portions of the global dependency graph that may be impacted by the seed changes… a result may be recorded in an impacted global dependency graph data store 1606. The result may be visualized, may be used programmatically to provide a list of impacted files and line numbers, and may highlight the impacted portions of the source code within a source code editor”)
Rix and Gnazdowsky are directed to the same field of endeavor since they are related to comparing, analyzing, parsing data/information via program code in a computing environment. Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of applicant’s invention to combine the method/system for comparison/analysis of electronic documents of Rix with the techniques for analyzing source code/software, and facilitating change impact analysis as taught by Gnazdowsky since allows for facilitating fast and maintainable change impact analysis through the generation of modularized program dependency graphs, including identification of communication technologies that may be used to interconnect modules whereby results may be visualized and recorded in an impacted global dependency graph data store to provide a list of impacted files and line numbers, and may highlight the impacted portions of the source code within a source code editor (¶71, ¶128, ¶143, ¶168, ¶169).
With respect to claims 6, 14 and 22,
Rix and Gnazdowsky disclose all the above limitations, Gnazdowsky further discloses,
wherein the two-way grammar-aware compare tool recognizes a business objective of one or more differences between the first component and the second component (¶44: “one or more steps of the method may be automatically initiated, maintained and/or terminated based on one or more predefined conditions. In an instance, the one or more predefined conditions may be based on one or more contextual variables. In general, the one or more contextual variables may represent a condition relevant to the performance of the one or more steps of the method”; ¶46; “the one or more predefined conditions may be automatically determined, using the processing device, based on historical data corresponding to performance of the one or more steps… machine learning on the historical data may determine a correlation between one or more contextual variables and performance of the one or more steps of the method. Accordingly, the one or more predefined conditions may be generated, using the processing device, based on the correlation”; ¶47: “one or more steps of the method may be performed in a distributed fashion across the plurality of devices in order to meet one or more objectives. For example, one objective may be to provide load balancing between two or more devices”; ¶63: “Change impact analysis (CIA) may be defined as “the activity of identifying what to modify to accomplish a change, and/or of identifying the potential consequences of a change”; ¶169: “FIG. 16 shows an exemplary embodiment of a system 1600 to facilitate fast and maintainable change impact analysis through the generation of modularized program dependency graphs, in accordance with some embodiments. Seed changes within a global dependency graph (that may be stored in the global dependency graph data store 1604) may be indicated by user annotation of global dependency graph, programmatic annotation derived from actual changes that may have occurred, or both. Further, a change impact analyzer 1602 may derive portions of the global dependency graph that may be impacted by the seed changes. Further, a result may be recorded in an impacted global dependency graph data store 1606. The result may be visualized, may be used programmatically to provide a list of impacted files and line numbers, and may highlight the impacted portions of the source code within a source code editor. In some embodiments, a user may be able to interact (e.g. through an interaction and filtering support 1608) with the one or more presentation means to alter a view or to temporarily or permanently eliminate impacted nodes from global dependency graph.”)
Rix and Gnazdowsky are directed to the same field of endeavor since they are related to comparing, analyzing, parsing data/information via program code in a computing environment. Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of applicant’s invention to combine the method/system for comparison/analysis of electronic documents of Rix with the techniques for analyzing source code/software, and facilitating change impact analysis as taught by Gnazdowsky since allows for analyzing and determining a correlation between one or more contextual variables and performance actions in order to meet one or more objectives (¶44-¶47, ¶63, ¶169)
With respect to claims 7, 15 and 23,
Rix and Gnazdowsky disclose all the above limitations, Rix further discloses,
wherein the two-way grammar-aware compare tool captures: a structure of a component, one or more properties of the component, one or more property data types of the component, a relationship between the one or more properties, a hierarchical nature of the component, and domain knowledge of how an author works to customize the component (¶18: “a “database” is a data storage resource and may store one or more data structures, for example, in the form of data that has been structured or otherwise arranged as a text file, a table, a spreadsheet, a relational database (e.g., an object-relational database), a triple store, a hierarchical data store, or any suitable combination thereof. Moreover, any two or more of the systems or machines illustrated in FIG. 1 may be combined into a single system or machine, and the functions described herein for any single system or machine may be subdivided among multiple systems or machines”; ¶63: “the request handler 210 accesses the first and second documents 410 and 420 to be compared”; ¶65: “the selection of the grammar is based on the coding language detected in operation 911. In example embodiments where the coding language is a programming language, the document parser 220 selects the grammar of the programming language based on the detected programming language. For example, a data repository (e.g., database 115, server machine 110, device 150, or device 130) may store a set of grammars for various coding languages (e.g., programming languages), and the document parser 220 may select the grammar therefrom, based on the detected coding language for the first and second documents 410 and 420”; ¶73: “one or more user preferences set by the user 132 of the device 130 are used as a basis for selection of the comparison procedure 510. Thus, in operation 954, the procedure selector 240 may access a user profile of the user 132 and use the user profile as a basis for selecting the comparison procedure 510. For example, the user 132 may cause the device 130 to store a user profile that includes one or more user preferences that have previously been set by the user 132, and such one or more user preferences may specify that the user 132 prefers that certain classifications of subtrees (e.g., comments, functions, and function calls) be bases (e.g., influences or triggers) for selecting a predetermined (e.g., user-selected) comparison procedure (e.g., comparison procedure 510) from the group of available comparison procedures 500”)
With respect to claim 25,
Rix and Gnazdowsky disclose all the above limitations, Gnazdowsky further discloses,
wherein the parser generator comprises Another Tool for Language Recognition (ANTLR) configured to generate the parser that can build and walk parse trees, including the respective object tree (¶136: “long with a representation of the syntactic elements in each module (standard technology such as abstract syntax trees), calculated via standard parser technology (ANTLR grammar, JavaCC grammar, etc… an output may consist of a set of modules, the language in which each module may be written, and a representation of the syntactic elements in each module, stored within the parsed, language-identified source-code module data store 1006 according to the file identifier and version identifier of the file version being processed”; ¶167: “The system may include a language classifier/module identifier, which may be responsible for subdividing a set of files into “modules”, the language of each of which may be known, along with a representation of one or more syntactic elements in each module such as through abstract syntax trees, that may be calculated via standard parser technology (such as ANTLR grammar, JavaCC grammar, etc.). The one or more modules may be contiguous within a single file, contiguous within a portion of a single file, or contain an enclave written in a different language”; claim 14: “wherein the mPDG of the one or more mPDGs is a representation of the module, wherein the representation comprises a tree structure comprising a root node and one or more child nodes, wherein the root node is associated with a name of the module, wherein the root node is connected to the one or more child nodes through one or more branches, wherein each child node of the one or more child nodes is associated with at least one program statement of the module”)
Gnazdowsky teaches that the system may include a language classifier/module identifier, which may be responsible for subdividing a set of files into “modules”, the language of each of which may be known, along with a representation of one or more syntactic elements in each module such as through abstract syntax trees, that may be calculated via standard parser technology (such as ANTLR grammar, JavaCC grammar, etc.) Rix and Gnazdowsky are directed to the same field of endeavor since they are related to comparing, analyzing, parsing data/information via program code in a computing environment. Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of applicant’s invention to combine the techniques for facilitating change impact analysis as taught by Gnazdowsky since the language classifier/module analyzer, ANTLR parser technology allows for the representation of syntactic elements in each module (such as abstract syntax trees) whereby the one or more modules may be contiguous within a single file, contiguous within a portion of a single file, or contain an enclave written in a different language (¶136, ¶167, ¶168).
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure.
WU, (CN 112015396 B), “Method, Device, Equipment And Storage Medium For Generating Intelligent Contract Code Based On DSL”, relating to analyzing obtained language text according to the pre-constructed analysis rule to obtain the asset data using ANTLR tool to generate parser Lexer and Parser, using the parser Lexer and Parser to parse the language text according to the pre-constructed analysis rule to obtain an abstract syntax tree.
YU, (WO 2020/021047) “Processing Method using Binary Intermediate Representations”, relating to a computer-implemented method which uses binary intermediate representations to speed up the parsing/loading process whilst preserving expressive structures such as hierarchical abstract syntax trees (ASTs).
Dirac et al., 2021/0374610 A1, “Efficient Duplicate Detection for Machine Learning Data Sets”, relating to using a ANTLR grammar tool for generating a parser that can build an abstract syntax tree from a text version of a recipe with different data sets on different resource sets as needed.
Tonkin et al., US Patent Application Publication No US 2009/0064091 A1, “Code Transformation”, relating to methods, software and computer systems for the creation of a tree comprised of nodes, and for the building of a parser to be used in the automated transformation of code.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to KIMBERLY L EVANS whose telephone number is (571)270-3929. The examiner can normally be reached M-F 730a-5p. Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicants are 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, Lynda Jasmin can be reached at (571)272-6782. 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.
/KIMBERLY L EVANS/Examiner, Art Unit 3629
/LYNDA JASMIN/Supervisory Patent Examiner, Art Unit 3629