Prosecution Insights
Last updated: July 17, 2026
Application No. 19/017,159

GRAPH DATA QUERY METHOD FOR GRAPH DATABASES AND RELATED DEVICES

Non-Final OA §103§112
Filed
Jan 10, 2025
Priority
Jan 11, 2024 — CN 202410048968.5
Examiner
GIULIANI, GIUSEPPI J
Art Unit
2153
Tech Center
2100 — Computer Architecture & Software
Assignee
Alipay.com Co., Ltd.
OA Round
1 (Non-Final)
58%
Grant Probability
Moderate
1-2
OA Rounds
1y 10m
Est. Remaining
65%
With Interview

Examiner Intelligence

Grants 58% of resolved cases
58%
Career Allowance Rate
167 granted / 288 resolved
+3.0% vs TC avg
Moderate +7% lift
Without
With
+7.0%
Interview Lift
resolved cases with interview
Typical timeline
3y 5m
Avg Prosecution
14 currently pending
Career history
313
Total Applications
across all art units

Statute-Specific Performance

§101
0.7%
-39.3% vs TC avg
§103
85.3%
+45.3% vs TC avg
§102
7.3%
-32.7% vs TC avg
§112
4.4%
-35.6% vs TC avg
Black line = Tech Center average estimate • Based on career data from 288 resolved cases

Office Action

