- From: Markus Krötzsch <markus.kroetzsch@comlab.ox.ac.uk>
- Date: Fri, 01 Oct 2010 19:44:19 +0100
- 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 UTC