- From: Dan Connolly <connolly@w3.org>
- Date: Wed, 18 Apr 2001 12:10:14 -0500
- To: Richard Fikes <fikes@KSL.Stanford.EDU>, www-rdf-comments@w3.org
- CC: www-rdf-logic <www-rdf-logic@w3.org>
[+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