我在构建python脚本以在SPARQL中运行查询时遇到问题
我想得到的是在选择之后立即为每个艺术家指定的信息列表(如艺术家、唱片摄影等)。 脚本如下:
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上尝试,则会出现错误
我提前感谢你的回答,向大家致意
目前没有回答
相关问题 更多 >
编程相关推荐