|
| 1 | +@startuml |
| 2 | +skinparam nodesep 10 |
| 3 | +hide circle |
| 4 | +hide empty members |
| 5 | +class "SpaceAccess" [[{An access control entry for a space}]] { |
| 6 | + {field} editor : boolean |
| 7 | +} |
| 8 | +class "Account" [[{A user account on a platform}]] { |
| 9 | + {field} id : integer |
| 10 | + {field} write_permission : boolean |
| 11 | + {field} active : boolean |
| 12 | +} |
| 13 | +class "Space" [[{A space on a platform representing a community engaged in a conversation}]] { |
| 14 | + {field} id : integer |
| 15 | + {field} url : string |
| 16 | + {field} name : string |
| 17 | +} |
| 18 | +"SpaceAccess" --> "1" "Account" : "account" |
| 19 | +"SpaceAccess" --> "0..1" "Space" : "space" |
| 20 | +class "Platform" [[{A data platform where discourse happens}]] { |
| 21 | + {field} id : integer |
| 22 | + {field} name : string |
| 23 | + {field} url : string |
| 24 | +} |
| 25 | +class "Content" [[{A unit of content}]] { |
| 26 | + {field} id : integer |
| 27 | + {field} source_local_id : string |
| 28 | + {field} created : datetime |
| 29 | + {field} text : string |
| 30 | + {field} metadata : JSON |
| 31 | + {field} scale : Scale |
| 32 | + {field} last_modified : datetime |
| 33 | +} |
| 34 | +class "Document" [[{None}]] { |
| 35 | + {field} id : integer |
| 36 | + {field} source_local_id : string |
| 37 | + {field} url : string |
| 38 | + {field} created : datetime |
| 39 | + {field} metadata : JSON |
| 40 | + {field} last_modified : datetime |
| 41 | + {field} contents : blob |
| 42 | +} |
| 43 | +class "Concept" [[{An abstract concept, claim or relation}]] { |
| 44 | + {field} id : integer |
| 45 | + {field} epistemic_status : EpistemicStatus |
| 46 | + {field} name : string |
| 47 | + {field} description : string |
| 48 | + {field} created : datetime |
| 49 | + {field} last_modified : datetime |
| 50 | + {field} arity : integer |
| 51 | + {field} content : JSON |
| 52 | + {field} is_schema : boolean |
| 53 | +} |
| 54 | +"Space" --> "1" "Platform" : "platform" |
| 55 | +"Content" --> "0..1" "Space" : "space" |
| 56 | +"Document" --> "0..1" "Space" : "space" |
| 57 | +"Concept" --> "0..1" "Space" : "space" |
| 58 | +"Account" --> "1" "Platform" : "platform" |
| 59 | +abstract "Agent" [[{An agent that acts in the system}]] { |
| 60 | + {field} id : integer |
| 61 | + {field} type : EntityType |
| 62 | +} |
| 63 | +"Document" --> "0..*" "Agent" : "contributors" |
| 64 | +"Document" --> "1" "Agent" : "author" |
| 65 | +"Content" --> "1" "Document" : "document" |
| 66 | +class "ContentEmbedding" [[{None}]] { |
| 67 | + {field} model : EmbeddingName |
| 68 | + {field} vector : vector |
| 69 | + {field} obsolete : boolean |
| 70 | +} |
| 71 | +"ContentEmbedding" --> "1" "Content" : "target" |
| 72 | +"Content" --> "0..1" "Content" : "part_of" |
| 73 | +"Content" --> "0..*" "Agent" : "contributors" |
| 74 | +"Content" --> "1" "Agent" : "creator" |
| 75 | +"Content" --> "1" "Agent" : "author" |
| 76 | +"Concept" --> "0..1" "Content" : "represented_by" |
| 77 | +class "ConceptSchema" [[{None}]] { |
| 78 | + {field} id(i) : integer |
| 79 | + {field} epistemic_status(i) : EpistemicStatus |
| 80 | + {field} name(i) : string |
| 81 | + {field} description(i) : string |
| 82 | + {field} created(i) : datetime |
| 83 | + {field} last_modified(i) : datetime |
| 84 | + {field} arity(i) : integer |
| 85 | + {field} content(i) : JSON |
| 86 | + {field} is_schema(i) : boolean |
| 87 | +} |
| 88 | +"Concept" --> "1" "ConceptSchema" : "schema" |
| 89 | +"Concept" --> "0..*" "Agent" : "contributors" |
| 90 | +"Concept" --> "1" "Agent" : "author" |
| 91 | +"Concept" ^-- "ConceptSchema" |
| 92 | +class "Person" [[{A person using the system}]] { |
| 93 | + {field} name : string |
| 94 | + {field} orcid : string |
| 95 | + {field} email : string |
| 96 | + {field} id(i) : integer |
| 97 | + {field} type(i) : EntityType |
| 98 | +} |
| 99 | +class "AutomatedAgent" [[{An automated agent}]] { |
| 100 | + {field} metadata : JSON |
| 101 | + {field} name : string |
| 102 | + {field} deterministic : boolean |
| 103 | + {field} version : string |
| 104 | + {field} id(i) : integer |
| 105 | + {field} type(i) : EntityType |
| 106 | +} |
| 107 | +"Account" --> "1" "Agent" : "person" |
| 108 | +"Agent" ^-- "Person" |
| 109 | +"Agent" ^-- "AutomatedAgent" |
| 110 | +@enduml |
0 commit comments