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

Sparql 为什么不同的关键字导致这两个查询的实体不同?,sparql,freebase,Sparql,Freebase,问题1 前缀ns: 选择DISTINCT?x 在哪里{ 筛选器(!isLiteral(?x)或lang(?x)=''或langMatches(lang(?x),'en')) x ns:type.object.type ns:religation.religural\u leadership\u title。 x ns:宗教。宗教领袖。头衔。领袖?c0。 ?c0 ns:宗教。宗教组织。领导。开始日期?sk0。 } 订购人?sk0 限制1 问题2 PREFIX ns: <http://rdf

问题1

前缀ns:
选择DISTINCT?x
在哪里{
筛选器(!isLiteral(?x)或lang(?x)=''或langMatches(lang(?x),'en'))
x ns:type.object.type ns:religation.religural\u leadership\u title。
x ns:宗教。宗教领袖。头衔。领袖?c0。
?c0 ns:宗教。宗教组织。领导。开始日期?sk0。
}
订购人?sk0
限制1
问题2

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
前缀ns:
选择?x
在哪里{
筛选器(!isLiteral(?x)或lang(?x)=''或langMatches(lang(?x),'en'))
x ns:type.object.type ns:religation.religural\u leadership\u title。
x ns:宗教。宗教领袖。头衔。领袖?c0。
?c0 ns:宗教。宗教组织。领导。开始日期?sk0。
}
订购人?sk0
限制1
因此,Q1和Q2之间的唯一区别在于,当Q1中的
SELECT?x
时,有一个
DISTINCT
关键字。然而,Q1给出了答案
m.01h_90
,而Q2给出了答案
m.05rd8

理想情况下,我觉得这不应该导致不同的结果,因为
DISTINCT
的目的只是在我正确理解的情况下消除结果集中的重复项,因此如果原始结果根本没有重复项,添加
DISTINCT
关键字应该不会有任何区别。

您在订购的值上有一个平局。指定
distinct
会导致不同的执行计划,该计划以不同的方式对行进行排序,尽管仍然按照请求按一列排序,另一行作为第一个要输出的行。将输出列添加到
order by
子句中,您应该可以看到两个查询之间的一致结果。

您所排序的值必须是一致的。指定
distinct
会导致不同的计划,该计划对行的排序不同。将该列添加到排序依据中,查看是否一致。@shawnt00。我尝试了
选择不同的x、
选择x、
,它们是一致的,这使我confused@shawnt00你能通过发布一个答案让它更详细吗?那么我可以接受你的回答。非常感谢!
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