0

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

我有两个数据类型属性(或变量):VARmin 和 VARmax。两者都必须 >=0 和 <=1。这个限制,我设法创建了,没关系。我这样做了:

(VARmin some float[<= 1, >= 0]) 和 (VARmax some float[<= 1, >= 0])

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

VARmin 一些浮点数[<=" 'VARmax' "^^float]

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

我研究了一些可能的解决方案来解决这个错误,我得到了关于特定数据类型的解释,比如“年”和比较整数的表格:https://mailman.stanford.edu/pipermail/p4-feedback/2007-October/000414。 html 但这不是我的情况。

我再次研究,但解决方案与我的问题不匹配。任何人都可以帮助我,拜托!

PS:我正在使用 Protégé 4.0 版和 Pellet reasoner 1.5

4

1 回答 1

0

为了解决这个问题,我使用 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] SWRL 规则内的析取

于 2016-04-08T20:48:45.333 回答