Search Mailing List Archives
[protege-discussion] SWRL Disjonction
tar at ISI.EDU
Thu Apr 2 09:21:08 PDT 2009
On Apr 2, 2009, at 1:46 AM, narjess touzani wrote:
> Dear Mr.Thomas,
> Thank you for your response.
> I am modelling pedagogical knowledge. And I want to express and
> infer rules on these knowledge. So I want to express rules like :
> if activity_type is "production" then activity can be a "case study"
> one OR an "Analysis" one. If we write this rule in SWRL:
> activity_type(Production) --> Activity(case_Study) OR
> So, in this case I need the disjonction operator.
OK. So how does it help you in further reasoning?
There isn't anything you can conclude based on the results of this
rule. So what do you want this to be able to tell you? If you asked
if the activity is a "case study", any logical reasoner would have to
return unknown (or even worse false if you used a closed world
Now, if what you are trying to do is narrow things down a bit, then
you either need to make assertions about the activity being in the
complement of those types which it is now known NOT to be.
Alternately, you would need to introduce another class which is the
union of the case_study and analysis classes, and write your rule to
assert membership in that class:
Analytical_Activity <=> unionOf case_study analysis
By introducing this disjunctive parent of case_study and analysis, you
can introduce a controlled measure of disjunction, but in a positive
way that allows you to use the information in further reasoning.
It also seems a bit odd to be using a relation for noting type
information. In Frames or OWL, it would be more natural to model
types as classes and have the built-in class and type reasoning
mechanisms available to you. In fact, from your example rule, I'm
wondering why you don't just build a class hierarchy like:
and not even bother with SWRL rules at all.
More information about the protege-discussion