我正在Protege v5.2中构建一个简单的软件本体,并且如果它们的CPU时间大于其物理执行时间的80%,则尝试将一些软件(使用推理程序插件)归类为CPU密集型。 因此,每个人的以下数据属性都填充有浮点值:
a)hasCPUTime
b)具有PhysicalExecutionTime
我创建了一个类CPUIntensive,我想添加一个限制,即hasCPUTime> 0.8 * hasPhysicalExecutionTime的个人属于此类。 可以在Protege中完成吗?
答案 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确实支持那些内置函数: