W3C home > Mailing lists > Public > w3c-rdfcore-wg@w3.org > October 2002

RDF list semantics

From: Graham Klyne <GK@ninebynine.org>
Date: Mon, 07 Oct 2002 09:05:08 +0100
Message-Id: <>
To: RDF core WG <w3c-rdfcore-wg@w3.org>

Reading the message (below) that DanBri forwarded to rdf-comments brought 
to mind two questions:

1. Is there some background/conceptual discussion of RDF lists that would 
be usefully addressed in the Concepts document?

2. In discussing the semantics of lists, I understand Pat's proposed 
semantics to assume the existence of *all* possible lists.  Which leads me 
to suspect undesired entailments; e.g.

    my:List my:threeFavouriteThings _:x .
    _:x rdf:first "mostFavourite" .
    _:x rdf:rest  _:x2 .
    _:x2 rdf:first "nextFavourite" .
    _:x2 rdf:rest  _:x3 .
    _:x3 rdf:first "thirdFavourite" .
    _:x3 rdf:rest  rdf:nil .


    my:List my:threeFavouriteThings _:y .
    _:y rdf:first "mostFavourite" .
    _:y rdf:rest  _:y2 .
    _:y2 rdf:first "thirdFavourite" .
    _:y2 rdf:rest  _:y3 .
    _:y3 rdf:first "nextFavourite" .
    _:y3 rdf:rest  rdf:nil .

Or, using Notation3:

    my:List my:threeFavouriteThings
      ( "mostFavourite", "nextFavourite", "thirdFavourite" ) .


    my:List my:threeFavouriteThings
      ( "mostFavourite", "thirdFavourite", "nextFavourite" ) .


