0

下面的查询是我的问题Getting only english property value的公认答案。用在维基数据查询服务上试试吧!它将显示澳大利亚 -> AUS 和奥地利 -> AUT 等国家的短名称。在几周前基于 Apache Jena Fuseki创建的本地 Wikidata 副本上运行相同的查询, shortName 列保持为空(见下面的屏幕截图)。

差异的原因是什么?如何修改查询以使其也适用于 Apache Jena Fuseki?

Apache Jena Fuseki 截图

    # get a list countries with the corresponding ISO code
    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
    PREFIX wd: <http://www.wikidata.org/entity/>
    PREFIX wdt: <http://www.wikidata.org/prop/direct/>
    PREFIX wikibase: <http://wikiba.se/ontology#>
    PREFIX p: <http://www.wikidata.org/prop/>
    PREFIX ps: <http://www.wikidata.org/prop/statement/>
    PREFIX pq: <http://www.wikidata.org/prop/qualifier/>
    SELECT ?country ?countryLabel ?shortName (MAX(?pop) as ?population) ?coord ?isocode
    WHERE 
    {
      # instance of country
      ?country wdt:P31 wd:Q3624078.
      OPTIONAL {
         ?country rdfs:label ?countryLabel filter (lang(?countryLabel) = "en").
       }
      OPTIONAL {
          ?country p:P1813 ?shortNameStmt. # get the short name statement
          ?shortNameStmt ps:P1813 ?shortName # the the short name value from the statement
          filter (lang(?shortName) = "en") # filter for English short names only
          filter not exists {?shortNameStmt pq:P31 wd:Q28840786} # ignore flags (aka emojis)
      }
      OPTIONAL { 
        # get the population
         # https://www.wikidata.org/wiki/Property:P1082
         ?country wdt:P1082 ?pop. 
      }
      # get the iso countryCode
      { ?country wdt:P297 ?isocode }.
      # get the coordinate
      OPTIONAL { ?country wdt:P625 ?coord }.
    } 
    GROUP BY ?country ?countryLabel ?shortName ?population ?coord ?isocode 
    ORDER BY ?countryLabel
4

1 回答 1

0

@UninformedUser 的测试查询:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX wikibase: <http://wikiba.se/ontology#>
PREFIX p: <http://www.wikidata.org/prop/>
PREFIX ps: <http://www.wikidata.org/prop/statement/>
PREFIX pq: <http://www.wikidata.org/prop/qualifier/>
SELECT ?country ?shortNameStmt ?shortName      WHERE      
{       
  VALUES ?country {wd:Q40} ?country wdt:P31 wd:Q3624078.              
  OPTIONAL {           
    ?country p:P1813 ?shortNameStmt.            
    ?shortNameStmt ps:P1813 ?shortName  filter (lang(?shortName) = "en")            
    filter not exists {?shortNameStmt pq:P31 wd:Q28840786}        
  }       
}

在处理最新的所有导入时,没有给出基于真实的 wikidata 导入的结果。完整查询也是如此。仍然很高兴知道为什么查询不适用于真实数据集。

于 2020-09-10T09:04:00.650 回答