2

假设有一个类 "Food" 包含个人 "Grain" 和 "Fruit" 。如果我想选择 Grain,我可以将food_type数据属性分配给个人

(class) Food
    (ind_1) Grain   food_type ---> "grain_food"
    (ind_2) Fruit   food_type ---> "fruit_food"

并运行此代码:

  Food(?x) ^ food_type(?x,"grain_food") -> sqwrl:select(?x)

但是如果我想在不需要 财产的情况下做这项工作(选择Grain个人)怎么办?food_type是否可以仅通过名称直接指向特定的个人?

4

1 回答 1

3

不清楚您要问什么,但是是的,您可以在 SWRL 规则中使用个人。例如,如果您有来自C类的个人c,您可以执行以下操作:

    C(c) ⟶ sqwrl:select(c)

只要sqwrl:select不一定需要变量(即,只要它可以直接接受个人),这应该没问题。如果它需要一个变量,而不是直接的个体(我认为这会违背意图),我想你可以使用某种相等谓词,比如swrbl:equal

    swrlb:equal(c,?x) ⟶ sqwrl:select(?x)

于 2016-08-08T15:20:22.263 回答