当通过SPARQLwrapper查询时,如何告诉Stardog使用推理?

时间:2017-04-29 12:14:58

标签: python sparql stardog sparqlwrapper

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

2 个答案:

答案 0 :(得分:3)

Stardog的documentation非常好:

  

HTTP

     

对于HTTP,使用其他HTTP指定推理标志   请求参数:

     

$ curl -u admin:admin -X GET "http://localhost:5822/myDB/query?reasoning=true&query=..."

这意味着只需将参数?reasoning=true添加到远程URL字符串。

答案 1 :(得分:1)

我有完全相同的问题。解决方案是在构建将addParameter添加到URL的查询时使用required reasoning=true

查询的骨架如下所示:

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()