使用Protege中两个数据属性之间的关系定义类限制

时间:2018-10-09 09:06:52

标签: owl ontology protege

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

a)hasCPUTime

b)具有PhysicalExecutionTime

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

1 个答案:

答案 0 :(得分: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确实支持那些内置函数:

Individual views