- From: Brandon Ibach <bibach@earthlink.net>
- Date: Thu, 14 Jan 2010 19:34:03 -0500
- To: Alessandro Maccagnan <maccagnan@math.unipd.it>
- Cc: Uli Sattler <sattler@cs.man.ac.uk>, Rinke Hoekstra <hoekstra@uva.nl>, Thomas Schneider <schneidt@cs.man.ac.uk>, public-owl-dev <public-owl-dev@w3.org>, Erika Feltrin <erika.feltrin@cribi.unipd.it>
Hi, Alessandro... Thank you for the additional background on your application goals. That certainly helps everyone here in coming up with possible solutions. By the way, I apologize if some of my questions came across with a harsh tone, as my intent was only to get you to elaborate a bit, as you did. Given your goal of checking for goals that are incompatible with the object of an action, I'd say you have two possible routes (so far as I can see, anyway... others may have additional ideas). First, you could reverse your approach and create a property that would tie an object to a non-goal; that is, a goal that it is *not* compatible with. There are then several ways to cause the reasoner to detect the inconsistency. However, I think it would probably be more straightforward to simply run a query against your knowledge base after any modification. The kind of check you're trying to perform pretty much inherently runs afoul of the open world assumption, which a query can easily sidestep. -Brandon :) On Thu, Jan 14, 2010 at 10:21 AM, Alessandro Maccagnan <maccagnan@math.unipd.it> wrote: > Hello to all, > > thank you for suggestions, after a few attempts we elaborate a SWRL rule. > in attach you can find an example of what we would like to do in our > ontology. > We have that: > > a1, a2 (individual of Action class) > o1, o2, o3 (individual of Object class) > g1, g2, g3 (individuals of Goal class) > > We defined that: > a1 action_has_goal g1 > a2 action_has_goal g2 > o1 object_has_goal g1 > o2 object_has_goal g2 > o3 object_has_goal g3, g2 > All individuals are different. > > Since a2 has a different goal of o1 and so they are incompatible, we would > like to have a "red flag" whne we try to insert the declaration "a2 > has_object o1". > So we composed this rule: > > Object(?o) , action_has_goal(?a, ?g_di_a) , is_object_of(?o, ?a) , > object_has_goal(?o, ?g) -> sameAs(?g, ?g_di_a) > > Applying this rule, we have that: > - declaration "a1 has_object o1" is possible > - declaration "a2 has_object o2" is also possible > because a1,o1 and a2,o2 have respectively the same goal > INSTEAD > - declaration "a1 has_object o2" is NOT possible > - declaration "a2 has_object o1" is NOT possible > because a1,o2 and a2,o1 have different goals > BUT > - declaration "a2 has_object o3" is NOT possible > We do not want this, we want to have this declaration TRUE because o3 has > one of its goal equal to the a2 goal (which is g3). > > This is because we would like to use in an action only the object that can > be useful for that action. For example, in the "cut" action you can use a > "scissor" or a "knife" but not a "glue". > How can we say (if possible) that? >
Received on Friday, 15 January 2010 00:34:32 UTC