2

我对 Jena API 有疑问。

我写了一些运行良好的规则,但有一件事我仍然有问题。我希望你能帮助我。

两个整数的比较

在我的规则中,我需要像“GreaterThan”这样的比较。我搜索了很长时间,但没有一个版本有效。我尝试GreaterThan(?x, ?y)了作为规则的一部分以及 swrlb: <http://www.w3.org/2003/11/swrlb#>具有其功能 的名称空间swrlb:GreaterEqual,但两者都没有奏效。

规则如下所示:

[r0: (?x es:has_intensity ?I), GreaterThan(?I, 2) -> (?x es:test "true")] 

或我的替代方案:

[r0: (?x es:has_intensity ?I), (?I swrlb:Greater 2) -> (?x es:test "true")]
4

1 回答 1

4

您可能遇到的主要问题是您没有使用已知的内置函数。内置函数区分大小写。

正如在 Jena 中看到的那样owl-fb.rules,您打算使用的内置函数是greaterThan,而不是GreaterThan。使用内置函数 (from ) 的规则示例owl-fb.rules如下:

[validationMaxN: (?v rb:validation on()), (?C rdfs:subClassOf max(?P, ?N)) greaterThan(?N, 1) (?P rdf:type owl:DatatypeProperty) ->
    [max2b: (?X rb:violation error('too many values', 'Too many values on max-N property (prop, class)', ?P, ?C))
          <- (?X rdf:type ?C), countLiteralValues(?X, ?P, ?M), lessThan(?N, ?M)  ] ]

编辑您的规则会产生:

[r0: (?x es:has_intensity ?I), greaterThan(?I, 2) -> (?x es:test "true")] 
于 2016-10-25T15:02:26.887 回答