【发布时间】:2020-05-21 03:46:06
【问题描述】:
我目前正在研究一个 SPARQL 本体定义,它是 XML 格式的——我对此很模糊。
我熟悉namespacing 的概念。即这样的 XML 节点:
<rdf:Description rdf:about="...">
<rdf:type rdf:resource="..."/>
<rdf:type rdf:resource="..."/>
<rdfs:domain rdf:resource="..."/>
<rdfs:range rdf:resource="..."/>
</rdf:Description>
正在引用在 XML 文档根节点中定义的 rdf 和 rdfs 命名空间:
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
然后我明白,这向任何 XML 解析应用程序表明该节点是有效的:
<Description about="...">
<type resource="..."/>
<type resource="..."/>
<domain resource="..."/>
<range resource="..."/>
</Description>
使用标签(Description、type、domain 和 range)以及标签属性(about 和 resource)在解析 rdf XML 的上下文中是唯一的.我猜解析器需要规则 - 但这些标签永远不会与同名但为不同目的定义的标签混淆。即xmlns="http://finanacial-instruments.com/xmlns",在不同的上下文中使用相同名称的标签(如果这没有意义,请告诉我)。
问题
在我正在查看的这个特定 XML 文档中,根节点本身就是命名空间:
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
xmlns="http://meta.icos-cp.eu/ontologies/cpmeta/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
即根节点是<rdf:RDF ...>。从我的角度来看,这并不重要,因为我已经知道它是一个 RDF 文档。但是有一个命名空间的根节点有什么意义呢?这个命名空间是在哪里定义的呢?
============== 编辑
看看下面的答案,这个链接:http://www.jclark.com/xml/xmlns.htm 帮助了我。
它包括以下内容:
<cars:part xmlns:cars="http://www.cars.com/xml"/>
maps to
<{http://www.cars.com/xml}part/>
我没有意识到命名空间也适用于指定命名空间的标签。
【问题讨论】: