IP Library › Granted Patent US 12,339,842
Granted Patent B2
US 12,339,842 · App. 18/091,249 · Granted Jun 24, 2025

Subqueries in distributed asynchronous graph queries

Inventors: Vasileios Trigonakis (Zurich, CH); Anton Ragot (Switzerland, CH); Yahya Ez-zainabi (Berrechid, MA); Tomas Faltin (Prague, CZ); Sungpack Hong (Palo Alto, CA); Hassan Chafi (San Mateo, CA)
Assignee: Oracle International Corporation
G06F16/24535G06F16/9024
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 12,339,842
App. No.
18/091,249
Granted
Jun 24, 2025
Kind
B2
Abstract

A graph processing engine is provided for executing a graph query comprising a parent query and a subquery nested within the parent query. The subquery is an existential subquery, uses a reference to one or more correlated variables from the parent query, is inlined in the parent query pattern matching, does not have a post-processing phase, does not contain any global aggregation operations, uses a reference to at most one non-correlated variable, and does not include any filters on a non-correlated variable. Executing the graph query comprises initiating execution of the parent query, responsive to the parent query matching the one or more correlated variables in an intermediate result set, executing the subquery by applying a neighbor pattern matching operator that checks for existence of an edge, and resuming execution of the parent query based on results of the neighbor pattern matching operation.

Claims (40)

1. A computer-executed method comprising:

a graph processing engine executing a graph query, wherein:

the graph query comprises a parent query and a subquery nested within the parent query;

the subquery is an existential subquery returning a Boolean value that depends on whether the subquery produces at least one match result;

the subquery uses a reference to one or more correlated variables from the parent query;

the subquery is inlined in the parent query pattern matching, does not have a post-processing phase, and does not contain any global aggregation operations;

the subquery uses a reference to at most one non-correlated variable;

the subquery does not include any filters on a non-correlated variable;

executing the graph query comprises:

initiating execution of the parent query, wherein the parent query matches the one or more correlated variables in an intermediate result set;

responsive to the parent query matching the one or more correlated variables in the intermediate result set, executing the subquery by applying a neighbor pattern matching operator that checks for existence of an edge; and

resuming execution of the parent query based on results of the neighbor pattern matching operation.

2. The method of claim 1 , wherein executing the subquery comprises initiating execution of the subquery at a last variable, of the one or more correlated variables, visited by the parent query.

3. The method of claim 2 , wherein the neighbor pattern matching operation comprises an operator that checks an edge list of the last variable visited by the parent query and produces a match only if no suitable edges are found.

4. The method of claim 2 , wherein the neighbor pattern matching operation comprises an operator that checks an edge list of the last variable visited by the parent query and produces a match only if a suitable edge is found.

5. The method of claim 1 , wherein executing the graph query comprises executing the subquery using asynchronous distributed graph traversals.

6. The method of claim 1 , wherein initiating execution of the parent query comprises initiating asynchronous graph traversals in a first pattern matching phase of the parent query.

7. The method of claim 6 , wherein resuming execution of the parent query comprises resuming asynchronous graph traversals in a second pattern matching phase of the parent query.

8. The method of claim 6 , wherein resuming execution of the parent query comprises initiating execution of operations that require bulk-synchronous execution in a post-processing phase of the parent query.

9. The method of claim 1 , wherein the graph query is a subquery of another graph query.

10. One or more non-transitory storage media storing instructions which, when executed by one or more computing devices, cause:

a graph processing engine executing a graph query, wherein:

the graph query comprises a parent query and a subquery nested within the parent query;

the subquery is an existential subquery returning a Boolean value that depends on whether the subquery produces at least one match result;

the subquery uses a reference to one or more correlated variables from the parent query;

the subquery is inlined in the parent query pattern matching, does not have a post-processing phase, and does not contain any global aggregation operations;

the subquery uses a reference to at most one non-correlated variable;

the subquery does not include any filters on a non-correlated variable;

executing the graph query comprises:

initiating execution of the parent query, wherein the parent query matches the one or more correlated variables in an intermediate result set;

responsive to the parent query matching the one or more correlated variables in the intermediate result set, executing the subquery by applying a neighbor pattern matching operator that checks for existence of an edge; and

resuming execution of the parent query based on results of the neighbor pattern matching operation.

11. The method of claim 10 , wherein executing the subquery comprises initiating execution of the subquery at a last variable, of the one or more correlated variables, visited by the parent query.

12. The method of claim 11 , wherein the neighbor pattern matching operation comprises an operator that checks an edge list of the last variable visited by the parent query and produces a match only if no suitable edges are found.

13. The method of claim 11 , wherein the neighbor pattern matching operation comprises an operator that checks an edge list of the last variable visited by the parent query and produces a match only if a suitable edge is found.

