- From: Pavel Klinov <pklinov@cs.man.ac.uk>
- Date: Sat, 2 Oct 2010 15:40:59 +0100
- To: Adrian Walker <adriandwalker@gmail.com>
- Cc: public-owl-dev@w3.org
Hi Adrian, What you've suggested is a rule. One needs to be careful when adding rules to expressive DLs since it may easily lead to undecidability (SWRL is a good example). This is particularly the case with open rules (like, I believe, is yours although I'm not sure which semantics your system implements) which work for both named and unnamed objects. You may use the so called DL-safe rules which are closed in the sense that they only apply to named individuals. Simply put, a DL-safe rule looking like yours would entail "A loves B" for any *named* person A and any *named* cat B, but it would not entail, for example, that some subset of Person love cats (e.g. "men love cats" although men are persons). Markus' and Jie solutions will handle that situation properly. There are other types of rules such as DLP and Markus' thesis is a good place to read about them. Cheers, Pavel On Sat, Oct 2, 2010 at 2:22 PM, Adrian Walker <adriandwalker@gmail.com> wrote: > Hi Markus & All -- > > As mentioned off-list to Markus, one can do this rather simply in the system > online at the site below as follows: > > some-person is a human being > some-animal is a cat > ------------------------------------------------ > that-person loves that-animal > > So my question is please, what advantages does does the more complicated > method in OWL have? > > Please note that I'm a newbie where OWL is concerned, and just a bit puzzled > about what the conceptual complexity overhead may buy. > > -- Adrian > > Internet Business Logic > A Wiki and SOA Endpoint for Executable Open Vocabulary English Q/A over SQL > and RDF > Online at www.reengineeringllc.com > Shared use is free, and there are no advertisements > > Adrian Walker > Reengineering > > On Fri, Oct 1, 2010 at 2:44 PM, Markus Krötzsch > <markus.kroetzsch@comlab.ox.ac.uk> wrote: >> >> 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/ >> >> > > -- cheers, --pavel http://www.cs.man.ac.uk/~klinovp
Received on Saturday, 2 October 2010 15:36:13 UTC