ontology 中的 <owl:Ontology rdf:about="xml:base"/> 是什么意思?

What does <owl:Ontology rdf:about="xml:base"/> in an ontology mean?

当我们看到这样的语句时,

<owl:Ontology rdf:about="xml:base"/>

接近 ontology 的开头 (header),这到底是什么意思?

如果我们尝试用通俗易懂的英语阅读,这应该意味着 xml:baseOntology。但我的理解并不止于此。我特别想念 xml:base 部分。 xml:base 在 ontology 的情况下扮演什么角色?

(参考:A 语义的 网络 底漆, 第二版, 格里戈里斯·安东尼奥 和 Frank van Harmelen,第 135 页。)

<owl:Ontology> 表示您正在启动在 owl 命名空间中定义的 Ontology

rdf:about,来自 rdf 命名空间的 about 属性,应该给出一个 URI,该 URI 将给出此 XML 正在谈论的任何内容的定义。但是,在这种情况下,该值为 xml:base。这表示此 XML 架构的主题由位于 URI 的资源表示,其中检索此 xml.

如果 ontology 包含进一步的 <xml:base> 元素,那么它将覆盖 URI;我们不会查看我们刚刚检索到包含 Ontology 的 XML 文件的位置,而是查看 <xml:base> 元素中定义的 URI。

ETA:正如 Ignazio 在下面的评论中指出的那样,rdf:about="xml:base" 并不是那样工作的。即使我已经正确地解释了 Owl 的人实际上 意图 ,代码实际上 的是 about 属性是字符串 xml:base,实际上没有任何意义。

我正在阅读同一本书 (语义网入门,第二版,Grigoris Antoniou 和 Frank van Harmelen) 在学术研究方面,我认为这些描述最初出现在需要同一本书来回答这个问题,以及一些额外的解释,包括编码案例和对 Apache Jena 的文档参考,这是一个开源 ontology 应用程序构建器,可以由更广泛的用户关联,而不必是语义网或 ontology 工程领域的计算机科学专家。

  • ch3.2.4 语句三视图p66中,rdf:about属性为

    referencing an existing resource

  • 作为Apache Jena中的documented,classowl:Ontology这个人的URI是约定俗成的

    the URL, or web address, of the ontology document itself.

因此,

  • rdf:about中声明的xml:base绝对是分配给类型为owl:ontology的资源的URI。
  • 以下本体中的 URI 以相同的方式工作:
    <owl:Ontology rdf:about="xml:base"/>
    <owl:Ontology rdf:about="http://examples/base#"/>
    

不过还有一种情况:

<owl:Ontology rdf:about=""/>

空 Ontology URI 以完全不同的方式工作,这可能会导致其他不寻常的 URI 形式,例如 xml:base 在某种程度上令人困惑,如本 post 中所质疑的那样。 Apache Jena's document

the construct rdf:about="" does not indicate a resource with no URI; it is in fact a shorthand way of referencing the base URI of the document containing the ontology.

一些已发布的 RDFS/OWL reasoner 产品可以帮助我们更详细地检查 Ontology URI。在这里我们可以通过 an experimental repository:

解释上面关于 Ontology URI 的两种情况如何在 Apache Jena 中工作
// https://github.com/chigix/jena_stories/blob/b9af78e7c128a3e31f41bbfbafd06199099eb7f7/src/test/java/com/chigix/jena_stories/ontology/MetaHeaderTest.java#L52
Ontology baseOntology = model.getOntology("xml:base");
assertThat(baseOntology, notNullValue(Ontology.class));
assertThat(baseOntology.getURI(), equalTo("xml:base"));

从上面的单元测试片段中,可以通过给定的 URI xml:base 查询分配有 xml:base 的 ontology。这意味着 xml:base 这里只是一个简单的字符串,表示基础 ontology 资源的 URI。

还有:

// https://github.com/chigix/jena_stories/blob/b9af78e7c128a3e31f41bbfbafd06199099eb7f7/src/test/java/com/chigix/jena_stories/ontology/MetaHeaderTest.java#L56
model.read(RDFDataMgr.open("african-wildlife.owl"), "http://ontology.chigix.com/some#", "RDF/XML");
assertThat(model.getOntology("xml:base"), notNullValue(Ontology.class));
assertThat(model.getOntology("xml:base").getURI(), equalTo("xml:base"));
assertThat(model.getOntology("http://ontology.chigix.com/some"), nullValue());

所以即使 ontology 包含在 URL 与分配给基础 ontology 资源的 URI 不同的文档中,我们仍然使用 ontology' s URI,这里表示为xml:base,查询目标ontology.

然而,如果文档中 ontology 的 URI 为空怎么办:

// https://github.com/chigix/jena_stories/blob/b9af78e7c128a3e31f41bbfbafd06199099eb7f7/src/test/java/com/chigix/jena_stories/ontology/MetaHeaderTest.java#L69
model.read(RDFDataMgr.open("printer-ontology.owl"), "http://ontology.chigix.com/some#", "RDF/XML");
assertThat(model.getOntology("xml:base"), nullValue());
assertThat(model.getOntology("http://ontology.chigix.com/some"), notNullValue(Ontology.class));

我们可以看到:

  • 可以使用与文档的 URL
  • 相同的给定 URI 查询 ontology
  • 被质疑的xml:base不禁参考了文档中的ontology资源

综上所述,ontology中的xml:base完全只是一个普通的URI字符串,无法发挥任何特殊的神奇功能。 ontology 文档中 <owl:Ontology rdf:about="xml:base"/> 的语句是为了内务管理目的对类似元的断言进行分组,包括

comments, version control, and inclusion of other ontologies

,如ch4.2.2 Header中的例子,p116:

<owl:Ontology rdf:about="">
    <rdfs:comment> This is an ontology </rdfs:comment>
    <owl:priorVersion rdf:resource="http://..." />
    <owl:imports rdf:resource="http://..." />
    <rdfs:label>Ultraman Tiga</rdfs:label>
</owl:Ontology>

上面示例中使用的owl文档最初来自本书ch4.3示例,pp.129-138中的示例,它们可能是也可以从实验存储库访问: