2

我有这个 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。

谁能解释一下这有什么问题?

谢谢

4

2 回答 2

4

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

有关QName 中允许的字符的概述,请参阅Turtle 语法。

顺便说一句:您的 Turtle 片段也没有声明xmls:名称空间(您将其用于文字数据类型),因此它将无法解析。

于 2012-12-25T22:08:37.270 回答
2

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

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

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

有很多parer接受传统的Turtle。Jena 的编写者是保守的——他们输出合法的 RDF 以最大化被另一个解析器读取的机会。以完整的 <..> 形式编写或使用前缀名称不会更改正在编写的 URI,只会更改其表面外观。

于 2012-12-26T21:58:01.270 回答