IP Library Granted Patent US 12,566,740
Granted Patent B2
US 12,566,740 · App. 18/589,255 · Granted Mar 3, 2026

System and methods for object version tracking and read-time/write-time data federation

Inventors: Peter Wilczynski (San Francisco, CA); Alexander Ryan (Palo Alto, CA); Allen Chang (Sunnyvale, CA); Daniel Cervelli (Mountain View, CA); Julie Tibshirani (Palo Alto, CA); Timothy Wilson (Palo Alto, CA)
Assignee: Palantir Technologies Inc.
G06F16/219G06F16/2456
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 12,566,740
App. No.
18/589,255
Granted
Mar 3, 2026
Kind
B2
Abstract

Systems and methods are provided in order to avoid ingesting the entire contents of one or more data sources. An object may be associated with one or more pieces/fragments of data that can be stored in different data sources. When a request for the object is initiated, a search for those pieces/fragments of data can be performed. Nodes associated with each data source may generate data queries appropriate for its corresponding data source, retrieve, and if needed transform the data into an object-based data structure. Any pieces/fragments of data that have been discovered and retrieved can be joined, e.g., by an application programming interface server, and forwarded to a requesting client or application. In this way, only data relevant to the object is obtained. Moreover, object versioning can be employed so that the most up-to-date data is obtained.

Claims (69)

1 . A system for analyzing data, comprising:

one or more processors, the processors comprising adapter nodes; and

a memory storing instructions that, when executed by the one or more processors, cause the system to:

receive a request, from an application, for an object;

retrieve, from datastores using a subset of the adapter nodes, data fragments making up or associated with the requested object, wherein:

the adapter nodes are intermediaries between the datastores and application programming interface (API) servers;

transform at least a portion of the data fragments, wherein the transforming comprises:

transforming a first portion of the data fragments based on a first version of a script, the first version of the script being generated according to a first schema of a datastore and a first target dataset ontology of a platform downstream of the application;

receiving an update to the first version of the script, the update resulting in generating a second version of the script, the second version of the script being generated according to the first schema or a second schema of the datastore and the first target dataset ontology or a second target dataset ontology of the platform downstream of the application; and

transforming the first portion or a second portion of the data fragments or modifying the transformed first portion of the data fragments based on the second version of the script;

upon transformation of at least the portion of the data fragments by the subset of the adapter nodes, join the data fragments by the API servers; and

transmit, by the API servers, the joined data fragments to the application.

2 . The system of claim 1 , wherein the adapter nodes further comprise respective caches in which most updated versions of the respective data fragments are stored.

3 . The system of claim 1 , further comprising a data analysis platform that stores a different data fragment; and wherein the instructions further cause the system to:

join the different data fragment to the joined data fragments to form composite data fragments, and wherein the transmitting of the joined data fragment comprises transmitting the composite data fragments.

4 . The system of claim 1 , wherein the instructions further cause the system to:

inactivate an adapter node and activate a new adapter node to replace the inactivated adapter node.

5 . The system of claim 1 , wherein, the instructions further cause the system to:

indicate that the retrieving of the data fragments has been partially completed; and

transmit a partial object view to the application.

6 . The system of claim 1 , wherein the instructions further cause the system to:

receive an indication that a data fragment has updated a version; and

in response to receiving the indication, reingesting, at the application, a new version of the data fragment.

7 . The system of claim 1 , wherein the joining of the data fragments comprises converting a first data fragment of a first data type by a first adapter node and a second data fragment of a second data type by a second adapter node into a standardized data type.

8 . The system of claim 1 , wherein

receive, from the datastores, a new version of a data fragment within a datastore;

in response to receiving the new version of the data fragment, instantiating a new adapter node to retrieve the new version of the data fragment; and

retrieve, from the datastore, using the new adapter node, the new version of the data fragment;

transform at least a portion of the new version of the data fragment based on the first version or the second version of the script; and

upon transformation of at least a portion of the new version of the data fragment, join the new version of the data fragment to other data fragments by the API servers; and

transmit, by the API servers, the joined new version of the data fragment and the other data fragments.

9 . A method being implemented by a computing system including one or more physical processors and storage media storing machine-readable instructions, the method comprising:

receiving a request, from an application, for an object;

retrieving, from datastores using a subset of the adapter nodes, data fragments making up or associated with the requested object, wherein:

