Rdf 在SParQL中基于URI的过滤

Rdf 在SParQL中基于URI的过滤,rdf,sparql,semantic-web,linked-data,linkedmdb,Rdf,Sparql,Semantic Web,Linked Data,Linkedmdb,您可以在以下位置运行查询。?imdbID(最后一个变量)的值包含来自三个可能域之一(freebase.com、rottentomatoos.com或imdb.com)的IRIs。我想知道如何应用过滤器,以便只保留imdb.com域中的行 PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX dc: <http://pu

您可以在以下位置运行查询。
?imdbID
(最后一个变量)的值包含来自三个可能域之一(freebase.com、rottentomatoos.com或imdb.com)的IRIs。我想知道如何应用
过滤器
,以便只保留imdb.com域中的行

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX dc: <http://purl.org/dc/terms/>
PREFIX movie: <http://data.linkedmdb.org/resource/movie/>

SELECT ?title ?date ?director ?imdbID 
WHERE {
 ?film foaf:page ?imdbID.  
 ?film dc:title ?title.
 ?film dc:date ?date .
 ?film movie:director ?directorURI.
 ?directorURI rdfs:label ?director .
}
前缀rdfs:
前缀foaf:
前缀dc:
前缀电影:
选择?标题?日期?主管?imdbID
在哪里{
?胶片foaf:第页?imdbID。
?电影dc:片名?片名。
?电影dc:日期?日期。
电影:导演?导演。
?directorURI rdfs:标签?控制器。
}

不确定为什么@JoshuaTaylor没有将此作为答案发布,但您需要的是将@JoshuaTaylor的过滤器添加到您的查询中:

前缀rdfs:
前缀foaf:
前缀dc:
前缀电影:
选择?标题?日期?主管?imdbID
在哪里{
?胶片foaf:第页?imdbID。
?电影dc:片名?片名。
?电影dc:日期?日期。
电影:导演?导演。
?directorURI rdfs:标签?控制器。
过滤器(regex(str(?imdbID),“www.imdb.com”))
}
返回:


吸血鬼杀手巴菲
1992-07-31
Fran Rubel Kuzui(董事)
http://www.imdb.com/title/tt0103893
蝙蝠侠
1989-06-23
蒂姆·伯顿(导演)
http://www.imdb.com/title/tt0096895
蝙蝠侠
1966-07-30
莱斯利·马丁森(董事)
http://www.imdb.com/title/tt0060153
蝙蝠侠;罗宾
1997-06-20
乔尔·舒马赫(导演)
http://www.imdb.com/title/tt0118688
奇爱博士:我是如何学会停止担忧,爱上炸弹的
如果要使其不区分大小写,可以使用
i
标志,如下所示:

FILTER(regex(str(?imdbID), "www.IMDB.com", "i" )

如果您想查看有关筛选器的更多信息,请查看

这项技术对你有用吗?使用它,您只需
过滤器(strstarts(str(?imdbID),”http://imdb.com)
,我想。噢,linkedMDB端点不支持SPARQL 1.1,所以您必须使用正则表达式,它似乎是:
过滤器(regex(str(?imdbID),”^http://www.imdb.com)
。另一个问题中也列出了这种方法。不确定为什么@JoshuaTaylor没有将其作为答案发布,我没有发布,因为如果这种方法适用于OP,那么这个问题应该作为该问题的副本关闭(因为该问题的答案中介绍了这种技术)。