Prosecution Insights
Last updated: October 25, 2026
Application No. 19/017,159

GRAPH DATA QUERY METHOD FOR GRAPH DATABASES AND RELATED DEVICES

Final Rejection §103
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
2 (Final)
58%
Grant Probability
Moderate
3-4
OA Rounds
1y 7m
Est. Remaining
65%
With Interview

Examiner Intelligence

Grants 58% of resolved cases
58%
Career Allowance Rate
172 granted / 294 resolved
+3.5% vs TC avg
Moderate +7% lift
Without
With
+6.7%
Interview Lift
resolved cases with interview
Typical timeline
3y 4m
Avg Prosecution
7 currently pending
Career history
320
Total Applications
across all art units

Statute-Specific Performance

§101
12.9%
-27.1% vs TC avg
§103
55.1%
+15.1% vs TC avg
§102
11.7%
-28.3% vs TC avg
§112
14.0%
-26.0% vs TC avg
Black line = Tech Center average estimate • Based on career data from 294 resolved cases

Office Action

§103
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 . Remarks This action is in response to the applicant’s response filed 3 August 2026, which is in response to the USPTO office action mailed 7 May 2026. Claims 1, 7-9, 11, 13-15, 19 and 20 are amended. Claims 3 and 4 are cancelled. Claims 1, 2 and 5-20 are currently pending. Response to Arguments With respect to the 35 USC §103 rejections of claims 1-20, the applicant’s arguments are moot in view of a new grounds of rejection, as necessitated by the applicant's amendments. 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, 2, 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”) in further view of LAI US 2026/0228218 A1 (hereinafter “Lai”). 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; encoding, by the query engine, the query condition that needs to be executed by the operator to obtain an encoded query condition; and exposing, by the query engine through an interface, the encoded query condition to the storage engine, wherein the storage engine parses the encoded query condition and executes the query request based on a result of the parsing. However, Yue teaches performing statistical analysis (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]). Liang and Yue do not explicitly teach encoding, by the query engine, the query condition that needs to be executed by the operator to obtain an encoded query condition; and exposing, by the query engine through an interface, the encoded query condition to the storage engine, wherein the storage engine parses the encoded query condition and executes the query request based on a result of the parsing. However, Lai teaches this (Lai, [Fig. 1], [Fig. 6], [0183] note FIG. 6 is a flowchart of a graph query method applied to a graph query system, [0184] note In step 602, the client parses a sub-graph query statement sent by a user for an initial property graph, and generates a sub-graph structure corresponding to the sub-graph query statement; determines a target sub-graph query execution policy in a preset calculation manner based on sub-graph statistical information and the sub-graph structure, where the sub-graph statistical information is obtained from a graph data structure constructed based on a target property graph; and encodes the target sub-graph query execution policy into a data flow structure, and sends the data flow structure to the service end, [0185] note In step 604, the service end receives the data flow structure sent by the client, and sends the data flow structure to a target execution node of a distributed computing cluster; and obtains a target sub-graph determined through performing, by the target execution node, querying in the initial property graph based on a decoding result obtained through decoding, by the target execution node, the data flow structure, and returns the target sub-graph to the client). 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 and Yue with the graph query method of Lai according to known methods (i.e. executing an encoded data flow structure). Motivation for doing so is that the efficiency of matching and query of a graph pattern is greatly improved (Lai, [0181]). Claim 2: Liang, Yue and Lai 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 7: Liang, Yue and Lai 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 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 or a target edge that satisfies the filtering condition related to the plurality of pieces of attribute information, and reading the target node 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, Yue and Lai 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, a plurality of edges, or a combination thereof 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, the plurality of edges, or the combination thereof 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, Yue and Lai 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 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, Yue and Lai 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, Yue and Lai 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, target edges, or a combination thereof 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, Yue and Lai 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, Yue and Lai 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, the plurality of edges, or the combination thereof 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, Yue and Lai 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 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, Yue and Lai teach the computer-implemented method of claim 14, comprising: parsing the target data block to obtain target nodes, target edges, or a combination thereof comprised in the target data block that satisfy the filtering condition, comprises: parsing the target data block to obtain the target nodes, the target edges, or the combination thereof 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, the target edges, or the combination thereof; 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; encoding, by the query engine, the query condition that needs to be executed by the operator to obtain an encoded query condition; and exposing, by the query engine through an interface, the encoded query condition to the storage engine, wherein the storage engine parses the encoded query condition and executes the query request based on a result of the parsing. However, Yue teaches performing statistical analysis (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]). Liang and Yue do not explicitly teach encoding, by the query engine, the query condition that needs to be executed by the operator to obtain an encoded query condition; and exposing, by the query engine through an interface, the encoded query condition to the storage engine, wherein the storage engine parses the encoded query condition and executes the query request based on a result of the parsing. However, Lai teaches this (Lai, [Fig. 1], [Fig. 6], [0183] note FIG. 6 is a flowchart of a graph query method applied to a graph query system, [0184] note In step 602, the client parses a sub-graph query statement sent by a user for an initial property graph, and generates a sub-graph structure corresponding to the sub-graph query statement; determines a target sub-graph query execution policy in a preset calculation manner based on sub-graph statistical information and the sub-graph structure, where the sub-graph statistical information is obtained from a graph data structure constructed based on a target property graph; and encodes the target sub-graph query execution policy into a data flow structure, and sends the data flow structure to the service end, [0185] note In step 604, the service end receives the data flow structure sent by the client, and sends the data flow structure to a target execution node of a distributed computing cluster; and obtains a target sub-graph determined through performing, by the target execution node, querying in the initial property graph based on a decoding result obtained through decoding, by the target execution node, the data flow structure, and returns the target sub-graph to the client). 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 and Yue with the graph query method of Lai according to known methods (i.e. executing an encoded data flow structure). Motivation for doing so is that the efficiency of matching and query of a graph pattern is greatly improved (Lai, [0181]). 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; encoding, by the query engine, the query condition that needs to be executed by the operator to obtain an encoded query condition; and exposing, by the query engine through an interface, the encoded query condition to the storage engine, wherein the storage engine parses the encoded query condition and executes the query request based on a result of the parsing. However, Yue teaches performing statistical analysis (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]). Liang and Yue do not explicitly teach encoding, by the query engine, the query condition that needs to be executed by the operator to obtain an encoded query condition; and exposing, by the query engine through an interface, the encoded query condition to the storage engine, wherein the storage engine parses the encoded query condition and executes the query request based on a result of the parsing. However, Lai teaches this (Lai, [Fig. 1], [Fig. 6], [0183] note FIG. 6 is a flowchart of a graph query method applied to a graph query system, [0184] note In step 602, the client parses a sub-graph query statement sent by a user for an initial property graph, and generates a sub-graph structure corresponding to the sub-graph query statement; determines a target sub-graph query execution policy in a preset calculation manner based on sub-graph statistical information and the sub-graph structure, where the sub-graph statistical information is obtained from a graph data structure constructed based on a target property graph; and encodes the target sub-graph query execution policy into a data flow structure, and sends the data flow structure to the service end, [0185] note In step 604, the service end receives the data flow structure sent by the client, and sends the data flow structure to a target execution node of a distributed computing cluster; and obtains a target sub-graph determined through performing, by the target execution node, querying in the initial property graph based on a decoding result obtained through decoding, by the target execution node, the data flow structure, and returns the target sub-graph to the client). 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 and Yue with the graph query method of Lai according to known methods (i.e. executing an encoded data flow structure). Motivation for doing so is that the efficiency of matching and query of a graph pattern is greatly improved (Lai, [0181]). Claims 5 and 6 are rejected under 35 U.S.C. 103 as being unpatentable over Liang, Yue and Lai in further view of DELAMARE et al., US 2024/0143594 A1 (hereinafter “Delamare”). Claim 5: Liang, Yue and Lai 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, Yue and Lai 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, Lai 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, Yue and Lai in further view of Subramani et al., US 20170329871 A1 (hereinafter “Subramani”). Claim 16: Liang, Yue and Lai 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, Yue and Lai 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, Lai 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, Lai 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 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 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
Aug 03, 2026
Response Filed
Oct 08, 2026
Final Rejection mailed — §103 (current)

Precedent Cases

Applications granted by this same examiner with similar technology

Patent 12748727
SYSTEM AND METHOD FOR UTILIZING SEARCH TREES AND TAGGING DATA ITEMS FOR DATA COLLECTION MANAGING TASKS
4y 1m to grant Granted Sep 29, 2026
Patent 12748806
METHODS AND SYSTEMS FOR AUTOMATICALLY GENERATING QUERIES AND DISPLAYING VISUAL REPRESENTATIONS OF QUERY RESULTS USING GRAPHICS PROCESSING UNITS
2y 11m to grant Granted Sep 29, 2026
Patent 12717784
QUERY EXPRESSION REPOSITORY
6y 8m to grant Granted Aug 25, 2026
Patent 12717844
SYSTEMS, METHODS, COMPUTING PLATFORMS, AND STORAGE MEDIA FOR COMPARING DATA SETS THROUGH DECOMPOSING DATA INTO A DIRECTED ACYCLIC GRAPH
2y 6m to grant Granted Aug 25, 2026
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
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

3-4
Expected OA Rounds
58%
Grant Probability
65%
With Interview (+6.7%)
3y 4m (~1y 7m remaining)
Median Time to Grant
Moderate
PTA Risk
Based on 294 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