IP Library Granted Patent US 12,505,163
Granted Patent B2
US 12,505,163 · App. 18/523,701 · Granted Dec 23, 2025

Graph processing system

Inventor: Ryan Wright (Portland, OR)
Assignee: THATDOT, INC.
G06F16/9024G06F16/90335
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,505,163
App. No.
18/523,701
Granted
Dec 23, 2025
Kind
B2
Abstract

A graph comprising nodes and edges is stored by a distributed system as a collection of nodes and half-edges stored with their respective nodes. A message processor is associated with a node as needed to process messages passed between nodes, such that a given node has zero or one message processor assigned to it at a given time. Queries of the graph are resolved by processing a first portion of the query at a first node, and forwarding the results with the remaining portions of the query to a node linked by an edge to the present node.

Claims (31)

1 . A system, comprising:

one or more processors and at least one memory comprising instructions that, in response to execution by the one or more processors, cause the system to at least:

store a first node in a graph, the first node linked to a second node in the graph by a first half-edge associated with the first node, and a second half-edge associated with the second node;

cause a message processor to process one or more messages directed to the first node, wherein the message processor causes information indicative of properties of the first node to be stored in one or more records associated with records of the first half-edge and the second half-edge; and

generate one or more responses to one or more queries of the graph based, at least in part, on identification of one or more patterns in the graph, the one or more patterns comprising the first node and the second node.

2 . The system of claim 1 , wherein at least one portion of the one or more queries is lazily evaluated.

3 . The system of claim 1 , wherein one or more additional processors on one or more additional systems store additional records indicative of additional nodes of the graph.

4 . The system of claim 1 , wherein the first half-edge and the second half-edge collectively define a link from the first node to the second node.

5 . The system of claim 1 , wherein the one or more responses to the one or more queries are generated based, at least in part, on one or more messages processed by the message processor up to a defined point.

6 . The system of claim 1 , wherein processing of messages is constrained to a subset of nodes of the graph.

7 . The system of claim 1 , wherein the message processor is assigned to process messages directed to the first node.

8 . A computer-implemented method, comprising:

storing a first node in a graph, the first node linked to a second node in the graph by a first half-edge associated with the first node, and a second half-edge associated with the second node;

causing a message processor to process one or more messages by storing one or more records associated with records of the first half-edge and the second half-edge; and

generating one or more responses to one or more queries based, at least in part, on identification of one or more patterns in the graph, the one or more patterns comprising the first node and the second node.

9 . The method of claim 8 , wherein one or more nodes of the graph are associated with one or more globally unique identifiers.

10 . The method of claim 8 , wherein nodes of the graph are partitioned between a plurality of computing devices.

11 . The method of claim 8 , wherein a first computing device stores the first node and the first half-edge, and a second computing device stores the second node and the second half-edge.

12 . The method of claim 8 , further comprising storing a property associated with the link between the first and second nodes by at least storing an additional node comprising the property associated with the link, and associating the additional node with the first half-edge and the second half-edge.

13 . The method of claim 8 ,

wherein one or more portions of the one or more queries are lazily evaluated.

14 . The method of claim 8 , wherein the one or more queries are evaluated with respect to a historical state.

15 . The method of claim 8 , wherein the one or more queries are standing queries.

16 . A non-transitory computer-readable storage medium comprising instructions that, when executed by at least one processor of at least one computing device, cause the at least one computing device to:

store a first node in a graph, the first node linked to a second node in the graph by a first half-edge associated with the first node, and a second half-edge associated with the second node;

cause a message processor to process one or more messages by at least storing one or more records associated with records of the first half-edge and the second half-edge; and

generate one or more responses to one or more queries based, at least in part, on identification of one or more patterns in the graph, the one or more patterns comprising the first node and the second node.

17 . The non-transitory computer-readable storage medium of claim 16 , wherein nodes of the graph are partitioned between a plurality of computing devices.

18 . The non-transitory computer-readable storage medium of claim 16 , wherein the one or more responses to the one or more queries are generated based, at least in part, on processing a first portion of the one or more queries applicable to the first node and forwarding a second portion of the one or more queries to one or more other nodes.

19 . The non-transitory computer-readable storage medium of claim 16 , wherein the one or more responses to the one or more queries are generated based, at least in part, on one or more messages processed by the message processor up to a defined point in time.

