我有这个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。
有人可以解释这个错误吗?
谢谢
答案 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,只会更改它的表面外观。