
                Redland RDF Application Framework - To Do list

   See the [1]web site version for the up-to-date list.

Bugs, Features, Requests For Enhancement

   In no real order. Help wanted.
     * RFE: Add node.as_sha1 easy digest methods for literal nodes
     * PHP  may  need  to  include  php_config.h not config.h for new php
       versions
     * RFE: return serialized models to syntax as strings
     * RFE:  model.parseString(format,  "string"), model.parseURI(format,
       URI, baseURI=URI) creating and destroying temporary parser objects
       for  format.  Means no need to care about parser class if you just
       want simple things. Similarly for model.serialize() and Serializer
       class,  however  take  care  with  serialise()  method.  Better as
       model.load(), model.save() or write()?
     * Update  the  RDF/RDFS  terms/labels  for  the  latest  RDF  Schema
       revision
     * in-memory storage uses more memory than needed
     * defensive  code  -  check object types are correct by adding magic
       fields to start of all objects
     * Consider an AVL-tree in-memory store ([2]libavl)
     * Docs:  note that compiling redland also builds raptor, if both are
       wanted
     * RFE: Allow base URIs in Perl parser methods to be undef
     * Document the storage constructor hash options under the main class
     * RFE: make add_statement method on model take URIs
     * Add arcs_in/arcs_out model methods
     * Add  container  class  for manipulating RDF containers - Seq, Bag,
       Alt, ...
     * Add #ifdef WIN32 around parts including the config file and create
       a win32 build
     * If  LGPL/MPL  license,  include  compatible  code  OR add separate
       package?
     * Write a C++ interface
     * Provide  any  necessary  support  for  RDF  Schema  (fast rdf:type
       lookups)
     * Write some better example code
     * Write a quickstart / howto document
     * Split  the  header files into internal / user ones. Maybe generate
       part of librdf.h automatically to make a 1-header file system.
     * Make API docbook sgml generate decent PostScript / PDF output
     * Fix the URI hash mechanism - currently stores URI/pointer pairs in
       hash - wrong
     * The library does not do file locking on e.g. DB files
     * For  IRIX  (and  others?),  try  also linking with -lpthreads when
       testing for working Berkeley DB
     * String  encoding  -  needs  iconv  posix  function  and/or Unicode
       library.  Some  utility  functions  have  been  written  for UTF-8
       to/from ISO Latin-1.

   (Excluding issues near FIXMEs in the source)

