我想建立一个基于属性列表的sparql查询,但我得到一个错误,说查询是坏的形成。问题是我不知道该如何解决它。Sparql查询不良形成
这是函数:
def create_query(dbpedia_uri, props):
#props are something like this ('dbpedia-owl', 'birthdate')
filters = ''
for prop in QUERIES_DICT[ename]:
filters += ' OPTIONAL { ?x %s:%s ?%s. } \n' % (corresp_dict[prop[0]], prop[1], prop[1])
query = u"""
SELECT * WHERE {
. <%s>.
?x dbpedia-owl:abstract ?abstract.
%s
FILTER (LANG(?abstract) = 'en')
}
""" % (dbpedia_uri, filters)
return query
这是查询我得到:
u"\n SELECT * WHERE { <http://dbpedia.org/resource/Tim_Cook>\n ?x dbpedia-owl:abstract ?abstract.\n OPTIONAL { ?x dbpedia-owl:birthDate ?birthDate. }\n OPTIONAL { ?x dbpedia-owl:birthPlace ?birthPlace. }\n OPTIONAL { ?x dbpprop:name ?name. }\n OPTIONAL { ?x dbpedia-owl:profession ?profession. }\n OPTIONAL { ?x dbpprop:residence ?residence. }\n OPTIONAL { ?x dbpprop:website ?website. }\n \n FILTER (LANG(?abstract) = 'en')\n }\n "
或打印:
SELECT * WHERE { <http://dbpedia.org/resource/Tim_Cook>
?x dbpedia-owl:abstract ?abstract.
OPTIONAL { ?x dbpedia-owl:birthDate ?birthDate. }
OPTIONAL { ?x dbpedia-owl:birthPlace ?birthPlace. }
OPTIONAL { ?x dbpprop:name ?name. }
OPTIONAL { ?x dbpedia-owl:profession ?profession. }
OPTIONAL { ?x dbpprop:residence ?residence. }
OPTIONAL { ?x dbpprop:website ?website. }
FILTER (LANG(?abstract) = 'en')
}
[AndyS的回答(http://stackoverflow.com/a/18279160/1281433)是现货上;问题是前缀没有被定义。你能否包含“错误表示查询不成功”的文本?我期望它包含类似的信息。 –