IP Library Patent Application 15618368
Patent Application
App. No. 15/618,368

PROCESSING AGGREGATE QUERIES IN A GRAPH DATABASE

Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US None
App. No.
15/618,368
Abstract

The disclosed embodiments provide a system for processing queries of a graph database. During operation, the system executes one or more processes for providing the graph database storing a graph, wherein the graph includes a set of nodes, a set of edges between pairs of nodes in the set of nodes, and a set of predicates. Next, the system obtains, from the query, an aggregation by a first attribute and a grouping by a second attribute. The system then uses the second attribute to generate a set of groupings of records in the graph database. For each grouping in the set of groupings, the system applies the aggregation to the first attribute in a subset of the records in the grouping to generate an aggregation result. Finally, the system uses the aggregation result to provide a response to the query.

Claims (70)

1 . A method, comprising:

executing a set of processes for processing queries of a graph database storing a graph, wherein the graph comprises a set of nodes, a set of edges between pairs of nodes in the set of nodes, and a set of predicates; and

when a query of the graph database is received, using one or more of the processes to process the query by:

obtaining, from the query, an aggregation by a first attribute and a grouping by a second attribute;

using the second attribute to generate a set of groupings of records in the graph database;

for each grouping in the set of groupings, applying the aggregation to the first attribute in a subset of the records in the grouping to generate an aggregation result; and

using the aggregation result to provide a response to the query.

2 . The method of claim 1 , further comprising:

expanding the query into a set of base terms comprising the aggregation and the grouping prior to generating the aggregation result.

3 . The method of claim 2 , further comprising:

assigning, to the base terms, a set of positions in an evaluation order for the query; and

evaluating the base terms according to the positions in the evaluation order.

4 . The method of claim 3 , wherein assigning the set of positions in the evaluation order to the base terms comprises:

assigning a first position in the evaluation order to a first subset of the base terms comprising the aggregation; and

assigning a second position that is later than the first position in the evaluation order to a second subset of the base terms comprising a subquery in which the aggregation is nested.

5 . The method of claim 4 , wherein assigning the set of positions in the evaluation order to the base terms further comprises:

assigning a third position that is earlier than the first position to a third subset of the base terms comprising a set of edges to which the aggregation is applied.

6 . The method of claim 4 , wherein evaluating the base terms according to the positions in the evaluation order comprises:

evaluating the first subset of the base terms to obtain the aggregation result; and

providing the aggregation result as input to the second subset of the base terms.

7 . The method of claim 2 , wherein the set of base terms comprises a set of edges.

8 . The method of claim 2 , wherein expanding the query into the set of base terms comprises:

using a schema to transform one or more terms in the query into the set of base terms.

9 . The method of claim 1 , wherein generating the aggregation result comprises:

producing the aggregation result as a subgraph of the graph.

10 . The method of claim 1 , wherein the aggregation is at least one of:

a count;

a sum;

a maximum;

a minimum;

an average; and

a percentile.

11 . The method of claim 1 , wherein the aggregation is at least one of:

a rank; and

a pagination.

12 . An apparatus, comprising:

one or more processors; and

memory storing instructions that, when executed by the one or more processors, cause the apparatus to:

execute a set of processes for processing queries of a graph database storing a graph, wherein the graph comprises a set of nodes, a set of edges between pairs of nodes in the set of nodes, and a set of predicates; and

when a query of the graph database is received, use one or more of the processes to process the query by:

obtaining, from the query, an aggregation by a first attribute and a grouping by a second attribute;

using the second attribute to generate a set of groupings of records in the graph database;

for each grouping in the set of groupings, applying the aggregation to the first attribute in a subset of the records in the grouping to generate an aggregation result; and

using the aggregation result to provide a response to the query.

13 . The apparatus of claim 12 , wherein the memory further stores instructions that, when executed by the one or more processors, cause the apparatus to:

expand the query into a set of base terms comprising the aggregation and the grouping prior to generating the aggregation result.

14 . The apparatus of claim 13 , wherein the memory further stores instructions that, when executed by the one or more processors, cause the apparatus to:

assign, to the base terms, a set of positions in an evaluation order for the query; and

evaluate the base terms according to the positions in the evaluation order.

15 . The apparatus of claim 14 , wherein assigning the set of positions in the evaluation order to the base terms comprises:

assigning a first position in the evaluation order to a first subset of the base terms comprising the aggregation; and

assigning a second position that is later than the first position in the evaluation order to a second subset of the base terms comprising a subquery in which the aggregation is nested.

16 . The apparatus of claim 15 , wherein evaluating the base terms according to the positions in the evaluation order comprises:

evaluating the first subset of the base terms to obtain the aggregation result; and

providing the aggregation result as input to the second subset of the base terms.

17 . The apparatus of claim 13 , wherein expanding the query into the set of base terms comprises:

using a schema to transform one or more terms in the query into the set of base terms.

18 . The apparatus of claim 12 , wherein generating the aggregation result comprises:

producing the aggregation result as a subgraph of the graph.

19 . A system, comprising:

a graph database storing a graph, wherein the graph comprises a set of nodes, a set of edges between pairs of nodes in the set of nodes, and a set of predicates; and

a processing module comprising a non-transitory computer-readable medium comprising instructions that, when executed, cause the system to process a query of the graph database by:

obtaining, from the query, an aggregation by a first attribute and a grouping by a second attribute;

using the second attribute to generate a set of groupings of records in the graph database;

for each grouping in the set of groupings, applying the aggregation to the first attribute in a subset of the records in the grouping to generate an aggregation result; and

using the aggregation result to provide a response to the query.

20 . The system of claim 19 , wherein the non-transitory computer-readable medium of the processing module further comprises instructions that, when executed, cause the system to:

expand the query into a set of base terms comprising the aggregation and the grouping prior to generating the aggregation result;

assign, to the base terms, a set of positions in an evaluation order for the query; and

evaluate the base terms according to the positions in the evaluation order.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 3, 2017
From: LINKEDIN CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 044779/0602 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 20, 2017
From: MOUSTAFA, WALAA ELDIN M.; CARTER, ANDREW J.; RODRIGUEZ, ANDREW; MEYER, SCOTT M.
To: LINKEDIN CORPORATION
Reel/Frame 042757/0372 →