我刚刚开始与Protegé合作开发本体,我正在努力了解如何使用SWRL规则。我担心我没有得到概念或如何正确对待它们,因为我无法产生任何输出。我将解释一下我为测试它而创建的一个简单案例:
我创建了三个人,分别叫做A,B和C.每个人都有一个测试属性,它有一个布尔范围。在每个属性的属性断言选项卡上,我初始化了它们的值,因此它们是test(A,true)
,test(B,true)
和test(C,true)
。为了测试规则的工作方式,我创建了一个这样的规则:test(A,true), test(B,true) -> test(C,false)
。我理解的方式是,如果A和B的测试属性为真,那么C的一个将变为false。为此,我启动推理器(Pellet)但没有任何反应。我的意思是,它说推理器是活动的,没有出现“不一致的本体”消息,但C的测试值不会改变。我确信这一定是一个非常简单的混乱,但我似乎无法在任何地方找到它,也无法检查规则是否已被激活。
提前谢谢。
答案 0 :(得分:1)
推理不会像那样工作,如果你声明它,你就无法收回test(C, true)
。您的本体可能包含test(C, true)
和test(C, false)
,除非您另有说明,否则这些内容完全合法;在这种情况下然后你会看到不一致。