Hi all,
I am struggling to understand how to control access to virtual graphs per user.
I have successfully created a JDBC PostgreSQL data source (rdbms_company) and a virtual graph (<virtual://users>) that connects to it.
Default database configuration
With default config, I can go to the Workspace in Stardog Studio and successfully query the virtual graph, e.g.
SELECT ?s WHERE {
GRAPH <virtual://users> {
?s ?p ?o .
}
} LIMIT 5
returns what I expected. Likewise, if I create a new user (anon) with the single permission READ db mydb, I can also query the virtual graph via the HTTP API, as above, and get the same results.
Virtual graph security
To simulate preventing access to the virtual graph for anon, I then enabled in the database configuration the following options: Named Graph Security, Virtual Graph Transparency and Query All Graphs, while retanining the single permission above. After that, I could no longer get results from the query above via the HTTP API (like I expected).
However, even after assigning the following permissions to anon, I cannot go back to the scenario where the query produced results:
READ virtual-graph virtual://users
READ named-graph virtual://users
READ data-source data-source://rdbms_company
Similarly, I can no longer get results running the query with my original user in Stardog Studio, even after assigning these new permissions (irrespective of the choice of named graph in the UI, i.e. leaving it empty, choosing stardog:context:all, stardog:context:default, etc.).
I am probably missing some very basic point, but would really appreciate some help.