IP Library Granted Patent US 10,585,883
Granted Patent B2
US 10,585,883 · App. 15/730,634 · Granted Mar 10, 2020

Search around visual queries

Inventors: Jordan Potter (San Francisco, CA); Nir Ackner (Palo Alto, CA); David Cohen (Palo Alto, CA)
Assignee: Palantir Technologies Inc.
G06F16/2428G06F16/2423G06F16/532G06F16/7335G06F16/9024G06F16/9038
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 10,585,883
App. No.
15/730,634
Granted
Mar 10, 2020
Kind
B2
Abstract

A method and apparatus for a data analysis system for analyzing data object collections is provided. The data analysis system includes one or more graphical user interfaces comprising various interface elements that enable users to create visual queries. A visual query is constructed as a graph representing a pattern of interest in a collection of data objects. A visual query may include one or more graph elements and property information associated with the specified graph elements. After a user has constructed a visual query, the system may transform the visual query into a query template. A query engine may then execute the query template to search a data object collection for data object results corresponding to the specified pattern. The search for instances of a specified pattern in a collection of data objects is referred herein to as a “search around.”

Claims (65)

1. A method comprising:

displaying, on a client computing device, via a graphical user interface provided by an application server, a graph comprising one or more graph nodes and one or more graph edges;

wherein each graph node of the one or more graph nodes represents a data object and wherein each graph edge of the one or more graph edges represents a data object link;

receiving input selecting a first graph node of the one or more graph nodes, wherein a graph edge links the first graph node to a second graph node;

using one or more computing devices, in response to receiving the input selecting the first graph node, generating a first list of one or more selectable data object types; receiving a selection of a first data object type from the first list of one or more selectable data object types;

receiving input selecting the second graph node; using the one or more computing devices, in response to receiving the input selecting the second graph node, generating a second list of one or more selectable data object types;

wherein generating the second list of the one or more selectable data object types comprises: searching for all instances of a data object pattern in a stored data object collection, the data object pattern including a first data object of the first data object type and a second data object that is linked to the first data object; determining one or more data object types of each second data object; and populating the second list of the one or more selectable data object types with the data object types of each second data object;

causing displaying the second list of the one or more selectable data object types;

receiving a selection of a particular data object type of the one or more selectable data object types;

transforming the graph into a textual representation of the graph;

causing execution, by a database server computer, of one or more database queries based on the textual representation of the graph.

2. The method of claim 1 , further comprising:

receiving input via the graphical user interface to add to the graph one or more of: a third graph node, and a third graph edge;

re-transforming the graph based at least on the one or more of the third graph node and third graph edges.

3. The method of claim 1 , further comprising:

receiving input via the graphical user interface to add an association between one or more of the one or more graph nodes and a particular data object type;

re-transforming the graph based at least on the one or more of the one or more graph nodes.

4. The method of claim 1 , further comprising:

receiving input via the graphical user interface to add an association between one or more of the one or more graph edges and one or more of: a link type, an object intermediary, a property match, and a link strength value;

re-transforming the graph based at least on the one or more of the one or more graph edges.

5. The method of claim 1 , further comprising:

receiving input via the graphical user interface to add an association between one or more of the one or more graph nodes and one or more data object properties;

re-transforming the graph based at least on the one or more data object properties.

6. The method of claim 1 , further comprising:

receiving input via the graphical user interface to add a branching condition associated with one or more of the one or more data objects, wherein the branching condition represents one of: a logical AND condition, and a logical OR condition;

re-transforming the graph based at least on the branching condition.

7. The method of claim 1 , further comprising:

receiving input via the graphical user interface indicating that one or more of the one or more graph edges is one of: a required graph edge, and an optional graph edge;

re-transforming the graph based at least on the one or more of the one or more graph edges.

8. The method of claim 1 , wherein the transforming includes traversing the graph and identifying, for each graph element of the graph, one or more of: a particular data object type, a particular data object link type, one or more particular property values.

9. The method of claim 1 , wherein the graph includes one or more blank graph elements, wherein each of the one or more blank graph elements is associated with a value to be supplied by a user when the one or more database queries are executed.

10. The method of claim 1 , wherein the textual representation of the graph is an Extensible Markup Language (XML) file and includes one or more XML elements corresponding to one or more graph elements of the graph.

11. A non-transitory computer-readable medium storing one or more sequences of instructions, which when executed by one or more processors, cause the one or more processors to carry out the steps of:

displaying, on a client computing device, via a graphical user interface provided by an application server, a graph comprising one or more graph nodes and one or more graph edges;

wherein each graph node of the one or more graph nodes represents a data object and wherein each graph edge of the one or more graph edges represents a data object link;

receiving input selecting a first graph node of the one or more graph nodes, wherein a graph edge links the first graph node to a second graph node;

using one or more computing devices, in response to receiving the input selecting the first graph node, generating a first list of one or more selectable data object types; receiving a selection of a first data object type from the first list of one or more selectable data object types;