the adapter nodes are intermediaries between the datastores and application programming interface (API) servers;

transforming at least a portion of the data fragments, wherein the transforming comprises:

transforming a first portion of the data fragments based on a first version of a script, the first version of the script being generated according to a first schema of a datastore and a first target dataset ontology of a platform downstream of the application;

receiving an update to the first version of the script, the update resulting in generating a second version of the script, the second version of the script being generated according to the first schema or a second schema of the datastore and the first target dataset ontology or a second target dataset ontology of the platform downstream of the application; and

transforming the first portion or a second portion of the data fragments or modifying the transformed first portion of the data fragments based on the second version of the script;

upon transformation of at least the portion of the data fragments by the subset of the adapter nodes, joining the data fragments by the API servers; and

transmitting, by the API servers, the joined data fragments to the application.

10 . The method of claim 9 , further comprising storing most updated versions of the respective data fragments in respective caches of the adapter nodes.

11 . The method of claim 9 , further comprising:

storing a different data fragment in a data analysis platform; and

joining the different data fragment to the joined data fragments to form composite data fragments, wherein the transmitting of the joined data fragment comprises transmitting the composite data fragments.

12 . The method of claim 9 , further comprising:

inactivating an adapter node and activating a new adapter node to replace the inactivated adapter node.

13 . The method of claim 9 , further comprising:

indicating that the retrieving of the data fragments has been partially completed; and

transmitting a partial object view to the application.

14 . The method of claim 9 , wherein a first of the data fragments comprises a tabular format and a second of the data fragments comprises a second, non-object oriented format.

15 . The method of claim 9 , further comprising:

receiving an indication that a data fragment has updated a version; and

in response to receiving the indication, reingesting, at the application, a new version of the data fragment.

16 . A non-transitory computer readable medium comprising instructions that, when executed, cause one or more processors to perform:

receiving a request, from an application, for an object;

retrieving, from datastores using a subset of the adapter nodes, data fragments making up or associated with the requested object, wherein:

the adapter nodes are intermediaries between the datastores and application programming interface (API) servers;

transforming at least a portion of the data fragments, wherein the transforming comprises:

transforming a first portion of the data fragments based on a first version of a script, the first version of the script being generated according to a first schema of a datastore and a first target dataset ontology of a platform downstream of the application;

receiving an update to the first version of the script, the update resulting in generating a second version of the script, the second version of the script being generated according to the first schema or a second schema of the datastore and the first target dataset ontology or a second target dataset ontology of the platform downstream of the application; and

transforming the first portion or a second portion of the data fragments or modifying the transformed first portion of the data fragments based on the second version of the script;

upon transformation of at least the portion of the data fragments by the subset of the adapter nodes, joining the data fragments by the API servers; and

transmitting, by the API servers, the joined data fragments to the application.

17 . The non-transitory computer readable medium of claim 16 , wherein the instructions further cause the one or more processors to perform:

storing most updated versions of the respective data fragments in respective caches of the adapter nodes.

18 . The non-transitory computer readable medium of claim 16 , wherein the instructions further cause the one or more processors to perform:

storing a different data fragment in a data analysis platform; and

