通过Java进行Amazon Neptune SPARQL查询:我能得到原始的JSON响应吗?

iq3niunx  于 2023-03-20  发布在  Java
关注(0)|答案(1)|浏览(105)

有关使用Java API进行Amazon Neptune SPARQL SELECT查询的文档仅显示了如何迭代TupleQuery的结果。amazon docs
是否有一种方法可以获得原始JSON响应,以便它与用于使用REST接口调用的代码兼容?

f87krz0w

f87krz0w1#

正如注解中所解释的,API只使用JSON REST响应,并将其作为TupleQueryResult对象呈现给您。
如果希望以某种方式接收原始JSON,可以使用任何JavaREST/HTTP客户端库直接调用NeptuneREST端点。
或者,也可以将通过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客户端效率要低,因为您基本上是反序列化,然后立即重新序列化结果,但如果您已经在使用Rdf 4j,这是最小的代码更改。

相关问题