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:base
和 Ontology
。但我的理解并不止于此。我特别想念
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,class
owl: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中的示例,它们可能是也可以从实验存储库访问:
african-wildlife.owl
: https://github.com/chigix/jena_stories/blob/master/src/test/resources/african-wildlife.owl
printer-ontology.owl
: https://github.com/chigix/jena_stories/blob/master/src/test/resources/printer-ontology.owl
当我们看到这样的语句时,
<owl:Ontology rdf:about="xml:base"/>
接近 ontology 的开头 (header),这到底是什么意思?
如果我们尝试用通俗易懂的英语阅读,这应该意味着 xml:base
和 Ontology
。但我的理解并不止于此。我特别想念
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,class
owl: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中的示例,它们可能是也可以从实验存储库访问:
african-wildlife.owl
: https://github.com/chigix/jena_stories/blob/master/src/test/resources/african-wildlife.owlprinter-ontology.owl
: https://github.com/chigix/jena_stories/blob/master/src/test/resources/printer-ontology.owl