1

我正在 Protege v5.2 中构建一个简单的软件本体,如果它们的 CPU 时间大于其物理执行时间的 80%,我正在尝试将软件(使用推理器插件)分类为 CPU 密集型。出于这个原因,每个人都有以下填充了浮点值的数据属性:

a) 有CPU时间

b) hasPhysicalExecutionTime

我创建了一个类 CPUIntensive,我想添加一个限制,即 hasCPUTime > 0.8 * hasPhysicalExecutionTime 的个人属于此类。这可以在 Protege 中完成吗?

4

1 回答 1

2

OWL 2 不允许算术计算,例如乘法(尽管可以使用数据范围进行某种比较)。

您需要带有内置函数的 SWRL:

hasCPUTime (?ind, ?cpu) ^
hasPhysicalTime (?ind, ?phy) ^
swrlb:greaterThan (?cpu, ?mul) ^
swrlb:multiply (?mul, 0.8, ?phy)
 -> CPUIntensive(?ind)

如果第swrlb:multiply一个参数等于第二个参数通过最后一个参数的算术乘积,则满足内置函数,如果第一个参数未绑定,则将其绑定到它们的算术乘积,就像Mul is 0.8*Phy.Prolog 中的工作一样。

Pellet 确实支持这些内置函数:

个人观点

于 2018-10-09T10:57:29.503 回答