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 14:39:45 -0600
Message-ID: <51F1B258494D5A4488C95F40E55F35D53E66BD@exchsrvr.semanticarts.local>
To: "John McClure" <jmcclure@hypergrove.com>, "Owl Dev" <public-owl-dev@w3.org>

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 20:37:10 GMT

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