- From: Steve Harris <steve.harris@garlik.com>
- Date: Sun, 18 Oct 2009 16:00:07 +0100
- To: "Seaborne, Andy" <andy.seaborne@hp.com>
- Cc: Paul Gearon <gearon@ieee.org>, Gregory Williams <greg@evilfunhouse.com>, "public-rdf-dawg@w3.org Group" <public-rdf-dawg@w3.org>
On 18 Oct 2009, at 15:05, Seaborne, Andy wrote:
[snip]
> I agree that the use of <_:..> is making an assumption that need not
> be true everywhere.
>
> For SPARQL-1/Query, the WG decided not to mention it. But with an
> update language I think we need to face this again - at the very
> least, decide explicitly not to cover it although personally I think
> it does need something.
>
> We need <_:InternalId> but also a way to get internal names. BNode
> labels in result sets can be interpreted as scoped to the result set
> only - i.e. like Turtle syntax _:a.
>
> If we had function BNODE_REF(?x) then a query could get it and it
> would allow a system to know a reference had been handed out,
> allowing a separation between the internal ID and the reference let
> out. A processor can track the references and know what's been
> revealed and what hasn't. The released ref and the internal id may
> be different or they may be the same - different system may choose
> to do things either way.
>
> BNODE_REF returns either a string or a dubious URI of the form _:.....
>
> BNODE_REF or sparql:bNodeRef. Need not be a keyword. If give names
> to all the operators anyway (e.g.. sameTerm), we are going to create
> a namespace.
Another option would be something like
SKOLEMIZE(?x)
where the return value will be some URI that has some persistence, or
a type error. The function could have a more friendly name, obviously.
The gets round the problem where you have things like
SELECT ?knows WHERE { <uri> foaf:knows ?knows }
and you don't know head of time whether ?knows will be a URI or bNode.
It would turn a bNode into a persistent identifier, and leave URIs as-
is.
- Steve
Received on Sunday, 18 October 2009 15:00:39 UTC