RDF中的前缀命名空间

时间:2012-12-25 18:28:51

标签: resources rdf jena prefix

我有这个RDF语句(乌龟格式):

@prefix cd:      <http://mai.com/contactwrapper/0.1#> .

<http://mai.com/contactwrapper/0.1#malzaa@m.com>
      cd:Belongs_To "1"^^xmls:string ;
      cd:Email_Address "malzaa@m.com"^^xmls:string ;
      cd:Email_Type "WORK"^^xmls:string .

如您所见,前缀与属性(Belongs_To,Email_Address和Email_Type)一起使用,但不适用于资源名称(malzaa@m.com)。因为“http://mai.com/contactwrapper/0.1#”应该替换为cd。

有人可以解释这个错误吗?

谢谢

2 个答案:

答案 0 :(得分:4)

缩写形式通常称为 QName (代表“限定名称”)。 cd:malazaam@m.com不能用作QName的原因是@后面的.:字符。 Turtle语法不允许在QName中使用这些字符,这就是使用完整URI的原因。

有关QName中允许使用哪些字符的概述,请参阅Turtle grammar

顺便说一下:你的Turtle片段也没有声明xmls:命名空间(你用于文字数据类型),所以它将无法解析。

答案 1 :(得分:2)

正如Jeen所说,在Turtle的前缀名称中不允许使用“@”,尽管前缀名称比QNames更宽。

在RDF 1.1中,Turtle语言正在正式标准化。 “@”在前缀名称的本地部分不合法,但“\ @”是。

最新的语法是:http://www.w3.org/TR/turtle/#sec-grammar-grammar

有很多专家接受传统的海龟。 Jena编写者是保守的 - 他们输出合法的RDF以最大化其他解析器可读的机会。写完整&lt; ..&gt;表单或使用带前缀的名称不会更改正在写入的URI,只会更改它的表面外观。