- 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