SPARQL select 具有给定语言标记的文字 When Applicable

SPARQL select literals with a given language tag When Applicable

我正在寻找一个查询,如果适用,它会选择用英语编写的文字。我所说的适用是指如果请求的文字是字符串而不是数字。

function (String p){
...
query= "select distinct ?o where {

    <http://dbpedia.org/resource/Elizabeth:_The_Golden_Age> ?p ?t. 
    FILTER(langMatches(lang(?t), "EN"))

} 
LIMIT 100";
}

问题是如果 pdbo:runtime 将不会返回任何结果,因为数字没有附加语言标签.有没有办法说有没有语言标签,选英文的。

您可以使用像

这样的过滤器
filter (lang(?var) = "" || langMatches(lang(?var), "en"))

如果文字没有语言类型,你会返回“”,但如果有,那么它必须匹配 "en"。如果需要,可以使用数据类型函数获取文字的数据类型,从而对数据类型添加更多检查。