Done

   The most recent changes are at the top, with the first release version
   where appropriate.
     * Added  some  defensive  code checks for NULL object parameters and
       abort when debugging.
     * The serializer code crashed in PHP (0.9.15)
     * raptor-uri-test  in  redland  when  compiled against system raptor
       failed to find raptor.h; fixed in raptor 1.1.0.
     * Added librdf_model_get_storage method so storage object needn't be
       kept around when dealing with model (0.9.15).
     * Fixed  serializing  URI  http://xmlns.com/foaf/0.1/mbox_sha1  to a
       property  element  to breaks the namespace/URI after 'sha1' as the
       maximal legal XML name (0.9.15)
     * Altered rdfproc to by default append to stores on parsing (0.9.15)
     * Docs:  note  in  language  docs  that  'make  install' of the main
       library is generally needed before any of the language builds will
       work (0.9.15)
     * BUG:  Blank  nodes  with  illegal  nodeIDs  (as far as RDF/XML are
       concerned)  can  be  serialized.  Fixed  by  the change below; all
       internal  nodeIDs  are  now  serializable  in RDF/XML or N-Triples
       (0.9.14)
     * Rewrite  incoming  rdf:nodeID  attribute  values into same form as
       generated blank node IDs, ie.
       rredland-start-timerunique-sequence-counter (0.9.14)
     * example2.c  is  rather  useless,  replaced  with  a  simple string
       parsing example (0.9.13)
     * Replaced  *_seriali[sz]e  methods  with  *_to_stream  in  order to
       reduce confusion versus serializer class (0.9.13)
     * BDB 4.1 causes problems - now supported (0.9.13)
     * perl  -  if you didn't clone a node before trying to re-use it the
       whole thing would segfault (0.9.13)
     * swig  1.3.14  may fail to work for some languages (perl,python ok)
       (0.9.13)
     * New  method  for  syncing  of  models to store - librdf_model_sync
       (0.9.13)
     * Add  proper  error/warning  reporting  -  world class has this now
       (0.9.13)
     * Ensure  non-file:  URIs do not cause crashes - fixed by Raptor URI
       class (0.9.13)
     * Add URI retrieval via external www libraries - done via raptor for
       retrieving URI content for parsing. Not by a new module. (0.9.13)
     * RFE: Add is_literal etc. methods to node class (0.9.13)
     * storage  hash-type="memory"  with  no  name  (not  really  needed)
       crashed (0.9.13)
     * Initial thread support (0.9.13)
     * Repat removed - not up-to-date, maintained (0.9.13)
     * Crashed  when  contexts  are attempted to be used when not enabled
       with contexts='yes' (0.9.13)
     * parse_as_stream  methods  assumed  the URI object lived throughout
       the  parsing. They may not, and had to be copied on the first call
       - fixed for raptor only (0.9.13)
     * make  librdf_statement_set_subject*  free any existing node before
       setting (0.9.12)
     * Pass  RDF  parser error messages to user code, scripting languages
       (0.9.12)
     * Add a swig test in autogen.sh, abort if it is too old (0.9.12)
     * swig  1.3.14  changed its default to shadow and failed to work out
       of the box. Add -noproxy to the swig line for 1.3.14+ (0.9.12)
     * Hacked  around  repat  parser  failing  to  pass bnode ids when as
       statement objects (0.9.12)
     * Added relative URI parsing code from Repat (via raptor) (0.9.12)
     * Handle xml:lang when the rdf parsers provide it (0.9.12)
     * Add query language interfaces (0.9.12)
     * Add support for blank nodes (were anonymous resources) (0.9.12)
     * Removed  all  node  types  except for resource, literal, blank, li
       (statement (0.9.12))
     * Use  [3]libxml  rather  than expat as default xml parser (at least
       for  raptor)  Reasons: uses iconv to handle more content encodings
       and provides better error reporting (0.9.12)
     * Link  XML  Libraries  (-lexpat  etc.)  before  libwww libraries to
       ensure correct XML library is used (0.9.11)
     * Python interface to parsers now works (0.9.11)
     * Multiple startup/shutdowns of entire library now works (0.9.11)
     * Make the library work as a shared library (0.9.11)
     * Model size method implemented (0.9.11)
     * Added a [4]Java interface (0.9.10)
     * librdf_hash_from_string()  -  \  escaping  doesn't  work  properly
       (0.9.9)
     * SiRPAC wrappers handle multi-line literal objects (0.9.9)
     * Added [5]Tcl interface (0.9.8)
     * Add module - [6]Raptor RDF parser - internal (0.9.8)
     * Make API docbook sgml generate 1 big HTML file (0.9.6)
     * Python interface (0.9.6)
     * Add proper error/warning reporting for RDF/XML parsers (0.9.6)
     * Perl interface (0.9.4)
     * module - storage implemented as hashes
     * made  get methods in all hash impls. use iterators (side effecting
       - yuck)
     * made BDB V2 and V3 use btree and handle duplicates
     * removed GDBM from default code since doesn't handle duplicates
     * removed references to factories from simple user code
     * module - rdf parser - via libwww RDF parser
     * annotate  the functions with gnome-doc / kernel-doc style comments
       (after  JavaDoc) with care taken to make sure it is clear who owns
       the memory of objects passed in or returned by functions
     * module - rdf parser - via Java RDF API / SiRPAC
     * module - in memory storage
     * module - storage factory
     * module - model
     * module - memory allocation
     * change all functions to start with librdf_
     * a  decent  source-code  based documentation system - GNOME / Linux
       kernel  gnome-doc  /  kernel-doc  programs  based  on  the Javadoc
       formatted comments style, but for C
     * wrap  the  code  with #ifdef etc. to prevent exposing internals to
       user code
     * module - berkeley DB hash
     * change functions to all start with RDF_ - new and free functions
     * decide on the license(s) - GPL/LGPL and BSDish ???
     * iterator interface and module for returning results

Decided to do differently, not to address

   I reserve the right to change my mind again!
     * Write  stringbuffer for easy creation of growing in-memory strings
       - now being considered inside raptor.
     * Provide a way to represent reified statements
     * Redland  does  not  work  with  GDBM  hashes.  BDB  is much better
       (0.9.12)
     * Redland  does  not  work  with  BerkeleyDB V1. Not fixing since it
       works with V2,V3 and V4 (0.9.12)
     * RFE: make Node and URI be the same class, change all methods using
       Nodes  to  take  URI  OR  URI  or  Literal as appropriate. The RDF
       abstract  syntax  has nodes that are (URI-refs or Literals or ...)
       so this design matches it well (0.9.12)
     * These  will  not be made into modules at present, the internal RDF
       parser will use expat or libxml as necessary.
          + Add module - xml dom parser - external
          + Add module - xml dom parser - libxml
          + Add module - xml sax parser - libxml
          + Add module - xml parser - sax
          + Add module - xml parser - dom
          + Modularise  the library so some parts can be removed [already
            done]
     * This  is  not  needed as a module, the internal RDF parser will do
       this.
          + module - xml namespaces
     _________________________________________________________________

   Copyright  2000-2004  [7]Dave  Beckett,  [8]Institute for Learning and
   Research Technology, [9]University of Bristol

References

   1. http://www.redland.opensource.ac.uk/TODO.html
   2. http://www.msu.edu/user/pfaffben/avl/
   3. http://xmlsoft.org/
   4. docs/java.html
   5. docs/tcl.html
   6. http://www.redland.opensource.ac.uk/raptor/
   7. http://purl.org/net/dajobe/
   8. http://www.ilrt.bris.ac.uk/
   9. http://www.bristol.ac.uk/
