Re: new cwm release

> (I need to clone it in C or machine code, but that's another matter)

Cwm is somewhat similar to a prolog interpeter, and that's an area for
optimization which has been heavily mined.  I wrote experimental
(prolog) code to translate some cwm code into prolog [1], but it only
worked with log:forAll, log:implies, and log:Truth; and only acted
like cwm in "-think" mode.  It also did not attempt an
optimal-performance mapping to prolog.  At the time, I had trouble
finding rulesets on which people needed speed; it sounds like that
situation has changed.

It seems to my inexpert eye that cwm has these functional components:

  1.  Parse RDF (REC-rdf-syntax-19990222), n3, ntriples
  2.  Generate (pretty-print) RDF (REC-rdf-syntax-19990222), n3, ntriples
  3.  Flatten (encode n3 formulas in an RDF graph; has been broken for ages)
  4.  Reify (broken)
  5.  Apply/Rules/Think, do logical inference
  6.  Filter/Purge, use the logic language as a kind of query language

(There is some overlap in 3/4 and 5/6.)   5 and 6 are presumably the
interesting/slow bits here.

The logic language itself has been evolving as Tim experiments.  I'd
love to know how different people (Tim, users) feel about the
different parts -- it would allow other implementations of the
language to track it better.

Personally, I'd like to see separate programs for 1+3 (reader), 2
(writer), 4 (reifier), 5 (thinker), and 6 (questioner).  (I imagine
the programs piping N-Triples or maybe RDF/XML between them.)  That
would make life easier for parallel development and for tracking the
evolution of the different components. 

What do you think?

    -- sandro


Received on Friday, 22 February 2002 15:14:51 UTC