0

我已经有以下代码:

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 的新手,我正在尝试了解如何运行简单的查询。任何帮助将不胜感激!

4

1 回答 1

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 
}
于 2016-11-01T03:26:08.557 回答