IP Library Granted Patent US 12670285
Granted Patent B2
US 12670285 · App. 17/551,452 · Granted Jun 30, 2026

Privacy protected database querying

Inventors: Deima Elnatour (Santa Clara, CA); Elli Shapiro (London, GB); Muhammad Mohsin K. Niazi (London, GB); Michael B. Wood (London, GB); Brandon J. Van Ryswyk (Los Altos, CA); Paul A. Youngblood (San Mateo, CA); Daniela S. Antonova (London, GB); Andrew M. Bennett (North Hollywood, CA); Alex B. McLaughlin (Santa Monica, CA); Sebastien P. Sahuc (Piedmont, CA); Cristian B. Opris (London, GB); Miguel Nunes De Miranda (London, GB)
Assignee: Apple Inc.
G06F21/6227G06F9/54G06F16/24556G06F21/6245
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 12670285
App. No.
17/551,452
Granted
Jun 30, 2026
Kind
B2
Abstract

Systems, methods, and devices are described herein to query data in an entity data database. A query for information about a set of entities is received from a requesting system. The query is in a predefined format and includes search conditions. A querying strategy is determined based on the received query. The entity data database is queried by identifying a set of user records that fulfill a first search condition. A numerical value of the set of user records is next compared to a threshold. Depending on the numerical value, the set of user records is assigned to a first numerical bucket. Depending on the bucket, the numerical value is changed to a second numerical value, which is used to generate an aggregated count value. The aggregated count value is shared with the requesting system.

Claims (62)

1 . A computer-implemented method, using one or more processors, comprising:

receiving, from a requesting system, a first query for information about a set of entities corresponding to a predefined endpoint format and comprising a search condition associated with the predefined endpoint format;

determining, based at least in part on the first query, a set of queries for the predefined endpoint format;

identifying, for each query in the set of queries, a corresponding set of user entity records in an entity data database that fulfills the search condition;

determining, for each query in the set of queries, a corresponding first numerical value corresponding to a number of user entity records of the corresponding set of user entity records;

identifying, for at least a subset of queries of the set of queries, a corresponding first predefined numerical value range of a plurality of predefined numerical value ranges that the corresponding first numerical value falls within;

identifying, for each query in the subset of queries, a corresponding second numerical value that falls within the corresponding first predefined numeral value range;

changing, for each query in the subset of queries, the corresponding first numerical value to the corresponding second numerical value;

generating, based at least in part on the corresponding second numerical value associated with each query in the subset of queries, a set of aggregated count values; and

transmitting the set of aggregated count values to the requesting system.

2 . The computer-implemented method of claim 1 , wherein each user entity record of the corresponding set of user entity records is associated with a persistent record identifier and a temporary record identifier.

3 . The computer-implemented method of claim 2 , wherein:

each persistent record identifier uniquely identifies an entity associated with a corresponding user entity record; and

generating the set of aggregated count values comprise excluding the persistent record identifier corresponding to each user entity record from the set of aggregated count values.

4 . The computer-implemented method of claim 2 , wherein:

each temporary record identifier uniquely identifies an entity associated with a corresponding user entity record;

generating the set of aggregated count numerical values comprise including the temporary record identifier corresponding to each user entity record with the set of aggregated count numerical values.

5 . The computer-implemented method of claim 1 , wherein identifying the corresponding set of user entity records in the entity data database comprises identifying the corresponding set of user entity records based at least in part on at least one of a persistent identifier corresponding to each user entity record or a temporary record identifier corresponding to each user entity record.

6 . The computer-implemented method of claim 1 , further comprising:

determining a set of identifying data associated with the corresponding set of user entity records; and

excluding the set of identifying data from the corresponding second numerical value.

7 . The computer-implemented method of claim 1 , further comprising determining whether the corresponding first numerical value meets or exceeds a first numerical threshold, wherein identifying the first predefined numerical value range occurs after determining that the corresponding first numerical value meets or exceeds the first numerical threshold.

8 . The computer-implemented method of claim 1 , further comprising determining whether the corresponding first numerical value is the same as a first predefined numerical value that falls within the first predefined numerical value range, wherein changing the corresponding first numerical value to the corresponding second numerical value is based at least in part on whether the corresponding first numerical value and the first predefined numerical value are the same.

