Update package
	2013/12/31 RELEASE 4.1
======================

This is a new minor version RDFLib, which includes a handful of new features:

* A TriG parser was added (we already had a serializer) - it is
  up-to-date wrt. to the newest spec from: http://www.w3.org/TR/trig/

* The Turtle parser was made up to date wrt. to the latest Turtle spec.

* Many more tests have been added - RDFLib now has over 2000
  (passing!) tests. This is mainly thanks to the NT, Turtle, TriG,
  NQuads and SPARQL test-suites from W3C. This also included many
  fixes to the nt and nquad parsers.

* ```ConjunctiveGraph``` and ```Dataset``` now support directly adding/removing
  quads with ```add/addN/remove``` methods.

* ```rdfpipe``` command now supports datasets, and reading/writing context
  sensitive formats.

* Optional graph-tracking was added to the Store interface, allowing
  empty graphs to be tracked for Datasets. The DataSet class also saw
  a general clean-up, see: https://github.com/RDFLib/rdflib/pull/309

* After long deprecation, ```BackwardCompatibleGraph``` was removed.

Minor enhancements/bugs fixed:
------------------------------

* Many code samples in the documentation were fixed thanks to @PuckCh

* The new ```IOMemory``` store was optimised a bit

* ```SPARQL(Update)Store``` has been made more generic.

* MD5 sums were never reinitialized in ```rdflib.compare```

