在 OWL 2 的规范中,关于关键公理的部分指出:
关键公理的语义是特定的,因为这些公理仅适用于通过名称显式引入本体中的个体,而不适用于未命名的个体(即存在量化暗示其存在的个体)。这使得关键公理等效于 DL 安全规则的变体。因此,关键公理通常不会影响基于类的推理,例如包含层次结构的计算,但它们将在回答有关个人的查询中发挥作用。
然后,它继续展示一组公理的示例,这些公理显然需要一个结论,但由于该规则,规范无法识别。
这个决定背后的原因是什么?
在 OWL 2 的规范中,关于关键公理的部分指出:
关键公理的语义是特定的,因为这些公理仅适用于通过名称显式引入本体中的个体,而不适用于未命名的个体(即存在量化暗示其存在的个体)。这使得关键公理等效于 DL 安全规则的变体。因此,关键公理通常不会影响基于类的推理,例如包含层次结构的计算,但它们将在回答有关个人的查询中发挥作用。
然后,它继续展示一组公理的示例,这些公理显然需要一个结论,但由于该规则,规范无法识别。
这个决定背后的原因是什么?
Sec. 中给出了解释。OWL 2中的 3.1.4 :OWL 的下一步:
然而,使用键扩展基于 DL 的语言(例如 OWL 2)会带来理论和实际问题[23]。因此,工作组决定包括一种更受限制的密钥变体,这种变体在实践中很有用,而且相对容易实现,通常称为简易密钥。
所以他们使用了一种受限形式的密钥,称为简单密钥,它有一些限制,但不会增加推理的最坏情况复杂性:
因此,简单键的主要缺点是它们只能产生关于显式数据的结果,因此主要与查询回答相关,而键 [23] 的一般变体也会影响类之间的包含层次结构。简单密钥的主要好处是,将它们添加到 OWL 2 不会增加推理的最坏情况复杂性,并且在现有推理器中实现它们相对简单。
总之,要获得有利的计算复杂度。
OWL 2 虽然具有表现力,但不能表达任意规则。例如,具有两个变量的规则头不能表示为子类公理,或者包含类表达式的规则体不能用子属性公理来描述。为了扩展 OWL 2 的表达能力,可以使用 SWRL 规则;但是,这些可能会使本体无法确定。将 SWRL 规则限制为已知个体,以便每个变量出现在规则主体中的非 DL 原子中,即采用 DL 安全规则,产生了一种非常有表现力但可判定的形式主义。