# US 12,762,185 B2 · Islands technique of graph synthesis

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

- Number: US 12,762,185 B2
- Document ID: US12762185B2
- Status: Granted
- Kind: B2
- Application number: 19/011,499
- Filed: 2025-01-06
- Published: 2025-10-16
- Granted: 2026-10-13
- Earliest claimed: 2024-01-21
- Applicants: Grant Haywood
- Inventors: Grant Haywood
- Web page: https://patentgrep.com/patent/US12762185B2

## CPC

- G06F 16/9024: {Graphs; Linked lists (G06F16/9027 takes precedence)}
- G06F 16/211: {Schema design and management}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

In one aspect, a method of generating synthetic graph data, comprising: operating a computer to define an islands schema specifying archipelago structures, wherein each archipelago structure comprises a root vertex type and zero or more additional vertex types; generating a plurality of disconnected archipelagos in parallel according to the islands schema, wherein each archipelago is generated by recursively creating vertices and edges according to probabilistic parameters specified in the islands schema; and stitching the disconnected archipelagos together by creating additional edges between vertices of different archipelagos according to joining rules specified in the islands schema.

## Claims

### Claim 1

A computer-implemented method of generating schema-constrained synthetic property graph data for use in a database schema or data architecture, the computer-implemented method comprising:
operating a computer to define an islands schema that functions as a type system for a property graph, the islands schema specifying archipelago structures, vertex types, edge types, property constraints, probabilistic parameters, and joining rules, wherein each archipelago structure comprises a root vertex type and zero or more additional vertex types;
for each vertex type specified by the islands schema, defining zero or more potential property keys, a likelihood that each potential property key is created, a value generator class for generating a property value for a created property key, and configuration parameters for the value generator class, wherein the configuration parameters constrain generated property values;
for each edge type specified by the islands schema, defining an in-vertex type, an out-vertex type, zero or more potential edge property keys, a likelihood value between 0.0 and 1.0 for creating the edge type, a number of chances to create the edge type, and an indication of whether the edge type is created during an initial archipelago generation phase or during a stitching phase;
generating, during the initial archipelago generation phase, a plurality of disconnected archipelagos in parallel according to the islands schema by executing a generator function that maps values in a numeric range to corresponding generated archipelagos;
for each disconnected archipelago of the plurality of disconnected archipelagos, creating a root vertex of the root vertex type specified for the disconnected archipelago and recursively generating connected vertices and edges from the root vertex according to the vertex types, edge types, likelihood values, numbers of chances to create, property keys, value generator classes, and configuration parameters specified in the islands schema;
wherein recursively generating the connected vertices and edges comprises evaluating each potential property key for a vertex according to the likelihood specified for the potential property key, calling the value generator class associated with the potential property key when the potential property key is selected, generating a property value constrained by the configuration parameters associated with the value generator class, evaluating edge types referenced by the vertex type of the vertex being generated, and determining whether to create each potential edge according to the likelihood value and the number of chances to create specified for the corresponding edge type;
pushing edge creation operations onto a stack and pushing vertex creation operations onto the stack above corresponding edge creation operations, such that vertices are generated before connecting edges associated with the vertices are written;
transforming nested lists of return values generated during the initial archipelago generation phase into sequential streams per disconnected archipelago;
stitching the plurality of disconnected archipelagos together during the stitching phase by identifying, from the islands schema, joining edge types that were not processed during the initial archipelago generation phase;
for each joining edge type, setting up a pair of streams that read previously materialized vertices of the in-vertex type and the out-vertex type associated with the joining edge type;
implementing a probabilistic zip function that pairs a first vertex read from a first stream of the pair of streams with a second vertex read from a second stream of the pair of streams, weights a probabilistic determination using data from the first vertex, data from the second vertex, and the islands schema, and determines whether to create a joining edge between the first vertex and the second vertex;
creating additional edges between vertices of different disconnected archipelagos according to the probabilistic zip function and the joining rules specified in the islands schema;
generating property values for the additional edges according to value generator classes and configuration parameters specified for the joining edge types in the islands schema;
validating property values generated for vertices and edges against constraints specified in the islands schema; and
maintaining counts of generated edges of each edge type to determine consistency of the generated schema-constrained synthetic property graph data with the islands schema;
wherein separating the initial archipelago generation phase from the stitching phase enables the plurality of disconnected archipelagos to be generated independently in parallel while preserving schema-defined vertex types, edge types, property constraints, local archipelago structures, and cross-archipelago joining relationships in the schema-constrained synthetic property graph data.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, wherein generating each disconnected archipelago during the initial archipelago generation phase comprises creating the root vertex of the root vertex type specified by the islands schema for the disconnected archipelago, assigning one or more property values to the root vertex according to one or more value generator classes specified in the islands schema, and recursively generating connected vertices and edges from the root vertex according to the vertex types and the edge types specified in the islands schema.

