Mat*_*nge 2 xml rdf semantic-web namespaces
据我所知,语义网由URI的三元组组成.命名空间缩写词广泛用于在日常使用中缩写它们.我认为,命名空间短号将通过简单的连接扩展为URI,例如,dc:title众所周知的dc:命名空间中的着名(被定义为http://purl.org/dc/elements/1.1/,注意最后一个字符是a /)将被扩展为,因此在语义上等于http://purl.org/dc/elements/1.1/title.
然后我找到了一些命名空间定义,这些定义在最后缺乏合理的sepraration角色.http://live.dbpedia.org/sparql?nsdecl中的一些示例
以及一些来自最常见的RDF名称空间列表:
如何将这些名称空间扩展为有效的链接数据URI?
XML中的W3C推荐命名空间定义:" 扩展名称是由命名空间名称和本地名称组成的对."Fredrik Lundh 在effbot.org上写道:"在元素树中,限定名称在Clark 中存储为通用名称表示法,它将URI和本地部分组合成一个字符串,以"{uri} local"形式给出."这可能适用于各种用例,但它不符合链接数据结构的想法的URI,不能以a开头{.
我本来以为xsd:element应该不会扩大到http://www.w3.org/2001/XMLSchemaelement在链接数据(也不到{http://www.w3.org/2001/XMLSchema}element),应该吗?如何正确实施?
来自RDF/XML语法规范(修订版) [重点补充]:
为了用XML编码图形,节点和谓词必须用XML术语表示 - 元素名称,属性名称,元素内容和属性值.RDF/XML使用XML [XML-NS]中的命名空间中定义的XML QNames来表示RDF URI引用.所有QNames都有一个名称空间名称,它是一个URI引用和一个简短的本地名称.此外,QNames可以具有短前缀或使用默认名称空间声明声明并且没有(但仍具有名称空间名称)
由QName表示的RDF URI引用是通过在QName的名称空间名称(URI引用)部分之后附加QName的本地名称部分来确定的.这用于缩短所有谓词和某些节点的RDF URI引用.标识主题和对象节点的RDF URI引用也可以存储为XML属性值.RDF文字只能是对象节点,它们将成为XML元素文本内容或XML属性值.
这是简单的连接.这是重要的结果.这意味着我可以使用
@prefix dcterms: <http://purl.org/dc/terms/>
@prefix dctermsx: <http://purl.org/dc/terms/accrual>
dcterms:accrualPolicy === http://purl.org/dc/terms/accrualPolicy
dctermsx:Policy === http://purl.org/dc/terms/accrualPolicy
dcterms:accrualPeriodicity === http://purl.org/dc/terms/accrualPeriodicity
dctermsx:Periodicity === http://purl.org/dc/terms/accrualPeriodicity
Run Code Online (Sandbox Code Playgroud)
有趣的是,RDF/XML语法规范必须定义如何解释QNames.为什么它不继承XML QName规范的含义?答案在你引用的文章中:
XML命名空间规范没有明确说明应用程序应如何处理(URI,本地部分)对.虽然大多数应用程序将它们视为两个不同的组件,但某些应用程序希望您以不同的方式组合它们
在RDF/XML中,应用程序将(URI,本地部分)对视为对URI的引用,该URI是uri和local的串联,如RDF语法文档的初始引用中所述.当然,约定是由词汇表定义的URI是这样的,即存在一个共同的命名空间,并且这些术语很容易使用该命名空间作为XML前缀来编写,所以在实践中你不会看到这种类型的命名空间错误我在上面展示了DCMI术语.
在ElementTree中,QName对应于{uri} local.这就是该应用程序如何处理(URI,本地部分)对.
由于RDF/XML序列化必须是有效的XML,因此会出现复杂情况.并不是每一个URI可以,因为有不能被表示为一个QName的URI,因为在一个QName表示为一个QName,namespace:localname有什么角色可以出现限制namespace和name.例如,http://127.0.0.1/789234你不能拥有像localhost:789234它一样好的QName ,因为localname不能以数字开头.(例如,在Jena-users邮件列表中查看此主题.)
另一个复杂或混淆源于RDF序列化不同于RDF/XML,其中一些采用表面/后缀表示法,表面上类似于XML QNames,但放宽了一些约束,因此您可能会看到前缀/后缀组合不是有效的XML QNames,但这些格式没问题.
DBpedia SPARQL端点上定义的前缀突出显示了此问题.从SPARQL标准,第4.1.1.1节前缀名称 [强调添加]:
该
PREFIX关键字将前缀标签与IRI相关联.带前缀的名称是前缀标签和本地部分,用冒号分隔":".通过连接与前缀和本地部分关联的IRI,将前缀名称映射到IRI.前缀标签或本地部分可以为空.请注意,SPARQL本地名称允许前导数字,而XML本地名称则不允许.SPARQL本地名称还允许IRI中允许的非字母数字字符通过反斜杠字符转义(例如ns:id\=123).SPARQL本地名称比CURIE具有更多的语法限制.
在这种情况下,虽然前缀像
amz => http://webservices.amazon.com/AWSECommerceService/2005-10-05
Run Code Online (Sandbox Code Playgroud)
在RDF/XML序列化中没用,因为你需要编写非法的东西,amz:#something或者amz:/something,它会在SPARQL中有用(如果可能不方便),你可以写amz:\#something和amz:\/something.