* Correct default value for empty prefix in N3
  [#312]https://github.com/RDFLib/rdflib/issues/312

* Fixed tests when running in a non UTF-8 locale
  [#344]https://github.com/RDFLib/rdflib/issues/344

* Prefix in the original turtle have an impact on SPARQL query
  resolution
  [#313]https://github.com/RDFLib/rdflib/issues/313

* Duplicate BNode IDs from N3 Parser
  [#305]https://github.com/RDFLib/rdflib/issues/305

* Use QNames for TriG graph names
  [#330]https://github.com/RDFLib/rdflib/issues/330

* \uXXXX escapes in Turtle/N3 were fixed
  [#335]https://github.com/RDFLib/rdflib/issues/335

* A way to limit the number of triples retrieved from the
  ```SPARQLStore``` was added
  [#346]https://github.com/RDFLib/rdflib/pull/346

* Dots in localnames in Turtle
  [#345]https://github.com/RDFLib/rdflib/issues/345
  [#336]https://github.com/RDFLib/rdflib/issues/336

* ```BNode``` as Graph's public ID
  [#300]https://github.com/RDFLib/rdflib/issues/300

* Introduced ordering of ```QuotedGraphs```
  [#291]https://github.com/RDFLib/rdflib/issues/291

2013/05/22 RELEASE 4.0.1
========================

Following RDFLib tradition, some bugs snuck into the 4.0 release.
This is a bug-fixing release:

* the new URI validation caused lots of problems, but is
  nescessary to avoid ''RDF injection'' vulnerabilities. In the
  spirit of ''be liberal in what you accept, but conservative in
  what you produce", we moved validation to serialisation time.

* the   ```rdflib.tools```   package    was   missing   from   the
  ```setup.py```  script, and  was therefore  not included  in the
  PYPI tarballs.

* RDF parser choked on empty namespace URI
  [#288](https://github.com/RDFLib/rdflib/issues/288)

* Parsing from ```sys.stdin``` was broken
  [#285](https://github.com/RDFLib/rdflib/issues/285)

* The new IO store had problems with concurrent modifications if
  several graphs used the same store
  [#286](https://github.com/RDFLib/rdflib/issues/286)

* Moved HTML5Lib dependency to the recently released 1.0b1 which
  support python3

2013/05/16 RELEASE 4.0
======================

This release includes several major changes:

* The new SPARQL 1.1 engine (rdflib-sparql) has been included in
  the core distribution. SPARQL 1.1 queries and updates should
  work out of the box.

  * SPARQL paths are exposed as operators on ```URIRefs```, these can
    then be be used with graph.triples and friends:

    ```py
    # List names of friends of Bob:
    g.triples(( bob, FOAF.knows/FOAF.name , None ))

    # All super-classes:
    g.triples(( cls, RDFS.subClassOf * '+', None ))
    ```

      * a new ```graph.update``` method will apply SPARQL update statements

* Several RDF 1.1 features are available:
  * A new ```DataSet``` class
  * ```XMLLiteral``` and ```HTMLLiterals```
  * ```BNode``` (de)skolemization is supported through ```BNode.skolemize```,
    ```URIRef.de_skolemize```, ```Graph.skolemize``` and ```Graph.de_skolemize```

* Handled of Literal equality was split into lexical comparison
  (for normal ```==``` operator) and value space (using new ```Node.eq```
  methods). This introduces some slight backwards incomaptible
  changes, but was necessary, as the old version had
  inconsisten hash and equality methods that could lead the
  literals not working correctly in dicts/sets.
  The new way is more in line with how SPARQL 1.1 works.
  For the full details, see:

  https://github.com/RDFLib/rdflib/wiki/Literal-reworking

* Iterating over ```QueryResults``` will generate ```ResultRow``` objects,
  these allow access to variable bindings as attributes or as a
  dict. I.e.

  ```py
  for row in graph.query('select ... ') :
     print row.age, row["name"]
  ```

* "Slicing" of Graphs and Resources as syntactic sugar:
  ([#271](https://github.com/RDFLib/rdflib/issues/271))

  ```py
  graph[bob : FOAF.knows/FOAF.name]
            -> generator over the names of Bobs friends
  ```

* The ```SPARQLStore``` and ```SPARQLUpdateStore``` are now included
  in the RDFLib core

* The documentation has been given a major overhaul, and examples
  for most features have been added.


Minor Changes:
--------------

* String operations on URIRefs return new URIRefs: ([#258](https://github.com/RDFLib/rdflib/issues/258))
  ```py
  >>> URIRef('http://example.org/')+'test
  rdflib.term.URIRef('http://example.org/test')
  ```

* Parser/Serializer plugins are also found by mime-type, not just
  by plugin name:  ([#277](https://github.com/RDFLib/rdflib/issues/277))
* ```Namespace``` is no longer a subclass of ```URIRef```
* URIRefs and Literal language tags are validated on construction,
  avoiding some "RDF-injection" issues ([#266](https://github.com/RDFLib/rdflib/issues/266))
* A new memory store needs much less memory when loading large
  graphs ([#268](https://github.com/RDFLib/rdflib/issues/268))
* Turtle/N3 serializer now supports the base keyword correctly ([#248](https://github.com/RDFLib/rdflib/issues/248))
* py2exe support was fixed ([#257](https://github.com/RDFLib/rdflib/issues/257))
* Several bugs in the TriG serializer were fixed
* Several bugs in the NQuads parser were fixed
	0.4.2 (2014-02-14)
------------------

- Python 2.6 support
  (Issue #96, thanks tiagocoutinho)
- Fixed symbol for inch.
  (Issue #102, thanks cybertoast)
- Stop raising AttributeError when wrapping funcs without all of the attributes.
  (Issue #100, thanks jturner314)
- Fixed warning appearing in Py2.x when comparing a Numpy Array with an empty string.
  (Issue #98, thanks jturner314)
- Add links to AUR packages in docs.
  (Issue #91, thanks jturner314)
- Fixed garbage collection related problem.
  (Issue #92, thanks jturner314)


0.4.1 (2014-01-12)
------------------

- Integer Division with Arrays.
  (Issue #80, thanks jdreaver)
- Improved Documentation.
  (Issue #83, thanks choloepus)
- Removed 'h' alias for hour due to conflict with Planck's constant.
  (Issue #82, thanks choloepus)
- Improved get_base_units for non-multiplicative units.
  (Issue #85, thanks exxus)
- Refactored code for multiplication.
  (Issue #84, thanks jturner314)
- Removed 'R' alias for roentgen as it collides with molar_gas_constant.
  (Issue #87, thanks rsking84)
- Improved naming of temperature units and multiplication of non-multiplicative units.
  (Issue #86, tahsnk exxus)



0.4 (2013-12-17)
----------------

- Introduced Contexts: relation between incompatible dimensions.
  (Issue #65)
- Fixed get_base_units for non multiplicative units.
  (Related to issue #66)
- Implemented default formatting for quantities.
- Changed comparison between Quantities containing NumPy arrays.
  (Issue #75) - BACKWARDS INCOMPATIBLE CHANGE
- Fixes for NumPy 1.8 due to changes in handling binary ops.
  (Issue #73)


0.3.3 (2013-11-29)
------------------

- ParseHelper can now parse units named like python keywords.
  (Issue #69)
- Fix comparison of quantities.
  (Issue #74)
- Fix Inequality operator.
  (Issue #70, thanks muggenhor)
- Improved travis configuration.
  (thanks muggenhor)


0.3.2 (2013-10-22)
------------------

- Fix get_dimensionality for non multiplicative units.
  (Issue #66)
- Proper handling of @import directive inside a file read using pkg_resources.
  (Issue #68)


0.3.1 (2013-09-15)
------------------

- fix right division on python 2.7
  (Issue #58, thanks natezb)
- fix formatting of fractional exponentials between 0 and 1.
  (Issue #62, thanks jdreaver)
- fix installation as egg.
  (Issue #61)
- fix handling of strange values as input of Quantity.
  (Issue #53)
- math operations between quantities of different registries now raise a ValueError.
  (Issue #52)


0.3 (2013-09-02)
----------------

- support for IPython autocomplete and rich display.
  (Issues #30 and #31)
- support for @import directive in definitions file.
  (Issue #22)
- support for wrapping functions to make them pint-aware.
  (Issue #16)
- support for comparing UnitsContainer to string.
  (Issue #35)
- fix error raised while converting from a single unit to one expressed as
  the relation between many.
  (Issue #29)
- fix error raised when unit symbol is missing.
  (Issue #41)
- fix error raised when magnitude is Decimal.
  (Issue #46, thanks danielsokolowski)
- support for non-installed pint.
  (Issue #42, thanks danielsokolowski)
- support for application of numpy function on non-ndarray magnitudes.
  (Issue #44)
- support for math operations on dimensionless Quantities (written with units).
  (Issue #45)
- fix obtaining dimensionless quantity from string.
  (Issue #50)
- fix adding and comparing numbers to a dimensionless quantity (written with units).
  (Issue #54)
- Support for iter in Quantity.
  (Issue #55, thanks natezb)


0.2.1 (2013-07-02)
------------------

- fix error raised while converting from a single unit to one expressed as
  the relation between many.
  (Issue #29)


0.2 (2013-05-13)
----------------

- support for Measurement (Quantity +/- error).
- implemented buckingham pi theorem for dimensional analysis.
- support for temperature units and temperature difference units.
- parser can infers if the user mean temperature or temperature difference.
- support for derived dimensions (e.g. [speed] = [length] / [time]).
- refactored the code into multiple files.
- refactored code to isolate definitions and converters.
- refactored formatter out of UnitParser class.
- added tox and travis config files for CI.
- comprehensive NumPy testing including almost all ufuncs.
- full NumPy support (features is not longer experimental).
- fixed bug preventing from having independent registries.
  (Issue #10, thanks bwanders)
- forces real division as default for Quantities.
  (Issue #7, thanks dbrnz)
- improved default unit definition file.
  (Issue #13, thanks r-barnes)
- smarter parser supporting spaces as multiplications and other nice features.
  (Issue #13, thanks r-barnes)
- moved testsuite inside package.
- short forms of binary prefixes, more units and fix to less than comparison.
  (Issue #20, thanks muggenhor)
- pint is now zip-safe
  (Issue #23, thanks muggenhor)


Version 0.1.3 (2013-01-07)
--------------------------

- abbreviated quantity string formating.
- complete Python 2.7 compatibility.
- implemented pickle support for Quantities objects.
- extended NumPy support.
- various bugfixes.


Version 0.1.2 (2012-08-12)
--------------------------

- experimenal NumPy support.
- included default unit definitions file.
  (Issue #1, thanks fish2000)
- better testing.
- various bugfixes.
- fixed some units definitions.
  (Issue #4, thanks craigholm)


Version 0.1.1 (2012-07-31)
--------------------------

- better packaging and installation.


Version 0.1   (2012-07-26)
--------------------------

- first public release.