【问题标题】:Jena Reasoning and Rule SyntaxJena 推理和规则语法
【发布时间】:2016-10-21 05:34:24
【问题描述】:

我对 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")]

【问题讨论】:

    标签: comparison jena jena-rules


    【解决方案1】:

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

    正如在 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")] 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多