Re: OWL class restriction

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