Lobes, in this context, are not to be understood as systems simulating the actual lobes of the humain brain. They are merely a higher level of organization of lobules. The word is used in its meaning of "clear anatomical division of an organ that can be determined without the use of a microscope at the gross anatomy level". Lobes of the Dejavu system are primarily groups of lobules: each lobule "belongs to" a lobe. Lobes act as a whole when they interact with the inner discourse module of the system.
The system exposes a "monologue" stack where lobes can "verbalize" data to sentences in DCE format. DCE is a controlled natural language loosely inspired from ACE (Attempto Controlled English). When a lobe sends a sentence to the monologue stack, it is first parsed by a PEG parser, then placed on the top of the stack, either directly or as a replacement for one or more sentences which are on top of the stack.ACE MOM Topic
I don't want to use an existing upper ontology. This is a very critical, intimate project foundation. It has to match perfectly the goals I set for the project, and my personal sensibility. This is the "why" behind this micro upper ontology.
Actually, it's not exactly an upper ontology, but rather a bunch of big-bag concepts, specialized from 3 main concepts, timeThing, mindThing, and worldThing, which are themselves specialized from a single entity concept. I think it's what you get on the world if you don't think too much about it. There's a distinction between subjective / objective entities.
| entity - anything | timeThing - an interaction between entities | mindThing - an entity that lives inside of a mind | worldThing - an entity that lives outside of a mind | period - a part of time | change - a modification of an entity | event - a change associated to a period | action - an event associated to an agent | concept - a template | instance - a template applied to an entity | collection - a list of entities | relation - a link between entities | region - a part of the world | object - a tangible physical object | agent - an object capable of subjectivity | message - an information |
More important than these, is the list of main relations here. It reads like:
~ "Slave is Relation of Master"
~ "Master has Relation Slave"
A: Asymmetric, S: Symmetric, T: Transitive, I: Intransitive.Ontology
The mind is composed of interconnected modules called "lobules".
A lobule is a set of consnet cells together with what is called a pchain (prism chain).
A lobule's behavior has to be described as simply as possible, because I want the program to be able to improve itself by self-modifying its code and structure. There exist several models of plan execution, but the one I use is unusual. A behavior is described as a flat sequence of executable nodes called prisms. Each prism potentially modifies the state of the lobule and/or the effect of the following prisms on the chain.
Lobes are conceptual groups of lobules. Lobules are small structuring components. Prisms are very high level - but atomic - units of code.Prisms
There is a system-wide memory. It contains all the "thought matter" of the system, that gets moved around, filtered, selected, organized, refactored. It needs to be able to represent anything, which JSON alone could do of course. But I'm not using JSON directly here, at the bottom. Instead of rough JSON, states will be consnets.
A consnet is a directed graph, where each vertex has a maximum outdegree of 2. In the context of Dejavu's consnets, vertices will be called "cells". So, each cell points to 2 other cells, which can point to 2 other cells, and so on. It is equivalent to Lisp's cons cells, hence the name. But it's not implemented like Lisp's, because I need graph functionalities.
You get the idea. First you link two things, then you link the link to the type of link it belongs to. "id1" and "id3" are linked to "ISA", which means they're "ISA" kind of links. Simple enough.
It's not a powerful representation. It's verbose, and not meant to be written directly by developers. But it has an important property. It is 100% liquid: you can get as deep as you need. Say you're not sure that "id1" is a "ISA" kind of link, you can represent it easily by adding links about "id2".Digraph Cons
I want this project to be pleasant to work on. That's why it has an "immersive" command-line interface, powered by Vorpal. I usually work with a terminal on the left hand side of the screen, and an editor on the other side. Currently, my editor is Visual Studio Code, and my terminal is Hyper.
Both Nodejs and VS Code, which is based on it, are able to watch and hot-reload a file, which is an easy way to transfer information as input or output. Datafiles are exclusively in eno format.
The idea is to build the mind of the program using the command-line interface. It involves creating all the tools needed first, and then, accessing these tools from the command-line to build the mind. The tools can later be used by the program to improve itself.Vorpal Signale Hyper Eno