README
======

This is GraphPath, a little-language for analysing
graph-structured data, especially RDF. The syntax
of the GraphPath language is reminiscent of Xpath.

The graphpath python package provides a query evaluator
and a goal-driven inference engine for the GraphPath
language, which work together to perform graph analysis.

The package can be teamed up with your favourite
python RDF API (e.g. Redland, rdflib, or your own API).

See index.html for documentation.

RELEASE NOTES
=============

Version 0.7.0 is a bug fix release  and is provided
under the GPL (see LICENSE).

Changes in 0.7

* Update to librdf 2.03 (no longer compatible with librdf 1.3)

* Update to Redland 0.9.16

* Bug fixed: readline import error on Windows

* Added ManyValued and Filter predicates

* Optimise implementation of graphpath.util.store.Population

* Some other, minor bug fixes and tweaks



Changes in 0.6.2

* correct name exception in rdflib adapter

* add testcase for expressions of the form p/q[r/s]

* add testcases for Map()

* proof docs

Changes in 0.6.1

* corrected evaluation of expressions of the form p/q[r/s]

* extended and rationalised evaluation strategies for
predicates.

* allow evaluation of expressions where the individual
steps are bound but not the overall expression e.g.
Node(x)/(g>>Property(y))

* added Map(p) to convert p to a conventional python
representation of a DG, a mapping of intial nodes
to terminal node sets.

* added trace(p) to trace evaluation of an expresion.

Compatibility
-------------

The package has been tested with:

Python 2.2.2, 2.2.3 and 2.3
Redland 0.9.14, 0.9.15
rdflib 1.3.1

Redland
-------

There is a bug in the redland python interface that prevents
setting of the datatype of an RDF value node.   For now, the
GraphPath implementation stores all values as pickled object
strings.  You can change this in redadapt.py.

Sets Module
-----------

GraphPath is implemented in terms of python sets which
were introduced in python 2.3.  Back compatibility to
earlier python versions has been provided via modules
graphpath.util.anysets and graphpath.util.altsets.
The latter is a backport of the 2.3 sets module by
Mike Fletcher.  Some small changes will be needed for the
forthcoming builtin set datatypes.

