To use the following code you'll need the next dependencies:
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>{jackson-version}</version> </dependency>
Feel free to use your favorite JSON processing API.
This guide will include simple usage of REST services and the general documentation of this services can be found here.
The next code works assuming:
import org.codehaus.jackson.JsonNode; import org.codehaus.jackson.map.ObjectMapper; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; public class ProcessText { public static void main(String[] args) { try { URL url = new URL("http://localhost:8080/_saga/processText"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setDoOutput(true); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "application/json"); String input = "{" + "\"q\":\"A WING FAILURE, RESULTING IN SUBSTANTIAL DAMAGE TO THE LAK-12 AIRCRAFT\"," + "\"tags\":[\"aircraft\",\"component\"]," + "\"splitRegex\": \"[\r|\n]+\"," + "\"type\": \"text\"," + "\"pretty\": true" + "}"; OutputStream os = conn.getOutputStream(); os.write(input.getBytes()); os.flush(); ObjectMapper mapper = new ObjectMapper(); JsonNode actualObj = mapper.readTree(new InputStreamReader( (conn.getInputStream()))); if(actualObj != null){ if (actualObj.get("_success").getBooleanValue()) { System.out.println("================================================="); System.out.println("= GRAPH ="); System.out.println("=================================================\n\n"); System.out.println(actualObj.get("data").get("graph").getTextValue()); JsonNode nodeArray = actualObj.get("data").get("line"); final String nodeTemplate = "%s (%.2f)[pos: %s]"; List<String> nodeList = new ArrayList(); if(nodeArray.isArray()){ nodeArray.forEach(jsonNode -> nodeList.add(String.format(nodeTemplate, jsonNode.get("_item").getTextValue(), jsonNode.get("confidence").getDoubleValue(), jsonNode.get("character").getTextValue()))); } System.out.println("================================================="); System.out.println("= HIGHEST CONDIFIDENCE ROUTE ="); System.out.println("=================================================\n\n"); System.out.println(nodeList.stream().collect(Collectors.joining(" -> "))); } else { System.out.println("Failure"); } } conn.disconnect(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
This is the JSON you can expect from
================================================= = GRAPH = ================================================= V--------------------------------[A WING FAILURE, RESULTING IN SUBSTANTIAL DAMAGE TO THE LAK-12 AIRCRAFT]--------------------------------V ^-[A]-V----[WING]-----V---[FAILURE,]----V-[RESULTING]-V-[IN]-V-[SUBSTANTIAL]-V-[DAMAGE]-V-[TO]-V-[THE]-V------[LAK-12]------V-[AIRCRAFT]-^ ^-[a]-^----[wing]-----^---[failure,]----^-[resulting]-^-[in]-^-[substantial]-^-[damage]-^-[to]-^-[the]-^------[lak-12]------^-[aircraft]-^ ^-[{component}]-^-[FAILURE]-V-[,]-^ ^-[LAK]-V-[-]-V-[12]-^ ^-[failure]-^ ^-[lak]-^ ^----[{aircraft}]----^
The first result from the code is the text-only representation of the Interpretation Graphs, and this is from the "text" type set on the service parameters. It comes as a single value within the "graph" field of the JSON response.
================================================= = HIGHEST CONDIFIDENCE ROUTE = ================================================= A (0.40)[pos: 0:1] -> WING (0.51)[pos: 2:6] -> FAILURE, (0.50)[pos: 7:15] -> RESULTING (0.50)[pos: 16:25] -> IN (0.40)[pos: 26:28] -> SUBSTANTIAL (0.50)[pos: 29:40] -> DAMAGE (0.50)[pos: 41:47] -> TO (0.40)[pos: 48:50] -> THE (0.40)[pos: 51:54] -> {aircraft} (1.00)[pos: 55:61] -> AIRCRAFT (0.50)[pos: 62:70]
The second result is a text representation of the highest confidence route, in this case is almost the same as the original text but since we added extra importance to the "aircraft" tag you can see it is part of the route instead of the airplane name.