20 . The non-transitory computer-readable storage medium of claim 16 , wherein at least one portion of the one or more queries is lazily evaluated.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 20, 2023
From: WRIGHT, RYAN
To: THATDOT, LLC
Reel/Frame 065922/0383 →
CHANGE OF NAME Recorded Dec 20, 2023
From: THATDOT, LLC
To: THATDOT, INC.
Reel/Frame 065922/0648 →
Continuity (4)
Continuation 17693213 · Mar 11, 2022
Continuation 16510746 · Jul 12, 2019
Provisional Application 62865882 · Jun 24, 2019
Related Publication 20240330368A1 · Oct 3, 2024
References Cited (40)
US 6338055B1 · Hagmann et al. · 2002 [cited by applicant]
US 8810576B2 · Duplessis et al. · 2014 [cited by applicant]
US 8966368B2 · Kuramura · 2015 [cited by applicant]
US 20110302196A1 · Bouillet · 2011 [cited by applicant]
US 20130103715A1 · Beckman et al. · 2013 [cited by applicant]
US 20130191413A1 · Chen et al. · 2013 [cited by applicant]
US 20130262502A1 · Majeed et al. · 2013 [cited by applicant]
US 20150006606A1 · Fleury et al. · 2015 [cited by applicant]
US 20160048607A1 · Raman et al. · 2016 [cited by applicant]
US 20160292303A1 · Hong · 2016 [cited by examiner]
US 20160335371A1 · Rao · 2016 [cited by applicant]
US 20170124221A1 · Song · 2017 [cited by examiner]
US 20170221010A1 · Brdiczka · 2017 [cited by examiner]
US 20170244787A1 · Rangasamy et al. · 2017 [cited by applicant]
US 20170256157A1 · Johan · 2017 [cited by examiner]
US 20170302530A1 · Wolting · 2017 [cited by applicant]
US 20180032574A1 · Vandenberg · 2018 [cited by examiner]
US 20180039657A1 · Pandit · 2018 [cited by applicant]
US 20180089259A1 · James · 2018 [cited by examiner]
US 20180212904A1 · Smullen et al. · 2018 [cited by applicant]
US 20180285477A1 · Bik et al. · 2018 [cited by applicant]
US 20190122149A1 · Caldera et al. · 2019 [cited by applicant]
US 20190147086A1 · Pal · 2019 [cited by examiner]
US 20190171756A1 · Patavardhan et al. · 2019 [cited by applicant]
US 20190258734A1 · Chkodrov · 2019 [cited by examiner]
US 20200379992A1 · De Smet · 2020 [cited by examiner]
WO 2015019364A2 · 2015 [cited by applicant]
Facebook, Inc., “GraphQL Working Draft—Oct. 2016,” http://spec.graphql.org/October2016/, copyright 2015, 125 pages. [cited by applicant]
Holzschuher et al., “Performance of graph query languages: Comparison of Cypher, Gremlin and Native Access in Neo4j,” Proceedings of the Joint EDBT/ICDT 2013 Workshops, Mar. 2013, 11 pages. [cited by applicant]
International Search Report and Written Opinion mailed Septebmer 21, 2020, Patent Application No. PCT/US2020/038983, 16 pages. [cited by applicant]
Kosmatopoulos et al., “HiNode: an asymptotically space-optimal storage model for historical queries on graphs,” Distributed and Parallel Databases 35(3):249-285, Sep. 14, 2017. [cited by applicant]
Pacaci et al., “Do We Need Specialized Graph Databases?: Benchmarking Real-Time Social Networking Applications,” Proceedings of the Fifth International Workshop on Graph Data-management Experiences & Systems, May 2017, … [cited by applicant]
Sutanay Choudhury et al, “Query Optimization for Dynamic Graphs”, arXiv: 1407.3745v1 [cs.DB] Jul. 14, 2014, ACM, 13 pages. [cited by applicant]
Wright, “Quine: a temporal graph system for provenance storage and analysis—conference presentation slides,” International Provenance and Annotation Workshop, Jul. 9, 2018, 11 pages. [cited by applicant]
Wright, “Quine: a temporal graph system for provenance storage and analysis,” International Provenance and Annotation Workshop, Jul. 9, 2018, 4 pages. [cited by applicant]
Yan Shvartzshnaider et al, “Into the Moana-Hypergraph based Network Layer Inderection”, 16th IEEE Global Internet Symposium 2013, pp. 139-14. [cited by applicant]
Yan Shvartzshnaider et al, “Publish/Subscribe on Top of DHT Using RETE Algorithm”, A.J. Berre et al. (Eds.): FIS 2010, LNCS 6369, pp. 20-29, 2010. © Springer-Verlag Berlin Heidelberg 2010. [cited by applicant]
European Patent Office, “Search Report” in Application No. 20 739 543.5-1203, Feb. 27, 2023, 12 pages. [cited by applicant]
Anonymous: “Adjacency List - Wikipedia”, May 24, 2019, URL:https://web.archive.org/web/20190524101144https://en.wikipedia.org/wiki/Adjacency_list, 3 pages. [cited by applicant]
Barcelo, Pablo et al., “Querying Graph Patterns”. Proceedings of the thirieth ACM Sigmod-Sigact-Sigart Symposium on Principles of database systems, 2011, 13 pages. [cited by applicant]