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.
Saleem, M., Potocki, A., Soru, T., Hartig, O. and Ngomo, A.C.N., 2018. CostFed: Cost-based query optimization for SPARQL endpoint federation. Semantics 2018, Procedia Computer Science, 137, pp.163-174.
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.
- 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.
The queries used in the evaluation can be downloaded from FedBench and LargeRDFBech homepage.
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).
We have compared 5 - FedX, SPLENDID, ANAPSID, SemaGrow, HiBISUCuS - state-of-the-art SPARQL endpoint federation systems with CostFed. Our complete evaluation results can be downloaded from here.
Recent Virtuoso public SPARQL endpoints (version 7 and above ) do not support SPARQL ASK queries to be sent gia RDF4J api, if you encounter such error then please make the following changes in the code
package package com.fluidops.fedx.evaluation; We need to go to go public class SparqlTripleSource class and change the boolean to false private boolean useASKQueries = false;
- 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.