DETAILED ACTION
Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
Response to Amendment
This Non-Final Office Action is in response to the applicant’s remarks and arguments filed on August 28, 2025.
Claims 1, 8 and 15 were amended.
Claims 1-20 remain pending in the application. Claims 1-20 are being considered on the merits.
Response to Arguments
Double Patenting Rejection
Applicant argues that:
“Claims 1-20 are rejected on the ground of non-statutory obviousness-type double patenting as being unpatentable over claim 1-15 of U.S. Patent No. 11,829,812. The Applicant elects not to file a terminal disclaimer at this time, but reserves the right to file a terminal disclaimer and/or traverse the double patenting rejections once the other substantive issues have been resolved.”.
Examiner respectfully disagree and submit that:
In view of the amendment and applicant’s remarks, the rejection of claims under the judicially created doctrine of double patenting, previously set forth in the Non-Final Office Action mailed on, 05/15/2025, has been maintained and reiterated below for applicant’s convenience.
Response to the Section 103 Rejections
Applicant argues that:
“Claims 1-4, 9-11 and 16-18 are rejected under 35 U.S.C. 103 as being unpatentable over the combination of Gregoire, Chen, and Hornbeck. Applicant respectfully traverses these rejections and submits that the cited disclosure of Gregoire, Chen, and Hornbeck does not disclose all the elements of the claims at least as amended..”.
selecting, from a polarization library, a second industry category that is distinct from the first industry category based on keywords associated with the second industry category being different from keywords associated with the first industry category
Examiner respectfully disagree and submit that:
Applicant’s arguments with respect to the newly added limitations have been considered but are moot because the arguments do not apply to the reference LIU et al (US 2020/0372088) being used in the current rejection.
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 §§ 706.02(l)(1) - 706.02(l)(3) 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 USPTO Internet website contains terminal disclaimer forms which may be used. Please visit www.uspto.gov/patent/patents-forms. The 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/process/file/efs/guidance/eTD-info-I.jsp.
Claims 1-20 are rejected on the ground of nonstatutory obviousness-type double patenting as being unpatentable over claim 1-15 of U.S. Patent No. 11,829,812 in view of LIU et al (US 2020/0372088). Although the conflicting claims are not identical, they are not patentably distinct from each other. See below for a detail comparison and explanation:
Current Application 18/497,799
U.S. Patent 11,829,812
1A method for obfuscating an application programming interface (API), the method comprising:
identifying a first industry category for a root API; randomly selecting, from a polarization library, a website that is in a second industry category that is distinct from the first industry category;
creating an obfuscator API with an API structure of the root API using website endpoints and website endpoint parameters from the website that match the API structure of the root API; and
mapping the website endpoints of the obfuscator API to corresponding endpoints of the root API.
selecting, from a polarization library, a second industry category that is distinct from the first industry category based on keywords associated with the second industry category being different from keywords associated with the first industry category
1 A method for obfuscating an application programming interface (API), the method comprising:
creating a polarization library, the polarization library including for each of a plurality of websites: website endpoints, corresponding website endpoint parameters, and assigned industry categories;
extracting an API structure of a root API to be obfuscated, including root endpoints and corresponding root endpoint parameters; identifying a first industry category for the root API; selecting a website from the polarization library that is in an industry category that is distinct from the first industry category by randomly selecting a second industry category that is different than the first industry category; and creating an obfuscator API with the API structure using website endpoints and website endpoint parameters from the selected website that match the API structure of the root API.
5. The method of claim 1, further comprising mapping the endpoints of the obfuscator API to the corresponding matching of the root API.
2. The method of claim 1, further comprising: identifying website keywords contained in each of a plurality of websites; assigning an industry category to each of the plurality of websites based on corresponding identified website keywords; extracting website endpoints and corresponding website endpoint parameters associated with each of the plurality of websites; and storing the website endpoints, the corresponding website endpoint parameters, the corresponding identified website keywords, and the assigned industry category for each website in the polarization library.
3. The method of claim 1, further comprising: creating the polarization library, the polarization library including for each of a plurality of websites: website endpoints, corresponding website endpoint parameters, and assigned industry categories.
.
3. The method of claim 1, wherein creating the polarization library comprises: identifying website keywords contained in each of the plurality of websites; assigning the industry category to each of the plurality of websites based on the corresponding identified website keywords; extracting the website endpoints and the corresponding website endpoint parameters associated with each of the plurality of websites; and storing the website endpoints, corresponding website endpoint parameters, website keywords, and the assigned industry category for each website in the polarization library.
4. The method of claim 1, wherein identifying the first industry category for the root API comprises identifying root keywords contained in the root API and comparing the identified root keywords to website keywords stored in the polarization library.
4. The method of claim 3, wherein identifying the first industry category for the root API comprises identifying root keywords contained in the root API and comparing the identified root keywords to the website keywords stored in the polarization library..
5. The method of claim 1, wherein selecting the website from the polarization library comprises arranging industry categories on a circular scale of 0 to 360 degrees in order of similarity and selecting the second industry category that is diametrically opposite the first industry category
6. The method of claim 1, wherein selecting the website from the polarization library comprises arranging industry categories on a spherical scale in order of similarity on lines of longitude from 0 to 360 degrees and selecting the second industry category that is polar opposite the first industry category.
7. The method of claim 6, wherein each website in each industry category is arranged on a line of latitude corresponding to a size of a company associated with each website
2. The method of claim 1, wherein selecting the website from the polarization library that is in the industry category distinct from the first industry category comprises arranging the assigned industry categories on a circular scale of 0 to 360 degrees in order of similarity and selecting the second industry category that is diametrically opposite the first industry category.
8. A system comprising: one or more processors; and one or more memories storing instructions that, when executed by the one or more processors, cause the system to perform a process for obfuscating an application programming interface (API), the process comprising: identifying a first industry category for a root API; randomly selecting, from a polarization library, a website that is in a second industry category that is distinct from the first industry category; creating an obfuscator API with an API structure of the root API using website endpoints and website endpoint parameters from the website that match the API structure of the root API; and mapping the website endpoints of the obfuscator API to corresponding endpoints of the root API.
9. The system according to claim 8, wherein the process further comprises: identifying website keywords contained in each of a plurality of websites; assigning an industry category to each of the plurality of websites based on corresponding identified website keywords; extracting website endpoints and corresponding website endpoint parameters associated with each of the plurality of websites; and storing the website endpoints, the corresponding website endpoint parameters, the corresponding identified website keywords, and the assigned industry category for each website in the polarization library.
10. The system according to claim 8, wherein the process further comprises: creating the polarization library, the polarization library including for each of a plurality of websites: website endpoints, corresponding website endpoint parameters, and assigned industry categories.
11. The system according to claim 8, wherein identifying the first industry category for the root API comprises identifying root keywords contained in the root API and comparing the identified root keywords to website keywords stored in the polarization library.
12. The system according to claim 8, wherein selecting the website from the polarization library comprises arranging industry categories on a circular scale of 0 to 360 degrees in order of similarity and selecting the second industry category that is diametrically opposite the first industry category.
13. The system according to claim 8, wherein selecting the website from the polarization library comprises arranging industry categories on a spherical scale in order of similarity on lines of longitude from 0 to 360 degrees and selecting the second industry category that is polar opposite the first industry category.
14. The system according to claim 13, wherein each website in each industry category is arranged on a line of latitude corresponding to a size of a company associated with each website.
15. A non-transitory computer-readable medium storing instructions that, when executed by a computing system, cause the computing system to perform operations for obfuscating an application programming interface (API), the operations comprising: identifying a first industry category for a root API; randomly selecting, from a polarization library, a website that is in a second industry category that is distinct from the first industry category; creating an obfuscator API with an API structure of the root API using website endpoints and website endpoint parameters from the website that match the API structure of the root API; and mapping the website endpoints of the obfuscator API to corresponding endpoints of the root API.
16. The non-transitory computer-readable medium of claim 15, wherein the operations further comprise: identifying website keywords contained in each of a plurality of websites; assigning an industry category to each of the plurality of websites based on corresponding identified website keywords; extracting website endpoints and corresponding website endpoint parameters associated with each of the plurality of websites; and storing the website endpoints, the corresponding website endpoint parameters, the corresponding identified website keywords, and the assigned industry category for each website in the polarization library.
17. The non-transitory computer-readable medium of claim 15, wherein the operations further comprise: creating the polarization library, the polarization library including for each of a plurality of websites: website endpoints, corresponding website endpoint parameters, and assigned industry categories.
18. The non-transitory computer-readable medium of claim 15, wherein identifying the first industry category for the root API comprises identifying root keywords contained in the root API and comparing the identified root keywords to website keywords stored in the polarization library.
19. The non-transitory computer-readable medium of claim 15, wherein selecting the website from the polarization library comprises arranging industry categories on a circular scale of 0 to 360 degrees in order of similarity and selecting the second industry category that is diametrically opposite the first industry category.
20. The non-transitory computer-readable medium of claim 15, wherein selecting the website from the polarization library comprises arranging industry categories on a spherical scale in order of similarity on lines of longitude from 0 to 360 degrees and selecting the second industry category that is polar opposite the first industry category, and wherein each website in each industry category is arranged on a line of latitude corresponding to a size of a company associated with each website.
6. A system for obfuscating an application programming interface (API), the system comprising: one or more processors; and one or more memory devices having stored thereon instructions that when executed by the one or more processors cause the one or more processors to: create a polarization library, the polarization library including for each of a plurality of websites: website endpoints, corresponding website endpoint parameters, and assigned industry categories; extract an API structure of a root API to be obfuscated, including root endpoints and corresponding root endpoint parameters; identify a first industry category for the root API; select a website from the polarization library that is in an industry category that is distinct from the first industry category by randomly selecting a second industry category that is different than the first industry category; and create an obfuscator API with the API structure using website endpoints and website endpoint parameters from the selected website that match the API structure of the root API.
7. The system of claim 6, wherein selecting the website from the polarization library that is in the industry category distinct from the first industry category comprises arranging the assigned industry categories on a circular scale of 0 to 360 degrees in order of similarity and selecting the second industry category that is diametrically opposite the first industry category.
8. The system of claim 6, wherein creating the polarization library comprises: identifying website keywords contained in each of the plurality of websites; assigning the industry category to each of the plurality of websites based on corresponding identified website keywords; extracting the website endpoints and the corresponding website endpoint parameters associated with each of the plurality of websites; and storing the website endpoints, corresponding website endpoint parameters, website keywords, and the assigned industry category for each website in the polarization library.
9. The system of claim 8, wherein identifying the first industry category for the root API comprises identifying root keywords contained in the root API and comparing the identified root keywords to the website keywords stored in the polarization library.
10. The system of claim 6, wherein the one or more memory devices have stored thereon further instructions that, when executed by the one or more processors, cause the one or more processors to map the endpoints of the obfuscator API to the corresponding matching endpoints of the root API.
11. A non-transitory processor readable memory device, comprising instructions stored thereon that when executed by one or more processors, cause the one or more processors to: create a polarization library, the polarization library including for each of a plurality of websites: website endpoints, corresponding website endpoint parameters, and assigned industry categories; extract an API structure of a root API to be obfuscated, including root endpoints and corresponding root endpoint parameters; identify a first industry category for the root API; select a website from the polarization library that is in an industry category that is distinct from the first industry category by randomly selecting a second industry category that is different than the first industry category; and create an obfuscator API with the API structure using website endpoints and website endpoint parameters from the selected website that match the API structure of the root API.
12. The non-transitory processor readable memory device of claim 11, wherein selecting the website from the polarization library that is in the industry category distinct from the first industry category comprises arranging the assigned industry categories on a circular scale of 0 to 360 degrees in order of similarity and selecting the second industry category that is diametrically opposite the root API industry category.
13. The non-transitory processor readable memory device of claim 11, wherein creating the polarization library comprises: identifying website keywords contained in each of the plurality of websites; assigning the industry category to each of the plurality of websites based on corresponding identified website keywords; extracting the website endpoints and the corresponding website endpoint parameters associated with each of the plurality of websites; and storing the website endpoints, corresponding website endpoint parameters, website keywords, and the assigned industry category for each website in the polarization library.
14. The non-transitory processor readable memory device of claim 13, wherein identifying the first industry category for the root API comprises identifying root keywords contained in the root API and comparing the identified root keywords to the website keywords stored in the polarization library.
15. The non-transitory processor readable memory device of claim 11, further comprising instructions that, when executed by the one or more processors, cause the one or more processors to map the endpoints of the obfuscator API to the corresponding matching endpoints of the root API.
As to claims of claims 1-20 of the current application, the only differences between the current application and claims 1-15 No. 11,829812 is the limitation of: “selecting, from a polarization library, a second industry category that is distinct from the first industry category based on keywords associated with the second industry category being different from keywords associated with the first industry category”. However, LIU teaches selecting, from a polarization library, a second industry category that is distinct from the first industry category based on keywords associated with the second industry category being different from keywords associated with the first industry category (see rejection of claim 1 below) . Thus, it would have been obvious to one of ordinary skill in the art at the time of the invention to further modify the patent No. 11,720,396 by adopting the teachings of LIU as shown below to provide “ a set of recommendation results based on the provided input natural language query to the obtained ML model. Each recommendation result may include a specific API name of the plurality of web API names and a specific endpoint of the plurality of endpoints.” (see , Lui para 4) .
As to System claims 9-16 the only differences between the current application and claims 1-8 of the patent No. 11,720,396 is the limitations of: a system. Thus, apparatus claims 9-16 of the current application comparable to the Method claims 1-5 of patent No. 11,720,396 have the same limitations and the apparatus comprises substantially the same elements, it would have been obvious for a person of ordinary skill in the at the time of the invention to modify claims 1-8 of patent No. 11,720,396 to have included an apparatus is well known and would have been obvious to a person of ordinary skill in the art. Therefore claims 9-16 of the Current application are not patently distinct from the earlier patents claims and as such is unpatentable for obvious-type double patenting.
As to product claims 17-20, the only differences between the current application and 1-8 of the patent No. 11,720,396 is the limitations of: A non-transitory computer-readable storage medium. Thus, product claims 17-20 of the current application comparable to the method claim 1- 8 of the current application above have the same limitations and the product comprise substantially the same elements, it would have been obvious for a person of ordinary skill in the at the time of the invention to modify claims 1-8 of 1-8 of the patent No. 11,720,396 to have included a non-transitory, computer readable medium implementing the product is well known and would have been obvious to a person of ordinary skill in the art.
Allowable Subject Matter
Claims 5-7, 12-14 and 19-20 in the previous office action are objected to as being dependent upon rejected base claims, but would be allowable if rewritten in independent form including all of the limitations of the base claim and any intervening claims and if amended to overcome the claim rejection above, set forth in this Office action.
Claim Rejections - 35 USC § 103
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claim(s) 1-4, 8-11 and 15-18 are rejected under 35 U.S.C. 103 as being unpatentable over Gregoire et al (US 2006/0026114, Gregoire hereinafter) in view of Chen (US 2025/0036378, Chen hereinafter) , Hornbeck (US 11,010,191, Hornbeck hereinafter) and LIU et al (US 2020/0372088, LIU hereinafter).
As to claim 1, Gregoire teaches a method for an application programming interface (API) (e.g., para [0055] Reference is now made to FIG. 2, which shows, in flowchart form, a method 100 of gathering and classifying data. The method 100 begins in step 102, wherein an attempt is made to locate a website, following which the site is accessed in step 104. This may be performed pseudo-randomly by a webcrawler. It may also or alternatively involve receiving an input address, such as from an administrator or from a stored list of addresses, which may include IP address or their corresponding domain names. Other mechanisms for locating and connecting to random or chosen addresses will be apparent to those ordinarily skilled in the art. Step 104 may involve requesting and receiving the default webpage for the website address. If a more detailed address specifying a particular webpage is obtained in step 102, then step 104 may involve requesting and receiving the specified webpage from the website address.
Thus, “ requesting and receiving the default webpage for the website address. If a more detailed address specifying a particular webpage is obtained in step 102, then step 104 may involve requesting and receiving the specified webpage from the website address” . Thus, an application programming interface (API) would have been inherent) , the method comprising:
identifying a first industry category (e.g., para [0023] The industry database 18 identifies one or more industries. In particular, the industry database 18 contains a list of industry groupings in association with which information may be categorized..);
selecting (e.g., “a random crawling” in para 27) , from a polarization library (e.g., “14”, Fig. 1, para 27, “The extractor 12 may perform a random crawling of the Internet to locate websites,”
[0031] The classifier 16 also consults the industry database 20 and attempts to determine if the extracted information is associated with or related to a particular industry or subindustry.
Thus, industry database 20 “ coupled with public network 14” , therefore include the polarization library) a website that is in a second industry category (e.g., para [0026] The extractor 12 includes a crawler or other search or browsing device for locating websites.
“The extractor 12 may perform a random crawling of the Internet to locate websites “ , “The extractor 12 includes a crawler or other search or browsing device for locating websites” thus, selecting, from a polarization library, a website that is in a second industry category ) that is distinct from the first industry category (e.g., see FIG. 3, para [0069] “ news stories, press releases, government industry reports, post-secondary academic research, requests-for-proposal, trade show information, industry group reports, company-specific information, legislation, etc. Additional or alternative types may also be included.”
[0070] type of website, so that if the extracted information was obtained from .edu site or a .gov site the system knows the information came from an educational institution or a government website, respectively. This information may be used to narrow down the possible types of information. Headers or titles within the extracted information, such as "RFP", "Report", etc., may give additional clues as to the type of information”),
using website endpoints and website endpoint parameters from the website (e.g., para [0020] “ The websites may include a plurality of interlinked webpages. Each website is identifiable by an IP address and its associated domain name”).
Thus , the “links “, “an IP address and its associated domain name”, “information to particular industries or companies” represent the website endpoints and website endpoint parameters) ; and
However, Gregoire does not teach selecting, from the polarization Library, the second industry category that is distinct from the first industry category based on keywords associated with the second industry category being different from keywords associated with the first industry category, obfuscating the application programming interface (API), a root API, creating an obfuscator API with an API structure of the root API , the website that match the API structure of the root API; mapping the website endpoints of the obfuscator API to corresponding endpoints of the root API.
Chen teaches a root API (e.g., para [0082] For example, Table 10, below, illustrates the obfuscated final application binary and the obfuscated SDK binary. At this point, every function has been obfuscated except for the root function which needs to not be obfuscated such that the CPU can correctly refer to and execute the root function. Thus , the “root function” represent the root API) , creating an obfuscator API with an API structure of the root API (e.g., see FIG. 3, para [0062] …to create an SDK that can include API methods “, “the exposed API methods in the source code layer will be obfuscated along with the application's source code. Thus, obfuscating the API calls to the SDK in the final application.”
para [0082] For example, Table 10, below, illustrates the obfuscated final application binary and the obfuscated SDK binary. At this point, every function has been obfuscated except for the root function which needs to not be obfuscated such that the CPU can correctly refer to and execute the root function. Thus , the “root function” represent the a root API ) , a website that match the API structure e.g., see Table 9, “com.industry.app.main( ) “ represent the website that match the API structure ) of the root API (e.g., para [0082] ..the root function”, ” execute the root function”
TABLE-US-00009 TABLE 9 Final Application Source Code with Obfuscate SDK Binary Obfuscated SDK Final Application Source Code Interface source Binary com.industry.app.main( ) .sup.└ com. industry.app.payUI.start( ) .sup.└com.industry.app.payUI.go( ) .sup.└com.industry.app.core.process( ) .sup.└com.industry.getToken( ) .sup.└com.comp.getToken( ) .fwdarw.p.re.f09( ) .sup.└ c.xv.lo( ) .sup.└c.yt.8p8( ) com.comp.getToken( ) ←p.re.f09( ) com.industry.app.core.process( ) .sup.└com.industry.app.payUI.done( ) .
Thus, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to f modify the method of Gregoire by adopting the teachings of Chen to “ securely obfuscating exposed public API methods” (see Chen, para 7).
Hornbeck teaches mapping the website endpoints of the obfuscator API to corresponding endpoints of a root API (e.g., col. 13, lines 58-67, “ configured APIs per user. These APIs can create self-documenting API reference lists for each Abstracted API. Each API will have an appended endpoint obfuscating the original API URL endpoint, allowing for renaming of endpoints on a consolidated URL. An example would be remapping the AWS® DynamoDB® API endpoint (https://dynamodb.us-west-2.amazonaws.com) to a corporate URL (https://dynamodb.us-west-2-aws.yourcompany.com.
Thus, AWS® DynamoDB® API endpoint represent the endpoints of a root API , therefore mapping the website endpoints of the obfuscator API to corresponding endpoints of a root API).
Thus, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to further modify the method of Gregoire and Chen by adopting the teachings of Hornbeck to obfuscating an application programming interface (API), creating an obfuscator API with an API structure of the root API using website endpoints and website endpoint parameters from the website that match the API structure of the root API; and mapping the website endpoints of the obfuscator API to corresponding endpoints of the root API in order to “ automatically isolate and resolve bugs or other computational issues without the need for human intervention.” (see , Hornbeck abstract) .
Liu teaches selecting, from the polarization Iibrary (e.g., “208 , FIG. 2) , the second industry category that is distinct from the first industry category based on keywords associated with the second industry category being different from keywords associated with the first industry category (e.g., see FIG. 2, para 126, “extract one or more keywords” , “a keyword-type query based on the extracted one or more keywords” for “one or more primary categories, the one or more secondary categories” for “ API title associated with each web API of the plurality of web APIs”, “the Musified API “ in para 33 , 78).
Thus, the categories include first industry category , second industry category)..
Thus, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to further modify the method of Gregoire and Chen , Hornbeck by adopting the teachings of Lui to identifying a first industry category for a root API; selecting, from a polarization library, a second industry category that is distinct from the first industry category based on keywords associated with the second industry category being different from keywords associated with the first industry category, selecting, from the polarization library, a website that is in the second industry category creating an obfuscator API with an API structure of the root API using website endpoints and website endpoint parameters from the website that match the API structure of the root API; and mapping the website endpoints of the obfuscator API to corresponding endpoints of the root API. in order to provide “ a set of recommendation results based on the provided input natural language query to the obtained ML model. Each recommendation result may include a specific API name of the plurality of web API names and a specific endpoint of the plurality of endpoints.” (see , Lui para 4) .
As to claim 2, Gregoire teaches identifying website keywords contained in each of a plurality of websites; assigning an industry category to each of the plurality of websites based on corresponding identified website keywords (e.g., para 24 and 25 “keyword information may also be extracted”, “Each industry group, subgroup, etc., may also be associated with particular keywords that are commonly found in information associated with the group, subgroup”) ; extracting website endpoints and corresponding website endpoint parameters associated with each of the plurality of websites (e.g., para 26, “The extractor 12 includes a crawler or other search or browsing device for locating websites. Upon locating a website, the extractor 12 extracts information from the website.”); and storing the website endpoints, the corresponding website endpoint parameters, the corresponding identified website keywords, and the assigned industry category for each website in the polarization library (e.g., para [0024] Each industry group, subgroup, etc., within the industry database 18 may be associated with an classification number or code. Each industry group, subgroup, etc., may also be associated with particular keywords that are commonly found in information associated with the group, subgroup, etc. Accordingly, an individual data record within the industry database 18 may include an industry descriptor, an industry classification code, a subindustry descriptor, a subindustry classification code, and associated keywords. Other information may also be included in the individual data record corresponding to a particular industry group, subgroup, etc.
[0025] The company database 20 includes a number of company profiles. A company profile includes data regarding a business organization, such as a corporation, partnership, trust, joint venture, etc. The company profile may include data such as the company name, address or addresses, its country or countries of operation or origin, contact information, key personnel and data regarding them, its website, and information regarding the line of business in which the company is engaged. The company profile also includes information regarding with which industry or industries the company is associated. In one embodiment, this means the company profile includes one or more industry classification codes, and may include one or more subindustry classification codes. The industry descriptor, subindustry descriptor, and keyword information may also be extracted from the industry database 18 and incorporated into the company profile in the company database 20.
[0026] The extractor 12 includes a crawler or other search or browsing device for locating websites. Upon locating a website, the extractor 12 extracts information from the website. This may include an initial bit of information from a default page at the website so as to be able to determine if the website is a site of interest. It may also include information from other webpages on the website.) .
As to claim 3, Gregoire teaches creating the polarization library, the polarization library including for each of a plurality of websites: website endpoints, corresponding website endpoint parameters, and assigned industry categories (e.g., para [0023] The industry database 18 identifies one or more industries. In particular, the industry database 18 contains a list of industry groupings in association with which information may be categorized. The industry groupings may include more than one level of classification. For example, the industry groupings may be arranged in a tree-and-branch format, such that a root industry descriptor includes a plurality of sub-industry descriptors associated with subcategories of the overall industry group. By way of non-limiting example, the industry database 18 may specify broad industry categories or groups such as "Financial", "Food & Beverage", and "Healthcare"; and within a broad industry category like "Food & Beverage" there may be subcategories, such as "Beverages", "Food Products", "Food Retailers & Wholesalers", "Restaurants", and "Food Services". It will be appreciated that the subcategories may be further broken into sub- subcategories, etc.
[0026] The extractor 12 includes a crawler or other search or browsing device for locating websites. Upon locating a website, the extractor 12 extracts information from the website. This may include an initial bit of information from a default page at the website so as to be able to determine if the website is a site of interest. It may also include information from other webpages on the website.) .
As to claim 4, Gregoire teaches further wherein identifying the first industry category forEach industry group, subgroup, etc., may also be associated with particular keywords that are commonly found in information associated with the group, subgroup, etc. Accordingly, an individual data record within the industry database 18 may include an industry descriptor, an industry classification code, a subindustry descriptor, a subindustry classification code, and associated keywords. [0025] The industry descriptor, subindustry descriptor, and keyword information may also be extracted from the industry database 18 and incorporated into the company profile in the company database 20..) . However, Gregoire does not teach for the root API comprises identifying root keywords contained in the root API. Chen teaches identifying root keywords contained in the root API (e.g., TABLE-US-00010 TABLE 10 Obfuscated Application Binary with Obfuscated SDK Binary Obfuscated Final Application Binary Obfuscated SDK binary com.industry.app.main( ) . Thus, “com.industry.app.main( ) “ include the keywords in the root API). Thus, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to modify the method of Gregoire by adopting the teachings of Chen to in order to “ securely obfuscating exposed public API methods” (see Chen, para 7) .
As to claim 8, see rejection of claim 1 above. Gregoire teaches further a system comprising: one or more processors; and one or more memories storing instructions that, when executed by the one or more processors, (claim 1. A system for gathering and classifying relevant data from the world wide web, the system comprising: an extractor for crawling the world wide web and producing extracted information from at least one website; an industry database containing a list of industry groups; a company database containing profiles of companies; an information database containing data records, each of said data records having an associated industry group selected from said list of industry groups; a classifier for receiving said extracted information, said classified including a company comparison component for determining if said extracted information relates to a company profiled in said company database, and an industry component for determining if said extracted information relates to an industry listed in said list of industry groups, and a classification component responsive to said company comparison component and said industry comparison component for storing said extracted information in said information database as one of said data records.. Thus, a system comprising: one or more processors; and one or more memories storing instructions that, when executed by the one or more processors would have been inherent ).
As to claims 9-11, see rejection of claims 2-4 above.
As to claim 15, see rejection of claim 1 above. Gregoire teaches further a non-transitory computer-readable medium storing instructions that, when executed by a computing system, cause the computing system to perform operations (see claim 1. A system for gathering and classifying relevant data from the world wide web, the system comprising: an extractor for crawling the world wide web and producing extracted information from at least one website; an industry database containing a list of industry groups; a company database containing profiles of companies; an information database containing data records, each of said data records having an associated industry group selected from said list of industry groups; a classifier for receiving said extracted information, said classified including a company comparison component for determining if said extracted information relates to a company profiled in said company database, and an industry component for determining if said extracted information relates to an industry listed in said list of industry groups, and a classification component responsive to said company comparison component and said industry comparison component for storing said extracted information in said information database as one of said data records.. Thus, a non-transitory computer-readable medium storing instructions that, when executed by a computing system, cause the computing system to perform operations would have been inherent ).
As to claims 16-18, see rejection of claims 2-4 above.
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure :
Goeldi (US 2010/0121843) discloses generating a website network graph to model one or more networks of websites relevant to subject matter of interest in a category, wherein generating the website network graph includes performing one or more searches relating to the subject matter of interest in a search engine API using one or more relevant keywords in combination with the subject matter of interest, extracting search results from the one or more searches, and identifying online social media websites with content most relevant to the subject matter of interest based on the website network graph.
Applicant's amendment necessitated the new ground(s) of rejection presented in this Office action. Accordingly, THIS ACTION IS MADE FINAL. See MPEP § 706.07(a). Applicant is reminded of the extension of time policy as set forth in 37 CFR 1.136(a).
A shortened statutory period for reply to this final action is set to expire THREE MONTHS from the mailing date of this action. In the event a first reply is filed within TWO MONTHS of the mailing date of this final action and the advisory action is not mailed until after the end of the THREE-MONTH shortened statutory period, then the shortened statutory period will expire on the date the advisory action is mailed, and any nonprovisional extension fee (37 CFR 1.17(a)) pursuant to 37 CFR 1.136(a) will be calculated from the mailing date of the advisory action. In no event, however, will the statutory period for reply expire later than SIX MONTHS from the mailing date of this final action.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to ABDOU K SEYE whose telephone number is (571)270-1062. The examiner can normally be reached M-F 9-5:30.
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, Pierre Vital can be reached at 5712724215. 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.
/ABDOU K SEYE/Examiner, Art Unit 2198
/PIERRE VITAL/Supervisory Patent Examiner, Art Unit 2198