RE: Inferring Properties based on Types

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