IP Library Granted Patent US 10,719,621
Granted Patent B2
US 10,719,621 · App. 16/285,900 · Granted Jul 21, 2020

Providing unique views of data based on changes or rules

Inventors: Robert J. McGrew (Palo Alto, CA); Nathan Gettings (Fremont, CA); Stephen Baburao Cohen (Fremont, CA)
Assignee: Palantir Technologies Inc.
G06F21/6218G06F16/1873G06F16/219G06F16/2329G06F16/2445G06Q50/18G06Q50/26
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,719,621
App. No.
16/285,900
Granted
Jul 21, 2020
Kind
B2
Abstract

In one embodiment, a method comprises creating and storing, one or more data objects; wherein a first plurality of the data objects is associated with a base set of data representing data shared across a plurality of users; wherein a second plurality of the data objects is associated with one or more child sets of data, wherein each of the child sets of data represents data local to a project, wherein each of the users is associated with one or more of the child sets of data; wherein each data object is associated to an identifier value and to a version identifier value for a plurality of versions of the data object, wherein each of the versions represents a change to the data object by any of a plurality of users; receiving a request from a first user to view a third plurality of data objects; selecting, based on the base set of data, the particular set of data, the version identifier value for the data objects in the third plurality, and one or more rules associated with the particular set of data and the first user, data objects in the third plurality that can be viewed by the first user; creating a particular data view that includes only the selected data objects; and providing a display of the particular data view to the first user.

Claims (60)

1. A computer-implemented method, comprising:

storing by one or more servers a first child set of data, wherein the first child set of data comprises a first plurality of data object versions that are only accessible at the one or more servers to particular computer users;

storing by the one or more servers a base set of data, wherein the base set of data comprises a second plurality of data object versions that are only accessible at the one or more servers to the particular computer users;

asynchronously receiving, from different computer users, a set of respective changes to a particular data object, and in response thereto, creating a version in an object table for each of the sets of respective changes;

receiving by the one or more servers, from a first computer user of a plurality of computer users, a server command to send the version of the first user to the base set of data;

in response to receiving the server command, sending a particular version of the particular data object from the first child set of data to the base set of data;

in response to receiving the server command, preventing one or more other versions of the particular data object from the first child set of data from being sent to the base set of data by configuring the one or more servers to deny requests to send one or more other versions of the particular data object from the first child set of data;

receiving by the one or more servers, from a second computer user that is currently accessing a second child set of data, a request to access any version of the particular data object that has been sent to the base set of data;

in response to the request, and based at least in part on the sending of the particular version of the particular data object to the base set of data, permitting the second user to access the particular version of the particular data object that has been sent to the base set of data by configuring the one or more servers to permit access to the second user to the particular version of the particular data object that has been sent to the base set of data;

wherein the method is performed through application logic by one or more computing devices.

2. A method as recited in claim 1 , further comprising:

receiving by, the one or more servers, definitions of one or more rules and configuring the one or more servers to process the one or more rules, wherein each rule restricts access for one or more computer users to one or more data objects regardless of which set of data contains the one or more data objects; and

wherein permitting the second computer user to access the particular version of the particular data object is based on determining that the one or more rules do not restrict access for the second user to the particular data object as well as being based on the base set of data and a version identifier value for the one or more data objects.

3. A method as recited in claim 1 , further comprising:

detecting that a change has occurred in the particular data object; and

wherein permitting the second computer user to access the particular version of the particular data object is based on determining whether the particular data object can be provided to the second computer user based on the base set of data and a version identifier value for the particular data object.

4. A method as recited in claim 1 , wherein permitting the second computer user to access the particular version of the particular data object comprises providing only a selected subset of rows of data to the second computer user.

5. A method as recited in claim 1 , further comprising:

creating and storing by the one or more servers an object table comprising rows that represent the first plurality of data object versions and the second plurality of data object versions and columns that represent, for each of the first plurality of data object versions and the second plurality of data object versions, an associated set of data, a version value, and a pointer to a previous version, wherein said associated set of data is different from said version value.

6. A method as recited in claim 1 , wherein the first plurality of data object versions are only accessible at the one or more servers to particular computer users currently accessing the first child set of data and wherein the second plurality of data object versions are only accessible at the one or more servers to the particular computer users and other computer users that are not currently accessing the first child set of data at the one or more servers.

7. A method as recited in claim 1 , wherein sending the particular version of the particular data object to the base set of data comprises sending the particular version of the particular data object to the base set of data without sending data directly between the first computer user and the second computer user.

8. A method as recited in claim 1 , further comprising:

creating and storing one or more data object versions; and

wherein each data object version of the one or more data object versions is associated to a version identifier value and to an identifier value for a set of data.

9. One or more non-transitory computer-readable storage media comprising instructions, which when executed by one or more processors, cause the one or more processors to perform:

storing by one or more servers a base set of data, wherein the base set of data comprises a first plurality of data object versions that are accessible to one or more computer users of a project set of data and other computer users different from the one or more computer users;

storing by the one or more servers the project set of data, wherein the project set of data comprises a second plurality of data object versions that are only accessible through the one or more servers to the one or more computer users of the project set of data;

