
               Redland RDF Application Framework - To Do list

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

Bugs, Features, Requests For Enhancement

   In no real order. Help wanted.
     * defensive  code  -  check for NULL object parameters, wrong use of
       polymorphic  objects  such  as getting URI of a non-resource node.
       Compile some as debug checks with aborts?.
     * perl  -  if you didn't clone a node before trying to re-use it the
       whole thing would segfault
     * example2.c is rather useless, consider replacing or removing
     * RFE:   Consider  adding  a  librdf_model_get_storage()  method  so
       storage object needn't be kept around when dealing with model.
     * Consider an AVL-tree in-memory store (libavl)
     * swig 1.3.14 may fail to work for some languages (perl,python ok)
     * Docs:  note that compiling redland also builds raptor, if both are
       wanted
     * RFE: Add is_literal etc. methods to perl etc. Node class
     * Allow base URIs in Perl parser methods to be undef
     * Ensure non-file: URIs do not cause crashes (seen in Perl)
     * 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  module  - URI retrieval via (GNOME) ghttp, (W3C) libwww, nano
       ftp/http in libxml
     * 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
     * Make the library thread safe
     * The library does not do file locking on e.g. DB files
     * Provide  a  way  to represent reified statements with instantiated
       statements
     * Add proper error/warning reporting in general
     * Write stringbuffer for easy creation of growing in-memory strings
     * 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.
     * 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  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 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 Tcl interface (0.9.8)
     * Add module - 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!
     * 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-2001 Dave Beckett, Institute for Learning and Research
   Technology, University of Bristol
