I've just started doing work on ontologies with Protegé and I'm trying to understand how to use SWRL rules. I'm afraid I don't get the concept or how to correctly treat them, as I'm not able to produce any output. I'll explain a bit more a simple case I created to test this:
I've created three individuals, called A, B and C. Each one with a test property, that has a boolean range. On the property assertions tab of each one I've initialized their values, so they are test(A,true)
, test(B,true)
and test(C,true)
. To test how rules work, I created a rule like this: test(A,true), test(B,true) -> test(C,false)
. The way I understand it is that, if A and B's test property is true, C's one would turn false. To do so, I start the reasoner (Pellet) but nothing happens. I mean, it says the reasoner is active and no "inconsistent ontology" messages appear, but C's test value doesn't change. I'm sure this must be a really simple confusion but I can't seem to find it anywhere nor check if the rule has been activated.
Thank you in advance.
The inference doesnt work like that, you cannot retract
test(C, true)
if you've asserted it. Your ontology probably includes bothtest(C, true)
andtest(C, false)
which is completely legal unless you've specified otherwise; in which case then you'd see the inconsistency.