繁体   English   中英

通过 Apache Jena 将数据加载到 AWS Neptune:“Missing 'query' > or 'update' parameter for POST request”

[英]Load data into AWS Neptune via Apache Jena: "Missing 'query' > or 'update' parameter for POST request"

我正在尝试通过 Apache Jena (3.14.0) 将数据从普通的 Spring Boot 应用程序加载到 AWS Neptune 商店中。

我正在使用的代码已经编写完成,并且适用于一些三元组存储,包括 Anzo 和 Fuseki。

甚至从我的本地开发环境连接到 Neptune 商店的设置是一台 Rube-Goldberg 机器,我很羞于在这里讨论——但是,到目前为止,连接“有效”。

我的问题特别在于将数据加载到商店中(想想 POST 操作)。

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

堆栈跟踪看起来像:

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","detailedMessage":"缺少 POST 请求的'query'或'update'参数","requestId":"[some UUID]"}

关于常见错误的 AWS 文档在这里似乎没有用。

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

我还没有仔细研究 Jena 最初是如何构建请求的(因为我对该框架的使用与其他三元组商店配合得很好),而且我也不了解如何从 RDFConnection javadoc添加额外的参数。

我也没有尝试手动将 SPARQL 请求发送到商店,例如通过 REST 客户端 - 但我首先想使用 Jena,所以停留这么远可能并不理想。

关于将 Neptune 与 Jena 结合使用的 AWS 教程非常基础,只能从三重存储中读取 - 所以再一次,那里没有 cookie。

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

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

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

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

$ ./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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM