当我尝试在LinkedMDB中查找The Machine和许多其他电影时,我无法找到它们。我可以使用像这样的查询获取电影的IMDB URL并查询带有SPARQL端点的foaf:page属性,但它不返回任何结果。
prefix dcterms: <http://purl.org/dc/terms/>
prefix foaf: <http://xmlns.com/foaf/0.1/>
prefix owl: <http://www.w3.org/2002/07/owl#>
select * where{
?film foaf:page ?imdb;
dcterms:title ?title
filter regex(str(?imdb), "http://www.imdb.com/title/tt0110425", "i")
}
如您所见,查询包含一个正则表达式以捕获匹配的资源。我的查询中是否存在错误,或者LinkedMDB存储库中是否包含所有IMDB的电影(我正在寻找的电影是否已经很老了)?
答案 0 :(得分:2)
在LinkedMDB网站上我没有看到任何表明他们拥有IMDB知道的所有电影的信息。以下关于其端点的查询不会返回任何结果,因此我认为您要查找的电影未列在那里。
SELECT * WHERE {
{ ?resource rdfs:label "La Machine" } union
{ ?resource rdfs:label "The Machine" } union
{ ?resource dc:title "La Machine" } union
{ ?resource dc:title "The Machine" }
}
此外,您的原始查询比它需要的更复杂。正则表达式匹配可能很昂贵,如果你已经有了一个URI,那么你应该问一下这个问题,例如:
select * where{
?film foaf:page <http://www.imdb.com/title/tt0110425> ;
dcterms:title ?title .
}