librdf - application framework for RDF pre-announcement

RDFers, I have been lurking here for a while, but not posted before
although tracking things that appear here in my RDF resource guide:
http://www.ilrt.bristol.ac.uk/discovery/rdf/resources/
and the Open Directory RDF areas which I co-edit.

Here's some hints on what's coming up.  I've just moved jobs to ILRT
at the University of Bristol and have now got the time to develop a
sort-of application framework for RDF.

I've started designing and coding in C(*) a pluggable architecture for
manipulating RDF and experimenting with bits and pieces.

[(*)if you are thinking, why C - it is because it might be more
'portable' and easier to plug into other languages, systems and
applications.  However, it's written in an OO style.  Please take any
comments to email.]

The parts that I currently want to be pluggable include:
  * XML parsers - external via pipe/filter, expat, xerces-c?, ...
  * RDF parsers - external e.g. sirpac, libwww rdf, mozilla, ...
  * Storage models - in memory hashes, bdb/gdbm files, triples-in-SQL, ...
  * Query languages [as people propose and play with them]
  * (Utility classes for Hashes, Digests, WWW resolving)


The architecture is tricky to write in text but I'll have a go.
These are the concepts/classes: 

   Node - a node/arc in an RDF graph
     Contains either a URI OR String + XML language

   Statement - or triple
     Contains a Node resource, Node property and Node object

   Model
     Contains: 
        A bag/set of Statements OR a list of sub-Models
        A reference to a 'Storage'
     The list of sub models is there to allow layering Models for
     such things as adding transactions, filtering, ... (more thought
     needed)

   'Storage' (name may change)
     Implements a Statement storage API and at least one Statement query API(s)

   'RDF Parser' ('RDF DataSource'? 'RDF Reader'?)
     Asserts Statements to a given model OR uses a given XML Parser
     and model.

   'XML Parser'
     Provides a standard XML API (DOM?, SAX?)

   'RDF Syntax generator' ('RDF DataSink', 'RDF Consumer?)
     Emits formatted RDF in XML, other syntaxes, encodings - SOAP?

   Missing concepts/ stuff I know about but will do after V1.0:
     Namespaces - I've no support for these
     Unicode - I've assumed C char*=UTF-8 string [BAD]
     Typing and Classes - to support:
     RDF Schemas - need help here


The current really imaginative name for this is 'librdf' and it is
getting to the stage of nearly being useful.

Implemented so far:
  Hash - GDBM, in memory
  Digest - MD5, SHA, RIPEMD160
  Node
  Statement
  Model (just API)
  +lots of boring supporting stuff

Once this reaches a slightly fuller level, I will release it and then
actually use it myself for applications.


License: The system will be a free software one, or open source if
you prefer, and should be flexible. I've not yet decided what type,
most likely Apache/BSD-ish.

Release Date: Within two weeks


Please feel free to comment, ask questions or even better, offer to help!

Dave

Received on Thursday, 29 June 2000 10:54:03 UTC