Passage's Homepage

Engine: SPARQL query execution with continuations.

First and foremost, Passage is a regular SPARQL query engine. It takes SPARQL queries as input, and returns result mappings as output.

plus a SPARQL continuation query as output metadata, to resume the query execution if it has been stopped.

However, contrarily to other SPARQL engines, Passage does not simply abort its query execution when it reaches its timeout threshold: It returns the partial results of the executed query, along with a continuation query that allows for retrieving the missing results if any [1].

Enabling pausing at any time requires the use of specific physical operators. Physical operators that do not require a large state to restart from where it paused. For instance, if we oversimplify the execution of a triple pattern, it returns the elements of a list; resuming its execution only consists in jumping to the offset where it paused.

Core SPARQL

For the first release, we focused on a subset of SPARQL operators called core SPARQL [2], comprising triple/quad patterns, basic graph patterns, joins, unions, filters, and optionals.

Operator Support Comment
tp/qp 0.0.1  
Join 0.0.1 Nested loop join and mapping at a time.
BGP 0.0.1 BGPs are transformed in a series of joined tp/qp.
Union 0.0.1  
Values 0.0.1  
Filter 0.0.1  

Contributing

But the principle of continuation queries goes beyond these operators. For instance, we already know that a subset of aggregation queries allow continuation…

TODO example of a continuation query using aggregates.

TODO How to create an engine

TODO Where to add an operator

TODO Where the tests are

References

1.
2.
Pérez J, Arenas M, Gutiérrez C (2009) Semantics and complexity of SPARQL. In: ACM trans. database syst. pp 16:1–16:45

Ⓒ 2017–2025 GDD Team, LS2N, University of Nantes