- From: Peter F. Patel-Schneider <pfps@research.bell-labs.com>
- Date: Tue, 17 Sep 2002 15:01:49 -0400 (EDT)
- To: pacheco@AI.SRI.COM
- Cc: www-rdf-logic@w3.org
From: John Pacheco <pacheco@AI.SRI.COM> Subject: Dealing with qualified expressions in DAML Date: Tue, 17 Sep 2002 11:37:25 -0700 (PDT) > > The reference description of DAML seems to state that a Restriction may contain > multiple qualified expressions. This sounds like a very good idea, since it > makes Restrictions a very powerful tool in defining complicated classes. What I > don't understand it how to reconcile the DAML syntax with the meathod of parsing > it into triples. > > Let's take this simple example where we define the number of outragous things to > be found in the pockets of a cartoon character. > > <daml:Class rdf:ID="CartoonCharacter"> > <rdfs:subClassOf> > <daml:Restriction> > <daml:onProperty rdf:resource="#hasInPocket"/> > <daml:hasClassQ rdf:resource="#Elephant"/> > <daml:maxCardinalityQ>2</daml:maxCardinalityQ> > <daml:hasClassQ rdf:resource="#Dynamite"/> > <daml:maxCardinalityQ>4</daml:maxCardinalityQ> > <daml:hasClassQ rdf:resource="#Anvil"/> > <daml:maxCardinalityQ>1</daml:maxCardinalityQ> > </daml:Restriction> > </rdfs:subClassOf> > </daml:Class> This is valid DAML+OIL, but it does not mean what you might think that it means. To get the standard meaning of this you need to create an intersectionOf multiple restrictions. > I would like to say that a "CartoonCharacter" can have as many as 2 Elephants, 4 > sticks of Dynamite, and 1 Anvil in her pockets and any given time, but I am not > able to associate the hasClassQ tag with the maxCardinalityQ tag in any > meaningful way. We end up parsing this code into these triples (The following > is based on the JENA parser, but it has been cleaned up for easier reading.): > > CartoonCharacter, type, Class > CartoonCharacter, subClassOf, AnonClass_123 > AnonClass_123, type, Restriction > AnonClass_123, onProperty, hasInPocket > AnonClass_123, hasClassQ, Elephant > AnonClass_123, hasClassQ, Dynamite > AnonClass_123, hasClassQ, Anvil > AnonClass_123, maxCardinalityQ, 2 > AnonClass_123, maxCardinalityQ, 4 > AnonClass_123, maxCardinalityQ, 1 > > Here you can plainly see that not only is the pairing of hasClassQ and > maxCardinalityQ not specified in the DAML syntax, but it cannot show up in the > model. There's no way to pair the tags together without an alternative parsing > method, becasue there is no entity to associate the class-cardinality pair with > except for the Restriction's anonymous class. > > As it is, the daml code above is valid. The daml validator at > http://www.daml.org/validator/ has no problem with it. To see the entire > example go to http://www.ai.sri.com/daml/scratch/QualifiedExpression.daml > The triple model generated by the JENA parser can be seen at > http://www.ai.sri.com/daml/scratch/QualifiedExpression-tripleModel.txt > > It appears that one of the following must be true: > > (a) one should not put more than one qualified expression into a restriction -in > which case the DAML+OIL documentation should be modified to make this clear You can do this. > (b) a parser is expected to rely on adjacency of hasClassQ instances and > maxCardinalityQ instances to determine their pairings, and then to represent > these pairings internally using additional anonymous classes - in which case > JENA would need an update to reflect this The parser should not do this. > (c) additional syntax is needed in DAML+OIL to specify the pairings and JENA > still needs an update to reflect this. This is done by having multiple restrictions and making an intersection. No extra syntax is needed. > I'd appreciate clarification of which of the above is the right way to look at > this. > > Thank you very much, > John Peter F. Patel-Schneider
Received on Tuesday, 17 September 2002 15:02:05 UTC