Quads for the minions

context subject verb object use

Quads version 2
user <uid> <property> <value> user properties
domain * <property> <value> domain properties
group <gid> <property> <value> group properties
<gid> <uid> <property> <value> property of a user in a group
domain <uid> rights JSON rights object user domain rights
<gid> <uid> rights JSON rights object rights of user in group
<gid> all rights JSON rights object default group rights
* role <role name> JSON rights object rights to apply for a role
77 1815 rights {
right-modify-data: 1,
right-create-thought: 1,
right-poke-authors: 0
Seth’s data rights in his group

It is possible to provide anti-rights by setting a right to 0 instead of 1 in it’s JSON block. Rights are applied in the order of author in domain then author in group then group default. Hence a group default anti-right will override author in group or author in domain. Or in other words the group has the highest possible authority on down to the author at the bottom.

The above completely define how rights are assigned, stored, and applied. The end result, in any context, is a list of rights an author has at that moment. The actual rights in the list are completely arbitrary and are checked by the system software or plugin software as appropriate using the single hasRight(name) function on client or server. Time to mentograph it please.


  1. rights
  2. minions
  3. roles
  4. item 19971


Holmes says
You might initially think that long winded right names, like right-edit-scripts, seem expensive. But in actuality, after all is said and done, they are not. This is because in that format they can be directly added to the <body> tag as class names and thus cause page variations directly through css and also be tested by jQuery code with one simple test … so in the end, having them written out like that is not only good for human readability, but also reduces the total code to use and manage them substantially, offloading much of the grunt work to css and jQuery and simplifying HTML design a lot.

Si says
You may ask. Why is the “rights” label in the verb column instead of the context column? Essentially it could be in either and perhaps having it in the context column would be more “semantic web” correct. But for practical purposes, the subject column is always used to store an author id. Hence it simplifies software to keep it that way for rights as well, instead of shifting it over to the verb column with rights and group id ahead of it. Also, rights is not only the context, but also the name of the property so it is semantically correct from another point of view to have it in the verb column.

The unusual thing is needing two subject columns. One to store the group id, and one to store the user id, so that they can be related. This is what is actually different from classic semantics. In real applications, the needs of the system often outweigh the needs of the semantics, or systems can get too complex or too slow.

Si says
nathan of group nathan 2016-02-22 07:12:21 [item 19955#46325]
Now comes the task of defining rights for all users, all groups, and then those that can be given out to individuals, that will be recognized by the base system.

Stuff similar to:


and so forth. This is where you get to be involved. cool
seth of group seth 2016-02-22 07:18:42 [item 19955#46329]
okay …

but where is the list of hasRight(name)  checks that are in the code now?  is it possible to get a list of those?
nathan of group nathan 2016-02-22 07:20:56 [item 19955#46331]
The only check is for “right-edit-scripts”. None other, as I just explained. And that is checked anywhere people could edit or submit system changing data or code outside of normal features.
seth of group seth 2016-02-22 07:26:52 [item 19955#46334]
ok … so seems we are going to back into this … 1) invent a right, 2) then you put in the check in the code, and 3) then we put the right in the table?  

but there are already rights being checked in the old code … seems i remember putting those in … and seeing them being used when a gadget appears and not … how are we to convert those to the new hasRight(name) system?
Exactly. I assumed you would want some input into that. The old rights are not rights, they are just manual checking of various things. Any of them could be converted to an actual right … but not all of them will need to be.

Probably better to simply start designing what rights make good sense, and then converting old procedures to use that right when they are the same.

See Also

  1. Thought Thinking Domain Quads with 13 viewings related by tag "rights".
  2. Thought The Mentography of Rights with 11 viewings related by tag "rights".
  3. Thought Rights table with 6 viewings related by tag "rights".
  4. Thought about: The Right's of Photographers (when shooting in public places) | static photography with 5 viewings related by tag "rights".
  5. Thought about: U.S. Seeks Silence on CIA Prisons with 4 viewings related by tag "rights".
  6. Thought FYI with 3 viewings related by tag "roles".
  7. Thought Roles People Play in Thinking Domains with 3 viewings related by tag "roles".
  8. Thought General Rights with 1 viewings related by tag "rights".
  9. Thought bug: i can think in this close group when i come from the news. with 0 viewings related by tag "rights".
  10. Thought testing please be patient with 0 viewings related by tag "rights".
  11. Thought Invitations To The Steering Committee with 0 viewings related by tag "rights".
  12. Thought the proposed right to have any linkage of my persona within a service to my physical identity removed if I close my account with 0 viewings related by tag "rights".
  13. Thought nuff said with 0 viewings related by tag "rights".
  14. Thought Virtual Rights $wish with 0 viewings related by tag "rights".
  15. Thought about: EFF: Homepage with 0 viewings related by tag "rights".