=Paper= {{Paper |id=Vol-473/paper-3 |storemode=property |title=GAL: A Generic Adaptation Language for describing Adaptive Hypermedia |pdfUrl=https://ceur-ws.org/Vol-473/paper2.pdf |volume=Vol-473 }} ==GAL: A Generic Adaptation Language for describing Adaptive Hypermedia== https://ceur-ws.org/Vol-473/paper2.pdf
International Workshop on Dynamic and Adaptive Hypertext: Generic Frameworks, Approaches and Techniques (DAH'09)




                 GAL: A Generic Adaptation Language for describing
                             Adaptive Hypermedia

                                         Kees van der Sluijs1, Jan Hidders2,
                                        Erwin Leonardi2, Geert-Jan Houben1,2
                                          1
                                             Eindhoven University of Technology
                                PO Box 513, NL-5600 MB Eindhoven, The Netherlands
                                                      k.a.m.sluijs@tue.nl
                                             2
                                               Delft University of Technology
                                  PO Box 5031, NL-2600 GA Delft, The Netherlands
                                   {a.j.h.hidders, e.leonardi, g.j.p.m.houben}@tudelft.nl



                    Abstract. Nowadays, Web applications have become more sophisticated and
                    interactive, and many of them also offer personalization and adaptation as their
                    features. The mechanisms for these features are typically built on top of specific
                    adaptive engine that has its own engine-specific adaptation language that can be
                    very different from other engines. However, our observation leads to the fact
                    that the main objective of these adaptive engines is the same, that is, to create
                    adaptive navigation structure. In this paper, we present GAL (Generic
                    Adaptation Language) that specifies the basic adaptive navigation structure in
                    an engine independent way. Since GAL is generic, it can be compiled to
                    difference specific adaptive engine and be used in combination with different
                    authoring environments.
                    Keywords: GAL, generic adaptation language, navigation specification



                 1. Introduction

             With the evolution of the Web, Web applications have grown more complex,
             interactive and more and more they try to adapt to the user. Personalization and
             adaptation are important features on the Web, as the Web allows a large and diverse
             public with diverse goals and demands to use the same Web applications.
             Personalization and adaptation are needed to help tailoring suboptimal one-size-fits-
             all solutions to an experience that fits a certain user in a certain context.
                 Adaptivity and personalization are complex mechanisms to build from scratch.
             Therefore, past research resulted in a number of adaptive engines and frameworks that
             simplify the creation of adaptive applications, like [1,2,3,4]. Also several authoring
             environments have been built that target the simplification of the creation of adaptive
             applications. If in the educational domain, for instance, a teacher should be able to
             create an adaptive course in such an adaptive engine, the authoring environment
             should allow such a lay user (in terms of adaptive systems) to easily create an
             adaptive application. Authoring environments also allow having different perspectives
             on adaptive applications, e.g. consider workflow or goal-oriented views.




                                                           13
International Workshop on Dynamic and Adaptive Hypertext: Generic Frameworks, Approaches and Techniques (DAH'09)




                A complicating factor however is that authoring environments are typically built
             on top of a specific adaptive engine, i.e. using a specific authoring environment
             restricts the specific adaptive engine that you may use and choosing a specific
             adaptive engine restricts the authoring environment that you can use. Moreover, we
             found that the different engines (even different versions of the same engines) typically
             have very different and sometimes complex engine specific languages that you need
             to use for specifying an adaptive application. However, even though the different
             adaptive engines have different functionalities and different strengths and
             weaknesses, in the end the core of these engines achieve the same thing: they create
             an adaptive navigation structure.
                In this paper we present the Generic Adaptation Language (GAL). GAL is a
             language that allows expressing adaptive navigable Web applications over a given
             dataset. It is engine independent as it captures the basic adaptive navigation structure
             that is used by all (more specific) adaptive engines. This structure refers to the
             underlying dataset via queries. GAL is based on our previous experience with
             building Web applications in Hera [4]. However instead of specifying the whole
             applications design (domain, navigation, presentation), in GAL we focus on the
             adaptive navigation.
                The primitives of the GAL language should are chosen such that they support the
             basic types of adaptation as specified in the field of adaptive hypermedia [5]. To show
             that GAL is generic we will build compilers that allow compiling GAL to several
             specific adaptive engines. This allows a new authoring environment to author
             applications for all those engines by just providing support for the GAL language as
             an output format. Similarly compilers will be built from several existing authoring
             environments to GAL, which allows a new adaptive engine to use existing authoring
             environments by adding support for the GAL language.
                Our claim is that by using this GAL language we are able to use any authoring
             environment in combination with any adaptive engine (for which we write a
             compiler). GAL adds the additional benefit of having the code in one place in an
             orderly way with a simple easy to understand syntax in semantics. We will give well
             defined semantics, which adds additional benefits like adding model checking
             functionality at the GAL level, so that a GAL engine can abstract away some of the
             tasks of the adaptive engine.
                The structure of the rest of the paper is as follows. In Section 2 we first discuss
             some related work. After that, we present the formal syntax and an informal semantics
             of GAL with a running example that presents an adaptive application about the Milky
             Way. In Section 3 we describe the basic concepts of GAL and how it models the
             navigational structure of a web site. In Section 4 we describe the global structure and
             semantics of a GAL program. In Section 5 we explain how in GAL the components of
             pages are defined. In Section 6 we describe the navigation semantics of GAL
             programs, i.e., what operations are executed in which order when a user navigates
             through the defined web application, and what are the pages presented to the user.
             Finally in Section 7 we present our conclusions and discuss future work.




                                                       14
International Workshop on Dynamic and Adaptive Hypertext: Generic Frameworks, Approaches and Techniques (DAH'09)




             2 Related Work

             Since more than a decade ago, the Web Engineering community has proposed
             numerous web engineering methods (e.g. Hera [4], OOHDM [6], WebML [7], and
             UWE [8]) for covering complete web application development cycle. These methods
             try to separate Web application into three main design concerns: data design,
             application design, and presentation design. Some of these methods offer techniques
             for adaptation. In [4], an adaptive Web information system called Hera is presented.
             Hera focuses on adaptation in the navigational design. RDF is used for expressing the
             domain and context data, and the adaptive navigation. In addition, Hera also provides
             facility to use RDF query expressions in the definition of application model. This
             allows a more fine-grained specification of adaptation and context-dependency.
             OOHDM [6] supports adaptation by specifying conditions on navigation concepts and
             relationships in the navigation class model. These conditions determine the visibility
             of content and links. In WebML [7], navigational adaptation conditions are specified
             in a profile as queries. The Event-Condition-Action (ECA) rules are also applied in
             WebML in order to attain context-awareness. UWE [8] is an UML-based web
             engineering approach that uses OCL constraints on the conceptual model to specify
             adaptation conditions. The aspect-orientation is also applied to UWE in order to
             specify several types of adaptive navigation, namely, adaptive link hiding, adaptive
             link annotation, and adaptive link generation.
                In the field of adaptive hypermedia adaptive engines are built that serve
             applications which are personalized for their users (which is a characteristic that they
             share with for example Hera). Some well known adaptive hypermedia systems
             include AHA! [2], InterBook [3], and APeLs [1]). AHA! is an Open Source adaptive
             hypermedia system mainly used in education domain. It supports adaptation in a
             number of different ways, namely: adaptive guiding, link annotation, link hiding, and
             adaptive presentation support, by using conditional fragments and objects. Interbook
             provides an environment for authoring and serving adaptive online textbooks. It
             supports adaptive navigation that guides the users in their hyperspace exploration.
             The guidance is visualized by using annotations (e.g. icons, fonts, and colors).
             Adaptive Personalized eLearning Service (APeLS) is a multi-model, metadata drive
             adaptive hypermedia system that separates the narrative, content, and learner into
             different models. The adaptive engine in APeLS is a rule-based engine that produces
             a model for personalized courses based on a narrative and the learner model.
                The researchers in adaptive hypermedia also propose several formal models for
             adaptive hypermedia applications, e.g. AHAM [9], The Munich Reference Model
             [10], and XAHM [11]. AHAM and The Munich Reference Model extend the
             DEXTER model [12] by separating the storage layer further. In AHAM, this layer is
             separated into domain model, user model, and adaptation model. The Munich
             Reference Model divides this layer into domain meta-model, user meta-model, and
             adaptation meta-model. While AHAM follows a more database point of view, the
             Munich Reference Model uses an object-oriented specification written in the Unified
             Modeling Language (UML). The adaptation is performed using a set of adaptation
             rules. These models support the content-adaptation and the link-adaptation (or
             navigation adaptation). Cannataro et al. proposed an XML-based adaptive hypermedia
             model called XAHM [9]. The adaptation process in XAHM is based on three




                                                       15
International Workshop on Dynamic and Adaptive Hypertext: Generic Frameworks, Approaches and Techniques (DAH'09)




             adaptivity dimensions that form adaptation space, namely, user’s behavior (e.g.
             preferences and browsing activity), technology (e.g. network bandwidth and user’s
             terminal), and external environment (e.g. location, time, and language). The
             adaptation process is to find the position of the user in the adaptation space. The
             user’s behavior and external environment dimensions determine the adaptation of
             page content and links. The technology dimension is used in adapting the presentation
             layout.
                The above state-of-the-arts approaches are different from GAL in the following
             ways. Unlike these approaches, GAL is not intended to be another system, method, or
             model for designing adaptive applications. Instead, GAL focuses on abstracting from
             a specific adaptive engine configuration by generically specifying basic navigation
             adaptation in an engine independent way. That is, GAL can be compiled into specific
             adaptation engines and used by these engines. Note that GAL does not focus on
             typical presentation aspects like text color, font face, and how pages should be
             rendered to be presentable on a specific device. These aspects are typically very
             engine specific, and therefore hardly describable in a generic way. Moreover, GAL on
             purpose separates these concerns and thus limits the number of language constructs in
             order to get a clean and simple core language.


             3 The Basic Concepts of GAL

             The purpose of GAL is to describe the navigational structure of a web application and
             how this adapts itself to the actions of the users. The central concept is that of unit
             which is an abstract representation of a page as it is shown to a certain user after a
             certain request. Basically it is a hierarchical structure that contains the content and
             links that are to be shown, and also updates that are to be executed when the user
             performs certain actions such as requesting the page or leaving the page. All data
             from which these units are generated is assumed to be accessible via a single RDF
             query endpoint, and the updates are also applied via this endpoint. In the examples in
             this paper we will use the SPARQL1 query language for referring to and updating
             data.
                The set U of units contains unordered units and ordered units. These differ in that
             the first represents a unit with unordered content, i.e., a bag or multi-set, and the
             second has ordered content, i.e., a list. Unordered units are denoted formally as uu(C,
             h) where C B(E) describes the content as a bag of content elements (in the set E, to
             be defined later) and the relation h ! ET " UQ defines the event handlers by
             associating event types in the set ET with update queries in the set UQ. Here we will
             assume that ET = {gal:onAccess, gal:onExit} and UQ describes some set of update
             queries over RDF stores. Ordered units are denoted as ou(C, h) where C             L(E)
             describes the content as a list of content elements and the relation h is as for
             unordered units.
                The set E of content elements contains (1) attributes representing presentable
             content such as text, (2) unit container representing a single nested unit, (3) unit sets

             1
                 http://www.w3.org/TR/rdf-sparql-query/




                                                          16
International Workshop on Dynamic and Adaptive Hypertext: Generic Frameworks, Approaches and Techniques (DAH'09)




             representing a nested set of units of the same type, (4) unit lists representing a nested
             list of units and (5) links representing navigation links. We denote attributes as at(n, l,
             v) with a name n EN # {$} representing the name of the attribute, a label l            EL
             # {$} representing a printable label for the attribute and a value v V representing
             the value contained in the attribute. Here EN denotes the set of content element names
             here assumed to be all URIs minus the special constants gal:_top, gal:_self and
             gal:_parent, $ a special constant not in EN # EL denoting the absence of a name, EL
             is the set of content element labels here assumed to be the set of RDF literals and V
             the set of basic values, i.e., URIs and RDF literals. Unit containers are denoted as
             uc(n, l, u) with a name n EN # {$}, a label l            EL # {$} and a unit u U. The
             unit label l represents a presentable label and we assume UL is the set of RDF literals.
             The name n is used to refer in other parts of the unit to the position of this unit
             container. We denote unit sets and unit lists as us(l, UB) and ul(l, UL) with a label l
             EL # {$} and as content a bag of units UB B(U) or a list of units UL L(U).
             Finally, links are denoted as ln(ut, b, q, be, t) with a unit type ut UT that indicates
             the type of unit to which the link points, a binding b : X8 V that maps variable names
             to a value and defines the static parameters of the link, a query q LQ # {$} that
             computes dynamic parameters of the link, a binding extension function be : X 8 VE
             that maps variable names to value expressions to describe additional dynamic
             parameters and a target t          EN # {“gal:_top”, “gal:_self”, “gal:_parent”} that
             indicates which unit in the current page will be replaced with the retrieved page. Here
             LQ denotes the set of queries over RDF stores that return a list of bindings, UT
             denotes the set of unit type which we assume here to be URIs, X is the set of variable
             names which we assume here all start with “$” and includes the distinguished variable
             $user and VE denotes the set of value expressions which compute a single value
             given an RDF store and whose syntax will be defined in more detail later on. The set
             of all bindings, i.e., partial functions b : X 8 E, is denoted B.
                 Note that the above definitions of the set of proper units U and the set of content
             elements E are mutually recursive, which can be resolved by stating that we define
             them as the smallest sets that satisfy the given definitions. Note that therefore a unit is
             essentially a finite tree of content elements.


             4 The Global Structure of GAL Programs

             We proceed with giving the syntax of GAL along with an informal description of its
             semantics. The purpose of a GAL program is to describe how, given a page request in
             the form of a unit type, a user identifier and a binding that describes the parameters,
             the resulting unit is computed from the current RDF store. The top level of the
             grammar looks as follows:
              ::= * .
              ::=  “[”  “]” .

             We assume that  refers to the set of unit type names UT, and 
             describes the computation of a unit. For each page request the first  with




                                                                17
International Workshop on Dynamic and Adaptive Hypertext: Generic Frameworks, Approaches and Techniques (DAH'09)




             the requested unit type determines the result. The request is passed on to this  while removing the unit type and user identifier and extending the binding such
             that $user is bound to the user identifier. The syntax of :
              ::= “a” (“gal:unit” | “gal:orderedUnit”) “;”
                            (  )* (  |  |  |
                             |  )* (  )* .

             First the type of the resulting unit is specified, i.e., whether it is ordered or unordered,
             then the list of required parameters (excluding the implicit parameter $user) is given,
             followed by a list of content element expressions, and finally a list of event handlers
             is given.
                To illustrate the syntax we look at a use case that uses GAL to specify an adaptive
             application. We look at a learning application about the Milky Way. More
             specifically, we look at the page that specifies information about a specific planet. We
             then declare something like:

                :Planet_Unit [ a gal:unit; .. {content specification} .. ]

             The syntax of  and  is defined as follows:
              ::= “gal:hasInputVariable” “[“ “gal:varName”  “;”
                                “gal:varType”  “]” “;” .
              ::= “gal:onEvent” “[” “gal:eventType” (“gal:onAccess” | “gal:onExit”) “;”
                                   “gal:update”  “]” “;”.

             Here we assume that  describes the set of variables X, and  describes the set of domain concepts DC and  describes the
             set of update queries UQX parameterized with variables from X. The semantics of the
              is that it first checks if the current binding indeed defines the required
             variables with values that belong to the specified domain concept. If this is not the
             case, then the result is undefined. Otherwise the binding is restricted to the specified
             variables plus $user and passed to the content element expressions. Depending on the
             specified unit type, we compute uu(C, h) or ou(C, h). Here C is either the
             concatenation of the lists of content elements computed by the specified content
             element expressions or the corresponding bag of content elements. For the content
             element expressions we assume that they produce either an empty or a singleton list.
             Finally, h associates event types with update queries that are obtained by taking the
             specified parameterized update query and replacing the variables with their value in
             the binding.
                For example, in the running example an input parameter of the unit will indicate
             which planet we want to show to user. For this we assume that an incoming link to the
             planet unit carries this information in the form of a variable. Therefore the following
             will be specified in the content specification:
                      gal:hasInputVariable [
                               gal:varName "Planet";
                               gal:varType Planet;
                      ];




                                                                  18
International Workshop on Dynamic and Adaptive Hypertext: Generic Frameworks, Approaches and Techniques (DAH'09)




             5 Content Element Expressions

             We proceed with the syntax of the different content element expressions, starting with
             attributes:
              ::= “gal:hasAttribute” “[“ ? ? “gal:value”  “]”.
              ::= “gal:name”  “;” .
              ::= “gal:label”  “;” .

             Here  describes the set EN of content element names defined here as the
             set of URIs not containing the special constants gal:_self, gal:_parent and gal:top.
             The semantics of the  is the singleton attribute list [at(n, l, v)] with n the
             specified name (or $ if it is not specified), l is the resulting literal of the 
             (or $ if it not specified or not a literal) and v the result of . If the result of
              is undefined, then the result is the empty list [].
                The syntax and semantics of  are as follows:

              ::=  | “(”  “.”  “)” | “[” “gal:query”  “]” |
                           “[” “gal:if”  “;” (“gal:then”  “;”)? (“gal:else”  “;”)? “]” .

             Here  describes the set of values V which we assume here to be the set of
             URIs and RDF literals, and  describes VQX, the set of parameterized
             queries over an RDF store that return a single value. Based on  we define
             the earlier mentioned set of value expressions VE as the  expressions
             without free variables. If the  is  then this  is the result. If it
             is “(”  “.”  “)” then the result is the concatenation of the two
             literals that are the result of the two s, and if these do not both result in
             literals then the result is undefined. If it starts with gal:query then the result is that of
              with the free variables substituted with their value in the current binding.
             If it starts with gal:if then the result is defined as follows. If the  with free
             variables replaced by their value in the current binding returns a non-empty list then
             the result of the gal:then  is returned, otherwise the result of the gal:else
              is returned. If that particular  is not present then the result is
             undefined.
                 To illustrate this we now provide some attributes in the running example to show
             information about this planet on the screen. For example, we want to print the name
             of the planet, and also provide an image of that planet:
                     gal:hasAttribute [
                              gal:name planetName;
                              gal:value [$Planet.name]
                     ];
                     gal:hasAttribute [
                              gal:name planetImage;
                              gal:label ( "Image of: ".[$Planet.name] );
                              gal:value [ gal:query // url of an appropriate picture
                                        “SELECT ?image_url
                                         WHERE { $Planet :hasAssociatedResource ?image
                                                         :type Image;
                                                         :url ?image_url.}”
                              ]
                     ];




                                                                 19
International Workshop on Dynamic and Adaptive Hypertext: Generic Frameworks, Approaches and Techniques (DAH'09)




             Note the variable references for the variable named “Planet” by using the $-sign. The
             expression [$Planet.name] is a syntactic short-hand for the SPARQL query
             expression[gal:query “SELECT ?name WHERE { $Planet name
             ?name }”] which retrieves the name of the planet indicated by $Planet.
                Now suppose we want to add an adaptive attribute that gives ‘beginner’ or
             ‘advanced’ information about the planet, but only if the user has advanced knowledge
             about the concept:
             gal:hasAttribute [
                gal:name planetInformation;
                gal:label "Information: ";
                gal:value [
                      gal:if [ gal:query
                              “SELECT ?conceptPlanetInstance
                               WHERE { $User :hasConceptInstance ?conceptPlanetInstance
                                                        :name $Planet.name;
                                                        :visited ?Visited;
                                                        :advancedUserValue ?Advanced.
                                               FILTER (?Visited >= ?Advanced)
                                     }”];
                      gal:then [$Planet.AdvancedInfo];
                      gal:else [$Planet.BeginnerInfo];
                ]
             ]

                The query checks if the user number of visits equals or is greater than the amount
             of visits to the concepts that are needed to make a user an advanced user. If this is true
             (and the query in the ‘if’ clause returns a result) then the advanced information is
             showed, otherwise the beginners information is showed.
                The next type of content element we consider is the unit container:
              ::= “gal:hasSubUnit” “[”? ?  “]” “;” .

             The semantics of  is the singleton unit container list [uc(n, l, u)] where
             l is the unit label specified in , n is the unit name indicating the location
             specified in  and u is the first unit in the unit list constructed by . If the result of  is undefined then the result is the empty list [].
             The syntax and semantics  will be defined later on.
                 The following types of content element we describe are the list units and set units:
              ::= “gal:hasListUnit” “[” ?  “]” “;” .
              ::= “gal:hasSetUnit” “[” ?  “]” “;” .

             The semantics of  is the list-unit list [ul(l, LU)] where l is the unit
             label specified in  and LU is the unit list constructed by .
             The semantics of  is the same except that LU is replaced with BU, the
             corresponding bag of units.
                To illustrate the use of unit sets in the running example consider that we want to
             show a list of the moons of the planet. We can use the hasSetUnit construct for this.
                     gal:hasSetUnit[
                               gal:label "The following Moon(s) rotate around “.[$Planet.name];
                               gal:refersTo Moon_Unit_Short;
                               gal:hasQuery "SELECT ?Moon
                                           WHERE $Planet :hasMoon ?Moon";
                     ];




                                                                20
International Workshop on Dynamic and Adaptive Hypertext: Generic Frameworks, Approaches and Techniques (DAH'09)




             The hasSetUnit construct executes a query and for every result of that query it will
             spawn a unit, in this case a Moon_Unit_Short. For every of those units the query
             result will be bound to the ‘Moon’ variable.
                The final type of content element that can be specified is the link:
              ::= “gal:hasLink” “[”  ? “]” “;” .
              ::= “gal:refersTo”  “;”  .
              ::= ? * .
              ::= “gal:hasQuery” “[”  “]” “;”
              ::= “gal:assignVariable” “[” “gal:varName”  “;”
                                “gal:value”  “]” “;” .
              := “gal:targetUnit” (  | “gal:_top” | “gal:_self” | “gal:_parent” ) “;” .

             Here  describes the set LQX of parameterized queries over the RDF store
             that return a list of bindings and are parameterized with variables from X. The result
             of  is the link list [ln(ut, b, q, be, t)] where ut is the unit type specified in
             , b is the current binding, q is the  but with the free variables
             replaced with their value in the current binding, be is the partial function that maps
             each  in the  list to the first associated  but with the
             free variables in this  replaced as specified by the current binding, and
             finally t is the target in  if this is specified and gal:_top if it is not.
                For example, the Moon_Unit_Short that was mentioned in the preceding example
             could contain a link to the elaborate description as follows:
                :Moon_Unit_Short [
                    a gal:unit;
                    gal:hasInputVariable [
                              gal:varName "Moon";
                              gal:varType Moon
                    ];
                    gal:hasAttribute [
                              gal:name moonName;
                              gal:label "Moon: ";
                              gal:value [$Moon.name]
                    ];
                    gal:hasLink [
                              gal:refersTo :Moon_Unit_Elaborate;
                    ]
                ]


                Note the hasLink construct that binds to the Moon_Unit_Short, meaning that every
             attribute in the unit becomes a link that points to the Moon_Unit_Elaborate unit. By
             default the current input variables, in this case $Moon, are passed as parameters of the
             link, so it indeed will lead to a page describing the same moon more elaborately.
                The final non-terminal we consider is  which computes a list of units:
              ::= “gal:refersTo” “[”  “]” “;”  .

             The result is defined as follows. First, the query in  is evaluated, while
             replacing its free variables with their value in the current binding, and the resulting
             list of bindings is extended with the binding specified by the list of 
             expressions. Finally, for each of the resulting bindings we use them to extend the
             current binding and for this binding evaluate the , and finally collect all the
             resulting units in a list.




                                                                21
International Workshop on Dynamic and Adaptive Hypertext: Generic Frameworks, Approaches and Techniques (DAH'09)




                We extend the syntax with some syntactic sugar: inside a  the
             fragment “[”  “]” can be replaced by a  if in the total expression
             this is associated with this . In other words, if a  occurs in the
              after the gal:refersTo then it is interpreted as the associated “[”  “]”. This is illustrated in the preceding example for gal:hasSetUnit.
                We conclude the presentation of the syntax an semantics of GAL with a possible
             output of the running example. Given the definitions for the Planet Unit it would yield
             for a specific instance, for example Jupiter, something along the lines as shown in the
             screenshot in Figure 1. This screenshot is based upon a GAL specification that is
             compiled to and executed by the AHA!3 engine [2].




                              Figure 1: Screenshot of an instance of the Planet Unit




             6 The Navigation Semantics of GAL

             In this section we describe the navigation process that is defined by a certain GAL
             program. At the core of the navigation semantics is the previously described
             computation of the unit that is the result of the request of a user. The resulting unit
             then is presented to the user and becomes the current unit, i.e., the unit that is
             currently presented to the user. In addition all the update queries associated with the
             gal:onAcess events in it at any nesting depth are applied to the RDF store in some
             arbitrary order.
                If subsequently the user navigates to an external link then all the update queries
             associated in it with the gal:onExit event at any nesting depth are applied to the RDF
             store in some arbitrary order. If the user follows an internal link ln(ut, b, q, be, t) in
             the current unit, then the following happens. First the target unit in the current unit is
             determined as follows. If the target is a unit name then this is the unit in the first unit
             container with that name. If it is gal:_self then it is the containing unit, i.e., the unit in
             which the link is directly nested. If it is gal:_parent then it is the parent unit, i.e., the
             unit which has as a content element a unit container, unit set or unit list that refers to




                                                          22
International Workshop on Dynamic and Adaptive Hypertext: Generic Frameworks, Approaches and Techniques (DAH'09)




             the containing unit. If it is gal:_top then it is the root unit of the current unit. If in any
             of the preceding cases the result is not well defined then the target unit is the root unit
             of the current unit. When the target unit is determined then all gal:onExit events that
             are directly or indirectly nested in it are applied to the RDF store in some arbitrary
             order.
                 Then, the binding that describes the parameters is computed as follows: the
             binding b is combined with the first binding in the result of q and this in turn is
             combined with the binding that is obtained when evaluating be. The resulting binding
             is sent together with the specified unit type as a request. Then, if this request results in
             a unit, the gal:onAccess update queries in this unit are executed as described before.
             In the final step the new current unit is the old current unit but with the target unit
             replaced with the resulting unit of the request.


             7 Conclusions and Future Work

                Many Web application frameworks nowadays offer personalization and adaptation
             as their features. However, until now the adaptation mechanisms are typically engine
             specific and the adaptation languages used by the adaptive engines are different from
             one another. In this paper, we have presented Generic Adaptation Language (GAL)
             that aims to capture basic adaptive navigation functionality in an engine independent
             way. GAL allows us to use every authoring environment in combination with any
             adaptive engines. We gave a formal description of GAL, and demonstrated that GAL
             can be used to specify an adaptive application. Currently we work on working out
             examples that show that GAL allows every type of adaptivity as specified in [5]. In
             further future work we look at building compilers from GAL to several adaptive
             engines (e.g. for AHA! version 3, Hera and the GALE engine that is being built in the
             GRAPPLE project2). Similarly we will build compilers from several authoring
             environments to GAL (e.g. for the Graph Author and the authoring tools within the
             GRAPPLE project). We expect that our formal work as presented in this paper will
             help us to relatively simply build these compilers. In this way we aim to show that
             GAL is both applicable to most adaptive engines as well as that it is generic. This
             might pave the path in the future for general acceptance and standardization of a
             engine-independent generic adaptation language.



             Acknowledgements: This work was supported by the 7th Framework Program
             European project GRAPPLE ('Generic Responsive Adaptive Personalized Learning
             Environment').




             2
                 Cf. http://www.grapple-project.org




                                                          23
International Workshop on Dynamic and Adaptive Hypertext: Generic Frameworks, Approaches and Techniques (DAH'09)




             References

             [1]  Owen Conlan, Vincent P. Wade, Catherine Bruen, and Mark Gargan. Multi-model,
                  Metadata Driven Approach to Adaptive Hypermedia Services for Personalized
                  eLearning. In Proceedings of the Second Adaptive Hypermedia and Adaptive Web-
                  Based Systems Conference (AH 2002), Malaga, Spain, May, 2002.
              [2] Paul De Bra, David Smits, and Natalia Stash. The Design of AHA!. In Proceedings of
                  the 17th ACM Conference on Hypertext and Hypermedia (Hypertext 2006), Odense,
                  Denmark, August, 2006.
             [3] Peter Brusilovsky, John Eklund, and Elmar W. Schwarz. Web-based Education for All:
                  A Tool for Development Adaptive Courseware. In Computer Networks and ISDN
                  Systems, 30(1-7), pp. 291-300, 1998.
             [4] Geert-Jan Houben, Kees van der Sluijs, Peter Barna, Jeen Broekstra, Sven Casteleyn,
                  Zoltán Fiala, and Flavius Frasincar. Hera. Book chapter: Web Engineering: Modelling
                  and Implementing Web Applications, G. Rossi, O. Pastor, D. Schwabe, L. Olsina (Eds),
                  Chapter 10, pp. 263-301, 2008, Human-Computer Interaction Series, Springer.
             [5] Peter Brusilovsky. Adaptive Hypermedia. In User Modeling and User-Adapted
                  Interaction, 11 (1-2), pp. 87-110, 2001.
             [6] Gustavo Rossi and Daniel Schwabe. Modeling and Implementing Web Applications
                  with OOHDM. Book chapter: Web Engineering: Modelling and Implementing Web
                  Applications, G. Rossi, O. Pastor, D. Schwabe, L. Olsina (Eds), Chapter 6, pp. 109-155,
                  2008, Human-Computer Interaction Series, Springer.
             [7] Marco Brambilla, Sara Comai, Piero Fraternali, and Maristella Matera. Designing Web
                  Applications with WebML and WebRatio. Book chapter: Web Engineering: Modelling
                  and Implementing Web Applications, G. Rossi, O. Pastor, D. Schwabe, L. Olsina (Eds),
                  Chapter 9, pp. 221-261, 2008, Human-Computer Interaction Series, Springer.
             [8] Nora Koch , Alexander Knapp, Gefei Zhang, and Hubert Baumeister. Uml-Based Web
                  Engineering: An Approach Based on Standard. Book chapter: Web Engineering:
                  Modelling and Implementing Web Applications, Gustavo Rossi, Oscar Pastor, Daniel
                  Schwabe, and Luis Olsina (Eds), Chapter 7, pp. 157-191, 2008, Human-Computer
                  Interaction Series, Springer.
              [9] Paul De Bra, Geert-Jan Houben, and Hongjing Wu. AHAM: A Dexter-based Reference
                  Model for Adaptive Hypermedia. In Proceedings of the 10th ACM Conference on
                  Hypertext and Hypermedia (Hypertext’99), Darmstadt, Germany, February, 1999.
             [10] Nora Koch and Martin Wirsing. The Munich Reference Model for Adaptive
                  Hypermedia Applications. In Proceedings of the Second Adaptive Hypermedia and
                  Adaptive Web-Based Systems Conference (AH 2002), Malaga, Spain, May, 2002.
             [11] Mario Cannataro and Andrea Pugliese. XAHM: An Adaptive Hypermedia Model
                  Based on XML. In Proceedings of the 14th International Conference on Software
                  Engineering and Knowledge Engineering (SEKE), Ischia, Italy, July, 2002.
             [12] Frank G. Halasz and Mayer D. Schwartz. The Dexter Hypertext Reference Model. In
                  Communications of the ACM (CACM), 37(2), pp. 30-39, Febuary, 1994.




                                                         24