Documentation of the Entity Table


Concepts

Natural Selection
supported in so far as all entities are subject to evaluation and subsequent filtering and sorting
Nesting
Inheritance
Models and their NodeTypes and EdgeTypes can inherit characteristics from other Models.
Instantiation
When one entity is the 'type' of another entity (and they're of different classes), then its as if the first entity is a classic OOP Class and the other is an instantance of that Class.

Entities in the Entity Table

Entity ClassDescriptionExamples
PersonType
  • Defines the different type of user
  • 'type' field could refer to another PersonType
  • Real Person
  • Robot
  • Idea Engine
  • Script?
Person
  • One record per 'registered' user
  • 'name' contains email address
  • 'type' field refers to PersonType
  • 'dateNtime' holds inception date of Person record
  • 'arg1' holds last logon date
    [this needs attention]
  • 'arg2' holds encrypted password
    [this needs attention]
  • 'text' field holds specially formatted Person Description info (specified by DTD, of course)
  • michaelm@afternet.com is a Real Person
  • ie@emerge.org is an Idea Engine
  • smurp@emerge.org is a Robot
Model
(ForumType)
  • An abstraction that an individual Forum is a mere instance of.
  • 'type' field refers to Models, defining a hierarchy of Models
  • Models contain NodeTypes and EdgeTypes.
  • Graph
  • State Transition Model
  • Entity Relationship Model
  • Flowchart
  • Tree
NodeType
  • An ideal that an individual Node is a mere instance of.
  • 'type' field refers to NodeType of an ancestral Model's NodeTypes
  • NodeTypes are defined within the context of a Model
  • has code associated with it to display associated Nodes (e.g. postscript (or java) to draw a diamond for a Decision Box)
within Model 'Flowchart':
  • Decision Box
  • User Input Box
  • Process Box
EdgeType
  • An ideal that an individual Edge is a mere instance of.
  • 'type' field refers to EdgeType of an ancestral Model's EdgeTypes
  • EdgeTypes are defined within the context of a Model.
  • has code associated with it to display associated Edges (e.g. postscript (or java) to draw a double-arrowhead for one-to-many)
within Model 'Entity Relationship':
  • one to many
  • one to one
  • lookup
Forum
  • Topics of discussion, vaguely like newsgroups. The 'type'
  • 'type' field refers to Models
  • Forums contain Nodes, Edges and Criteria
  • The Model refered to in a Forum's type field determines which NodeType and EdgeTypes are employed within the Forum.
  • Quebec and Canada
  • Owners Opinions on the Ferrari Testarosa(sp?)
  • Health Care in Alberta
  • The Grade 9 Curriculum
Node
  • Individual ideas, vertices or objects in a Forum.
  • 'type' field refers to NodeType
  • vaguely like individual posts in a newsgroup
in the Forum 'starting a fire'
  • gather wood
  • prepare kindling
  • pour on gasoline
  • light match
Edge
  • Connection between two other entities
  • 'type' field refers to EdgeType
  • 'arg1' is the id of the "from" entity
  • 'arg2' is the id of the "to" entity
AnnotationType
  • provides a type for Annotations
  • pro
  • con
  • meta
  • style
  • joke
Annotation
  • a comment attached to any kind of entity
  • of type AnnotationType
  • annotations of annotations provide discussion 'threading' on the topic of the entity originally linked to
  • 'arg1' is the id of the entity being annotated
  • "gosh, what a silly idea"
  • "actually, dufus is spelled 'doofous'"
  • "please tell me where the dirty pictures are..."
  • "me too!"
CriterionType
  • provides a type for Criteria
  • ?? 'type' field not used ??
  • some Criteria will only make sense for Nodes, others for Edges or World Views
  • for use on all entities
  • for use on forums
  • for use on nodes
  • for use on world views
Criterion
  • defines a dimension along which evaluations may occur
  • 'type' field refers to CriterionType
  • criteria are defined with respect to a Forum
  • plausability
  • environmental impact
  • return on investment
Evaluation
  • a person's evaluation of a entity with respect to a criterion
  • 'type' field refers to the Criterion
  • 'arg1' field refers to the Entity being evaluated
  • 'arg2' field contains the evaluation
World View
  • specifies a Filter Set and a Display Set to view a Forum with
  • 'type' field ???
  • 'arg1' is the id of the filter set
  • 'arg2' is the id of the display set
  • "banker's view" - Nodes created in past week viewed by profit vs ROI
  • "deep ecology" - Nodes deemed by 95% as very low environmental impact
  • "ACLU"
Filter Set
  • determines which nodes and edges will be displayed
  • a set of calls to Filter Functions along with parameters
  • 'type' field ???
  • named and saved so they can be reused and evaluated
  • the 'source code' (see examples) is stored in the 'text' field
  • createdBy('dave','chris')
    and avgEval('plausability','> 0.75')
  • createdSince(myLastLogon)
    and (evalBy('environmental impact','tooker','<0.1')
    or avgEval('profitability','>0.9'))
Display Set
  • determines the appearance of the information displayed
  • a set of calls to Display Functions along with parameters
  • 'type' field ???
  • named and saved so they can be reused and evaluated
  • the 'source code' (see examples) is stored in the 'text' field
  • diameter('consensuality','chris')
    xposition('stability',avg)
    yposition('time',avgExclude('dufus','otherdufus'))
    zposition('plausability',min)
Filter Function
  • Filters are user contributable routines which determine which Entities are displayed in Idea Engine output
  • 'type' field ???
  • the source code for Filter is stored in the 'text' field
  • createdBy(entitySpec,person_idList)
    # selects entities of specified classes created by listed people
  • avgEval(entitySpec,criterion_id,expression)
    # selects entities of specified classes with average evaluations WRT a named criterion which match the expression
  • evalBy(entitySpec,criterion_id,person_id,expression)
    # selects entities of specified classes which WRT a criterion_id person_id's evaluation matches expression
Display Function
  • Display Functions are user contributable routines which determine how information is displayed in Idea Engine output
  • 'type' field ???
  • the source code for Display Functions is stored in the 'text' field
  • diameter(criterion_id,valueSource)
  • xposition(criterion_id,valueSource)
  • yposition(criterion_id,valueSource)
  • zposition(criterion_id,valueSource)

Fields in the Entity Table

 +-----------------+----------+--------+----------+-----+
 |     Field       |   Type   | Length | Not Null | Key |
 +-----------------+----------+--------+----------+-----+
 | id              | char     | 10     | Y        | Y   |
 | name            | char     | 40     | Y        | N   |
 | type            | char     | 10     | Y        | N   |
 | person_id       | char     | 10     | Y        | N   |
 | dateNtime       | char     | 19     | Y        | N   |
 | arg1            | char     | 10     | Y        | N   |
 | arg2            | char     | 10     | Y        | N   |
 +-----------------+----------+--------+----------+-----+
There should also be a 'text' field which must be capable of holding any size data, but the prototype is using mSQL as the datastore and it can't manage such fields. Currently the 'text' field is implemented as a separate file for each record which uses the field. Such files are simply named after the entity's id.

Overview of Field Usage by each Entity Class

The fields marked with a * are used uniformly:
namethe name of the entity
person_idthe creator of the entity
dateNtimethe date and time of the creation of the entity
entity classidname*typeperson_id*dateNtime*arg1arg2
Model4 char keyid of another Model
NodeTypeModel id
+ 5 char key
id of ancestor NodeType
EdgeTypeModel id
+ 5 char key
id of ancestor EdgeType
Forum4 char keya Model id
NodeForum id
+ 5 char key
a NodeType id
EdgeForum id
+ 5 char key
a NodeEdge idthe id of the 'from' entitythe id of the 'to' entity
AnnotationTypeModel id
+ 5 char key
id of ancestor AnnotationType
AnnotationForum id
+ 5 char key
an AnnotationType id
CriterionType9 char key
Criterion9 char keya CriterionType id
Evaluation9 char keya Criterion idid of Entity evaluatedthe evalution
following are incomplete
World View4 char key???a Filter Set ida Display Set id
Filter Set4 char keyid of another Model
Display Set4 char keyid of another Model
Filter Function4 char keyid of another Model
Display Function4 char keyid of another Model

The ID Field

The ID field has a slightly different structure for each type of entity in the table. All entity classes use the first letter of the ID field to identify the entity's class.

limits on the numbers of each kind of entity

One might be concerned about the size of the name space with only 10 characters. If we use BASE64 (0-9,A-Z,a-z,+,-) rather than BASE10 we get the following limits.
'key' sizemaximum numberEntities affected
464^4 = 1.67e+07 = 16 millionModels, Forums
564^5 = 1.07e+09 = 1 billionNodeTypes, Nodes, EdgeTypes, Edges
964^9 = 1.80e+16 = 10 quadrillionAnnotations

structure of the ID field on a per-entity basis

Prototype Entity Class Notes
Mmmmm Model
(ForumType)
M identifies the entity as a Model
mmmm distinguishes the Model from other Models
nmmmmnnnnn NodeType n identifies the entity as a NodeType
mmmm attaches the NodeType to its Model (Mmmmm)
nnnnn distinguishes the NodeType from others in the model
emmmmeeeee EdgeType e identifies the entity as an EdgeType
mmmm attaches the EdgeType to its Model (Mmmmm)
eeeee distinguishes the EdgeType from others in the Model
Fffff Forum F identifies the entity as a Forum
ffff distinguishes the Forum from other Forums
Nffffnnnnn Node N identifies the entity as a Node
ffff attaches the node to its forum (Fffff)
nnnnn distinguishes the node from others in the forum
Effffeeeee Edge E identifies the entity as an Edge
ffff attaches the edge to its forum (Fffff)
eeeee distinguishes the edge from others in the forum
aaaaaaaaaa AnnotationType a identifies the entity as an AnnotationType
aaaaaaaaa distinguishes the AnnotationType from all others
Aaaaaaaaa Annotation A identifies the entity as an Annotation
aaaaaaaaa distinguishes the Annotation from all others
cccccccccc CriterionType c identifies the entity as a CriterionType
ccccccccc distinguishes the CriterionType from all others
Cccccccccc Criterion C identifies the entity as a Criterion
ccccccccc distinguishes the Criterion from all others
Vvvvvvvvvv Evaluation C identifies the entity as an Evaluation
vvvvvvvvv distinguishes the Evaluation from all others
Wwwwwwwwww World View W identifies the entity as a World View
wwwwwwwww distinguishes the World View from all others
...

The NAME Field

The NAME field is a 40 character field which contains the name of the entity.

The TYPE Field

TYPE is a 10 character field which contains the id of the entity that the current entity is merely an instance of.

The PERSON_ID Field

PERSON_ID is a 10 character field containing the person_id (the key of the Person table) of the creator of this entity.

The DATENTIME Field

DATENTIME is a 16 character field containing the Date and Time of the creation of this entity.

19950927173459 represents:

1995
4 digit year
09
month
27
day
17
hour
34
minute
59
second

The ARG1 Field

ARG1 is a field used in many entities to contain either the id of some other entity or some other piece of information.

The ARG2 Field

ARG2 is a field used in many entities to contain either the id of some other entity or some other piece of information.

Dump of the Entity Table

idnametypeperson_iddateNtimearg1arg2
M0001 State TransitionP00000000119950926094505
e000100001transitionP00000000119950926094505
n000100001state P00000000119950926094505
M0002 Class Hierarchy P00000000119950926094505
e000200001is subclass of P00000000119950926094505
n000200001class P00000000119950926094505
M0003 Object Interaction P00000000119950926094505
e000300001uses P00000000119950926094505
n000300001object P00000000119950926094505
M0004 Personal Interaction P00000000119950926094505
e000400001interacts with P00000000119950926094505
e000400002manages P00000000119950926094505
M0005 Pattern Language P00000000119950926094505
e000500001is similar to P00000000119950926094505
e000500002uses in its solution P00000000119950926094505
e000500003variant uses in its solution P00000000119950926094505
M0006 Choose Your Own Adventure P00000000119950926094505
M0007 Tree P00000000119950926094505
n000700001root P00000000119950926094505
n000700002branch P00000000119950926094505
n000700003leaf P00000000119950926094505
M0008 Entity Relationship P00000000119950926094505
e000800001uses as lookup P00000000119950926094505
e000800002one to one P00000000119950926094505
e000800003one to many P00000000119950926094505
n000800001entity P00000000119950926094505
n000800002relation P00000000119950926094505
M0009 Flowchart P00000000119950926094505
e000900001goes to P00000000119950926094505
e000900002when true P00000000119950926094505
e000900003when false P00000000119950926094505
n000900001user input box P00000000119950926094505
n000900002decision box P00000000119950926094505
n000900003output box P00000000119950926094505
n000900004process box P00000000119950926094505
F0001 Idea Engine Class Hierarchy M0002 P00000000119950926094505
E000100008is subclass of e000200001P00000000119950926094505
E000100009is a subclass of e000200001P00000000119950926094505
N000100004Persistant n000200001P00000000119950926094505
N000100006Entity n000200001P00000000119950926094505
N000100007Node n000200001P00000000119950926094505
F0003 Nanotech M0001 P00000000119950926094505
N000300001Nobody has assemblers n000100001P00000000119950926094505
N000300002Somebody has nanotech n000100001P00000000119950926094505
N000300003open planning effort underway n000100001P00000000119950926094505
N000300043open effort has a plan n000100001P00000000119950926094505
N000300044several groups have assemblers n000100001P00000000119950926094505
N000300045nanowar n000100001P00000000119950926094505
N000300046global dictatorship n000100001P00000000119950926094505
N000300047garden planet n000100001P00000000119950926094505
N000300048global brain n000100001P00000000119950926094505
N000300049dead planet n000100001P00000000119950926094505
N000300050global effort has nanotech n000100001P00000000119950926094505
E000300001somebody develops an assembler e000100001P00000000119950926094505
E000300002an open planning effort is begun e000100001P00000000119950926094505
E000300003somebody develops an assembler e000100001P00000000119950926094505
E000300005they run away to Andromeda e000100001P00000000119950926094505
E000300010someone else gets them too e000100001P00000000119950926094505
E000300011someone else gets it too e000100001P00000000119950926094505
E000300015they all accidentally kill themsevles e000100001P00000000119950926094505
E000300016but they screw up e000100001P00000000119950926094505
E000300017unpleasant aftermath e000100001P00000000119950926094505
E000300018cranial collectivization e000100001P00000000119950926094505 N000300050N000300048
E000300019first assembler donated to open effort e000100001P00000000119950926094505
E000300020someone redevelops nanotech e000100001P00000000119950926094505
E000300021open plan executed on first assembler e000100001P00000000119950926094505
E000300022they prevent others from getting it e000100001P00000000119950926094505
E000300023it suicides e000100001P00000000119950926094505
E000300025humans subvert the machines e000100001P00000000119691231170000
F0008 Idea Engine Object Interaction M0003 P00000000119950926094505
N000800001Toolbar n000300001P00000000119950926094505
N000800003PStyle n000300001P00000000119950926094505
N000800004Forum n000300001P00000000119950926094505
N000800005Model n000300001P00000000119950926094505
N000800006Transaction n000300001P00000000119950926094505
N000800007Verb n000300001P00000000119950926094505
N000800008World View n000300001P00000000119950926094505
N000800009Display Set n000300001P00000000119950926094505
N000800010Filter Set n000300001P00000000119950926094505
E000800001 e000300001P00000000119950926094505
E000800002 e000300001P00000000119950926094505
E000800003 e000300001P00000000119950926094505
E000800004 e000300001P00000000119950926094505

Open Questions

  1. Should Criteria be inherited along the Model hierarchy? (i.e. id='Cmmmmccccc')
    pros: cons:
  2. How should Display and Filter functions be inherited? An advantage of inheritance is that there's no need to recreate stuff you've already got elsewhere.
  3. How can Display functions be designed to have meaning across the Presentation Styles (HTML,GIF,VRML...)?
  4. How should 'versioning' work?
    pros:
    cons:
  5. How can intercommunication between servers happen?
  6. For what conditions should the interior of the Engine be optimised?