我对Jena API有疑问。
我写了一些完美的规则,但有一件事我还有问题。我希望你能帮助我。
比较两个整数
在我的规则中,我需要比较像#34; 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")]
答案 0 :(得分:2)
您可能遇到的主要问题是您没有使用已知的内置版本。内置函数区分大小写。
如Jena的owl-fb.rules
所示,您打算使用的内置版本为greaterThan
,而不是GreaterThan
。使用内置(来自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")]