Python Sparql查询格式错误
我正试图基于属性列表构建sparql查询,但我得到一个错误,即该查询的格式不正确。问题是我不知道该怎么解决它 这就是功能:Python Sparql查询格式错误,python,sparql,sparqlwrapper,Python,Sparql,Sparqlwrapper,我正试图基于属性列表构建sparql查询,但我得到一个错误,即该查询的格式不正确。问题是我不知道该怎么解决它 这就是功能: def create_query(dbpedia_uri, props): #props are something like this ('dbpedia-owl', 'birthdate') filters = '' for prop in QUERIES_DICT[ename]: filters += ' OPTIONAL {
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
def create_查询(dbpedia_uri,props):
#道具是这样的('dbpedia-owl','birthdate')
过滤器=“”
对于查询中的属性\u DICT[ename]:
筛选器+='可选的{x%s:%s?%s.}\n'%(对应项[0]、属性[1]、属性[1])
查询=u“”
选择*WHERE{
. .
?x dbpedia owl:摘要?摘要。
%
过滤器(LANG(?abstract)='en')
}
“”“%(dbpedia\u uri,筛选器)
返回查询
这是我得到的查询:
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 "
u”\n选择*WHERE{\n?x dbpedia owl:abstract?abstract.\n可选{x dbpedia owl:birthDate?birthDate.}\n可选{x dbpedia owl:birthdisation?birthdisation.}\n可选{x dbpprop:name?name.}\n可选{x dbpedia owl:profession profession profession profession.}\n可选{x dbpprop:residence?residence.}\n可选{?x dbpprop:website?website.}\n\n筛选器(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')
}
选择*WHERE{
?x dbpedia owl:摘要?摘要。
可选{?x dbpedia owl:birthDate?birthDate.}
可选{?x dbpedia owl:出生地?出生地。}
可选{?x dbpprop:name?name.}
可选{x dbpedia owl:profession?profession.}
可选{?x dbpprop:residence?residence.}
可选{?x dbpprop:website?website.}
过滤器(LANG(?abstract)='en')
}
您需要定义所有使用的前缀,例如dbpprop、dbpedia owl
尝试:您需要定义所有使用的前缀,例如dbpprop、dbpedia owl
尝试:前缀已定义,查看下面生成的查询,您将看到它们已添加。@Rod0n生成的查询(如图所示)不包括任何行,例如
前缀dbpedia:
。它不定义前缀。@AndyS链接到的SPARQL验证器清楚地说明了这一点第2行第14列:未解析的前缀名称:dbpedia owl:abstract"。如果不定义前缀,dbpedia owl:abstract
无法扩展为完整的IRI。前缀已定义,请查看下面生成的查询,您将看到它们已添加。@Rod0n如图所示生成的查询不包括任何行,例如前缀dbpedia:
。它不定义前缀。SPARQL验证程序@AndyS linked to明确了这一点,他说“第2行,第14列:未解析的前缀名称:dbpedia owl:abstract”。如果不定义前缀,dbpedia owl:abstract
无法扩展为完整的IRI。这一点非常正确;问题是没有定义前缀。您能否包含“错误说明查询格式错误”的文本?我希望它包含一条类似的消息。非常正确;问题是没有定义前缀。你能包含“错误说明查询格式错误”的文本吗?我希望它包含一条类似的消息。