【问题标题】:SPARQL filter lang 'en' gives other languagesSPARQL 过滤器 lang 'en' 提供其他语言
【发布时间】:2012-09-04 14:53:36
【问题描述】:

以下 SPARQL 查询没有得到我想要的结果,因为它们使用的是英语以外的其他语言,无论 filter lang 'en' 是什么(请参阅查询中的过滤器)。

查询结果:

"Никола́й Ива́нович Буха́рин"@en    "Никола́й Буха́рин"@en  "Nikolai Bukharin"@en
"Gamal Abdel Nasser Hussein"@en     "جمال عبد الناصر"@en    "Gamal Abdel Nasser"@en

我查看了DBpedia页面,看到有英文版的名字,但是我不明白为什么过滤器不起作用!!!

有人可以帮我吗?

PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbpedia: <http://dbpedia.org/property/>
SELECT DISTINCT ?person ?birthname ?nameExact ?label
where {

     ?person rdf:type dbpedia-owl:Person .
     ?person rdfs:label ?label .
     OPTIONAL { ?person dbpedia-owl:birthName ?birthname . }
     OPTIONAL { ?person dbpprop:name ?nameExact . }

     FILTER (lang(?birthname) = 'en')
     FILTER (lang(?label) = 'en')
     FILTER (lang(?nameExact) = 'en')

}
LIMIT 300

【问题讨论】:

    标签: sparql dbpedia


    【解决方案1】:

    注意,前缀必须在声明和查询中使用相同的前缀(dbo -> dbo,而不是dbo -> dbpedia-owl

    PREFIX dbo: <http://dbpedia.org/ontology/>
    PREFIX dbp: <http://dbpedia.org/property/>
    
    SELECT DISTINCT ?person ?birthname ?nameExact ?label
    where {
    
         ?person rdf:type dbo:Person .
         ?person rdfs:label ?label .
         OPTIONAL { ?person dbo:birthName ?birthname . }
         OPTIONAL { ?person dbp:name ?nameExact . }
    
         FILTER (lang(?birthname) = 'en')
         FILTER (lang(?label) = 'en')
         FILTER (lang(?nameExact) = 'en')
    
    }
    
    LIMIT 300
    

    【讨论】:

      【解决方案2】:

      语言标签是数据库中的注释。您的过滤器工作正常。数据库中的某些值使用en 注释,即使它们位于不同的脚本中。您需要编写自己的逻辑来选择最合适的属性。我可能只是使用rdfs:label 属性并切断括号中的任何内容(如"Black Hawk (Sauk leader)"@en)。这似乎提供了不错的结果。

      还请注意,您需要将 ?birthname?nameExactFILTERs 放入各自的 OPTIONAL 块中,否则它们最终会删除任何不匹配的匹配项具有可选属性。

      【讨论】:

      • @Funmatica 如果这个答案对你有用,你应该accept it
      猜你喜欢
      • 1970-01-01
      • 2011-03-24
      • 2016-10-29
      • 2021-02-20
      • 1970-01-01
      • 2021-08-25
      • 1970-01-01
      • 2011-03-11
      • 1970-01-01
      相关资源
      最近更新 更多