- From: Dan Connolly <connolly@w3.org>
- Date: Fri, 12 Jan 2001 12:46:14 -0600
- To: "Peter F. Patel-Schneider" <pfps@research.bell-labs.com>
- CC: horrocks@cs.man.ac.uk, www-rdf-logic@w3.org
"Peter F. Patel-Schneider" wrote:
> 
> There appears to be a type problem in the definition of DAML+OIL lists.
> 
> The problem is that there is no way of typing a list.  For example,
> Disjoint could be a list of anything---not necessarily a list of classes,
> as we want/require.
No way of typing a list? If you mean that there's no handy
idiom for it, OK. But there certainly is a way to say
what we mean; we've said it:
Ax56.    (<=> (Type ?l Disjoint)
           (and (Type ?l List)
                (forall (?c) (=> (PropertyValue Item ?c ?l)
                                 (Type ?c Class)))
                (forall (?c1 ?c2) 
                        (=> (and (PropertyValue item ?c1 ?l)
                                 (PropertyValue item ?c2 ?l) 
                                 (not (= ?c1 ?c2))) 
                            (PropertyValue disjointWith ?c1 ?c2)))))
	-- http://www.daml.org/2000/12/axiomatic-semantics.html
>  Note that this problem is not confined to DAML+OIL as
> RDF(S) itself has no (decent) mechanism for constraining the type of
> collection elements.
It's accurate to say that RDF(S) didn't standardize any idiom for
it; but I don't see it as a problem. If it's a useful idiom
for our community, we can certainly add, say, a listOver
property to relate a subclass of List with a class for the
elements of the list.
	(=> (PropertyValue listOver ?LC ?C)
		(forall (?e ?l)
			(=> (and (Type ?l ?LC)
			(PropertyValue item ?e ?
> DAML+OIL has a bigger problem, however, in Disjoint.  Disjoint is a
> subclass of List.  Does this mean that the rest of a Disjoint should also
> be a Disjoint?
That's a theorem, provable from Ax56: the empty list is
a Disjoint vacuously, and the induction step follows pretty easily.
>  This seems to make sense, but it can't be as lists have to
> be terminated by a nil, which is not a Disjoint, just a List.
Yes, nil is a Disjoint as well as a List; what made you think otherwise?
-- 
Dan Connolly, W3C http://www.w3.org/People/Connolly/
Received on Friday, 12 January 2001 13:46:24 UTC