§103 §112
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 . 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 7-18 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. Claims 7-9, 11 and 13-15 recite the limitation “and/or” (e.g. claim 7 line 8). It is unclear to the examiner which limitations are required or optional. Therefore, the claims is rendered indefinite due to this lack of clarity. Note, the dependent claims are rejected because they do not remedy the deficiencies inherited by their parent claims. Appropriate action is required. 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. Claims 1-4, 7-15, 19 and 20 are rejected under 35 U.S.C. 103 as being unpatentable over LIANG et al., US 2024/0202192 A1 (hereinafter “Liang”) in view of YUE et al., US 2022/0335068 A1 (hereinafter “Yue”). Claim 1: Liang teaches a computer-implemented method for graph database graph data query, comprising: parsing, in response to a query request for a graph database, a query statement comprised in the query request, to obtain at least one query condition comprised in the query statement, wherein the graph database comprises a query engine and a storage engine (Liang, [0042] note A graph (graph) includes a node and an edge. A node in a graph database is an entity, and an edge is a relationship between entities, [0043] note The match statement may be used to query data in an attribute map, [0045] note The match statement can further include a conditional clause, and the conditional clause can include a filtering condition, to filter data found based on the match statement, [Fig. 2], [0083] note S100: Receive a match statement); determining whether the at least one query condition comprises a query condition that needs to be executed by one or more of: an operator for querying information about a node or an edge in graph data, an operator for performing a filtering query on graph data, an operator for limiting a quantity of query results, an operator for sorting query results, or an operator for performing analysis on query results (Liang, [0045] note The match statement can further include a conditional clause, and the conditional clause can include a filtering condition, to filter data found based on the match statement, [0047]-[0053] note an example match statement); and if the at least one query condition comprises the query condition, pushing down, to the storage engine, the query condition that needs to be executed by the operator, so that the storage engine executes the query request (Liang, [0117] note after the match statement is received, the syntax parser and the verifier in the database can respectively perform syntax parsing and verification, and the execution plan generator generates the execution plan after syntax parsing and verification succeed. After the execution plan is generated, it is determined that the match statement includes the filtering condition of the path pattern. If yes, the execution plan optimizer optimizes the execution plan, to generate a new execution plan for execution). Liang does not explicitly teach performing statistical analysis. However, Yue teaches this (Yue, [0042] note optimizing data storage of query statistics of a graph database, [0081] note FIG. 2 is a flowchart of steps of a method for counting vertices and edges based on data storage optimization, [0082] note Step S201: Acquire a task request for counting vertices and edges in a graph space, return IDs of preset ready jobs in a ready queue according to the task request, and record information, where the graph space includes a plurality of partitions, [0083] note Step S202: Group the preset ready jobs according to leader nodes to which the partitions belong, to obtain a plurality of preset execution tasks, [0084] note Step S203: Submit the preset execution tasks to an execution queue and run the preset execution tasks by the storage server). It would have been obvious to one of ordinary skill in the art at the effective filing date of the application to combine the data query applied to a graph database of Liang with the system for optimizing data storage of query statistics of a graph database of Yue according to known methods (i.e. optimizing data storage of query statistics of a graph database.). Motivation for doing so is that this solves the problems of difficult optimization of storage distribution, as well as high resource consumption and low efficiency of query statistics of a graph database, and implements partition distribution of a graph database with an optimized distribution architecture, thereby reducing resource consumption of data calling and improving performance of the graph database (Yue, [0028]). Claim 2: Liang and Yue teach the computer-implemented method of claim 1, wherein the method further comprises: returning, to a user as a query result of the query request, target graph data obtained by the storage engine through the query request (Liang, [0084] note the match statement can be configured by a user in a user interface, [0074] note After the first-degree friend nodes C and D of the node A are filtered out, a query result of the match statement can be finally obtained: nodes E and F). Claim 3: Liang and Yue teach the computer-implemented method of claim 1, wherein the pushing down, to the storage engine, the query condition that needs to be executed by the operator comprises: exposing, to the storage engine through an interface, the query condition that needs to be executed by the operator (Liang, [0226] note As shown in FIG. 6, in terms of hardware, the electronic device includes a processor, an internal bus, a network interface, a memory, and a nonvolatile memory, and certainly can further include hardware needed by another service). Claim 4: Liang and Yue teach the computer-implemented method of claim 3, wherein, after the query condition that needs to be executed by the operator is encoded, as an encoded query condition, the encoded query condition is exposed to the storage engine through an interface, so that the storage engine parses the encoded query condition and executes the encoded query condition based on a result of the parsing (Liang, [0077] note the first-degree friend node of the node A can be first collected based on the filtering condition of the path pattern, to obtain the nodes B, C, and D, and is stored in a hash table set. Then, the second-degree friend nodes C, D, E, F, and C of the node A are determined, [0078] note Then, whether the second-degree friend node of A is in the hash table set is determined, to filter out nodes C and D in the hash table set from the second-degree friend nodes C, D, E, F, and C of the node A, so as to obtain a final query result: nodes E and F; i.e. hashing reads on encoding). Claim 7: Liang and Yue teach the computer-implemented method of claim 1, wherein: each node and edge in graph data comprises a plurality of pieces of attribute information, encoding information corresponding to each node and edge is maintained, as maintained encoding information, in the storage engine, the encoding information comprises a plurality of fields arranged in a predetermined encoding order, and the plurality of fields are used to sequentially describe the plurality of pieces of attribute information of the node or edge (Liang, [0043] note The match statement may be used to query data in an attribute map, [0062] note parentheses and content in the parentheses represent nodes, square brackets and content in the square brackets represent a relationship between nodes, and braces and content in the braces represent an attribute. Therefore, (friend) indicates a node, [:isPartOf] indicates a relationship, and {id:175921 86055119} indicates that an attribute value of the id attribute of the node is 17592186055119); the query condition comprises a filtering condition related to a plurality of pieces of attribute information of a node and/or an edge (Liang, [0083] note a filtering condition of a path pattern, query a node that matches a path in the filtering condition of the path pattern from all nodes in the graph database based on the path, to obtain a first node set); and the storage engine executes the query condition, comprising: determining, by the storage engine based on the maintained encoding information corresponding to each node and edge, a target node and/or a target edge that satisfies the filtering condition related to the plurality of pieces of attribute information, and reading the target node and/or the target edge from a storage device that stores the graph data (Liang, [01015] note it is assumed that the filtering condition of the path pattern of the match statement is not exists((friend)-[:personIsLocatedIn]->( )-[:isPartOf]->(countryX)). The another filtering condition is countryX.name=‘Laos’, and it means that a name (name) attribute corresponding to the node identifier of countryX is Laos (Laos). If the name attribute of countryX is not limited, the node identifier can correspond to several nodes such as different country nodes stored in the graph database). Claim 8: Liang and Yue teach the computer-implemented method of claim 1, wherein: each node and edge in graph data comprises a plurality of pieces of attribute information, and the node and the edge are stored in a corresponding storage device in a form of a data block, wherein each data block includes a plurality of nodes and/or edges having a plurality of pieces of same attribute information, label information corresponding to each data block is maintained, as maintained label information, in the storage engine, and the label information is used for describing the plurality of pieces of same attribute information of the plurality of nodes and/or edges comprised in the data block (Liang, [0043] note The match statement may be used to query data in an attribute map, [0062] note parentheses and content in the parentheses represent nodes, square brackets and content in the square brackets represent a relationship between nodes, and braces and content in the braces represent an attribute. Therefore, (friend) indicates a node, [:isPartOf] indicates a relationship, and {id:175921 86055119} indicates that an attribute value of the id attribute of the node is 17592186055119, [0165] note (person:Person {id:17592186055119}) indicates that a label of a given node identifier person is “person”, an identity number attribute of the node identifier is 17592186055119, and id is an identity number. The node identifier is limited to a specific node by using the attribute of id, that is, a node whose id is 17592186055119). Claim 9: Liang and Yue teach the computer-implemented method of claim 8, comprising: the query condition comprises a filtering condition related to a plurality of pieces of attribute information of a node and/or an edge (Liang, [0083] note a filtering condition of a path pattern, query a node that matches a path in the filtering condition of the path pattern from all nodes in the graph database based on the path, to obtain a first node set). Claim 10: Liang and Yue teach the computer-implemented method of claim 9, comprising: the storage engine executes the query condition, comprising: determining, by the storage engine based on the maintained label information corresponding to each data block, a target data block that satisfies the filtering condition related to the plurality of pieces of attribute information, and reading the target data block from the corresponding storage device (Liang, [0044] note The match clause can be used to set a matching condition, to describe queried content, for example, a specific label based on which a query is performed or a specific path pattern based on which a query is performed, [0045] note he match statement can further include a conditional clause, and the conditional clause can include a filtering condition, to filter data found based on the match statement). Claim 11: Liang and Yue teach the computer-implemented method of claim 10, wherein the storage engine executes the query condition, comprises: parsing the target data block to obtain target nodes and/or target edges comprised in the target data block that satisfy the filtering condition (Liang, [0068] note When the match statement is executed, both a (friend) node and a (countryX) node in each specific path obtained through matching based on the path pattern in the match clause need to be verified by using a path pattern in the filtering condition, to filter out, from the obtained (friend) node and (countryX) node, a node in a path that conforms to the path pattern of (friend)-[:personIsLocatedIn]->( )-[:isPartOf]->(countryX). A node remaining after filtering is a query result). Claim 12: Liang and Yue teach the computer-implemented method of claim 11, wherein the plurality of pieces of attribute information comprise at least a combination of any one or more of: information indicating a node, information indicating an incoming edge, a timestamp, a label, or time information (Liang, [0063] note “-”, “->”, and “<-” indicate directions of relationships, [0066] note A path pattern of the match clause in the above-mentioned example is (person:Person {id:17592186055119})-[:knows*1 . . . 2]-(friend)<-[:postHasCreator|commentHasCreator]-(messageX)- “-”, “->”, and “<-” indicate directions of relationships. [:postIsLocatedIn|commentIsLocatedIn]->(countryX). A path pattern in the conditional clause is (friend)-[:personIsLocatedIn]->( )-[:isPartOf]->(countryX)). Claim 13: Liang and Yue teach the computer-implemented method of claim 11, wherein: each data block further comprises statistical information related to the plurality of pieces of attribute information of the plurality of nodes and/or edges comprised in the data block (Yue, [0042] note optimizing data storage of query statistics of a graph database, [0081] note FIG. 2 is a flowchart of steps of a method for counting vertices and edges based on data storage optimization). Claim 14: Liang and Yue teach the computer-implemented method of claim 13, comprising: the query condition further comprises a statistical condition related to a plurality of pieces of attribute information of a node and/or an edge (Yue, [0082] note Step S201: Acquire a task request for counting vertices and edges in a graph space, return IDs of preset ready jobs in a ready queue according to the task request, and record information, where the graph space includes a plurality of partitions, [0083] note Step S202: Group the preset ready jobs according to leader nodes to which the partitions belong, to obtain a plurality of preset execution tasks, [0084] note Step S203: Submit the preset execution tasks to an execution queue and run the preset execution tasks by the storage server). Claim 15: Liang and Yue teach the computer-implemented method of claim 14, comprising: parsing the target data block to obtain target nodes and/or target edges comprised in the target data block that satisfy the filtering condition, comprises: parsing the target data block to obtain the target nodes and/or the target edges comprised in the target data block that satisfy the filtering condition, and statistical information comprised in the target data block and related to a plurality of pieces of attribute information of the target nodes and/or the target edges; and obtaining, through calculation based on the statistical information, a statistical result satisfying the statistical condition (Yue, [0081] note FIG. 2 is a flowchart of steps of a method for counting vertices and edges based on data storage optimization, [0082] note Step S201: Acquire a task request for counting vertices and edges in a graph space, return IDs of preset ready jobs in a ready queue according to the task request, and record information, where the graph space includes a plurality of partitions, [0083] note Step S202: Group the preset ready jobs according to leader nodes to which the partitions belong, to obtain a plurality of preset execution tasks, [0084] note Step S203: Submit the preset execution tasks to an execution queue and run the preset execution tasks by the storage server). Claim 19: Liang teaches a non-transitory, computer-readable medium storing one or more instructions executable by a computer system to perform one or more operations for graph database graph data query, comprising: parsing, in response to a query request for a graph database, a query statement comprised in the query request, to obtain at least one query condition comprised in the query statement, wherein the graph database comprises a query engine and a storage engine (Liang, [0042] note A graph (graph) includes a node and an edge. A node in a graph database is an entity, and an edge is a relationship between entities, [0043] note The match statement may be used to query data in an attribute map, [0045] note The match statement can further include a conditional clause, and the conditional clause can include a filtering condition, to filter data found based on the match statement, [Fig. 2], [0083] note S100: Receive a match statement); determining whether the at least one query condition comprises a query condition that needs to be executed by one or more of: an operator for querying information about a node or an edge in graph data, an operator for performing a filtering query on graph data, an operator for limiting a quantity of query results, an operator for sorting query results, or an operator for performing analysis on query results (Liang, [0045] note The match statement can further include a conditional clause, and the conditional clause can include a filtering condition, to filter data found based on the match statement, [0047]-[0053] note an example match statement); and if the at least one query condition comprises the query condition, pushing down, to the storage engine, the query condition that needs to be executed by the operator, so that the storage engine executes the query request (Liang, [0117] note after the match statement is received, the syntax parser and the verifier in the database can respectively perform syntax parsing and verification, and the execution plan generator generates the execution plan after syntax parsing and verification succeed. After the execution plan is generated, it is determined that the match statement includes the filtering condition of the path pattern. If yes, the execution plan optimizer optimizes the execution plan, to generate a new execution plan for execution). Liang does not explicitly teach performing statistical analysis. However, Yue teaches this (Yue, [0042] note optimizing data storage of query statistics of a graph database, [0081] note FIG. 2 is a flowchart of steps of a method for counting vertices and edges based on data storage optimization, [0082] note Step S201: Acquire a task request for counting vertices and edges in a graph space, return IDs of preset ready jobs in a ready queue according to the task request, and record information, where the graph space includes a plurality of partitions, [0083] note Step S202: Group the preset ready jobs according to leader nodes to which the partitions belong, to obtain a plurality of preset execution tasks, [0084] note Step S203: Submit the preset execution tasks to an execution queue and run the preset execution tasks by the storage server). It would have been obvious to one of ordinary skill in the art at the effective filing date of the application to combine the data query applied to a graph database of Liang with the system for optimizing data storage of query statistics of a graph database of Yue according to known methods (i.e. optimizing data storage of query statistics of a graph database.). Motivation for doing so is that this solves the problems of difficult optimization of storage distribution, as well as high resource consumption and low efficiency of query statistics of a graph database, and implements partition distribution of a graph database with an optimized distribution architecture, thereby reducing resource consumption of data calling and improving performance of the graph database (Yue, [0028]). Claim 20: Liang teaches a computer-implemented system for graph database graph data query, comprising: one or more computers; and one or more computer memory devices interoperably coupled with the one or more computers and having tangible, non-transitory, machine-readable media storing one or more instructions that, when executed by the one or more computers, perform one or more operations, comprising: parsing, in response to a query request for a graph database, a query statement comprised in the query request, to obtain at least one query condition comprised in the query statement, wherein the graph database comprises a query engine and a storage engine (Liang, [0042] note A graph (graph) includes a node and an edge. A node in a graph database is an entity, and an edge is a relationship between entities, [0043] note The match statement may be used to query data in an attribute map, [0045] note The match statement can further include a conditional clause, and the conditional clause can include a filtering condition, to filter data found based on the match statement, [Fig. 2], [0083] note S100: Receive a match statement); determining whether the at least one query condition comprises a query condition that needs to be executed by one or more of: an operator for querying information about a node or an edge in graph data, an operator for performing a filtering query on graph data, an operator for limiting a quantity of query results, an operator for sorting query results, or an operator for performing analysis on query results (Liang, [0045] note The match statement can further include a conditional clause, and the conditional clause can include a filtering condition, to filter data found based on the match statement, [0047]-[0053] note an example match statement); and if the at least one query condition comprises the query condition, pushing down, to the storage engine, the query condition that needs to be executed by the operator, so that the storage engine executes the query request (Liang, [0117] note after the match statement is received, the syntax parser and the verifier in the database can respectively perform syntax parsing and verification, and the execution plan generator generates the execution plan after syntax parsing and verification succeed. After the execution plan is generated, it is determined that the match statement includes the filtering condition of the path pattern. If yes, the execution plan optimizer optimizes the execution plan, to generate a new execution plan for execution). Liang does not explicitly teach performing statistical analysis. However, Yue teaches this (Yue, [0042] note optimizing data storage of query statistics of a graph database, [0081] note FIG. 2 is a flowchart of steps of a method for counting vertices and edges based on data storage optimization, [0082] note Step S201: Acquire a task request for counting vertices and edges in a graph space, return IDs of preset ready jobs in a ready queue according to the task request, and record information, where the graph space includes a plurality of partitions, [0083] note Step S202: Group the preset ready jobs according to leader nodes to which the partitions belong, to obtain a plurality of preset execution tasks, [0084] note Step S203: Submit the preset execution tasks to an execution queue and run the preset execution tasks by the storage server). It would have been obvious to one of ordinary skill in the art at the effective filing date of the application to combine the data query applied to a graph database of Liang with the system for optimizing data storage of query statistics of a graph database of Yue according to known methods (i.e. optimizing data storage of query statistics of a graph database.). Motivation for doing so is that this solves the problems of difficult optimization of storage distribution, as well as high resource consumption and low efficiency of query statistics of a graph database, and implements partition distribution of a graph database with an optimized distribution architecture, thereby reducing resource consumption of data calling and improving performance of the graph database (Yue, [0028]). Claims 5 and 6 are rejected under 35 U.S.C. 103 as being unpatentable over Liang and Yue in further view of DELAMARE et al., US 2024/0143594 A1 (hereinafter “Delamare”). Claim 5: Liang and Yue do not explicitly teach the computer-implemented method of claim 1, wherein the pushing down, to the storage engine, the query condition that needs to be executed by the operator comprises: serializing, as a serialized query condition, the query condition that needs to be executed by the operator; and transmitting the serialized query condition to the storage engine. However, Delamare teaches this (Delamare, [0021] note an approach for reducing memory pressure in distributed in-memory graph processing, with a focus on graph queries, by loading only necessary graph components in memory during user computation, [0045] note A user command or graph processing operation, such as a graph query, is executed by a job 210 in the distributed graph engine… Also, graph components can be serialized and deserialized efficiently, [0100] note Graph components are independent of each other and, hence, can be serialized/deserialized independently and in parallel). It would have been obvious to one of ordinary skill in the art at the effective filing date of the application to combine the graph database of Liang and Yue with the serialized and deserialized graph components of Delamare according to known methods (i.e. serializing and deserializing graph components in a graph database). Motivation for doing so is that this reduces memory pressure in distributed in-memory graph processing (Delamare, [0021]). Claim 6: Liang, Yue and Delamare teach the computer-implemented method of claim 5, wherein, after the query condition that needs to be executed by the operator is serialized, the serialized query condition is transmitted to the storage engine through a predetermined communication protocol, so that the storage engine deserializes, as a deserialized query condition, the serialized query condition and executes the deserialized query condition based on a result of deserialization (Delamare, [0021] note an approach for reducing memory pressure in distributed in-memory graph processing, with a focus on graph queries, by loading only necessary graph components in memory during user computation, [0045] note A user command or graph processing operation, such as a graph query, is executed by a job 210 in the distributed graph engine… Also, graph components can be serialized and deserialized efficiently, [0137] note Communication Between Job and Storage Manager, [0153] note Computer system 900 includes a bus 902 or other communication mechanism for communicating information). Claims 16-18 are rejected under 35 U.S.C. 103 as being unpatentable over Liang and Yue in further view of Subramani et al., US 20170329871 A1 (hereinafter “Subramani”). Claim 16: Liang and Yue do not explicitly teach the computer-implemented method of claim 11, wherein each data block is stored in the corresponding storage device in a predetermined storage order, and the predetermined storage order is related to the plurality of pieces of attribute information However, Subramani teaches this (Subramani, [0044] note FIG. 10 is a flow chart illustrating an embodiment of a process to sort data stored in a graph database. In various embodiments, the process of FIG. 10 may be performed by a graph database system, such as graph database system 112 of FIG. 1. In various embodiments, the process of FIG. 10 may be implemented to store graph data in a sorted order that facilitates retrieval of data, such as by quickly traversing a graph to find data of interest. In the example shown, when node (page) slot data is updated (1002), the prior to writing the page to storage the slots are sorted by slot type (e.g., node attribute slots first, then edge slots, followed last by edge attribute slots) (1004). Within the node attribute slots, the slots are sorted by attribute descriptor identifier (1006). Edges are sorted by edge id (1008) and edge attributes are sorted by edge id, then attribute descriptor id (1010)). It would have been obvious to one of ordinary skill in the art at the effective filing date of the application to combine the graph database of Liang and Yue with the sorted data stored in a graph database of Subramani according to known methods (i.e. sorting data stored in a graph database). Motivation for doing so is that graph databases comprising a large number of edges (e.g., relationships), such as may be characteristic of social network and similar data sets, may be stored and accessed efficiently (Subramani, [0045]). Claim 17: Liang, Yue and Subramani teach the computer-implemented method of claim 16, wherein the predetermined storage order comprises a combination of one or more of: a first order: a node being ranked before an edge; a second order: an incoming edge being ranked before an outgoing edge, or an outgoing edge being ranked before an incoming edge; a third order: an order corresponding to labels; or a fourth order: an order corresponding to time information (Subramani, [0044] note FIG. 10 is a flow chart illustrating an embodiment of a process to sort data stored in a graph database. In various embodiments, the process of FIG. 10 may be performed by a graph database system, such as graph database system 112 of FIG. 1. In various embodiments, the process of FIG. 10 may be implemented to store graph data in a sorted order that facilitates retrieval of data, such as by quickly traversing a graph to find data of interest. In the example shown, when node (page) slot data is updated (1002), the prior to writing the page to storage the slots are sorted by slot type (e.g., node attribute slots first, then edge slots, followed last by edge attribute slots) (1004). Within the node attribute slots, the slots are sorted by attribute descriptor identifier (1006). Edges are sorted by edge id (1008) and edge attributes are sorted by edge id, then attribute descriptor id (1010)). Claim 18: Liang, Yue and Subramani teach the computer-implemented method of claim 17, wherein a sorting priority of the first order is higher than a sorting priority of the second order, the sorting priority of the second order is higher than a sorting priority of the third order, and the sorting priority of the third order is higher than a sorting priority the fourth order (Subramani, [0044] note FIG. 10 is a flow chart illustrating an embodiment of a process to sort data stored in a graph database. In various embodiments, the process of FIG. 10 may be performed by a graph database system, such as graph database system 112 of FIG. 1. In various embodiments, the process of FIG. 10 may be implemented to store graph data in a sorted order that facilitates retrieval of data, such as by quickly traversing a graph to find data of interest. In the example shown, when node (page) slot data is updated (1002), the prior to writing the page to storage the slots are sorted by slot type (e.g., node attribute slots first, then edge slots, followed last by edge attribute slots) (1004). Within the node attribute slots, the slots are sorted by attribute descriptor identifier (1006). Edges are sorted by edge id (1008) and edge attributes are sorted by edge id, then attribute descriptor id (1010)). Conclusion Any inquiry concerning this communication or earlier communications from the examiner should be directed to Giuseppi Giuliani whose telephone number is (571)270-7128. The examiner can normally be reached Monday-Friday. 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, Kavita Stanley can be reached at (571)272-8352. 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. /GIUSEPPI GIULIANI/Primary Examiner, Art Unit 2153
Read full office action

