我希望在给定isocode语言缩写的情况下检索完整的语言名称。我的SPARQL查询如下(使用硬编码语言"fr"@en
):
PREFIX dbpprop: <http://dbpedia.org/property/>
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT ?language ?isocode
WHERE
{ ?language dbpprop:iso ?isocode.
?language a dbo:Language.
FILTER (?isocode="fr"@en)
}
通过在线DBPedia endpoint运行它会产生零结果 - 尽管我希望检索“法语”。这段代码曾经在一两年前工作过(如果我没有完全弄错的话)。由于没有错误弹出,我有点不知所措。 French language DBPedia资源包含language和iso属性。
答案 0 :(得分:2)
您可以直接搜索所需的语言,而不是过滤。 E.g:
SELECT ?language WHERE {
?language dbpprop:iso "fr"@en .
?language a dbpedia-owl:Language .
}
结果
language
http://dbpedia.org/resource/Canadian_French
http://dbpedia.org/resource/New_England_French
http://dbpedia.org/resource/French_language
http://dbpedia.org/resource/Colonial_French
如果您确实希望?isocode
变量绑定到"fr"@en
,则可以使用VALUES
子句指定(如果需要,还可以使用其他子句)。 E.g:
SELECT ?language ?isocode
WHERE {
VALUES ?isocode { "fr"@en "fro"@en "fra"@en }
?language dbpprop:iso ?isocode .
?language a dbpedia-owl:Language .
}
如果你确实想要过滤,你仍然可以这样做。 E.g:
SELECT ?language ?isocode
WHERE {
?language dbpprop:iso ?isocode .
?language a dbpedia-owl:Language .
FILTER ( str(?isocode) = "fr" && langMatches( lang(?isocode), "EN" ) )
}