通过Java的Amazon Neptune SPARQL查询:是否可以获取原始JSON响应?

时间:2019-05-16 20:55:35

标签: json sparql amazon amazon-neptune

有关将Java API用于Amazon Neptune SPARQL SELECT查询的文档仅显示如何遍历TupleQuery的结果。 amazon docs

是否可以获取原始JSON响应,因此它与用于REST接口调用的代码兼容?

1 个答案:

答案 0 :(得分:1)

就像评论中解释的那样,Java API仅使用JSON REST响应并将其作为TupleQueryResult对象呈现给您。

如果希望以某种方式接收原始JSON,则可以直接使用任何Java REST / HTTP客户端库直接调用Neptune REST端点。

或者,也可以将通过Rdf4j API返回的结果重新转换为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,这是最小的代码更改。