如何在python中使用dbpedia查询查找特定电影中的actor

时间:2016-10-31 23:44:34

标签: python sparql dbpedia sparqlwrapper

我已经拥有以下代码:

movie = "http://dbpedia.org/resource/Cannes_Man"
Q = "PREFIX dbo:     <http://dbpedia.org/property/> PREFIX dbpedia: <http://dbpedia.org/resource/>  SELECT ?actor WHERE {?actor dbo:starring <"+movie+">.} "
sparql = SPARQLWrapper("http://dbpedia.org/sparql")
sparql.setReturnFormat(JSON)
sparql.setQuery(Q)  # the previous query as a literal string
activity_feed3 = sparql.query().convert()
print activity_feed3
for result5 in activity_feed3["results"]["bindings"]:
    print result5

它返回空结果。我是sprawl客户端和dbpedia的新手,我正在尝试了解如何运行简单查询。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

  1. RDF数据被建模为有向图,因此,您必须弄清楚关系的方向。
  2. 如果您只是查看DBpedia中某些电影的数据,您可以看到这一点,例如您的示例http://dbpedia.org/resource/Cannes_Man。在那里你可以看到一部电影有关于演员的信息http://dbpedia.org/ontology/starring。 您还可以使用SPARQL检查传入和传出数据: SELECT * WHERE {?s ?p_in <URI>} resp。 SELECT * WHERE {<URI> ?p_out ?o}
  3. 您应该尝试使用公共前缀,即dbo:通常用于http://dbpedia.org/ontology/而不是http://dbpedia.org/property/
  4. 因此,您可能需要的SPARQL查询是

    SELECT ?actor WHERE {
       <http://dbpedia.org/resource/Cannes_Man> <http://dbpedia.org/ontology/starring> ?actor 
    }