IP Library Granted Patent US 12,724,823
Granted Patent B2
US 12,724,823 · App. 17/194,165 · Granted Sep 1, 2026

Fast and memory efficient in-memory columnar graph updates while preserving analytical performance

Inventors: Damien Hilloulin (Zurich, CH); Vasileios Trigonakis (Zurich, CH); Alexander Weld (Mountain View, CA); Valentin Venzin (Zurich, CH); Sungpack Hong (Palo Alto, CA); Hassan Chafi (San Mateo, CA)
Assignee: Oracle International Corporation
G06F16/9024G06F16/2282
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,724,823
App. No.
17/194,165
Granted
Sep 1, 2026
Kind
B2
Abstract

Techniques are provided for updating in-memory property graphs in a fast manner, while minimizing memory consumption. A graph is represented as delta compressed sparse rows (CSR), in which its data structure stores forward edge offsets that map reverse edges to forward edges, enabling fast traversals of graph edges in forward and reverse directions. To support fast graph updates, delta logs are used to store changes to the graph. In an embodiment, a base version of the graph data structure is initially loaded or created, and subsequent versions of the graph are created from the reference to the initial graph and a delta log data structure that records the changes compared to the base version of the graph.

Claims (78)

1 . A method comprising:

in memory of one or more computers, storing an in-memory bi-directional representation for a graph comprising a plurality of vertices connected by a plurality of edges, wherein each of the plurality of edges is directed from a respective source vertex to a respective destination vertex;

wherein storing the in-memory bi-directional representation for the graph includes:

storing a forward representation of the graph that comprises:

an edge array that is segmented, wherein each edge array index of the edge array holds a vertex id of a destination vertex of a respective edge that corresponds to a respective edge array index;

a begin array that is segmented, wherein each begin array index of the begin array is associated with a respective source vertex identified by a respective begin array index and holds an edge array index at which a respective source vertex edge list of the respective source vertex is stored sequentially within the edge array;

storing a reverse representation of the graph that comprises:

a reverse edge array that is segmented, wherein each reverse edge array index of the reverse edge array holds a vertex id of a source vertex of a respective edge that corresponds to the respective reverse edge array index;

a reverse begin array that is segmented, wherein each reverse begin array index of the reverse begin array is associated with a respective destination vertex identified by the respective reverse begin array index and holds a reverse edge array index at which a respective destination vertex edge list of the respective destination vertex is stored sequentially within the reverse edge array;

an edge offset array that is segmented, wherein each edge offset array index of the edge offset array corresponds to a particular reverse edge array index and a particular edge and a particular source vertex of the particular reverse edge array index, wherein said particular source vertex has a particular source vertex id, wherein said each edge offset array index holds an offset for a particular edge within the edge array, wherein a sum of the offset and the offset held in the begin array at the begin array index that is equal to the particular source vertex id equals the edge array index of the particular edge;

wherein:

the plurality of vertices are stored in a plurality of tables that include at least two vertex tables, and

each property of said at least two vertex tables is associated with an array with delta logs, the array with delta logs comprising (1) a consolidated values array storing values associated with a consolidated version of the vertex table (2) a delta log data structure storing changes compared to the consolidated values array; and

for a new snapshot of the graph, updating said graph with graph changes to said graph, wherein said updating includes:

for each property of said at least two vertex tables that has modifications included in said changes generating a new array of delta logs based on a previous respective array of delta logs of said each property; and

for each property of said at least two vertex tables without modifications included in said changes, reusing the respective array of delta logs of said each property for said new snapshot.

2 . The method of claim 1 , wherein the plurality of vertices and the plurality of edges are stored in a plurality of tables that includes at least two vertex tables and at least one edge table, wherein each of the at least two vertex tables stores the plurality of vertices of a certain type with specific sets of properties, wherein each of the at least one edge table stores the plurality of edges of a certain type with specific sets of properties.

3 . The method of claim 1 , wherein for each property of said at least two vertex tables, data structures of the respective array with delta logs of said each property are segmented according to a fixed size, wherein one or more segments are compacted when a consolidation threshold is satisfied.

