Python 上的 SPARQL 查询:Virtuoso 37000 错误 SP030

问题描述

我在构建 Python 脚本以在 SPARQL 中运行查询时遇到问题。

我想得到的是在 SELECT 之后立即指定的信息列表(因此艺术家、唱片等),对于每个可能的艺术家。 脚本如下:

from SPARQLWrapper import SPARQLWrapper,JSON

sparql = SPARQLWrapper("http://dbpedia.org/sparql")
sparql.setQuery("""
    PREFIX wdt: <http://www.wikidata.org/prop/direct/
     SELECT ?artist ?discography ?artistLabel ?genreLabel ?yearstartLabel 
?languageLabel WHERE {
  ?artist wdt:P106 wd:Q488205;
  ?artist wdt:P358 ?discography;
  ?artist wdt:P136 ?genre;
  ?artist wdt:P18 ?image;
  ?artist wdt:P2031 ?yearstart;
  ?artist wdt:P1412 ?language.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
""")
sparql.setReturnFormat(JSON)
results = sparql.query().convert()

for result in results["results"]["bindings"]:
    print(result["label"]["value"])

当我尝试运行代码时,编译器向我提供了以下错误

SPARQLWrapper.SPARQLExceptions.QueryBadFormed: QueryBadFormed: a bad 
request has been sent to the endpoint,probably the sparql query is bad 
formed. 

Response:
 b'Virtuoso 37000 Error SP030: SPARQL compiler,line 3: Missing 
 <namespace-iri-string> in PREFIX declaration at \'<\' before 
 \'http:\'\n\nSPARQL query:\n#output-format:application/sparql- 
results+json\n\n    PREFIX wdt: <http://www.wikidata.org/prop/direct/\n     
 SELECT ?artist ?discography ?artistLabel ?genreLabel ?yearstartLabel ? 
languageLabel WHERE {\n  ?artist wdt:P106 wd:Q488205;\n  ?artist wdt:P358 
?discography;\n  ?artist wdt:P136 ?genre;\n  ?artist wdt:P18 ?image;\n  ? 
artist wdt:P2031 ?yearstart;\n  ?artist wdt:P1412 ?language.\n  SERVICE 
wikibase:label { bd:serviceParam wikibase:language "en". }\n}\n'

正如我之前解释过的,我想要的是包含所寻求的相关信息的艺术家名单。

附言如果在 https://query.wikidata.org/ 上测试,我尝试运行的查询会提供积极响应,但如果我在 https://dbpedia.org/sparql 上尝试,则会出现错误

我提前感谢您的回答,向大家问好。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...