- From: John McClure <jmcclure@hypergrove.com>
- Date: Mon, 8 Oct 2007 14:48:00 -0700
- To: "Swanson, Tim" <tim.swanson@semanticarts.com>, "Owl Dev" <public-owl-dev@w3.org>
Hi Tim, Thanks for the explanation, but I think you're not accounting for the relationship between the ranges.... If P1 is a subproperty of P2, and the range of P1 is a subclass of the range of P2, then why is that not 'reason enough' to assert that subproperty P2 exists for instances that satisfy the range constraint that have a P1 property ? This is a *common* ontology design pattern !!! In fact I'd think it's used by pretty much everyone. Perhaps you know an example where P1's range & P2's range have this relationship but the assertion wouldn't be valid? Maybe I don't understand the original question, but it seems the answers provided invoke 'workarounds' with Property chains and what-not, are pretty shocking requirement when expressing such a common design pattern. Maybe the issue here is somewhat purity vs practicality? As for the 'property union' idea, it seems simpler to define a subproperty of subPropertyOf to indicate this common design pattern is being used.... though IMHO it's unnecessary. Thanks, John PS The 'sibling' property is of course a SymmetricProperty. >-----Original Message----- >From: public-owl-dev-request@w3.org >[mailto:public-owl-dev-request@w3.org]On Behalf Of Swanson, Tim >Sent: Monday, October 08, 2007 1:40 PM >To: John McClure; Owl Dev >Subject: RE: Inferring Properties based on Types > > > >John, > >The problem here is with the way that subproperties work. If A is a >subproperty of B, then A implies B but not vice versa. In your example >below, 'brother' is a subproperty of 'sibling', yet you assert (:John >:sibling :Paul). The reasoner can make no inference from this. The fact >that 'Paul' satisfies the range of 'brother' is not reason enough to >assert the object property relationship. > >In the simplest terms I can think of, the problem with the example you >gave is that an OWL reasoner can only infer "up" the property hierarchy >(i.e. from subproperties to superproperties) and not "down" (i.e. from >superproperties to subproperties). > > >Ideally, what you would want in this situation is some sort of "property >union". This would allow you to assert that that 'siblingOf' is the >union of 'brotherOf' and 'sisterOf'. That would allow you to infer one >property when the other has been ruled out (assuming the superproperty >is present). In this situation, if you had the following facts: > > :sisterOf rdfs:domain :Female > :Male owl:disjointWith :Female > :Paul rdf:type :Male > :Paul :siblingOf :John > >Then you could infer (:Paul :brotherOf :John) because (1) they are known >to be siblings, and (2) Paul does not belong to the domain of >'sisterOf'. > >Unfortunately, things are not so simple. > > >Just a thought, > >Tim Swanson >Semantic Arts, Inc. >Fort Collins, Colorado > > >> -----Original Message----- >> From: public-owl-dev-request@w3.org [mailto:public-owl-dev- >> request@w3.org] On Behalf Of John McClure >> Sent: Monday, October 08, 2007 1:01 PM >> To: Owl Dev >> Subject: RE: Inferring Properties based on Types >> >> >> >>> (?x :hasSibling ?y) >> >>> :Male(?y) >> >>> => >> >>> (?x :hasBrother ?y) >> > >> >It isn't possible in either OWL or OWL 1.1. >> >> What? I must not understand WHY this is being said, because I'm now >> hearing that >> this simple requirement is somehow ambiguous enough that a special, >> exceedingly >> complicated set of axioms is required using OWL 1.1 keywords! Can >> someone >> explain the problems in more layman terms? With RDF/XML as below, a >> reasoner >> should identify Paul as brother of John -- if it can't, without all >the >> rigamorol outlined in recent posts (manman?), then SOMETHING seems >> terribly >> wrong here. If you know a link that provides layman explanation(s) >> that would >> be great too. Thanks. >> >> <owl:Class rdf:ID="HumanBeing"/> >> <owl:Class rdf:ID="HumanMale"> >> <rdfs:subClassOf rdf:resource='#HumanBeing'/> >> </owl:Class> >> <owl:ObjectProperty rdf:ID='sibling'> >> <rdfs:domain rdf:resource='#HumanBeing'/> >> <rdfs:range rdf:resource='#HumanBeing'/> >> </owl:ObjectProperty> >> <owl:ObjectProperty rdf:ID='brother'> >> <rdfs:domain rdf:resource='#HumanBeing'/> >> <rdfs:range rdf:resource='#HumanMale'/> >> <rdfs:subPropertyOf rdf:resource='#sibling'/> >> </owl:ObjectProperty> >> >> <HumanBeing rdf:ID='John'/> >> <sibling> >> <HumanMale rdf:ID='Paul'/> >> </sibling> >> </HumanBeing> >> >> > >
Received on Monday, 8 October 2007 21:46:52 UTC