SPARQL更新:语言标记中不允许下划线
问题描述:
我试图使用blazegraph工作台的“更新”选项卡插入数据到blazegraph中。以下是示例代码片段:SPARQL更新:语言标记中不允许下划线
INSERT DATA
{
ns:MyNode ns:hasValue "MyValue"@en_us
}
我使用@符号指定语言标记。然而,它抛出以下异常:
org.openrdf.query.MalformedQueryException:在第8行词汇错误, 柱49遇到: “U”(117),后: “_”
它似乎不允许将下划线作为语言标记的一部分。如果试试'en'就可以。
这是为什么?在这里强调一个特殊字符?如果是这样,那么逃避它的方法是什么?
答
语言标记的语法由RFC定义,现在在RFC5646中进行了修订。语言标签的注册由IANA控制。
分标签由“-
”分隔;只有A-Z,0-9
在子标签中是合法的。
当被采纳用于RDF语法(N3,SPARQL,Turtle等)时,采用的语法模式是一种折衷的语法,与RFC的弱匹配。没有考虑所有的细节。子标签分隔符是“-
”。语言标签中不允许使用“_
”。