The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Revision history for Perl extension SADI.

1.10
    * Updated the template for the config file (sadi-services.cfg) so that users have to change 
      the least amount of hard coded paths if they want to move their generated services elsewhere.
    *  
1.09
    * FileStore now uses the File::Temp->tempdir by default instead of a predefined directory.
      You can still utilize a user specified directory.
    * Config now supports the ability to reference previously defined $keys in other keys.
    
1.08
    * Changed the sadi-please-wait pragma for asynchronous services to the HTTP header
      Retry-After.
    * Updated the test script to handle Retry-After and n3 content type
    * Changed default contentTYpe in SADI::RDF::Core to application/rdf+xml from text/plain
    * Added 2 methods to ServiceBase for getting the content type of the incoming message and
      the content type requested for the outgoing message.
    * Created a new test case for SADI::RDF::Core
    * SADI::RDF::Core now obeys the passed in contentType (defaults to rdf/xml; can handle n3)
    * Updated the testing script documentation
    * Added a 'how to upgrade' message to the SADI perldoc 
    
1.07
    * SADI::Service::Instance now checks that the Authority is a syntactically correct 
      domain URI
    * SADI::Base service2module() does a sanity check on the authority that is passed 
      to it.

1.06
	* removed dependency on LS
	* added a couple statements to SADI that mention that on windows, you need to omit
	  the .pl suffix when running SADI scripts.
1.05
    * Updated the signature for services to make it legitimate RDF (added xsd:boolean 
      to authoritative, ensure that the correct dc predicates were used).
    * Added an unLSRNize() subroutine to the SADI::Utils that returns the literal
      record value for services that have LSRN entities as there input.
    * Added new() to SADI::Utils so that the subroutines in that module are exposed
      through an object reference (and to make it more consistent with the project).
    * Added some unit tests for SADI::Utils
    * Added a comment to the generated service logic that illustrates how to use
      unLSRNize()

1.04
    * updated the suggested wait time for async sadi services to 30 seconds.
    * uses OWL2Perl version 0.96 or higher
    * generated owl classes (sadi-generate-datatypes) now include property
      constraints like hasValue and maxCardinality.
    * updated the required version of OWL2Perl needed.
    * merged the differences in service-async.tt with service.tt
    * added an option to sadi-generate-services.pl that generates
      perl modules for the input and output OWL classes.
    * removed the requirement for PLUTO from the makefile (OWL2Perl requires
      it and we require OWL2Perl, so whats the point of having it twice).
    * Updated addOutputData() in SADI::RDF::Core to utilize new method of
      getting statements from OWL2Perl classes.
    * added a method to SADI::Utils called LSRNize that takes LSRN records
      and adds a has attribute LSRN Identifier.
    * added option to sadi-generate-services.pl that generates output class
      datatypes (a generate all in one call option).
    * sadi-generate-services: removed F option for generated code to stdout
    * sadi-generate-services: moved g option to be first item done if specified
    * GenServices: added do_owl2perl option to generate_impl;
	* GenServices: if datatypes are already generated, then their usuage
	  is added to the service skeleton;
	* GenServices: added __inheriance method that sucks out all of the parents
	  for any given reference
	* generated services now have owl2perl usuage shown for output classes in
	  the impl skeleton if the modules were already generated.

1.03
    * fix uri2package: packages had # or / appended on odd uris ... broke
      our generated package names
    * added/updated some tests for uri2package as well as to clean up post
      testing
    *
1.02
    * updated the version of some of the modules required for this module
1.01
    * Updated SADI::RDF::Core to allow datatypes created when owl2perl
      was apart of the SADI module.
1.00
    * updated Makefile.PL to include OWL2Perl (code excised from this
      module and placed into a new separate module to more modularize
      the codebase)
    * updated the sadi-generate-datatypes.pl script to use the new 
      OWL2Perl codebase. Whole script was re-written.
    * replaced SADI::Data::* with OWL::Data::* in most cases.

0.99.6
    * Copied SADI::SADI to SADI
    * UniqueID, ServiceURI and SignatureURL default to Service URL
      if they are not defined.    

0.99.5
    * tweaked the synopsis in SADI::SADI (thanks to Mark)
    * updated the doc in template for async impl service
    * Bug fix: URIs with : in the name caused syntax errors
    * added some verbose statements to generate-datatypes
    * added xml section to the config file to select
      the SAX parser in generate-datatypes
    * added the ability for generate datatypes to
      select an XML parser.
    * updated FileStore's reading/closing of directory
      handles.
    * sadi-install script adds new unittest directory to
      users folder.
    * added new unittest section to sadi-services.cfg that
      points to the unit test directory
    * created SADI::Service::UnitTest module to encapsulate
      unit test data for sadi services. Added to 
      SADI::Service::Instance get/set for UnitTests.
    * added the ability for SADIServiceParser to parse unit
      test information
    * added XML filter to the template for service signatures
    * added unit test data to the template for service signatures
    * made messages from GenServices.pm DEBUG and not INFO to
      shut it up a bit ...
    * added a -T option to generate service script to generate
      a unit test for a sadi service
    * created a new tutorial for creating unit tests
    * updated the service tutorials (example input/output was
      specified incorrectly, i.e. not as lsrn.org identifiers)

