首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用wikiPageRedirects的sparql

使用wikiPageRedirects的sparql
EN

Stack Overflow用户
提问于 2012-09-25 15:47:49
回答 2查看 776关注 0票数 4

我使用sparql查找entity的位置。我有来自dbpedia-spootlight的urls,并希望找到它们的位置。所以我使用的查询是:

代码语言:javascript
复制
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" ) } 

在我得到这个url:http://dbpedia.org/resource/Valencia,_Spain之前,一切都很好。它有到http://dbpedia.org/resource/Valencia的wikiPageRedirects,没有其他数据。我迷路了,我怎么才能构建查询来检查带有重定向的案例。

有人能帮我吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-26 07:17:23

尝试更改查询的第一部分以使用UNION,例如

代码语言:javascript
复制
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" ) 
} 

UNION允许您在应用查询的其余部分之前,通过重定向查找具有URI的事物和具有URI的事物。请注意,我还将您的FILTER更改为使用SAMETERM(),这将使查询速度更快。

一般来说,如果您有这样一种查询,您正在执行FILTER来设置一个常量,我强烈建议将所有?uri变量的使用替换为<URL>,这样可以获得更好的性能

票数 2
EN

Stack Overflow用户

发布于 2012-09-25 16:53:24

嗯,我找到了一个解决方案,但我不认为它是完美的。我添加了额外的列:

代码语言:javascript
复制
...
OPTIONAL { ?uri  dbpedia-owl:wikiPageRedirects ?red } .
OPTIONAL { ?red geo:lat ?rlat . ?red geo:long ?rlong } 
...

但是现在我又有两列要检查了。

我尝试的另一种方式是:

代码语言:javascript
复制
...
OPTIONAL { ?uri  dbpedia-owl:wikiPageRedirects ?red } .
{?uri geo:lat ?lat . ?uri geo:long ?long}  UNION  { ?red geo:lat ?lat . ?red geo:long ?long }
...

但是如果实体没有geo:long & geo:lat,我就有答案了。

那么,有人知道更好的解决方案吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12578427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档