如何从维基数据中检索雨果获奖者?

时间:2017-02-11 03:13:57

标签: sparql wikidata

我是SPARQL和维基数据的新手,我正在尝试为雨果奖获奖者检索以下内容:

  • 工作标题
  • 作者
  • 年度获胜

我发现这非常困难。

我开始查询链接类型为“赢了”的最佳小说链接的所有元组。

SELECT DISTINCT ?winner WHERE {
  # P166: Award Recieved By
  # Q103360: Hugo Award for Best Novel
  ?winner ps:P1346 wd:Q255032.

  SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}

这样可行,但是当我从获胜者添加标题链接时,没有数据:

SELECT DISTINCT ?winner WHERE {
  ?winner ps:P1346 wd:Q255032.

  OPTIONAL {
    # P1476: Title
    ?winner wdt:P1476 ?title.
  }
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}

我做错了什么?我尝试了不同的命名空间,但没有多少理解,也无济于事。

在Hugo获奖者的页面上,有一部分获奖者:https://www.wikidata.org/wiki/Q255032#P1346

这是如何产生的?我试图查询该属性并找回人们的链接(我认为):

SELECT DISTINCT ?winner ?winnerLabel ?for WHERE {
  # P166: winner
  # Q103360: Hugo Award for Best Novel
  wd:Q255032 wdt:P1346 ?winner.

  SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}

1 个答案:

答案 0 :(得分:2)

对于谓词,您应该使用wdt:代替ps:

请查看this example

SELECT DISTINCT ?item ?itemLabel ?AuthorLabel ?year WHERE {  
  ?item wdt:P166 wd:Q255032.
  ?item wdt:P50 ?Author .  
  ?item wdt:P577 ?year .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }    
} 

PS。我使用的是出版物,而不是获奖日期。

更新:请参阅this answer

  

获奖的时间点属性是维基达   调用限定符。

this is query

SELECT ?item ?itemLabel ?authorLabel ?publicationDate ?dateOfAwardReceived WHERE {
  ?item wdt:P50 ?author .  
  ?item wdt:P577 ?publicationDate .
  ?item p:P166 ?awardReceivedStatement .
  ?awardReceivedStatement ps:P166 wd:Q255032 .
  ?awardReceivedStatement pq:P585 ?dateOfAwardReceived .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }    
}