The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
$Id: CHANGES,v 1.32 2004/08/19 18:57:11 areggiori Exp $

Revision history for Perl extension RDFStore.

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