Не удается заставить INSERT работать в 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 ответ

Решение

GraphDB предоставляет URL-адреса конечных точек в стиле "Сезам".
Ниже приведен скриншот страницы справки GraphDB 8.3 Workbench (я использую Free Edition).


Помогите


Следующий код Python работает для меня (repositoryID является wikidata):

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()
Другие вопросы по тегам