- From: Jeremy Carroll <jjc@hplb.hpl.hp.com>
- Date: Mon, 29 Apr 2002 22:25:16 +0100
- To: "Peter F. Patel-Schneider" <pfps@research.bell-labs.com>
- Cc: <www-webont-wg@w3.org>
> -----Original Message-----
> From: www-webont-wg-request@w3.org
> [mailto:www-webont-wg-request@w3.org]On Behalf Of Peter F.
> Patel-Schneider
> Sent: 27 April 2002 16:04
> To: jjc@hplb.hpl.hp.com
> Cc: www-webont-wg@w3.org
> Subject: Re: DTTF: List Ontology test case
>
>
> From: "Jeremy Carroll" <jjc@hplb.hpl.hp.com>
> Subject: DTTF: List Ontology test case
> Date: Thu, 25 Apr 2002 14:18:52 +0100
>
> > > I still need to send a message introducing the "List
> Ontology" test case.
> >
> > I think of daml:Lists as a vocabulary:
> > daml:first
> > daml:rest
> > daml:List
> > daml:nil
> >
> > and as an ontology for using this vocab that could be
> described in daml.
> >
> > e.g.
> >
> > (using rdf:aboutq with qnames instead of rdf:about with URIrefs!)
> >
> > <daml:Class rdf:about="#EmptyList">
> > <daml:oneOf>
> > <rdf:Description rdf:aboutq="daml:nil">
> > </daml:oneOf>
> > </daml:Class>
> > <daml:Class rdf:aboutq="daml:List">
> > <daml:unionOf rdf:parseType="daml:collection">
> > <daml:Class rdf:about="#EmptyList"/>
> > <daml:Class rdf:about="#NonEmptyList"/>
> > </daml:unionOf>
> > </daml:Class>
> > <daml:ObjectProperty rdf:aboutq="daml:rest>
> > <daml:range rdf:resourceq="daml:List"/>
> > </daml:ObjectProperty>
> > <daml:ObjectProperty rdf:aboutq="daml:first"/>
> > <daml:Class rdf:about="#NonEmptyList">
> > <daml:sameClassAs>
> > <daml:Restriction>
> > <daml:onProperty rdf:resourceq="daml:rest"/>
> > <daml:hasValue rdf:resourceq="daml:Thing"/>
> > </daml:Restriction>
> > </daml:sameClassAs>
> > </daml:Class>
> >
> > etc. etc.
> >
> > Ths test case is meant to capture that intent.
> > If daml:Lists are dark, then this sort of ontology has little formal
> > meaning.
> >
> > Jeremy
>
> Well, I don't think that you get want you need out of this sort of thing.
> In particular, making you are not capturing the fact that there
> can only be
> one daml:first and one daml:rest triple for any particular list head. In
> fact, you can't capture this at all in DAML+OIL or FOWL.
>
Sorry I don't understand; you're going to have to spell it out for this
bear of little brain.
Suppose I replace daml by foo (a prefix for http://example.org/foo#)
(I am not sure whether you are saying my approach doesn't work because of
the self-reference - so I'll remove it).
I can capture the nil-terminated list of cons cells semantics in daml can't
I? [Detail below]
(I note I can't capture the syntactic restriction because of the lack of
unique naming...)
I guess I can't capture that the list has finite length.
Does daml:List have to have that syntactic restiction or would a semantic
restriction like this suffice?
Jeremy
Appendix: Sketch of Detail
I form three classes
foo:EmptyList = oneOf { foo:nil }
foo:NonEmptyList
foo:List = disjointUnion { foo:EmptyList, foo:NonEmptyList }
foo:rest has range foo:List
foo:first and foo:rest have cardinality 1 on foo:NonEmptyList and
cardinality 0 on foo:EmptyList.
(I might have missed something, but I think the idea is clear)
Received on Monday, 29 April 2002 17:25:34 UTC