Amazon Neptune SPARQL Java查询:我可以获得原始JSON响应吗?
用于Amazon Neptune SPARQL SELECT查询的Java API使用文档仅显示如何迭代TupleQuery的结果。Amazon Neptune SPARQL Java查询:我可以获得原始JSON响应吗?,json,sparql,amazon,amazon-neptune,Json,Sparql,Amazon,Amazon Neptune,用于Amazon Neptune SPARQL SELECT查询的Java API使用文档仅显示如何迭代TupleQuery的结果。 有没有办法获得原始JSON响应,使其与使用REST接口调用的代码兼容 如注释中所述,Java API只使用JSON REST响应,并将其作为TupleQueryResult对象呈现给您 如果您希望以某种方式接收原始JSON,您可以直接使用任何JavaREST/HTTP客户端库调用Neptune REST端点 或者,您还可以将通过API返回的结果重新转换为JSON
有没有办法获得原始JSON响应,使其与使用REST接口调用的代码兼容 如注释中所述,Java API只使用JSON REST响应,并将其作为
TupleQueryResult
对象呈现给您
如果您希望以某种方式接收原始JSON,您可以直接使用任何JavaREST/HTTP客户端库调用Neptune REST端点
或者,您还可以将通过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,这只是一个最小的代码更改。不清楚您在问什么。要获得原始JSON响应,可以使用也称SPARQL协议。问题到底是什么?Java代码只是使用REST API并在结果上提供Java接口。我很高兴使用REST,但身份验证协议非常重要(以标准方式检索凭据并构建签名密钥)。我喜欢API为我处理这一点,但原始JSON更适合我的应用程序。理想的解决方案实际上是找出ApacheHTTP调用的凭据管理器和签名者,然后执行REST。我找不到示例,因此认为API更标准,更易于维护。您链接到的Java文档不处理AFAICT身份验证。它只使用RDF4J的标准SPARQL客户端。我认为文档假定您的Java代码与Neptune运行在同一虚拟私有云中的EC2实例上,因此不需要身份验证?如果我知道的足够多,可以提出正确的问题,这就是答案。我确实认为其余的电话会更好。我已经重新设计了我的问题,以获得有关如何拨打这些电话的帮助: