SWRL - 取决于其他规则断言的规则

时间:2015-08-28 19:58:48

标签: owl ontology swrl

目前,我正在开发一种本体来表示特定用户可能对某些内容的偏好。例如,用户可能会将MediaVolumeLevel首选项设置为VolumeLevel_3

不同级别(班级MediaVolumeLevel的个人)是: VolumeLevel_1, VolumeLevel_2, VolumeLevel_3 and VolumeLevel_4

用户和首选项由objectProperty hasMediaVolumeLevelPreference链接。

需要通过SWRL规则从其他用户方面推断出objectProperty断言。例如,如果用户有听力困难,则MediaVolumeLevel需要设置为VolumeLevel_4.所以:

User(?u), hasDifficulty(?u,Hearing) -> hasMediaVolumeLevelPreference(?u,VolumeLevel_4)

这很好用。但是,由于我有其他SWRL规则也推断相同用户的MediaVolumeLevel,例如:

User(?u), hasContext(?u,NoisyRoom) -> hasMediaVolumeLevelPreference(?u, VolumeLevel_3)

并且SWRL仅支持单调推理,推理器将断言VolumeLevels(VolumeLevel_4VolumeLevel_3)。

我需要的是一条规则,如果没有更高级别已经断言,那么它将仅以某种方式断言偏好。在给定的示例中,即使hasContext(?u,NoisyRoom)为真,唯一断言的级别应为VolumeLevel_4,因为其他规则断言它。

对此有何建议?我想要什么可能使用SWRL? 我使用的是Protege 4.3和Pellet Reasoner

谢谢,MFV。

1 个答案:

答案 0 :(得分:2)

这是可能的,但仅限于某些情况。请允许我解释一下。


1)您的hasMediaVolumeLevelPreference是与个人VolumeLevel_1, VolumeLevel_2, VolumeLevel_3 and VolumeLevel_4相关的对象属性。这些人在本体中没有相对排序。作为人类设计师,您意识到VolumeLevel_4大于VolumeLevel_3,但对于推理者,不存在这样的相对排序。如果您要将hasMediaVolumeLevelPreference更改为范围为int(或long或其他任何内容)的数据属性,那么您已在个人背后提供了具体的数据值。因此,您可以使用swrl比较内置函数编写规则,即swrl:greaterThan等。

2)您现在可以在您的规则中编写条款,以便在先行条件中进行比较,以便只有最高值被断言,但SWRL仅支持单调推理。因此,SWRL规则不能用于修改本体中的现有信息。 SWRL规则无法从本体中收回或删除信息。因此,如果较低的音量Volume_3Volume_4之前声明,则无法从本体中删除hasMediaVolumeLevelPreference(Volume_3)关系。
)3)尽管如此,Apache Jena还有一个规则引擎可用于在rdf三级操作本体。您可能必须编写自己的内置函数,但可以从rdf子图中删除属性和类描述。有关耶拿规则的更多信息,请转到here

我希望这有帮助。