Select 通过 REST 存储库 API

Select repository via the REST API

我正在尝试使用新的嵌入式可视化功能。我有一个指向 graphdb 服务器的 iframe,格式为 url:

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

这很好用,但仅适用于默认或以前 selected 存储库。我无法找到 select 存储库的方法,而不必手动转到 http://localhost:7200/

似乎存储库 selection 存储在 cookie 中,并且 X-GraphDB-Repository HTTP header 可用,但似乎无法与 iframe 一起使用。

有没有办法通过 url 访问 select 存储库? &repository= 就完美了。

更多细节:我们有一个应用程序有 N "studies" 支持 N 个存储库(使用 SPARQL 查询),当用户 select 是一个研究,然后是一个 uri,我们想显示一个视觉对象图 iframe。这适用于默认或以前 selected 存储库,但是当她去另一项研究时,我们需要一种方法来透明地 update/select Workbench 应用程序中的存储库。

我们目前看到的唯一解决方案是使用代理来动态设置 cookie。但这似乎有些矫枉过正。

GraphDB Workbench 有两种机制来控制当前选择的存储库。为了说明这一点,请打开“设置”>“存储库”页面并检查:

(1) "Connect repository" 图标(存储库列表中的第一个选项)通过将其存储在本地存储来控制当前选定的存储库。检查 what is the difference between local storage and a cookie.

(2) "Set as default repository" 图标(存储库列表中的最后一个选项)控制默认服务器存储库。选择默认存储库后,服务器会假定向哪个存储库发送所有 HTTP 请求,例如链接数据发布或您的情况下的可视化图形。

我们最终决定配置一个 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;
  }
}