当我们看到像
这样的陈述时<owl:Ontology rdf:about="xml:base"/>
在本体的开头(标题)附近,究竟是什么意思?
如果我们尝试用简单的英语阅读,那么这应该是xml:base
和Ontology
之类的内容。但我的理解并没有超越这一点。我特别想念了
xml:base
部分。在本体论的情况下,xml:base
扮演什么角色?
(参考:A 语义 卷筒纸 底漆, 第二版, Grigoris Antoniou 和 Frank van Harmelen,第135页。)
答案 0 :(得分:3)
<owl:Ontology>
表示您正在Ontology
命名空间中定义的owl
。
rdf:about
,来自about
命名空间的rdf
属性,应该提供一个URI,该URI将给出XML正在讨论的内容的定义。但是,在这种情况下,值为xml:base
。这表示此XML模式的主题由位于URI 的资源表示,其中检索了此xml 。
如果本体要包含另一个<xml:base>
元素,则会覆盖URI;而不是查看我们刚刚检索到包含Ontology的XML文件的位置,而是查看<xml:base>
元素中定义的URI。
ETA:正如Ignazio在下面的评论中指出的那样,rdf:about="xml:base"
并没有真正起作用。即使我已经正确地解释了Owl的人实际上想要的内容,代码实际上说的是about
属性是字符串{{ 1}},这并不意味着什么。
答案 1 :(得分:1)
我正在学术研究中阅读同一本书(《语义网入门》第二版,Grigorris Antoniou和Frank van Harmelen),我认为最初出现在同一本书中的描述是必要的回答这个问题,以及一些额外的解释,包括编码案例和对Apache Jena的文档引用,documented是一种开放源代码本体应用程序构建器,可以由更广泛的用户关联,这些用户不必是语义网或本体工程中的计算机科学专家
rdf:about
属性为
引用现有资源
owl:Ontology
的个人的URI按照惯例是
本体文档本身的URL或网址。
因此
xml:base
中声明的rdf:about
绝对是分配给类型为owl:ontology
的资源的URI。<owl:Ontology rdf:about="xml:base"/>
<owl:Ontology rdf:about="http://examples/base#"/>
但是还有另一种情况:
<owl:Ontology rdf:about=""/>
空的Ontology URI完全以不同的方式工作,这可能导致其他异常的URI形式,例如xml:base
令人困惑,如本文所质疑。
an experimental repository说
构造
rdf:about=""
不会不表示没有URI的资源;实际上,这是引用包含本体的文档的基本URI 的简便方法。
一些已发布的RDFS / OWL推理机产品可以帮助我们更详细地检查本体URI。在这里,我们可以通过https://github.com/chigix/jena_stories/blob/master/src/test/resources/african-wildlife.owl来解释上述关于本体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
的本体。这意味着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));
我们可以看到:
xml:base
不能帮助参考文档中的本体资源结论是,本体中的xml:base
仅仅是一个普通的URI字符串,无法发挥任何特殊的魔术功能。
本体文档中的<owl:Ontology rdf:about="xml:base"/>
语句是为了整理工作而对类似元的声明进行分组,包括
评论,版本控制和其他本体的包含
,如 ch4.2.2标头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 中的示例,也可以从实验存储库中访问它们: / p>
african-wildlife.owl
:https://github.com/chigix/jena_stories/blob/master/src/test/resources/printer-ontology.owl printer-ontology.owl
: