W3C home > Mailing lists > Public > www-rdf-interest@w3.org > May 2002

Re: Container semantics (was Re: bNodes wanted)

From: Peter F. Patel-Schneider <pfps@research.bell-labs.com>
Date: Mon, 27 May 2002 18:03:55 -0400
To: sandro@w3.org
Cc: danbri@w3.org, www-rdf-interest@w3.org
Message-Id: <20020527180355K.pfps@research.bell-labs.com>
From: Sandro Hawke <sandro@w3.org>
Subject: Re: Container semantics (was Re: bNodes wanted) 
Date: Mon, 27 May 2002 09:24:20 -0400

> > From: Sandro Hawke <sandro@w3.org>
> > > > Well, RDF has no mechanisms for creating statements in one RDF graph use 
> > a bnode
> > > > from another RDF, so even being able to talk about the container, does no
> > t
> > > > allow one to, for example, add new elements to it.
> > > 
> > > What's the difference between talking about a container (and saying
> > > "by the way, container C happens to contain X") and adding a new
> > > element to it (which in RDF looks something like "container C contains
> > > X (along with possibly other things)")?  Of course there are at least
> > > three different syntactic ways of doing RDF containers (rdf:_1,
> > > rdf:li, daml:first/rest) and the semantics of each seem rather poorly
> > > defined, so it's hard to argue about. 
> > > 
> > >      -- sandro
> > 
> > Well, if a container is a bnode, then you can't do either in RDF, which is
> > the point.
> 
> You mean if the container is identified by a bNodes, I assume.
> Containers are in the domain of discourse; bNodes are not (in the RDF
> Core vocabulary).

Correct.  

> But a container that is identified by a bNode may well be identified
> by other means as well.  It almost certainly is, in any practical
> example.  Why would you be stating members in a container, unless the
> containers had some connection to things with a known identity?

Sure.

> One might say "William has a set of authored plays, which
> contains one titled 'Hamlet'":
>     people:william author:plays _:x.
>     _:x collections:member _:y.
>     _:y dc:title "Hamlet".
> and the collection (_:x) is identified with a bNode, but that doesn't
> stop someone else from coming along and saying
>     people:william author:plays _:xx.
>     _:xx collections:member _:yy.
>     _:yy dc:title "Romeo & Juliet".

Agreed.

> Now the two collections (the first persons _:x and the second person's
> _:xx) may or may not be the same thing, but I can't imagine why one
> would use this kind of structuring unless author:plays were a unique
> property.  If it is (and the appropriate declarations have been made,
> and the namespaces used above are the same),  then one can infer that
> _:x and _:xx identify the same object, ....  and the first author's
> use of a bNode to identify a collection failed to prevent a second
> author from asserting membership information about the collection.

Well, you can't do this in RDF, which is the point.

Suppose I wanted to create the collection of plays that Shakespeare wrote.
I might proceed as follows:

  <people:Person rdf:ID="Shakespeare">
   <authorCollection>
    <rdf:Bag>
     <rdf:li rdf:resource="plays:Hamlet" />
     <rdf:li rdf:resource="plays:Macbeth" />
     ...
    </rdf:Bag>
   </authorCollection>
  </people:Person>

> Which brings us back to my ealier point: I don't think bNodes are very
> useful for keeping other people from linking to your information (that
> is, from saying things about the same things your saying things
> about).  And that seemed to be your use case against Skolemization.

How can someone add any elements to the above Bag from outside the
document, even the using more-powerful n-triples notation?  I don't see a
way.  The situation would be entirely different if the Bag had an ID,
however.

>      -- sandro

peter
Received on Monday, 27 May 2002 18:04:08 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:51:54 GMT