GXOS: General Purpose (Garnet) XML Object Specification
This is to be designed to support initially
- Education/Training where it will be compatible with IMS/ADL SCORM in sense that IMS/SCORM compatible specifications can be generated from GXOS objects but GXOS will be more powerful than IMS/SCORM
IMS is http://www.imsproject.org
ADL/SCORM is http://www.adlnet.org
- Computing where we need to be mindful of Grid Forum and Gateway
- General Web sites
- As a hierarchical set of containers it should be compatible with SCORM for large containers (lectures) and W3C DOM for small objects (document fragments)
In my terminology one should support resourceML and portalML corresponding to XML at different parts of system (different XML parsers on different servers)
- ANY Object Model (COM,CORBA,JAVA,NFS,NAPSTER,SOAP) ...
- Objects will be managed like files in a UNIX/windows system
i.e. hierarchical organization and symbolic links
search either by hierarchy or by "search for file names/file contents" with various criteria on object type etc.
- Typically one will interact with the XML metadata about object rather than object itself
- Objects will be labeled liked files with either relative or absolute names with a hierarchial structure. The container (logical arrangement of objects) structure can have a different hierarchical structure from naming
- We discuss here general object properties. GXOS objects will have other properties such as objectives, prerequisites for SCORM objects and W3C DOM properties for objects of Web Page or smaller size. A given object can inherit such specialized properties from multiple sources. Tags can use attribute TAGSOURCE = GXOS, W3DOM, SCORM to indicate their source. A MAPPINGOBJECT tag will tell you how to map into a particular TAGSOURCE. You could for example here specify that a particular container was either a BLOCK or AU in SCORM
- Everything is a GXOS object -- including not only curriculum pages but audio/video archives, background images/buttons/menus for building web-pages etc. Normally you store the different object types in separate container hierarchies cross-referencing through NAME attribute
XML Object Specification
- All Objects are Containers (i.e. in file analogy directories) i.e All Objects can be constructed from any number (including zero) other objects
- An object can be an ALIAS to another object. ALIAS acts as a "symbolic link" so that when object link points to changes, then ALIASed object changes
- An object can be defined by a BUILTUP tag, which defines how one constructs this object from other objects either inside or outside this container.
- All objects have names, which are generated automatically in some natural fashion if not explicitly given
- Objects can be defined in terms of subobjects which have roles such as Documentfragment, backgroundimage etc. One can use an index (any character string) to differentiate more than one object with the same role. These roles are used in templates or layout in portalML
- Objects can have multiple INSTANTIATIONS, which can specify how to use your favorite object model to access object. An example is given below. The realizations may not be identical as some object models may implement a given object more or less well You can use a pure Java EJB system to manage your objects as long as it interprets OBJECTREALIZATION to access an object stored in CORBA or some other (than pure Java model
- Objects can have one or more OBJECTRENDERINGs defined. These are differentiated by use (thumbnail is different from normalview) or rendering device
- Objects can have RANKS's assigned. The use is application dependent but in education it is used to identify objects of the same type which should therefore be treated in a given way. RANK = CurriculumPage is typical unit of instruction and all objects of this rank in a given container form a natural linked list. Other values for rank could be RANK= PageFragment, Lecture, Module1, Module2, Course, Program ...
- CONTAINERRANK specifies the RANK of "important" subobjects stored in this object (container). For example, a container could have RANK=Lecture and CONTAINERRANK = CurriculumPage
- An object can have tag <CONTAINERABSTRACT/> to indicate that it specifies abstract of container in which it is placed. For example in my PowerPoint presentations, I typically put abstract as second slide.
- An object can have a TABLEOFCONTENTS tag specifying how Table of Contents is to be generated. Often this is gotten from accessing TITLE tag of all contained objects with RANK=CONTAINERRANK. One could also specify (in a syntax to be decided) how to generate more complete tables of contents.
- We will use IMS/IEEE LTSC metadata which has tags to specify Title, Author etc. for GXOS objects. Maybe we could simplify this to Dublin Core or other simpler metadata for non educational objects. This tag set contains keywords etc.
- METADATAHEURISTICS tag can be used to guide object manager into quick ways of building Metadata inside its container. This could for example specify that Author and Title for subobjects gotten from PowerPoint be generated from PowerPoint properties and slide Title
- EVENTLIST is the list of events associated with this object desribing its use and changes to it.
XML Container Structure
- Objects inside a given container can be either unordered or ordered. Allowed orderings include
- ASENTERED (order of appearance in XML file)
- SORTEDBY_... (sorting in different ways)
- EXPLICITORDERLIST which specifies ordering by names of objects in a container
- Ordering defines order of pages in a lecture etc.
- Objects can be defined either by a list of components with a mapping of subobject names to role[index] where rendering algorithm will use some sort of template to insert each role[index] into a given web page Alternatively, one can specify container as an XML file where this file references role[index] objects in an <ANYOLDTAG TAGSOURCE=GXOS attributename=GXOS//:role[index] like syntax. The GXOS Object Manager will replace role[index] with "real object" reference
Typical Object Instantiation specification for Computing Object --------------------------
(these are more likely to have important methods than educational objects)
<OBJECTREALIZATION TYPE=JAVA server=FSUJAVA>
<OBJECTSERVER LOCATION="birch.csit.fsu.edu:8200" />
<OBJECTPOSITION ADDRESS="wherejavaobjectstoredonserver" />
<PARAMETER NATIVE=Iteration OBJECTVIEW="Num_Iterations" /> maps parameter name used in parameter specification in XML to name in object land. NATIVE values would be described in basic XML of object. There is one set of NATIVE characteristics intrinsic to object Each Realization could access with arecane names or not be able to access perhaps
<PARAMETER NATIVE=bondlength status=NA />
<EVENT NATIVE=ENDOFJOB objectview="End_Job" /> map events
<EVENT NATIVE=ENDOFITERATION STATUS=NA /> NA implies this event/parameter not available in this realization
... Repeat for all other realizations
BUILTUP Structure ----------------------------------------------------------------------
1) This allows you to define new objects from old ones as a set of actions to be executed in order
2) Allowed actions include
- COPY name1 -- copies object name1 -- same as symbolic link initially but as can edit object later; the copy and name1 are edited separately
- LINK name2 -- invokes symbolic link to name2 (so components canNOT be changed)
- DELETE name3 -- name3 could be name2/subobject. An example is if name2 was a voice over foil. We can link in original but delete voice subobject
- ADD name4 -- adds local component name4 (could be a new voice-over in previous example)
- CHANGE name5 to name6 -- "roughly" equivalent to DELETE and ADD
Object Rendering ------------------------------------------------------------------------
- Any number of renderings are allowed
- They have a USE (default, thumbnail, normalview) and a DISPLAYDEVICE (Palm, PC, Cave) and someway of essentially specifying display template with DISPLAYTYPE = VirtualClassroom, MyProfessor, Plainoldwebpage etc.
- The rendering can specify the server which is to perform rendering e.g. to convert XML into HTML or WML (Renderer=backend or userportal)
- The rendering uses portalML
- Here you can specify displays of different resolution, text only version, and universal access (for example for visually impaired)