$Id: CHANGES,v 1.71 2006/06/19 10:10:21 areggiori Exp $

Revision history for Perl extension RDFStore.

version 0.51 - Mon Jun 19 09:56:48 BST 2006
----------------------------------------------------------------------------------------------------------------------------
	
	RDFStore.xs
		- fixed bug into RDFStore_Literal_new() when literal is NULL
		- fixed bug when using modern threaded versions of perl (added dTHX; definitions)
		- updated search() to receive an hash-ref as main paramter (see t/01_rdfstore.t for example)
		- updated TIEHASH() to receive bt_compare_fcn_type parameter after mode (alos updated dbms/clinet tests)
		- added from() method to DBMS
		- added RDFStore::if_modified_since() method

	DBMS.pm
		- added $DBMS::BT_COMP_INT, $DBMS::BT_COMP_DOUBLE and $DBMS::BT_COMP_DATE definitions accordngly to include/rdfstore_flat_store.h

	include/backend_bdb_store_private.h
		- added from() method

	include/backend_dbms_store_private.h
		- added from() method

	include/backend_store.h
		- added from() method

	backend_caching_store.c
		- updated to use debug malloc/free
		- added from() method

	backend_bdb_store.c
		- fixed bug into first() and next() methods by removing DB_DBT_MALLOC flag on returned key
		- added from() method

	backend_dbms_store.c
		- added from() method
		- misc fixed bugs when returning status and errors to caller

	include/rdfstore_ms.h
		- added some XSD constants

	include/rdfstore_flat_store.h
		- added b-tree ordering function support if requested on open/creation
		- added from() method

	rdfstore_flat_store.c
		- added b-tree ordering function support if requested on open/creation
		- added from() method
		- updated delete() method to properly return FLAT_STORE_E_NOTFOUND if key not found

	include/rdfstore.h
		- added RDFSTORE_INDEXING_VERSION_KEY and RDFSTORE_INDEXING_VERSION constants

	rdfstore_kernel.c
		- ignore default model context for data access methods like search() and contains() and use explit parameter
		- updated rdfstore_fetch_object() method to consider also bNodes as source node of the CBD
		- added xsd:double and xsd:integer b-tree sorted tables
		- added simple range search using xsd:integer and xsd:double tables
		- added RDFSTORE_INDEXING_VERSION_KEY to model and check of RDFSTORE_INDEXING_VERSION on connect()
		- updated insert and remove methods to check rdfstore_flat_store_delete() errors and avoid to index word as stem too
		- added rdfstore_if_modified_since() method and updated insert and remove methods to touch last modify date
		- added rdfstore_get_version() method to return perl level compiled time $VERSION string

	RDFStore::NodeFactory
		- fixed bNodes identifers generation
	
	RDFStore::Parser
		- updated wget() adding Accept: HTTP header and use LWP::UserAgent if available

	RDFStore::Parser::SiRPAC
		- updated wget() method invocation
		- force rdf:parseType="Literal" if rdf:dataType="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"
		- fixed bug in processDescription() when expanding rdf:nodeID on predicate with inline typed node

	RDFStore::Parser::NTriples
		- updated wget() method invocation

	RDFStore::Parser::Styles::RDFStore::Statement
		- new module to dump dump RDF/XML parsing results / statements

	RDQL::Parser
		- added SELECT DISTINCT
		- added SPARQL PREFIX support and default/built-in prefixes
		- added # and // style comments
		- added SPARQL QNAME like support
                - added ?prefix:var QName support to vars
		- added SPARQL CONSTRUCT support
		- added SPARQL $var support
		- added getQueryType() method
		- added SPARQL DESCRIBE support
		- fixed bug in Literal() when matching floating point numbers
		- updated constraints and removed AND keyword to be SPARQL compatible
		- added not standard RDQL/SPARQL DELETE support
		- added default SPARQL PREFIX op: <http://www.w3.org/2001/sw/DataAccess/operations> and PREFIX fn: <http://www.w3.org/2004/07/xpath-functions>
		- updated and simplified constraints productions to reflect latest SPARQL spec
		- constraints are now stacked into a RPN 
		- added full SPARQL graph-patterns and grouping
		- added SPARQL FROM NAMED support
		- added SPARQL LIMIT support
		- added SPARQL OFFSET support
		- added SPARQL ORDER BY support

	DBD::RDFStore
		- added SELECT DISTINCT support
		- updated RDF-for-XML format to return xsi:type information	
		- start adding empty bound/var support
                - added ?prefix:var QName support to vars
		- updated RDF/XML format to stream one single graph
		- added SPARQL CONSTRUCT support
		- added DBD::RDFStore::st::getQueryStatement() method
		- renamed asRDF DBI parameter as results - and removed output handle and output_string modes
		- updated XML and misc RDF output format interface to use DBD::RDFStore::st specific methods:
			fetchrow_XML(), fetchall_XML(), fetchsubgraph_serialize(), fetchallgraph_serialize()
	        - added fetchsubgraph() and fetchallgraph() methods to return matches as RDFStore::Model
		- added SPARQL DESCRIBE support
		- fixed bug into _prepareTriplepattern() when bNode is substituted
		- added simple RDF/S rdfs:subClassOf rdfs:subPropertyOf and owl:sameAs inferencing if aval into input RDF merge and requested
		- updated search() method call to use new XS code interface (hash ref)
		- added simpler XML serialization (dawg-xml) see http://www.w3.org/2001/sw/DataAccess/rf1/
		- replaced rdfqr-results with dawg-results format http://www.w3.org/2001/sw/DataAccess/tests/result-set#
		- removed rs:size from dawg-results format see http://lists.w3.org/Archives/Public/public-rdf-dawg/2004OctDec/0196.html
		- added not standard RDQL/SPARQL DELETE support
		- updated to rw mode for database connection if specified or DELETE requested
		- added default SPARQL PREFIX op: <http://www.w3.org/2001/sw/DataAccess/operations> and PREFIX fn: <http://www.w3.org/2004/07/xpath-functions>
		- added basic set of SPARQL operations and functions - see http://www.w3.org/2001/sw/DataAccess/rq23/#tests
		- constraints are now process using a RPN stack
		- added simple SPARQL OPTIONAL keyword support
		- fixed bug when processing bNodes
		- added SPARQL LIMIT support
		- added SPARQL OFFSET support
		- added SPARQL ORDER BY support

	lib/RDFStore/Model
		- updated search() method call to use new XS code interface (hash ref)
		- added ifModifiedSince() method

	utils/rdfquery.pl
		- replaced rdfqr-results with dawg-results format http://www.w3.org/2001/sw/DataAccess/tests/result-set#
                - added dawg-xml serialization ( see http://www.w3.org/2001/sw/DataAccess/rf1/ )
		- updated to use more general fetchrow_XML() adn fetchsubgraph_serialize() methods and return XML results by default
		- added -smart option to due simple inferencing
		- removed -query option and reads query either as string or from specified filename
		- added 'comment' and 'metadata' options

	utils/rdf.pl
		- use RDFStore::Parser::Styles::RDFStore::Statement if no storage is required
		- added '-version' option to print $RDFStore::VERSION

	RDFStore::Serializer::RDFXML
		- fixed bug when model context is set

	RDFStore::Serializer::RSS
		- fixed bug when model context is set

version 0.5 - Thu Aug 19 20:08:14 CEST 2004
----------------------------------------------------------------------------------------------------------------------------

	A brand new indexing model for RDF data has been developed in this release - such a indexing model allows to store
        quite efficienty "pedantic" RDF descriptions by leveraging on compression of the index of triples using a custom RLE+VLE
	compression algorithm written in C and XS.  It is under investigation the real need to have a custom compression algorithm 
	for RDFStore instead of using one in the public domain; some tests showed that general purpose algorithms like LZO or LZF 
	perfom worse in the specific case of RDFStore where the sparse matrix contains well-known patterns.

	This version start to support the RDF Data Query language (RDQL/Squish) via a proper DBD::RDFStore DBI driver 
	(see http://www.hpl.hp.co.uk/people/afs/RDQL/ and http://swordfish.rdfweb.org/rdfquery/) The software support tha basic 
	query language with some extensions to run free-text queries over literals (property values). See also the RDF Query and Rules
	page at http://www.w3.org/2003/03/rdfqr-tests/

	RDFStore::Model now support basic single statement-grouping (i.e. "context") per statement that allow to run storage 
	operations giving a kind of context to them e.g. a spatial or temporal context or just the source URI; all basic model 
	method have been updated to support that. This stuff is really much close to the on going work of RDF Core WG and other 
	proposals about adding context information to individual triples. This software part is just meant to be a useful and practical
	artifact and does not want or pretend any of the complex issues being discussed in the RDF community.

	The RDFStore::Parser::OpenHealth parser has been removed from the distribution

	Being that the new storage model does not require Data::MagicTie anymore, the module is being distributed separatly (not on CPAN even ;)

	Some useless modules has been removed from the distribution and some has been renamed; in general the basic storage 
	functionalities are provided through the RDFStore module, while the Stanford API specific code is available in the RDFStore::* modules. 
	The SiRPAC RDF parser is still being distributed with the main storage sources but they will be also distributed separately 
	in the future (XML::SAX::RDF::Filter or something)

	UTF-8 (Unicode) support has been natively introduced into this release - custom C/XS code has been written to allow convertion
        from/to utf8 to other char encodings - the perl use can also use the RDFStore::Util::UTF8(3) to get general string utility functions
	which work on UTF8/Unicode.

	Things in CVS now also into the sourceoforge RDFStore CVS repository. In addition the system should compile fine on most of the 
	UNIX systems out there (including the dbms/ tcp/ip deamon)

	Backend now fully general - software ships with BerkeleyDB, DBMS and caching (in-memory) backends

	Basic caching layer added which should speed up all the DB and I/O operations

	t/
		- updated all test cases
		- added 04_rdql.t, 05_serializier.t and 06_objects tests

	RDFStore
		- updated to be the corner stone of the RDF storage actually implemented in C and XS (lots of C and XS code really hoping to gain 
		  some speed and credibility here :) Here is the place where all perl world magics happen....almost
		- now brand new C low-level API interfaced to perl via XS code

	RDQL::Parser
		- new module

	DBD::RDFStore
		- new DBI driver to run RDQL/Squish SQL like queries :-) allows to dump query results in several different formats

	RDFStore::Iterator
		- new module

	RDFStore::Object
		- new module

	RDFStore::Serializer
		- new module

	RDFStore::Serializer::RDFXML
		- new module

	RDFStore::Serializer::NTriples
		- new module

	RDFStore::Serializer::RSS
		- new module

	RDFStore::Util::UTF8
		- new module

	RDFStore::Model
		- brand new design now using the faster C/XS RDFStore(3) module....finally :)
		- updated methods to avoid a full copy of statements across when the model is shared if possible
		- added basic support for statements grouping - see setContext(), getContext() and resetContext()
		- zapped toStrawmanRDF() method
		- added serialize() method to generally dump a model/graph to a string or filehanlde
		- added isConnected() and isRemote() methods
		- added unite(), subtract(), intersect(), complement() and exor() methods
		- re-added RDFStore::Resource inheritance  
		- added getParser(), getReader(), getSerializer() and getWriter() methods

	RDFStore::Parser
		- new module
		- includes wget() now using IO::Socket and other general purpose parsing methods

	RDFStore::Parser::SiRPAC
		- fixed bug in processDescription()
		- fixed bug in processTypedNode() when removeAttribute
		- fixed bug in makeAbsolute() when LocalName contains '#'
		- removed xml:space handling in RDFXML_CharacterDataHandler()
		- fixed bug in processPredicate() - does not generate triples when PCDATA is pure whitespaces stuff and there are XML subelements
		- fixed bug in processListItem() when generate rdf:li elements
		- added rdfcroak() instead of using $expat->xpcroak()
		- updated newReificationID()
		- added RDFMS_nodeID and RDFMS_datatype
                - updated reify()
                - added rdf:nodeID support
		- added rdf:parseType="Collection" support to processPredicate()
		- fixed bug in processPredicate() to force a resource node object for rdf:type on predicate with rdf:resource
		- removed parse_start() method and added parsestream() to do expat no-blocking parseing of large XML streams
		- removed processListItem() - new specs require to process containers as nomral predicates and simply enumerating elements
		- fixed bug in processContainer() to treat RDF containers just like any other typed node but with rdf:li or rdf:_n nodes
                - added xml:base support
                - added xml:lang support
		- added manage_bNodes callback/hanlder
		- updated bNode identifier generation algorithm - now parser run wide unique - see newReificationID()
		- various fixes when using getAttributeValue() 
		- updated rdfcroak() to return source name too when failing
		- updated processXML() - removed the fetchSchema part
		- force source to STDIN: if not defined
		- removed RDFCore_Issues option - now default
		- added rdfwarn()
		- added warnings()
		- moved common code to RDFStore::Parser
		- added rdf:datatype support
		- added rdfstore:context support

	RDFStore::Parser::NTriples
		- new module

	RDFStore::Vocabulary::DC
		- updated DCMI namespace to http://purl.org/dc/elements/1.1/

	RDFStore::Parser::Styles::RDFStore::Model
		- renamed from RDFStore::Parser::Styles::MagicTie
		- added Context option to the storage
		- fixed typing error when apssing the nodeFactory to the model
		- allows to specify an existing RDFStore::Model as input
		- added owl:imports support

	utils/
		- updated rdfquery.pl to use RDQL/Squish syntax and read some default storage parameters
		- added context/provenance flags to rdf.pl and rdfingest.pl
		- added pod2html.pl utility to HTMl format native perl POD documentation

	RDFStore::Resource
		- added anonymous resources support - see also RDFStore::NodeFactory(3) and RDFStore::Model(3)
		- added isAnonymous() and isbNode()
		- updated accordingly to new RDFStore API
		- removed BLOB support

	RDFStore::RDFNode
		- updated accordingly to new RDFStore API
		- removed BLOB support

	RDFStore::Literal
		- updated accordingly to new RDFStore API
		- removed BLOB support

	RDFStore::Statement
		- updated accordingly to new RDFStore API
		- added statements reification and context support

	RDFStore::Vocabulary::Generator
		- updated to use RDFStore::Model new API

	RDFStore::Vocabulary::DCQ
                - updated

	RDFStore::Vocabulary::DCT
                - new vocabulary for DCMI Type Vocabulary

	RDFStore::Vocabulary::RSS
                - new vocabulary for RSS1.0 see http://purl.org/rss/1.0/

	RDFStore::Vocabulary::RDFStoreContext
                - new vocabulary for RDFStore contexts

	RDFStore::Vocabulary::OWL
                - new vocabulary for OWL see http://www.w3.org/2002/07/owl#

	RDFStore::NodeFactory
		- added anonymous resource support via createAnonymousResource() and createbNode() - see also RDFStore::Resource(3)
		- added statements reification support via createReifiedStatement() - see also RDFStore::Statement(3)
		- updated accordingly to new RDFStore API
		- added createNTriple() method

	RDFStore::SetModel
		- removed now included into main RDFStore::Model(3)

	RDFStore::Util::Digest
		- added as new module to manage SHA-1 cryptographic digests natively (using apache SHA-1 code) most of functionality 
		  like old module RDFStore::Stanford::Digest::Util(2)

	RDFStore::Model::Iterator
		- re-implementation of old RDFStore::Model::Statements using RDFStore::Iterator

