Bristol Wearable Computing

[ Home | Plans | Meetings | Members | Search | Papers | Links | CyberWear | LocoSoft]


Terminology

Note
A note is the essential information element in the Cyberjacket. It consists of a bit of an audio clip, text, images, whatever, and some contextual information denoting in which context the note is interesting. Examples may be that the note is only interesting if you are near a painting (in which case the note is carrying information about the painting), only if you are near a certain place and the weather is good (in which case the note will tell you that you will have a magnificent view from the top of Cabot's tower), or only Saturday's at 5pm (when the cookie shop is closing for the weekend and selling their cookies at half price).
Domain
A domain is the entity that stores a bit of contextual information. Examples of domains are:

Domains are made well known by being recorded in public directories (LocoMedia domain servers). Any user can propose a new domain and relate it to other domains in a hierarchy (directed acyclic graph). Domains may be used to define the meaning of numeric types (as in the visibility example above) or they may reflect an association with an object (eg an author). JBR

A note is usually tagged with multiple domains.

Projects

  1. Note server / Note buffer.
    Purpose
    The Note server and Note buffer serve as a database for storing notes. The note server is a non mobile database, stored somewhere on the Internet. The note buffer is a database on the wearable system, which act as a temporary storage for notes that are in transit between the note server and the user.

    The note server has operations to store notes, retrieve notes, and select notes given some (incomplete) selection criteria.

    Spec
    Store a note :: Database -> Note -> (Database, NoteID)
    Retrieve a note :: Database -> NoteID -> Note
    Select a note :: Database -> [ Domain ] -> [ NoteID ]
    Where Database and NoteID are locally defined types, Note and Domain are global types, specified in more detail below.

    A Note is a type consists of two parts; an information part (containing video, audio or text), and a domain part (specifying the context of the note). The note contents are MIME encoded. Initially, we will just have one mime encoded part in a note, but we might switch to ``multipart/alternative'' encoding. Domains are added upfront using a Domain: field. So for example a note might read:

    Domain: weather/visibility/3000
    Domain: place/absolute/longitude/52/02/37.12
    Domain: place/absolute/latitude/02/01/12.445
    Domain: place/name/Cabots Tower
    Content-type: text/ascii

    I like cabots tower; you have a magnificent view over the city of Bristol. You can go up to cabots tower.

    The note server simply accepts notes on a UNIX-port, and queries on another port.

    The note buffer accepts additional requests to push a note to a specific server, or to pull notes from a specific server. Note that the note server and note buffer need not be different; but only one of them needs persistent storage. Push a note :: Database -> NoteID -> ServerID -> Database
    Pull a note :: Database -> [ Domain ] -> ServerID -> Database
    Store a note :: Database -> Note -> (Database, NoteID)
    Retrieve a note :: Database -> NoteID -> Note
    Select a note :: Database -> [ Domain ] -> [ NoteID ]

  2. Hand held display - part of Footbridge Device project
    Purpose
    The Hand held display is a device to render Notes. It can display text and or graphics (video is an obvious extension).
    Spec
    Display a note :: Note -> IO () Where Note is defined in the project on the Note server, and IO() denotes the display activity. Optionally, domains of notes can be displayed, this is an option that might be useful for debugging purposes.
  3. Earlink - part of Speech project
    Purpose
    The Earlink is a device to render Notes. It can render audio notes and text notes (using speech synthesis).
    Spec
    Display a note :: Note -> IO ()
    Where Note is defined in the project on the Note server, and IO() denotes the display activity. Optionally, domains of notes can be rendered, this is an option that might be useful for debugging purposes.
  4. TGPS (True GPS)
    Purpose
    The True GPS is a location sensor which produces domains. The true GPS might simply generate absolute domains (/location/absolute/longitude/...), or it might take other location data into account (from Pingers for example), and generate a more precise position inside a building. In addition, the TGPS offers a library of functions that operate on TGPS domains. This library can be used to compare to TGPS domains and test them for equality, inclusion or distance.
    Spec
    Test on equality :: [ Domains ] -> [ Domains ] -> Boolean
    Test on inclusion :: [ Domains ] -> [ Domains ] -> Boolean
    distance :: [ Domains ] -> [ Domains ] -> Integer
    Where Domain is defined in the project on the Note server. The test on equality specifies whether two domains are equal. It can be used when we walk past a pinger, and the note server needs to select a note for that pinger. The test on inclusion test whether the first position is included in the second one. For example, a pinger in a museum is in a museum. This allows one to load all notes related to the museum. The distance measure tells us how far two TGPS data points are from each other. This takes the topology of the world into account. In first instance, a couple of values will suffice (equal, near, far away)

unicrest.gif (4191 bytes)

The material displayed is provided 'as is' and is subject to use restrictions.
For problems or questions regarding this web contact Cliff Randell.
Last updated: January 14, 2000.
logoep.gif (1404 bytes)
ęCopyright Hewlett-Packard 1997-2000.