我正在尝试使用新的嵌入式可视化功能。我有一个iframe指向带有url的graphdb服务器:
http://localhost:7200/graphs-visualizations?uri=[...]&embedded
工作正常,但仅适用于默认或以前选择的存储库。我无法找到一种方法来选择存储库而无需手动转到http://localhost:7200/
似乎存储库选择存储在cookie中,并且X-GraphDB-Repository
HTTP标头可用,但似乎没有任何内容可用于iframe。
有没有办法通过网址选择存储库? &repository=
会很完美。
更多细节:我们有一个应用程序,N个“研究”支持N个存储库(使用SPARQL查询),当用户选择一个研究,然后是一个uri,我们想要显示一个Visual Graph iframe。这适用于默认或以前选择的存储库,但当她进入另一项研究时,我们需要一种方法来透明地更新/选择Workbench应用程序中的存储库。
我们目前看到的唯一解决方案是使用可以动态设置cookie的代理。但这似乎有点矫枉过正。
答案 0 :(得分:2)
GraphDB Workbench有两种机制来控制当前选定的存储库。为了说明这个打开的设置>存储库页面并检查:
(1)" Connect repository" icon(存储库列表中的第一个选项)通过将其存储在本地存储中来控制当前选定的存储库。查看what is the difference between local storage and a cookie.
(2)"设置为默认存储库" icon(存储库列表中的最后一个选项)控制默认服务器存储库。当选择默认存储库时,服务器会假定将哪个存储库分派给所有HTTP请求,例如链接数据发布或类似于Visual Graph的情况。
答案 1 :(得分:0)
我们最终决定配置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;
}
}