1

我有一个 SPARQL 查询,在启用推理时会在 Stardog 查询面板中返回结果,但在禁用时则不会。当我使用 SPARQLwrapper 通过 python 尝试查询时,我没有得到任何结果。我尝试了一个不依赖推理的不同查询,并通过 Stardog 查询面板(无需推理)和 SPARQLwrapper 获得了相同的结果。所以我怀疑当我通过 python 查询时没有应用推理,这就是没有结果的原因。所以我的问题是如何告诉 Stardog 在通过 SPARQLwrapper 查询时使用推理?

4

2 回答 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 回答