在linkedmdb中使用过滤器时解析错误SPARQL

时间:2017-03-14 21:30:39

标签: sparql sparqlwrapper linkedmdb

我正在尝试使用linkedmdb查询2个特定电影及其imdb页面,但会抛出一个解析错误。

当我删除以下行时,我会收到所有电影的列表。如何获取特定集的链接。

FILTER (str(?title) IN ("The Magician","Royal Flash"))

这是我的代码。

SELECT  ?title ?imdbID 
WHERE {
   ?film foaf:page ?imdbID .  
   ?film dc:title ?title .

   FILTER(regex(str(?imdbID), "www.imdb.com" ) )
   FILTER (str(?title) IN ("The Magician","Royal Flash"))
}

2 个答案:

答案 0 :(得分:1)

SPARQL 1.1规范显示了IN

的等效性

https://www.w3.org/TR/sparql11-query/#func-in

所以

FILTER (str(?title) IN ("The Magician","Royal Flash"))

相同

FILTER (str(?title) = "The Magician" || str(?title) = "Royal Flash")

是SPARQL 1.0

答案 1 :(得分:0)

您可以尝试通过VALUES进行匹配,而不是获取所有匹配项并过滤掉所需的值:

SELECT ?title ?imdbID 
WHERE {
   ?film foaf:page ?imdbID . 
   VALUES ?title {"The Magician" "Royal Flash"} .
   ?film dc:title ?title
}