IP Library Granted Patent US 11,531,706
Granted Patent B2
US 11,531,706 · App. 16/585,621 · Granted Dec 20, 2022

Graph search using index vertices

Inventors: Yu Xu (Millbrae, CA); Zixuan Zhuang (San Jose, CA); Dan Hu (Sunnyvale, CA); Xinyu Chang (Menlo Park, CA)
Assignee: GraphSQL, Inc.
G06F16/9024G06F16/903
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,531,706
App. No.
16/585,621
Granted
Dec 20, 2022
Kind
B2
Abstract

Systems, methods, and software described herein provide graph searching via index vertices. In one implementation, a graph management system may receive a request to identify vertices of a first vertex type in a graph, wherein the request defines one or more attributes associated with the vertices. In response to the request, the graph management system may identify one or more index vertices associated with the one or more attributes, wherein the one or more index vertices is associated with one or more second vertex types. The graph management system may further identify the vertices in the graph with edges that couple to the one or more index vertices.

Claims (51)

1. A method of searching a graph, wherein the graph comprises a plurality of vertices of a first vertex type and a plurality of index vertices of one or more other vertex types, the method comprising:

receiving a request to identify one or more vertices of the first vertex type in the graph with one or more attributes;

in response to the request, identifying one or more index vertices of the plurality of index vertices each with at least one attribute of the one or more attributes, wherein the one or more index vertices comprise one or more second vertex types of the one or more other vertex types, wherein the one or more index vertices are each indexed using at least one attribute of the one or more attributes, and wherein the one or more vertices are each indexed using a different attribute than the one or more attributes; and

identifying the one or more vertices in the graph based on each vertex of the one or more vertices having one or more edges that couple the vertex to each of the one or more index vertices.

2. The method of claim 1 , wherein the plurality of vertices comprises data instance vertices of the first vertex type.

3. The method of claim 2 , wherein identifying the one or more vertices in the graph based on each of the one or more vertices having one or more edges that couple the edge to each of the one or more index vertices comprises:

for each index vertex in the one or more index vertices, generating a flag for any of the data instance vertices coupled to the index vertex;

identifying a set of one or more of the data instance vertices that are coupled to each of the one or more index vertices based on the flags; and

identifying the set of the one or more data instance vertices as the one or more vertices.

4. The method of claim 3 , wherein the flags indicate a quantity of the one or more index vertices coupled to a data instance vertex in the graph.

5. The method of claim 2 , wherein identifying the one or more vertices in the graph based on each of the one or more vertices having one or more edges that couple the edge to each of the one or more index vertices comprises:

(a) for a first index vertex of the one or more index vertices, identifying a first subset of the data instance vertices coupled to the first index vertex;

(b) after identifying the first subset and for a second index vertex of the one or more index vertices, identifying a second subset of the data instance vertices from the first subset of the data instance vertices that is coupled to the first index vertex and the second index vertex;

(c) determine whether a subset of data instance vertices has been identified for each vertex in the one or more index vertices;

(d) in response to determining that a subset of data instance vertices has not yet been identified for each vertex in the one or more index vertices, repeating steps (b) and (c) with the second index vertex as the first index vertex, the second subset as the first subset, and a new index vertex of the one or more index vertices as the second index vertex; and

(e) in response to determining that a subset of data instance vertices has been identified for each vertex in the one or more index vertices, identifying the second subset of the data instance vertices as the one or more vertices.

6. The method of claim 2 , wherein the data instance vertices each comprise attribute types, wherein the data instance vertices are indexed using a first attribute type of the one or more attribute types, and wherein the index vertices are indexed using different attribute types from the first attribute type.

7. The method of claim 1 further comprising causing, for display, one or more attributes associated with the one or more vertices to respond to the request.

8. The method of claim 1 further comprising:

identifying the request from an obtained query to the graph; and

processing one or more attributes in the one or more vertices to generate a response to the query.

9. A computing apparatus comprising:

one or more non-transitory computer readable storage media;

a processing system operatively coupled to the one or more non-transitory computer readable storage media; and

program instructions stored on the one or more non-transitory computer readable storage media to search a graph comprising a plurality of vertices of a first vertex type and a plurality of index vertices of one or more other vertex types that, when executed by the processing system, direct the processing system to:

