IP Library › Granted Patent US 12,591,572
Granted Patent B2
US 12,591,572 · App. 18/067,848 · Granted Mar 31, 2026

Optimizing SPARQL queries in a distributed graph database

Inventors: Frédéric Labbate (Vélizy-Villacoublay, FR); Jean-Philippe Sahut D'izarn (Vélizy-Villacoublay, FR); Alban Roullier (Vélizy-Villacoublay, FR); David Edward Tewksbary (Waltham, MA)
Assignee: DASSAULT SYSTEMES
G06F16/24537G06F16/24565G06F16/9024
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,591,572
App. No.
18/067,848
Granted
Mar 31, 2026
Kind
B2
Abstract

A computer-implemented method for generating by a query engine a graph of operators for a SPARQL query over an RDF graph. The method includes obtaining a graph of operators executable by the query engine, the graph comprising a plurality of basic operators, at least two of said operators being of a first type each configured to find RDF triples of the RDF graph that match a respective basic graph pattern. The method further comprises identifying a group of operators among the at least two basic operators of the graph which are of the first type. The respective basic graph patterns of the group of operators have same subject and/or predicate and/or object and the identified group of operators is replaced in the graph by an equivalent operator configured to find RDF triples of the RDF graph that match the respective basic graph patterns of the group of operators.

Claims (72)

1 . A computer-implemented method for reducing an overhead of calls sent by a query engine to a storage engine, the query engine generating at least one graph of operators corresponding to a query execution plan of a SPARQL (SPARQL Protocol and RDF Query Language) query over a Resource Description Framework (RDF) graph, the RDF graph being distributed over different physical locations and having a partitioning into two or more subgraphs, the partitioning being not available to the method, the query execution plan being a sequence of steps to access data in a SQL (Structured Query Language) relational database management system, the method comprising:

obtaining, by the query engine, a graph of operators executable by the query engine, each executable operator being in correspondence with at least one respective call for querying the storage engine, the obtained graph of operators including a plurality of basic operators, at least two of the basic operators of the obtained graph being of a first type each configured to find RDF triples of the RDF graph that match a respective basic graph pattern without knowing or imposing the partitioning of the RDF graph; and

reducing data transmitted between the query engine and the storage engine by:

identifying, by the query engine, a group of operators among the at least two basic operators of the obtained graph of operators which are of the first type such that respective basic graph patterns of the group of operators have same subject and/or predicate and/or object,

replacing the identified group of operators in the obtained graph of operators by an equivalent operator,

querying the storage engine with a single call corresponding to the equivalent operator,

finding, based on the querying of the storage engine, RDF triples of the RDF graph that match the respective basic graph patterns of the group of operators, and

accessing, using the RDF triples, data in the SQL relational database management system.

2 . The method of claim 1 , wherein the respective basic graph patterns of the group of operators have a constant predicate.

3 . The method of claim 2 , wherein the respective basic graph patterns of the group of operators have a constant object.

4 . The method of claim 2 , wherein the respective basic graph patterns of the group of operators have a same subject.

5 . The method of claim 2 , wherein the obtained graph of operators further includes at least one basic operator of a second type configured to accept one or more RDF triples and a Boolean expression and as input and output a subset of the one or more RDF triples, an application of the Boolean expression on a part of triples of each of RDF triples in the subset being true,

wherein the method further comprises:

moving, prior to the identifying a group of operators among the at least two basic operators of the first type of the obtained graph of operators, each of the at least one basic operator of the second type right after a respective basic operator of the first type, the respective basic operator of the first type being able to find RDF triples which the at least one basic operator of the second type is configured to accept, and

wherein the equivalent operator is further configured to accept as input constraints and the method further comprises, for each of the at least one basic operator of the second type:

splitting the basic operator of the second type into expressions at least partially able to be turned into a set of constraints; and

removing the basic operator of the second type from the graph of operators and inputting the set of constraints into a respective equivalent operator that replaces at least the respective basic operator of the first type right before the basic operator of the second type.

6 . The method of claim 1 , wherein the respective basic graph patterns of the group of operators have a constant object.

