通过用于POST请求的Apache Jena:&q;Missing'Query&>或'UPDATE&39;参数将数据加载到AWS海王星中

Load data into AWS Neptune via Apache Jena: quot;Missing #39;query#39; gt; or #39;update#39; parameter for POST requestquot;(通过用于POST请求的Apache Jena:q;Missing#39;Query或#39;UPDATE39;参数将数据加载到AWS海王星中)

本文介绍了通过用于POST请求的Apache Jena:&q;Missing'Query&>或'UPDATE&39;参数将数据加载到AWS海王星中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试通过Apache Jena(3.14.0)将数据从普通的Spring Boot应用程序加载到AWS海王星存储中。

我使用的代码是编写的,可以与包括Anzo和fuseki在内的几个三元组存储一起工作。

从我本地的开发环境连接到海王星商店的设置是一台Rube-Goldberg机器,我不好意思在这里讨论-然而,到目前为止,连接是有效的。

我的问题特别是将数据加载到存储区(考虑POST操作)。

通过RDFConnection#load(String, Model)习惯用法加载JenaModel时,操作失败。

堆栈跟踪如下:

org.apache.jena.atlas.web.HttpException: 400 - Bad Request
    at org.apache.jena.riot.web.HttpOp.exec(HttpOp.java:1091)
    at org.apache.jena.riot.web.HttpOp.execHttpPost(HttpOp.java:721)
    at org.apache.jena.rdfconnection.RDFConnectionRemote.lambda$doPutPost$9(RDFConnectionRemote.java:458)
    at org.apache.jena.rdfconnection.RDFConnectionRemote.exec(RDFConnectionRemote.java:668)
    at org.apache.jena.rdfconnection.RDFConnectionRemote.doPutPost(RDFConnectionRemote.java:453)
    at org.apache.jena.rdfconnection.RDFConnectionRemote.load(RDFConnectionRemote.java:366)
    at [my loading code here]

也许更有帮助的是,响应中的错误消息是:

Http异常响应 {";code";:";MissingParameterException";,&Quot;DetailedMessage&Quot;:缺少‘Query’ 或POST请求的‘UPDATE’参数:[某些UUID]&Quot;}

有关常见错误的AWSdocs在这里似乎毫无用处。

错误消息的文本似乎很清楚-在某种程度上-请求缺少参数。

首先我还没有仔细了解Jena是如何构建请求的(因为我使用该框架可以很好地处理其他三元组存储),我也不知道如何从RDFConnectionjavadoc添加额外的参数。

我也没有尝试过手动向存储发送SPARQL请求,例如通过REST客户端--但我首先想使用Jena,所以在更远的地方逗留可能并不理想。

关于在Jena中使用海王星的AWStutorial非常基本,只从三元组存储中读取-因此再次声明,那里没有cookie。

同样,相同的堆栈、相同的代码、相同的数据、其他存储-->;工作正常。

有没有什么简单的方法来解决这个问题,或者我可能错过了一些文档/示例?

推荐答案

通过RDF4J批量加载到Netpune似乎是可行的两步过程。编写了生成RDF(NT文件)的程序,然后使用RDF4J控制台将其手动加载到海王星。

猜测:如果我们更深入地研究RDF4J以及海王星是如何接受来自它的批量加载的,那么在同一个程序中完成整个加载可能是可行的。

$ ./bin/console.sh
04:10:40.412 [main] DEBUG org.eclipse.rdf4j.common.platform.PlatformFactory - os.name = linux
04:10:40.416 [main] DEBUG org.eclipse.rdf4j.common.platform.PlatformFactory - Detected Posix platform
Connected to default data directory
RDF4J Console 3.6.3
Working dir: /home/bitnami/tools/eclipse-rdf4j-3.6.3
Type 'help' for help.
> create sparql
Please specify values for the following variables:
SPARQL query endpoint: https://yyy.cluster-xxx.us-east-1.neptune.amazonaws.com:8182/sparql
SPARQL update endpoint: https://yyy.cluster-xxx.us-east-1.neptune.amazonaws.com:8182/sparql
Local repository ID [endpoint@localhost]: test
Repository title [SPARQL endpoint repository @localhost]: test Graph data model PoC
Repository created
> open test

test> sparql select ?s ?p ?o where {?s ?p ?o} limit 10
Evaluating SPARQL query...
+------------------------+------------------------+------------------------+
| s                      | p                      | o                      |
+------------------------+------------------------+------------------------+
| <https://test.com/s>   | <https://test.com/p>   | <https://test.com/o>   |
+------------------------+------------------------+------------------------+
1 result(s) (671 ms)

test> clear

test> load /home/bitnami/projects/model/sparql-client/output/model.nt

这篇关于通过用于POST请求的Apache Jena:&q;Missing&#39;Query&>或&#39;UPDATE&39;参数将数据加载到AWS海王星中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:通过用于POST请求的Apache Jena:&q;Missing&#39;Query&>或&#39;UPDATE&39;参数将数据加载到AWS海王星中