Re: rdf:value and RDF Schema (was: typed containers in RDF Schema)

Brian,

----- Original Message -----
From: "Brian McBride" <bwm@hplb.hpl.hp.com>
To: "Garret Wilson" <garret@globalmentor.com>; <www-rdf-comments@w3.org>
Sent: Sunday, June 09, 2002 3:17 AM
Subject: Re: rdf:value and RDF Schema (was: typed containers in RDF Schema)


> At 09:38 07/06/2002 -0700, Garret Wilson wrote:
>
> [...]
>
>
> ><rdf:Description>
> >   <dc:creator>
> >     <rdf:Description>
> >       <rdf:value rdf:resource="urn:x-people:jane-doe"/>
> >       <oebps:role>annotator</oebps:role>
> >     </rdf:Description>
> >   </dc:creator>
> ></rdf:Description>
> >
> [...]
> However, I don't feel comfortable with the way this is modeled, though I'm
> finding it hard to say why.
>
> The question I am having trouble answering is what is the difference
> between the resource denoted by the b-node that is the value of the
> dc:creator property, and the resource identified by
> urn:x-people:jane-doe.

Well, let's say I have another work (urn:x-books:book2) that has the same
dc:creator of urn:x-people:jane-doe---but in this case, Jane is the author,
not the annotator. If the b-node above is the same as urn:x-people:jane-doe,
then there's a big problem: Jane Doe would be listed as the annotator of
urn:x-books:book2, even though she's the *author* of that work. That is,
once a non-b-node Jane Doe gets an oebps:role, she *always* has that role.

The construct above would, I believe, allow a situational role to be
defined: Jane Doe has this role only in the context of this relationship.

> Have you considered and rejected defining a subproperty of dc:creator e.g.
> eobps:annotator?

There are a few problems with this, not least of when entails management of
a controlled vocabulary. Subproperties hide the fact (without having the
schema present) that the relationship is dc:creator. It also makes the
ontology designer lose control of the range of values that can be used.

I've talked about these sort of problems offline with Patrick Stickler, and
there doesn't seem to be an easy fix without using blank nodes as I have
done above.

Let's talk about another common example: linking stylesheets. I'd like to
say that urn:x-xmldocs:doc1 has a stylesheet of urn:x-css:stylesheet1. I'd
also like to say that the stylesheet has a certain title as used in this
context. (In other words, I'm duplicating the well-established semantics of
<xhtml:link> and <?xml-stylesheet>.) If I were not to use blank nodes, I
would have a title defined for the stylesheet in *every* instance. Using
blank nodes, however, I can do the following:

<rdf:Description rdf:about="urn:xmldocs:doc1">
   <xmlprop:style>
     <rdf:Description>
       <rdf:value rdf:resource="urn:x-css:stylesheet1"/>
       <dc:title>_Alice in Wonderland_ on a Small Device</dc:title>
     </rdf:Description>
   </dc:creator>
</rdf:Description>

This allows the stylesheet to have the title *only* in this context.

This sort of construct  is needed all the time for qualified Dublin Core
(see http://www.dublincore.org/documents/dcq-rdf-xml/ ). It's a hideous
syntax, but it appears to be the only way to express contextual properties.
(If there's a better way, please *please* let me know.)

From your previous message, though, my biggest question has been answered:
to an RDF Schema processor, an rdf:value of a b-node will be considered
equivalent to a non-b-node object.

Garret

Received on Sunday, 9 June 2002 23:20:46 UTC