- From: Graham Klyne <GK@ninebynine.org>
- Date: Mon, 07 Oct 2002 09:05:08 +0100
- 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 .
entails:
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" ) .
entails
my:List my:threeFavouriteThings
( "mostFavourite", "thirdFavourite", "nextFavourite" ) .
#g
--
>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
>available.
>
>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
>complicated.)
>
>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
>parseType
>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
>property?"
>
>And ultimately we felt that the answer had to be "no", giving the existing
>documentation
>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.
>
>Regards,
>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
<GK@NineByNine.org>
Received on Monday, 7 October 2002 10:06:39 UTC