Python 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 {

我正试图基于属性列表构建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
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。这一点非常正确;问题是没有定义前缀。您能否包含“错误说明查询格式错误”的文本?我希望它包含一条类似的消息。非常正确;问题是没有定义前缀。你能包含“错误说明查询格式错误”的文本吗?我希望它包含一条类似的消息。