Cwm is a general-purpose data processor for the semantic
web, somewhat like sed, awk, etc. for text files or XSLT for XML.
It is a forward chaining reasoner which can be used for querying,
checking, transforming and filtering information. Its core
language is RDF, extended to include rules, and it uses RDF/XML
or RDF/N3 (see Notation3 Primer) serializations as required.
To find out more about Cwm, visit
== Getting Started ==
Unpack this tarball in a useful place. cd to that directory and type:
cd test; make post-install
at the command line. It should spend a while testing to make sure
the program is working.
The test files should give you a good idea of commands to get
Cwm to work.
If you run ./setup.py install, it will install cwm. Other possibilities
are evident from running ./setup.py --help-commands
If a test fails: There are three possiblilities:
1. Your Python setup is borked / sufficiently different from the
one used in development. This is a distinct possiblility.
It is also possibly a bug in our code, if your we should
in fact be supporting you platform.
2. You tarball was corrupted / not generated properly. This is
also a distinct possiblility. The latter case is a bug.
3. We knowingly published a version of Cwm that failed our own tests.
This is highly unlikely.
== What's New In this Release (1.2.0) ==
For a complete list of changes, look at doc/changes.html
== Proof updates
Putting --why at the end of a command line will generate a proof,
and has had much debugging.
== General bugfixes.
Release 1.1.0 (never released)
* Cwm now uses Python Sets instead of lists to store many things
* Speed improvements to some tests are orders of magnitude
* Output is not as stable as it once was
==Python 2.3 or later now required
Used for Sets
==Experimental SPARQL Server support
Cwm can now run as a SPARQL server. This includes:
* A preview cwm --sparqlServer, which runs a server on port 8000
* cwm --sparql=, which behaves like --query=
* builtins for doing sparql queries from within n3.
==RDF/XML serialization fixes
A few strange bugs in rdf:xml serialization, many related to the rdf: prefix or xml: prefix, have been fixed
==delta exit statuses
delta now returns with similar exit statuses as the diff utility for plaintext files. An exit status of 0 means no differences between the from and to graphs were found. An exit status of 1 means some differences were found. An exit status of 2 means differences were not computed for some reason.
Fixes in decimal support
A bug introduced into 0.8.0 where cwm crashed if no input files were specified has been fixed
==delta and cwm --patch
diff.py is renamed delta.py to avoid confusion with diff(1).
delta.py now will make a difference file even in cases where nodes cannot be be uniquely identified (from [inverse] function properties) but can be uniquely identified in the context of the graph. So, delta.py can generate weak deltas rather than strong ones under these circumstances.
Bug fix to cwm's --patch function.
==RDF/XML support changes
cwm's rdf/xml output will now output any file that can be outputted in xml 1.0. Failing that, it will output it in xml 1.1. Failing that, it will throw an exception. The previous behavior of generating empty tags was a bug.
Cwm will throw an excpetion if told to output rdf/xml for a file that uses literals as subjects
Tests have been added for rdflib. It is now supported to a degree.
Cwm now successfully fails to parse all but four of the rdf negative parser tests
Performance work has resulted in some tasks taking 1/10 the time that they used to. Much more work is planned in this regard.
Cwm now uses python's distutils for distribution. This allows for installation of cwm. As an added bonus, there are now rpm's, windows installers
--flatten and --unflatten have been rewritten, replacing the old --flat. Flatten minimally reifies an n3 file to make it an rdf graph. Note that the graph may still fail to serialize as rdf, due to literals as subjects
A crude hack in WebAccess.py allows a local file system to be used instead of a given website. The intent is to clean this up in the future.
There has been much work on a grammar for n3. grammar/n3.n3 is the grammar, grammar/predictiveParser.n3 can understand it.
== Submitting Bugs ==
Cwm is very much a work in progress and has many bugs.
Some of them we already know about. Cwm bugs are tracked
on the public Cwm bug mail list,
http://lists.w3.org/Archives/Public/public-cwm-bugs/ . Submit
any bugs you find there, assuming they have not already been
submitted. Reply to a previous bug report if you have something
== License ==
cwm is open source. Share and Enjoy.
For details, see the attached files, LICENSE.n3 and LICENSE
== Contributors ==
Development of cwm is supported in part by funding
from US Defense Advanced Research Projects Agency
(DARPA) and Air Force Research Laboratory, Air
Force Materiel Command, USAF, under agreement
number F30602-00-2-0593, "Semantic Web Development".