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

Re: typed containers in RDF Schema

From: Garret Wilson <garret@globalmentor.com>
Date: Fri, 3 May 2002 07:18:48 -0700
Message-ID: <009901c1f2ad$72015b00$7245a640@odysseus2001>
To: <www-rdf-comments@w3.org>, "Brian McBride" <bwm@hplb.hpl.hp.com>
Brian,

Based upon your earlier comments (and others'), I was about to think that
maybe this could just be ignored or worked around for a while. But it's
starting to raise its head again. See below.

----- Original Message -----
From: "Brian McBride" <bwm@hplb.hpl.hp.com>
To: "Garret Wilson" <garret@globalmentor.com>; <www-rdf-comments@w3.org>
Sent: Saturday, April 06, 2002 2:44 AM
Subject: Re: typed containers in RDF Schema


> Hi Garret,
>
> At 09:06 05/04/2002 -0600, Garret Wilson wrote:
> >Imagine you have an RDF editor based on RDF Schema---you tell it the
schemas
> >you want to use, and it presents the appropriate editors for each
property.
> >For a "title" property, the editor would be a simple text field, as the
> >schema would indicate xsd:string as the range.
> >
> >But what would we do for a "keywords" property? This should be an rdf:Bag
of
> >related keywords,
>
> Why does it need to be a bag?  Could you make it simply a bunch of
repeated
> properties?

Your response seemed appropriate for "keywords", which is why I thought that
the issue might be miniscule. As we more fully develop the XPackage model,
though, this issue is coming back full force.

In XPackage, we have the concept of a "procession" in which content is
presented to the user as if it were "stitched" together. (We used to call
this a "spine" in the Open eBook world.) In essence, it's an rdf:Seq, and
I'll use that in the RDF Schema below. (Although we may wind up subclassing
rdf:Seq in the future to be an xpackage:Manifest, the concept remains the
same.)

<rdf:Property rdf:ID="procession">
  <rdfs:range rdf:resource="&rdf:Seq"/>
</rdf:Property>

We want to say that an electronic publication (or some other application of
XPackage) may have either a single procession/spine, or it may have several
alternate processions/spines (i.e. a textbook might combine its chapters in
different ways for different purposes). This means that, technically, the
range of "xpackage:procession" is either an rdf:Seq (the procession itself)
or rdf:Alt (a list of alternate processions, with the first one being the
default).

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"/>
</rdf:Property>

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

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.

> 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---we
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.

Garret
Received on Friday, 3 May 2002 10:19:49 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Friday, 21 September 2012 14:16:30 GMT