joining the different data fragment to the joined data fragments to form composite data fragments, wherein the transmitting of the joined data fragment comprises transmitting the composite data fragments.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 28, 2024
From: WILCZYNSKI, PETER; RYAN, ALEXANDER; CHANG, ALLEN; CERVELLI, DANIEL; TIBSHIRANI, JULIE; WILSON, TIMOTHY
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 066588/0699 →
Continuity (4)
Continuation 17825549 · May 26, 2022
Continuation 16203167 · Nov 28, 2018
Provisional Application 62596673 · Dec 8, 2017
Related Publication 20240202174A1 · Jun 20, 2024
References Cited (94)
US 3747757A · Freis et al. · 1973 [cited by applicant]
US 4778219A · Wilczynski et al. · 1988 [cited by applicant]
US 6434619B1 · Lim · 2002 [cited by applicant]
US 6658533B1 · Bogin et al. · 2003 [cited by applicant]
US 7734643B1 · Waterhouse · 2010 [cited by examiner]
US 7788238B2 · Gabriel · 2010 [cited by examiner]
US 7877421B2 · Berger et al. · 2011 [cited by applicant]
US 8112262B1 · Michelsen · 2012 [cited by applicant]
US 8266122B1 · Newcombe · 2012 [cited by examiner]
US 8572129B1 · Lee et al. · 2013 [cited by applicant]
US 8700620B1 · Lieberman · 2014 [cited by applicant]
US 8713046B2 · Vishnoi · 2014 [cited by examiner]
US 8751466B1 · Tsay · 2014 [cited by applicant]
US 8954553B1 · Colton · 2015 [cited by applicant]
US 8976955B2 · Liberman Ben-Ami · 2015 [cited by applicant]
US 9710512B2 · Foebel · 2017 [cited by applicant]
US 9727314B2 · Michelsen · 2017 [cited by applicant]
US 9753744B1 · Wells · 2017 [cited by applicant]
US 9760606B1 · Wilczynski et al. · 2017 [cited by applicant]
US 10152306B2 · Ryan et al. · 2018 [cited by applicant]
US 20050172306A1 · Agarwal et al. · 2005 [cited by applicant]
US 20060122982A1 · Krishnaprasad · 2006 [cited by applicant]
US 20060218290A1 · Lin · 2006 [cited by examiner]
US 20080189360A1 · Kiley et al. · 2008 [cited by applicant]
US 20080209451A1 · Michels et al. · 2008 [cited by applicant]
US 20080307523A1 · Subramanyam et al. · 2008 [cited by applicant]
US 20080313660A1 · Malik et al. · 2008 [cited by applicant]
US 20090077094A1 · Bodain · 2009 [cited by applicant]
US 20100057815A1 · Spivack et al. · 2010 [cited by applicant]
US 20110145689A1 · Campbell et al. · 2011 [cited by applicant]
US 20110196855A1 · Wablae et al. · 2011 [cited by applicant]
US 20110282919A1 · Sweeney et al. · 2011 [cited by applicant]
US 20110320019A1 · Lanciani et al. · 2011 [cited by applicant]
US 20130136253A1 · Liberman Ben-Ami et al. · 2013 [cited by applicant]
US 20130218919A1 · Solonchev · 2013 [cited by examiner]
US 20140164315A1 · Golshan · 2014 [cited by examiner]
US 20150150094A1 · Foebel et al. · 2015 [cited by applicant]
US 20150254124A1 · Berg et al. · 2015 [cited by applicant]
US 20150331465A1 · Slik · 2015 [cited by examiner]
US 20150363492A1 · Laredo et al. · 2015 [cited by applicant]
US 20160063008A1 · Benight · 2016 [cited by examiner]
US 20160094670A1 · Garcia Manchado · 2016 [cited by applicant]
US 20160112262A1 · Johnson · 2016 [cited by applicant]
US 20160188594A1 · Ranganathan · 2016 [cited by examiner]
US 20160203138A1 · Feldschuh · 2016 [cited by applicant]
US 20160203453A1 · Ito · 2016 [cited by applicant]
US 20160275158A1 · Baset et al. · 2016 [cited by applicant]
US 20160285957A1 · Haserodt · 2016 [cited by applicant]
US 20160359989A1 · Aycock · 2016 [cited by applicant]
US 20160378439A1 · Straub et al. · 2016 [cited by applicant]
US 20170004506A1 · Steinman · 2017 [cited by applicant]
US 20170026393A1 · Walsh · 2017 [cited by applicant]
US 20170034023A1 · Nickolov et al. · 2017 [cited by applicant]
US 20170046134A1 · Straub · 2017 [cited by applicant]
US 20170046235A1 · Straub et al. · 2017 [cited by applicant]
US 20170048215A1 · Straub · 2017 [cited by applicant]
US 20170048252A1 · Straub et al. · 2017 [cited by applicant]
US 20170048319A1 · Straub · 2017 [cited by applicant]
US 20170048339A1 · Straub · 2017 [cited by applicant]
US 20170083378A1 · Bishop et al. · 2017 [cited by applicant]
US 20170083386A1 · Wing et al. · 2017 [cited by applicant]
US 20170091680A1 · Rosenthal · 2017 [cited by applicant]
US 20170199736A1 · Dahan · 2017 [cited by examiner]
US 20170228253A1 · Layman et al. · 2017 [cited by applicant]
US 20170262852A1 · Florimond et al. · 2017 [cited by applicant]
US 20170364569A1 · Jacob et al. · 2017 [cited by applicant]
US 20180129485A1 · Ryan et al. · 2018 [cited by applicant]
US 20180173800A1 · Chang et al. · 2018 [cited by applicant]
D'Aquin; Sabou, Marta and Motta, Enrico (2006). Modularization: a key for the dynamic selection; of relevant knowledge components. In: 1st International Workshop on Modular Ontologies, WoMO'06, Nov. 5, 2006,; Athens, Ge… [cited by applicant]
Doran et al. “Ontology module extraction for ontology reuse: an ontology engineering perspective.” In: Proceedings of the sixteenth ACM conference on Conference on information and knowledge management; (CIKM '07). ACM, … [cited by applicant]
Doran, “Ontology Modularization Principles and Practice”, Oct. 2009. [cited by applicant]
Garcia et al., “A Matchmaking Algorithm for Resource Discovery in Multi-user Settings,” 2014 IEEE/WIC/ACM International Joint Conferences on Web Intelligence (WI) and Intelligent Agent Technologies (IAT) Year: 2014, vol… [cited by applicant]
Jimenez-Ruiz et al. “Safe and Economic Re-Use of Ontologies: A Logic-Based Methodology and Tool Support”, Technical Report, Nov. 5, 2008. [cited by applicant]
Jimenez-Ruiz, Ernesto et al. “ProSE: A Protege plugin for Reusing Ontologies, Safe and Economique User Manual.” (2008). [cited by applicant]
Lin et al., “PRADA: Prioritized Random Access with Dynamic Access Barring for MTC in 3GPP LTE-A Networks,” IEEE Transactions on Vehicular Technology Year: 2014, vol. 63, Issue 5, pp. 2467-2472. [cited by applicant]
Lozano et al., “Ontology View Extraction: an approach based on ontological meta-properties”, 2014 IEEE. [cited by applicant]
Michael Ettredge et al., Using web-based search data to predict macroeconomic statistics, 2005, [Retrieved on Jun. 27, 2018]. Retrieved from the internet: <URL: https://dl.acm.org/citation.cfm?id=1096010> 6 Pages (87-92… [cited by applicant]
Na et al., “Design of Location-based Directory Facilitator in Context-Aware Environment,” 2008 10th International Conference on Advanced Communication Technology Year: 2008, vol. 3, pp. 2107-2110. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 15/364,131 dated May 8, 2017. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 15/730,646 dated Aug. 7, 2018. [cited by applicant]
Noy et al., “Traversing Ontologies to Extract Views”, from book Modular Ontologies: Concepts, Theories and Techniques for Knowledge Modularization (pp. 245-260), Jan. 2009. [cited by applicant]
Official Communication for European Patent Application No. 17195027.2 dated Nov. 30, 2017. [cited by applicant]
Official Communication for U.S. Appl. No. 15/364,131 dated Feb. 7, 2017. [cited by applicant]
Official Communication for U.S. Appl. No. 15/459,843 dated Nov. 15, 2017. [cited by applicant]
Official Communication for U.S. Appl. No. 15/459,843 dated Jun. 23, 2017. [cited by applicant]
Official Communication for U.S. Appl. No. 15/459,843 dated Aug. 9, 2017. [cited by applicant]
Official Communication for U.S. Appl. No. 15/730,646 dated Dec. 4, 2017. [cited by applicant]
Official Communication for U.S. Appl. No. 15/459,843 dated Jun. 12, 2018. [cited by applicant]
Official Communication for U.S. Appl. No. 15/459,843 dated Nov. 23, 2018. [cited by applicant]
Official Communication for U.S. Appl. No. 15/730,646 dated Mar. 1, 2018. [cited by applicant]
Official Communication for U.S. Appl. No. 16/213,936 dated Jan. 23, 2019. [cited by applicant]
Ye Hui-min et al., Design and Implementation of On-Line Hot Topic Discovery Model, 2006, [Retrieved on Jun. 27, 2018]. Retrieved from the internet: <URL: https://link.springer.com/content/pdf/10.1007%2FBF02831697.pdf> 6… [cited by applicant]
Non-Final Office Action dated Dec. 23, 2022, issued in U.S. Appl. No. 17/825,549 (10 pages). [cited by applicant]
Final Office Action dated Jul. 17, 2023, issued in U.S. Appl. No. 17/825,549 (12 pages). [cited by applicant]