我想建立一個基於屬性列表的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)是現貨上;問題是前綴沒有被定義。你能否包含「錯誤表示查詢不成功」的文本?我期望它包含類似的信息。 –