IP Library Granted Patent US 11,531,682
Granted Patent B2
US 11,531,682 · App. 16/746,717 · Granted Dec 20, 2022

Federated search of multiple sources with conflict resolution

Inventors: Danielle Kramer (San Francisco, CA); Andrew Israel (Palo Alto, CA); Jeffrey Chen (Menlo Park, CA); David Cohen (Mountain View, CA); Stephen Freiberg (Palo Alto, CA); Bryan Offutt (Palo Alto, CA); Matt Avant (Palo Alto, CA); Peter Wilczynski (San Francisco, CA); Jason Hoch (San Jose, CA); Robert Liu (Palo Alto, CA); William Waldrep (Palo Alto, CA); Kevin Zhang (Palo Alto, CA); Alexander Landau (Palo Alto, CA); David Tobin (Atherton, CA)
Assignee: Palantir Technologies Inc.
G06F16/256G06F16/248G06F16/24575G06F16/258G06F16/27G06F16/9535
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,682
App. No.
16/746,717
Granted
Dec 20, 2022
Kind
B2
Abstract

Methods and apparatuses related to federated search of multiple sources with conflict resolution are disclosed. A method may comprise obtaining a set of data ontologies (e.g., types, properties, and links) associated with a plurality of heterogeneous data sources; receiving a selection of a graph comprising a plurality of graph nodes connected by one or more graph edges; and transforming the graph into one or more search queries across the plurality of heterogeneous data sources. A method may comprise obtaining a first data object as a result of executing a first search query across a plurality of heterogeneous data sources; resolving, based on one or more resolution rules, at least the first data object with a repository data object; deduplicating data associated with at least the first data object and the repository data object prior to storing the deduplicated data in a repository that has a particular data model.

Claims (56)

1. A system comprising:

one or more processors;

a memory storing instructions which, when executed by the one or more processors, causes performance of:

automatically importing a plurality of changes to data in a plurality of data sources when the plurality of changes occur,

wherein a first change is to first data in a first data source of the plurality of data sources,

wherein a second change is to second data in a second data source, of the plurality of data sources, that is different than the first data source,

wherein importing the plurality of changes comprising receiving, for each change of the plurality of changes, a push notification which is generated in response to said each change;

in response to receiving a particular push notification that is associated with a particular change pertaining to a data object, (1) searching, based on one or more first search criteria, a repository for a repository data object associated with the particular change and (2) searching, based on one or more second search criteria, a data source for a data source data object associated with the particular change;

inferring a change in a vector clock of the data object based on the particular change, wherein a first vector clock entry assigned to the repository data object has a first value and a second vector clock entry assigned to the data source data object has a second value;

deconflicting the change in the vector clock based on data source rankings or repository rankings.

2. The system of claim 1 , wherein:

searching the repository comprises searching the repository storing an object-central data model or a cache of the repository for the repository data object comprising the particular change described by the push notification;

searching the data source comprises searching the plurality of data sources for a federated data object comprising the particular change described by the push notification;

inferring the change in the vector clock comprises determining that the first vector clock entry for the repository data object differs from the second vector clock entry for the federated data object.

3. The system of claim 1 , wherein deconflicting the change in the vector clock comprises:

determining, from the data source rankings or repository rankings, that the data source is more authoritative than the repository storing an object-central data model;

in response to determining that the data source is more authoritative than the repository, updating the repository data object stored in the repository with the particular change to the data object in the data source.

4. The system of claim 1 , wherein the plurality of data sources is a plurality of heterogeneous data sources, each of which comprising one or more caches associated with one or more repositories.

5. The system of claim 1 , wherein the particular push notification comprises a particular location of the particular change.

6. The system of claim 1 , wherein the particular push notification does not contain the particular change.

7. One or more non-transitory computer-readable media storing instructions which, when executed by one or more processors, causes performance of:

automatically importing a plurality of changes to data in a plurality of data sources when the plurality of changes occur,

wherein a first change is to first data in a first data source of the plurality of data sources,

wherein a second change is to second data in a second data source, of the plurality of data sources, that is different than the first data source,

wherein importing the plurality of changes comprising receiving, for each change of the plurality of changes, a push notification which is generated in response to said each change;

in response to receiving a particular push notification that is associated with a particular change pertaining to a data object, (1) searching, based on one or more first search criteria, a repository for a repository data object associated with the particular change and (2) searching, based on one or more second search criteria, a data source for a data source data object associated with the particular change;