receiving input selecting the second graph node;

using the one or more computing devices, in response to receiving the input selecting the second graph node, generating a second list of one or more selectable data object types;

wherein generating the second list of the one or more selectable data object types comprises: searching for all instances of a data object pattern in a stored data object collection, the data object pattern including a first data object of the first data object type and a second data object that is linked to the first data object; determining one or more data object types of each second data object; and populating the second list of the one or more selectable data object types with the data object types of each second data object;

causing displaying the second list of the one or more selectable data object types;

receiving a selection of a particular data object type of the one or more selectable data object types;

transforming the graph into a textual representation of the graph;

causing execution, by a database server computer, of one or more database queries based on the textual representation of the graph.

12. The non-transitory computer-readable medium of claim 11 , wherein the instructions, when executed by the one or more processors, further cause the one or more processors to carry out the steps of:

receiving input via the graphical user interface to add to the graph one or more of: a third graph node, and a third graph edge;

re-transforming the graph based at least on the one or more of the third graph node and third graph edges.

13. The non-transitory computer-readable medium of claim 11 , wherein the instructions, when executed by the one or more processors, further cause the one or more processors to carry out the steps of:

receiving input via the graphical user interface to add association between one or more of the one or more graph nodes and a particular data object type;

re-transforming the graph based at least on the one or more of the one or more graph nodes.

14. The non-transitory computer-readable medium of claim 11 , wherein the instructions, when executed by the one or more processors, further cause the one or more processors to carry out the steps of:

receiving input via the graphical user interface to add an association between one or more of the one or more graph edges and one or more of: a link type, an object intermediary, a property match, and a link strength value;

re-transforming the graph based at least on the one or more of the one or more graph edges.

15. The non-transitory computer-readable medium of claim 11 , wherein the instructions, when executed by the one or more processors, further cause the one or more processors to carry out the steps of:

receiving input via the graphical user interface indicating an association between one or more of the one or more graph nodes and one or more data object properties;

re-transforming the graph based at least on the one or more data object properties.

16. The non-transitory computer-readable medium of claim 11 , wherein the instructions, when executed by the one or more processors, further cause the one or more processors to carry out the steps of:

receiving input via the graphical user interface to add a branching condition associated with one or more of the one or more data objects, wherein the branching condition represents one of: a logical AND condition, and a logical OR condition;

re-transforming the graph based at least on the branching condition.

17. The non-transitory computer-readable medium of claim 11 , wherein the instructions, when executed by the one or more processors, further cause the one or more processors to carry out the steps of:

receiving input via the graphical user interface indicating that one or more of the one or more graph edges is one of: a required graph edge, and an optional graph edge;

re-transforming the graph based at least on the one or more of the one or more graph edges.

18. The non-transitory computer-readable medium of claim 11 , wherein the transforming includes traversing the graph and identifying, for each graph element of the graph, one or more of: a particular data object type, a particular data object link type, one or more particular property values.

19. The non-transitory computer-readable medium of claim 11 , wherein the graph includes one or more blank graph elements, wherein each of the one or more blank graph elements is associated with a value to be supplied by a user when the one or more database queries are executed.

20. The non-transitory computer-readable medium of claim 11 , wherein the textual representation of the graph is an Extensible Markup Language (XML) file and includes one or more XML elements corresponding to one or more graph elements of the graph.

Assignments (7)
SECURITY INTEREST Recorded Jul 3, 2022
From: PALANTIR TECHNOLOGIES INC.
To: WELLS FARGO BANK, N.A.
Reel/Frame 060572/0506 →
ASSIGNMENT OF INTELLECTUAL PROPERTY SECURITY AGREEMENTS Recorded Jul 3, 2022
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: WELLS FARGO BANK, N.A.
Reel/Frame 060572/0640 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ERRONEOUSLY LISTED PATENT BY REMOVING APPLICATION NO. 16/832267 FROM THE RELEASE OF SECURITY INTEREST PREVIOUSLY RECORDED ON REEL 052856 FRAME 0382. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Aug 26, 2021
From: ROYAL BANK OF CANADA
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 057335/0753 →
SECURITY INTEREST Recorded Jun 4, 2020
From: PALANTIR TECHNOLOGIES INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 052856/0817 →
RELEASE OF SECURITY INTEREST Recorded Jun 4, 2020
From: ROYAL BANK OF CANADA
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 052856/0382 →
SECURITY INTEREST Recorded Jan 27, 2020
From: PALANTIR TECHNOLOGIES INC.
To: ROYAL BANK OF CANADA, AS ADMINISTRATIVE AGENT
Reel/Frame 051709/0471 →
SECURITY INTEREST Recorded Jan 27, 2020
From: PALANTIR TECHNOLOGIES INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS ADMINISTRATIVE AGENT
Reel/Frame 051713/0149 →