Curl 查询MarkLogic 7 SPARQL端点

Curl 查询MarkLogic 7 SPARQL端点,curl,sparql,marklogic,Curl,Sparql,Marklogic,这用于查询Virtuoso SPARQL端点: curl-url[http主机端口]/sparql-data-urlencodequery@all.q 这是什么 选择*where{s?p?o} 这不适用于查询MarkLogic 7 SPARQL端点,我正在使用MarkLogic 7语义开发人员指南第5.3.6.1页中的示例。112,作为我的向导: curl-H内容类型:应用程序/sparql查询-H接受: 应用程序/sparql结果+xml-数据二进制'@./all.q'[http主机 端口]/

这用于查询Virtuoso SPARQL端点:

curl-url[http主机端口]/sparql-data-urlencodequery@all.q

这是什么

选择*where{s?p?o}

这不适用于查询MarkLogic 7 SPARQL端点,我正在使用MarkLogic 7语义开发人员指南第5.3.6.1页中的示例。112,作为我的向导:

curl-H内容类型:应用程序/sparql查询-H接受: 应用程序/sparql结果+xml-数据二进制'@./all.q'[http主机 端口]/v1/graphs/sparql

结果是:

<sparql xmlns="http://www.w3.org/2005/sparql-results#"><head/><results/></sparql>
该查询在MarkLogic7 qconsole中运行良好。文档是否与软件稍微不同步,或者我做错了什么


谢谢您的建议。

您使用的是哪个版本的MarkLogic

你确定你的应用服务器连接到了正确的数据库吗

那么安全呢?您可能正在以管理员用户的身份运行qconsole。curl请求将作为您指定的任何用户运行,通过curl-digest-u或通过appserver配置进行身份验证和默认用户。如果该用户没有查看数据的权限,则可以解释空结果。例如,您是否已将应用程序服务器配置为以无人身份运行所有请求

我能够在7.0-3实例上设置REST端点,并从curl访问它。我使用中的示例插入了一些数据。通过qconsole和curl使用您的查询显示相同的数据。curl请求的结果是:

urn:isbn:9780080540160 http://purl.org/dc/elements/1.1/title 在上下文中查询XML、XQuery、XPath和SQL/XML

或者在JSON中,使用application/sparql results+JSON:

{ 负责人:{ 变量:[ s P o ] }, 结果:{ 绑定:[ { s:{ 类型:uri, 值:urn:isbn:9780080540160 }, p:{ 类型:uri, 值:http:\/\/purl.org\/dc\/elements\/1.1\/title }, o:{ 类型:literal, 值:上下文中的查询XML、XQuery、XPath和SQL\/XML, 数据类型:http:\/\/www.w3.org\/2001\/XMLSchemastring } } ] } }

我使用的是与您相同的MarkLogic版本。身份验证是应用程序级的基本结果,会导致身份验证错误,默认用户为nobody。我像上面一样成功地插入了数据,可以在qconsole中看到,但不能通过curl看到;响应仍然为空。我通过使用默认用户markadmin解决了问题。感谢您的回复。几乎可以肯定,nobody用户没有权限查看您插入的文档。我将通过将服务器更改为digest auth并使用curl-digest-u user:password来解决这个问题。但是您也可以将默认用户更改为管理员用户,或者更改与qconsole一起使用的任何登录名。