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