CostFed: Cost-Based Query Optimization for SPARQL Endpoint Federation
CostFed is an index-assisted federation engine for federated SPARQL query processing over multiple SPARQL endpoints. CostFed makes use of statistical information collected from endpoints to perform efficient source selection and cost-based query planning. In contrast to the state of the art, it relies on a non-linear model for the estimation of the selectivity of joins. Therewith, it is able to generate better plans than the state-of-the-art federation engines. In an experimental evaluation based on FedBench benchmark, we show that CostFed is 3 to 121 times faster than the state of the art SPARQL endpoint federation engines.
The CostFed live demo comprise the following two main applications:
- The endpoint manager is is available here. Using endpoint manager you can select the endpoints to be included in the federation. Also it allows to create/update CostFed's indexes.
- The query formulator/executer is availble here. This is the main interface which allows executing both federated and non-federated queries.
The start CostFed-web and create your own local demo, the Dockerfile can be downloaded from here
To help user, we provided some federated queries here from FedBench and LargeRDFBench which can be directly executed.
How to Run CostFed?
- Checkout: the source code and import as new maven project. it will create three sub-projects, i.e, costfed, fex, and semagrow-bench.
- Create Index: Since CostFed is an index-assisted appraoch, the first step is to generate an index for all the endpoints in hand. The index generation, updation is given costfed/src/main/java/org/aksw/simba/quetsal/util/TBSSSummariesGenerator.java. Note for FedBench, LargeRDFBench, the index is already given at costfed/summaries/sum-localhost.n3.
- Configuration File: Set properties in /costfed/costfed.props or run with default
- Query Execution: costfed/src/main/java/org/aksw/simba/start/QueryEvaluation.java. Here you need to specify the URLs of the SPARQL endpoints which you want the given query to be federated and provide the configuration file, i.e., costfed.props as argument.
All the datasets and corresponding virtuoso SPARQL endpoints can be downloaded from the links given below. You may start a SPARQL endpoint from bin/start.bat (for windows) and bin/start_virtuoso.sh (for linux).
Evaluation Results and Runtime Errors
- Muhammad Saleem (AKSW, University of Leipzig)
- Alexander Potocki (AKSW, University of Leipzig)
- Tommaso Soru (AKSW, University of Leipzig)
- Olaf Hartig (Linköping University, Sweden)
- Axel-Cyrille Ngonga Ngomo (AKSW, University of Leipzig)
We are especially thankful to Andreas Schwarte (fluid Operations, Germany), Olaf Görlitz (University Koblenz, Germany), and Angelos Charalambidis (Institute of Informatics and Telecommunication, Paraskevi, Greece) for all their email conversations, feedbacks, and explanations.