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 .
This action is in response to Application filed on 04/09/2024.
Claims 1-20 are pending.
Priority
This application claims priority from U.S. Provisional Patent Application 63/597,209 filed on 11/08/2023. Since the provisional application provides sufficient support for the claimed invention of this application as requirements under 35 U.S.C. § 112(a) or (pre-AIA ) 35 U.S.C. § 112, first paragraph, the effective filing data of this application is 11/08/2023.
Information Disclosure Statement
The Information Disclosure Statements (IDS) filed by Applicant on 04/09/2024, 01/20/2025 and 01/22/2026 have been considered. Copies of the considered IDS(s) are enclosed with this Office action.
Claim Objections
Claims 1-20 are objected to because of the following informalities:
Regarding claim 1, there should be a connection term “and” at the end of line 7 for properly including all the steps/actions in the recited method/process.
Regarding claim 2, claim 2 depends on itself. In particular, the phrase “The method of claim 2” should be “The method of claim 1”.
Regarding claim 11, there should be a connection term “and” at the end of line 8 for properly including all the steps/actions in the recited method/process.
Other dependent claims are objected as incorporating and failing to resolve the informality of the objected independent claims 1 and 11 upon which they depend correspondingly.
Appropriate correction is required.
Claim Rejections - 35 USC § 112
The following is a quotation of 35 U.S.C. 112(b):
(b) CONCLUSION.—The specification shall conclude with one or more claims particularly pointing out and distinctly claiming the subject matter which the inventor or a joint inventor regards as the invention.
The following is a quotation of 35 U.S.C. 112 (pre-AIA ), second paragraph:
The specification shall conclude with one or more claims particularly pointing out and distinctly claiming the subject matter which the applicant regards as his invention.
Claims 2, 7-9, 12 and 17-19 are rejected under 35 U.S.C. 112(b) or 35 U.S.C. 112 (pre-AIA ), second paragraph, as being indefinite for failing to particularly point out and distinctly claim the subject matter which the inventor or a joint inventor (or for applications subject to pre-AIA 35 U.S.C. 112, the applicant), regards as the invention.
Claim 2 recites the limitation "the hierarchical data object" in line 2. There is insufficient antecedent basis for this limitation in the claim.
Claim 7 recites the limitation "the plain interpretation" in line 5. There is insufficient antecedent basis for this limitation in the claim.
Claim 12 recites the limitation "the hierarchical data object" in line 3. There is insufficient antecedent basis for this limitation in the claim.
Claim 17 recites the limitation "the plain interpretation" in line 6. There is insufficient antecedent basis for this limitation in the claim.
Other claims 8-9 and 18-19 are rejected for incorporating and failing to resolve the deficiency of the rejected claims 7 and 17 upon which they depend correspondingly.
Claim Rejections - 35 USC § 103
In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis (i.e., changing from AIA to pre-AIA ) for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claims 1-2, 4-12 and 14-20 (effective filing date 11/08/2023) are rejected under 35 U.S.C. 103 as being unpatentable over Fender et al. (U.S. Publication No. 2021/0064619, Publication date 03/04/2021), and further in view of Liu et al. (“Native JSON Datatype Support: Maturing SQL and NoSQL Convergence in Oracle Database”, Published in August 2020).
As to claim 1, Fender et al. teaches;
“A method” (see Fender et al., Abstract and Fig. 1) comprising:
“generating an abstract syntax tree (AST) representing a path expression, wherein the AST comprises one or more syntax nodes implementing one or more respective execution steps of an evaluation of the path expression, and the path expression is included in a query to a database management system (DBMS)” (see Fender et al., Fig. 1 and [0028] for generating an abstract syntax tree (AST) from a sequence of DSL instructions that represents the subtree (i.e., an expression), wherein the expression as disclosed can be interpreted as equivalent to a path expression as broadly recited; also see [0019] and Fig. 5 wherein each syntax node associated with an execute method (i.e., execution step));
“modifying the AST based at least in part on profiling information” (see Fender et al., [0028] and [0065] for optimally rewriting the DSL AST based on a runtime feedback loop that includes dynamic profiling information; also see [0020] for the ability to leverage the profiling information to trigger self-optimization techniques);
“compiling the AST into machine code” (see Fender et al., [0021] and [0050] for compiling the AST (i.e., the DSL instruction sequence) into bytecode or machine code for execution);
“wherein the method is performed by one or more computing devices” (see Fender et al., [0183] and Fig. 9).
In addition, Fender et al. teaches execution/evaluation of the database query including the query expression (e.g., using the bytecode or the machine code) on database(s) (e.g., a table) (see Fender et al., [0034] and [0074]).
However, Fender et al. does not explicitly teach a feature of executing, using the machine code, the query expression on database(s) including a binary encoded hierarchy document as recited as follows:
“executing, using the machine code, the path expression on a binary encoded hierarchical document”.
On the other hand, Liu et al. explicitly teaches:
“executing, using the machine code, the path expression on a binary encoded hierarchical document” (see Liu et al., [page 3064, under section 3.3 Fast SQL/JSON Path Evaluation] for execution of the compiled execution plan (i.e., machine code) for the path execution on OSON document (i.e., binary encoded hierarchical document); also see [page 3063, under section 3.2 OSON Binary Format Design] for structure of an OSON image/document).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to incorporate Liu et al.'s teaching to Fender et al.’s system by implementing a feature of executing a path execution on a binary encoded hierarchical document. Ordinarily skilled artisan would have been motivated to do so, as suggested by Liu et al. (see Liu et al., [page 3065, second column, first three paragraphs]), to provide Fender et al.’s system with an effective way to execute/evaluate an expression (e.g., a SQL/JSON path expression) in a database query. In addition, both of the references (Fender et al. and Liu et al.) teach features that are directed to analogous art and they are directed to the same field of endeavor, such as, a database management system for executing an expression of a database query using its compiled execution plan or compiled abstract syntax tree (i.e., bytecode or machine code). This close relation between both of the references highly suggests an expectation of success when compiled.
As to claim 11, Fender et al. teaches;
“One or more non-transitory storage media storing instructions which, when executed by one or more computing devices, cause” (see Fender et al., Abstract, Fig. 1 and [0183]):
“generating an abstract syntax tree (AST) representing a path expression, wherein the AST comprises one or more syntax nodes implementing one or more respective execution steps of an evaluation of the path expression, and the path expression is included in a query to a database management system (DBMS)” (see Fender et al., Fig. 1 and [0028] for generating an abstract syntax tree (AST) from a sequence of DSL instructions that represents the subtree (i.e., an expression), wherein the expression as disclosed can be interpreted as equivalent to a path expression as broadly recited; also see [0019] and Fig. 5 wherein each syntax node associated with an execute method (i.e., execution step));
“modifying the AST based at least in part on profiling information” (see Fender et al., [0028] and [0065] for optimally rewriting the DSL AST based on a runtime feedback loop that includes dynamic profiling information; also see [0020] for the ability to leverage the profiling information to trigger self-optimization techniques);
“compiling the AST into machine code” (see Fender et al., [0021] and [0050] for compiling the AST (i.e., the DSL instruction sequence) into bytecode or machine code for execution).
In addition, Fender et al. teaches execution/evaluation of the database query including the query expression (e.g., using the bytecode or the machine code) on database(s) (e.g., a table) (see Fender et al., [0034] and [0074]).
However, Fender et al. does not explicitly teach a feature of executing, using the machine code, the query expression on database(s) including a binary encoded hierarchy document as recited as follows:
“executing, using the machine code, the path expression on a binary encoded hierarchical document”.
On the other hand, Liu et al. explicitly teaches:
“executing, using the machine code, the path expression on a binary encoded hierarchical document” (see Liu et al., [page 3064, under section 3.3 Fast SQL/JSON Path Evaluation] for execution of the compiled execution plan (i.e., machine code) for the path execution on OSON document (i.e., binary encoded hierarchical document); also see [page 3063, under section 3.2 OSON Binary Format Design] for structure of an OSON image/document).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to incorporate Liu et al.'s teaching to Fender et al.’s system by implementing a feature of executing a path execution on a binary encoded hierarchical document. Ordinarily skilled artisan would have been motivated to do so, as suggested by Liu et al. (see Liu et al., [page 3065, second column, first three paragraphs]), to provide Fender et al.’s system with an effective way to execute/evaluate an expression (e.g., a SQL/JSON path expression) in a database query. In addition, both of the references (Fender et al. and Liu et al.) teach features that are directed to analogous art and they are directed to the same field of endeavor, such as, a database management system for executing an expression of a database query using its compiled execution plan or compiled abstract syntax tree (i.e., bytecode or machine code). This close relation between both of the references highly suggests an expectation of success when compiled.
As to claims 2 and 12, these claims are rejected based on the same arguments as above to reject claims 1 and 11 respectively, and are similarly rejected including the following:
Fender et al. as modified by Liu et al. teaches:
“wherein the binary encoded hierarchical document comprises an inline dictionary that maps field names of the hierarchical data object to field name identifiers of the hierarchical data object” (see Liu et al., [page 3063, under section 3.2.1 OSON structure] for the dictionary contains the set of distinct field names used within all objects in the document, wherein each field name is associated with a unique field ID).
As to claims 4 and 14, these claims are rejected based on the same arguments as above to reject claims 1 and 11 respectively, and are similarly rejected including the following:
Fender et al. as modified by Liu et al. teaches:
“wherein the binary encoded hierarchical document represents a JSON document” (see Liu et al., Abstract and [page 3063, under section 3.2 OSON Binary Format Design], wherein Oracle Binary JSON format (OSON) is used to represent JSON documents in binary format).
As to claims 5 and 15, these claims are rejected based on the same arguments as above to reject claims 1 and 11 respectively, and are similarly rejected including the following:
Fender et al. as modified by Liu et al. teaches:
“wherein compiling the AST into machine code further comprises partially evaluating one or more constant expressions of the AST” (see Fender et al., Fig. 7, [0090]-[0091] for optimized compilation of DSL AST including inlining a selected implementation directed into the caller’s logic (e.g., inlining a literal constant eight into a caller whose animals all are spiders (see [0098]))).
As to claims 6 and 16, these claims are rejected based on the same arguments as above to reject claims 1 and 11 respectively, and are similarly rejected including the following:
Fender et al. as modified by Liu et al. teaches:
“wherein the AST is compiled into machine code using a just-in- time (JIT) compiler” (see Fender et al., [0019]-[0020] for compiling the AST using the Graal just in time (JIT) compiler to output highly optimized machine code).
As to claims 7 and 17, these claims are rejected based on the same arguments as above to reject claims 1 and 11 respectively, and are similarly rejected including the following:
Fender et al. as modified by Liu et al. teaches:
“wherein the binary encoded hierarchical document is a first binary encoded hierarchical document” (see Liu et al., [page 3063, under section 3.2.1 OSON Structure], wherein an OSON image as disclosed can be interpreted as the binary encoded hierarchical document as recited), the method further comprising:
“performing a partial interpretation of the AST on a second binary encoded hierarchical document” (see Fender et al., [0074]-[0075] for partial interpreting the DSL AST (e.g., initial compilation to bytecode and/or machine code from some of the DSL AST); and
“collecting the profiling information from the plain interpretation of the AST” (see Fender et al., [0075] for collection dynamic profile data from executing the initial compilation (i.e., partial interpretation)).
As to claims 8 and 18, these claims are rejected based on the same arguments as above to reject claims 7 and 17 respectively, and are similarly rejected including the following:
Fender et al. as modified by Liu et al. teaches:
“wherein the profiling information comprises at least one of” (see Fender et al., [0075] for dynamic profile data):
“a predetermined size of a variable in the second binary encoded hierarchical document,
a cached field identifier from the second binary encoded hierarchical document,
a cached header value of a header of the second binary encoded hierarchical document,
an indication that an array in the second binary encoded hierarchical document having a size of one,
a maximum size of a scalar value in the second binary encoded hierarchical document, or
a cached object in the second binary encoded hierarchical document that stores a field identifier that is referenced by another object in the second binary encoded hierarchical document” (see Fender et al., [0075]-[0077] wherein the dynamic profile data may include details such as observed datatypes for datatype inferencing, execution frequency, etc., wherein the dynamic profile data is used for optimally rewriting the AST including rewriting of indirect function calls, polymorphic inline caches, etc. (see [0020] and [0028]); also see [0090] for analyzing dynamic profile information for dynamic optimizations in steps 702-706 including determining size of a variable (e.g., a byte) (see [0093] step 704A)).
As to claims 9 and 19, these claims are rejected based on the same arguments as above to reject claims 8 and 18 respectively, and are similarly rejected including the following:
Fender et al. as modified by Liu et al. teaches:
“wherein modifying the AST based at least in part on the profiling information further comprises at least one of” (see Fender et al., Fig. 7 and [0090] for dynamic optimizations based on analyzing dynamic profile data; also see [0028] for optimally rewriting the DSL AST based on a runtime feedback loop that includes dynamic profiling information):
“modifying a first syntax node of the AST, which implements accessing one or more variables of one or more binary encoded hierarchical documents based at least in part on a dynamically-checked size of the one or more variables, to implement accessing the one or more variables based at least in part on the predetermined size of the variable;
modifying a second syntax node of the AST, which implements performing a binary searches to access one or more field identifiers from the one or more binary encoded hierarchical documents, to implement accessing the one or more field identifiers based at least in part on the cached field identifier;
modifying a third syntax node of the AST, which implements identifying a value from a header of the one or more binary encoded hierarchical documents, to implement inlining the cached header value;
modifying a fourth syntax node of the AST, which implements evaluating index ranges of one or more arrays from the one or more binary encoded hierarchical document, to implement determining whether indexes of the one or more arrays contain "0" or "last" based on the array having a size of one in the profiling information;
modifying a fifth syntax node of the AST to replace a variable-precision scalar data type in the one or more binary encoded hierarchical documents with a primitive data type based at least in part on the maximum size of the scalar value from the profiling information falling below a predetermined threshold; or
modifying a sixth syntax node of the AST to replace one or more objects that implement field identifier sharing with the cached object that stores a field identifier” (see Fender et al., Fig. 7 and [0090] for dynamic optimizations based on analyzing dynamic profile data; also see [0028] for optimally rewriting the DSL AST based on a runtime feedback loop that includes dynamic profiling information, wherein rewriting the DSL AST must include modifying one or more of the syntax node of the DSL AST, e.g., modifying size of a variable as determined for dynamic optimization (see [0093]-[0095])).
As to claims 10 and 20, these claims are rejected based on the same arguments as above to reject claims 1 and 11 respectively, and are similarly rejected including the following:
Fender et al. as modified by Liu et al. teaches:
“wherein executing, using the machine code, the path expression on the binary encoded hierarchical document further comprises” (see Fender et al., [0034] and [0074] for executing the DSL AST on the database (e.g., a table); also see Liu et al., [page 3064, under section 3.3 Fast SQL/JSON Path Evaluation] for execution of the compiled execution plan (i.e., machine code) for the path execution on OSON document (i.e., binary encoded hierarchical document)):
“determining whether a value that satisfies the path expression exists in the binary encoded hierarchical document,
identifying the value that satisfies the path expression in the binary encoded hierarchical document, or
identifying all values that satisfy the path expression in the binary encoded hierarchical document” (see Liu et al., [page 3064, second column, under section 3.3 Fast SQL/JSON Path evaluation] when compiling a path expression, a hash function is applied to the field names in the path to generate a corresponding hash code (i.e., hash ID) for each field name and these hash codes are stored in the compiled execution plan (i.e., compiled AST); at runtime, performing a binary search to determine whether the hash ID(s) (i.e., value) from the path is located within the OSON field name dictionary).
Claims 3 and 13 (effective filing date 11/08/2023) are rejected under 35 U.S.C. 103 as being unpatentable over Fender et al. (U.S. Publication No. 2021/0064619, Publication date 03/04/2021), in view of Liu et al. (“Native JSON Datatype Support: Maturing SQL and NoSQL Convergence in Oracle Database”, Published in August 2020), and further in view of Liu et al. (2) (U.S. Publication No. 2017/0060912, Publication date 03/02/2017).
As to claims 3 and 13, Fender et al. as modified by Liu et al. teaches all limitation as recited in claims 1 and 11.
In addition, Fender et al. as modified by Liu et al. teaches:
“wherein the binary encoded hierarchical document represents a hierarchical data object comprising a plurality of field names” (see Liu et al., Fig. 5 and [page 3063, under section 3.2.1 OSON Structure] for an OSON image (i.e., the binary encoded hierarchy document) including a plurality of field names used with all objects in the document (e.g., JSON document or hierarchical document)).
However, Fender et al. as modified by Liu et al. does not explicitly teach:
“wherein the binary encoded hierarchical document comprises:
a hash-code mapping that maps a hash code corresponding to a field name of the plurality of field names to a field-name identifier,
a field-name mapping that maps the field name to the field name identifier,
a child node mapping that maps a node to one or more child nodes, wherein the node and the one or more child nodes represent field names of the hierarchical data object, and
a field-name-identifier-to-child mapping that maps the field name identifier to the one or more child nodes”.
On the other hand, Liu et al. (2) explicitly teaches:
“wherein the binary encoded hierarchical document comprises” (see Liu et al. (2), Abstract, [0018] and [0020] for binary encoding of a hierarchical document (e.g., a JSON document), wherein the binary representation of the hierarchical data object or JSON document is the binary encoded hierarchy document as recited; also see Fig. 7 wherein the record representing the hierarchical data object can be interpreted as a binary encoded hierarchy document as recited):
“a hash-code mapping that maps a hash code corresponding to a field name of the plurality of field names to a field-name identifier” (see Liu et al. (2), [0075] for generating a hash-code mapping),
“a field-name mapping that maps the field name to the field name identifier” (see Liu et al. (2), [0076] for generating a field-name mapping),
“a child node mapping that maps a node to one or more child nodes, wherein the node and the one or more child nodes represent field names of the hierarchical data object” (see Liu et al. (2), [0077] for generating a child node mapping), and
a field-name-identifier-to-child mapping that maps the field name identifier to the one or more child nodes” (see Liu et al. (2), [0077] for generating a field-name-identifier-to-child mapping).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to incorporate Liu et al. (2)'s teaching to Fender et al.’s system (as modified by Liu et al.) by implementing a feature of generating a binary encoded hierarchical document. Ordinarily skilled artisan would have been motivated to do so, as suggested by Liu et al. (see Liu et al. (2), [0015]-[0016]), to provide Fender et al.’s system with an effective way to execute/evaluate an expression (e.g., a SQL/JSON path expression) in a database query. In addition, both of the references (Fender et al. and Liu et al. (2)) teach features that are directed to analogous art and they are directed to the same field of endeavor, such as, a database management system for executing an expression of a database query using its compiled execution plan or compiled abstract syntax tree (i.e., bytecode or machine code). This close relation between both of the references highly suggests an expectation of success when compiled.
Conclusion
Any inquiry concerning this communication or earlier communications from the examiner should be directed to PHUONG THAO CAO whose telephone number is (571)272-2735. The examiner can normally be reached Monday - Friday: 9:00 am - 6: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, Amy Ng can be reached at 571-270-1698. 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.
/Phuong Thao Cao/Primary Examiner, Art Unit 2164