使用SPARQL从dbpedia获取参与者列表
我一直在努力解决这个任务,我必须检索给定电影名称的演员名单。我对SPARQL和dbpedia都是新手 在阅读了一些教程之后,到目前为止,我有以下几点:使用SPARQL从dbpedia获取参与者列表,sparql,dbpedia,Sparql,Dbpedia,我一直在努力解决这个任务,我必须检索给定电影名称的演员名单。我对SPARQL和dbpedia都是新手 在阅读了一些教程之后,到目前为止,我有以下几点: PREFIX dbpo: <http://dbpedia.org/ontology/> SELECT ?actor_name WHERE { SERVICE <http://dbpedia.org/sparql> { "Total Recall" dbpo:movieTitle ?movieName .
PREFIX dbpo: <http://dbpedia.org/ontology/>
SELECT ?actor_name
WHERE {
SERVICE <http://dbpedia.org/sparql> {
"Total Recall" dbpo:movieTitle ?movieName .
?movieName dbpo:actor ?actor.
?actor dbpo:actor_name ?actor_name.
}
}
前缀dbpo:
选择演员的名字
在哪里{
服务{
“全面召回”dbpo:movieTitle?movieName。
movieName dbpo:演员?演员。
?演员dbpo:演员姓名?演员姓名。
}
}
也许我把名字弄错了
总而言之,我应该如何从dbpedia中查找特定的服务点,如本问题中所述。我不确定您在查询中使用的属性是从哪里获得的,因为它们似乎没有在相关资源中使用。另一个问题是,尽管SPARQL允许它作为三元组模式,但文本不能作为RDF三元组的主题,您需要它来匹配
"Total Recall" dbpo:movieTitle ?movieName .
如果合法的话,这个三元组将断言字符串“Total Recall”有一些电影标题,并将变量?movieName
绑定到该标题。但是字符串不是电影,所以它也可能没有电影标题
在本例中,通过访问查看DBpedia关于总回忆的信息
- ,它实际上重定向到
dbpprop:starring dbpedia:Ronny_Cox
dbpprop:starring dbpedia:Arnold_Schwarzenegger
这表明您需要一个如下查询:
select ?actorName where {
?film rdfs:label "Total Recall"@en ;
dbpprop:starring ?actor .
?actor rdfs:label ?actorName .
filter(langMatches(lang(?actorName),"en"))
}
该查询适合插入,但如果您在本地运行,并且希望使用服务
关键字联合查询,则可以使用服务
:
前缀rdfs:
前缀dbpprop:
选择?actorName,其中{
服务{
?胶片rdfs:标签“总召回”@en;
dbpprop:主演?演员。
?actor rdfs:标签?actorName。
过滤器(langMatches(lang(?actorName),“en”))
}
}
一般来说,查看DBpedia中使用的类和属性类型的最佳方法之一是利用DBpedia具有资源命名约定这一事实,如中所述,因此给定一篇Wikipedia文章
XYZ
,您可以检索http://dbpedia.org/resource/XYZ
然后查看数据。对于本体类和属性,您还可以看到、和。对于交互式查询来说,是非常有用的。我的一个问题是,如何实际获得可用的属性。我刚刚更新了我的答案,添加了一些到本体文档的链接。对于查找属性,我发现最有用的方法是访问您感兴趣的一些资源,并实际查看与这些资源一起使用的属性。因此,对于服务端点,我应该使用:“否,端点是它”。您感兴趣询问的资源的IRI是。@ShamimHafiz是的。我已经更新了我的答案,以包括(像您一样)一个包含服务的查询。
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix dbpprop: <http://dbpedia.org/property/>
select ?actorName where {
service <http://dbpedia.org/sparql> {
?film rdfs:label "Total Recall"@en ;
dbpprop:starring ?actor .
?actor rdfs:label ?actorName .
filter(langMatches(lang(?actorName),"en"))
}
}