Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用SPARQL从dbpedia获取参与者列表_Sparql_Dbpedia - Fatal编程技术网

使用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 .

我一直在努力解决这个任务,我必须检索给定电影名称的演员名单。我对SPARQL和dbpedia都是新手

在阅读了一些教程之后,到目前为止,我有以下几点:

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"))
  }
}