Prosecution Timeline

Jan 10, 2025
Application Filed
May 07, 2026
Non-Final Rejection mailed — §103, §112 (current)

Precedent Cases

Applications granted by this same examiner with similar technology

Patent 12675463
APPARATUSES, SYSTEMS, AND METHODS FOR PROVIDING AN EVENT MANAGEMENT FRAMEWORK FOR A GEOGRAPHIC INFORMATION SYSTEM
3y 5m to grant Granted Jul 07, 2026
Patent 12675393
EFFICIENT BURST SORT BASED ON NETWORK-ATTACHED MEMORY
2y 0m to grant Granted Jul 07, 2026
Patent 12639293
SYSTEMS AND METHODS FOR PAGINATING SEARCH RESULTS RETRIEVED FROM DATABASES THAT SUPPORT CURSOR-BASED PAGINATION
3y 4m to grant Granted May 26, 2026
Patent 12632499
SYSTEMS AND METHODS FOR USING GRAPH DATA STRUCTURES
1y 8m to grant Granted May 19, 2026
Patent 12613916
SYSTEMS AND METHODS TO INCREASE VIEWERSHIP OF ONLINE CONTENT
5y 0m to grant Granted Apr 28, 2026
Study what changed to get past this examiner. Based on 5 most recent grants.

Strategy Recommendation AI-generated — please review before filing

Get a prosecution strategy drawn from examiner precedents, rejection analysis, and claim mapping.
Typically takes 5-10 seconds — AI-generated, attorney review required before filing

Prosecution Projections

1-2
Expected OA Rounds
58%
Grant Probability
65%
With Interview (+7.0%)
3y 5m (~1y 10m remaining)
Median Time to Grant
Low
PTA Risk
Based on 288 resolved cases by this examiner. Grant probability derived from career allowance rate.

Sign in with your work email

Enter your email to receive a magic link. No password needed.

Personal email addresses (Gmail, Yahoo, etc.) are not accepted.

Free tier: 3 strategy analyses per month