我是 python 的新手,也是查询语义网的新手。我正在使用 SPARQLWrapper 库来查询 dbpedia,我搜索了库文档,但找不到从 sparqlWrapper 向 dbpedia 发起的查询的“超时”。
任何人都对此有任何想法。
我是 python 的新手,也是查询语义网的新手。我正在使用 SPARQLWrapper 库来查询 dbpedia,我搜索了库文档,但找不到从 sparqlWrapper 向 dbpedia 发起的查询的“超时”。
任何人都对此有任何想法。
自 2018 年起,您可以使用SPARQLWrapper.setTimeout()
设置SPARQLWrapper
请求的超时时间。
正如 Karoo 提到的,您可以使用SPARQLWrapper.setTimeout(timeout=(int))
. 如果您想将超时作为浮点数,请转到Wrapper.py
模块并更改self.timeout = int(timeout)
为函数self.timeout = float(timeout)
。def setTimeout(self, timeout):
DBPedia 使用 Virtuoso 服务器作为其端点,并且timeout
是特定于 virtuoso 的选项。SparqlWrapper 目前不支持它。
下一个版本将具有更好的模块化功能,之后可能会实施适当的特定于供应商的扩展,但我想你没有时间等待。
目前,添加此类参数的唯一方法是将其手动硬编码到本地版本的库中
我不知道这是否专门针对您的问题的答案,但我搜索了很长时间,这是我的解决方案,适用于在 SPARQLWrapper 上遇到 Virtuoso 特定超时问题的其他人:
您可以使用这行代码为您的查询设置服务器端超时(而不是像 .setTimeout 这样的客户端):
[your SPARQLWraper entity].addExtraURITag("timeout","[your timeout in ms]")
就我而言,它看起来像这样:
s.addExtraURITag("timeout","10000")
这应该在您的查询停止搜索并返回结果之前给您 10 秒的时间,而不是仅仅给您一个超时错误。
希望我能帮助任何人。