d2rq/d2rq — Issue #105: Support multiple databases via SPARQL SERVICE keyword
Author: cygri
Created: 2012-02-29 03:23:28+00:00
State: open
Labels: expressivity, extensibility, integration

SPARQL's `SERVICE` keyword gives us opportunities towards making multiple DBs in a single D2R instance work.

Let's assume a service that contains multiple DBs.

The default dataset could make no-join queries by running the entire query against one DB after the other.

To make queries that involve joins across DBs, one would have to use `SERVICE` to address the individual DBs, using some identifier specified in the mapping file to address the specific DB, perhaps the d2rq:Database resource IRI.

The query engine would check any `OpService` nodes in the query plan for their service IRI, and if it's a known database, then anything inside will be interpreted as a query against that DB.

If `OpService` is used, then probably no BGPs should be allowed outside of the service, otherwise it gets complicated, we'd have to figure out what subtree exactly is translated into multiple `qIter` instances (one per DB).