owl - 为什么FunctionalObjectProperty 采用对象属性表达式,而不仅仅是命名属性?

标签 owl ontology

函数对象属性公理 - 这里是函数语法 - 具有以下形式

FunctionalObjectProperty(P)

P 是一个对象属性表达式,它是以下之一:

  • 命名对象属性 (PN)。 示例:FunctionalObjectProperty(:hasBase)
  • 猫头鹰:topObjectProperty
  • 猫头鹰:bottomObjectProperty
  • 逆属性。 示例:FunctionalObjectProperty(ObjectInverseOf(:isBaseOf))

第一个是预期的。其他三个变体有什么用?这些似乎只会增加解析器、推理器和 API 的复杂性。 (是的,一点点。) 最后一个看起来多余,因为 OWL 有一个“InverseFunctionalObjectProperty”。谁将 topObjectProperty 或 BottomObjectProperty 声明为函数式?

我搜索了诸如geneontology.org之类的本体。到目前为止,他们只使用命名属性 (PN) 作为参数。 无论如何,OWL允许P在这里,我可能只见树木不见森林。它有什么好处?

备注:对于其他一元属性公理(例如 SymmetricObjectProperty)也可以提出同样的要求。

参见:https://www.w3.org/2007/OWL/refcard

最佳答案

此定义在 OWL 中用于定义语言语法认为正确的内容。然而,可能有一些语言结构被广泛使用,而另一些语言结构在语法上是正确的,但用途有限。

FunctionalObjectProperty 公理的定义允许人们声明一个对象属性表达式是函数式的 — 也就是说,每个个体最多可以拥有一个指定对象属性表达式的传出连接。 1

FunctionalObjectProperty 的语法定义为:

Functional Object Properties:

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/

相关文章:

sparql - 在 JENA 中运行简单 SPARQL 查询时出现 NoSuchMethod 异常

owl - rdfs :domain and rdfs:range mean? 是什么意思

owl - 猫头鹰成员 :Class versus owl:NamedIndividual

owl - 在 protege 中命名猫头鹰本体

SPARQL 查询具有相同属性的个体

python - 如何使用 rdflib 实例化本体?

type-inference - 有限制的 OWL 类型推断

owl - Protege 4.3中不提供父类(super class)头

java - Protégé OWL API 编程

annotations - 如何在 Protege 中添加图像