我在Fedora Commons中使用WSO2 DSS和SPARQL查询时遇到了一个问题。目前,我正在从台式机运行WSO2 DSS并以localhost服务的身份访问它。我的SPARQL端点是一个运行名为Fedora Commons的开源应用程序的远程服务器,需要基本身份验证才能执行查询并通过GET或POST请求接受输入,并将查询内容放置在“query”var中。对于这个例子的目的,我们会说我试图查询端点URL看起来是这样的:WSO2 DSS中的SPARQL查询问题
http://fedoraAdmin:[email protected]:8080/fedora/risearch?lang=sparql
我试图运行Fedora的资源索引查询服务测试页作品查询而像这样:
PREFIX fedora: <info:fedora/fedora-system:def/relations-external#>
SELECT ?pid
FROM <#ri>
WHERE {
?pid fedora:isMemberOfCollection <info:fedora/islandora:root>
}
在某些时候,我想更换的标识:与查询参数“islandora根”,但这并不是目前非常重要的。上述查询看起来像这样的结果:
<sparql>
<head>
<variable name="pid"/>
</head>
<results>
<result>
<pid uri="info:fedora/islandora:sp_basic_image_collection"/>
</result>
<result>
<pid uri="info:fedora/islandora:sp_large_image_collection"/>
</result>
<result>
<pid uri="info:fedora/islandora:70"/>
</result>
<result>
<pid uri="info:fedora/rick:1"/>
</result>
<result>
<pid uri="info:fedora/islandora:419"/>
</result>
<result>
<pid uri="info:fedora/islandora:420"/>
</result>
</results>
</sparql>
鉴于上述情况和数据输出,我已经创造了WSO2 DSS数据服务,如下所示:
<data name="FedoraSPARQL">
<config id="FedoraDEVServer">
<property name="rdf_datasource">http://fedoraAdmin:[email protected]:8080/fedora/risearch?lang=sparql</property>
</config>
<query id="getMemberOfCollection" useConfig="FedoraDEVServer">
<sparql><![CDATA[PREFIX fedora: <info:fedora/fedora-system:def/relations-external#> SELECT ?pid FROM <#ri> WHERE {?pid fedora:isMemberOfCollection <info:fedora/islandora:root>}]]></sparql>
<result element="results" rowName="result">
<element column="pid" name="pid" xsdType="string"/>
</result>
<param name="targetPID" sqlType="STRING"/>
</query>
<operation name="getMemberOfCollection">
<description>Returns the collection objects under islandora:root</description>
<call-query href="getMemberOfCollection">
<with-param name="targetPID" query-param="targetPID"/>
</call-query>
</operation>
</data>
目前我m遇到401 Unauthorized可能是由于连接字符串中的打字错误或格式错误或WSO2 DSS可能无法连接到需要身份验证的SPARQL端点。我的问题在于如何根据当前设置使上述数据源工作?如果我无法使用DSS进行身份验证,则如果WSO2 DSS从另一台服务器上运行,我可以选择完全绕过身份验证。假设这可以起作用,那么我需要做些什么改变才能使用“targetPID”查询参数来代替当前使用的“islandora:root”字符串?