Hi Lorenz,
Right now SERVICE is evaluated according to the standard bottom-up semantics of SPARQL: SERVICE returns some solutions (with bindings for ?s
), VALUES
returns a single solution (with ?s
bound to dbr:Leipzig
), and then the results are joined.
What you describe would a semantically equivalent and an optimized way of doing it (this is what, roughly, we do for other similar cases, e.g. virtual graphs, but not yet for SERVICE, for which we have an open ticket).
It’s hard to say why the results aren’t the same. My guess would be that the DBPedia endpoint returns some truncated results for ?s rdf:type ?type
since the full set of solutions would be too large. If that’s true, then solutions with ?s
bound to dbr:Leipzig
may not be returned and the join fails. You can probably test that theory.
We’re working on improving our federation support.
Cheers,
Pavel