Concept: Modelling a Simple Use-Case with The Supergraph

1 create participation process and content
Superuser Father has an Instance Hive. He adds an a participation project “Homestuff” to discuss proposals. He creates an proposal “dishwash table” and allows other users to access the proposal.
2a user disagrees and comments - user statement about content
A user Alice looks at an existing proposal. She states her disagreement with the proposal (using a “disagree” button). She justifies her disagreement with a short text.
2a user agrees
User Carl looks at everything, and annotates the proposal with an agreement (using an “agree” button).
3 user seconds disagreement - user statement about statement
User Bob looks at the proposal, sees Alice’s reaction and states that he seconds both her disagreement and the justifying text.

interfaces that are inherited from

INode:
deps() : { <node> : { <interface> : [ <attr> ] } } refs() : { <attr> : <node> }

IAssessment(INode):

@essence uid : string

@essence object : INode

IAssessable(INode):

@not_essence assessments : [IAssessment]

concrete interfaces

IUser(INode):

name : str

uid : str

@not_essence user_assessments : [IAssessment]

IProposal(INode, IAssessable):

@essence title : str

@essence content : string

IDisagreement(IAssessment, IAssessable):

(uid : str) (object : IProposal)

@essence rationale : string

IAgreement(IAssessment, IAssessable):

(uid : str) (object : IProposal)

@essence rationale : string

ISeconds(IAssessment):
(uid : string) (object : IAssessment)

where to put everything

IPool(INode):
@not_essence contents : set(INode)
IProposalPool(IPool):
(contents : set(IProposal))
IAssessmentPool(IPool):
(contents : set(IAssessment))
IMyParticipationProcess(IPool):
@not_essence assesments : IAssessmentPool @not_essence proposals : IProposalPool
IUserPool(IPool):
(contents : set(IUser))
IInstance(IPool):
@not_essence contents: set(IPool) @not_essence users : IUserPool