I am trying to write a ttl file to a graph in virtuoso using HTTP post call to the graph endpoint,
resource = new ClassPathResource("beil0.ttl").getFile();
String text = new String(Files.readAllBytes(resource.toPath()));
WebClient webClient = webConfig.webClientBuilder().build();
WebClient.ResponseSpec responseSpec = webClient.post()
.uri("?graph-uri=http://data.else.com/voca/comp/")
.header("Content-Type", "text/turtle")
.bodyValue(text)
.retrieve();
String responseBody = responseSpec.bodyToMono(String.class).block();
Here i am reading the file first in variable 'text' and then passing it to the post call which eventually gives me an error as follows :-
java.lang.IndexOutOfBoundsException: writerIndex(0) + minWritableBytes(-1932256561) exceeds maxCapacity(2147483647): PooledUnsafeDirectByteBuf(ridx: 0, widx: 0, cap: 2147483647)
I am assuming its a big file so this error is being thrown from the virtuoso endpoint, if my assumption is right then what i want to do is stream this file content to the endpoint rather than sending it all together. Does anyone has an idea how can i achieve such functionality here. FYI - I tried to use INPUTSTREAM, MULTIPART and many other ways that i can find online but i am still not able to achieve it because of one reason or another.
You could use these Virtuoso samples for loading RDF data to Virtuoso via TCP connection. (The samples are in Gradle project format.)