我试图从Python中对DBPedia执行一个相当简单的SPARQL查询,如下所示:
from SPARQLWrapper import SPARQLWrapper, JSON
city_name = 'Manhattan'
query = """select *
where {
?URI rdfs:label ?name.
filter(regex(str(?name), "^%s"))
}"""%(city_name)
sparql = SPARQLWrapper("http://dbpedia.org/sparql")
sparql.setReturnFormat(JSON)
sparql.setQuery(query)
result = sparql.query().convert()我想检索所有实体,在其名字的第一部分匹配一个给定的城市。我知道这是很多实体,但是它在DBPedia测试浏览器这里中执行得很好。
每当我试图在Python中运行上述查询时,最后都会出现一个超时错误:
EndPointInternalError: EndPointInternalError: endpoint returned code 500 and response.
Response:
Virtuoso S1T00 Error SR171: Transaction timed out对于避免这个超时错误有什么建议吗?我意识到,我可能必须使我的查询更加具体,以加强搜索的范围。
发布于 2017-09-28 06:35:35
首先使用bif:contains进行全文搜索,然后过滤:
SELECT * {
?uri rdfs:label ?name .
?name bif:contains "Manhattan" . # Or "'Manhattan*'"
FILTER(STRSTARTS(?name, "Manhattan"))
}https://stackoverflow.com/questions/46461584
复制相似问题