0.99.4
    * bug fix: updated get_statements so that typed bnodes with
      no other triples get added to the output RDF model.
    * removed the extra declaration from the polling rdf
    

0.99.3 PLEASE READ perldoc for SADI::SADI for upgrade instructions!
    * update to the entry scripts. <> changed to
      <stdin> because perl v.5.10 doesnt seem
      to want to do <>.
    * added README files to the directories
      generated using sadi-install.pl script
    * updated the synopsis for our generated
      modules that represent owl entities.
    * .owl is stripped from package names for
      generated entities.
    * RDF-Core uses a simple counter for bnodes.
      When we generate RDF, this resulted in incorrect
      RDF/XML. Fixed.
    * Asynchronous services produced incorrect polling XML.
    * updates to the documentation were made to reflect
      recent code changes.
    * Async services HTTP status changed from 302 to 202
      as per SADI publication
    * sadi-testing-service can now poll services automatically
      if told to do so.
    * changed the asynchronous POST response header so that
      sadi-please-wait is set and HTTP status is 202.
    * added the ability to automatically poll services with
      sadi-testing-service. 
    * fixed bug in sadi-generate-datatypes.pl where base_uri
      wasn't being set properly.
    * bug fix: sometimes perl owl classes contained
      the same restrictions twice in a module. 

0.99.2 - another mainly documentation release
  - updated the makefile to reflect that we need PLUTO 
    0.23 in order to work correctly.
  - updated the tutorials to reflect that codebase is
    now only available on CPAN.
  - services use header 'application/rdf+xml' rather
    than text/xml
  - update SADI.pm to reflect recent changes in code
  - fix some typos in sadi-class.tt

0.99.1 - mainly a documentation release
  - datatype doc had incorrect reference to a non-
    existent module. Changed it to read
    "sadiframework::org::examples::example::owl::AnnotatedGeneID_Record"
  - added the ability to specify an outdir in datatypes script 
  - added test cases for generated perl modules representing owl entities
  - added test cases for config module
  - fixed some typos in test cases
  - updated some pre-existing pod to remove warnings/errors when generating
    pod html
  
0.99
  - added REQUEST_URI to log_request in ServiceBase.
  - fixed some typos in perldoc
  - added a tutorial on working with generated datatypes
  
0.98.1
  - Base.pm: bug fix-> remove ~ from paths and package names
0.98
   - sadi-class.tt: 
       * fixed template formating
       * ->label() was using Resource and not Literal
   - addOutputData
       * removed call to ServicePredicate
       * added warning when calling method without predicate
       * updated the doc to reflect that predicate is required
   - service.tt / service-async.tt updated the doc (like in Core.pm) 
   - Base.pm: bug fix-> remove ~ from paths and package names
   - updated the service-definition.tt file; added a new header
     and wrapped the input/output class in double quotes; placed
     the description in double quotes too.  

0.97
   - bug fix: sadi-install.pl; changed 0666 to 0777
     in chmod for async directory so that webserver
     can read it.
   - bug fix: in sadi-class.tt, added a defined check
     in get_statements for object/datatype property
     arrays
   - added a label attribute to generated owl classes
     so that labels can be added to resources if one
     wishes to do so.
   - fixed the service signature so that we dont 
     indicate that we consume instances, but classes
   - changed how input data to our services was read
     in. The module CGI was mangling our data when
     data was posted to the service.  

0.96
    - noticed that i neglected to include
      a couple of changes. specifically,
      the header in service-cgi-async.tt
      isnt set properly, so 500 error will
      happen each time.
    - add $Data::Dumper::Purity =1 to
      the store method in async service
      base.
    - added the ability for sadi-generate-datatypes
      to follow owl import statements using command
      line switch -i
    - when parsing owl from URL, that URL will be used
      as the base URL if one isnt defined in the OWL 
      document.
    - when parsing owl from a file, if -b is specified,
      then user is prompted for base URI.
    - updated the template for object properties to remove
      some of the code in the synopsis

0.95
    - in the tutorials, fixed a couple 
      more typos; bolded some sections.
    - added RDF to describe internal errors
      when running sadi services.
    - introduced sadi-generate-datatypes script
      this script takes RDF/OWL and produces
      modules that you can use in SADISeS.
      
      This script does produce modules from
      owl documents, but it isnt foolproof!
      
    - Added to SADI::RDF::Core, the ability to
      add output data of type 
      SADI::Data::OWL::Class.
       
    - TODO 
        * when reporting errors, update
          the HTTP response code 
    -
    - 
.93
   - removed XML::LibXML from the makefile
   - updated some typos in SADI::DATA::*
   - added some new documentation to the 
     SADI impl classes that are generated.
   - changed the license to new BSD and added
     a LICENSE file.

.92
   - updated the makefile
   - added some new documentation
   
.91
    - added async service support
    - some minor bug fixes

.90  Sept 01 2009
	- original version