W3C home > Mailing lists > Public > www-rdf-rules@w3.org > February 2007

Re: AtomList infinite or cyclic in all models

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
Message-ID: <20070219063306.GF4004@cleopatra>

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

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 22:46:20 UTC