- From: Sandro Hawke <sandro@w3.org>
- Date: Fri, 22 Feb 2002 15:11:11 -0500
- To: "Tim Berners-Lee" <timbl@w3.org>
- cc: "Norman Walsh" <ndw@nwalsh.com>, www-rdf-interest@w3.org, "Dan Connolly" <connolly@w3.org>
> (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 [1] http://www.w3.org/2001/04/pl/semweb.P
Received on Friday, 22 February 2002 15:14:51 UTC