Выберите репозиторий через REST API

Я пытаюсь использовать новую встроенную функцию визуализации. У меня есть iframe, который указывает на сервер graphdb с URL-адресом в форме:

http://localhost:7200/graphs-visualizations?uri=[...ght&embedded

Это нормально работает, но только для репозитория по умолчанию или для ранее выбранного репозитория. Я не могу найти способ выбрать репозитории, не переходя вручную на http://localhost:7200/

Кажется, что выбранный репозиторий хранится в файле cookie и доступен HTTP-заголовок X-GraphDB-Repository, но с iframe ничего не работает.

Есть ли способ выбрать репозитории через url? &repository= было бы идеально.

Более подробно: у нас есть приложение с N «исследованиями», поддерживаемыми N репозиториями (с запросами SPARQL), когда пользователь выбирает исследование, а затем uri, мы хотим отобразить iframe Visual Graph. Это работает для репозитория по умолчанию или для ранее выбранного репозитория, но когда она переходит к другому исследованию, нам нужен способ прозрачного обновления / выбора репозитория в приложении Workbench.

Единственное решение, которое мы видим на данный момент, - это использовать прокси, который будет устанавливать cookie на лету. Но это кажется излишним.


person Placoplatr    schedule 24.05.2018    source источник


Ответы (2)


GraphDB Workbench имеет два механизма для управления текущим выбранным репозиторием. Чтобы проиллюстрировать это, откройте страницы Setup> Repositories и проверьте:

(1) значок «Подключить репозиторий» (первая опция в списке репозиториев) управляет текущим выбранным репозиторием, сохраняя его в локальном хранилище. Проверьте в чем разница между локальным хранилищем и файлом cookie.

(2) значок «Установить как репозиторий по умолчанию» (последний вариант в списке репозиториев) управляет репозиторием сервера по умолчанию. Когда выбран репозиторий по умолчанию, сервер предполагает, в какой репозиторий отправлять все HTTP-запросы, такие как публикация связанных данных или как в вашем случае Visual Graph.

person vassil_momtchev    schedule 26.05.2018
comment
Спасибо за ответ, но я тоже не могу настроить локальное хранилище через iframe. Я хочу встроить визуализацию в приложение, которое поддерживает несколько репозиториев, чтобы пользователю не приходилось вручную переходить в другой домен и вручную выбирать репозиторий. - person Placoplatr; 28.05.2018
comment
Вы хотите предоставить доступ к нескольким репозиториям, управляемым пользователем, с помощью одного Visual Graph? - person vassil_momtchev; 29.05.2018
comment
У нас есть приложение с N исследованиями, поддерживаемыми N репозиториями (с запросами SPARQL), когда пользователь выбирает исследование, а затем uri, мы хотим отобразить iframe Visual Graph. Это работает для репозитория, выбранного по умолчанию, но когда она переходит к другому исследованию, нам нужен способ прозрачного обновления / выбора репозитория в приложении Workbench. - person Placoplatr; 30.05.2018

Наконец мы решили настроить обходной путь прокси-сервера nginx. Он работает хорошо, но функция запроса ?repository= определенно отсутствует.

map $arg_repository $repo_cookie {
  "~^(?<repo>[0-9a-f]{32})$" "com.ontotext.graphdb.repository7200=$repo";
}

server {
  listen 7200;
  server_name localhost;

  location / {
    add_header Set-Cookie $repo_cookie;
    proxy_pass http://graphdb:7200;
  }
}
person Placoplatr    schedule 20.06.2018