ChangeLog for TDB
=================

==== 0.8.10

+ tdbloader now generates statistics when loading an empty database.
+ Bug fix: tdbloader2 coudl mishandle duplicate triples.
 
+ TDB no longer registers a shutdown handler to sync datasets.
  It has been discovered that it's possible to interrupt a write process,
  cause the shutdown handler to run and so break the database.  

+ Improved concurrency violation checking.

+ Print file names during loading multiple files in tdbloader2.

+ Increase heap size for data phase in tdbloader2.

==== 0.8.9

+ Bug fix for tdbloader2.

==== 0.8.8

+ Upgrade to latest Jena and ARQ jars
+ New bulk loader (not Windows) "tdbloader2"
    Usage: tdbloader2 --loc DIR file1 file2 ...
    Works on Unix-like systems.   
+ Incremental improvements to the pure Java bulk loader 

==== 0.8.7

+ Maintenace release

==== 0.8.6

+ No longer output an optimizer warning when loading data with tdbloader.
+ New command "riot" that parsers any format and outputs N-Triples/N-Quads
  Language determination based on filename extension. 
  Use command with specific fomat name to force the format
+ Improve performance when loading quads (N-Quads, TriG)
+ Loader output now to a logger (name in constant TDB.loadLoggerName)
+ Parser output now to a logger (name in constant RIOT.riotLoggerName)
+ Warnings and errors from TDB command line tools now go to stderr so not mixed with parser triples/quads output.
+ Bug fix: reconstructing XSD DateTime involving fractional seconds could omit leading 0s in fractional part.   

==== 0.8.5

+ Partial support for TriG and NQuads input (no loading messages, not fully optimized)
  tdbloader loads Trig and NQuads
  tdbdump output NQuads (N-Triples, if only the default graph contains any triples)
  Stil to be done: TriG output. 

+ Dynamic datasets : use the dataset description in a query (FROM/FROM NAMED) to 
  restrict the behaviour of the query execution to just those graphs.
  
    Default graph can be the set union of several graphs (use multiple FROM)
    Multiple named graphs (multiple FROM NAMED) restricts visibility of named graphs.
    
    This is a change in behaviour from earlier versions where a dataset 
    description was ignored or a generalpurpose query executed (graphs pulled 
    from the web). 
    
    See wiki for details.
    http://openjena.org/wiki/TDB/Datasets#Dynamic_Datasets

+ The internal library functions in the "atlas" package hierarchy have been
  moved to "org.openjena.atlas". 

+ Can now set TDB context symbols via Java's system properties 
  (-D when invoking Java).
  e.g. -Dtdb:logExec=true to enable log query execution 
       (in conjunction with the logging level). 
+ Add a shutdown hook to sync datasets (don't rely on it!)
+ Adding checking for concurrent modification situations.
  TDB supports multiple readers OR single writer.
  See also java.util collections.

+ Bug fixes for property functions and TDB.  apf:textMatch now works properly 
+ Fix XML of the POM file.
  Build is now doen with maven, not ant/ivy
+ Fix bug in "SELECT * { GRAPH ?g {} }"   

==== 0.8.4

+ Experimental: filtering of quads (to support dynamic datasets and graph masking at some time).
+ Include src-examples in sources shipped.
+ Bug fix: Turtle and N-triples reader could use the blank nod label as given, 
  not treat as a per run scoped label.    

==== 0.8.3

+ Concurrency fixes
+ Speed up reforming nodes from the on-disk representation.
+ (From ARQ) Speed up complex nested optionals.  BSBM now works on all thier dataset sizes.
+ Speed up basic processing of DateTime nodes (avoid using String.format to remake lexcial forms!) 

+ Bug fix: If the query has a dataset description, this was ignored.  
  Now if the query has a dataset description (FROM, FROM NAMED) then
  an in-memory query execution is done on the loaded files and the TDB
  dataset is ignored.

==== 0.8.2

+ TDB-backed graphs at the same location now use the shared dataset.
  This means all created modesl in a JVM shared TDB caches.
  
+ All tables now created even for just a graph or model
  (including the named graph quad tables).

+ Bug fix: asking the size of a empty graph before any other operation would make the size zero 
  for the rest of the lifetime of the in-memory graph.  No data corruption on disk.

+ Bug fix: language tags on """-strings were causing a parse error. 
      
==== 0.8.1

+ Fix bug when assembling one unnamed graph. 

==== 0.8.0

** The on-disk file format has changed : datasets must be reloaded **

+ TDBFactory now caches datatsets as they are created.  
  Opening a dataset anywhere in the same JVM will return the same dataset.
  Closing this dataset immediately releases resources and closes the dataset
  everywhere in the JVM.   
  
+ A named graph of <urn:x-arq:UnionGraph>  is the RDF merge of all named graphs in a dataset.
  This is now supported as a graph name when accessing one graph in a dataset via the
  programmtic API calls.  Update directly to the  union graph is not allowed; update of
  any named graph wil be immediately visible in the union graph.
  
+ A named graph of <urn:x-arq:DefaultGraph> is the same as the unnamed graph in a dataset. 

+ Upgrade to Java5 version of ARQ and Jena

+ Copes with spaces in URIs (strongly not recommended)

+ Internal general purpose (non-RDF) library code all moved under package "atlas"

+ Faster Turtle reader (combined underpinning with N-Triples bulkreader).  

==== 0.7.3

+ Execution logging now catches all execution paths

+ Metadata files attached to database files.  
  New files will appear in the database directory.

+ "tdbtest" renamed "tdbverify".  New "tdbtest" runs an individual test 
   manifest (similar to ARQ and SDB). 

Bug fixes:

- Query over the union of named graphs only works in simple cases.  
  Now works for any pattern. 

- Stats optimizer: failed to gracefully handle abbreviated patterns with TERM

==== 0.7.2

Bug fixes:

- The comand line tools did not work with a location and a named graph.

- removeAll(s,p,o) added.  Improve Model.removeAll()

- Bug fixes to B+tree indexing on deletion. 

==== 0.7.1

Bug fixes:

- Dataset.containsNamedModel on a TDB-backed data store always returns false.
  Now returns true if there are any triples in that graph.
  
- removeAll could cause an exception.
  Known issue but could manifest itself in strange ways
  Temporary fix applied - functionally correct but may use significant amounts of memory.
  
- Persistent prefixes might not work with RDF/XML even if they did for other formats.
  Fixed. 
   
==== 0.7.0

+ Named graph support
  Native TDB support for RDF datasets, including a quads table.
  Preliminary.

+ Reification: Support for Reification style "standard" 

+ Upgrade to slf4j 1.5.6 (2 jar names change)

==== 0.6.0

+ Added optimizer (statistics based) 
+ (32 bit OS) Added a transaction handler that will cause cached changes
  to be flushed to disk.  This is not ACID semantics and no abort is possible.   

==== 0.5.3

+ Bug fixes: concurrency control for on-disk files
