IP Library › Granted Patent US 12,572,545
Granted Patent B2
US 12,572,545 · App. 18/807,823 · Granted Mar 10, 2026

Query execution planning for ontology-based databases

Inventors: James Baker (Maidenhead, GB); Xavier Falco (London, GB); Samuel Flavio Barroso Souza (London, GB); Amr Al Mallah (Tacoma, WA); Yixun Xu (Jersey City, NJ); Arseny Bogomolov (Arlington, VA); Sławomir Mucha (London, GB)
Assignee: Palantir Technologies Inc.
G06F16/24545G06F16/24544
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,572,545
App. No.
18/807,823
Granted
Mar 10, 2026
Kind
B2
Abstract

A system for query execution planning over ontology-based databases and related methods are disclosed. The system is programmed to receive an ontology query from a user account against an ontology having access controls, and transform the ontology query into a set of database queries, including a plurality of joins. The system is programmed to compute the amounts of data processing associated with executing the plurality of joins in different orders on a sample of the databases representing the ontology, considering how much data in the ontology can be accessed by the user account under the access controls, and determine an execution plan corresponding to a preferred amount of data processing. Furthermore, the system is programmed to execute the set of database queries on the databases according to the execution plan, and transmit a reply to the ontology query to the user device based on a result of the execution.

Claims (73)

1 . A computer-implemented method of query execution planning over ontology-based databases, comprising:

receiving an ontology query for querying an ontology from a user device,

the ontology including a definition for each ontology entity type of a plurality of ontology entity types and a plurality of ontology entities instantiated from the plurality of ontology entity types,

each ontology entity type of the plurality of ontology entity types having one or more properties;

identifying a set of permissions for accessing the ontology associated with a user account of the user device;

transforming the ontology query to a set of database queries, including a plurality of joins;

estimating an amount of data processing associated with executing the set of database queries on one or more object databases of a plurality of object databases representing the ontology, comprising executing the plurality of joins in a specific order on a sample of the one or more object databases based on the set of permissions;

determining an execution plan for the set of database queries based on a result of the estimating;

causing executing the set of database queries on the one or more object databases according to the execution plan;

transmitting a reply to the ontology query to the user device based on a result of the executing,

wherein the method is performed by one or more processors.

2 . The computer-implemented method of claim 1 , the set of permissions indicating whether the user account has a specific type of access to an ontology entity type, an ontology entity, or a property of an ontology entity.

3 . The computer-implemented method of claim 1 ,

a specific ontology entity type covered by the ontology query being represented in multiple forms in multiple object databases of the plurality of object databases,

the transforming comprising selecting the one or more object databases from the plurality of object databases for a set of ontology entity types covered by the ontology query.

4 . The computer-implemented method of claim 3 , further comprising:

designating a plurality of shards in a distributed environment for an object database of the one or more object databases;

distributing data to be stored in the object database to the plurality of shards based on a sharding architecture,

the sample including a single shard of the plurality of shards.

5 . The computer-implemented method of claim 3 , the transmitting comprising converting the result of the executing into one or more ontology entities based on one or more transformations between a set of definitions for the set of ontology entity types covered by the ontology query and one or more schemas for the one or more object databases.

6 . The computer-implemented method of claim 1 , executing the plurality of joins comprising:

executing a first join of the plurality of joins according to the specific order on the sample;

filtering data to be joined in a second join according to the specific order using a result of executing the first join;

executing the second join on the sample.

7 . The computer-implemented method of claim 1 , the estimating further comprising:

executing the plurality of joins in a second order on the sample based on the set of permissions;

comparing a first amount of data processing associated with executing the plurality of joins in the specific order on the sample and a second amount of data processing associated with executing the plurality of joins in the second order on the sample.

8 . The computer-implemented method of claim 7 , the determining comprising including, in the execution plan, the order in which to execute the plurality of joins associated with a larger of the first amount of data processing and the second amount of data processing.

9 . The computer-implemented method of claim 1 , the estimating further comprising executing a plurality of filters on a table in a particular order on the sample based on the set of permissions.

