Context Knowledge Systems

Napa, CA

View Richard H. McCullough's profile on LinkedIn
Read Wikiversity tutorials

Computers have always fascinated me!
The amazing dreams of the Star Trek universe
have become today's reality.
Do you wish your computer could do [?????],
I can help you.

The primary goal of Context Knowledge Systems is to help you
use computers effectively in your personal and professional life.
I will recommend the best software available for your needs,
and can develop software specific to your applications.

Why use open source software?
Pro: It's free. It can be modified to match your application.
Con: Commercial vendors can provide better customer service.

Some examples of useful free tools:
Google Custom Search Engines using
LibreOffice for Windows
Cygwin Linux enviroment for Windows
Redland RDF Libraries

Context Knowledge Systems is also a research and development
company specializing in the representation and use of context.
All products are developed in an open-source environment and
are made available to the public AS-IS and FREE.

>After designing the mKR (my Knowledge Representation) language,
mKR was implemented in the mKE (my Knowledge Explorer) program.
mKE reads statements, commands and questions and stores the
resulting knowledge in mKB (my Knowledge Base).
mKE can translate other languages (e.g. RDF, OWL, CycL, Turtle, SPARQL)
to mKR and interact with knowledge bases of other languages.

Some mKE Applications

Address Book
do read from address book.csv;
do find od steve in address book;

Expense Record
do read from expense.rel;
do read from summary.mkr;  # create report

do read from aka.rel, birth.rel, marriage.rel, child.rel;
do ged;             # create standard GEDCOM file;
person := John Doe;
$person isa ?;      # display all ancestors
$person isc ?;      # display all descendants

Internet Web Page
cks :=;
! toc od $cks to cks.toc;            # extract table of contents
! boilerpipe od $cks to cks.txt;     # extract text
! wordbag od $cks to cks.words;      # count words
! email od cks.toc, cks.txt, cks.words to;   # email all results

Internet Knowledge Base
guid := do find od Torvalds with value in cyclabel;
! firefox od$guid;


The mKE downloads include binary objects and complete source code.

mKE for Windows download

mKE for Linux download

mKE for Mac download

mKR/mKE tutorial

The mKE downloads include pre-release versions of
rapper RDF language translator command
roqet SPARQL RDF query command
icont Unicon translator
iconx Unicon virtual machine
unicon Unicon object-oriented compiler
iyacc Unicon compiler-compiler

Complete pre-release versions of Raptor and Rasqal are available:

raptor-mkr-git download  options

rasqal-mkr-git download  options

Installation Instructions

For full features on Windows, first install the free Linux environment
from, and add "export CHOME=C:/Cygwin" to your .bash_profile.
On all systems, create new directory $HOME/KE, unzip download file in the new directory,
and add "export KEHOME=$HOME/KE; export PATH=$KEHOME/bin:$PATH" to your .bash_profile.
For comments and/or support, email

Overview of mKB

Knowledge is stored in mKB using associative arrays, relations and hierarchies.
Simple properties are represented using 1-dimensional arrays, for example:

    Dick McCullough[phone] := 707-255-3093;
    Dick McCullough[email] :=;

which may also be expressed as

    Dick McCullough
        has phone = 707-255-3093,
        has email =;

Relations use 2-dimensional arrays, for example:

    phonebook[Dick McCullough][email] :=;

Complete relations may be expressed as rows of comma-separated-values,
which can be edited using programs like Excel or Scalc. 
For example:

    phonebook is relation with
        relType = (person, phone, fax, email),
        relVariable = (1, 2, 3, 4),
        relKey = "$1",
        meaning = {$1 has phone = $2, has fax = $3, has email = $4;};

    begin relation phonebook;
    rel Dick McCullough, 707-255-3093, 707-260-6200,;
    rel John Doe, 209-123-4567, 209-123-4568,;
    rel Jane Doe, 209-123-4567, 209-123-4568,;
    end relation phonebook;

Hierarchies use the "isa" relation, for example:

    cat, dog isa animal;
    animal, person isa entity;

Complete hierarchies may be expressed in a table-of-contents format,
for example:

    begin hierarchy tabula rasa;
    ho 0,  U:existent;
    ho 1,       entity;
    ho 2,           program;
    ho 3,               u:mKE;
    ho 2,           list;
    ho 2,           set;
    ho 2,           multiset;
    ho 2,           alt;
    ho 2,           enum;
    ho 2,           array;
    ho 2,           hierarchy;
    ho 2,           relation;
    ho 1,       characteristic;
    ho 2,           part;
    ho 2,           attribute;
    ho 2,           action;
    ho 3,               method;
    ho 1,       sentence;
    ho 2,           context;
    ho 3,               space;
    ho 3,               time;
    ho 3,               view;
    ho 2,           statement;
    ho 3,               definition;
    ho 2,           question;
    ho 2,           command;
    ho 2,           assignment;
    ho 2,           conditional;
    ho 2,           iteration;
    ho 2,           relation group;
    ho 2,           hierarchy group;
    end hierarchy tabula rasa;

Overview of mKR

mKR is a useful mixture of English and UNIX shell:
    simple English semantics of subject, verb, object, modifying phrases;
    UNIX shell variables, functions, control structures.

Every sentence has a context of definitions and assumptions:

     in context { sentence; ... };

context has space,time,view attributes

     space = s, time = t, view = v

s may use any convenient units, e.g.: home,office
t may use any convenient units, e.g.: past,present,future
v is the name of the context sentences, which can be expressed as
  an entity-characteristic-sentence hierarchy.

mKR style

syntax:  English phrases separated by keywords and special characters,
              terminated by semicolon
         comment is anything preceded by sharp sign,
              continuing to end of line

phrase may take any of these forms:
         name = value
         name preposition phrase
         comma-separated-phrase list
od is a new preposition which precedes the direct object of an English verb

when necessary to avoid ambiguity:
         phrase lists are enclosed in ( )
         phrase sets are enclosed in [ ]
         sentence lists are enclosed in { }

names are defined by the context -- explicit or implicit

Overview of mKE

mKE may execute offline on local computer, or online on host computer

mKE reads statements, commands and questions from standard input file
mKE writes command and question output to standard output file
mKE writes error output to standard error file
mKE writes debug output to log file
mKE stores new knowledge in mKB knowledge base

features include
     syntax check mode to debug input scripts
     error check mode to find ambiguities and contradictions
     translate mode for other languages
     execution of shell commands
     read/write knowledge from/to file
     load/save  knowledge from/to database

More details

mKR grammar
mKR keywords
mKE options
mKE commands
mKE variables
Screenshots, Applications, Tools
Unicon programming language
KornShell programming language
Redland RDF Libraries

Copyright (C) 1996 - 2015 Richard H. McCullough
Last update Dec/10/2016 Richard H. McCullough