receiving by the one or more servers a first rule definition, wherein the first rule definition restricts access for one or more particular computer users of the one or more computer users of the project set of data to one or more data objects in the project set of data by configuring the one or more servers to restrict access for the one or more particular computer users to the project set of data to the one or more data objects in the project set of data;

receiving, by the one or more servers, from a first computer user of the one or more computer users of the project set of data, a request to access any version of a particular data object;

based on the base set of data, the project set of data, and the first rule definition, identifying one or more particular versions of the particular data object that the first user may access by configuring the server to identify the one or more particular versions in response to the receiving the request to access any version of a particular data object;

generating a view of data on a computer display that includes the one or more particular versions of the particular data object;

displaying the view of data on the computer display to the first computer user.

10. The one or more non-transitory computer-readable storage media of claim 9 , wherein identifying one or more particular versions of the particular data object that the first computer user may view comprises:

identifying all data object versions for the particular data object that are associated with the base set of data or the project set of data.

11. The one or more non-transitory computer-readable storage media of claim 9 , wherein identifying one or more particular versions of the particular data object that the first computer user may view further comprises:

identifying the most recently modified version of all data object versions for the particular data object that are associated with the base set of data or the project set of data.

12. The one or more non-transitory computer-readable storage media of claim 9 , wherein each data object version of at least one of the first and second plurality of data object versions is associated to a version identifier value and to an identifier value for a set of data.

13. One or more non-transitory computer-readable storage media comprising instructions, which when executed by one or more processors, cause the one or more processors to perform:

storing by one or more servers a first child set of data, wherein the first child set of data comprises a first plurality of data object versions that are only accessible at the one or more servers to particular computer users that are currently accessing the first child set of data;

storing by the one or more servers a base set of data, wherein the base set of data comprises a second plurality of data object versions that are only accessible at the one or more servers to the particular computer users;

asynchronously receiving, from different computer users, a set of respective changes to a particular data object, and in response thereto, creating a version in an object table for each of the sets of respective changes;

receiving by the one or more servers, from a first computer user of a plurality of computer users, a server command to send the version of the first user to the base set of data;

in response to receiving the server command, sending a particular version of the particular data object from the first child set of data to the base set of data;

in response to receiving the server command, preventing one or more other versions of the particular data object from the first child set of data from being sent to the base set of data by configuring the one or more servers to deny requests to send one or more other versions of the particular data object from the first child set of data;

receiving by the one or more servers, from a second computer user that is currently accessing a second child set of data, a request to access any version of the particular data object that has been sent to the base set of data;

in response to the request, and based at least in part on the sending of the particular version of the particular data object to the base set of data, permitting the second user to access the particular version of the particular data object that has been sent to the base set of data by configuring the one or more servers to permit access to the second user to the particular version of the particular data object that has been sent to the base set of data.

14. The one or more non-transitory computer-readable storage media of claim 13 , further comprising instructions, which when executed by the one or more processors, cause the one or more processors to perform:

receiving definitions of one or more rules by one or more servers, wherein each rule restricts access for one or more computer users to one or more data objects regardless of which set of data contains the one or more data objects; and

wherein permitting the second computer user to access the particular version of the particular data object is based on determining by the one or more servers that the one or more rules do not restrict access for the second computer user to the particular data object as well as being based on the base set of data and a version identifier value for the one or more data objects.

15. The one or more non-transitory computer-readable storage media of claim 13 , further comprising instructions, which when executed by the one or more processors, cause the one or more processors to perform:

detecting at one or more servers that a change has occurred in the particular data object; and

wherein permitting the second computer user to access the particular version of the particular data object is based on determining whether the particular data object can be provided to the second computer user based on the base set of data and a version identifier value for the particular data object.

16. The one or more non-transitory computer-readable storage media of claim 13 , wherein permitting the second computer user to access the particular version of the particular data object comprises providing only a selected subset of rows of data to the second computer user.

17. The one or more non-transitory computer-readable storage media of claim 13 , further comprising instructions, which when executed by the one or more processors, cause the one or more processors to perform:

creating and storing by one or more servers an object table comprising rows that represent the first plurality of data object versions and the second plurality of data object versions and columns that represent, for each of the first plurality of data object versions and the second plurality of data object versions, an associated set of data, a version value, and a pointer to a previous version, wherein said associated set of data is different from said version value.

18. The one or more non-transitory computer-readable storage media of claim 17 , wherein the first plurality of data object versions are only accessible at the one or more servers to particular computer users currently accessing the first child set of data and wherein the second plurality of data object versions are only accessible at the one or more servers to the particular computer users and other computer users that are not currently accessing the first child set of data at the one or more servers.

19. The one or more non-transitory computer-readable storage media of claim 13 , wherein sending the particular version of the particular data object to the base set of data comprises sending the particular version of the particular data object to the base set of data without sending data directly between the first computer user and the second computer user.

20. The one or more non-transitory computer-readable storage media of claim 13 , further comprising instructions, which when executed by the one or more processors, cause the one or more processors to perform:

creating and storing, by the one or more servers, one or more data object versions; and

wherein each data object version of the one or more data object versions is associated to a version identifier value and to an identifier value for a set of data.

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 →