Моя ситуация проста: у меня есть файл RDF (N3), который я хочу загрузить в sparql-auth-endpoint. Я использую Jena ARQ, но, к сожалению, не работает; Ошибок нет, но график не меняется. В чем может быть проблема? Мой код:
HttpContext httpContext = new BasicHttpContext();
CredentialsProvider provider = new BasicCredentialsProvider();
provider.setCredentials(new AuthScope(AuthScope.ANY_HOST,
AuthScope.ANY_PORT), new UsernamePasswordCredentials("user", "pass"));
httpContext.setAttribute(ClientContext.CREDS_PROVIDER, provider);
GraphStore graphStore = GraphStoreFactory.create() ;
UpdateRequest request = UpdateFactory.read("turtle.ttl");
/*another possible query, same result - no errors but the graph doesn't change
request.add(new UpdateCreate("graph")) ;
request.add(new UpdateLoad("file:turtle_2.ttl", "graph")) ;
request.add("prefix dcterms: <http://purl.org/dc/terms/>"
+ "INSERT DATA { GRAPH <graph> {<http://example/book3> dcterms:title \"A new book\" }}");
UpdateAction.execute(request, graphStore) ;
*/
UpdateProcessor processor = UpdateExecutionFactory
.createRemote(request, "http://sparql-endpoint/sparql-auth");
((UpdateProcessRemote)processor).setHttpContext(httpContext);
processor.execute();
Как я могу изменить код для загрузки этих данных в конечную точку sparql?
Редактировать 1
Вот небольшой пример, тоже не работающий. Я могу создать новый граф через sparql-endpoint в браузере, но в Йене я не могу; ни ошибок, ни нового графика.
UpdateRequest request = UpdateFactory.create();
request.add(new UpdateCreate("http://linkeddata.com/graph"));
UpdateProcessor processor = UpdateExecutionFactory
.createRemote(request, "http://sparql-endpoint/sparql-auth");
((UpdateProcessRemote)processor).setHttpContext(httpContext);
processor.execute();
Редактировать 2
Используя сервер Virtuoso с sparql-auth-endpoint, я изменил эти строки, и он работает намного лучше.
UpdateProcessor processor = UpdateExecutionFactory
.createRemoteForm(request, "http://sparql-endpoint/sparql-auth");
((UpdateProcessRemoteForm)processor).setHttpContext(httpContext);
processor.execute();
Что ж, он работает на localhost: 8890, но не работает на другом виртуозном сервере
Exception in thread "main" org.apache.jena.atlas.web.HttpException: 400 Bad Request
at org.apache.jena.riot.web.HttpOp.httpResponse(HttpOp.java:425)
at org.apache.jena.riot.web.HttpOp.execHttpPostForm(HttpOp.java:316)
at com.hp.hpl.jena.sparql.modify.UpdateProcessRemoteForm.execute(UpdateProcessRemoteForm.java:75)
at bakalarska_prace.UpVirtuoso.main(UpVirtuoso.java:108) -> processor.execute()