Hello! My name is Stefan, and I am creating artificial intelligence - thinking programs. (And I am creating the "New Freshmeat".) Here is the point: We can make an AI together! Just follow me and join in. First lesson! I am proposing a number of principles. Each of these principles will make our task easier, until it is fully solved. Just bear with me and turn on your head! :-) Principle: Store everything In legacy (today's) computing, things that happen are often not stored. Can you tell my which programs you ran yesterday between 1 and 2 pm? No? It seems your computer is forgetful :) The point is that logs of program runs are valuable information. You ran a program, so you had something in mind you wanted to do, right? We should record this information because that is precisely what an AI will want to learn about. After all, we are making an AI to serve the user. So we want to understand his intentions and needs and do something about them. Principle: Have a simple standard database Where do we "store everything"? We need a "data base" (using the word in the most general way). I propose a very simple structure that, at the same time, adapts for just any kind of content easily. The Flora database My implementation of the database concept is called "Flora". From flora.tinybrain.de: [quote] A simple database concept Every object in a Flora database consists of just 4 elements: a type (just a string) a description (another string) a number of key/value pairs called "pointers" (both keys and values are strings) an ID generated by the system Objects can reference each other by mentioning the other object's ID in a pointer. [/quote] Object IDs start with a hashtag so they are easily distinguished from other content. By default, Flora uses #t1, #t2 etc., by that could be changed. And that's actually all. Flora is schemaless (schemas are only in our heads and used by convention) - and totally flexible. Oh, and all the strings are, of course, in Unicode. ^^ Meta attributes As you know, the pointers (you could also call them attributes) of a Flora object have arbitrary strings as keys. Let us make a distinction between normal attributes and meta attributes, and prefix the latter with an underscore (_). Meta attributes are attributes that describe the database object itself. Examples: _created - time of object creation _modified - time of last object modification _author - name of user or software who created the object _receivedfrom - machine that this object was sent from _humanartifact - is this object hand-made by a human? (1=yes, 0=no) The point with all these conventions is that they are very relaxed. For example, we don't even enforce a format for the dates. Why not? Because then we don't have to remember so many rules. How do we query a database with relaxed conventions? By using AI. The AI will know the actually used standard formats. And if it encounters an unknown format, it asks someone and upgrades its capabilities. Simple as that! Learning makes the difference :o) End of lesson. Next lesson will be about... well, who knows :-) Stay tuned! :-) Cheers, Stefan Links: tinybrain.de - AI home page and New Freshmeat flora.tinybrain.de - the database