有人会解释我这种现象吗? 我使用SPARQL查询查询端点http://jsfiddle.net/8weav9qo/2/: 获取已加入英国电影主演的名单演员 Q1:
SELECT * WHERE {
?Film <http://data.linkedmdb.org/resource/movie/actor> ?actor.
}
在结果中我们有一个id为11764的actor 奇怪的是,当我运行查询 Q2:
{{1}}
尽管Q2的选择性低于Q1,但是参赛人数不再是11764。请注意,我们通过删除Q1的第一个三重模式(较少约束)来获得Q2
答案 0 :(得分:1)
这似乎是linkedmdb.org端点的SPARQL引擎中的错误,因为这些结果显然不一致。
为了排除查询结果大小上限的可能性,我尝试了原始查询的几种变体。
此查询:
SELECT * WHERE {
?Film <http://data.linkedmdb.org/resource/movie/actor> ?actor .
FILTER (?actor = <http://data.linkedmdb.org/resource/actor/11764> )
}
给了我预期的结果(两个结果,两个都是我们期望的演员)。
但是,这个查询:
SELECT * WHERE {
?Film <http://data.linkedmdb.org/resource/movie/actor> ?actor .
FILTER (REGEX(STR(?actor), "11764"))
}
给了我零结果,而这个查询:
SELECT * WHERE {
?Film <http://data.linkedmdb.org/resource/movie/country> <http://data.linkedmdb.org/resource/country/GB> .
?Film <http://data.linkedmdb.org/resource/movie/actor> ?actor .
FILTER (REGEX(STR(?actor), "11764"))
}
正如预期的那样,给了我一个结果(一个带有这个演员的一部GB电影)。
因此,总结一下:您的SPARQL查询没有任何问题。您似乎偶然发现了他们的SPARQL引擎中的错误 - 您可能希望使用此信息与他们联系。