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

On 12/18/2012 11:45 AM, Enrique Pérez Arnaud wrote:
>
>
> 2012/12/18 Lee Feigenbaum <lee@thefigtrees.net 
> <mailto:lee@thefigtrees.net>>
>
>
>     What can I do in the blank node case that I can't in the URI case?
>
>
> I mostly agree with what you say, but I see cases where a URI might 
> not be appropriate (or I am misunderstanding the scope of the 
> discussion). How might you express something like "jane wants an 
> apple"? Would you mint a new URI for something that is not and may 
> never get concrete? How can you avoid using [a :apple] there?

I'm not sure, but I'm not sure that using the blank node there helps 
you. Doesn't [a :apple] point to an actual apple (we just don't know 
which one). That is, I always thought that blank nodes were existential 
("there is some apple that Jane wants", not notional "Janes would like 
to have an apple". For the latter, I'd probably just model it as :Jane 
:wants :Apple or something like that.

Disclaimer: I'm not particularly confident in anything I wrote in the 
above paragraph, so I'm happy to be told/taught otherwise.

Lee


>
>     You say that the second case (with no blank nodes) "eliminate[s]
>     one of the two basic ways of describing something". How is that
>     the case?
>
>     If a second person comes along and makes another observation
>     described by properties, we could get either:
>
>     # note that [] is going to mint a new blank node here
>
>     [] a ex:Person ; :zipCode "02111" ; :gender "male" ; :dob
>     "1978-12-13" .
>
>     # note a new arbitrary URI has been minted for the second observation
>
>     <urn:uuid:fghi> a ex:Person ; :zipCode "02111" ; :gender "male" ;
>     :dob "1978-12-13" .
>
>
>     So... what's the difference? In either case, I can use SPARQL
>     queries to say that these resources might be the same thing. In
>     either case, I could use owl:hasKey, owl:sameAs, and friends to
>     establish an equivalent identity (if appropriate for my
>     application). I feel like I must be missing something here?
>
>     Of course, if these triples were the objects of some other data,
>     then the blank nodes have all of the usage challenges that people
>     are familiar with:
>
>     :Lee :satNextTo [ a ex:Person ; :zipCode "02111" ; :gender "male"
>     ; :dob "1978-12-13" ] .
>
>
>     vs.
>
>     :Lee :satNextTo <urn:uuid:abcde> .
>
>     <urn:uuid:abcde> a ex:Person ; :zipCode "02111" ; :gender "male" ;
>     :dob "1978-12-13" .
>
>
>     So now I come along and ask who sat next to me:
>
>     SELECT ?person { :Lee :satNextTo ?person }
>
>
>     In the URI case, I get a value that I can then directly
>     interrogate further:
>
>     SELECT ?p ?o { <urn:uuid:abcde> ?p ?o }
>
>
>     In the blank node case... no such luck. I can't feed the blank
>     node I get a result into a subsequent query (because blank node
>     identifiers are not stable, of course). So... I'm stuck having to
>     do follow-on queries like:
>
>     SELECT ?p ?o { :Lee :satNextTo [ ?p ?o ] }
>
>
>     which are more complicated to author, potentially more complicated
>     to execute, and not nearly as precise in the face of multiple
>     people sitting next to Lee.
>
>     So, can you help me understand what I'm missing, please?
>
>     Lee
>
>
>
>
>
>
>
> -- 
> Enrique Pérez Arnaud
> enriquepablo@gmail.com <mailto:enriquepablo@gmail.com>

Received on Tuesday, 18 December 2012 17:11:50 UTC