receive a request to identify one or more vertices of the first vertex type in the graph, wherein the request indicates one or more attributes associated with the one or more vertices;

in response to the request, identify one or more index vertices of the plurality of index vertices each with at least one attribute of the one or more attributes, wherein the one or more index vertices comprise one or more second vertex types of the one or more other vertex types, wherein the one or more index vertices are each indexed using at least one attribute of the one or more attributes, and wherein the one or more vertices are each indexed using a different attribute than the one or more attributes; and

identify the one or more vertices in the graph based on each vertex of the one or more vertices having one or more edges that couple the vertex to each of the one or more index vertices.

10. The computing apparatus of claim 9 , wherein the plurality of vertices comprises data instance vertices of the first vertex type.

11. The computing apparatus of claim 10 , wherein identifying the one or more vertices in the graph based on each of the one or more vertices having one or more edges that couple the edge to each of the one or more index vertices comprises:

for each index vertex in the one or more index vertices, generating a flag for any of the data instance vertices coupled to the index vertex;

identifying a set of one or more of the data instance vertices that are coupled to each of the one or more index vertices based on the flags; and

identifying the set of the one or more data instance vertices as the one or more vertices.

12. The computing apparatus of claim 11 , wherein the flags indicate a quantity of the one or more index vertices coupled to a data instance vertex in the graph.

13. The computing apparatus of claim 10 , wherein the one or more vertices in the graph based on each of the one or more vertices having one or more edges that couple the edge to each of the one or more index vertices comprises:

(a) for a first index vertex of the one or more index vertices, identifying a first subset of the data instance vertices coupled to the first index vertex;

(b) after identifying the first subset and for a second index vertex of the one or more index vertices, identifying a second subset of the data instance vertices from the first subset of the data instance vertices that is coupled to the first vertex and the second vertex;

(c) determine whether a subset of data instance vertices has been identified for each vertex in the one or more index vertices;

(d) in response to determining that a subset of data instance vertices has not yet been identified for each vertex in the one or more index vertices, repeating steps (b) and (c) with the second index vertex as the first index vertex, the second subset as the first subset, and a new index vertex of the one or more index vertices as the second index vertex; and

(e) in response to determining that a subset of data instance vertices has been identified for each vertex in the one or more index vertices, identifying the second subset of the data instance vertices as the one or more vertices.

14. The computing apparatus of claim 9 , wherein the program instructions further direct the processing system to cause, for display, one or more attributes associated with the one or more vertices to respond to the request.

15. The computing apparatus of claim 9 , wherein the program instructions further direct the processing system to:

identify the request from an obtained query to the graph;

process one or more attributes in the one or more vertices to generate a response to the query.

16. The computing apparatus of claim 15 , wherein the program instructions further direct the processing system to generate a display of the response to the query.

17. An apparatus comprising:

one or more non-transitory computer readable storage media; and

program instructions stored on the one or more non-transitory computer readable storage media to search a graph comprising a plurality of vertices of a first vertex type and a plurality of index vertices of one or more other vertex types that, when executed by a processing system, direct a processing to:

receive a request to identify one or more vertices of the first vertex type in the graph, wherein the request indicates attributes associated with the one or more vertices;

in response to the request, identify index vertices of the plurality of index vertices each with at least one attribute of the attributes, wherein the index vertices are each indexed using at least one attribute of the attributes, and wherein the one or more vertices are each indexed using a different attribute than the attributes; and

identify the one or more vertices in the graph based on each vertex of the one or more vertices having edges that couple the vertex to each of the index vertices.

Assignments (3)
SECURITY INTEREST Recorded Sep 24, 2025
From: TIGERGRAPH, INC.
To: WESTERN ALLIANCE BANK
Reel/Frame 072363/0020 →
CHANGE OF NAME Recorded Mar 22, 2023
From: GRAPHSQL, INC.
To: TIGERGRAPH, INC.
Reel/Frame 063146/0446 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 27, 2019
From: XU, YU; ZHUANG, ZXUAN; HU, DAN; CHANG, XINYU
To: GRAPHSQL
Reel/Frame 050517/0329 →
Continuity (2)
Provisional Application 62892137 · Aug 27, 2019
Related Publication 20210064660A1 · Mar 4, 2021