# US 2020/0401625 A1 · Graph processing system

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2020/0401625 A1
- Document ID: US20200401625A1
- Status: Published application
- Kind: A1
- Application number: 16/510,746
- Filed: 2019-07-12
- Published: 2020-12-24
- Earliest claimed: 2019-06-24
- Assignees: thatDot, Inc.
- Applicants: Thatdot, LLC
- Inventors: Ryan Wright
- Web page: https://patentgrep.com/patent/US20200401625A1

## CPC

- G06F 16/9024: {Graphs; Linked lists (G06F16/9027 takes precedence)}
- G06F 16/90335: {Query processing}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## 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

### Claim 1

A system, comprising:
a computing device comprising at least one processor and at least one memory, the at least one memory comprising instructions that, in response to execution by the at least one processor, cause the computing device to at least:
receive at least one message indicative of storing data in a graph to comprise a first node linked to a second node;
in response to determining that no message processor is assigned to the first node, assign a message processor to the first node, wherein the message processor processes messages directed to the first node in a defined order;
store, based at least in part on the at least one message, a first record indicative of the first node, the first record comprising information indicative of a property of the first node and information indicative of a first half-edge associated with the second node; and
store, based at least in part on the at least one message, in a second record indicative of the second node, information indicative of a second half-edge associated with the first node.

### Claim 2 (depends on 1)

The system of claim 1, wherein the first node is associated with a globally unique identifier.

### Claim 3 (depends on 1)

The system of claim 1, wherein the computing device is one of a plurality of computing devices, and wherein a second one of the plurality of computing devices stores additional records indicative of additional nodes of the graph.

### Claim 4 (depends on 1)

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

### Claim 5 (depends on 1)

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 computing device to at least:
process messages directed to nodes of the graph up to a define point in the defined order; and
process, subsequent to processing the messages, a query of the graph.

### Claim 6 (depends on 5)

The system of claim 5, wherein the processed messages are constrained to a subset of nodes of the graph, the subset determined based at least in part on the query.

### Claim 7

A computer-implemented method, comprising:
storing a graph of data as a plurality of nodes, wherein an edge between a first node and a second node, of the plurality of nodes, is represented by at least a first half-edge associated with the first node; and
associating each of the plurality of nodes with a message processor, wherein a message processor associated with a node processes messages directed to the respective node in a defined order.

### Claim 8 (depends on 7)

The method of claim 7, wherein the first node is associated with a globally unique identifier.

### Claim 9 (depends on 7)

The method of claim 7, wherein the first node is associated with one or more properties.

### Claim 10 (depends on 7)

The method of claim 7, further comprising partitioning nodes of the graph between a plurality of computing devices.

### Claim 11 (depends on 10)

The method of claim 10, wherein a first computing device, of the plurality of computing devices, stores the first node and the first half-edge, and a second computing device, of the plurality of computing devices, stores the second node and a second half-edge.

### Claim 12 (depends on 7)

The method of claim 7, wherein the first half-edge and a second half-edge collectively define a link between the first node and the second node.

### Claim 13 (depends on 12)

The method of claim 12, further comprising storing a property associated with the link 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.

### Claim 14 (depends on 7)

The method of claim 7, further comprising:
processing messages directed to nodes of the graph up to a define point in the defined order; and
processing a query of the graph subsequent to processing the messages.

### Claim 15 (depends on 14)

The method of claim 14, further comprising:
determining a subset of nodes of the graph associated with a query; and
constraining the processed messages to the determined subset of nodes.

### Claim 16 (depends on 7)

The method of claim 7, further comprising:
storing a constraint with a node in the graph; and
determining to preclude a change to the node based at least in part on the constraint.

### Claim 17 (depends on 7)

The method of claim 7, further comprising:
storing node data in a swappable back-end.

### Claim 18 (depends on 7)

The method of claim 7, further comprising:
evaluating a query by at least treating a sub-graph as a single node for purposes of the evaluation.

### Claim 19 (depends on 7)

The method of claim 7, further comprising:
determining a value of a property based at least in part on lazily evaluating a portion of a query.

### Claim 20

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 graph of data as a plurality of nodes, wherein an edge between a first node and a second node, of the plurality of nodes, is represented by at least a first half-edge associated with the first node; and
associate each of the plurality of nodes with a message processor, wherein a message processor associated with a node processes messages directed to the respective node in a defined order.
