This might help: https://github.com/AtomGraph/Web-Client/blob/master/src/main/java/com/atomgraph/client/update/InsertDataBuilder.java#L80
Uses SPIN API. On Wed, 25 Sep 2019 at 15.10, Andy Seaborne <a...@apache.org> wrote: > INSERT DATA does not take quads directly. > > The form is > > INSERT DATA { GRAPH <graph> { triples } } > > What *may* work is using Trig to insert. > > Andy > > On 25/09/2019 12:06, Mark Hissink Muller wrote: > > Hi all, > > > > I encounter a strange QueryParseException when building my UpdateRequest > to add a named model remotely from my Java client application. > > > > I've progressed since my last question regarding inserts to a remote > repository [1]. Thanks again Andy and Claude for your kind suggestions. > Among other, I've understood that data insert calls should be directed at > "http://[servername]/rdf4j-server/repositories/[repo_name]/statements". > I've learned that a model should be serialized in NQUADS format into the > request and that TURTLE does not work. Based on this, calling the server > works well for dropping graphs and for inserting _unnamed_ models. > > > > However, I am unable to insert data for a _named_ model/graph remotely. > My approach - which fails when adding the serialized model to the > UpdateRequest - is as follows. > > > > ... > > // prepare the model we would like to load > > Model model = prepareModel(..); > > > > // create a dataset and add the model to it with a proper context > > Dataset dataset = dataset = DatasetFactory.create(); > > dataset.addNamedModel(modelNameUri, model); > > > > // serialise the dataset to an outputStream in NQUADS format > > RDFDataMgr.write(outputStream, dataset, RDFFormat.NQUADS); > > > > // build the full request by adding the prefix, the outputStream > and the suffix > > String insertDataRequest = "INSERT DATA { " + > outputStream.toString() + "}"; > > UpdateRequest updateRequest = > UpdateFactory.create(insertDataRequest); > > > > // create the processor and fire off the request > > UpdateProcessor updateProcessor = > UpdateExecutionFactory.createRemoteForm(updateRequest, postUrl); > > updateProcessor.execute(); > > ... > > > > This code fails down in the UpdateFactory where a QueryParseException is > thrown that tells that the fourth element (which is the model name / > modelNameUri) is not expected. Strange thing is that the serialized NQUADS > look ok. > > > > When using an alternative approach and trying to build an request with > an UpdateBuilder (as Claude suggested), I don't see how I can set the model > name/uri for the model. It should be possible to add this either at > creation or afterwards (rather than with every added triple), I presume…? > > > > What is the recommended approach to add a named model...? Are there > perhaps any examples...? > > > > Much appreciated. > > > > Best, Mark > > > > [1] - https://jena.markmail.org/message/oxf5ff4bus67iim4 > > > > >