This concerns the user data structure of Mesh, the underlying logic system of the live ImmaterialAI app.
- database version 53
Model
andModelReference
Node
andLink
types get new optional propertymodelId
to constrain them to only oneModel
- database version 52
Node
supports file, imageUrl- new default
Node
andLink
types
- database version 50
- Tracking AI chat sessions as nodes of type
internal_ai_chat_session
- database version 45
DataInfo
added for tracking chages
- database version 43
TagReference
getstagId
,Tag
shortened
- database version 35
NodeType
gets parentId,WorldConstraints
+Tag
+TagReference
tables- backup support for all new changes
- database version 1 - 32
- Contains
User
,Node
,Link
(+ types),World
andPreference
instances,
- coming soon
- live
- free with optional upgrade
- cross-Platform
- live on Web, Android, Windows (native & Steam)
- supports
.mesh
,.idb
,.cdb
,.txt
,.json
and clipboard import/export
- discontinued
- free with optional upgrade
- native Android
- development halted, focused changed to 3.X Cross-Platform version
- supports
.cdb
files
If you want to contribute your own databases of concepts to this repository, open a pull request and we'll look at it.
In this version here all .mesh
data are written in JSON, both backups and public files/libraries having the same structure.
The file must be a JSON object, optionally containing the following arrays of objects:
- since Mesh 1.5: array
models
,modelReferences
- since Mesh 1.2: array
dataInfos
- since Mesh 1.0: arrays
tags
,tagInstances
,worldConstraints
- from IAI 3 - 4.9: arrays
users
,nodes
,links
,nodeTypes
,linkTypes
,preferences
,worlds
,linkTypeNodeReqs
,worlds
,worldConstraints
The only mandatory field is dbVersion
, the value of the database version as text, in this case "53".
Time can be described in two ways:
- (number, preferred) milliseconds since 1970
- (text, deprecated) formatted compliant with .cdb files, e.g. "Oct 24, 2020 1:09:31 PM"
They are only relevant for backups. The Users array has no reason to not be empty in public files unless you want to author a bundle as coming from a specific source.
Nodes are in-app concepts.
id
: Text, the following are ids used by the system and are already included with the appinternal_nothing
for "nothing'internal_dont_know
for "don't know"internal_everything
for "everything"type
: Text matchingNodeType.id
, represents the type of concept. Below are already included with the appitem_state
for states (since Mesh 1.4)item_system
for world viewsitem_effect
for effectsitem_event
for eventsitem_thought
for thoughtsitem_feeling
for feelingsitem_quote
for quotesitem_study
for studiesitem_source
for entitiesitem_process
for processes (since Mesh 1.4)item_location
for locations (since Mesh 1.4)internal_system
for systeminternal_journey
for data tied to the user journeyinternal_ai_chat_session
(since Mesh 1.3) for AI chat sessionsitem_concept
for any other idea that doesn't fit existing data types, or to use when wanting to generalize a node and infer that it's an idea
name
: Text, the name
- 'link' : Text, URL
subTitle
: Text, subtitledescription
: Text, can be markdownimageUrl
: Text, image Urllink (since IAI 3.28.1/3.3.1+)
: Text, link that can be easily accesseduserId
: Text matchingUser.id
. For backups it will be the user's id, for public use "public"created
: DateTime, can be string repr or intupdated
: DateTime, can be string repr or intworldId
(since 4.1): Text matchingWorld.id
modelId
(since 5.30, Mesh 1.5): Text matchingModel.id
In-app relations.
id
: Texttype
: Text matchingLinkType.id
, type of relation. Below are already included with the appproof
for proof/source/origin. Also uses description and data propertiesparent
for parenttrigger
for triggers/triggered byis
for hard equivalenceanalog
for softer equivalence, potentially across mutually-exclusive systemsparallel
for parallels, apply your own semantic distinction factorsfavorite
for favorite/starredfocus
for focusold_me
for new/old me distinctionstodo
for task managementrelated
for general relatedness when all other existing types don't fitat_location
for connecting any node toitem_location
node
nodeId
: Text matchingNode.id
, id of the node from which the relation startsuserId
: Text matchingUser.id
, for backups it will be the user's id, for public use "public"
otherNodeId
: Text matchingNode.id
, the id of the other node if applicable (e.g.focus
,favorite
,old_me
,todo
have no otherNodeId)metaNodeId
: Text matchingNode.id
, the id of a meta node if applicable (used in analog and parallel)description
: Text, meta description. For proof relations, use "obj" for objects or "boolean" and data "true" if "No proof/Nothing" is selecteddata
: Text, contextual datacreated
: DateTime, can be string repr or intupdated
: DateTime, can be string repr or intmodelId
(since 5.30, Mesh 1.5): Text matchingModel.id
Tag references are references to tags from any data type, supports worlds
id
: Text, the following are ids used by the system and are already included with the appsrcTagId
: Text matchingTag.id
. For backups it will be the user's id, for public use "public"
userId
: Text matchingUser.id
. For backups it will be the user's id, for public use "public"created
: DateTime, can be string repr or intupdated
: DateTime, can be string repr or intnodeId
: Text matchingNode.id
if we want to tie the tag to a nodelinkId
: Text matchingLink.id
if we want to tie the tag to a linknodeTypeId
: Text matchingNodeType.id
if we want to tie the tag to a node typelinkTypeId
: Text matchingLinkType.id
if we want to tie the tag to a link typeworldId
: Text matchingWorld.id
if we want to tie the tag to a worldcreated
: DateTime, can be string repr or intupdated
: DateTime, can be string repr or int
Used for tracking additions, updates and deletions of Node, NodeType, Link, LinkType, World and Tag
id
: Textstatus
: Text, can beadded
,updated
ordeleted
dataType
: Text, can benode
,nodeType
,link
,linkType
,world
ortag
dataId
: Text matching id of any of the types mentioned abovedescription
: Long-form textcolorString
: Text, Color as a string (currently accepts ints)
userId
: Text matchingUser.id
. For backups it will be the user's id, for public use "public"created
: DateTime, can be string repr or int
(more coming soon, not final)
The types of which concepts/ideas can be made
id
: Textname
: Text, the namedescription
: Long-form textcolorString
: Text, Color as a string (currently accepts ints)
iconUrl
Text, icon urldescription
: Text, can be markdown- (since Mesh 1.0)
parentId
: Text matchingNodeType.id
. For backups it will be the user's id, for public use "public" userId
: Text matchingUser.id
. For backups it will be the user's id, for public use "public"created
: DateTime, can be string repr or intupdated
: DateTime, can be string repr or int
id
: Textname
: Text, the namesourceText
: Text on one side of the relation i.e. from A -> B what is "->"description
: Text, Long-form textcolorString
: Text, Color as a string (currently accepts ints)manyToMany
: Text, Type of relation to enable 1:1, 1:M, M:MsourceIsTarget
: Boolean
targetText
: Text on the other side of the relation i.e. from B -> A what is "->"sourceIconUrl
Text, icon url for the relation A -> BtargetIconUrl
Text, icon url for the relation B -> Adescription
: Text, can be markdownparentLinkTypeId
: Text matchingLinkType.id
. For backups it will be the user's id, for public use "public"userId
: Text matchingUser.id
. For backups it will be the user's id, for public use "public"created
: DateTime, can be string repr or intupdated
: DateTime, can be string repr or int
Worlds are a way to split your library into distinct semantic worlds.
id
: Textname
: Text, the name
subTitle
: Text, subtitledescription
: Text, can be markdownimageUrl
: Text, icon actuallyuserId
: Text matchingUser.id
. For backups it will be the user's id, for public use "public"created
: DateTime, can be string repr or intupdated
: DateTime, can be string repr or int
Tags are tags, not a reference to tags on individual data but the tags that are referenced themselves
id
: Text, the following are ids used by the system and are already included with the appname
: Text, the namecolorString
: Text, Color as a string (currently accepts ints)iconUrl
: Text, icon Url
subTitle
: Text, the subtitle (Mesh 1.1)description
: Text, can be markdownuserId
: Text matchingUser.id
. For backups it will be the user's id, for public use "public"created
: DateTime, can be string repr or intupdated
: DateTime, can be string repr or int
(more coming soon, not final)
Constraints on what node type can be on either side of a Link Type link
id
: TextlinkTypeId
: Text matchingLinkType.id
meaning the link type to which we apply the constraintnodeTypeId
: Text matchingNodeType.id
meaning the type of node we add as a requirement for a link typelinkTypePosition
: Text, position in which thenodeTypeId
is added as a constraint. Can be "source", "target" or "source_target".userId
: Text matchingUser.id
. For backups it will be the user's id, for public use "public"created
: DateTime, can be string repr or intupdated
: DateTime, can be string repr or int
World constraints help further narrow down your IAI experience by only showing meta data choices based on your selected worlds' constraints.
id
: TextworldId
: Text matchingWorld.id
meaning the world to which we apply the constrainttype
: Text, constraint type, can be 'allow' or 'exclude'metaDataType
: Text, the data type to enforce the constraint on, can be 'nodeType' or 'linkType'metaDataId
: Text matchingNodeType.id
orLinkType.id
based onmetaDataType
to represent the node/link typecreated
: DateTime, can be string repr or int
userId
: Text matchingUser.id
. For backups it will be the user's id, for public use "public"updated
: DateTime, can be string repr or int
In the app, certain relations enforce rules as to what the type of the concepts they are connected to can be.
Like effect_parent
, which shows up in certain concepts as "Parent effect", and effects are the only type of item you can choose there. With that said,
those rules are not enforced when importing data, so you can write relations here that would be impossible in the app.