DETAILED ACTION
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
Claims 1, 3, 5-8, 10, 12-15, 17, 19 and 20 have been submitted for examination and are pending further prosecution by the United States Patent & Trademark Office.
Claim Objections
The following claims are objected to because of antecedence issues. It is suggested Applicants amend these claims as follows:
Claim 1
-- determine, based at least in part upon the particular purpose of the particular data object, a counterpart data object to the particular data object in the mapping table, wherein the counterpart data object is used for the particular purpose in the target programming language; --
-- in response to determining that the second data object is among the [[set]] plurality of keywords, maintain the second data object in the second piece of code. --
Claim 6
-- The system of Claim 1, wherein determining, based at least in part upon the particular purpose of the particular data object, the counterpart data object to the particular data object in the mapping table comprises: --
Claim 8
-- determining, based at least in part upon the particular purpose of the particular data object, a counterpart data object to the particular data object in the mapping table, wherein the counterpart data object is used for the particular purpose in the target programming language; --
-- in response to determining that the second data object is among the [[set]] plurality of keywords, maintaining the second data object in the second piece of code. --
Claim 13
-- The method of Claim 8, wherein determining, based at least in part upon the particular purpose of the particular data object, the counterpart data object to the particular data object in the mapping table comprises: --
Claim 15
-- determine, based at least in part upon the particular purpose of the particular data object, a counterpart data object to the particular data object in the mapping table, wherein the counterpart data object is used for the particular purpose in the target programming language; --
-- in response to determining that the second data object is among the [[set]] plurality of keywords, maintain the second data object in the second piece of code. --
Claim 20
-- The non-transitory computer-readable medium of Claim 15, wherein determining, based at least in part upon the particular purpose of the particular data object, the counterpart data object to the particular data object in the mapping table comprises: --
Claims 3, 5-7, 10, 12-14, 17, 19 and 20 are additionally objected to due to their dependence on objected parent claim(s).
Appropriate correction is required.
Double Patenting
The nonstatutory double patenting rejection is based on a judicially created doctrine grounded in public policy (a policy reflected in the statute) so as to prevent the unjustified or improper timewise extension of the “right to exclude” granted by a patent and to prevent possible harassment by multiple assignees. A nonstatutory double patenting rejection is appropriate where the conflicting claims are not identical, but at least one examined application claim is not patentably distinct from the reference claim(s) because the examined application claim is either anticipated by, or would have been obvious over, the reference claim(s). See, e.g., In re Berg, 140 F.3d 1428, 46 USPQ2d 1226 (Fed. Cir. 1998); In re Goodman, 11 F.3d 1046, 29 USPQ2d 2010 (Fed. Cir. 1993); In re Longi, 759 F.2d 887, 225 USPQ 645 (Fed. Cir. 1985); In re Van Ornum, 686 F.2d 937, 214 USPQ 761 (CCPA 1982); In re Vogel, 422 F.2d 438, 164 USPQ 619 (CCPA 1970); In re Thorington, 418 F.2d 528, 163 USPQ 644 (CCPA 1969).
A timely filed terminal disclaimer in compliance with 37 CFR 1.321(c) or 1.321(d) may be used to overcome an actual or provisional rejection based on nonstatutory double patenting provided the reference application or patent either is shown to be commonly owned with the examined application, or claims an invention made as a result of activities undertaken within the scope of a joint research agreement. See MPEP § 717.02 for applications subject to examination under the first inventor to file provisions of the AIA as explained in MPEP § 2159. See MPEP § 2146 et seq. for applications not subject to examination under the first inventor to file provisions of the AIA . A terminal disclaimer must be signed in compliance with 37 CFR 1.321(b).
The filing of a terminal disclaimer by itself is not a complete reply to a nonstatutory double patenting (NSDP) rejection. A complete reply requires that the terminal disclaimer be accompanied by a reply requesting reconsideration of the prior Office action. Even where the NSDP rejection is provisional the reply must be complete. See MPEP § 804, subsection I.B.1. For a reply to a non-final Office action, see 37 CFR 1.111(a). For a reply to final Office action, see 37 CFR 1.113(c). A request for reconsideration while not provided for in 37 CFR 1.113(c) may be filed after final for consideration. See MPEP §§ 706.07(e) and 714.13.
The USPTO Internet website contains terminal disclaimer forms which may be used. Please visit www.uspto.gov/patent/patents-forms. The actual filing date of the application in which the form is filed determines what form (e.g., PTO/SB/25, PTO/SB/26, PTO/AIA /25, or PTO/AIA /26) should be used. A web-based eTerminal Disclaimer may be filled out completely online using web-screens. An eTerminal Disclaimer that meets all requirements is auto-processed and approved immediately upon submission. For more information about eTerminal Disclaimers, refer to www.uspto.gov/patents/apply/applying-online/eterminal-disclaimer.
Claims 1, 3, 5-8, 10, 12-15, 17, 19 and 20 are rejected on the ground of nonstatutory anticipation-type double patenting as being unpatentable over claims 1-17 of US 12153908 B2. Although the claims at issue are not identical, they are not patentably distinct from each other because claims 1, 3, 5-8, 10, 12-15, 17, 19 and 20 under examination are anticipated, respectively, by claims 1-17 of US 12153908 B2 as shown in the comparison table below where bolding is used to highlight equivalent limitations and unbolded portions signify additional limitations in US 12153908 B2.
Instant Application 18/910786
US 12153908 B2
1. A system for updating source code from an original programming language to a target programming language, comprising:
a memory configured to store:
a first piece of code written in an original programming language, wherein the first piece of code is programmed to perform a particular task;
a set of particular keywords that are unique to the original programming language and are not used in other programming languages; and
a mapping table that comprises the set of particular keywords and a set of counterpart keywords, wherein each of the set of particular keywords is mapped to a counterpart keyword from among the set of counterpart keywords, wherein the set of counterpart keywords is unique to the target programming language; and
a processor operably coupled to the memory, and configured to:
identify a set of data objects from the first piece of code, the set of data objects comprising at least one of a name of a function, a type of the function, an input parameter to the function, a type of the input parameter, an output parameter of the function, or a type of the output parameter;
create a first knowledge graph that represents a relationship among the set of data objects, wherein the first knowledge graph is created based at least in part upon a position of each data object from among the set of data objects with respect to positions of other data objects in the first piece of code;
identify a particular data object, from among the set of data objects, that is unique to the original programming language in response to determining that the particular data object is among the set of particular keywords, wherein the particular data object is used for a particular purpose in the original programming language;
determine, based at least in part upon the determined purpose of the particular data object, a counterpart data object to the particular data object in the mapping table, wherein the counterpart data object is used for the particular purpose in the target programming language;
create, based at least in part upon the first knowledge graph, a second piece of code in the target programming language by replacing the particular data object with the counterpart data object and maintaining the rest of data objects from the first piece of code;
determine that the second piece of code is configured to perform the particular task;
in response to determining that the second piece of code is configured to perform the particular task, execute the second piece of code;
access a domain-specific dataset comprising a plurality of keywords associated with a specific domain, wherein the specific domain comprises web application development;
determine that a second data object, from among the set of data objects, is among the plurality of keywords; and
in response to determining that the second data object is among the set of particular keywords, maintain the second data object in the second piece of code.
1. A system for updating source code from an original programming language to a target programming language, comprising:
a memory configured to store:
a first piece of code written in an original programming language, wherein the first piece of code is programmed to perform a particular task;
a set of particular keywords that are unique to the original programming language and are not used in other programming languages; and
a mapping table that comprises the set of particular keywords and a set of counterpart keywords, wherein each of the set of particular keywords is mapped to a counterpart keyword from among the set of counterpart keywords, wherein the set of counterpart keywords is unique to the target programming language; and
a processor operably coupled to the memory, and configured to:
identify a set of data objects from the first piece of code, the set of data objects comprising at least one of a name of a function, a type of the function, an input parameter to the function, a type of the input parameter, an output parameter of the function, or a type of the output parameter;
create a first knowledge graph that represents a relationship among the set of data objects, wherein the first knowledge graph is created based at least in part upon a position of each data object from among the set of data objects with respect to positions of other data objects in the first piece of code;
identify a particular data object, from among the set of data objects, that is unique to the original programming language in response to determining that the particular data object is among the set of particular keywords, wherein the particular data object is used for a particular purpose in the original programming language;
determine, based at least in part upon the particular purpose of the particular data object, a counterpart data object to the particular data object in the mapping table, wherein the counterpart data object is used for the particular purpose in the target programming language;
create, based at least in part upon the first knowledge graph, a second piece of code in the target programming language by replacing the particular data object with the counterpart data object and maintaining the rest of data objects from the first piece of code;
determine that the second piece of code is configured to perform the particular task;
in response to determining that the second piece of code is configured to perform the particular task, execute the second piece of code;
identify a second set of data objects from the second piece of code;
determine a relationship among the second set of data objects based at least in part upon a position of each data object in the second piece of code with respect to positions of other data objects from among the second set of data objects; and
create a second knowledge graph that represents the relationship among the second set of data objects; and
wherein determining that the second piece of code is configured to perform the particular task is based at least in part upon the first and second knowledge graphs.
3. The system of claim 1, wherein the processor is further configured to:
access a domain-specific dataset comprising a plurality of keywords associated with a specific domain, wherein the specific domain comprises web application development;
determine that a second data object, from among the set of data objects, is among the plurality of keywords; and
in response to determining that the second data object is among the set of particular keywords, maintain the second data object in the second piece of code.
3. The system of Claim 1, wherein determining that the second piece of code is configured to perform the particular task is based at least in part upon the first and second knowledge graphs and comprises:
extracting a first set of features from the first knowledge graph, wherein the first set of features is represented by a first feature vector, wherein the first set of features indicates a first task flow associated with the first piece of code;
extracting a second set of features from the second knowledge graph, wherein the second set of features is represented by a second feature vector, wherein the second set of features indicates a second task flow associated with the second piece of code;
comparing the first feature vector with the second feature vector;
determining a distance between the first feature vector and the second feature vector;
comparing the determined distance between the first feature vector and the second feature vector with a threshold distance;
in response to determining that the determined distance between the first feature vector and the second feature vector is less than the threshold distance:
determining that the first task flow corresponds to the second task flow; and
determining that the second piece of code is configured to perform the particular task.
2. The system of claim 1, wherein determining that the second piece of code is configured to perform the particular task based at least in part upon the first and second knowledge graphs comprises:
extracting a first set of features from the first knowledge graph, wherein the first set of features is represented by a first feature vector, wherein the first set of features indicates a first task flow associated with the first piece of code;
extracting a second set of features from the second knowledge graph, wherein the second set of features is represented by a second feature vector, wherein the second set of features indicates a second task flow associated with the second piece of code;
comparing the first feature vector with the second feature vector;
determining a distance between the first feature vector and the second feature vector;
comparing the determined distance between the first feature vector and the second feature vector with a threshold distance;
in response to determining that the determined distance between the first feature vector and the second feature vector is less than the threshold distance:
determining that the first task flow corresponds to the second task flow; and
determining that the second piece of code is configured to perform the particular task.
5. The system of Claim 1, wherein identifying the particular data object, from among the set of data objects, that is unique to the original programming language in response to determining that the particular data object is among the set of particular keywords comprises:
extracting a third set of features from the particular data object, wherein the third set of features indicates an interpretation of the particular data object, wherein the third set of features is represented by a third feature vector;
extracting a fourth set of features from a third keyword from among the set of particular keywords, wherein the fourth set of features indicates an interpretation of the third keyword, wherein the fourth set of features is represented by a fourth feature vector;
comparing the third feature vector and the fourth feature vector;
determining a distance between the third feature vector and the fourth feature vector;
comparing the determined distance between the third feature vector and the fourth feature vector with a second threshold distance; and
determining that the determined distance is less than the second threshold distance.
4. The system of claim 1, wherein identifying the particular data object, from among the set of data objects, that is unique to the original programming language in response to determining that the particular data object is among the set of particular keywords comprises:
extracting a third set of features from the particular data object, wherein the third set of features indicates an interpretation of the particular data object, wherein the third set of features is represented by a third feature vector;
extracting a fourth set of features from a third keyword from among the set of particular keywords, wherein the fourth set of features indicates an interpretation of the third keyword, wherein the fourth set of features is represented by a fourth feature vector;
comparing the third feature vector and the fourth feature vector;
determining a distance between the third feature vector and the fourth feature vector;
comparing the determined distance between the third feature vector and the fourth feature vector with a second threshold distance; and
determining that the determined distance is less than the second threshold distance.
6. The system of Claim 1, wherein determining, based at least in part upon the determined purpose of the particular data object, the counterpart data object to the particular data object in the mapping table comprises:
extracting a fifth set of features from the particular data object, wherein the fifth set of features indicates a first purpose of the particular data object, wherein the fifth set of features is represented by a fifth feature vector;
extracting a sixth set of features from the counterpart data object, wherein the sixth set of features indicates a second purpose of the counterpart data object, wherein the sixth set of features is represented by a sixth feature vector;
comparing the fifth feature vector and the sixth feature vector;
determining a third distance between the fifth feature vector and the sixth feature vector;
comparing the determined distance between the fifth feature vector and the sixth feature vector with a third threshold distance; and
determining that the determined distance is less than the third threshold distance.
5. The system of claim 1, wherein determining, based at least in part upon the determined purpose of the particular data object, the counterpart data object to the particular data object in the mapping table comprises:
extracting a fifth set of features from the particular data object, wherein the fifth set of features indicates a first purpose of the particular data object, wherein the fifth set of features is represented by a fifth feature vector;
extracting a sixth set of features from the counterpart data object, wherein the sixth set of features indicates a second purpose of the counterpart data object, wherein the sixth set of features is represented by a sixth feature vector;
comparing the fifth feature vector and the sixth feature vector;
determining a third distance between the fifth feature vector and the sixth feature vector;
comparing the determined distance between the fifth feature vector and the sixth feature vector with a third threshold distance; and
determining that the determined distance is less than the third threshold distance.
7. The system of Claim 1, wherein the particular purpose comprises defining the type of the function, defining the type of the input parameter, or defining the type of the output parameter.
6. The system of claim 1, wherein the particular purpose comprises defining the type of the function, defining the type of the input parameter, or defining the type of the output parameter.
8. A method for updating source code from an original programming language to a target programming language, comprising:
storing, in a memory:
a first piece of code written in an original programming language, wherein the first piece of code is programmed to perform a particular task;
a set of particular keywords that are unique to the original programming language and are not used in other programming languages; and
a mapping table that comprises the set of particular keywords and a set of counterpart keywords, wherein each of the set of particular keywords is mapped to a counterpart keyword from among the set of counterpart keywords, wherein the set of counterpart keywords is unique to the target programming language;
identifying a set of data objects from the first piece of code, the set of data objects comprising at least one of a name of a function, a type of the function, an input parameter to the function, a type of the input parameter, an output parameter of the function, or a type of the output parameter;
creating a first knowledge graph that represents a relationship among the set of data objects, wherein the first knowledge graph is created based at least in part upon a position of each data object from among the set of data objects with respect to positions of other data objects in the first piece of code;
identifying a particular data object, from among the set of data objects, that is unique to the original programming language in response to determining that the particular data object is among the set of particular keywords, wherein the particular data object is used for a particular purpose in the original programming language;
determining, based at least in part upon the determined purpose of the particular data object, a counterpart data object to the particular data object in the mapping table, wherein the counterpart data object is used for the particular purpose in the target programming language;
creating, based at least in part upon the first knowledge graph, a second piece of code in the target programming language by replacing the particular data object with the counterpart data object and maintaining the rest of data objects from the first piece of code;
determining that the second piece of code is configured to perform the particular task;
in response to determining that the second piece of code is configured to perform the particular task, executing the second piece of code;
accessing a domain-specific dataset comprising a plurality of keywords associated with a specific domain, wherein the specific domain comprises web application development;
determining that a second data object, from among the set of data objects, is among the plurality of keywords; and
in response to determining that the second data object is among the set of particular keywords, maintaining the second data object in the second piece of code.
7. A method for updating source code from an original programming language to a target programming language, comprising:
storing, in a memory,
a first piece of code written in an original programming language, wherein the first piece of code is programmed to perform a particular task;
a set of particular keywords that are unique to the original programming language and are not used in other programming languages; and
a mapping table that comprises the set of particular keywords and a set of counterpart keywords, wherein each of the set of particular keywords is mapped to a counterpart keyword from among the set of counterpart keywords, wherein the set of counterpart keywords is unique to the target programming language;
identifying a set of data objects from the first piece of code, the set of data objects comprising at least one of a name of a function, a type of the function, an input parameter to the function, a type of the input parameter, an output parameter of the function, or a type of the output parameter;
creating a first knowledge graph that represents a relationship among the set of data objects, wherein the first knowledge graph is created based at least in part upon a position of each data object from among the set of data objects with respect to positions of other data objects in the first piece of code;
identifying a particular data object, from among the set of data objects, that is unique to the original programming language in response to determining that the particular data object is among the set of particular keywords, wherein the particular data object is used for a particular purpose in the original programming language;
determining, based at least in part upon the particular purpose of the particular data object, a counterpart data object to the particular data object in the mapping table, wherein the counterpart data object is used for the particular purpose in the target programming language;
creating, based at least in part upon the first knowledge graph, a second piece of code in the target programming language by replacing the particular data object with the counterpart data object and maintaining the rest of data objects from the first piece of code;
determining that the second piece of code is configured to perform the particular task;
in response to determining that the second piece of code is configured to perform the particular task, executing the second piece of code;
identifying a second set of data objects from the second piece of code;
determining a relationship among the second set of data objects based at least in part upon a position of each data object in the second piece of code with respect to positions of other data objects from among the second set of data objects; and
creating a second knowledge graph that represents the relationship among the second set of data objects; and
wherein determining that the second piece of code is configured to perform the particular task is based at least in part upon the first and second knowledge graphs.
9. The method of claim 7, further comprising:
accessing a domain-specific dataset comprising a plurality of keywords associated with a specific domain, wherein the specific domain comprises web application development;
determining that a second data object, from among the set of data objects, is among the plurality of keywords; and
in response to determining that the second data object is among the set of particular keywords, maintaining the second data object in the second piece of code.
10. The method of Claim 8, wherein determining that the second piece of code is configured to perform the particular task is based at least in part upon the first and second knowledge graphs and comprises:
extracting a first set of features from the first knowledge graph, wherein the first set of features is represented by a first feature vector, wherein the first set of features indicates a first task flow associated with the first piece of code;
extracting a second set of features from the second knowledge graph, wherein the second set of features is represented by a second feature vector, wherein the second set of features indicates a second task flow associated with the second piece of code;
comparing the first feature vector with the second feature vector;
determining a distance between the first feature vector and the second feature vector;
comparing the determined distance between the first feature vector and the second feature vector with a threshold distance;
in response to determining that the determined distance between the first feature vector and the second feature vector is less than the threshold distance:
determining that the first task flow corresponds to the second task flow; and
determining that the second piece of code is configured to perform the particular task.
8. The method of claim 7, wherein determining that the second piece of code is configured to perform the particular task based at least in part upon the first and second knowledge graphs comprises:
extracting a first set of features from the first knowledge graph, wherein the first set of features is represented by a first feature vector, wherein the first set of features indicates a first task flow associated with the first piece of code;
extracting a second set of features from the second knowledge graph, wherein the second set of features is represented by a second feature vector, wherein the second set of features indicates a second task flow associated with the second piece of code; comparing the first feature vector with the second feature vector;
determining a distance between the first feature vector and the second feature vector;
comparing the determined distance between the first feature vector and the second feature vector with a threshold distance;
in response to determining that the determined distance between the first feature vector and the second feature vector is less than the threshold distance:
determining that the first task flow corresponds to the second task flow; and
determining that the second piece of code is configured to perform the particular task.
12. The method of Claim 8, wherein identifying the particular data object, from among the set of data objects, that is unique to the original programming language in response to determining that the particular data object is among the set of particular keywords comprises:
extracting a third set of features from the particular data object, wherein the third set of features indicates an interpretation of the particular data object, wherein the third set of features is represented by a third feature vector;
extracting a fourth set of features from a third keyword from among the set of particular keywords, wherein the fourth set of features indicates an interpretation of the third keyword, wherein the fourth set of features is represented by a fourth feature vector;
comparing the third feature vector and the fourth feature vector;
determining a distance between the third feature vector and the fourth feature vector;
comparing the determined distance between the third feature vector and the fourth feature vector with a second threshold distance; and
determining that the determined distance is less than the second threshold distance.
10. The method of claim 7, wherein identifying the particular data object, from among the set of data objects, that is unique to the original programming language in response to determining that the particular data object is among the set of particular keywords comprises:
extracting a third set of features from the particular data object, wherein the third set of features indicates an interpretation of the particular data object, wherein the third set of features is represented by a third feature vector;
extracting a fourth set of features from a third keyword from among the set of particular keywords, wherein the fourth set of features indicates an interpretation of the third keyword, wherein the fourth set of features is represented by a fourth feature vector;
comparing the third feature vector and the fourth feature vector;
determining a distance between the third feature vector and the fourth feature vector;
comparing the determined distance between the third feature vector and the fourth feature vector with a second threshold distance; and
determining that the determined distance is less than the second threshold distance.
13. The method of Claim 8, wherein determining, based at least in part upon the determined purpose of the particular data object, the counterpart data object to the particular data object in the mapping table comprises:
extracting a fifth set of features from the particular data object, wherein the fifth set of features indicates a first purpose of the particular data object, wherein the fifth set of features is represented by a fifth feature vector;
extracting a sixth set of features from the counterpart data object, wherein the sixth set of features indicates a second purpose of the counterpart data object, wherein the sixth set of features is represented by a sixth feature vector;
comparing the fifth feature vector and the sixth feature vector;
determining a third distance between the fifth feature vector and the sixth feature vector;
comparing the determined distance between the fifth feature vector and the sixth feature vector with a third threshold distance; and
determining that the determined distance is less than the third threshold distance.
11. The method of claim 7, wherein determining, based at least in part upon the determined purpose of the particular data object, the counterpart data object to the particular data object in the mapping table comprises:
extracting a fifth set of features from the particular data object, wherein the fifth set of features indicates a first purpose of the particular data object, wherein the fifth set of features is represented by a fifth feature vector;
extracting a sixth set of features from the counterpart data object, wherein the sixth set of features indicates a second purpose of the counterpart data object, wherein the sixth set of features is represented by a sixth feature vector;
comparing the fifth feature vector and the sixth feature vector;
determining a third distance between the fifth feature vector and the sixth feature vector;
comparing the determined distance between the fifth feature vector and the sixth feature vector with a third threshold distance; and
determining that the determined distance is less than the third threshold distance.
14. The method of Claim 8, wherein the particular purpose comprises defining the type of the function, defining the type of the input parameter, or defining the type of the output parameter.
12. The method of claim 7, wherein the particular purpose comprises defining the type of the function, defining the type of the input parameter, or defining the type of the output parameter.
15. A non-transitory computer-readable medium storing instructions that when executed by a processor cause the processor to:
store, in a memory:
a first piece of code written in an original programming language, wherein the first piece of code is programmed to perform a particular task;
a set of particular keywords that are unique to the original programming language and are not used in other programming languages; and
a mapping table that comprises the set of particular keywords and a set of counterpart keywords, wherein each of the set of particular keywords is mapped to a counterpart keyword from among the set of counterpart keywords, wherein the set of counterpart keywords is unique to a target programming language;
identify a set of data objects from the first piece of code, the set of data objects comprising at least one of a name of a function, a type of the function, an input parameter to the function, a type of the input parameter, an output parameter of the function, or a type of the output parameter;
create a first knowledge graph that represents a relationship among the set of data objects, wherein the first knowledge graph is created based at least in part upon a position of each data object from among the set of data objects with respect to positions of other data objects in the first piece of code;
identify a particular data object, from among the set of data objects, that is unique to the original programming language in response to determining that the particular data object is among the set of particular keywords, wherein the particular data object is used for a particular purpose in the original programming language;
determine, based at least in part upon the determined purpose of the particular data object, a counterpart data object to the particular data object in the mapping table, wherein the counterpart data object is used for the particular purpose in the target programming language;
create, based at least in part upon the first knowledge graph, a second piece of code in the target programming language by replacing the particular data object with the counterpart data object and maintaining the rest of data objects from the first piece of code;
determine that the second piece of code is configured to perform the particular task;
in response to determining that the second piece of code is configured to perform the particular task, execute the second piece of code;
access a domain-specific dataset comprising a plurality of keywords associated with a specific domain, wherein the specific domain comprises web application development;
determine that a second data object, from among the set of data objects, is among the plurality of keywords; and
in response to determining that the second data object is among the set of particular keywords, maintain the second data object in the second piece of code.
13. A non-transitory computer-readable medium storing instructions that when executed by a processor cause the processor to:
store, in a memory,
a first piece of code written in an original programming language, wherein the first piece of code is programmed to perform a particular task;
a set of particular keywords that are unique to the original programming language and are not used in other programming languages; and
a mapping table that comprises the set of particular keywords and a set of counterpart keywords, wherein each of the set of particular keywords is mapped to a counterpart keyword from among the set of counterpart keywords, wherein the set of counterpart keywords is unique to a target programming language;
identify a set of data objects from the first piece of code, the set of data objects comprising at least one of a name of a function, a type of the function, an input parameter to the function, a type of the input parameter, an output parameter of the function, or a type of the output parameter;
create a first knowledge graph that represents a relationship among the set of data objects, wherein the first knowledge graph is created based at least in part upon a position of each data object from among the set of data objects with respect to positions of other data objects in the first piece of code;
identify a particular data object, from among the set of data objects, that is unique to the original programming language in response to determining that the particular data object is among the set of particular keywords, wherein the particular data object is used for a particular purpose in the original programming language;
determine, based at least in part upon the particular purpose of the particular data object, a counterpart data object to the particular data object in the mapping table, wherein the counterpart data object is used for the particular purpose in the target programming language;
create, based at least in part upon the first knowledge graph, a second piece of code in the target programming language by replacing the particular data object with the counterpart data object and maintaining the rest of data objects from the first piece of code;
determine that the second piece of code is configured to perform the particular task;
in response to determining that the second piece of code is configured to perform the particular task, execute the second piece of code;
identify a second set of data objects from the second piece of code;
determine a relationship among the second set of data objects based at least in part upon a position of each data object in the second piece of code with respect to positions of other data objects from among the second set of data objects; and
create a second knowledge graph that represents the relationship among the second set of data objects; and
wherein determining that the second piece of code is configured to perform the particular task is based at least in part upon the first and second knowledge graphs.
15. The non-transitory computer-readable medium of claim 13, wherein the instructions further cause the processor to:
access a domain-specific dataset comprising a plurality of keywords associated with a specific domain, wherein the specific domain comprises web application development;
determine that a second data object, from among the set of data objects, is among the plurality of keywords; and
in response to determining that the second data object is among the set of particular keywords, maintain the second data object in the second piece of code.
17. The non-transitory computer-readable medium of Claim 15, wherein determining that the second piece of code is configured to perform the particular task is based at least in part upon the first and second knowledge graphs and comprises:
extracting a first set of features from the first knowledge graph, wherein the first set of features is represented by a first feature vector, wherein the first set of features indicates a first task flow associated with the first piece of code;
extracting a second set of features from the second knowledge graph, wherein the second set of features is represented by a second feature vector, wherein the second set of features indicates a second task flow associated with the second piece of code;
comparing the first feature vector with the second feature vector;
determining a distance between the first feature vector and the second feature vector;
comparing the determined distance between the first feature vector and the second feature vector with a threshold distance;
in response to determining that the determined distance between the first feature vector and the second feature vector is less than the threshold distance:
determining that the first task flow corresponds to the second task flow; and
determining that the second piece of code is configured to perform the particular task.
14. The non-transitory computer-readable medium of claim 13, wherein determining that the second piece of code is configured to perform the particular task based at least in part upon the first and second knowledge graphs comprises:
extracting a first set of features from the first knowledge graph, wherein the first set of features is represented by a first feature vector, wherein the first set of features indicates a first task flow associated with the first piece of code;
extracting a second set of features from the second knowledge graph, wherein the second set of features is represented by a second feature vector, wherein the second set of features indicates a second task flow associated with the second piece of code;
comparing the first feature vector with the second feature vector;
determining a distance between the first feature vector and the second feature vector;
comparing the determined distance between the first feature vector and the second feature vector with a threshold distance;
in response to determining that the determined distance between the first feature vector and the second feature vector is less than the threshold distance:
determining that the first task flow corresponds to the second task flow; and
determining that the second piece of code is configured to perform the particular task.
19. The non-transitory computer-readable medium of Claim 15, wherein identifying the particular data object, from among the set of data objects, that is unique to the original programming language in response to determining that the particular data object is among the set of particular keywords comprises:
extracting a third set of features from the particular data object, wherein the third set of features indicates an interpretation of the particular data object, wherein the third set of features is represented by a third feature vector;
extracting a fourth set of features from a third keyword from among the set of particular keywords, wherein the fourth set of features indicates an interpretation of the third keyword, wherein the fourth set of features is represented by a fourth feature vector;
comparing the third feature vector and the fourth feature vector;
determining a distance between the third feature vector and the fourth feature vector;
comparing the determined distance between the third feature vector and the fourth feature vector with a second threshold distance; and
determining that the determined distance is less than the second threshold distance.
16. The non-transitory computer-readable medium of claim 13, wherein identifying the particular data object, from among the set of data objects, that is unique to the original programming language in response to determining that the particular data object is among the set of particular keywords comprises:
extracting a third set of features from the particular data object, wherein the third set of features indicates an interpretation of the particular data object, wherein the third set of features is represented by a third feature vector;
extracting a fourth set of features from a third keyword from among the set of particular keywords, wherein the fourth set of features indicates an interpretation of the third keyword, wherein the fourth set of features is represented by a fourth feature vector;
comparing the third feature vector and the fourth feature vector;
determining a distance between the third feature vector and the fourth feature vector;
comparing the determined distance between the third feature vector and the fourth feature vector with a second threshold distance; and
determining that the determined distance is less than the second threshold distance.
20. The non-transitory computer-readable medium of Claim 15, wherein determining, based at least in part upon the determined purpose of the particular data object, the counterpart data object to the particular data object in the mapping table comprises:
extracting a fifth set of features from the particular data object, wherein the fifth set of features indicates a first purpose of the particular data object, wherein the fifth set of features is represented by a fifth feature vector;
extracting a sixth set of features from the counterpart data object, wherein the sixth set of features indicates a second purpose of the counterpart data object, wherein the sixth set of features is represented by a sixth feature vector;
comparing the fifth feature vector and the sixth feature vector;
determining a third distance between the fifth feature vector and the sixth feature vector;
comparing the determined distance between the fifth feature vector and the sixth feature vector with a third threshold distance; and
determining that the determined distance is less than the third threshold distance.
17. The non-transitory computer-readable medium of claim 13, wherein determining, based at least in part upon the determined purpose of the particular data object, the counterpart data object to the particular data object in the mapping table comprises:
extracting a fifth set of features from the particular data object, wherein the fifth set of features indicates a first purpose of the particular data object, wherein the fifth set of features is represented by a fifth feature vector;
extracting a sixth set of features from the counterpart data object, wherein the sixth set of features indicates a second purpose of the counterpart data object, wherein the sixth set of features is represented by a sixth feature vector;
comparing the fifth feature vector and the sixth feature vector;
determining a third distance between the fifth feature vector and the sixth feature vector;
comparing the determined distance between the fifth feature vector and the sixth feature vector with a third threshold distance; and
determining that the determined distance is less than the third threshold distance.
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure. The NPL document "Automatic inference of Java-to-swift translation rules for porting mobile applications" discuses j2sInferer, a tool for automating the translation of mobile apps from Java to Swift.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to GEOFFREY R ST LEGER whose telephone number is (571)270-7720. The examiner can normally be reached M-F (IFP) ~9:00-5:00 pm.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Hyung S Sough can be reached at 571-272-6799. 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.
/GEOFFREY R ST LEGER/Primary Examiner, Art Unit 2192