IP Library Granted Patent US 11,321,394
Granted Patent B2
US 11,321,394 · App. 16/510,746 · Granted May 3, 2022

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 11,321,394
App. No.
16/510,746
Granted
May 3, 2022
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 (47)

1. A system, comprising:

at least one processor; and

at least one memory, comprising instructions that, in response to execution by the at least one processor, cause the system to at least:

store a graph of data comprising a plurality of nodes;

receive a standing query of the graph of data, the standing query indicative of a pattern to be matched in the graph of data;

select a first node of the plurality of nodes to evaluate, by a first message processor associated with the first node, a first portion of the standing query, the first portion indicative of a first at least one criteria of a plurality of criteria associated with the standing query, wherein the first node is selected based at least in part on the first at least one criteria being applicable to at least one property associated with the first node;

select a second node of the plurality of nodes to evaluate, by a second message processor associated with the second node, a second portion of the standing query, the second portion indicative of a second at least one criteria of the plurality of criteria associated with the standing query, wherein the second node is selected based at least in part on the second at least one criteria being applicable to at least one property associated with the second node;

determine, by the first message processor associated with the first node, that the first portion of the standing query is satisfied, wherein the determination comprises applying the first at least one criteria to the at least one property to determine if the criteria is satisfied, and wherein the determination is made in response to a notification of another determination, by the second message processor associated with the second node, that the second portion of the standing query is satisfied; and

generate a result of the standing query based, at least in part, on the determination by the first message processor that the first portion of the standing query is satisfied and the determination by the second message processor associated with the second node that the second portion of the standing query is satisfied, the result indicating a region of the graph that matches the pattern.

2. The system of claim 1 , wherein the first message processor processes, in serial order, messages directed to the first node.

3. The system of claim 1 , wherein the second node receives an indication that the first portion of the standing query has been satisfied.

4. The system of claim 1 , wherein the standing query is associated with a callback function that is invoked to provide a result of the standing query.

5. The system of claim 1 , wherein the at least one memory comprises further instructions that, in response to execution by the at least one processor, cause the system to at least:

store portions of the standing query with corresponding portions of the graph, wherein correspondence between a portion of the query and a portion of the graph is based, at least in part, on applicability of portions of the query to properties of a node in the portion of the graph.

6. The system of claim 1 , wherein the first message processor, in response to determining that the first portion of the standing query has been satisfied, sends a notification to the second message processor to indicate that the first portion of the standing query has been satisfied.

7. The system of claim 1 , wherein nodes of the graph of data represent entities and edges of the graph of data represent relationships between entities.

8. The system of claim 1 , wherein the second node relays, to the first node, results of processing the second portion of the standing query.

9. A method, comprising:

storing a plurality of nodes of a graph, wherein a first node of the plurality of nodes is associated with a first message processor and a second node of the plurality of nodes is associated with a second message processor;

selecting the first node to evaluate, by the first message processor, a first portion of a standing query of a graph, the standing query indicative of a pattern to be matched in the graph, the first portion indicative of a first at least one criteria of a plurality of criteria associated with the standing query, the first at least one criteria applicable to a property associated with the first node;

selecting the second node to evaluate, by the second message processor, a second portion of the standing query, the second portion indicative of a second at least one criteria of the plurality of criteria associated with the standing query, the second at least one criteria applicable to a property associated with the second node;

determining, by the first message processor associated with the first node, that the first portion of the standing query is satisfied, by at least determining that the property associated with the first node satisfies the first at least one criteria;

determining, by the second message processor associated with the second node, that the second portion of the standing query is satisfied; and

returning a result of the standing query based, at least in part, on the determinations that the first and second portions of the standing query were satisfied, the result comprising an indication that the pattern was matched.

10. The method of claim 9 , further comprising:

processing messages directed to the first node to determine if the first portion of the standing query is satisfied.

11. The method of claim 9 , further comprising:

sending an indication, to the second node, that the first portion of the standing query has been satisfied.

12. The method of claim 9 , further comprising:

returning the result of the standing query by calling a callback function associated with the standing query.

13. The method of claim 9 , wherein one or more properties of the first node are applicable to one or more properties of the first portion of the query.

14. The method of claim 13 , wherein the first and second nodes are indicative of a pattern defined by the standing query.

15. The method of claim 9 , wherein a result of a decomposition of the query is stored in the first node.

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

store a plurality of nodes of a graph, wherein a first node of the plurality of nodes is associated with a first message processor and a second node of the plurality of nodes is associated with a second message processor;

associate a first portion of a standing query of a graph with the first node, the standing query indicative of a pattern to be matched in the graph, the first portion indicative of a first at least one criteria of a plurality of criteria associated with the standing query, the first at least one criteria applicable to a property associated with the first node;

associate a second portion of the standing query of the graph with the second node, the second portion indicative of a second at least one criteria of the plurality of criteria associated with the standing query, the second at least one criteria applicable to a property associated with the second node;

determine, by the first message processor, that the first portion of the standing query is satisfied, by at least determining that the property associated with the first node satisfies the first at least one criteria, wherein the first message processor sends the second message processor a notification that the first portion of the standing query has been satisfied;

determine, by the second message processor, that the second portion of the standing query is satisfied; and

return a result of the standing query based, at least in part, on the determinations that the first and second portions of the standing query are satisfied, the result comprising an indication of a match in the graph of the pattern.

17. The non-transitory computer-readable storage medium of claim 16 , comprising further instructions that, in response to execution by at least one processor of at least one computing device, cause the at least one computing device to at least:

send an indication, to the second node, that the first portion of the standing query has been satisfied.

18. The non-transitory computer-readable storage medium of claim 16 , wherein the first and second nodes are indicative of a pattern defined by the standing query.

19. The non-transitory computer-readable storage medium of claim 16 , comprising further instructions that, in response to execution by at least one processor of at least one computing device, cause the at least one computing device to at least:

convert the query to a representation comprising one or more operations on the graph.

20. The non-transitory computer-readable storage medium of claim 16 , comprising further instructions that, in response to execution by at least one processor of at least one computing device, cause the at least one computing device to at least:

evaluate the first portion of the standing query in response to an update to the first node.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 30, 2020
From: THATDOT, LLC
To: THATDOT, INC.
Reel/Frame 052264/0618 →
CHANGE OF NAME Recorded Mar 30, 2020
From: THATDOT, LLC
To: THATDOT, INC.
Reel/Frame 052312/0912 →
CORRECTIVE ASSIGNMENT TO CORRECT THE STATE OF INCORPORATION OF THE ASSIGNEE FROM THE STATE OF WASHINGTON TO THE STATE OF OREGON PREVIOUSLY RECORDED ON REEL 049750 FRAME 0343. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 27, 2020
From: WRIGHT, RYAN
To: THATDOT, LLC
Reel/Frame 052252/0317 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 15, 2019
From: WRIGHT, RYAN
To: THATDOT, LLC
Reel/Frame 049750/0343 →
Continuity (2)
Provisional Application 62865882 · Jun 24, 2019
Related Publication 20200401625A1 · Dec 24, 2020