无法在SPARQLWrapper中使用INSERT

时间:2017-09-18 03:28:16

标签: python sparql graphdb sparqlwrapper

我一直试图让SPARQLWrapper在GraphDB中插入一个简单的三元组,但没有成功。我对选择查询没有任何问题。这是失败的Python测试代码:

db = sparqlw.SPARQLWrapper(endpoint)
query = '''
INSERT {<http://example.com/123456789876> a owl:Thing .}
WHERE {}
'''
db.setQuery(query)
db.method = sparqlw.POST
db.setReturnFormat(sparqlw.JSON)
db.queryType= sparqlw.INSERT
result = db.query()

它会返回以下错误:

"urllib.error.HTTPError: HTTP Error 400: Bad Request"

"SPARQLWrapper.SPARQLExceptions.QueryBadFormed: QueryBadFormed: a bad 
request has been sent to the endpoint, probably the sparql query is bad 
formed."

响应:     b'Missing参数:查询'

我到处寻找并尝试了所有建议但无法使其发挥作用。感谢任何好的线索。

请参阅我添加的有关查询验证的评论。该问题重复且已经回答的建议不适用。

1 个答案:

答案 0 :(得分:1)

GraphDB公开Sesame-style个端点URL 下面是GraphDB 8.3 Workbench帮助页面的截图(我正在使用免费版)。

Help

以下Python代码适用于我(repositoryIDwikidata):

from SPARQLWrapper import SPARQLWrapper, BASIC

db = SPARQLWrapper("http://localhost:7200/repositories/wikidata/statements")
query = '''
INSERT {<http://example.com/123456789879> a owl:Thing .}
WHERE {}
'''
db.setHTTPAuth(BASIC)
db.setCredentials('login', 'password')
db.setQuery(query)
db.method = "POST"
db.setReturnFormat('json')
db.queryType = "INSERT"
result = db.query()