7 . The method of claim 6 , wherein the respective basic graph patterns of the group of operators have a same subject.

8 . The method of claim 6 , wherein the obtained graph of operators further includes at least one basic operator of a second type configured to accept one or more RDF triples and a Boolean expression and as input and output a subset of the one or more RDF triples, an application of the Boolean expression on a part of triples of each of RDF triples in the subset being true,

wherein the method further comprises:

moving, prior to the identifying a group of operators among the at least two basic operators of the first type of the obtained graph of operators, each of the at least one basic operator of the second type right after a respective basic operator of the first type, the respective basic operator of the first type being able to find RDF triples which the at least one basic operator of the second type is configured to accept, and

wherein the equivalent operator is further configured to accept as input constraints and the method further comprises, for each of the at least one basic operator of the second type:

splitting the basic operator of the second type into expressions at least partially able to be turned into a set of constraints; and

removing the basic operator of the second type from the graph of operators and inputting the set of constraints into a respective equivalent operator that replaces at least the respective basic operator of the first type right before the basic operator of the second type.

9 . The method of claim 1 , wherein the respective basic graph patterns of the group of operators have a same subject.

10 . The method of claim 9 , wherein the obtained graph of operators further includes at least one basic operator of a second type configured to accept one or more RDF triples and a Boolean expression and as input and output a subset of the one or more RDF triples, an application of the Boolean expression on a part of triples of each of RDF triples in the subset being true,

wherein the method further comprises:

moving, prior to the identifying a group of operators among the at least two basic operators of the first type of the obtained graph of operators, each of the at least one basic operator of the second type right after a respective basic operator of the first type, the respective basic operator of the first type being able to find RDF triples which the at least one basic operator of the second type is configured to accept, and

wherein the equivalent operator is further configured to accept as input constraints and the method further comprises, for each of the at least one basic operator of the second type:

splitting the basic operator of the second type into expressions at least partially able to be turned into a set of constraints; and

removing the basic operator of the second type from the graph of operators and inputting the set of constraints into a respective equivalent operator that replaces at least the respective basic operator of the first type right before the basic operator of the second type.

11 . The method of claim 1 , wherein the obtained graph of operators further includes at least one basic operator of a second type configured to accept one or more RDF triples and a Boolean expression and as input and output a subset of the one or more RDF triples, an application of the Boolean expression on a part of triples of each of RDF triples in the subset being true,

wherein the method further comprises:

moving, prior to the identifying, a group of operators among the at least two basic operators of the first type of the obtained graph of operators, each of the at least one basic operator of the second type right after a respective basic operator of the first type, the respective basic operator of the first type being able to find RDF triples which the at least one basic operator of the second type is configured to accept, and

wherein the equivalent operator is further configured to accept as input constraints and the method further comprises, for each of the at least one basic operator of the second type:

splitting the basic operator of the second type into expressions at least partially able to be turned into a set of constraints; and

removing the basic operator of the second type from the graph of operators and inputting the set of constraints into a respective equivalent operator that replaces at least the respective basic operator of the first type right before the basic operator of the second type.

12 . The method of claim 11 , wherein each of the constraints is verified by the storage engine and the set of constraints includes at least one or more of the following:

numeric constraints,

constraints on type of value or language, and

constraints for strings.

13 . The method of claim 11 , wherein the part of triples of each of RDF triples in the subset includes subject and/or object of respective RDF triples.

14 . The method of claim 11 , further comprising, after the moving each of the at least one basic operator of the second type and before the splitting of the basic operator, for each basic operator of the second type:

normalizing the basic operator of the second type into conjunctive form.

15 . The method of claim 1 , wherein the obtained graph further comprises at least one basic operator of a third type configured to:

accept as input one or more indices each corresponding to a value of an element of variable of an RDF triple in the RDF graph, and

output a respective value for the one or more indices; and

wherein the equivalent operator further accepts as input a first tag and the method further comprises, for each of the at least one basic operator of a third type:

identifying an equivalent operator in the graph of operators able to find corresponding RDF triples of the operator of the third type; and