### Claim 3 (depends on 2)

The computer-implemented method of claim 2, wherein the probabilistic parameters specified in the islands schema comprise, for each edge type of one or more edge types specified by a corresponding vertex type, a likelihood value between 0.0 and 1.0 and a number of chances to create an edge of the edge type.

### Claim 4 (depends on 3)

The computer-implemented method of claim 3, wherein stitching the plurality of disconnected archipelagos together during the stitching phase comprises identifying pairs of vertex types associated with joining edge types specified in the islands schema, creating streams of previously materialized vertices of each identified vertex type from the plurality of disconnected archipelagos, and probabilistically creating additional edges between vertices from different streams according to the joining rules specified in the islands schema.

### Claim 5 (depends on 4)

The computer-implemented method of claim 4, wherein the islands schema specifies, for each vertex type, zero or more potential property keys, for each potential property key, a value generator class and configuration parameters for the value generator class, and, for each edge type, an in-vertex type and an out-vertex type.

### Claim 6 (depends on 5)

The computer-implemented method of claim 5, wherein recursively generating the connected vertices and edges comprises pushing edge creation operations onto the stack, pushing vertex creation operations onto the stack above corresponding edge creation operations, and executing the stack-based operations to generate vertices before writing connecting edges associated with the vertices.

### Claim 7 (depends on 6)

The computer-implemented method of claim 6, further comprising shuffling an order in which the previously materialized vertices are read from at least one stream of the pair of streams when creating the additional edges between the plurality of disconnected archipelagos.

### Claim 8