4 . The method of claim 1 , wherein each property of an edge table for the graph is associated with a list-array with delta logs, wherein the list-array with delta logs comprises:

a consolidated lists array storing lists associated with a consolidated version of the edge table;

a consolidated list begins array storing, for each index of the consolidated list begins array, a start index of a corresponding list in the consolidated lists array;

a delta log data structure comprising:

a delta lists array storing content of modified or newly added lists;

a list positions data structure storing, for each index of the list positions data structure, a delta lists array index and a length of a particular list.

5 . The method of claim 4 , wherein data structures of the list-array with delta logs are segmented in per-vertex segments, wherein one or more segments are compacted when a consolidation threshold is satisfied.

6 . The method of claim 1 , wherein the edge array is a logical representation of a list-array with delta logs, wherein each of the begin array and the reverse begin array is associated with a checkpoint array and a difference array, wherein the difference array is logical representation of a block-array with delta logs.

7 . The method of claim 6 , wherein data structures of the block-array with delta logs are segmented in per-vertex segments, wherein one or more segments are compacted when a consolidation threshold is satisfied.

8 . The method of claim 1 , further comprising for each vertex table, for the graph, that contains one or more vertex changes to the graph:

if the one or more vertex changes include vertex deletions, allocating a bit array for a corresponding vertex table to indicate deleted vertices;

if the one or more vertex changes include vertex additions, transforming as many of the vertex additions into vertex compensations and assigning new vertex indices to any remaining vertex additions that are not transformed;

if the one or more vertex changes include vertex property modifications, for each property associated with the vertex property modifications, creating a new array of delta logs based on a previous array of delta logs, wherein the vertex property modifications are applied to a delta log data structure of the new array of delta logs.

9 . The method of claim 1 , further comprising for each edge table, for the graph, that contains one or more edge changes to the graph:

if the one or more edge changes include topological edge modifications,

creating a new begin array and a new reverse begin array, comprising for each of the new begin array and the new reverse begin array:

determining a number of edges for each source vertex of the plurality of vertices and for each destination vertex of the plurality of vertices;

creating a new checkpoint array and a new difference array based on the determination;

updating the edge array, comprising merging delta logs of a previous edge array with the topological edge modifications;

updating the edge offset array based on the topological edge modifications;

if the one or more edge changes include edge property modifications, for each property associated with the edge property modifications, creating a new delta log data structure based on a previous delta log data structure, wherein the edge property modifications are applied to the new delta log data structure.

10 . One or more non-transitory computer-readable storage media storing sequences of instructions which, when executed by one or more processors, cause:

in memory of one or more computers, storing an in-memory bi-directional representation for a graph comprising a plurality of vertices connected by a plurality of edges, wherein each of the plurality of edges is directed from a respective source vertex to a respective destination vertex;

wherein storing the in-memory bi-directional representation for the graph includes:

storing a forward representation of the graph that comprises:

an edge array that is segmented, wherein each edge array index of the edge array holds a vertex id of a destination vertex of a respective edge that corresponds to a respective edge array index;

a begin array that is segmented, wherein each begin array index of the begin array is associated with a respective source vertex identified by a respective begin array index and holds an edge array index at which a respective source vertex edge list of the respective source vertex is stored sequentially within the edge array;

storing a reverse representation of the graph that comprises:

a reverse edge array that is segmented, wherein each reverse edge array index of the reverse edge array holds a vertex id of a source vertex of a respective edge that corresponds to the respective reverse edge array index;

a reverse begin array that is segmented, wherein each reverse begin array index of the reverse begin array is associated with a respective destination vertex identified by the respective reverse begin array index and holds a reverse edge array index at which a respective destination vertex edge list of the respective destination vertex is stored sequentially within the reverse edge array;

an edge offset array that is segmented, wherein each edge offset array index of the edge offset array corresponds to a particular reverse edge array index and a particular edge and a particular source vertex of the particular reverse edge array index, wherein said particular source vertex has a particular source vertex id, wherein said each edge offset array index holds an offset for a particular edge within the edge array, wherein a sum of the offset and the offset held in the begin array at the begin array index that is equal to the particular source vertex id equals the edge array index of the particular edge;

