【问题标题】:Selecting languages with specific ISO code选择具有特定 ISO 代码的语言
【发布时间】:2013-08-12 18:04:14
【问题描述】:

我想检索给定 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 属性。

【问题讨论】:

    标签: sparql dbpedia


    【解决方案1】:

    您可以直接搜索您想要的语言,而不是过滤。例如:

    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 子句来指定(如果需要,也可以使用其他子句)。例如:

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

    SPARQL results

    如果您确实想要过滤,您仍然可以这样做。例如:

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

    SPARQL results

    【讨论】:

    • 非常感谢!你的链接对我有用。别管我刚刚写的,一切正常!
    • @Claudia 很高兴听到这个消息!如果它回答了您的问题,请考虑 accepting it 让其他用户知道它有效。
    猜你喜欢
    • 2021-10-16
    • 2011-07-06
    • 2015-06-20
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    • 2013-05-03
    相关资源
    最近更新 更多