您的查询不合法,修复后没有来自 DBpedia 的结果
您的查询不适用于 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
SPARQL 结果
IMDB 没有 SPARQL 端点
我不知道任何 IMDB SPARQL 端点,Google 搜索imdb sparql endpoint
也没有出现。我会冒昧地假设您正在谈论 LinkedMDB SPARQL 端点,因为它包含一些关于也在 IMDB 中的一些电影的信息。它有一个 SPARQL 端点,以及一个SNORQL 资源管理器,您可以在其中测试查询。
适用于 DBpedia和LinkedMDB的查询
如果您还浏览电影的 LinkedMDB 页面,您可以找出它们使用的属性。例如,从The Magician的页面中,您可以看到 LinkedMDB 也使用 rdfs:label 来指示标题。不过,相关类型不是 dbpedia-owl:Film,而是 movie:film,即<http://data.linkedmdb.org/resource/movie/film>
.
现在,LinkedMDB 端点不使用 SPARQL 1.1,因此您不能使用该contains
函数,但您仍然可以使用正则表达式。既然我们知道The Magician那里有一个条目(它看起来不像The Big Lebowski那样),让我们看一个检索它的类似查询:
select distinct ?film where {
?film a movie:film ;
rdfs:label ?label .
filter regex( str(?label), "The Magician", "i")
}
limit 10
SPARQL 结果
现在您可以询问是否有适用于 LinkedMDB 和 DBpedia 的查询,果然有:
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 SPARQL 结果(1 部电影)
DBpedia SPARQL 结果(10 部电影)