0

我使用SPARQLWrapperinpython来查询一个循环中包含许多不同查询的 Web 端点。

所以我试图让它像这样工作(让我们queries保留所有不同的查询和result结果):

sparql = SPARQLWrapper("url")
prefix = "prefix..."
for i in arange(1:len(queries)):
    sparql.setQuery(prefix+queries[i])
    result[i] = sparql.query().convert()

但这不起作用。我从列表中选择的第一个查询将返回假定的结果,但任何其他查询都不会。取而代之的是,我现在使用这个:

for i in arange(1:len(queries)):
    [sparql,prefix] = initializeSPARQL()
    sparql.setQuery(prefix+queries[i])
    result[i] = sparql.query().convert()

并且

def initializeSPARQL():
    sparql = SPARQLWrapper("url")
    prefix = "prefix..." 
    return sparql,prefix

行得通,也不是性能问题,因为查询本身就是瓶颈。但是有更好的解决方案吗?这似乎太错误了......

4

2 回答 2

0

很奇怪..因为我一直在检查代码,而 query() 方法是完全无状态的,所以不知道它为什么会失败。

当 i > 1 时,result[i] 包含什么?

我可以建议您尝试以下方法吗?

sparql = SPARQLWrapper("url")
prefix = "prefix..."
results = []
for i in range(0, len(queries)):
    sparql.resetQuery()
    sparql.setQuery(prefix+queries[i])
    results[i] = sparql.query().convert()
于 2013-02-06T14:45:26.083 回答
-1

我是图书馆的开发人员之一。

你的第一次尝试出现了一个错误。我将检查哪些内部数据结构与以前的用法保持一致,以允许以这种方式使用库。

你的第二个解决方案,即使是有效的,也不应该是正确的方法。

正如我所说,我会看看如何解决这个问题。

对于未来,请向项目提交适当的错误报告或向邮件列表发送电子邮件。

于 2013-02-01T16:49:12.043 回答