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

SPARQL query: How to use wikiPageDisambiguates for redirect

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

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

但是,对于某些情况,例如 "CDU",它会失败,因为实体不明确。看到这个 Example in the SPARQL Explorer.

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

In these cases I would like to return the thumbnail of the first wikiPageDisambiguates entry. So, for "CDU" it would be the thumbnail of this page. Can somebody tell me how to do this in SPARQL?

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

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

SPARQL results

属性 路径 dbpedia-owl:wikiPageDisambiguates?/dbpedia-owl:thumbnail 在 wiki 页面后使用问号消歧属性。这意味着 属性 可以出现零次或一次。然后它后面必须跟一个 dbpedia-owl:thumbnail link。这意味着如果 dbpedia:CDU 有一个缩略图 属性,你就会得到它,或者如果它有一个带有缩略图的消歧义,你就会得到那个。

如果您确实想强加一些顺序,您可以这样做,但您必须确定它应该是什么。您可以使用 order by 指定顺序,并使用 limit 指定您只想要第一个。例如,您可以这样做:

select ?thumbnail where {
  dbpedia:CDU dbpedia-owl:wikiPageDisambiguates? ?cdu .
  ?cdu dbpedia-owl:thumbnail ?thumbnail ;
       rdfs:label ?label
}
order by ?label
limit 1

SPARQL results