Review database schema / thought process
Recommendations are as follows:


For access control use the groups instead of individual users. Create a group called public to which all users belong therefore any graphs assigned to public will be visible. Look to Role Based Access Control (RBAC) for more on this 
Each graph can be accessed by one or more groups, which allows you to have graphs that are visible to different cross sections of users (through groups). This means your access table will be graphid, groupid, edit, view with a unique key constraint on graphid and groupid. 
Answering the question can a user edit this graph will require a join from User_Group to Access table 
There is no special meaning for nulls, as none exist 
Handling users with no account is easier since no authentication is provided
For the graphs, you need a graph table, and also a graphid added to the node and relation tables to simplify queries.