我目前正在使用不同的SPARQL端点,并希望按标题查询IMDB端点的电影。我已经为DBPedia提出了以下查询。
SELECT DISTINCT film_title
WHERE {
?film_title rdf:type <http://dbpedia.org/ontology/Film> .
?film_title dbpprop:name ?label . FILTER langMatches(lang(?label), "en")
?film_title rdfs:comment ?comment . FILTER(LANGMATCHES(LANG(?comment), "en")) .
FILTER (REGEX(STR(?film_title), "The Big Lebowski", "i")) .
} LIMIT 10
有人会对如何构建IMDB查询有任何建议吗?
答案 0 :(得分:7)
您的查询不适用于DBpedia。它在?
中缺少select distinct film_title
,即使您添加了select distinct ?film where {
?film a dbpedia-owl:Film ;
rdfs:label ?label .
filter contains( ?label, "The Big Lebowski" )
}
limit 10
,也不会得到任何结果。我希望你真的想要像
imdb sparql endpoint
我不知道任何IMDB SPARQL端点,Google搜索<http://data.linkedmdb.org/resource/movie/film>
并未解决问题。我将会讨论LinkedMDB SPARQL端点,因为它有一些关于同样在IMDB中的电影的信息。它有一个SPARQL端点,以及一个SNORQL explorer,您可以在其中测试查询。
如果您还浏览了影片的LinkedMDB页面,您可以找到他们使用的属性。例如,在The Magician的页面中,您可以看到LinkedMDB也使用rdfs:label来表示标题。相关的类型不是dbpedia-owl:电影,但电影:电影,是contains
。
现在,LinkedMDB端点不使用SPARQL 1.1,因此您无法使用select distinct ?film where {
?film a movie:film ;
rdfs:label ?label .
filter regex( str(?label), "The Magician", "i")
}
limit 10
功能,但您仍然可以使用正则表达式。由于我们知道魔术师在那里有一个条目(它看起来不像
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix dbpedia-owl: <http://dbpedia.org/ontology/>
prefix movie: <http://data.linkedmdb.org/resource/movie/>
select distinct ?film where {
{ ?film a movie:film } union
{ ?film a dbpedia-owl:Film }
?film rdfs:label ?label .
filter regex( str(?label), "The Magician", "i")
}
limit 10
现在您可以询问是否存在可以在LinkedMDB和DBpedia上运行的查询,并且确实存在:
{{1}}
LinkedMDB SPARQL results (1 film)
DBpedia SPARQL results (10 films)