10 . The computer-implemented method of claim 1 , the estimating further comprising executing a grouping operation or an aggregation on the sample based on the set of permissions.

11 . The computer-implemented method of claim 1 , the estimating further comprising extrapolating an amount of data processing associated with executing the plurality of joins in the specific order on the sample based on the set of permissions.

12 . The computer-implemented method of claim 1 , the determining comprising:

detecting that the amount of data processing exceeds a threshold;

including, in the execution plan, an instruction to execute the set of database queries via a set of computing nodes having a high-performance, scalable architecture.

13 . A system for query execution planning over ontology-based databases, comprising:

a memory;

one or more processors coupled to the memory and configured to perform:

receiving an ontology query for querying an ontology from a user device,

the ontology including a definition for each ontology entity type of a plurality of ontology entity types and a plurality of ontology entities instantiated from the plurality of ontology entity types,

each ontology entity type of the plurality of ontology entity types having one or more properties;

identifying a set of permissions for accessing the ontology associated with a user account of the user device;

transforming the ontology query to a set of database queries, including a plurality of joins;

estimating an amount of data processing associated with executing the set of database queries on one or more object databases of a plurality of object databases representing the ontology, comprising executing the plurality of joins in a specific order on a sample of the one or more object databases based on the set of permissions;

determining an execution plan for the set of database queries based on a result of the estimating;

causing executing the set of database queries on the one or more object databases according to the execution plan;

transmitting a reply to the ontology query to the user device based on a result of the executing,

wherein the method is performed by one or more processors.

14 . The system of claim 13 ,

a specific ontology entity type covered by the ontology query being represented in multiple forms in multiple object databases of the plurality of object databases,

the transforming comprising selecting the one or more object databases from the plurality of object databases for a set of ontology entity types covered by the ontology query.

15 . The system of claim 14 , the one or more processors further configured to perform:

designating a plurality of shards in a distributed environment for an object database of the one or more object databases;

distributing data to be stored in the object database to the plurality of shards based on a sharding architecture,

the sample including a single shard of the plurality of shards.

16 . The system of claim 13 , executing the plurality of joins comprising:

executing a first join of the plurality of joins according to the specific order on the sample;

filtering data to be joined in a second join according to the specific order using a result of executing the first join;

executing the second join on the sample.

17 . The system of claim 13 , the estimating further comprising:

executing the plurality of joins in a second order on the sample based on the set of permissions;

comparing a first amount of data processing associated with executing the plurality of joins in the specific order on the sample and a second amount of data processing associated with executing the plurality of joins in the second order on the sample.

18 . The system of claim 17 , the determining comprising including, in the execution plan, the order in which to execute the plurality of joins associated with a larger of the first amount of data processing and the second amount of data processing.

19 . The system of claim 13 , the estimating further comprising executing a plurality of filters on a table in a particular order on the sample based on the set of permissions.

20 . A non-transitory, computer-readable storage medium storing one or more sequences of instructions which when executed cause one or more processors to perform:

receiving an ontology query for querying an ontology from a user device,

the ontology including a definition for each ontology entity type of a plurality of ontology entity types and a plurality of ontology entities instantiated from the plurality of ontology entity types,

each ontology entity type of the plurality of ontology entity types having one or more properties;

identifying a set of permissions for accessing the ontology associated with a user account of the user device;

transforming the ontology query to a set of database queries, including a plurality of joins;

estimating an amount of data processing associated with executing the set of database queries on one or more object databases of a plurality of object databases representing the ontology, comprising executing the plurality of joins in a specific order on a sample of the one or more object databases based on the set of permissions;

determining an execution plan for the set of database queries based on a result of the estimating;

causing executing the set of database queries on the one or more object databases according to the execution plan;