9 . The computer-implemented method of claim 8 , wherein, when the corresponding first numerical value is different than the first predefined numerical value, the corresponding second numerical value is a second predefined numerical value that falls within the first predefined numerical value range.

10 . The computer-implemented method of claim 8 , wherein, when the corresponding first numerical value is the same as the first predefined numerical value, changing the corresponding first numerical value to the corresponding second numerical value includes changing the corresponding first numerical value by adding a third numerical value.

11 . The computer-implemented method of claim 10 , wherein:

the first predefined numerical value range includes a range of numerical values between a lowest value and a highest value; and

the third numerical value is less than or equal to a difference between the highest value and the lowest value.

12 . The computer-implemented method of claim 1 , wherein the corresponding first numerical value is a total of the number of user entity records of the set of user entity records.

13 . The computer-implemented method of claim 1 ,

wherein:

the query corresponds to a set of search conditions; and

the search condition is a first search condition of the set of search conditions.

14 . One or more non-transitory computer-readable media comprising computer-executable instructions that, when executed by one or more processors, cause a computer system to perform operations, comprising:

receiving, from a requesting system, a first query for information about a set of entities corresponding to a predefined endpoint format and comprising a search condition associated with the predefined endpoint format;

determining, based at least in part on the first query, a set of queries for the predefined endpoint format;

identifying, for each query in the set of queries, a corresponding set of user entity records in an entity data database that fulfills the search condition;

determining, for each query in the set of queries, a corresponding first numerical value corresponding to a number of user entity records of the corresponding set of user entity records;

identifying, for at least a subset of queries of the set of queries, a corresponding first predefined numerical value range of a plurality of predefined numerical value ranges that the corresponding first numerical value falls within;

identifying, for each query in the subset of queries, a corresponding second numerical value that falls within the corresponding first predefined numeral value range;

changing, for each query in the subset of queries, the corresponding first numerical value to the corresponding second numerical value;

generating, based at least in part on the corresponding second numerical value associated with each query in the subset of queries, a set of aggregated count values; and

transmitting the set of aggregated count values to the requesting system.

15 . The one or more non-transitory computer-readable media of claim 14 , wherein the predefined endpoint format defines a set of functions and a set of procedures for the requesting system to query a particular application programming interface (API) endpoint.

16 . The one or more non-transitory computer-readable media of claim 15 , wherein the particular API endpoint is one of a plurality of API endpoints accessible by the requesting system depending on the predefined endpoint format corresponding to the first query.

17 . A system comprising:

a memory configured to store computer-executable instructions; and

a processor configured to access the memory and execute the computer-executable instructions to at least:

receive, from a requesting system, a first query for information about a set of entities corresponding to a predefined endpoint format and comprising a search condition associated with the predefined endpoint format;

determine, based at least in part on the first query, a set of queries for the predefined endpoint format;

identify, for each query in the set of queries, a corresponding set of user entity records in an entity data database that fulfills the search condition;

determine, for each query in the set of queries, a corresponding first numerical value corresponding to a number of user entity records of the corresponding set of user entity records;

identify, for at least a subset of queries of the set of queries, a corresponding a first predefined numerical value range of a plurality of predefined numerical value ranges that the corresponding first numerical value falls within;

identify, for each query in the subset of queries, a corresponding second numerical value that falls within the corresponding first predefined numerical value range;

change, for each query in the subset of queries, the corresponding first numerical value to the corresponding second numerical value;

generate, based at least in part on the corresponding second numerical value associated with each query in the subset of queries, a set of aggregated count values; and

transmit the set of aggregated count values to the requesting system.

18 . The system of claim 17 , wherein:

each user entity record of the corresponding set of user entity records comprises a plurality of data attributes; and

the plurality of data attributes comprises one or more of a content item play data attribute, a location data attribute, a content item origination data attribute, a plurality of demographic data attributes, or a subscription data attribute.

19 . The system of claim 17 , wherein the search condition corresponds to an engagement approach in which entities first started engaging with a particular electronic content item during a first period, and the set of aggregated count values identify a number of the entities who are still engaging with the particular electronic content item using the engagement approach during a second time period.

20 . The system of claim 17 , wherein the search condition corresponds to entities who engaged with a particular electronic content item in a collection of electronic content items, and the corresponding second numerical value identifies a number of the entities who engaged with all electronic content items in the collection of electronic content items.