SPARQL查询:如何使用wikiPageDisambiguates进行重定向

时间:2015-05-16 14:34:24

标签: sparql dbpedia

我正在尝试检索给定实体名称的缩略图链接。我当前的查询如下所示,适用于大多数情况。

select ?value { 
     <http://dbpedia.org/resource/Angela_Merkel> dbpedia-owl:thumbnail ?value 
}

但是,对于某些情况,例如“CDU”,它会失败,因为该实体是不明确的。请参阅此Example in the SPARQL Explorer

在这些情况下,我想返回第一个wikiPageDisambiguates条目的缩略图。因此,对于“CDU”,它将是this页面的缩略图。有人可以告诉我如何在SPARQL中执行此操作吗?

1 个答案:

答案 0 :(得分:0)

  

在这些情况下,我想返回第一个wikiPageDisambiguates条目的缩略图。因此,对于“CDU”,它将是此页面的缩略图。有人可以告诉我如何在SPARQL中执行此操作吗?

这些没有订单。任何表示都必须将它们按某种顺序排列,但它们实际上并未在底层RDF中排序。您可以检索任意一个,但不能“检索第一个”。例如,查看select * where { dbpedia:CDU ?p ?o }的结果。有一堆消歧链接。现在,您可以按照这些链接(如果有)来获取缩略图:

select ?thumbnail where {
  dbpedia:CDU dbpedia-owl:wikiPageDisambiguates?/dbpedia-owl:thumbnail ?thumbnail
}

SPARQL results

属性路径 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

SPARQL results