IP Library Granted Patent US 9,378,241
Granted Patent B1
US 9,378,241 · App. 14/858,192 · Granted Jun 28, 2016

Concatenated queries based on graph-query results

View Patent ↗
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 9,378,241
App. No.
14/858,192
Granted
Jun 28, 2016
Kind
B1
Abstract

In order to request desired information from a graph database, a system executes a query against the graph database. The graph database may store a graph that includes nodes, edges between the nodes, and predicates to represent and store data with index-free adjacency. Moreover, the query may identify a first edge associated with a predicate that specifies one or more of the nodes in the graph. In response to the query, the system receives a result that includes a subset of the graph. Then, the system may use the result of the query in a concatenated set of queries. In particular, the system may execute a second query against the subset of the graph. Furthermore, in response to the second query, the system may receive a second result that includes a second subset of the graph.

Claims (53)

1. A computer-system-implemented method for requesting desired information from a graph database, the method comprising:

executing a first query against the graph database storing a graph, wherein: the graph comprises nodes, edges between the nodes, and

predicates to represent and store data with index-free adjacency; and the first query identifies a first edge associated with a first predicate that specifies one or more of the nodes in the graph;

receiving a first result in response to the first query, wherein the first result includes a first subset of the graph;

executing a second query against the first subset of the graph, wherein the second query identifies a second edge associated with a second predicate that specifies one or more of the nodes; and

receiving a second result in response to the second query, wherein the second result includes a second subset of the graph;

wherein the results of the first query and the second query are used in concatenated queries, thereby avoiding joining intermediate results.

2. The method of claim 1 , wherein the method further comprises executing one or more additional queries on the first subset of the graph.

3. The method of claim 1 , wherein the method further comprises executing a third query on the second subset of the graph.

4. The method of claim 1 , wherein executing the second query on the first subset of the graph eliminates a need to execute the second query on the graph database.

5. The method of claim 1 , wherein the method further comprises generating the first query based on the desired information.

6. The method of claim 1 , wherein the method further comprises:

receiving another query that is compatible with a type of database that is different from the graph database; and

converting the other query into the query.

7. The method of claim 6 , wherein the type of database includes one of: a relational database, and a hierarchical database.

8. The method of claim 1 , wherein the method further comprises:

receiving another query that is compatible with JavaScript Object Notation; and

converting the other query into the query.

9. The method of claim 1 , wherein the first subset of the graph includes the desired information expressed within an associated structure of the graph.

10. An apparatus, comprising:

one or more processors;

memory; and

a program module, wherein the program module is stored in the memory and, during operation of the apparatus, is executed by the one or more processors to request desired information from a graph database, the program module including:

instructions for executing a first query against the graph database storing a graph, wherein:

the graph comprises nodes, edges between the nodes, and predicates to represent and store data with index-free adjacency; and

the first query identifies a first edge associated with a first predicate that specifies one or more of the nodes in the graph;

instructions for receiving a first result in response to the first query, wherein the first result includes a first subset of the graph;

instructions for executing a second query against the first subset of the graph, wherein the second query identifies a second edge associated with a second predicate that specifies one or more of the nodes; and

instructions for receiving a second result in response to the second query, wherein the second result includes a second subset of the graph;

wherein the results of the first query and the second query are used in concatenated queries, thereby avoiding joining intermediate results.

11. The apparatus of claim 10 , wherein the program module further comprises instructions for executing one or more additional queries on the first subset of the graph.

12. The apparatus of claim 10 , wherein the program module further comprises instructions for executing a third query on the second subset of the graph.

13. The apparatus of claim 10 , wherein executing the second query on the first subset of the graph eliminates a need to execute the second query on the graph database.

14. The apparatus of claim 10 , wherein the program module further comprises instructions for generating the first query based on the desired information.

15. The apparatus of claim 10 , wherein the program module further comprises instructions for:

receiving another query that is compatible with a type of database that is different from the graph database; and

converting the other query into the query.

16. The apparatus of claim 15 , wherein the type of database includes one of: a relational database, and a hierarchical database.

17. The apparatus of claim 10 , wherein the program module further comprises instructions for:

receiving another query that is compatible with JavaScript Object Notation; and

converting the other query into the query.

18. The apparatus of claim 10 , wherein the first subset of the graph includes the desired information expressed with an associated structure of the graph.

19. A system, comprising:

a processing module comprising a non-transitory computer readable medium storing instructions that, when executed, cause the system to:

execute a first query against a graph database storing a graph, wherein:

the graph comprises nodes, edges between the nodes, and predicates to represent and store data with index-free adjacency; and

the first query identifies a first edge associated with a first predicate that specifies one or more of the nodes in the graph;

receive a first result in response to the first query, wherein the first result includes a first subset of the graph;

execute a second query against the first subset of the graph, wherein the second query identifies a second edge associated with a second predicate that specifies one or more of the nodes; and

receive a second result in response to the second query, wherein the second result includes a second subset of the graph;

wherein the results of the first query and the second query are used in concatenated queries, thereby avoiding joining intermediate results.

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

execute one or more additional queries on the first subset of the graph.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 1, 2017
From: LINKEDIN CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 044746/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 8, 2015
From: SHANKAR, SRINATH; STEPHENSON, ROBERT W.; CARTER, ANDREW J.; MEYER, SCOTT M.
To: LINKEDIN CORPORATION
Reel/Frame 036761/0480 →