Re: SPARQL Endpoint support

On 7/3/2015 23:21, Peter F. Patel-Schneider wrote:
> On 07/02/2015 05:05 PM, Holger Knublauch wrote:
> [...]
>
>> Since every SPARQL endpoint can be turned into a
>> virtual graph with SPO queries,
> [...]
>
> How can this be done?  In particular, how are blank nodes handled?

Oh, in the recent call you said yourself that blank nodes are no problem 
at all with SPARQL endpoints...

No, in reality it is very difficult to work with blank nodes on 
endpoints. Although it's possible to run SPARQL queries that internally 
use bnodes, it is impossible to communicate about them. So for example 
if a bnode is the subject of a constraint violation, there is no way to 
follow up with more requests to check if the bnode has been fixed, to 
add triples about it or even to ask about triples involving that bnode. 
I think this is an unfortunate limitation of the result set 
serialization format that could easily be fixed by introducing bnode 
identifiers and _:ID syntax, but that's not what the standard currently 
says. All this is probably a left-over from the old days of RDF before a 
proper query language was created (SPARQL), where bnodes were treated as 
existential wildcards. Let's better not go there. None of these 
limitations exist when you are working with an API and datasets directly 
- there is no text serialization involved but they work on node objects 
directly.

A graph interface in general requires an implementation of a function 
such as find(s, p, o) : iterator of triples. As long as these don't 
involve bnodes, they can obviously turned into SELECT * WHERE { ?s ?p ?o 
} queries, substituting the variables with the constants from the find call.

Holger

Received on Sunday, 5 July 2015 00:24:08 UTC