setting a value of the first tag of the identified equivalent operator to a predefined value and removing the operator of the third type from the obtained graph.

16 . The method of claim 1 , wherein at least one of the operators of the group of operators has a second tag for a basic graph pattern, the equivalent operator further accepting as input the second tag, the equivalent operator finding at least any RDF triples of the RDF graph that match the respective basic graph patterns of at least one or two operators in the group of operators without having the second tag.

17 . The method of claim 1 , further comprising:

identifying at least two equivalent operators in the graph of operators having a same subject and/or a same object; and

replacing the two identified equivalent operators by an equivalent operator able to find RDF triples of the RDF graph that match the respective identified basic graph patterns of the two identified equivalent operators upon querying the storage engine.

18 . A non-transitory computer readable storage medium having recorded thereon a computer program that when executed by a computer causes the computer to implement a method for reducing an overhead of calls sent by a query engine to a storage engine, the query engine generating at least one graph of operators corresponding to a query execution plan of a SPARQL (SPARQL Protocol and RDF Query Language) query over a Resource Description Framework (RDF) graph, the RDF graph being distributed over different physical locations and having a partitioning into two or more subgraphs, the partitioning being not available to the method, the query execution plan being a sequence of steps to access data in a SQL (Structured Query Language) relational database management system, the method comprising:

obtaining, by the query engine, a graph of operators executable by the query engine, each executable operator being in correspondence with at least one respective call for querying the storage engine, the obtained graph of operators including a plurality of basic operators, at least two of the basic operators of the obtained graph being of a first type each configured to find RDF triples of the RDF graph that match a respective basic graph pattern without knowing or imposing the partitioning of the RDF graph; and

reducing data transmitted between the query engine and the storage engine by:

identifying, by the query engine, a group of operators among the at least two basic operators of the obtained graph of operators which are of the first type such that respective basic graph patterns of the group of operators have same subject and/or predicate and/or object,

replacing the identified group of operators in the obtained graph of operators by an equivalent operator,

querying the storage engine with a single call corresponding to the equivalent operator,

finding, based on the querying of the storage engine, RDF triples of the RDF graph that match the respective basic graph patterns of the group of operators, and

accessing, using the RDF triples, data in the SQL relational database management system.

19 . A system comprising:

a processor coupled to a memory, the memory having recorded thereon a computer program for reducing an overhead of calls sent by a query engine to a storage engine, the query engine generating at least one graph of operators corresponding to a query execution plan of a SPARQL (SPARQL Protocol and RDF Query Language) query over a Resource Description Framework (RDF) graph, the RDF graph being distributed over different physical locations and having a partitioning into two or more subgraphs, the partitioning being not available to the method, the query execution plan being a sequence of steps to access data in a SQL (Structured Query Language) relational database management system, that when executed by the processor causes the processor to be configured to:

obtain, by the query engine, a graph of operators executable by the query engine, each executable operator being in correspondence with at least one respective call for querying the storage engine, the obtained graph of operators including a plurality of basic operators, at least two of the basic operators of the obtained graph being of a first type each configured to find RDF triples of the RDF graph that match a respective basic graph pattern without knowing or imposing the partitioning of the RDF graph, and

reduce data transmitted between the query engine and the storage engine by the processor being configured to:

identify, by the query engine, a group of operators among the at least two basic operators of the obtained graph of operators which are of the first type such that respective basic graph patterns of the group of operators have same subject and/or predicate and/or object,

replace the identified group of operators in the obtained graph of operators by an equivalent operator,

query the storage engine with a single call corresponding to the equivalent operator,

find, based on the querying of the storage engine, RDF triples of the RDF graph that match the respective basic graph patterns of the group of operators, and

