使用 wikiPageRedirects 的 sparql

2023-12-30

我正在使用 sparql 来查找实体的位置。我有来自 dbpedia-spootlight 的网址,并且想找到它们的位置。所以我使用的查询是:

PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> 
PREFIX dbo: <http://dbpedia.org/ontology/> 
SELECT DISTINCT * 
WHERE { ?uri rdfs:label ?label . 
OPTIONAL { ?uri geo:lat ?lat . ?uri geo:long ?long } . 
OPTIONAL { ?uri dbpedia-owl:country ?dbpediaContry . ?dbpediaContry dbpprop:cctld ?ccTLD } . 
FILTER (?uri = <URL>  && lang(?label) = "en" ) } 

一切都很好,直到我得到这个网址:http://dbpedia.org/resource/Valencia,_西班牙 http://dbpedia.org/resource/Valencia,_Spain。 它有 wikiPageRedirects 到http://dbpedia.org/resource/巴伦西亚 http://dbpedia.org/resource/Valencia并且没有其他数据。 我迷失了如何构建查询来检查带有重定向的案例。

有谁能够帮助我?


尝试更改查询的第一部分以使用UNION e.g.

PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> 
PREFIX dbo: <http://dbpedia.org/ontology/> 
PREFIX dbp: <http://dbpedia.org/property/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

SELECT DISTINCT * 
WHERE
{ 
  { 
    ?uri rdfs:label ?label . 
  } 
  UNION 
  { 
    [] dbo:wikiPageRedirects ?uri .
    ?uri rdfs:label ?label .
  }
  OPTIONAL 
  { 
    ?uri geo:lat ?lat ;
         geo:long ?long 
  }
  OPTIONAL 
  {
    ?uri dbo:country ?dbpediaContry . 
    ?dbpediaContry dbp:cctld ?ccTLD 
  }
  FILTER (SAMETERM(?uri, <URL>)  && lang(?label) = "en" ) 
} 

The UNION允许您在应用查询的其余部分之前查找具有 URI 的内容以及通过重定向具有 URI 的内容。注意我也改变了你的FILTER to use SAMETERM()这应该会使查询更快。

一般来说,如果您有这种查询,您正在执行这种操作FILTER要设置一个常量,我强烈建议替换所有使用?uri变量与<URL>相反,应该看到更好的性能

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 wikiPageRedirects 的 sparql 的相关文章

随机推荐