/ / Zapytanie INSERT / DELETE / UPDATE przy użyciu SPARQLWrapper - python, sparql, rdflib

Zapytanie INSERT / DELETE / UPDATE za pomocą SPARQLWrapper - python, sparql, rdflib

Chociaż przeszedłem wiele przykładówsieć wyjaśniająca użycie Pythona SPARQLWrapper używając instrukcji SELECT do pobierania danych z potrójnego magazynu sezamowego, ale nie jestem pewien, jak możemy WSTAWIĆ / USUWAĆ / AKTUALIZOWAĆ instrukcje w sezamie. Czy którykolwiek z was może w tym względzie kierować.

Dzięki

Odpowiedzi:

7 dla odpowiedzi № 1

Zapytania SPARQL są wysyłane jako żądanie GET, ale UPDATE (jak INSERT, DELETE itp.) Wymaga wysłania zapytania jako żądania POST. Po prostu dodaj następujący wiersz przed sparql.query ()

sparql.method = "POST"

Ponadto adres URL aktualizacji różni się od zapytania. Aktualizacja jest oparta na środowisku roboczym, a nie na adresie sezamowym. Na przykład, jeśli adres URL zapytania to:

http://localhost:8080/openrdf-sesame/repositories/test/

lub

http://localhost:8080/openrdf-workbench/repositories/test/query

wtedy adres URL aktualizacji będzie:

http://localhost:8080/openrdf-workbench/repositories/test/update

Dlatego żądanie UPDATE / INSERT powinno wyglądać tak:

queryString = "INSERT DATA { GRAPH <http://example.com/> { "b" a "c". } }"
sparql = SPARQLWrapper("http://localhost:8080/openrdf-workbench/repositories/test/update")

sparql.setQuery(queryString)
sparql.method = "POST"
sparql.query()

1 dla odpowiedzi nr 2

Nie jest to szczególnie jasne z dokumentów, ale ja myśleć możesz po prostu wykonać instrukcję aktualizacji w taki sam sposób, w jaki wykonujesz zapytanie:

queryString = "DELETE WHERE { ?s ?p ?o. }"
sparql = SPARQLWrapper("http://localhost:8080/openrdf-sesame/repositories/test/statements")

sparql.setQuery(queryString)
ret = sparql.query()

W przypadku Sesame należy pamiętać, że adres URL punktu końcowego aktualizacji (repositories/<repId>/statements) nie jest tym samym adresem URL dla punktu końcowego zapytania (repositories/<repId>). Zobacz Dokumenty protokołu Sesame dla szczegółów.