# Knowledge Bases Knowledge is organized into named repositories called knowledge bases. A knowledge base is like a directory for files on disk, except that knowledge bases may not be nested. Therefore, the entities within a knowledge base always have a two-level name: knowledge_base_name.knowledge_entity_name. Here are some examples of facts you might see in a web server application:
    header.cookie('session=123456789;remember=the_alamo')
    cookie.session(123456789)
    cookie.remember(the_alamo)
    header.accept_encoding(gzip)
    header.accept_encoding(deflate)
    request.path('/my/site.html')
    request.path_segment(0, my)
    request.path_segment(1, 'site.html')
    request.path_segment(-2, my)
    request.path_segment(-1, 'site.html')
> Note that three different knowledge bases (all fact bases) are shown here named `header`, `cookie`, and `request`; each with multiple facts. The second part of the two-part name is the name of the knowledge entity. You can think of knowledge entities as statement types or topics. So:
> request: | is the name of the knowledge base.
> request.path_segment:
> | is the name of the knowledge entity, or statement topic.
> request.path_segment(-1, 'site.html'):
> | is a specific statement about the topic of request.path_segments.
## What do Knowledge Bases Do? Ultimately Pyke is interested in proving statements, or answering the question "Is statement X true"? There are several different types of knowledge bases. Each type of knowledge base represents a different way of doing this: Those that contain simple lists of statements of fact (as you see in the example above) are called fact bases. These determine whether a statement is true by simply checking to see if that statement is in their list of known facts. Those that contain if-then rules are called rule bases. These determine whether a statement is true by running their if-then rules to try to construct a proof for that statement. Rule bases may include both forward-chaining and backward-chaining rules. It is also possible to create other kinds of knowledge bases that determine the truth of statements in other ways. Pyke provides two of these: The question base which just poses the statement to an end user as a question. The special knowledge base which has several special one-off knowledge entities to do different things like run a command on the underlying system and examine its output and/or exit status. There is only has one instance of this knowledge base -- called `special`. Note All knowledge bases share the same name space. So no two of them, regardless of their type, may have the same name.
Copyright © 2007-2009 Bruce Frederiksen

Page last modified Mon, Oct 27 2008.