1

我正在尝试使用 blazegraph 工作台的“更新”选项卡将数据插入到 blazegraph 中。下面是一个示例代码片段:

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

我用@ 符号指定语言标签。但是,它会引发以下异常:

org.openrdf.query.MalformedQueryException:第 8 行第 49 列出现词汇错误。遇到:“u”(117),之后:“_”

似乎它不允许将下划线作为语言标记的一部分。如果尝试仅使用“en”,则效果很好。

为什么呢?下划线是这里的特殊字符吗?如果是这样,有什么办法可以逃脱呢?

4

1 回答 1

3

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

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

当采用 RDF 语法(N3、SPARQL、Turtle 等)时,采用的语法模式是一种与 RFC 弱匹配的折衷语法。 '@' [a-zA-Z]+ ('-' [a-zA-Z0-9]+)*不考虑所有细节。子标签分隔符是“ -”。_语言标签中不允许使用“ ”。

于 2017-11-17T23:05:47.323 回答