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 № 1Zapytania 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.