如何在SPARQL中为变量设置语言标识?
解决SPARQL中变量字面量添加语言标识的问题
你写的?object@en写法在SPARQL里不合法——只有固定字符串字面量才能直接用"内容"@en的格式加语言标识,变量不能这么操作。要把en-gb语言的标签复制为en语言,得先提取变量里的纯文本内容,再给它重新指定语言。
修正后的SPARQL代码有两种等效写法:
写法一:直接为字符串内容添加语言标签
INSERT { ?subject skos:prefLabel str(?object)@en } WHERE { ?subject skos:prefLabel ?object . FILTER (lang(?object) = "en-gb") }
写法二:使用STRLANG函数(SPARQL标准推荐写法)
INSERT { ?subject skos:prefLabel STRLANG(str(?object), "en") } WHERE { ?subject skos:prefLabel ?object . FILTER (lang(?object) = "en-gb") }
两种写法的核心逻辑一致:先用str(?object)取出en-gb标签对应的纯文本内容,再给这个内容加上en的语言标识,生成符合要求的新标签。
内容的提问来源于stack exchange,提问作者Paul Kelly
相关产品推荐
相关产品推荐