A system for generating schema-constrained synthetic property graph data for use in a database schema or data architecture, the system comprising:
a processor; and
a memory storing instructions that, when executed by the processor, cause the system to:
define an islands schema that functions as a type system for a property graph, the islands schema specifying archipelago structures, vertex types, edge types, property constraints, probabilistic parameters, and joining rules, wherein each archipelago structure comprises a root vertex type and zero or more additional vertex types;
for each vertex type specified by the islands schema, define zero or more potential property keys, a likelihood that each potential property key is created, a value generator class for generating a property value for a created property key, and configuration parameters for the value generator class, wherein the configuration parameters constrain generated property values;
for each edge type specified by the islands schema, define an in-vertex type, an out-vertex type, zero or more potential edge property keys, a likelihood value between 0.0 and 1.0 for creating the edge type, a number of chances to create the edge type, and an indication of whether the edge type is created during an initial archipelago generation phase or during a stitching phase;
generate, during the initial archipelago generation phase, a plurality of disconnected archipelagos in parallel according to the islands schema by executing a generator function that maps values in a numeric range to corresponding generated archipelagos;
for each disconnected archipelago of the plurality of disconnected archipelagos, create a root vertex of the root vertex type specified for the disconnected archipelago and recursively generate connected vertices and edges from the root vertex according to the vertex types, edge types, likelihood values, numbers of chances to create, property keys, value generator classes, and configuration parameters specified in the islands schema;
wherein, to recursively generate the connected vertices and edges, the instructions cause the system to evaluate each potential property key for a vertex according to the likelihood specified for the potential property key, call the value generator class associated with the potential property key when the potential property key is selected, generate a property value constrained by the configuration parameters associated with the value generator class, evaluate edge types referenced by the vertex type of the vertex being generated, and determine whether to create each potential edge according to the likelihood value and the number of chances to create specified for the corresponding edge type;
push edge creation operations onto a stack and push vertex creation operations onto the stack above corresponding edge creation operations, such that vertices are generated before connecting edges associated with the vertices are written;
transform nested lists of return values generated during the initial archipelago generation phase into sequential streams per disconnected archipelago;
stitch the plurality of disconnected archipelagos together during the stitching phase by identifying, from the islands schema, joining edge types that were not processed during the initial archipelago generation phase;
for each joining edge type, set up a pair of streams that read previously materialized vertices of the in-vertex type and the out-vertex type associated with the joining edge type;
implement a probabilistic zip function that pairs a first vertex read from a first stream of the pair of streams with a second vertex read from a second stream of the pair of streams, weights a probabilistic determination using data from the first vertex, data from the second vertex, and the islands schema, and determines whether to create a joining edge between the first vertex and the second vertex;
create additional edges between vertices of different disconnected archipelagos according to the probabilistic zip function and the joining rules specified in the islands schema;
generate property values for the additional edges according to value generator classes and configuration parameters specified for the joining edge types in the islands schema;
validate property values generated for vertices and edges against constraints specified in the islands schema; and
maintain counts of generated edges of each edge type to determine consistency of the generated schema-constrained synthetic property graph data with the islands schema;
wherein separation of the initial archipelago generation phase from the stitching phase enables the plurality of disconnected archipelagos to be generated independently in parallel while preserving schema-defined vertex types, edge types, property constraints, local archipelago structures, and cross-archipelago joining relationships in the schema-constrained synthetic property graph data.

### Claim 9 (depends on 8)

The system of claim 8, wherein, to generate each disconnected archipelago during the initial archipelago generation phase, the instructions cause the system to create the root vertex of the root vertex type specified by the islands schema for the disconnected archipelago, assign one or more property values to the root vertex according to one or more value generator classes specified in the islands schema, and recursively generate connected vertices and edges from the root vertex according to the vertex types and the edge types specified in the islands schema.

### Claim 10 (depends on 9)

The system of claim 9, wherein the probabilistic parameters specified in the islands schema comprise, for each edge type of one or more edge types specified by a corresponding vertex type, a likelihood value between 0.0 and 1.0 and a number of chances to create an edge of the edge type.

### Claim 11 (depends on 10)

The system of claim 10, wherein, to stitch the plurality of disconnected archipelagos together during the stitching phase, the instructions cause the system to identify pairs of vertex types associated with joining edge types specified in the islands schema, create streams of previously materialized vertices of each identified vertex type from the plurality of disconnected archipelagos, and probabilistically create additional edges between vertices from different streams according to the joining rules specified in the islands schema.

### Claim 12 (depends on 11)

The system of claim 11, wherein the islands schema specifies, for each vertex type, zero or more potential property keys, for each potential property key, a value generator class and configuration parameters for the value generator class, and, for each edge type, an in-vertex type and an out-vertex type.

### Claim 13 (depends on 12)

The system of claim 12, wherein, to recursively generate the connected vertices and edges, the instructions cause the system to push edge creation operations onto the stack, push vertex creation operations onto the stack above corresponding edge creation operations, and execute stack-based operations to generate vertices before writing connecting edges associated with the vertices.

### Claim 14 (depends on 13)

The system of claim 13, wherein the instructions further cause the system to shuffle an order in which the previously materialized vertices are read from at least one stream of the pair of streams when creating the additional edges between the plurality of disconnected archipelagos.
