我正在尝试检索给定实体名称的缩略图链接。我当前的查询如下所示,适用于大多数情况。
select ?value {
<http://dbpedia.org/resource/Angela_Merkel> dbpedia-owl:thumbnail ?value
}
但是,对于某些情况,例如“CDU”,它会失败,因为该实体是不明确的。请参阅此Example in the SPARQL Explorer。
在这些情况下,我想返回第一个wikiPageDisambiguates条目的缩略图。因此,对于“CDU”,它将是this页面的缩略图。有人可以告诉我如何在SPARQL中执行此操作吗?
答案 0 :(得分:0)
在这些情况下,我想返回第一个wikiPageDisambiguates条目的缩略图。因此,对于“CDU”,它将是此页面的缩略图。有人可以告诉我如何在SPARQL中执行此操作吗?
这些没有订单。任何表示都必须将它们按某种顺序排列,但它们实际上并未在底层RDF中排序。您可以检索任意一个,但不能“检索第一个”。例如,查看select * where { dbpedia:CDU ?p ?o }的结果。有一堆消歧链接。现在,您可以按照这些链接(如果有)来获取缩略图:
select ?thumbnail where {
dbpedia:CDU dbpedia-owl:wikiPageDisambiguates?/dbpedia-owl:thumbnail ?thumbnail
}
属性路径 dbpedia-owl:wikiPageDisambiguates?/ dbpedia-owl:thumbnail 在Wiki页面消除歧义属性后使用问号。这意味着该属性可以出现零次或一次。然后必须跟着 dbpedia-owl:thumbnail 链接。这意味着,如果dbpedia:CDU具有缩略图属性,您将获得它,或者如果它具有包含缩略图的消歧,那么您将获得该属性。
如果你确实想要强加一些订单,你可以这样做,但你必须确定它应该是什么。您可以使用按排序来指定排序,并使用限制来指定您只想要第一个。例如,你可以这样做:
select ?thumbnail where {
dbpedia:CDU dbpedia-owl:wikiPageDisambiguates? ?cdu .
?cdu dbpedia-owl:thumbnail ?thumbnail ;
rdfs:label ?label
}
order by ?label
limit 1