access, using the RDF triples, data in the SQL relational database management system.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 11, 2023
From: LABBATE, FRÉDÉRIC; SAHUT D'IZARN, JEAN-PHILIPPE; ROULLIER, ALBAN; TEWKSBARY, DAVID EDWARD
To: DASSAULT SYSTEMES
Reel/Frame 063292/0737 →
Priority Claims (1)
EP 21306834 · Dec 17, 2021 · regional
Continuity (1)
Related Publication 20230195725A1 · Jun 22, 2023
References Cited (25)
US 20090138498A1 · Krishnamoorthy · 2009 [cited by examiner]
US 20120066205A1 · Chappell · 2012 [cited by examiner]
US 20120136875A1 · Pan · 2012 [cited by examiner]
US 20130262443A1 · Leida · 2013 [cited by examiner]
US 20140067793A1 · Shironoshita · 2014 [cited by examiner]
US 20140304251A1 · Bornea · 2014 [cited by examiner]
US 20190310840A1 · Dufresne · 2019 [cited by examiner]
US 20210073226A1 · Chavan et al. · 2021 [cited by applicant]
CN 109710638A · 2019 [cited by applicant]
CN 110825738A · 2020 [cited by applicant]
EP 3267330A1 · 2018 [cited by applicant]
Shironoshita, E. Patrick, et al. “semQA: SPARQL with Idempotent Disjunction.” IEEE transactions on knowledge and data engineering 21.3 (2008): 401-414. (Year: 2008). [cited by examiner]
Loshin, Peter. “Definition: Resource Description Framework (RDF).” Published by TechTarget.com in Feb. 2022. Accessed Jul. 11, 2024 from https://www.techtarget.com/searchapparchitecture/definition/Resource-Description-F… [cited by examiner]
DuCharme, Bob. “What is RDF?” Published Jun. 27, 2021. Accessed Jul. 11, 2024 from https://www.bobdc.com/blog/whatisrdf/ (Year: 2021). [cited by examiner]
Peng, Peng, et al. “Processing SPARQL queries over distributed RDF graphs.” The VLDB Journal 25.2 (2016): 243-268. (Year: 2016). [cited by examiner]
Peng, Peng, Zou, Lei, Özsu, M. Tamer, et al. Processing SPARQL queries over distributed RDF graphs. The VLDB Journal, 2016, vol. 25, No. 2, p. 243-268. [cited by applicant]
Taft, Rebecca, Sharif, Irfan, Matei, Andrei, et al. Cockroachdb: The resilient geo-distributed SQL database. In: Proceedings of the 2020 ACM SIGMOD International Conference on Management of Data. 2020. p. 1493-1509. [cited by applicant]
Kersten, Timo, Leis, Viktor, Kemper, Alfons, et al. Everything you always wanted to know about compiled and vectorized queries but were afraid to ask. Proceedings of the VLDB Endowment, 2018, vol. 11, No. 13, p. 2209-22… [cited by applicant]
“RDF 1.1 Concepts and Abstract Syntax”, W3C Recommendation Feb. 25, 2014, online, https://www.w3.org/TR/rdf11-concepts/. [cited by applicant]
“SPARQL 1.1 Query Language”, W3C Recommendation Mar. 21, 2013, online, https://www.w3.org/TR/sparql11-query/, accessed May 12, 2021. [cited by applicant]
“The Open World Assumption or Sometimes its nice to know what we don't know”, Nick Drummond and Rob Shearer, The University of Manchester online course, http://www.cs.man.ac.uk/˜drummond/presentations/OWA.pdf. [cited by applicant]
Álvarez-García, Sandra, Brisaboa, Nieves, Fernández, Javier D., et al. Compressed vertical partitioning for efficient RDF management. Knowledge and Information Systems, 2015, vol. 44, No. 2, p. 439-474. [cited by applicant]
Amarnath Gupta et al: “On Querying OBO Ontologies Using a DAG Pattern Query Language”, Jan. 1, 2006 (Jan. 1, 2006), Data Integration in the Life Sciences Lecture Notes in Computer Science;Lecture Notes in Bioinformatics… [cited by applicant]
The extended European search report mailed Jun. 1, 2022 in corresponding European Patent Application No. 21306834.9 (14 pages). [cited by applicant]
Office Action dated Jul. 14, 2025, issued in counterpart EP Application No. 21306834.9, citing document No. 1. (12 pages). [cited by applicant]