wherein:

the plurality of vertices are stored in a plurality of tables that include at least two vertex tables, and

each property of said at least two vertex tables is associated with an array with delta logs, the array with delta logs comprising (1) a consolidated values array storing values associated with a consolidated version of the vertex table (2) a delta log data structure storing changes compared to the consolidated values array; and

for a new snapshot of the graph, updating said graph with graph changes to said graph, wherein said updating includes;

for each property of said at least two vertex tables that has modifications included in said changes generating a new array of delta logs based on a previous respective array of delta logs of said each property; and

for each property of said at least two vertex tables without modifications included in said changes, reusing the respective array of delta logs of said each property for said new snapshot.

11 . The one or more non-transitory computer-readable storage media of claim 10 , wherein the plurality of vertices and the plurality of edges are stored in a plurality of tables that includes at least two vertex tables and at least one edge table, wherein each of the at least two vertex tables stores the plurality of vertices of a certain type with specific sets of properties, wherein each of the at least one edge table stores the plurality of edges of a certain type with specific sets of properties.

12 . The one or more non-transitory computer-readable storage media of claim 10 , wherein for each property of said at least two vertex tables, data structures of the respective array with delta logs of said each property are segmented according to a fixed size, wherein one or more segments are compacted when a consolidation threshold is satisfied.

13 . The one or more non-transitory computer-readable storage media of claim 10 , wherein each property of an edge table for the graph is associated with a list-array with delta logs, wherein the list-array with delta logs comprises:

a consolidated lists array storing lists associated with a consolidated version of the edge table;

a consolidated list begins array storing, for each index of the consolidated list begins array, a start index of a corresponding list in the consolidated lists array;

a delta log data structure comprising:

a delta lists array storing content of modified or newly added lists;

a list positions data structure storing, for each index of the list positions data structure, a delta lists array index and a length of a particular list.

14 . The one or more non-transitory computer-readable storage media of claim 13 , wherein data structures of the list-array with delta logs are segmented in per-vertex segments, wherein one or more segments are compacted when a consolidation threshold is satisfied.

15 . The one or more non-transitory computer-readable storage media of claim 10 , wherein the edge array is a logical representation of a list-array with delta logs, wherein each of the begin array and the reverse begin array is associated with a checkpoint array and a difference array, wherein the difference array is logical representation of a block-array with delta logs.

16 . The one or more non-transitory computer-readable storage media of claim 15 , wherein data structures of the block-array with delta logs are segmented in per-vertex segments, wherein one or more segments are compacted when a consolidation threshold is satisfied.

17 . The one or more non-transitory computer-readable storage media of claim 10 , wherein the sequences of instructions which, when executed by the one or more processors, further cause, for each vertex table, for the graph, that contains one or more vertex changes to the graph:

if the one or more vertex changes include vertex deletions, allocating a bit array for a corresponding vertex table to indicate deleted vertices;

if the one or more vertex changes include vertex additions, transforming as many of the vertex additions into vertex compensations and assigning new vertex indices to any remaining vertex additions that are not transformed;

if the one or more vertex changes include vertex property modifications, for each property associated with the vertex property modifications, creating a new array of delta logs based on a previous array of delta logs, wherein the vertex property modifications are applied to a delta log data structure of the new array of delta logs.

18 . The one or more non-transitory computer-readable storage media of claim 10 , wherein the sequences of instructions which, when executed by the one or more processors, further cause, for each edge table, for the graph, that contains one or more edge changes to the graph:

if the one or more edge changes include topological edge modifications,

creating a new begin array and a new reverse begin array, comprising for each of the new begin array and the new reverse begin array:

determining a number of edges for each source vertex of the plurality of vertices and for each destination vertex of the plurality of vertices;

creating a new checkpoint array and a new difference array based on the determination;

updating the edge array, comprising merging delta logs of a previous edge array with the topological edge modifications;

