28.06.2013 Views

Papers in PDF format

Papers in PDF format

Papers in PDF format

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

L<strong>in</strong>k follow<strong>in</strong>g with<strong>in</strong> the HM Data Model is simply a form of message pass<strong>in</strong>g. At any particular moment <strong>in</strong><br />

time, the user can navigate only through a s<strong>in</strong>gle, specific S-collection called the current conta<strong>in</strong>er. Only<br />

members of the current conta<strong>in</strong>er can receive messages dur<strong>in</strong>g navigation. A concrete member of the current<br />

conta<strong>in</strong>er is the current member for each particular navigational step. More precisely, the member that most<br />

recently received the message ACCESS is the current member. Only members related (l<strong>in</strong>ked) to the current<br />

member can be accessed (can receive the message ACCESS) <strong>in</strong> the next step of navigation.<br />

Consider, for <strong>in</strong>stance, navigation through S-collection "d" <strong>in</strong> Figure 1. S-collection "d" is the current<br />

conta<strong>in</strong>er. If S-collection "a" is the current member, then it has been visualised (its content has been displayed<br />

by method ACCESS), and the user has l<strong>in</strong>ks to members "b", and "c" available <strong>in</strong> the next step of navigation. In<br />

our prototype implementation, l<strong>in</strong>ks emanat<strong>in</strong>g from the current member are depicted <strong>in</strong> the form of icons,<br />

buttons, clickable areas, etc. The user manually selects a l<strong>in</strong>k which results <strong>in</strong> the message ACCESS be<strong>in</strong>g sent<br />

to the correspond<strong>in</strong>g member.<br />

S<strong>in</strong>ce l<strong>in</strong>ks are encapsulated with<strong>in</strong> an S-collection, they become available for navigation only when the Scollection<br />

has been "entered" by means of the ZOOM_IN operation, which is available for all complex Scollections.<br />

The ZOOM_IN message is automatically addressed to the current member. For example, if the Scollection<br />

"c" becomes a current member dur<strong>in</strong>g brows<strong>in</strong>g current conta<strong>in</strong>er "d" (see Figure 1), the user can<br />

apply the ZOOM_IN operation <strong>in</strong> order to make "c" the new current conta<strong>in</strong>er. After a ZOOM_IN operation, the<br />

head of the new current conta<strong>in</strong>er (i.e. S-collection "b" <strong>in</strong> this particular case) automatically becomes the<br />

current member and is visualised appropriately (i.e. receives message ACCESS).<br />

Extend<strong>in</strong>g the functionality of ZOOM_IN to give access to any S-collection of which the current collection is a<br />

member is provided by the operation ZOOM_UP. Thus, if current member (say, S-collection "a") has been<br />

accessed dur<strong>in</strong>g brows<strong>in</strong>g the current conta<strong>in</strong>er "d", then the user can "switch" to brows<strong>in</strong>g of any other current<br />

conta<strong>in</strong>er hav<strong>in</strong>g the same S-collection "a" as a member (say, to brows<strong>in</strong>g the conta<strong>in</strong>er "c" <strong>in</strong> this particular<br />

case). Thus, the ZOOM_UP operation simply substitues the current conta<strong>in</strong>er for another one leav<strong>in</strong>g the<br />

current member unaffected.<br />

The ZOOM_BACK operation is the complement of ZOOM_IN or ZOOM_UP. ZOOM_BACK restores the current<br />

conta<strong>in</strong>er and current member to the state they had before the most recent ZOOM_IN or ZOOM_UP.<br />

Together, ZOOM_IN, ZOOM_UP and ZOOM_BACK provide users with the capability of navigat<strong>in</strong>g <strong>in</strong> a<br />

direction orthogonal to the conventional plane of l<strong>in</strong>k-based brows<strong>in</strong>g. Thus, we say that the HM Data Model<br />

supports an additional dimension of brows<strong>in</strong>g hypermedia databases and extends the default brows<strong>in</strong>g<br />

semantics.<br />

Operations for Modify<strong>in</strong>g the Database<br />

New S-collection <strong>in</strong>stances are created with the operation CREATE, whereby the name, content, and head are<br />

given as parameters. Once an S-collection has been created, new members can be <strong>in</strong>serted and exist<strong>in</strong>g<br />

members removed by means of the operations INSERT_MEMBER and REMOVE_MEMBER hav<strong>in</strong>g a name of<br />

another S-collection (i.e. member) as a parameter. All l<strong>in</strong>ks with<strong>in</strong> S-collections belong<strong>in</strong>g to the classes<br />

Menu, Envelope, and Folder are ma<strong>in</strong>ta<strong>in</strong>ed automatically <strong>in</strong> accordance with their associated regular<br />

structure.<br />

Of course, the regularly structured subclasses do not restrict us from us<strong>in</strong>g S-collections hav<strong>in</strong>g arbitrarily<br />

connected members. Users can create an S-collection of class Freel<strong>in</strong>ks and explicitly def<strong>in</strong>e its l<strong>in</strong>k structure<br />

us<strong>in</strong>g the messages INSERT_LINK and REMOVE_LINK whereby the source and dest<strong>in</strong>ation are given as<br />

parameters.<br />

The notion of l<strong>in</strong>ks presented here should not be confused with that used <strong>in</strong> other hypermedia models, where<br />

l<strong>in</strong>ks exist as <strong>in</strong>dependent fully-fledged persistent data objects. In our case, l<strong>in</strong>ks and membership are simply<br />

mechanisms for reus<strong>in</strong>g abstract data objects <strong>in</strong> different contexts via a special public <strong>in</strong>terface. Notice that we

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!