- From: Ian MacLarty <iml@missioncriticalit.com>
- Date: Mon, 19 Feb 2007 17:33:06 +1100
- To: Bijan Parsia <bparsia@isr.umd.edu>
- Cc: Ian MacLarty <iml@missioncriticalit.com>, Dave Reynolds <der@hplb.hpl.hp.com>, www-rdf-rules@w3.org
On Fri, Feb 16, 2007 at 11:45:01AM +0000, Bijan Parsia wrote: > > On Feb 16, 2007, at 12:01 AM, Ian MacLarty wrote: > > [snip > >Now, back to the issue at hand. For me, having rdf:nil a member of > >AtomList as it stands is problematic, since it means that in all > >models > >rdf:nil must have values for the rdf:first and rdf:rest properties, > >because of the cardinality restrictions imposed by AtomList. > > > >If AtomList were renamed to "NonEmptyAtomList" and AtomList was > >instead > >defined as the union of NonEmptyAtomList and the singleton set > >containing rdf:nil, then I believe the problem would go away. > > First, let me reiterate that I don't think there's a problem worth > probleming over since I am, in general, not a fan of these partial > encodings of syntax into RDF and OWL. I think they are harmful and > best ignored. > > Second, list modeling is especially fraught, as I said. > > However, another way to deal with your specific issue is to make #nil > related by first and rest to itself. Indeed, nothing prevents cyclic > models, as you said. In some Lisps, for example, the car and the cdr > of '() is '() (or 'nil as the case may be). See: > <http://www.lisp.org/HyperSpec/Body/acc_carcm_cdr_darcm_cddddr.html> > > (search for Descriptrion: or nil). > > So, one can think of the current SWRL OWL as not "incorrect" on this > point, but merely underspecified. > This is problematic, because it means that rdf:nil is in the class Atom, because of the allValuesFrom restriction on rdf:first for AtomList. The SWRL spec doesn't say what the meaning of the rdf:nil atom is (the meaning of the rdf:nil AtomList is clear, but not the meaning of the rdf:nil Atom). More generally this is a bad way to define lists, since for any class you define a list of in this way, you end up adding rdf:nil to the class. This means you couldn't define lists for two disjoint classes using this approach, since then both classes would contain rdf:nil and violate the disjointWith constraint. Ian.
Received on Monday, 19 February 2007 06:34:01 UTC