OpenCog Incubator

From OpenCog

The OpenCog Incubator is an ad hoc list of incomplete but promising and interesting projects looking to grow and expand.

A full and complete list of all OpenCog project, active, incubating and deceased, can be found in github.

Major projects

Major projects that have gotten a lot of work done, but remain incomplete.

  • AS-MOSES -- a port of MOSES to the AtomSpace. In one sense, it is "done", in that "it works". However, it really needs to be split up into 4 or 5 distinct pieces, decoupled from one-another. For example, the deme management subsystem can be generalized to manage any collection of graphlets, and not just the MOSES trees. The knob-turning subsystem can be generalized to add knob decorations to any kind of data (e.g. video, audio pipelines) and not just boolean expressions. The reduct subsystem can be extracted to sit on its own, and/or replaced by a generic symbolic algebra subsystem. These are all software engineering tasks. They're hard, they're tough, they need high-end, top-notch coders to accomplish. Not for the faint of heart.
  • AGI-BIO -- This is a large project that maps large biochemistry databases into the AtomSpace. This includes genome, proteome and reactome datasets. It provides tools to explore and mine the resulting interactions, including gene expression, up/down-regulation, and networks of genes and proteins that each interact with one another. A graph data miner, of sorts. It works, it has been used in production settings to generate science data that resulted in publications. It's currently idling, looking for a mastermind to take over and steer it in a meaningful direction.

Engineering expansion

The following are well-developed, in active use, debugged and maintained, but could use real roll-up-our-sleeves software engineering efforts to expand, enhance and improve.

  • StorageNodes and ProxyNodes -- These two subsystems provide a way for AtomSpaces to store data to disk, and to transmit it across the network. The ProxyNodes allow data processing pipelines to be set up. More sophisticated ProxyNodes are missing: it would be nice to have one that does a form of attention allocation: freeing up RAM by writing old, unused, stale Atoms back to the disk or network. Another kind of ProxyNode might be defined to perform a repetitive task on streaming data, by pulling from one location, and writing to another. Stuff that more serious users, with large processing requirements would need.

Promising but incomplete

Projects that have moved beyond proof-of-concept, but remain incomplete:

  • AtomSpace Bridge -- provides a semi-automated I/O bridge between conventional SQL databases and the AtomSpace. As an example, the FlyBase Drosophila Genome Database, which is quite large and extensive, is mapped to the AtomSpace, such that it's contents can be crawled and traversed using AtomSpace tools. The basics work. What's missing are a way to specify custom shims, so that the mapping can be done in a non-generic fashion. Also missing is an appropriate StorageNode and/or ProxyNode that can manage the RAM, so as to unmap stale data to avoid RAM overflow.
  • CogProtoLab -- An AtomSpace visualizer. It can visualize trees, and some simple relationships. It's not generic, yet. It would need to have some way of specifying what kinds of graphlets to visualize, and how to visualize them. The demos work great, though!
  • OpenCog Debian -- Package up OpenCog for Debian. Worked. Needs a refresh.
  • OpenCog Nix -- Package up OpenCog for Nix. Worked. Needs a refresh.
  • OpenCog Raspberry Pi -- A toolchain to get OpenCog up and running on a Raspberry Pi. More-or-less worked at some point. Needs a refresh.

Proof of concept

Projects at the proof-of-concept stage, looking to get farther along:

  • Hyperon/MeTTa on top of the AtomSpace -- The AtomSpace is fast, scalable, debugged and mature. Perhaps the best way to get MeTTa working is as a thin language-specific shim on top of the AtomSpace? I think this is easy to do, but this project is politically touchy: a number of Hyperon developers are very much against this kind of effort. So it goes. Politics galore, enough for everyone.
  • AtomSpace Vision -- Atomese wrappers for the OpenCV image processing software library. The idea here is to be able to write image processing pipelines in Atomese, but have them run at native, fully-optimized speeds. The reason for Atomese wrappers is to allow automated systems for search and discovery, or "learning", such as AS-MOSES above, to be able to "learn" image processing pipelines that are suitable and appropriate for recognizing objects. A handful of Atoms have been created. Moving this project along is relatively "easy": just create more Atomese wrappers for more OpenCV library functions. The hard part is to determine a "good set" of vision processing primitives, and then couple them to MOSES (above) so that processing pipelines can be automatically generated and explored.
  • Generate -- A collection of algorithms to assemble "jigsaw pieces" into assemblies. Currently implemented is an odometer method. It works. It's not very scalable. A much, much faster generation system can be found in Link Grammar but it is not generic, and also suffers certain performance issues. Generation is, after all, a problem that is combinatorially explosive. This project needs people interested in exploring basic research into optimized algorithms for jigsaw assembly.
  • AtomSpace Cheminformatics -- The AtomSpace query engine can be used to solve daunting molecular chemistry reaction problems. That is, given a set of input reagents, the query engine can determine what sort of molecules are generated in a reaction. Currently, there are Atoms needed for basic organic chemistry are defined. There's also a demo of a basic esterification example. It works. I guess the hard part is that it is very tedious to write down significant molecules and reactions using raw Atomese, and so perhaps some graphical input system would be needed?
  • AtomSpace Explorer -- Visualization proof of concept. I think this project needs a dedicated javascript web front-end developer to get it into a functional state. An earlier version worked great, and people liked it, but it bit-rotted.
  • AtomSpace TypeScript -- A TypeScript API into the AtomSpace. I think it mostly kind-of-ish works? Its mostly a thin layer on top of the CogServer shell, handling I/O between web apps and the CogServer.
  • OpenCog CycL -- A collection of scripts to import Doug Lenat's CycL dataset into the AtomSpace. Currently at the proof-of-concept stage.
  • Atomspace Prolog -- Provide a translation layer to work with DataLog/Prolog data in the AtomSpace. There are two parts to this: first, just import ProLog expressions into the AtomSpace. This is relatively easy, and the proof-of-concept is done. A distinct project, not yet even started, would be to provide Atomese wrappers for some popular ProLog implementation, and/or to one of the ASP solvers, e.g. the University of Potsdam ASP solver. I think this would be useful and cool.