- From: Richard Cyganiak <richard@cyganiak.de>
- Date: Thu, 7 Jul 2011 19:34:39 +0100
- To: David McNeil <dmcneil@revelytix.com>
- Cc: W3C RDB2RDF <public-rdb2rdf-wg@w3.org>, Souripriya Das <souripriya.das@oracle.com>, Ivan Mikhailov <imikhailov@openlinksw.com>
On 7 Jul 2011, at 16:01, David McNeil wrote: > On Wed, Jul 6, 2011 at 3:45 AM, Richard Cyganiak <richard@cyganiak.de> wrote: >> ISSUE: rr:subject and rr:object (in constant-valued term maps) should not be allowed to be blank nodes; just IRIs/literals; we say that blank nodes cannot be shared between graphs, so specifying a blank node in the mapping and expecting the *same* blank node to occur in the output data is a bit strange. >> > > Richard - I am not sure I understand exactly what you are suggesting. Are you talking about a construct like this: > > rr:subjectMap [ rr:subject _:1] > > This gives the ability to define two TriplesMaps that refer to the same constant blank node. Offhand I don't see why this would be prohibited. (I already changed this in the spec, before seeing your mail. I'll reverse the change if that turns out to be the consensus.) I didn't think of the usage you mention, where you'd want to have _:1 in two different triples maps. I was worried about something else. Allowing constant blank nodes might raise expectations that the following two would generate the same blank node: [ rr:subject _:1 ] [ rr:template "1"; rr:termType "BlankNode"; ] I think those shouldn't match. Blank node labels are not meaningful beyond allowing to connect nodes within a single graph. Because of that, RDF tools often rename the blank node labels, and instead of _:1 you would actually see some random UUID in your API; and there's no guarantee that you wouldn't get _:1 if you actually said _:triplesmap1. Depending on your RDF toolkit, it might be impossible to correctly implement it. This would be an annoying source of potential bugs, which is why I'd like to forbid blank nodes for rr:subject and rr:object. Looking at it from another angle: The less we do with blank nodes, the better it probably is. And since allowing them as rr:subject and rr:object doesn't increase expressivity (you can achieve the same thing already using the rr:template expression above), I'd still prefer to have the change I originally proposed. > The fact that blank nodes are not shared between graphs seems orthogonal to this question. You're right. Best, Richard
Received on Thursday, 7 July 2011 18:35:09 UTC