PalmDAML Implementation Details

This document contains the software development history and plans for the C++ implementation of PalmDAML.

Architecture

PalmDAML currently consists of 2 programs
  1. daml2pdb.java runs under Windows or Unix, reads DAML content using RDF API, and generates a .pdb file suitable for loading into the Palm.
  2. PalmDAML.prc is an application that runs on the Palm itself

A single Java program providing similar desired functionality on Windows and Unix platforms is DAML Viewer.

Development Resources and Tools

I used CodeWarrior for Palm Computing Platform Release 6, the primary professional tool for developing Palm applications, which includes

As the use of CodeWarrior suggests, PalmOS is quite like the Macintosh OS.

I initially created an empty Starter application in Code Warrior, copied the files, and started editing.

My normal edit/compile/debug cycle is

Compared to an actual Palm device, Palm Emulator provides better debugging support and a better display, and doesn't run down batteries or risk stored data. I used Palm Emulator 3.0a7, downloaded separately, with palmos35-en-ezdbg.rom (you have to join the Solution Provider Program to download ROM images).

Source code is stored in CVS, in the palm module under CVSROOT :pserver:@www.daml.org:/home/mdean/daml_cvs_root. This (unfortunately) includes some binary files such as PalmDAML/Rsc/Resource.frk/PalmDAML.rsrc.

Issues

The design drivers in developing for the Palm are

Less constraining issues are

Current Design

Originally, we stored individual DAML statements directly in the Palm DB, and had the PalmDAML application reconstruct the graph strucuture at application startup. This consumed too much memory and slowed down application startup.

daml2pdb.java now creates the graph structure and stores a database record for each node (Resource, Statement, or Literal). The exact database strucuture is described in comments at the head of daml2pdb.java.

PalmDAML starts with a NodesView (note plural) listing the URIs of all Resource nodes found in its single database. When the user selects one of these URIs, he gets a NodeView (note singular) showing all of the statements involving that node.

We have officially registered the Creator ID "DAML" for use with PalmDAML.

Future Plans

  1. investigate the use of a Table rather than a List for displaying statements on the Node screen
  2. modifications to the Node screen
  3. implement the Back button (and maybe a Forward button)
  4. modify the GUI to be compatible with the User Interface Guidelines in Companion.pdf
  5. investigate modifying the NodesView List to dynamically fetch choices directly from the database entries based on the current scroll bar settings rather than requiring that a static list of choices be computed initially
  6. link the scroll bars to the Palm scroll keys
  7. supply About ... information for the application, e.g. "PalmDAML 1.1 (or 2000-11-21) developed by Mike Dean and Jack Margerison of BBN Technologies"
  8. support use of the standard Palm Find interface to search DAML records
  9. consider replacing daml2pdb with a Conduit that allows incremental transfer of new DAML statements.
  10. investigate wireless and/or IR transfer of statements (Windows NT doesn't generally support IR devices, but Windows 2000 does)
  11. ...
$Id: details.html,v 1.6 2000/11/24 06:10:47 mdean Exp $