Re: Questions About The List Argument of Properties Like "unionOf"

[+cc www-rdf-comments as I'm elaborating on an item
in the RDF Issues list...]

Richard Fikes wrote:
> 
> I have recently been doing some design work on a DAML+OIL reasoner, and
> have come upon some issues about the DAML+OIL language on which I need
> clarification.  Here is one that I would like feedback on from the
> language design committee:
> 
> The issue has to do with the list that is the value of the "unionOf" and
> "intersectionOf" properties.  I know that the standard usage of those
> properties would involve specifying the items of an anonymous list as
> their value, as in:
> 
>    <daml:Class rdf:ID="CommonPet">
>      <daml:unionOf rdf:parseType="daml:collection">
>        <daml:Class rdf:about="#Dog"/>
>        <daml:Class rdf:about="#Cat"/>
>      </daml:unionOf>
>    </daml:Class>
> 
> However, I don't see anything that would prevent one from using a named
> list as the value.  So, it seems one could include the following in a
> DAML+OIL knowledge base (I am using RDF statement syntax here rather
> than markup):
> 
> (type L List)
> (_1 L "#Dog")
> (_2 L "#Cat")
> (unionOf CommonPet L)

actually, parsetype daml:collection is specified in terms
of DAML's first/rest/nil, rather than RDF's _1 _2 etc.

cf http://www.daml.org/2001/03/reference.html#collection

So this should be:

(type L List)
(first L #Dog)
(rest L L2)
(first L2 #Cat)
(rest L2 nil)

> My first question is whether the value of "unionOf" in a statement can
> be a named list.

Yes.

> If not, is that restriction stated somewhere in the spec?
> 
> If so, then what happens if one adds an item to the list?

You'd get an inconsistency...

> For example, that could occur if one had a DAML file that included an
> ontology containing the definition of CommonPet given above, and the
> file contained the statement "(_3 L "#Elephant")".

This is the reason daml:collection uses first/rest/nil rather
than rdf's _1 _2. They should be isomorphic, but RDF has
no way to express the end of a list. See

http://www.w3.org/2000/03/rdf-tracking/#rdfms-seq-representation
raised Thu, 22 Feb 2001 by Dan Connolly

If you tried to say (rest L2 L3) and (first L3 #Elefant)
this would be an inconsistency: since rest is functional,
L3 = nil, and nothing is the first of nil.


>  The class CommonPet
> as used in this file would include elephants, whereas CommonPet included
> only dogs and cats in the ontology used in that file.  Statements that
> change the contents of a list that is the value of unionOf are
> essentially nonmonotonic additions to the knowledge base, since one
> could prove that Clyde the elephant was not a common pet before the
> statement above is added and that conclusion would be false after the
> statement is added.
> 
> So, my second question is whether such changes are allowed to the value
> of "unionOf" and to the values of other properties that are used to
> define nonprimitive classes.
> 
> If not, is that restriction stated somewhere in the spec?
> 
> If so, what about the apparent problems such changes could cause?
> 
> Richard

-- 
Dan Connolly, W3C http://www.w3.org/People/Connolly/

Received on Wednesday, 18 April 2001 13:10:19 UTC