- From: Bijan Parsia <bparsia@isr.umd.edu>
- Date: Sun, 3 Apr 2005 22:37:32 -0400
- To: James Cerra <jfcst24_public@yahoo.com>
- Cc: www-rdf-logic@w3.org
On Apr 3, 2005, at 10:25 PM, James Cerra wrote: > I'm a little confused by how to apply multiple owl:Restriction classes > to a > class. For instance, say we have two property restrictions: > > <#NeedsResult> > rdf:type owl:Restriction ; > owl:cardinality "1"^^xsd:nonNegativeInteger ; > owl:onProperty <#result> . > > <#NeedsTime> > rdf:type owl:Restriction ; > owl:cardinality "1"^^xsd:nonNegativeInteger ; > owl:onProperty <#time> . > > Each of these restrictions says that the class has to have a property > present - And only one. > namely <#result> or <#time> - correct? Is it really necessary to > specify the > datatypes to be xsd:nonNegativeInteger? Yep. If you can get away with only at least one (and not also at most one), you could use a someValuesFrom instead. > Now say I want to apply those restriction to owl:Class named > <#AnApplication>. > That is, any resource of owl:Class <#AnApplication> has to have the > properties > <#result> and <#time> specified. Would I say: > > <#AnApplication> > rdf:type owl:Class ; > owl:intersectionOf [ > rdf:type rdf:List ; > rdf:first <#NeedsResult> ; > rdf:rest [ > rdf:type rdf:List ; > rdf:first <#NeedsTime> ; > rdf:rest rdf:nil . > ] . > ] . I wouldn't. Is AnApplication the set of *exactly* EVERYTHING that has exactly one of both these properties? If not, just subClass each of them. > Now in the OWL Guide, it says in section 1.5.2 (example converted to > N3): > > ] Note how completely different this union type > ] construct is from the following. > ] > ] <#Fruit> > ] rdf:type owl:Class ; > ] rdfs:subClassOf <#SweetFruit> ; > ] rdfs:subClassOf <#NonSweetFruit> . > ] > ] This says that the instances of Fruit are a > ] subset of the intersection of sweet and > ] non-sweet fruit, which we would expect to be > ] the empty set. > > Now this confuses me. Does that mean that the definition of > <#AnApplication> > could be written: > > <#AnApplication> > rdf:type owl:Class ; > rdfs:subClassOf <#NeedsResult> ; > rdfs:subClassOf <#NeedsTime> . > > If not, they why? It means something different. I personally think this is what *you* mean. Basically, in the first formulation, you said your class was *equivalent* to the intersection. here you are saying that it is the *subclass* of the intersection. It's the biconditional vs. the conditional (if you are familar with logic). > I much perfer this shorter form if possible. Don't prefer short or long forms! Prefer the expression with the right meaning :) In this case, I think you win both ways. I have a preference for subclassing each (in this case), rather than subClassing the explicit intersection, since it is a bit terse and also, IMHO, clearly. > Thanks in advance for clearing this up. You're welcome in advance if I have done so. Cheers, Bijan Parsia.
Received on Monday, 4 April 2005 02:37:42 UTC