使用SPARQL查询检索标签名称

时间:2018-02-20 11:26:22

标签: label sparql wikidata

我遇到了维基数据查询服务的问题。 https://query.wikidata.org/ 我想要做的是检索所有拥有GTAA ID的人的名单。

?q wdt:P1741 ?GTAA_ID.

对于这些人,我想检索以下可选信息:

OPTIONAL{ ?q p:P166 ?award_received
OPTIONAL{ ?award_received pq:P585 ?point_in_time. }
OPTIONAL{ ?award_received pq:P1686 ?for_work.   }
  • 获得了奖项
  • 他们何时获得此奖项
  • 他们获得此奖项的工作

截至目前,我的查询大多有效。但是,例如,在'awards_received'列中,它显示以下文本:

WDS:Q76343-ffa729dc-4D10-eb15-3a41-5fa6bf7ed80a

单击此按钮会将我带到维基数据页面,该页面涉及获奖者,而不是奖项本身的标题。 我想要做的是检索收到的奖励的标题,而不是链接到标题的接收者。

我的代码如下:

SELECT ?GTAA_ID ?award_received ?point_in_time ?for_workLabel
   WHERE
   {
       ?q wdt:P1741 ?GTAA_ID.
       OPTIONAL{ ?q p:P166 ?award_received
       OPTIONAL{ ?award_received pq:P585 ?point_in_time. }
       OPTIONAL{ ?award_received pq:P1686 ?for_work.   }
       . }
       SERVICE wikibase:label { bd:serviceParam wikibase:language "     
       [AUTO_LANGUAGE]". }
   }

1 个答案:

答案 0 :(得分:3)

实际奖励作为声明的属性ps:P166给出:

SELECT ?GTAA_ID ?award ?awardLabel ?point_in_time ?for_workLabel {
  ?q wdt:P1741 ?GTAA_ID.
  OPTIONAL {
    ?q p:P166 ?award_received .
    ?award_received ps:P166 ?award # Here
    OPTIONAL { ?award_received pq:P585 ?point_in_time. }
    OPTIONAL { ?award_received pq:P1686 ?for_work. }
  }
  SERVICE wikibase:label {
    bd:serviceParam wikibase:language "[AUTO_LANGUAGE]".
  }
}

您可以使用DESCRIBE查询获取资源的说明,例如:

DESCRIBE wds:Q78217-3877ABD6-239F-47DA-A8BD-8035D3CBAA7A