本文介紹了通過用于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';Query&>或';UPDATE&39;參數將數據加載到AWS海王星中的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,