Progress so far on the
KendraBase project.
Test server up running:
- Debian unstable
- PostgreSQL?
- Python2.3 (have resolved pyPgSQL? issues...)
- pyPgSQL? 2.3
- Some simple web scripts
Implemented so far:
- URI-based triple store
- very simple prefix stripping and replacement...
- Simple user interface with triple editing
- DB dump and load
- Simple interfacing to Tim Berners-Lee's cwm engine
- Via external process and pipes, at the moment...
- Various user-views: Wiki-style, RDF, triples, browsing...
- Everything is Unicode-transparent, so multilingual support is easy (check this: is cwm Unicode-transparent?)
Some checks:
- basic logical inference with cwm has been tested
- basic reasoning should only take a couple of seconds on a fast machine for limited inference worlds of a few hundred facts
- this should be the size of our ontologies...
Now it's time to start serious integration of the work done so far.
Lessons learned:
Things to do:
- at the moment, the web UI is a single fused mass of make-hook, do-action, and display-page code. This should be made pluggable ASAP.
- make-hook: making a form or link that will activate a server action
- do-action: what it says -- kicked off by hook URLs or form GET/POSTs?
- display-page: display a page or part of a page, based on the aftermath of a hook/action sequence
- unify cookies etc into this framework
- Make external converters more easily added...
Daniel would like:
- Ability to have images and freetext be either Subject or Object
- Multiuser environment
- User preferences area
- Dictionaries for translating between local and global terminology like:
Restructuring
- Core HTML / CGI / URL / cookie / login services
- Database services Done
- Pluggable external data transformation (N-triples <-> N3, RDF) Done
- Page generation, actions, action dispatcher...
- table&hook-driven rather than hard-coded
Questions
"Virtual document" idea:
- a single internal representation for
- editable triple set
- generated RDF
- generated n3
- etc...
- Do we add this as other fields (baseuri, linenumber) to the already-overloaded triple store?
- Or to build an external document table structure.
Fields for this are simply:
baseuri linenumber triple_id
Note that this also should be possible to be reified (!).
See: KendraBaseLessonsLearned for more on this.
- Don't forget to add URLescaping to UTF-8 unicode chars...
- Is it yet time for full end-to-end native Unicode strings, rather than UTF-8?
Short-term goals
Just two short-term goals, for now:
- Import example test database into software
- Add auto-generation of edit/display form for object classes
Longer-term
- Direct database storage for generated datatypes, and XML generation from this...
- Logic / ontology-based SQL query generation (???)
- Adding a native DB interface to CWM?
- Finding an alternative processor module?
- Write our own?
- Replace underpinnings with something like [Redland]? (uses LGPL or MPL licenses)