updating the edge offset array based on the topological edge modifications;

if the one or more edge changes include edge property modifications, for each property associated with the edge property modifications, creating a new delta log data structure based on a previous delta log data structure, wherein the edge property modifications are applied to the new delta log data structure.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 5, 2021
From: HILLOULIN, DAMIEN; TRIGONAKIS, VASILEIOS; WELD, ALEXANDER; VENZIN, VALENTIN; HONG, SUNGPACK; CHAFI, HASSAN
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 055513/0943 →
Continuity (1)
Related Publication 20220284056A1 · Sep 8, 2022
References Cited (150)
US 5983215A · Ross et al. · 1999 [cited by applicant]
US 6006233A · Schultz · 1999 [cited by applicant]
US 7580947B2 · Kasravi · 2009 [cited by applicant]
US 7624081B2 · Zhao et al. · 2009 [cited by applicant]
US 7849106B1 · Agrawal · 2010 [cited by applicant]
US 8996492B2 · Paradies et al. · 2015 [cited by applicant]
US 9104665B1 · Bik et al. · 2015 [cited by applicant]
US 9195941B2 · Mojsilovic et al. · 2015 [cited by applicant]
US 9201426B1 · Bonawitz · 2015 [cited by applicant]
US 9495477B1 · Dehnert · 2016 [cited by examiner]
US 10019536B2 · Hong et al. · 2018 [cited by applicant]
US 10235474B2 · Haubenschild et al. · 2019 [cited by applicant]
US 10346138B1 · Quillen · 2019 [cited by applicant]
US 10360195B1 · McKelvie et al. · 2019 [cited by applicant]
US 10824673B2 · Rebholz et al. · 2020 [cited by applicant]
US 11126359B2 · Elyasi · 2021 [cited by examiner]
US 11269954B2 · Kang et al. · 2022 [cited by applicant]
US 11537579B2 · Lozi · 2022 [cited by examiner]
US 20020184225A1 · Ghukasyan · 2002 [cited by applicant]
US 20030195885A1 · Emmick · 2003 [cited by applicant]
US 20040133747A1 · Coldewey · 2004 [cited by applicant]
US 20050160432A1 · Gallagher · 2005 [cited by applicant]
US 20060101001A1 · Lindsay et al. · 2006 [cited by applicant]
US 20080177722A1 · Lohman · 2008 [cited by applicant]
US 20080184197A1 · Dobbins et al. · 2008 [cited by applicant]
US 20090006450A1 · Champion · 2009 [cited by applicant]
US 20100088666A1 · Box et al. · 2010 [cited by applicant]
US 20110270861A1 · Arshavsky et al. · 2011 [cited by applicant]
US 20110307685A1 · Song · 2011 [cited by applicant]
US 20130212131A1 · Reddy · 2013 [cited by applicant]
US 20130332387A1 · Mirra et al. · 2013 [cited by applicant]
US 20140214334A1 · Plattner et al. · 2014 [cited by applicant]
US 20140310232A1 · Plattner et al. · 2014 [cited by applicant]
US 20150026158A1 · Jin · 2015 [cited by applicant]
US 20150081741A1 · Xu · 2015 [cited by applicant]
US 20150120775A1 · Shao et al. · 2015 [cited by applicant]
US 20150143179A1 · Desai · 2015 [cited by applicant]
US 20150169757A1 · Kalantzis · 2015 [cited by applicant]
US 20150310644A1 · Zhou · 2015 [cited by examiner]
US 20150379054A1 · Kernert · 2015 [cited by applicant]
US 20160071233A1 · Macko · 2016 [cited by examiner]
US 20160078344A1 · Agarwal et al. · 2016 [cited by applicant]
US 20160103931A1 · Appavu · 2016 [cited by applicant]
US 20160117358A1 · Schmid · 2016 [cited by examiner]
US 20160140152A1 · Sevenich et al. · 2016 [cited by applicant]
US 20160171068A1 · Hardin · 2016 [cited by applicant]
US 20160179883A1 · Chen · 2016 [cited by applicant]
US 20160179887A1 · Lisonbee et al. · 2016 [cited by applicant]
US 20160299991A1 · Hong et al. · 2016 [cited by applicant]
US 20160342708A1 · Fokoue-Nkoutche et al. · 2016 [cited by applicant]
US 20170031976A1 · Chavan et al. · 2017 [cited by applicant]
US 20170046388A1 · Kirk et al. · 2017 [cited by applicant]
US 20170090807A1 · Gupta et al. · 2017 [cited by applicant]
US 20170147706A1 · Roth · 2017 [cited by examiner]
US 20170169133A1 · Kim · 2017 [cited by examiner]
US 20170220271A1 · Muthukrishnan · 2017 [cited by examiner]
US 20170255675A1 · Chavan · 2017 [cited by applicant]
US 20170293697A1 · Youshi et al. · 2017 [cited by applicant]
US 20180067987A1 · Kang et al. · 2018 [cited by applicant]
US 20180114132A1 · Chen et al. · 2018 [cited by applicant]
US 20180137667A1 · Kindelsberger · 2018 [cited by examiner]
US 20180198698A1 · Rife · 2018 [cited by applicant]
US 20180218088A1 · Fischer et al. · 2018 [cited by applicant]
US 20180246986A1 · Haubenschild · 2018 [cited by examiner]
US 20180293329A1 · Yanagisawa · 2018 [cited by applicant]
US 20180329958A1 · Choudhury · 2018 [cited by applicant]
US 20190102412A1 · Macnicol · 2019 [cited by applicant]
US 20190121825A1 · Kim · 2019 [cited by examiner]
US 20190129893A1 · Baird, III et al. · 2019 [cited by applicant]
US 20190163704A1 · Haubenschild · 2019 [cited by applicant]
US 20190179752A1 · Yoo et al. · 2019 [cited by applicant]
US 20190205480A1 · Zhang et al. · 2019 [cited by applicant]
US 20190213356A1 · Vagujhelyi et al. · 2019 [cited by applicant]
US 20190311060A1 · Bross et al. · 2019 [cited by applicant]
US 20190325075A1 · Hilloulin · 2019 [cited by examiner]
US 20200059481A1 · Sekar · 2020 [cited by examiner]
US 20200097288A1 · Schlegel et al. · 2020 [cited by applicant]
US 20200097615A1 · Song · 2020 [cited by applicant]
US 20200151216A1 · Sevenich et al. · 2020 [cited by applicant]
US 20200226124A1 · Chishti · 2020 [cited by examiner]
US 20200265049A1 · da Trindade et al. · 2020 [cited by applicant]
US 20200265090A1 · Hilloulin et al. · 2020 [cited by applicant]
US 20200364268A1 · Xu et al. · 2020 [cited by applicant]
US 20210004374A1 · Xia · 2021 [cited by examiner]
US 20210034615A1 · Chen et al. · 2021 [cited by applicant]
US 20210064660A1 · Xu et al. · 2021 [cited by applicant]
US 20210064661A1 · Jung · 2021 [cited by examiner]
US 20210149854A1 · Barde et al. · 2021 [cited by applicant]
US 20210150375A1 · Pete et al. · 2021 [cited by applicant]
US 20210157606A1 · Zhao · 2021 [cited by applicant]
US 20210240690A1 · Cseri · 2021 [cited by applicant]
US 20210256063A1 · Kasperovics et al. · 2021 [cited by applicant]
US 20220027052A1 · Falco · 2022 [cited by applicant]
US 20220114178A1 · Haprian et al. · 2022 [cited by applicant]
US 20220129451A1 · Haprian et al. · 2022 [cited by applicant]
US 20220129461A1 · Haprian et al. · 2022 [cited by applicant]
US 20220129465A1 · Haprian et al. · 2022 [cited by applicant]
US 20220245147A1 · Segalini et al. · 2022 [cited by applicant]
US 20220277021A1 · Cruanes · 2022 [cited by examiner]
US 20220300504A1 · Neugebauer et al. · 2022 [cited by applicant]
US 20220405302A1 · Grunwald · 2022 [cited by applicant]
US 20230418870A1 · Hauck · 2023 [cited by examiner]
WO WO9945479A1 · 1999 [cited by applicant]
WO WO2020019313A1 · 2020 [cited by applicant]
Haprian, U.S. Appl. No. 17/162,564, filed Jan. 29, 2021, Non-Final Rejection, Feb. 3, 2022. [cited by applicant]
Hong, Sungpack, et al., “PGX.D: a fast distributed graph processing engine”, SC '15: Proceedings of the Intl Conf. for High Performance, Comptg, Ntwkg, Strorage and Analysis, Article 58, pp. 1-12, https://doi.org/10.114… [cited by applicant]
Patiño-Martínez et al., “Snapshot Isolation for Neo4j”, 19th International Conference on Extending Database Technology (EDBT), https://openproceedings.org/2016/conf/edbt/paper-333.pdf, dated Mar. 2016, 2 pages. [cited by applicant]
Green et al., “Updating Graph Databases with Cypher”, 45th International Conference on Very Large Data Bases (VLDB), vol. 12, No. 12, https://hal.archives-ouvertes.fr/hal-03012016, dated Aug. 2019, 13 pages. [cited by applicant]
Deutsch et al., “TigerGraph: A Native MPP Graph Database”, https://arxiv.org/pdf/1901.08248.pdf, dated Jan. 2019, 28 pages,. [cited by applicant]
Dave et al., “GraphFrames: An Integrated API for Mixing Graph and Relational Queries”, https://cs.stanford.edu/~matei/papers/2016/grades_graphframes.pdf, dated 2016, 8 pages. [cited by applicant]
Bebee et al., “Transactional Guarantees for SPARQL Query Execution with Amazon Neptune”, Amazon Web Services, http://ceur-ws.org/Vol-2456/paper90.pdf, dated 2019, 2 pages. [cited by applicant]
Bebee et al., “Amazon Neptune: Graph Data Management in the Cloud”, Amazon Web Services, http://ceur-ws.org/Vol-2180/paper-79.pdf, dated 2018, 2 pages. [cited by applicant]
Angles et al., “RDF and Property Graphs Interoperability: Status and Issues”, http://ceur-ws.org/Vol-2369/paper01.pdf, dated 2019, 11 pages. [cited by applicant]
Nagel et al., “Recycling in Pipelined Query Evaluation”, 29th International Conference on Data Engineering (ICDE), 2013, 13 pages. [cited by applicant]
Haprian, U.S. Appl. No. 17/162,564, filed Jan. 29, 2021, Final Rejection, Jun. 13, 2022. [cited by applicant]
Haprian, U.S. Appl. No. 17/080,719, filed Oct. 26, 2020, Notice of Allowance and Fees Due, Jul. 7, 2022. [cited by applicant]
Haprian, U.S. Appl. No. 17/080,698, filed Oct. 26, 2020, Final Rejection, May 18, 2022. [cited by applicant]
Oracle, “Using Property Graphs in an Oracle Database Environment”, docs.oracle.com/database/122/SPGDG/using-property-graphs-oracle database.htm#BDSPA191, Apr. 23, 2018, 152 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]
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]
De Virgilio et al., “Converting Relational to Graph Databases”, Proceedings of the First International Workshop on Graph Data Management Experience and Systems (GRADES 2013), Jun. 23, 2013, 6 pages. [cited by applicant]
Heer et al., “Software Design Patterns for Information Visualization”, IEEE Transactions on Visualization and Computer Graphics, vol. 12, dated Sep. 2006, 8 pages. [cited by applicant]
Kaur, Sawinder, “Visualizing Class Diagram Using OrientDB NoSQL Data-Store”, dated Jul. 2016, 5 pages. [cited by applicant]
Michels, Jan, “Property Graph Data Model—The Proposal”, Individual Expert Contribution, dated Jan. 16, 2019, 76 pages. [cited by applicant]
Amazon Neptune, “Overview” https://aws.amazon.com/neptune/, last viewed on Nov. 4, 2020, 20 pages. [cited by applicant]
Neo4j Graph Platform, “What is Neo4)?”, https://neo4j.com/, last viewed on Nov. 4, 2020, 14 pages. [cited by applicant]
Zemke, Fred, “Fixed Graph Patterns”, ISO/IEC SC32/WG3:ERF-035, dated Sep. 14, 2018, 25 pages. [cited by applicant]
Perez et al., Ringo: Interactive Graph Analytics on Big-Memory Machines:, Proc ACM SIGMOD Int Conference Manag Data. Dated May-Jun. 2015, 21 pages. [cited by applicant]
PGQL, “Property Graph Query Language”, http://pgql-lang.org/, last viewed on Nov. 3, 2020, 5 pages. [cited by applicant]
SQL Server Blog, “Graph Data Processing with SQL Server 2017 and Azure SQL Database”, dated Aug. 20, 2017, 8 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]
Xirogiannopoulos et al., “Extracting and Analyzing Hidden Graphs from Relational Databases”, ACM, SIGMOD dated 2017, 18 pages. [cited by applicant]
Xirogiannopoulos et al., “GraphGen: Exploring Interesting Graphs in Relational Data”, Proceedings of the VLDB Endowment, vol. 8, No. 12 Copyright 2015 VLDB Endowment, 4 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]
Haprian, U.S. Appl. No. 17/080,719, filed Oct. 26, 2020, Non-Final Rejection, Dec. 14, 2021. [cited by applicant]
Yousfi, U.S. Appl. No. 16/431,294, filed Jun. 4, 2019, Office Action, Apr. 6, 2020. [cited by applicant]
Yousfi, U.S. Appl. No. 16/431,294, filed Jun. 4, 2019, Notice of Allowance, Jan. 8, 2021. [cited by applicant]
Yousfi, U.S. Appl. No. 16/431,294, filed Jun. 4, 2019, Final Office Action, Jul. 8, 2020. [cited by applicant]
Yousfi, U.S. Appl. No. 16/431,294, filed Jun. 4, 2019, Advisory Action, Sep. 24, 2020. [cited by applicant]
Yousfi, U.S. Appl. No. 15/096,034, filed Apr. 11, 2016, Office Action, Apr. 10, 2018. [cited by applicant]
Yousfi, U.S. Appl. No. 15/096,034, filed Apr. 11, 2016, Notice of Allowance, Feb. 14, 2019. [cited by applicant]
Yousfi, U.S. Appl. No. 15/096,034, filed Apr. 11, 2016, Interview Summary, Nov. 23, 2018. [cited by applicant]
Yousfi, U.S. Appl. No. 15/096,034, filed Apr. 11, 2016, Final Office Action, Sep. 20, 2018. [cited by applicant]
Yousfi, U.S. Appl. No. 15/096,034, filed Apr. 11, 2016, Advisory Action, Dec. 5, 2018. [cited by applicant]
“SAP HANA Graph Reference”, SAP HANA Platform 2.0 SPS 04 Document Version: 1.1 dated Oct. 31, 2019, SAP.com, 86 pages. [cited by applicant]
Trigonakis, U.S. Appl. No. 17/585,117, filed Jan. 26, 2022, Final Rejection, Jan. 22, 2024. [cited by applicant]
Haprian, U.S. Appl. No. 17/162,564, filed Jan. 29, 2021, Pre-Brief Appeal Conference decision, Oct. 6, 2023. [cited by applicant]
Haprian, U.S. Appl. No. 17/162,564, filed Jan. 29, 2021, Non-Final Rejection, Jan. 8, 2024. [cited by applicant]
Haprian, U.S. Appl. No. 17/162,564, filed Jan. 29, 2021, Advisory Action, Sep. 11, 2023. [cited by applicant]
Haprian, U.S. Appl. No. 17/080,700, filed Oct. 26, 2020, Notice of Allowance and Fees Due, Sep. 21, 2023. [cited by applicant]