Запрос Amazon Neptune SPARQL через Java: могу ли я получить необработанный ответ JSON? - PullRequest
0 голосов
/ 16 мая 2019

В документах по использованию Java API для Amazon Neptune Запросы SPARQL SELECT показывают только, как выполнять итерацию по результатам TupleQuery. amazon docs

Есть ли способ получить необработанный ответ JSON , так что он совместим с кодом, который использовался для вызовов интерфейса REST?

1 Ответ

1 голос
/ 17 мая 2019

Как объяснено в комментариях, Java API просто использует ответ JSON REST и представляет его вам как TupleQueryResult объект.

Если вы хотите каким-либо образом получить необработанный JSON, вы можете просто вызвать конечную точку REST Neptune напрямую, используя любую клиентскую библиотеку Java REST / HTTP.

В качестве альтернативы можно также повторно преобразовать результат, возвращаемый через API Rdf4j , в JSON (или любой другой сериализованный формат) следующим образом:

public static void main( String[] args )
    {
        String sparqlEndpoint = "https://your-neptune-endpoint:port/sparql";
        Repository repo = new SPARQLRepository(sparqlEndpoint);
        repo.initialize();

        try (RepositoryConnection conn = repo.getConnection()) {
           String queryString = "SELECT ?s ?p ?o WHERE { ?s ?p ?o } limit 10";

           TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString);

           TupleQueryResultHandler jsonWriter = new SPARQLResultsJSONWriter(System.out);
           tupleQuery.evaluate(jsonWriter);
        }
    }

Конечно, это менее эффективно, чем использование REST-клиента напрямую, поскольку вы в основном десериализуете, а затем сразу же повторно сериализуете результат, но это минимальное изменение кода, если вы все равно уже используете Rdf4j.

...