为什么此SPARQL查询给出错误的结果?

时间:2019-02-12 16:01:08

标签: sparql semantic-web dbpedia

我尝试在http://dbpedia.org/sparql上执行一些sparql请求。

我的sparql请求是这样的:

PREFIX : <http://dbpedia.org/resource/> 
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT ?Name ?Todestag ?person 
WHERE {
  ?person dbo:deathPlace :Hamburg .
  ?person foaf:name ?Name .
  ?person dbo:deathDate ?Todestag .
  FILTER ( ?Todestag > "2016-01-01"^^xsd:date ) . 
} ORDER BY ?Todestag

问题: 此FILTER不知怎么不起作用。 SPARQL请求为我提供了自从DBpedia开始以来每天死亡的所有人员。但是,我只想要2016年之后去世的人。有人能在查询或语法中发现错误吗?

2 个答案:

答案 0 :(得分:1)

这是查询的正确解决方案,请注意应用于FILTER子句的强制转换(即xsd:date(?Todestag):

var keys []interface{}
keys = append(keys, "foo")
keys = append(keys, "bar")
r, err := conn.Do("MGET", keys...)

答案 1 :(得分:0)

好的,我自己弄清楚了。问题肯定是过滤器。我现在更改了过滤器,并出现了所需的结果。过滤器必须为:FILTER (str(?Todestag) >= "2016") .

完全是这样的:

PREFIX : <http://dbpedia.org/resource/> 
PREFIX dbo: <http://dbpedia.org/ontology/> 

SELECT ?Name ?Todestag ?person  
WHERE {       
?person dbo:deathPlace :Hamburg . 
?person foaf:name ?Name . 
?person dbo:deathDate ?Todestag .
FILTER (str(?Todestag) >= "2016") .   
} ORDER BY ?Todestag