有关使用Java API进行Amazon Neptune SPARQL SELECT查询的文档仅显示了如何迭代TupleQuery的结果。amazon docs是否有一种方法可以获得原始JSON响应,以便它与用于使用REST接口调用的代码兼容?
f87krz0w1#
正如注解中所解释的,API只使用JSON REST响应,并将其作为TupleQueryResult对象呈现给您。如果希望以某种方式接收原始JSON,可以使用任何JavaREST/HTTP客户端库直接调用NeptuneREST端点。或者,也可以将通过Rdf4j API返回的结果重新转换为JSON(或任何其他序列化格式),如下所示:
TupleQueryResult
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,这是最小的代码更改。
1条答案
按热度按时间f87krz0w1#
正如注解中所解释的,API只使用JSON REST响应,并将其作为
TupleQueryResult
对象呈现给您。如果希望以某种方式接收原始JSON,可以使用任何JavaREST/HTTP客户端库直接调用NeptuneREST端点。
或者,也可以将通过Rdf4j API返回的结果重新转换为JSON(或任何其他序列化格式),如下所示:
当然,这比直接使用REST客户端效率要低,因为您基本上是反序列化,然后立即重新序列化结果,但如果您已经在使用Rdf 4j,这是最小的代码更改。