So I created a little language (https://github.com/SimpleFriend/Jamie/wiki) with PEGjs (https://pegjs.org/online) to describe knowledge and simple rules. It's still a little rough around the edges, but the following works fine:
put(
'isa 'felix 'cat
'gen 'animal 'cat
)
rule(
if(
'isa thing? concept?
'gen superconcept? concept?
)
do(
'isa thing superconcept
)
)
Yes, it is solipsism. I never found a way out of it. ::)
Something along the lines of:
[root] Perceptual experience
[gen] State
[gen] TripleStore
[gen] Active behavior tree
[gen] VectorStore
[gen] Emotive space
[gen] KDTree
[gen] Nearest from coordinates
[gen] Native (JS)
[gen] Event
[gen] State modification
[gen] Function call (JS)
[gen] External input
[gen] Internal input
[gen] Emotive space
[gen] Change of:
[gen] KDTree
[gen] Change of: Nearest from coordinates
[gen] External output
[gen] Internal output