Re: Well Behaved RDF - Taming Blank Nodes, etc.

On 12/13/2012 2:00 AM, Pat Hayes wrote:
> On Dec 12, 2012, at 10:23 AM, Hugh Glaser wrote:
>
>> OK, blank nodes :-)
>> Hi Pat,
>> On 12 Dec 2012, at 17:43, Pat Hayes <phayes@ihmc.us>
>> wrote:
>>
>>> On Dec 12, 2012, at 9:01 AM, David Booth wrote:
>>>
>> <snip>
>>>> A Well-Behaved RDF graph is an RDF graph that can be serialized
>>>> as Turtle without the use of explicit blank node identifiers.
>>>> I.e., only blank nodes that are implicitly created by the
>>>> bracket "[ ... ]" or list "( ... )" notations are permitted.
>>> That is too restrictive. There is a real need to be able to describe things such as "Joe's father" or "a woman in a red dress" which are naturally phrased as bnodes with identifying descriptors attached to them.
>>>
>> I don't think I understand, or I may disagree :-)
>> Why is the node for "Joe's father" any different in character from the node for "Joe"?
>> (Assuming this is my data I'm publishing, and I'm not reusing external URIs.)
> Ah, but I *am* re-using external URIs. Isn't that one of the points of linked data, to re-use pre-existing URIs where possible? Take a real example which came up in our work. I have a photograph of a statue taken inside Manchester Town Hall, and I want to say this. There is a URI in DBpedia for Manchester Town Hall, and I plan to use it. But I don't want to say that my picture is of MTH, becuase its actually of a room inside MTH. I don't have a URI for this room and I don't want to coin one, because that URI would never get re-used by anyone and won't serve any useful purpose, and in order to make it useful I would have to invent some kind of global naming discipline for URIs denoting rooms, and I don't know how to do that sensibly. I just want to say the RDF equivalent of "**a** room in Manchester Town Hall". And that is exactly what blank nodes are for, so I would like to use them to do that.

What is the value of using a blank node here rather than minting an 
arbitrary URI? Is there inherent value in using something because that's 
what it was designed for? Is there a property of blank nodes that you 
need that URIs don't have here? Is it the cost of minting an arbitrary 
URI? Is it the potential cost of having two URIs for the thing sometime 
down the road? Something else?

>
> Another example: a picture of some celebrity standing next to a horse. I have a URI for the celebrity, but I don't have and don't need one for the horse: and if I were to invent one for each horse, then I could no longer query for retrieval of a picture of that person with "a horse", but would have to remember the URi for each of the bloody horses. But nobody gives a damn about the particular horse.

Could you explain this more? Because I'm picturing just doing:

SELECT ?photo {
    ?photo a :Photograph ;
         :depicts :ThePerson ;
         :depicts [ a :Horse ] ;
    .
}

...which works fine whether the horse is represented with a blank node 
or a URI.

Lee

Received on Thursday, 13 December 2012 14:41:40 UTC