【发布时间】:2019-03-06 12:27:57
【问题描述】:
我以为我查询得很好,直到我看到结果有一些相同的事件出现了几次。谁能解释一下原因?
查询:
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT ?event ?eventLabel
WHERE
{ ?event a dbo:MilitaryConflict ;
dbo:date ?date .
FILTER ( ?date >= "1918-01-01"^^xsd:date && ?date <= "2018-12-31"^^xsd:date ).
FILTER(LANG(?eventLabel) = "nl").
OPTIONAL { ?event rdfs:label ?eventLabel.}}
结果:
【问题讨论】:
-
您应该已经知道
DISTINCT运算符的用途,因为您已经在以前的查询中使用过它......如果您问为什么,这就是 SPARQL 的本质,它返回一个“行" 对于每个匹配的组合。查看一些事件,它们有多个日期,因此,有多个 RDF 三元组与查询匹配。 -
简短回答,
SELECT DISTINCT ... -
顺便说一下,您不会在此 SPARQL 端点找到 2017 年和 2018 年的任何事件。
-
哦,谢谢! :D 雾现在不在我的脑海里了。显然,我使用 DISTINCT 进行计数,但不适用于此查询。
-
好的 :) 你知道为什么events.dbpedia.org/sparql 不起作用吗?我检查了2周,它总是离线。但是我在这里查询dbpedia.org/sparql 应该没关系,对吧...?抱歉所有愚蠢的问题:D