2013-11-26 32 views
0

我在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”字符串?

回答

0

嗯,我想我看到这种方法的问题。哇,我完全误解了RDF数据源操作应该做什么。有趣的是,更多的咖啡往往会让事情变得更清晰。

通过编辑数据源配置时,我发现配置XML中的“rdf_datasource”的属性名称在数据源编辑器向导中被列为“RDF文件位置”。这让我认为DSS不会像我期望的那样向Fedora服务器发送任何查询,而是根据预期从Fedora服务器下载的预先存在的RDF结果执行查询(本地)。

我想我需要重新调整它作为一个Web数据源来获得我期待的结果。