14. The method of claim 10 , wherein executing the graph query comprises executing the subquery using asynchronous distributed graph traversals.

15. The method of claim 10 , wherein initiating execution of the parent query comprises initiating asynchronous graph traversals in a first pattern matching phase of the parent query.

16. The method of claim 15 , wherein resuming execution of the parent query comprises resuming asynchronous graph traversals in a second pattern matching phase of the parent query.

17. The method of claim 15 , wherein resuming execution of the parent query comprises initiating execution of operations that require bulk-synchronous execution in a post-processing phase of the parent query.

18. The method of claim 10 , wherein the graph query is a subquery of another graph query.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 30, 2022
From: TRIGONAKIS, VASILEIOS; RAGOT, ANTON; EZ-ZAINABI, YAHYA; FALTIN, TOMAS; HONG, SUNGPACK; CHAFI, HASSAN
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 062241/0439 →
Continuity (1)
Related Publication 20240220496A1 · Jul 4, 2024
References Cited (28)
US 11243949B2 · Kreutzer · 2022 [cited by applicant]
US 11321330B1 · Pandis · 2022 [cited by applicant]
US 20160103931A1 · Appavu · 2016 [cited by applicant]
US 20160179883A1 · Chen · 2016 [cited by examiner]
US 20170046388A1 · Kirk et al. · 2017 [cited by applicant]
US 20180067987A1 · Kang et al. · 2018 [cited by applicant]
US 20180218088A1 · Fischer et al. · 2018 [cited by applicant]
US 20190005044A1 · Bell · 2019 [cited by examiner]
US 20190213356A1 · Vagujhelyi et al. · 2019 [cited by applicant]
US 20210240705A1 · Trigonakis · 2021 [cited by examiner]
US 20220129451A1 · Haprian et al. · 2022 [cited by applicant]
US 20220414100A1 · Carter · 2022 [cited by examiner]
Haprian, U.S. Appl. No. 17/080,698, filed Oct. 26, 2020, Notice of Allowance and Fees Due, Dec. 28, 2022. [cited by applicant]
Haprian, U.S. Appl. No. 17/080,698, filed Oct. 26, 2020, Notice of Allowance and Fees Due, Sep. 14, 2022. [cited by applicant]
Haprian, U.S. Appl. No. 17/080,698, filed Oct. 26, 2020, Non-Final Rejection, Dec. 24, 2021. [cited by applicant]
Haprian, U.S. Appl. No. 17/080,698, filed Oct. 26, 2020, Final Rejection, May 18, 2022. [cited by applicant]
Zemke, Fred, “Fixed Graph Patterns”, ISO/IEC SC32/WG3:ERF-035, dated Sep. 14, 2018, 25 pages. [cited by applicant]
TigerGraph, “The Only Scalable Graph Database for the Enterprise”, https://www.tigergraph.com/, last viewed on Nov. 4, 2020, 9 pages. [cited by applicant]
PGQL, “Property Graph Query Language”, http://pgql-lang.org/, last viewed on Nov. 3, 2020, 5 pages. [cited by applicant]
Neo4j Graph Platform, “What is Neo4j?”, https://neo4j.com/, last viewed on Nov. 4, 2020, 14 pages. [cited by applicant]
Neo4j Graph Database Platform, “Cypher Query Language”, https://neo4j.com/developer/cypher/, dated Nov. 4, 2020, 7 pages. [cited by applicant]
Michaels, Jan, “Property Graph Data Model—The Proposal”, Individual Expert Contribution, dated Jan. 16, 2019, 76 pages. [cited by applicant]
Databricks, “Graph Analysis Tutorial with GraphFrames”, dated Jul. 21, 2020, https://docs.databricks.com/spark/latest/graph-analysis/graphframes/graph-analysis-tutorial.html, 2 pages. [cited by applicant]
Apache TinkerPop, “The Gremlin Graph Traversal Machine and Language”, tinkerpop.apache.org/gremlin.html, last viewed on Nov. 4, 2020, 6 pages. [cited by applicant]
Amazon Neptune, “Overview” https://aws.amazon.com/neptune/, last viewed on Nov. 4, 2020, 20 pages. [cited by applicant]
Trigonakis, U.S. Appl. No. 18/091,242, filed Dec. 29, 2022, Notice of Allowance and Fees Due. [cited by applicant]
Trigonakis, Vasileios et al., “aDFS: An Almost Depth-First-Search Distributed Graph-Querying System”, Proceedings of The 2021 Usenix Annual Technical Conference, 17 pages. [cited by applicant]
Roth, Nicholas P et al., “PGX.D Async: A Scalable Distributed Graph Pattern Matching Engine”, 6 pages. [cited by applicant]