transmitting a reply to the ontology query to the user device based on a result of the executing.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 22, 2024
From: BAKER, JAMES; FALCO, XAVIER; SOUZA, SAMUEL FLAVIO BARROSO; MALLAH, AMR AL; XU, YIXUN; BOGOMOLOV, ARSENY; MUCHA, SLAWOMIR
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 068375/0252 →
Continuity (2)
Provisional Application 63660975 · Jun 17, 2024
Related Publication 20250384040A1 · Dec 18, 2025
References Cited (36)
US 8332389B2 · Bestgen et al. · 2012 [cited by applicant]
US 8650634B2 · Bajekal · 2014 [cited by examiner]
US 9690792B2 · Bartlett et al. · 2017 [cited by applicant]
US 10817613B2 · Akselrod et al. · 2020 [cited by applicant]
US 11080336B2 · Van Dusen · 2021 [cited by applicant]
US 11544264B2 · Mathew · 2023 [cited by examiner]
US 11971888B2 · Chen et al. · 2024 [cited by applicant]
US 12124472B2 · Kramer · 2024 [cited by examiner]
US 12174992B1 · Fakhraie et al. · 2024 [cited by applicant]
US 20040003132A1 · Stanley et al. · 2004 [cited by applicant]
US 20060165040A1 · Rathod et al. · 2006 [cited by applicant]
US 20110276396A1 · Rathod · 2011 [cited by applicant]
US 20140310302A1 · Wu · 2014 [cited by examiner]
US 20160117195A1 · Wang · 2016 [cited by applicant]
US 20180322168A1 · Levine et al. · 2018 [cited by applicant]
US 20190155804A1 · Miller · 2019 [cited by examiner]
US 20210294970A1 · Bender · 2021 [cited by examiner]
US 20220253474A1 · Acharya · 2022 [cited by examiner]
US 20230273947A1 · Weitzner et al. · 2023 [cited by applicant]
US 20230297550A1 · Kumar et al. · 2023 [cited by applicant]
US 20230315529A1 · Gristede et al. · 2023 [cited by applicant]
US 20230418793A1 · Urdiales et al. · 2023 [cited by applicant]
US 20240095680A1 · Lee et al. · 2024 [cited by applicant]
US 20240354326A1 · Baker et al. · 2024 [cited by applicant]
U.S. Appl. No. 18/768,985, filed Jul. 10, 2024. [cited by applicant]
U.S. Appl. No. 18/882,541, filed Sep. 11, 2024. [cited by applicant]
“Documentation: Spark > Core Concepts.” Palantir, Retrieved Apr. 30, 2024, www.palantir.com/docs/foundry/optimizing-pipelines/spark-concepts/, 6 pages. [cited by applicant]
“Documentation: Overview and Getting Started > Aggregation Considerations.” Palantir, Retrieved Apr. 29, 2024, www.palantir.com/docs/foundry/object-backend/aggregation-considerations/, 8 pages. [cited by applicant]
Minier, Thomas, et al., “SaGe: Preemptive Query Execution for High Data Availability on the Web,” Hal Open Science, Jun. 3, 2018, https://hal.science/hal-01806486, 17 pages. [cited by applicant]
“Fair Scheduler—Apache Hadoop,” The Apache Software Foundation, May 18, 2022, https://hadoop.apache.org/docs/r1.2. 1/fair_scheduler.html, 7 pages. [cited by applicant]
Extended European Search Report in EP Application No. 25176171.4, dated Oct. 10, 2025, 9 pages. [cited by applicant]
Extended European Search Report in EP Application No. 25179700.7, dated Oct. 31, 2025, 10 pages. [cited by applicant]
Endris, Kemele, et al. “Chapter 5 Federated Query Processing”, Jul. 16, 2020, Jul. 16, 2020, p. 73-86, XP047557047. [cited by applicant]
“Greenplum Database 3.2 Administrator Guide”, Internet Citation, Oct. 1, 2008 (Oct. 1, 2008), pp. 1-849, XP008149266, Retrieved from the Internet: URL: http://docs.huihoo.com/greenplum/GPDB-3.2-AdminGuide.pdf [retrieved… [cited by applicant]
Extended European Search Report in EP Application No. 25185344.6, dated Dec. 16, 2025, in 11 pages. [cited by applicant]
U.S. Appl. No. 18/882,541 Non-Final Office Action dated Jan. 15, 2026. [cited by applicant]