[This local archive copy of provisional/incomplete work mirrored from the canonical site: http://www.drmacro.com/phylis/, 980506, text only; links may not have complete integrity, so use the canonical document at this URL if possible.]

PHyLIS: Personal HyTime Link Information System

Status: Version 0.1

Author: W. Eliot Kimber, eliot@isogen.com

Platform: Windows95+ or NT4+

Last update: 5 May 1998


A HyTime application conforming to International Standard ISO/IEC 10744 Hypermedia/Time-based Structuring Language (HyTime).


The PHyLIS system is a demonstration HyTime engine that provides a generalized grove-based hyperlink and location address management system. By taking advantage of componetized software techniques (e.g., ActiveX), it enables the easy integration of support for interactive hyperlinking among data objects of any types, not just SGML or XML documents. PHyLIS provides the following services:

PHyLIS is implemented as a set of ActiveX components and DLLs. These components can be used with other applications to add grove and HyTime awareness to them. Through the grove constructor interface, PHyLIS can be integrated with a variety of repositories and data management systems. Through the grove renderer interface, PHyLIS can be integrated with any data viewer that provides the necessary interaction functions, which should be almost any useful viewer.

PHyLIS is intended primarily for educational and demonstration purposes. It is not intended to be a production tool. It is explicitly not optimized so that the implementation approach is easier to understand by being a more literal implementation of the underlying standards. In particular, it uses a particularly simple-minded (but correct) grove implementation that has any number of inefficiencies that a production-quality tool would avoid. The purpose of PHyLIS is to demonstrate the concepts of groves and grove-based processing, not to be a tutorial in optimization.

PHyLIS is provided as a service to the community and may be used for any purpose without restriction.

The source code for PHyLIS (Visual Basic 5 at this time) is available as well. The PHyLIS source code is probably most useful as a HyTime and XLink implementation example, and not as useful as an implementation base from which to create production-quality tools. We make no warranties about the quality of the implementation. I'm pretty new at VB programming and am certain that I've violated any number of practices in my haste to make PHyLIS work. ISOGEN cannot support or warrant any use of PHyLIS as an implementation base.

Please direct general questions or comments about PHyLIS to phylis@isogen.com. While PHyLIS is provided strictly on an as-is basis, we will do our best to answer any questions and we certainly want to hear about any bugs or omissions you find.

NOTE: PHyLIS is currently implemented using Visual Basic as ActiveX components. However, it is our intent to re-implement PHyLIS in Java in the not-too-distant future.

DISCLAIMER: This program is provided as is with no warranty express or implied.


Getting PHyLIS

PHyLIS is a set of ActiveX components written in Visual Basic on Windows95. It should run on Win9x and Windows NT 4.x+. I have not tested it on WinNT.


Installing PHyLIS

TBD

If you have any problems installing PHyLIS, please send email to eliot@isogen.com so I can resolve the problem and make sure no-one else experiences it.


Using PHyLIS

The purpose of PHyLIS is to manage HyTime sessions. A HyTime session is the processing of a set of documents (and other data entities) as a unit in order to provide HyTime-defined services, such as hyperlinking. The set of documents (and other data entities) processed during a session constitute the bounded object set (BOS) for the session. A session starts when you select a hub document for processing and ends when you end the session (or some system component crashes). During a session, PHyLIS understands and manages the HyTime hyperlinks within the BOS and enables interactive traversal using those hyperlinks, either from the PHyLIS main console or using any renderers ("viewers") you have integrated with PHyLIS.

As provided, PHyLIS consists of two main compontents: the PHyLIS server and the PHyLIS session.

The PHyLIS session is an ActiveX component that manages a single HyTime session. It is not capable of running by itself--it must be created and launched by another application. The PHyLIS server is a trivial application that does nothing more than launch PHyLIS sessions (you can create your own applications that can create and use PHyLIS sessions). Thus, to start a PHyLIS session, you start the PHyLIS server and then use the "new session" button to start a new session:

Screen snap of PHyLIS server

When you hit the new session button, you'll get a PHyLIS session "console":.

Screen snap of PHyLIS session console at session startup

When you start a new session, PHyLIS loads the SGML and HyTime property sets, which takes a few moments.

To start the session, you use the "New HyTime session..." item under the File menu to select the hub document you want to process. You can find some test documents in the "testdata" directory in the PHyLIS installation directory. If you want to try your own documents, note following caveats:

When you select a hub document, PHyLIS parses it, looks for any external data or suboducment entity declarations, parses those documents, and so on, until there are no more documents to process. From this process, it constructs the bounded object set for the session. From each entity in the bounded object set, it constructs a grove using whatever grove constructor is associated with the entity's data content notation. PHyLIS comes with several grove constructors built in.

A grove is simply an abstract data structure reflecting the data in the entity. The basic structure of groves as a data representation is standardized by the HyTime and DSSSL standards. All subsequent processing done by PHyLIS is on the groves constructed from the entities in the bounded object set. This is an example of the purest form of grove-based processing. After the BOS is constructed and the groves for the individual entities are constructed, PHyLIS constructs the HyTime semantic grove, which reflects the data the HyTime engine needs to process hyperlinks and location addresses.

For each SGML or XML document in the bounded object set, PHyLIS will also construct an architectural instance grove for each architecture the document declares that it is derived from.

NOTE: A HyTime engine does not have to be literally grove based as PHyLIS is in order to be a conforming HyTime application or system. However, the more general your application is, the more likely it is that being literally grove based is the easiest thing to do. At a minimum, general applications must provide some form of grove-based API so that they can communicate with other programs in terms of groves, even if their internal data structures are not literal groves.

After the BOS has been determined and the groves constructed, you will see three views of this data in the PHyLIS console:

All three views provide context menus that you can access by holding down the right mouse button. For entities in the BOS viewer, you can get details about the entity. For nodes and properties in the grove viewer, you can get details about the node or property, see the property set that governs the grove, ask for a rendition of the grove, and so on.

Understanding Bounded Object Sets and the PHyLIS BOS Viewer

This section will explain the basic BOS concepts and how they are reflected in PHyLIS and the BOS viewer.

Understanding Groves and the PHyLIS Grove Viewer

This section will explain the basic grove concepts and how they are reflected in the PHyLIS grove viewer.

Understanding HyTime Hyperlinks and PHyLIS Link Support

This section will explain the basic concepts of HyTime hyperlinks and how they are reflected in PHyLIS.

Understanding HyTime Location Addressing and PHyLIS Addressing Support

This section will explain the basic concepts of HyTime location addressing and how they are reflected in PHyLIS.

Understanding XLink and XPointers and PHyLIS XLink Support

This section will explain how PHyLIS treats XLink as an application of HyTime and how it does XML processing.

Limitations and To-Dos

Version 0.1

This is a very early release and many things planned are not yet implemented or fully implemented. It has not been given extensive testing at this point. Known problems and limitations include:

Please send any ideas you have for enhancements to me at eliot@isogen.com.

License to Use

PHyLIS may be used for any purpose without restriction. The source code is available and may be used for any purpose. PHyLIS is provided as is without any warranty or guarantee of any kind.

For More Information

You can find out more about groves and the SGML property set at the HyTime User's Group Web site, including a navigable version of the SGML property set and pointers to the online version of the HyTime and DSSSL standards.

You can find out more about using the groveoa.dll with VisualBasic in the paper How to use the Grove OLE Automation Class in Visual Basic 5.0 by Larry Robertson.