2017-11-17 90 views
1

我试图使用blazegraph工作台的“更新”选项卡插入数据到blazegraph中。以下是示例代码片段:SPARQL更新:语言标记中不允许下划线

INSERT DATA 
{ 
    ns:MyNode ns:hasValue "MyValue"@en_us 
} 

我使用@符号指定语言标记。然而,它抛出以下异常:

org.openrdf.query.MalformedQueryException:在第8行词汇错误, 柱49遇到: “U”(117),后: “_”

它似乎不允许将下划线作为语言标记的一部分。如果试试'en'就可以。

这是为什么?在这里强调一个特殊字符?如果是这样,那么逃避它的方法是什么?

回答

3

语言标记的语法由RFC定义,现在在RFC5646中进行了修订。语言标签的注册由IANA控制。

分标签由“-”分隔;只有A-Z,0-9在子标签中是合法的。

当被采纳用于RDF语法(N3,SPARQL,Turtle等)时,采用的语法模式是一种折衷的语法,与RFC的弱匹配。没有考虑所有的细节。子标签分隔符是“-”。语言标签中不允许使用“_”。