Вопросы о SPARQL-запросах в WSO2 DSS

У меня вопрос по использованию запросов WSO2 DSS и SPARQL в Fedora Commons. В данный момент я запускаю WSO2 DSS со своего настольного компьютера и обращаюсь к нему как к сервису localhost. Моя конечная точка SPARQL - это удаленный сервер, на котором запущено приложение с открытым исходным кодом под названием Fedora Commons, для проверки запроса требуется базовая аутентификация, и он принимает входные данные через запросы GET или POST, причем содержимое запроса помещается в переменную "query". В этом примере мы скажем, что URL-адрес конечной точки, который я пытаюсь запросить, выглядит следующим образом:

http://fedoraAdmin:fedoraPW@fedora-server.yoyodyne.com: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:root" параметром запроса, но в данный момент это не важно. Результат вышеприведенного запроса выглядит примерно так:

<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:fedoraPW@fedora-server.yoyodyne.com: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>

В настоящее время я наблюдаю 401 Unauthorized, вероятно, из-за либо опечатки или ошибки форматирования в строке подключения, либо из-за того, что WSO2 DSS не может подключиться к конечной точке SPARQL, требующей аутентификации. Мой вопрос здесь заключается в том, как мне заставить работать вышеуказанный источник данных, учитывая мои текущие настройки? Если я не могу получить аутентификацию при работе с DSS, у меня есть возможность полностью обойти аутентификацию, если WSO2 DSS работала с другого сервера. Предполагая, что это может работать, какие изменения мне нужно внести, чтобы использовать параметр запроса "targetPID" вместо используемой в настоящее время строки "islandora:root"?

1 ответ

Ах, я думаю, что вижу проблему с этим подходом. Вау, я совершенно не понял, что должна делать операция с источником данных RDF. Забавно, как много кофе делает вещи немного яснее.

При просмотре конфигурации "Изменить источник данных" я вижу, что имя свойства "rdf_datasource" в XML-файле конфигурации указано как "Расположение файла RDF" в мастере редактора источника данных. Это заставляет меня думать, что DSS не отправляет какой-либо запрос на сервер Fedora, как я надеялся, а выполняет запрос (локально) для уже существующего результата RDF, который он ожидает загрузить с сервера Fedora.

Я думаю, мне нужно реструктурировать это как источник веб-данных, чтобы получить ожидаемый результат.

Другие вопросы по тегам