version 0.42 - Fri Aug 31 17:31:13 CEST 2001
-------------------------------------------------------------------------------------------

	Updated Makefiel.PL

	utils/
		- added rdf2n3p.pl to test cases as part of the RDF Core working group (see
                  http://www.w3.org/2001/sw/RDFCore/ntriples/)
		- updated rdf.pl
		- updated rdfquery.pl
		- updated rdfingest.pl
		- updated dbcat

	RDFStore::Parser::SiRPAC
		- updated accordingly to RDF Core Working Group decisions (see 
		  http://www.w3.org/2000/03/rdf-tracking/#attention-developers)
			* rdf-ns-prefix-confusion (carp if error)
			* rdfms-abouteachprefix (removed aboutEachPrefix)
			* rdfms-empty-property-elements (updated  processDescription() and processPredicate())
			* rdf-containers-formalmodel (updated processListItem())
		- added RDFCore_Issues option
		- fixed bug when calling setSource() internally
		- updated makeAbsolute()
		- fixed bug in processListItem() when calling processContainer()
		- fixed bug in processPredicate() for empty predicate elements having zero attributes

	Data::MagicTie
		- fixed compilation bug while strict subs when missing DB_File

	t/
		- updated magictie.t
		- updated rdfstore.t

	RDFStore::Statement
		- updated toString() and getDigest()

	RDFStore::Model
		- complete redesign of the indexing method up to free-text search on literals
		- added tied array iterator RDFStore::Model::Statements to allow fetching results one by one
		- modified find() to allow a 4th paramater to make free-text search over literals

	RDFStore::SetModel
		- updated accordingly to new RDFStore::Model

version 0.41 - Thu Jul 12 17:11:02 CEST 2001
-------------------------------------------------------------------------------------------

	RDFStore::Parser::SiRPAC
		- fixed bug with XML::Parser 2.30 using expat-1.95.1
		     * XMLSCHEMA set to http://www.w3.org/XML/1998/namespace (see http://www.w3.org/TR/1999/REC-xml-names-19990114/#ns-using)
		     * added XMLSCHEMA_prefix
		- changed RDF_SCHEMA_NS to http://www.w3.org/2000/01/rdf-schema#

	RDFStore::Parser::OpenHealth
		- fixed bug with XML::Parser 2.30 using expat-1.95.1
		     * XMLSCHEMA set to http://www.w3.org/XML/1998/namespace (see http://www.w3.org/TR/1999/REC-xml-names-19990114/#ns-using)
		     * added XMLSCHEMA_prefix
		- changed RDF_SCHEMA_NS to http://www.w3.org/2000/01/rdf-schema#

	RDFStore::Stanford::Digest::Util
		- updated digestBytes2HashCode()

	RDFStore::Model
		- updated _getLookupValue() and _getValuesFromLookup() to consider negative hashcodes

	RDFStore::Literal
		- added getDigest() to generate the digest using quotes and the label

	Data::MagicTie
		- fixed compilation bug while strict subs
		- added a warning in del_dup() if not supported by underlying DB_File library
		- updated _untie() to avoid warnings while untie databases

	t/
		- updated rdfstore.t
		- updated parser.t
		- updated magictie.t moving DBMS specific code to dbms/DBMS/t/magictie.t

version 0.4 - Mon Jun 18 17:18:36 CEST 2001
-------------------------------------------------------------------------------------------

	This a major release. A lot of changes ahs been made to the storage system in parituclar
	the dbms/ TCP/IP has been compeltely updated and the Data::MagicTie BerkeleyDB has been
	updated to make properly DB locking to handle concurrency and avoid dead-locks situations.
	The API modified accordingly to the latest changes in the Stanford Java API 2001-01-19 distribution.
        (see http://www-db.stanford.edu/~melnik/rdf/rdf-api-2001-01-19.zip)
	The SiRPAC parser has been also updated accordingly to the latest W3C 
	version at http://www.w3.org/RDF/Implementations/SiRPAC/

	Updated documentation of all the perl modules and fixed a few typo warnings.

	dbms/CHANGES
		- added separated changes file for the DBMS module

	Makefile.PL
		- updated

	RDFStore
		- removed FindIndex module

	RDFStore::Stanford::Vocabulary::Generator
		- fixed bug in dumpVocabulary() when matching input namespace (escape plus signs)
		  and output full qualified package variable names of voc properties
		- fixed bug in createVocabulary() when check package name
		- fixed miss-spelling bug in toPerlName()
		- fixed a few warnings
		- updated accordingly to new RDFStore::Model

	RDFStore::Model
		- modifed add() to return undef if the triples exists already in the database
		- changed way to return undef in subroutines
		- adapted to use the new Data::MagicTie interface
		- complete re-design of the indexing and storage method
		- added getOptions() method
		- Devon Smith <devon@taller.pscl.cwru.edu> changed getDigestBytes() to generate digests and hashes
		  that match Stanford java ones exactly
		- added inheritance from RDFStore::Stanford::Digest::Digestable
		- removed RDFStore::Stanford::Resource inheritance

	RDFStore::Resource
		- added check on local name when create a new Resource
		- allow creation of resources from URI(3) objects or strings using XMLNS LocalPart
		- hashCode() and getDigest() return separated values for localName and namespace if requested

	RDFStore::SetModel
		- updated accordingly to new RDFStore::Model
	
	RDFStore::Parser::Styles::MagicTie
		- modified Assert() to print only new statements

	Data::MagicTie
		- complete redesign of Data::MagicTie. Dropped Data::MagicTie::(DBMS|DB_File|BerkeleyDB) modules
		  Everything is self contained in one model now.
		- changed options labels
		- modified mode option managemnt
		- added checking if DBMS, BerkeleyDB, DB_File or SDBM_File styles can not be loaded
		- changed way to return undef in subroutines
		- remove db files directory if tie operation fails
		- FIRSTKEY() and NEXTKEY() methods optimised
		- use File::Path module to create and remove directories to be portable
		- changed mode to DB_BTREE for DB_File TIEHASH
		- added BerkeleyDB file locking in TIEHASH and TIEARRAY
		- took off a few useless sync() calls
		- dropped lr (local/remote) option
		- dropped noft (no freeze/thaw) option
		- added in-memory style
		- added sharing option
		- added SDBM_File default style
		- fixed warning in _keyDB()
		- added perl version checking for Data::MagicTie::Array methods
		- added multiple reader/single writer locking support for DB_File
		- does not generate multiple '.db' extensions to files in _tie()

	t/
		- updated magictie.t
		- added rdfstore.t

	samples
		- zapped a few examples
		- updated test.pl

	samples/rdf
		- zapped a few examples

	samples/rdf/vocabularies
		- zapped a few examples. Updated DAML and foaf schemas
		- added RSS schema
		- added XML infoset RDF Schema
		- zapped DublinCore
		- added 22-rdf-syntax-ns, rdf-schema, 13-dces and 13-dcq

	RDFStore::Vocabulary::DCQ
		- added DCQ vocabulary http://dublincore.org/2000/03/13-dcq#

	RDFStore::Vocabulary::DC
		- updated accordingly to RDFStore::Stanford::Vocabulary::Generator changes and http://dublincore.org/2000/03/13/dces#

	RDFStore::Vocabulary::DAML
		- updated accordingly to RDFStore::Stanford::Vocabulary::Generator changes and http://www.daml.org/2001/03/daml+oil.daml

	RDFStore::Vocabulary::RDF
		- updated accordingly to RDFStore::Stanford::Vocabulary::Generator changes
		- removed rdf:Description, rdf:resource, rdf:about, rdf:aboutEach, rdf:anboutEachPrefix, rdf:ID, rdf:parseType, rdf:parseType (it is up to the application to build resources with them using $RDF::_Namespace)

	RDFStore::Vocabulary::RDFS
		- updated accordingly to RDFStore::Stanford::Vocabulary::Generator changes

	RDFStore::Stanford::Digest::Util
		- fixed stupid/braindead bug when disable warnings- Thanks to Marc Lehmann <pcg@goof.com>
		- added getDigestAlgorithm() method
		- Devon Smith <devon@taller.pscl.cwru.edu> changed digestBytes2HashCode() and toHexString() to
		  generate digests and hashes that match Stanford java ones exactly

	RDFStore::Parser::OpenHealth
		- changed way to return undef in subroutines
		- fixed warnings in getAttributeValue()

	RDFStore::Parser::SiRPAC
		- changed way to return undef in subroutines
		- now creation of Bag instances for each Description block is an option
		- fixed bug in getAttributeValue() when check attribute name
		- fixed bug in setSource() when add trailing '#' char	
		- bug fixing by rob@eorbit.net
			* Some of the generated URIs were not prepended with #
			* The parser spits out lots of 'undefined value used' during the parsing process
		- fixed warnings in getAttributeValue(), RDFXML_StartElementHandler()
		- added GenidNumber parameter
		- updated accordingly to http://www.w3.org/RDF/Implementations/SiRPAC/
		- bug fix in reify() when generate the subject property triple
		- added getReificationCounter()

	RDFStore::Statement
		- changed way to return undef in subroutines
		- fixed warning in getDigest()
		- updated new() equals() and added hashCode() accordingly to rdf-api-2001-01-19
		- Devon Smith <devon@taller.pscl.cwru.edu> changed getDigest to generate digests and hashes
		  that match Stanford java ones exactly

	RDFStore::RDFNode
		- fixed bug in hashCode() to avoid bulding the digest each time
		- added inheritance from RDFStore::Stanford::Digest::Digestable

	RDFStore::NodeFactory
		- changed way to return undef in subroutines
		- implemented createOrdinal()

	RDStore::Literal
		- modified getLabel() and getURI() to return a lebel even if the Literal is a BLOB (using Storable)
		- updated equals() method to make a real comparison of BLOBs using Storable module

	utils/
		- updated rdf.pl, rdfingest.pl, rdfquery.pl and vocabulary-generator.pl
		- updated dbcat

	RDFStore::Stanford::Digest::Digestable
		- added new module which represent objects that can produce a digest 

version 0.31 - Fri Dec 22 15:31:14 CET 2000
-------------------------------------------------------------------------------------------

	This version has renamed all the Perl packages making RDFStore ready to be published to
	the Perl CPAN archive. The module names have been mapped as follows:

	 version<=0.3				version>=0.31
	================================================================================	
	Data::MagicTie::Client			Data::MagicTie::DBMS
	Data::MagicTie::DB_File			(unchanged)
	Data::MagicTie::BerkeleyDB		(unchanged)
	Data::MagicTie				(unchanged)
	RDF::Digest::Abstract			RDFStore::Stanford::Digest::Abstract
	RDF::Digest::Util			RDFStore::Stanford::Digest::Util
	RDF::Digest::MD5			RDFStore::Stanford::Digest::MD5
	RDF::Digest::Generic			RDFStore::Stanford::Digest::Generic
	RDF::Digest::SHA1			RDFStore::Stanford::Digest::SHA1
	RDF::Vocabulary::RDFS			RDFStore::Vocabulary::RDFS
	RDF::Vocabulary::Generator		RDFStore::Stanford::Vocabulary::Generator
	RDF::Vocabulary::DC			RDFStore::Vocabulary::DC
	RDF::Vocabulary::DAML			RDFStore::Vocabulary::DAML
	RDF::Vocabulary::RDF			RDFStore::Vocabulary::RDF
	RDF::Store::SchemaModel			RDFStore::SchemaModel
	RDF::Store::Model			RDFStore::Model
	RDF::Store::NodeFactory			RDFStore::NodeFactory
	RDF::Store::RDFNode			RDFStore::RDFNode
	RDF::Store::Resource			RDFStore::Resource
	RDF::Store::Statement			RDFStore::Statement
	RDF::Store::SetModel			RDFStore::SetModel
	RDF::Store::VirtualModel		RDFStore::VirtualModel
	RDF::Store::FindIndex			RDFStore::FindIndex
	RDF::Store::Literal			RDFStore::Literal
	RDF::RDFNode				RDFStore::Stanford::RDFNode
	RDF::Model				RDFStore::Stanford::Model
	RDF::Statement				RDFStore::Stanford::Statement
	RDF::NodeFactory			RDFStore::Stanford::NodeFactory
	RDF::SetModel				RDFStore::Stanford::SetModel
	RDF::VirtualModel			RDFStore::Stanford::VirtualModel
	RDF::Literal				RDFStore::Stanford::Literal
	RDF::Store				RDFStore::Stanford::Store
	RDF::Digest				RDFStore::Stanford::Digest
	RDF::Resource				RDFStore::Stanford::Resource
	XML::Parser::PenRDF::RDFStore		RDFStore::Parser::Styles::MagicTie
	XML::Parser::PenRDF			RDFStore::Parser::SiRPAC
	XML::Parser::PenRDFStrawman		RDFStore::Parser::OpenHealth

	The only Perl package namespace "invaded" is the Data one with the Data::MagicTie modules.

	In addition the documentation has been updated and the API modified accordingly to the latest 
	changes in the Stanford Java API 2000-12-05 distribution. 
	(see http://www-db.stanford.edu/~melnik/rdf/rdf-api-2000-12-05.zip)

	RDFStore::FindIndex
		- added new index storage method. Does not use Freezed/Thawed arrays  if possible

	RDFStore::Stanford::Digest::Util
		- fixed nusty bug in digestBytes2HashCode() to cast hash code to INTEGER

	Data::MagicTie
		- added get_Options() method

	Data::MagicTie::BerkeleyDB
		- completely modified the access methods to Sleepycat library and DBs - see Data::MagicTie::DB_File(3)

	RDFStore
		- added use (include) of all RDFStore modules suite

	RDFStore::Model
		- fixed bug in add() when adding statements with a Literal value
		- commented out isEmpty() check in find() due to DBMS(3) efficency problems 	
		- updated toStrawmanRDF() method 
		- modifed add() to avoid update of existing statements

	RDFStore::Stanford::NodeFactory
		- fixed the parameters checking when create Statements

	RDFStore::Parser::SiRPAC
		- fixed bug in parse_start() and parse() to check $file_or_uri
		  is a reference to an URI object
		- changed wget() Socket handle to work with previous Perl versions (not my $handle) and
		  do HTTP GET even on HTTP 'Location' redirect header
		- fixed bug in RDFXML_CharacterDataHand() when trim text and $preserveWhiteSpace              
		- fixed bug in processTypedNode() when remove attributes
		- commented off croak in expandAttributes() when 'expanding predicate element' for
		  production http://www.w3.org/TR/REC-rdf-syntax/#typedNode for xhtml2rdf stuff

	RDFStore::Parser::OpenHealth
		- changed wget() Socket handle to work with previous Perl versions (not my $handle) and
		  do HTTP GET even on HTTP 'Location' redirect header
		- little change when checking if a prefix is undefined

	utils/
		- added rdfingest.pl to ingest (S,P,O) comma separated text files right the way
		- updated rdf.pl rdfquery.pl
		- added bagIDs option to rdf.pl

version 0.3 - Tue Nov 28 14:02:10 CET 2000
-------------------------------------------------------------------------------------------

	This version has updated the Perl modules set accordingly to the latest chnages in the Stanford
        Java API 2000-11-13 distribution. (see http://www-db.stanford.edu/~melnik/rdf/rdf-api-2000-11-13.zip)
	
	Almost all modules have been fixed when checking references/pointers (defined and ref() )

	RDF::Store::FindIndex
		- fixed bugs when checking references/pointers (defined and ref() )

	XML::Parser::PenRDF
		- fixed bug in expandAttributes() when expand rdf:value
            	- Modified addOrder() expandAttributes() accordingly to rdf-api-2000-11-13
		- fixed bug in parse() parse_start() to set the Source right
		- fixed bug in RDFXML_StartElementHandler() when parseLiteral process attributes also
		- fixed bug in processTypedNode() to manage new attlist way
		- fixed bug in processPredicate() to manage new attlist way
		- fixed bugs due to the modifications due rdf-api-2000-10-30. Now $n->{tag} is either
		  $n->name() or $n->localName(); code got more clear also
		- fixed addTriple() and reify() - more checking and modified to manage right $subject

	XML::Parser::PenRDF::RDFStore
		- fixed bug in Assert() checking if $st is a ref and valid RDF::Statement

	RDF::Vocabulary::RDFS
		- changed namespace to http://www.w3.org/2000/01/rdf-schema#

	RDF::Store::Model
		- fixed bug in find(). Check the type of $t before using methods on it
		- added toStrawmanRDF() to serialise the model in strawman RDF for 
		  XML::Parser::PenRDFStrawman
		- fixed bug in create()
		- modified updateDigest() method accordingly to rdf-api-2000-11-13

	RDF::Vocabulary::Generator
		- fixed bug in toPerlName() and dumpVocabulary() avoid grep regex checking

	RDF::Store::SchemaModel
		- added getLocalName() and getNamespace() to delegate to instances
		- changed checking to RDF::SetModel type
		- modified toString()
		- fixed miss-spell in validate()

	Data::MagicTie::Client
		- fixed bug in FIRSTKEY(). Do not call keys and each anymore.

	utils/
		- little bit of changes in rdf.pl and rdfquery.pl
		- rdfquery.pl query syntax changed

version 0.2 - Mon Nov 13 14:56:46 CET 2000
-------------------------------------------------------------------------------------------

	This version updates the whole Perl modules set accordingly to the latest chnages in the Stanford 
	Java API 2000-10-30 distribution. (see http://WWW-DB.Stanford.EDU/~melnik/rdf/rdf-api-2000-10-30.zip)

	XML::Parser::PenRDF/XML::Parser::PenRDFStrawman
		- fixed bug in parsefile() to read URL-less filenames
		  (version0.1 was working only with 'file:' URL prefix)
		- fixed a lot of bugs/inconsistences in new(), parse(), setSource(), parsestring()
		  processXML() in the fetchSchema part, makeAbsolute()
		- added parse_start a la XML::parser for no-blocking stream
		  parsing using XML::Parser::ExpatNB
		- pod documentation updated
		- does not use URI::file anymore
		- Modified createResource(), XML::Parser::PenRDF::Element and
		  XML::Parser::PenRDF::DataElement accordingly to rdf-api-2000-10-30
		- General bug fixing

	XML::Parser::PenRDF::RDFStore
		- Init() now setSourceURI() for the model
		- now the result set is a SetModel

	RDF::Resource, RDF::NodeFactory, RDF::Store::Literal, RDF::Store::NodeFactory,
	RDF::Store::RDFNode,RDF::Store::Resource,RDF::Store::Statement
		- Modified accordingly to rdf-api-2000-10-30

	RDF::Store::Model
		- fixed bug in new() to check if triples is HASH ref when passed by user
		- fixed bug in find() do avoid to  return instances of SetModel (see SchemaModel.pm also)
		  Now result sets are put in an object(model) of the the same type - see find()
		- modified add() remove() clone() duplicate() and added toString() makePrivate()
		  getNamespace() getLocalName() methods accordingly to rdf-api-2000-10-30
		- modifed new(), duplicate(), clone() and find() to support cloned models
		- modified find() to manage normal Models and indexed Models differently
		- added optional indirect indexing to find() i.e. the FindIndex 
		  stores just digested keys and not the full BLOB; fetch from an 
		  index then require an additional look up in triples

	RDF::Vocabulary::Generator
		- added more magic keywords to 'reservedWords' list (my, local)
		- Modified createResource() accordingly to rdf-api-2000-10-30

	RDF::NodeFactory
		- pass @_ array to new methods
	
	Data::MagicTie
		- fixed warning messages

	RDF::Store::SetModel
		- fixed bug in intersect()
		- now all methods return the modified model

	RDF::Store::FindIndex
		- fixed miss-spelling bug in remove()
		- added indirect indexing support to be de-referenced by the caller 
		  Model object.

	samples/
		- fixed bugs in rdf.pl and rdfquery.pl
		- rdfquery.pl uses SetModel to unite (||), intersect (&&), subtract(!), 

version 0.1 - 2000/11/03 at 04:30 CEST
-------------------------------------------------------------------------------------------
	- first public version
