SPARQL 查询返回比预期多得多的行
SPARQL query returning much more rows than expected
我正在使用以下 SPARQL 查询来获取所有美国总统的列表以及他们任期的开始和结束日期:
SELECT ?person $personLabel $start $end
WHERE {
?person wdt:P39 wd:Q11696.
?person p:P39 ?statement.
?position_held_statement ps:P39 wd:Q11696.
?statement pq:P580 ?start.
?statement pq:P582 ?end
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
ORDER BY DESC($start)
为什么 return 这么多行?
编辑: 我知道我可以使用 SELECT DISTINCT
来获得不同的结果,但我想了解如何找出重复的原因。此外,有些条目表明巴拉克奥巴马的总统任期从 2009 年 1 月持续到 2017 年 1 月,而其他条目则分别说明了他的两个任期。
那里有 ?position_held_statement
。那应该是 ?statement
.
当您在 SPARQL 中意外地得到很多结果时,通常是因为不匹配的变量名将应该是连接的东西变成了笛卡尔积。
我正在使用以下 SPARQL 查询来获取所有美国总统的列表以及他们任期的开始和结束日期:
SELECT ?person $personLabel $start $end
WHERE {
?person wdt:P39 wd:Q11696.
?person p:P39 ?statement.
?position_held_statement ps:P39 wd:Q11696.
?statement pq:P580 ?start.
?statement pq:P582 ?end
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
ORDER BY DESC($start)
为什么 return 这么多行?
编辑: 我知道我可以使用 SELECT DISTINCT
来获得不同的结果,但我想了解如何找出重复的原因。此外,有些条目表明巴拉克奥巴马的总统任期从 2009 年 1 月持续到 2017 年 1 月,而其他条目则分别说明了他的两个任期。
那里有 ?position_held_statement
。那应该是 ?statement
.
当您在 SPARQL 中意外地得到很多结果时,通常是因为不匹配的变量名将应该是连接的东西变成了笛卡尔积。