我尝试通过sparql端点和rdf4j(2.1.4)中的sparql存储库查询marklogic服务器(version 8),但是marklogic端点似乎不接受这些sparql查询。
代码示例:
String sparqlEndpoint = "http://url/v1/graphs/sparql";
SPARQLRepository repo = new SPARQLRepository(sparqlEndpoint);
repo.initialize();
repo.getConnection().hasStatement(null, null, null, false);这将导致以下错误:
"errorResponse":{"statusCode":400,“状态”:“坏请求”,"messageCode":"REST-UNSUPPORTEDPARAM","message":"REST-UNSUPPORTEDPARAM:(err: for 0000)端点不支持查询参数:无效参数: queryLn,推断请求“}}
有什么建议吗?
发布于 2017-02-04 23:20:31
正如大卫·恩尼斯在回答中所解释的那样,问题是RDF4J的SPARQL端点客户端在其请求中发送了几个参数,这些参数不是W3C SPARQL 1.1协议的一部分;它们是RDF4J REST ( SPARQL协议的扩展)的一部分。
虽然大多数SPARQL端点实现只是忽略不属于标准的参数(或记录警告),但MarkLogic实现了更严格的策略,并且干脆拒绝响应此类请求。
在您的情况下,一个解决方案是升级到RDF4J 2.2。这个新版本实现了改进#721,它确保只向非RDF4JSPARQL端点发送符合标准的参数,并且(假设MarkLogic是符合标准的),这将解决与MarkLogic端点通信中的问题。
发布于 2017-01-13 19:51:46
MarkLogic不接受名为queryLn (查询语言)的参数。
这些语言是SARQL和StructuredQueries,并使用不同的参数传递这两种语言。
请参阅这里的文档:https://docs.marklogic.com/REST/GET/v1/graphs/sparql
我建议您找到一种方法来抑制进行调用的代码中的queryLn参数。
https://stackoverflow.com/questions/41636896
复制相似问题