为什么这个 SPARQL 查询会给出错误的结果?
Why does this SPARQL query give wrong results?
我尝试在 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 年后去世的人。谁能找出查询或语法中的错误?
好吧,我自己想通了。问题肯定是过滤器。我现在已经更改了过滤器并出现了所需的结果。过滤器必须是: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
这是查询的正确解决方案,请注意应用于 FILTER CLAUSE 的转换(即 xsd:date(?Todestag):
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 ( xsd:date(?Todestag) > "2016-01-01"^^xsd:date ) .
} ORDER BY ?Todestag
- Live Query Solution Page(格式 HTML Table)。
- Query Definition Page
我尝试在 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 年后去世的人。谁能找出查询或语法中的错误?
好吧,我自己想通了。问题肯定是过滤器。我现在已经更改了过滤器并出现了所需的结果。过滤器必须是: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
这是查询的正确解决方案,请注意应用于 FILTER CLAUSE 的转换(即 xsd:date(?Todestag):
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 ( xsd:date(?Todestag) > "2016-01-01"^^xsd:date ) .
} ORDER BY ?Todestag
- Live Query Solution Page(格式 HTML Table)。
- Query Definition Page