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

Re: All humans love (all) cats

From: Markus Krötzsch <markus.kroetzsch@comlab.ox.ac.uk>
Date: Fri, 01 Oct 2010 19:44:19 +0100
Message-ID: <4CA62C03.4050707@comlab.ox.ac.uk>
To: Jie Bao <baojie@gmail.com>, Cristian Cocos <cristi@ieee.org>
CC: public-owl-dev@w3.org, sandro@w3.org
On 01/10/2010 16:51, Cristian Cocos wrote:
 > How would I write "All humans love all cats" in OWL2 please ? (I'd
 > appreciate a Manchester syntax rendering.) I know how to trick OWL2
 > to say that some fixed specified individual loves all cats, though
 > not the former.

Note that there is a not-so-differently titled research paper on the 
same issue: "All Elephants are Bigger Than All Mice" [1]. The feature 
used here is generally known as a "concept product" (or "class product" 
in OWL terms).

Jie's below explanation shows a workaround that can be used for OWL 2. 
This indirect encoding may not work well in practice, since tools for 
modelling and reasoning will not recognise that you only want to make a 
very simple statement when using the below axioms. There are other 
possible encodings that may or may not work better in specific 
situations. Here is one more:

EquivalentClasses( :Human ObjectHasValue( :pHuman :anIndividual ) )
EquivalentClasses( :Cat ObjectHasValue( :pCat :anIndividual ) )
SubObjectPropertyOf( ObjectPropertyChain(
                         :pHuman
                         ObjectInverseOf ( :pCat )
                      ) :love)

Here :pCat, :pHuman, and :anIndividual are auxiliary entities not used 
anywhere else. Manchester Syntax would be something like this:

ObjectProperty: love SubPropertyChain: pHuman o  inv(pCat)
Class: Cat  EquivalentTo: pCat value anIndividual
Class: Human  EquivalentTo: pHuman value anIndividual

Regards,

Markus

[1] http://korrekt.org/page/Elephants
(this is a special case of DL Rules; see my dissertation for an extended 
discussion: http://korrekt.org/page/PhD_thesis)



On 01/10/2010 17:13, Jie Bao wrote:
> Cristian
>
> I guess you need a rule like Human(x),Cat(y) ->  love(x,y)
>
> The trick is to use self restrictions, the top property and property
> chains to connect all x and y.
>
> in Functional-Style Syntax
>
> EquivalentClasses( Human ObjectHasSelf( ex:pHuman ) )
> EquivalentClasses( Cat ObjectHasSelf( ex:pCat ) )
> SubObjectPropertyOf( ObjectPropertyChain( ex:pHuman owl:topObjectProperty
> ex:pCat ) ex:love)
>
> or in Manchester Syntax
>
> Class: Human EquivalentTo: ex:pHuman Self
> Class: Cat EquivalentTo: ex:pCat Self
> ObjectProperty: ex:love  SubPropertyChain: ex:pHuman o
> owl:topObjectProperty o ex:pCat
>
> Wish that helps
>
> Jie
>



-- 
Markus Krötzsch
Oxford  University  Computing  Laboratory
Room 306, Parks Road, Oxford, OX1 3QD, UK
+44 (0)1865 283529    http://korrekt.org/
Received on Saturday, 2 October 2010 07:34:06 GMT

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