我该怎么做才能从linkedmdb获得所需的结果?

时间:2015-07-08 17:08:33

标签: rdf sparql endpoint linkedmdb

有人会解释我这种现象吗? 我使用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

1 个答案:

答案 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引擎中的错误 - 您可能希望使用此信息与他们联系。