There have been several request about DARQ during the past months, so I thought it’s time to post a short project status. DARQ (original website) is a query engine for federated SPARQL queries I worked on in the past. It provides transparent query access to multiple, distributed SPARQL endpoints as if querying a single RDF graph. In other words: It automatically splits an incoming query, sends sub-queries to the relevant endpoints and merges the results into one resultset. The available endpoints need to be registered in the system using Service Descriptions. This works quiet well if the vocabularies do not overlap very much, i.e. if two or services store the same properties for resources it can be very slow. However, if there is little overlap query answering can be done in a reasonable time. Some results of the work were published at ESWC 2008 (paper), the source code is available at sourceforce.
DARQ started as a proof of concept system at HP Labs in 2006, it is in very early stage and I would not recommend to use it in any production environment. I worked on DARQ until early 2008, after that DARQ was continued by a diploma student who added query caching and a basic query translation mechanism, that allows to specify mappings between vocabularies, i.e. “Authors are a subclass of Persons” or “price in EUR can be converted to USD using exchange rare X”. Mappings are defined using SWRL. However, schema mapping support is even more a prototype than DARQ is and has not been tested extensively. He finished his work in Sept. 08, his changes can be found in the svn trunk. The version used for the benchmarks shown in the ESWC 2008 paper is tagged with ‘benchmarks2′ – all documentation writtten by me is for that version. It will likely not work with any of the recent Jena/ARQ releases, though i never tested it. There are currently no plans to continue the development.
If you have any questions related to DARQ feel free to post a comment or email me.
Update: The version in the svn trunk requires a mapping file. This file contains the mapping rules used for query translation. It must use SWRLs Concrete Syntax representation.