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



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

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

在本体的开头(头),这到底意味着什么?

如果我们试着用通俗的英语读,这应该意味着xml:baseOntology。但我的理解并没有超出这个范围。我特别想念xml:base部分。在本体论的情况下,xml:base扮演什么角色?

(参考:A语义网状物底漆,第二版,Grigoris Antoniou和Frank van Harmelen,第135页)

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

rdf:about,来自rdf命名空间的about属性,应该给出一个URI,该URI将给出该XML所说内容的定义。但是,在这种情况下,该值为xml:base。这意味着该XML模式的主题由位于检索该XML的URI处的资源表示

如果本体包含另一个<xml:base>元素,那么它将覆盖URI;我们不查看刚刚在哪里检索到这个包含本体的XML文件,而是查看<xml:base>元素中定义的URI。

埃塔:正如伊格纳齐奥在下面的评论中指出的,rdf:about="xml:base"并不是真的那样工作。即使我已经正确地解释了Owl的人实际上想要的东西,代码实际上说的about属性是字符串xml:base,这实际上没有任何意义。

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

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

    引用现有资源

  • 正如ApacheJena中所记载的那样,owl:Ontology类的这个个体的URI按照惯例

    本体文档本身的URL或web地址。

因此,

  • 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=""/>

空的本体URI以完全不同的方式工作,这可能会导致其他不寻常的URI形式,如xml:base,在某种程度上令人困惑,正如本文所质疑的那样。Apache Jena的文件显示

构造rdf:about=""不指示没有URI的资源;它实际上是引用包含本体的文档的基URI的一种简写方式。

一些发布的RDFS/OWL推理器产品可以帮助我们更详细地检查本体URI。在这里,我们可以通过一个实验存储库来解释上面关于本体URI的两个案例是如何在ApacheJena中工作的:

// 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"));

从上面的单元测试片段中,可以通过给定的URIxml:base来查询分配有xml:base的本体。这意味着这里的xml:base只是一个简单的字符串,表示底层本体资源的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());

因此,即使一个本体包含在一个URL与底层本体资源上分配的URI不同的文档中,我们仍然使用本体的URI,这里称为xml:base,来查询目标本体。

但是,如果文档中的本体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来查询本体
  • 被查询的CCD_ 28会不由自主地引用文档中的本体资源

结论是,本体中的xml:base实际上只是一个普通的URI字符串,不能发挥任何特殊的神奇功能。<owl:Ontology rdf:about="xml:base"/>在本体文档中的声明是为了内务管理目的对类元断言进行分组,包括

注释、版本控制和包含其他本体

,如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示例,第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

最新更新