2016-10-31 84 views
0

我有下面的代码已经:如何找到使用DBpedia中查询特定电影演员在python

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 

它返回空的结果。我是新来的蔓延客户端和dbpedia,并试图了解如何运行简单的查询。任何帮助将不胜感激!

回答

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/

因此,SPARQL查询,你可能需要的是

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