W3C home > Mailing lists > Public > www-rdf-comments@w3.org > April to June 2002

Re: typed containers in RDF Schema

From: Brian McBride <bwm@hplb.hpl.hp.com>
Date: Mon, 06 May 2002 00:27:07 +0100
Message-Id: <>
To: "Garret Wilson" <garret@globalmentor.com>, <www-rdf-comments@w3.org>
At 07:18 03/05/2002 -0700, Garret Wilson wrote:

>But writing the following schema, while technically correct, confuses the
>semantics of what is happening by making it appear that one can simply use
>an rdf:Seq or an rdf:Alt for "xpackage:procession". It also leaves out the
>semantics of the type of values that can be used with rdf:Alt.
><rdf:Property rdf:ID="procession">
>   <rdfs:range rdf:resource="&rdf:Seq"/>
>   <rdfs:range rdf:resource="&rdf:Alt"/>

I'm not with you here Garret.  What's the confusion exactly.  This says 
that the range of procession must be a resource which is both of type 
rdf:Seq and rdf:Alt.  That is not what you want.  This is just wrong.

What you might try is:

   <rdf:Property rdf:ID="procession">
       <rdfs:Class rdf:about="#ProcessionValue">

   <rdf:Description rdf:about="&rdf;Seq">
     <rdfs:subClassOf rdf:resource="#processionValue"/>

   <rdf:Description rdf:about="&rdf;Alt">
     <rdfs:subClassOf rdf:resource="#processionValue"/>

This says that the value of the procession property is a ProcessionValue 
and that rdf:Seq is a ProcessionValue and rdf:Alt is a 
ProcessionValue.  Thats what you want to say about the range.

RDF Schema provides no way to restrict the values of a container.

>In reality, we're simply trying to say that one can use a single rdf:Seq or
>a list of alternate rdf:Seqs.

What you can say is that you can use an rdf:Seq or an rdf:Alt.

>I'm not sure that an rdfs:collectionRange (which would apply to the members
>of a collection, as others have suggested) would be a good idea, because
>technically, it's not correct---a collection is a *class*, not a property,
>and therefore doesn't have a range. What we're trying to specify is an
>rdfs:collectionMemberRange, which is a *really* deep range specification, to
>say the least. It introduces all sorts special casing for collections that
>aren't valid for other classes.
> > You could also define your own subclass of bag, bagOfStrings
>...or in this example, our own subclass of an rdf:Alt, altOfSeqs (horrors
>:) ). But this would require special semantics of the processor to recognize
>that altOfSeqs is only restricted to rdf:li that have ranges of
>rdf:Seq---nothing would actually be constrained by the RDF Schema.
>Technically what is needed is a subclass of rdf:li (seqOnlyMember?) that has
>a range of rdf:Seq, and then somehow subclass rdf:Alt to say that it only
>has as properties seqOnlyMember, not normal rdf:li.m

The WG has considered this and decided against rdf schema doing this sort 
of thing.  Have you had a look at daml+oil?

> > or you could add a property to an ordinary bag to indicate the type of its
> > membership.
>...actually, we would have to indicate the range of each of its members

That is what I meant - sorry if it was not clear.

>don't want to change the fact that the rdf:Alt, in this example, holds
>rdf:li----we just want to say what their range is.
> > The WG will consider this.  I'd appreciate your comments on whether
> >
> >   a) you need a standardized solution to this problem
>Yes. Part of the buy-in we've been trying to get in the Open eBook Forum for
>RDF is that it brings about a standardized structure for talking about
>metadata---that it keeps us from writing our own framework to specify how
>resources relate. (There has been, and still is, a large group that would
>rather write a packing structure from scratch in XML rather than using RDF.)
> >   b) it needs to be in rdf schema rather than an ontology language built
>on top
>Others have stated that this sort of thing is out of scope because RDF
>Schema is meant to be simple---what I'm proposing is much too
>complicated---and I had started to agree. I believe, however, that its
>complications are overshadowed by two other important points: this use case
>is *very* common, and it's analogous to features already in RDF Schema.
>Let me state a subset of the use case this way: it is frequently desirable
>to specify that a property can have a single, particular class as its
>object, or that the property can have a single list of alternates of that
>same particular class as its object.
>Commonality: this pattern is seen over and over. Analogy: if an rdf:range
>can be specified by a schema, it seems analogous that the schema can specify
>that an alternate list of that same rdf:range can be specified.

That is a good point.  There is a strong feeling that RDF containers in 
general need reworking.  We have an issue on the issues list for this.  The 
WG has decided to postpone this to a future working group.  I think I'd 
like to link this thread in as input to that work.

Received on Monday, 6 May 2002 12:38:09 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 21:15:18 UTC