【问题标题】:Is it possible to compare two datatype properties using <= in a OWL statement?是否可以在 OWL 语句中使用 <= 比较两个数据类型属性?
【发布时间】:2016-03-20 18:47:27
【问题描述】:

我是本体和 OWL 的新手,所以我需要一些帮助。

我有两个数据类型属性(或变量):VARmin 和 VARmax。两者都必须 >=0 和

(VARmin some float[= 0]) 和 (VARmax some float[= 0])

问题我需要比较这些变量,就像这种形式:VARmin 。我试过这个:

VARmin 一些浮点数[

但我收到此错误:“UnsupportedOperationException: Value null 对 facet 32​​ 无效”

我为此错误研究了一些可能的解决方案,并在此处获得了有关特定数据类型(例如“年”)和比较整数的形式的解释:https://mailman.stanford.edu/pipermail/p4-feedback/2007-October/000414.html 但这不是我的情况。

我再次研究,但解决方案与我的问题不匹配。谁能帮帮我,拜托!

P.S.:我正在使用 Protégé 4.0 版和 Pellet reasoner 1.5

【问题讨论】:

  • OWL 本体没有变量的概念。只是事实(三元组)和属性定义和常量。有时,您可以通过对不相交的实体不一致性进行分类来让推理引擎执行计算。但在大多数情况下,使用 SPARQL 进行计算比较更合适,有时也是唯一的解决方案。
  • 如果变量指的是 SWRL 变量,则有用于比较变量的内置函数。请参阅 SWRL 规范:w3.org/Submission/SWRL/#8
  • 一般来说,OWL 公理需要是“树形的”,以及你所要求的(一种要求 X 值小于或等于 Y 值的个体的类表达式) 不是“树形”,因为您想将“具有 X 值”分支的叶子与“具有 Y 值”分支的叶子进行比较。您必须使用 SWRL 规则来执行此操作。
  • 最近有一个问题有一些类似的方面。答案和评论可能会有所帮助。 How to define a class that does not have two equivalent predicate objects?
  • 非常感谢@JoshuaTaylor、scotthenninger 和 Ignazio!对不起时间!我正忙于项目的另一部分。但事实上,我可以使用 SWRL 解决我的问题。之后我会在这里发布解决方案。

标签: owl ontology protege4


【解决方案1】:

为了解决这个问题,我使用 SWRL 创建了以下规则:

SomeClass(?someclass), VARmin(?someclass, ?varmin), greaterThanOrEqual(?varmin, 0.0), lessThanOrEqual(?varmin, 1.0), VARmax(?someclass, ?varmax), greaterThanOrEqual(?varmax, 0.0) , lessThanOrEqual(?varmax, 1.0), lessThanOrEqual(?varmin, ?varmax) -> 比较OK(?someclass)

上瘾了,我发现这个答案 [1] 对我创建析取词以否定上述规则指定的每个案例有很大帮助,例如:

SomeClass(?someclass), VARmin(?someclass, ?varmin), lessThan(?varmin, 0.0) -> ComparisonNotOK(?someclass)

[1]Disjunction inside SWRL rule

【讨论】:

    猜你喜欢
    • 2015-10-08
    • 2022-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-23
    • 2018-03-29
    • 2022-11-18
    相关资源
    最近更新 更多