为什么 DISTINCT 关键字导致这两个查询的实体不同?

Why DISTINCT keyword lead to different entity for these two queries?

查询 1

PREFIX ns: <http://rdf.freebase.com/ns/>
SELECT DISTINCT ?x
WHERE {
FILTER (!isLiteral(?x) OR lang(?x) = '' OR langMatches(lang(?x), 'en'))
?x ns:type.object.type ns:religion.religious_leadership_title .
?x ns:religion.religious_leadership_title.leaders ?c0 .
?c0 ns:religion.religious_organization_leadership.start_date ?sk0 .
}
ORDER BY ?sk0
LIMIT 1

查询 2

PREFIX ns: <http://rdf.freebase.com/ns/>
SELECT ?x
WHERE {
FILTER (!isLiteral(?x) OR lang(?x) = '' OR langMatches(lang(?x), 'en'))
?x ns:type.object.type ns:religion.religious_leadership_title .
?x ns:religion.religious_leadership_title.leaders ?c0 .
?c0 ns:religion.religious_organization_leadership.start_date ?sk0 .
}
ORDER BY ?sk0
LIMIT 1

所以Q1和Q2的唯一区别就是Q1的SELECT ?x的时候多了一个DISTINCT关键字。但是,Q1 给出了答案 m.01h_90,而 Q2 给出了答案 m.05rd8。 理想情况下,我觉得这不应该导致不同的结果,因为 DISTINCT 的目的只是为了在我理解正确的情况下去除结果集中的重复项,所以如果原始结果根本没有重复项,添加 DISTINCT 关键字应该没有任何区别。

您订购的商品价值并列。指定 distinct 会导致不同的执行计划,该计划对行进行不同的排序,但仍按要求按一列排序,另一行作为第一行输出。将输出列添加到 order by 子句,您应该会看到两个查询之间的一致结果。