1

我正在使用 Protege 4.3 和 SWRL 以 Pellet 作为推理器制定一些规则。

我正在尝试使用 SWRL 内置函数,但我根本无法让它工作。

规则是正确的,但 Protege 似乎根本无法识别内置函数(例如 swrlb:greaterThan)

你能告诉我让 Protege 4.3 识别 SWRL 内置函数所需的过程吗?

下面是一个规则示例:

Asset(?p), id(?p, ?x), swrlb:greaterThan(?x, 10) -> State(?p)

我的问题是它似乎根本无法识别swrlb:greaterThan. 错误说:

OWLRuntimeException:org.protege.editor.owl.model.classexpression.OWLExpressionParserException:在第 1 行第 30 列遇到 swrlb:greaterThan。

4

2 回答 2

0

类别:状态

id some xsd:int[> "10"^^xsd:int]

目前 Protege(我使用的是 v 5.5.0)不支持 swrlb 推理(Hermit,Pellet,...)。你可以:

  • 创建一个“状态”类
  • 在“State class”中添加一个类似上面的“EquivalentTo”规则
  • 运行推理器

您现在应该在 Types 列表中看到 id>10 和“State”的实体

于 2021-09-11T19:36:57.710 回答
-1

在 Protégé(无论如何,4.2.0,但我希望 4.3 也是如此)中,您不需要swrlb:在编辑器中添加前缀。只需使用greaterThan. 例如,如果您在编辑器中键入:

规则编辑器

你会得到:

呈现的规则

于 2013-11-07T19:21:20.123 回答