选择具有特定ISO代码的语言

时间:2013-08-12 18:04:14

标签: sparql dbpedia

我希望在给定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属性。

1 个答案:

答案 0 :(得分:2)

您可以直接搜索所需的语言,而不是过滤。 E.g:

SELECT ?language WHERE {
  ?language dbpprop:iso "fr"@en .
  ?language a dbpedia-owl:Language .
}

SPARQL results

结果

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 .
}

SPARQL results

如果你确实想要过滤,你仍然可以这样做。 E.g:

SELECT ?language ?isocode
WHERE {
  ?language dbpprop:iso ?isocode .
  ?language a dbpedia-owl:Language .
  FILTER ( str(?isocode) = "fr" && langMatches( lang(?isocode), "EN" ) )
}

SPARQL results