W3C home > Mailing lists > Public > public-owl-dev@w3.org > October to December 2007

RE: Inferring Properties based on Types

From: Swanson, Tim <tim.swanson@semanticarts.com>
Date: Mon, 8 Oct 2007 17:59:27 -0600
Message-ID: <51F1B258494D5A4488C95F40E55F35D53E66BE@exchsrvr.semanticarts.local>
To: "John McClure" <jmcclure@hypergrove.com>, "Owl Dev" <public-owl-dev@w3.org>

John,

I think you're usage of domains and ranges implies a number of
assumptions that don't universally hold. I've included comments inline.

Thanks,

Tim Swanson
Semantic Arts, Inc.
Fort Collins, Colorado


> -----Original Message-----
> From: John McClure [mailto:jmcclure@hypergrove.com]
> Sent: Monday, October 08, 2007 3:48 PM
> To: Swanson, Tim; Owl Dev
> Subject: 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?
> 

The problem is that you're making assumptions that are not inherent in
the ontology being expressed. Consider the following English
translations of the OWL axioms:

:HumanMale rdfs:subClassOf :Human .
	"all human males are human"

:sibling rdfs:range :Human .
	"all siblings are human"

:brother rdfs:range :HumanMale .
	"all brothers are human males"

:brother rdfs:subPropertyOf :sibling .
	"all brothers are also siblings"

When you combine the statements "all brothers are human males" and "all
brothers are also siblings", that does not imply that "all male siblings
are brothers" (even though "all siblings are human" and "all human males
are human").

I realize that there's a lack of argumentation there, so if you're not
convinced I provide a counter-example below.

>
> This is a *common* ontology design pattern !!! In fact I'd think it's
> used by
> pretty much everyone. 
>

I would be surprised if it were, since it doesn't work (at least not in
OWL). 

I'm not claiming to have read every page of the OWL spec, but Pellet
doesn't show the inference when I paste in the ontology you provided
(and I doubt it's a bug).

>
> Perhaps you know an example where P1's range &
> P2's range
> have this relationship but the assertion wouldn't be valid?
> 

Okay, this may seem a bit tortured, but it gets the point across, which
is that the pattern you describe only works when the relationship
between the class and the property is universal. (I.e. there are no
exceptions to the sibling+male=brother case; it would be different if
there were.)

Here's the example:

  :DiplomaticCountry
      a       owl:Class .

  :TradingCountry
     	a       owl:Class ;
      rdfs:subClassOf :DiplomaticCountry .

  :hasDiplomacyWith
      a       owl:ObjectProperty ;
      rdfs:range :DiplomaticCountry .

  :tradesWith
      a       owl:ObjectProperty ;
      rdfs:range :TradingCountry ;
      rdfs:subPropertyOf :hasDiplomacyWith .

  :Pakistan :tradesWith :Afghanistan .
  :France :hasDiplomacyWith :Afghanistan .

In this scenario, if one country trades with another, then it is a
'TradingCountry'. (We are assuming that diplomatic relations are a
prerequisite to international trade.)

According to the semantics that you outline in your post, you would
expect to see this entailment:

  :France :tradesWith :Afghanistan .

And that clearly is not the intent of the above ontology. Just because a
country trades with one nation does not mean they trade with every
nation with which they have diplomatic contact. (On the other hand, the
fact that someone is one person's brother does mean that they are a
brother to every sibling they have.) 

This "pattern" only works under very specific assumptions.

>
> 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?
>
 
Maybe they are (a shocking requirement), but the pattern that you
outline is not universal. Domain, range, and property hierarchies are
not meant to accomplish the kind of inference that we're talking about
here. Using them for that purpose would be misleading. I don't think
that's purism.
 
>
> 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.
>

This would be inherent in the "property union" concept. Just as a "class
union" implies a subproperty/superproperty relationship, so would a
property union. As in a class union, the semantics would be stronger
(implying complete coverage) than a simple subproperty. 

 
> 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 23:56:51 GMT

This archive was generated by hypermail 2.3.1 : Wednesday, 27 March 2013 09:32:55 GMT