>forwarded to www-rdf-comments for tracking...
>---------- Forwarded message ----------
>Date: Sat, 05 Oct 2002 06:22:39 -0700
>From: David Martin <martin@ai.sri.com>
>To: Dave Beckett <dave.beckett@bristol.ac.uk>
>Cc: www-rdf-logic@w3.org
>Subject: Re: parseType=collection causing confusion
>Resent-Date: Sat, 5 Oct 2002 09:21:51 -0400 (EDT)
>Resent-From: www-rdf-logic@w3.org
>Folks who are working on RDF, DAML+OIL, and OWL -- *please take note* -- 
>this is a
>significant issue.
>As best I can tell, RDF and DAML+OIL do not provide any convenient 
>notation for (ordered)
>lists.  (I don't know about OWL, and haven't yet taken the time to check 
>the draft spec
>for it.)  And, judging from Dave Beckett's very helpful response (copied 
>below), there
>are no plans to provide such a notation.
> >From the language user's perspective, this situation is precisely 
> analogous to the
>situation that would hold if all lists in Lisp programs had to be written 
>in the
>canonical "consed-pair construction"; that is, if the familiar (a b c) 
>notation were not
>In the DAML-S coalition, we wanted to use parseType=collection to 
>represent ordered
>lists.  That is, we wanted to define a property with range = daml:List, 
>and express
>instances of that property that are *ordered* lists.  (Nothing mysterious or
>We've been forced to the conclusion that we can't, in good conscience, use
>parseType=collection in that way.
>We've been forced to that conclusion primarily because of this language, 
>in the DAML+OIL
>reference description:
>"Note that structures of parseType daml:collection are intended to 
>represent unordered
>collections, even though the RDF datastructure imposes a specific order on
>the elements."
>If we are going to represent lists in DAML-S documents, we feel there must 
>be a guarantee
>that order will be maintained -- and parseType daml:collection clearly 
>does not provide
>that guarantee.  Now, the reference description *does* state that a use of 
>daml:collection expands to a list construct.  Also, if I understand Dave 
>Beckett's points
>copied below, the upcoming RDF spec will guarantee that such uses expand 
>to triples,
>which faithfully represent that list construct. But we feel that, 
>especially in light of
>the above language, this just isn't good enough!
>What we feel a need for is a guarantee that order will be maintained, by 
>parsers and
>processing tools of all kinds.  For example, one can readily imagine 
>parsers and tools
>that go beyond the mandated triples representation.  One can imagine tools 
>that read in a
>parseType = daml:collection construct, and then place the elements into a 
>*set* data
>structure, in which order is no longer maintained.  Such a move would be quite
>legitimate, given the current language in the DAML+OIL spec, the proposed 
>language for
>the RDF spec, and Dave's explanations.  In short, we think there's a need 
>for a construct
>that is clearly intended to represent *ordered* lists, and documented in a 
>way that will
>unambiguously be understood by all parser and tool builders.
>  In deciding this issue, we asked the question:
>"Can I feel confident that a DAML+OIL-compliant parser or tool
>will maintain the order of elements given inside a parseType=collection
>construct, when it's used in specifying an instance of a user-defined
>And ultimately we felt that the answer had to be "no", giving the existing 
>of parseType=collection.
>Therefore, I strongly recommend that something other than 
>parseType=collection be
>provided, for the purpose of conveniently representing ordered lists.
>Finally, I want to express my appreciation to Dave Beckett, whose response 
>(copied below)
>to my questions about parseType=collection has been extremely helpful.
>David Martin
>Dave Beckett wrote:
> > >>>David Martin said:
> > >
> > > DAML+OIL folk -
> >
> > Well, I'm answering with respect to the RDF(/XML) since I edit
> > the RDF/XML document for the RDF Core working group.
> >
> > > In the section on reference section on parseType=collection:
> > >
> > > http://www.daml.org/2001/03/reference#collection
> > >
> > > it states that a use of parseType=collection, such as:
> > >
> > > <oneOf rdf:parseType="daml:collection">
> > >   <Thing rdf:resource="#red"/>
> > >   <Thing rdf:resource="#white"/>
> > >   <Thing rdf:resource="#blue"/>
> > > </oneOf>
> > >
> > > is equivalent to an RDF List construct (not reproduced here), which
> > > "imposes a specific order on the elements".  But then it also says
> > > (rather schizophrenically) that "structures of parseType daml:collection
> > > are intended to represent *unordered* collections".
> >
> > The Web Ontology Working Group) asked RDF Core to add this construct
> > to the RDF/XML syntax, and I have started to add the appropriate
> > grammar changes to the editors draft of the RDF/XML syntax document
> > I edit.
> >
> > The syntax grammar changes:
> > 
> http://ilrt.org/discovery/2001/07/rdf-syntax-grammar/#parseTypeContainerPropertyElt
> >
> > but this does not tell you what the resulting triples *mean*.
> >
> > (There will be an explanation of this construct and example of its
> > use in due course)
> >
> > It is intended that this structure is an easy way to create this
> > lisp-like structure of triples at the end of a property (daml:oneOf
> > in your example).  RDF will not define any further meaning for them;
> > in particular nothing is being said about ordering.  The rdf:first
> > and rdf:rest properties will allow applications to walk the structure
> > and apply an ordering at that level.  In particular, it is expected
> > that WebOnt will do that so that their use of rdf:parseType="Collection"
> > will define ordered lists.
> >
> > > Well, I'd like to use it to represent an *ordered* collection.  Since
> > > it's clearly defined as an RDF List construct that maintains order, it
> > > seems to me I should be able to use it that way with confidence.
> >
> > I see it as perfectly ok to use the form above for any kind of
> > application-specific list, ordered, with duplicates or any other
> > structure that may not even be a collection.  That is, the resulting
> > triple structure can have your own interpretation.
> >
> > > In other words, I would like to be able to define my own property,
> > > which, like oneOf, has daml:List as its range, and I'd like to be able
> > > to use parseType=collection in specifying instances of this property.
> > > AND, I'd like to have some confidence that any DAML+OIL-compliant parser
> > > or tool will maintain the order that's given inside the parseType=
> > > collection construct.  But the wording of the reference document leaves
> > > me in doubt.
> > >
> > > QUESTION: Can I feel confident that a DAML+OIL-compliant parser or tool
> > > will maintain the order of elements given inside a parseType=collection
> > > construct, when it's used in specifying an instance of a user-defined
> > > property?
> >
> > I'll leave that to DAML+OIL or OWL/WebONT experts.
> >
> > >
> > > RECOMMENDATION: In descendant languages of DAML+OIL, such as OWL, if
> > > "parseType" is still used, let there be *both* of the following:
> > >
> > >   parseType=collection, where it's explicitly documented that a parser
> > > *isn't* required to maintain the given order,
> > >
> > > AND
> > >
> > >   parseType=list, where it's explicitly documented that a parser *is*
> > > required to maintain the given order
> >
> > The parser requires the same structure of triples to be generated; it
> > is the interpretation of that structure which decides if their is an
> > order.  A parseType is a rather low-level and syntax-based way of
> > doing that, when it would better live inside the semantics.
> >
> > I expect OWL will have other ways in their abstract syntax (and
> > concrete forms) to abbreviate and do such things more concisely.
> >
> > Dave

Graham Klyne
Received on Monday, 7 October 2002 10:06:39 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 20:24:16 UTC