函数对象属性公理 - 这里是函数语法 - 具有以下形式
FunctionalObjectProperty(P)
P 是一个对象属性表达式,它是以下之一:
- 命名对象属性 (PN)。 示例:FunctionalObjectProperty(:hasBase)
- 猫头鹰:topObjectProperty
- 猫头鹰:bottomObjectProperty
- 逆属性。 示例:FunctionalObjectProperty(ObjectInverseOf(:isBaseOf))
第一个是预期的。其他三个变体有什么用?这些似乎只会增加解析器、推理器和 API 的复杂性。 (是的,一点点。) 最后一个看起来多余,因为 OWL 有一个“InverseFunctionalObjectProperty”。谁将 topObjectProperty 或 BottomObjectProperty 声明为函数式?
我搜索了诸如geneontology.org之类的本体。到目前为止,他们只使用命名属性 (PN) 作为参数。 无论如何,OWL允许P在这里,我可能只见树木不见森林。它有什么好处?
备注:对于其他一元属性公理(例如 SymmetricObjectProperty)也可以提出同样的要求。
最佳答案
此定义在 OWL 中用于定义语言语法认为正确的内容。然而,可能有一些语言结构被广泛使用,而另一些语言结构在语法上是正确的,但用途有限。
FunctionalObjectProperty 公理的定义允许人们声明一个对象属性表达式是函数式的 — 也就是说,每个个体最多可以拥有一个指定对象属性表达式的传出连接。 1
FunctionalObjectProperty 的语法定义为:
FunctionalObjectProperty := 'FunctionalObjectProperty' '(' axiomAnnotations ObjectPropertyExpression ')'
该定义引用了ObjectPropertyExpression,其定义如下。
Object Property Expression definition
ObjectProperty := IRI
ObjectPropertyExpression := ObjectProperty | InverseObjectProperty
InverseObjectProperty := 'ObjectInverseOf' '(' ObjectProperty ')'
这基本上意味着有两种方法来定义对象属性。 第一种方法是直接将 IRI 定义为对象属性。 第二种方法是间接定义对象属性作为已定义的对象属性的逆。
以下示例可以证明差异:
Example A: FunctionalObjectProperty(:isGoodFor)
Example B: FunctionalObjectProperty(ObjectInverseOf(:isBaseOf))
示例 A 使用现有的对象属性:isGoodFor,而示例 B 使用已定义的对象属性的逆属性:isBaseOf,但未为其定义 IRI。
ObjectPropertyExpression 的语法定义包括任何对象属性 IRI,因为它不排除它。因此,TopObjectProperty 和 BottomObjectProperty 在语法上是有效的选择。 因此以下内容在语法上是有效的:
FunctionalObjectProperty(owl:topObjectProperty) FunctionalObjectProperty(owl:bottomObjectProperty)
但是 owl:topObjectProperty 和 owl:bottomObjectProperty 在 OWL2 中具有预定义的语义。因此,虽然上述语句在语法上是正确的,但使用它们并不是一个好的做法。
Definitions of TopObjectProperty and BottomObjectProperty
Owl 使用 IRI owl:topObjectProperty 和 owl:bottomObjectProperty 定义了 2 个内置对象属性。并具有预定义的语义。 IRI owl:topObjectProperty 的对象属性连接所有可能的个体对。 IRI owl:bottomObjectProperty 的对象属性不连接任何一对个体。
关于owl - 为什么FunctionalObjectProperty 采用对象属性表达式,而不仅仅是命名属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50094940/