我有一个 SPARQL 查询,在启用推理时会在 Stardog 查询面板中返回结果,但在禁用时则不会。当我使用 SPARQLwrapper 通过 python 尝试查询时,我没有得到任何结果。我尝试了一个不依赖推理的不同查询,并通过 Stardog 查询面板(无需推理)和 SPARQLwrapper 获得了相同的结果。所以我怀疑当我通过 python 查询时没有应用推理,这就是没有结果的原因。所以我的问题是如何告诉 Stardog 在通过 SPARQLwrapper 查询时使用推理?
问问题
347 次
2 回答
3
Stardog的文档非常好:
HTTP
对于 HTTP,推理标志与其他 HTTP 请求参数一起指定:
$ curl -u admin:admin -X GET "http://localhost:5822/myDB/query?reasoning=true&query=..."
这意味着只需将参数添加?reasoning=true
到远程 URL 字符串。
于 2017-04-29T14:47:46.950 回答
2
我有同样的问题。解决方案是addParameter
在您构建查询时使用,该查询将所需的 reasoning=true添加到 URL。
查询的骨架可能如下所示:
from SPARQLWrapper import SPARQLWrapper, JSON
endpoint = '<your endpoint>'
sparql = SPARQLWrapper(endpoint)
# add your username and password if required
sparql.setCredentials('<your username>', '<your password>')
rq = """
<your query string>
"""
sparql.setQuery(rq)
sparql.setReturnFormat(JSON)
# use reasoning
sparql.addParameter('reasoning', 'true')
data_json = sparql.query().convert()
于 2018-07-31T09:33:51.637 回答