inferring a change in a vector clock of the data object based on the particular change, wherein a first vector clock entry assigned to the repository data object has a first value and a second vector clock entry assigned to the data source data object has a second value;

deconflicting the change in the vector clock based on data source rankings or repository rankings.

8. The one or more non-transitory computer-readable media of claim 7 , wherein:

searching the repository comprises searching the repository storing an object-central data model or a cache of the repository for the repository data object comprising the particular change described by the push notification;

searching the data source comprises searching the plurality of data sources for a federated data object comprising the particular change described by the push notification;

inferring the change in the vector clock comprises determining that the first vector clock entry for the repository data object differs from the second vector clock entry for the federated data object.

9. The one or more non-transitory computer-readable media of claim 7 , wherein deconflicting the change in the vector clock comprises:

determining, from the data source rankings or repository rankings, that the data source is more authoritative than the repository storing an object-central data model;

in response to determining that the data source is more authoritative than the repository, updating the repository data object stored in the repository with the particular change to the data object in the data source.

10. The one or more non-transitory computer-readable media of claim 7 , wherein the plurality of data sources comprises a plurality of heterogeneous data sources, each of which comprising one or more caches associated with one or more repositories.

11. The one or more non-transitory computer-readable media of claim 7 , wherein the particular push notification comprises a particular location of the particular change.

12. The one or more non-transitory computer-readable media of claim 7 , wherein the particular push notification does not contain the particular change.

13. A method comprising:

automatically importing a plurality of changes to data in a plurality of data sources when the plurality of changes occur,

wherein a first change is to first data in a first data source of the plurality of data sources,

wherein a second change is to second data in a second data source, of the plurality of data sources, that is different than the first data source,

wherein importing the plurality of changes comprising receiving, for each change of the plurality of changes, a push notification which is generated in response to said each change;

in response to receiving a particular push notification that is associated with a particular change pertaining to a data object, (1) searching, based on one or more first search criteria, a repository for a repository data object associated with the particular change and (2) searching, based on one or more second search criteria, a data source for a data source data object associated with the particular change;

inferring a change in a vector clock of the data object based on the particular change, wherein a first vector clock entry assigned to the repository data object has a first value and a second vector clock entry assigned to the data source data object has a second value;

deconflicting the change in the vector clock based on data source rankings or repository rankings.

14. The method of claim 13 , wherein:

searching the repository comprises searching the repository storing an object-central data model or a cache of the repository for the repository data object comprising the particular change described by the push notification;

searching the data source comprises searching the plurality of data sources for a federated data object comprising the particular change described by the push notification;

inferring the change in the vector clock comprises determining that the first vector clock entry for the repository data object differs from the second vector clock entry for the federated data object.

15. The method of claim 13 , wherein deconflicting the change in the vector clock comprises:

determining, from the data source rankings or repository rankings, that the data source is more authoritative than the repository storing an object-central data model;

in response to determining that the data source is more authoritative than the repository, updating the repository data object stored in the repository with the particular change to the data object in the data source.

16. The method of claim 13 , wherein the plurality of data sources comprises a plurality of heterogeneous data sources, each of which comprising one or more caches associated with one or more repositories.

17. The method of claim 13 , wherein the particular push notification comprises a particular location of the particular change.

18. The method of claim 13 , wherein the particular push notification does not contain the particular change.

Assignments (3)
CORRECTIVE ASSIGNMENT TO CORRECT THE CORRECTION OF ASSIGNEE ADDRESS PREVIOUSLY RECORDED AT REEL: 035964 FRAME: 0533. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Oct 25, 2022
From: KRAMER, DANIELLE; ISRAEL, ANDREW; CHEN, JEFFREY; COHEN, DAVID; FREIBERG, STEPHEN; OFFUTT, BRYAN; AVANT, MATT; WILCZYNSKI, PETER; HOCH, JASON; LIU, ROBERT; WALDREP, WILLIAM; ZHANG, KEVIN; LANDAU, ALEXANDER; TOBIN, DAVID
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 061769/0630 →
SECURITY INTEREST Recorded Jul 3, 2022
From: PALANTIR TECHNOLOGIES INC.
To: WELLS FARGO BANK, N.A.
Reel/Frame 060572/0506 →
SECURITY INTEREST Recorded Jun 4, 2020
From: PALANTIR TECHNOLOGIES INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 052856/0817 →
Continuity (3)
Continuation 14807658 · Jul 23, 2015
Continuation 14676621 · Apr 1, 2015
Related Publication 20200151189A1 · May 14, 2020
Cited By (2)
US 12,242,426 US 12,333,041