SlideShare una empresa de Scribd logo
1 de 43
Descargar para leer sin conexión
M               ( em-’up )



                        A Functional Logic Programming Mashup Language




                                                !
                                        Early       Preview




Monday, March 2, 2009                                                    1
Agenda
              •         What is MUp?

              •         Features

              •         How it works

              •         Console & Tools

              •         MUp architecture

              •         MU language

              •         Examples

              •         Validation scenarios

              •         Comparison with similar products

              •         Results

              •         RoadMap

              •         Project Resources


Monday, March 2, 2009                                        2
What is MUp (1)

        •       MUp stay for Mash Up.

        •       MUp is a framework for creating mashup of web contents.

        •       MUp is based on a specific high level language called MU.

        •       MUp is written in Java.

        •       MUp defines two runtime profiles : JRE and Javascript.




Monday, March 2, 2009                                                      3
What is MUp (2)

          •      MUp is compiled in Javascript with GWT (Google Web Toolkit).

          •      MUp Javascript profile runs entirely client side (inside a browser).

          •      MUp can be used client side to define Javascript widgets embedded in Web pages.

          •      MUp can be used server side to integrate heterogeneous contents.




Monday, March 2, 2009                                                                             4
MUp Features
              • Simplifies data aggregation and transformation.
              • Provides support for unification of JSON objects over JSON models.
              • Provides Graph manipulation native support.
              • Provides Type Morphing support.
              • Provides (forward) XPath native support.
              • Provides JSONPath native support.
              • Provides UI Induction capabilities.


Monday, March 2, 2009                                                               5
How it works (1)
          MUp supports a special language to perform data mashing,
          this language is called MU.

          MU is both a logic and functional language, it provides also procedural constructs.

          All predicates provided by MU can be grouped in functional sets.

          The main functional sets are:

          Source Operations: allow to retrieve web resources.

          Inspect Operations: allow to decompose data retrieved from Web.

          Model Operations: allow to create JSON models from raw data.

          Renderization Operations: allow to renderize JSON models.




Monday, March 2, 2009                                                                           6
How it works (2)
                                      MU functional sets:

                                                                              XPath          JPath
                                           Get           Post
                                                                                      Type
                                          Source Operations                   Inspect Operations



                          Context         PContext                                      Jsonize              Apply
                                                                Renderize
                                                                                                     Unify
                              StackTrace
                                                                                             Model Operations
                           Context operations
                                                        Renderization Operations

                                                                                       Substring             Regex
                                 if               for

                                                            Add           Put
                                 Flow Control                                                String Operations
                                                                  Remove

                                                            Data operations
                                      -
                                                                                         Type            As<Type>
                             +                /
                                 *                              ==        <
                                          %
                                                                                         Type Management
                                                          OR         !=       AND
                           Math Operations
                                                          Conditional / Logical
                                                             Operations




Monday, March 2, 2009                                                                                                7
A simple processing flow
                              a
                                      b
                                             Get               Post
                              c                                          Source() : Get('http://www.mysource.org/rss');
                                      d
                                             Source Operations




                              a             Type              Path
                                      b
                                                                      Entries() : Path('/rss/item/description', Source() );
                              c
                                      d      Inspect Operations




                                                    Jsonize
                                                                       Model() : Jsonize('{ entry : quot;_quot; }', Entries() );
                              [a,b,c,d]

                                             Model Operations




                          a
                                                   Renderize
                          b
                                                                                 GUI() : Renderize( Model() );
                          c
                          d               Renderization Operations




Monday, March 2, 2009                                                                                                         8
A complex processing flow
                        a                                                                               e
                            b                                                                               f
                                            Get         Post                        Get        Post
                        c                                                                               g
                            d                                                                               h
                                          Source Operations                        Source Operations




                        a                                                                               e
                            b                                                                               f
                                           Type        Path                        Type        Path
                        c                                                                               g
                                          Inspect Operations                       Inspect Operations
                            d                                                                               h




                                                                    Jsonize
                                    [ [a,b,c,d] , [e,f,g,h] ]
                                                                Model Operations




                                a                 e
                                b                 f               Renderize
                                                                 Renderization
                                c                 g               Operations
                                d                 h




Monday, March 2, 2009                                                                                           9
MUp Console (1)


         MUp provides a Web console that can be executed inside any browser
         supported by GWT (Firefox, Safari, IE).

         MUp Console provides a text area to launch commands and an
         operation’s history.




Monday, March 2, 2009                                                         10
MUp Console (2)
                        Console Tab




                         Executed
                         command




                        Command
                          result




                         command
                         input area




Monday, March 2, 2009                                   11
MUp Console: tools (1)
                                                             Editable
                                          Inspector Panel
                                                            Tree view




         JSON Inspector


                              Editable
                              Text view




Monday, March 2, 2009                                                   12
MUp Console: tools (2)
                                            Inspector Panel




                                 Native
                               predicates


                                  User
                                defined
                               predicates



           Context
           Inspector

                               Predicate
                              description
                                 panel




Monday, March 2, 2009                                         13
MUp Architecture (1)
                        Console                            Tools




                                                             Cast
                                               Processor                   Digester
                        Parser        GUI
                                                            Manager


                                                 MU Core

                                                  Native

                             JRE Native Impl                   GWT Native Impl




Monday, March 2, 2009                                                                 14
MUp Architecture (2)

        Console: the MU console.

        Tools: the tools included in the console.

        MU Core : provides core functionalities for the MUp framework.

        Parser: parser for MU language.

        GUI: GUI abstraction able to renderize JSON objects in widgets.
        




Monday, March 2, 2009                                                     15
MUp Architecture (3)

        Processor: abstract processor able to interpret compiled MU operations.

        Cast Manager: provides support for type morphing.

        Digester: XML/HTML generic path digester.

        Native: abstraction layer of native implementation.

        JRE Native : implementation of Native layer in Java Runtime Environment.

        GWT Native : implementation of Native layer on GWT Javascript.




Monday, March 2, 2009                                                              16
MU Language (1)
     MU is based on an hybrid programming paradigm based on functional, procedural and logic
     constructs.

     An example of procedural expression is:

     Procedure(a,b) : r1=Process(a), r2=Process(b), if( Gt(r1,r2), Process(r1), Process(r2) );


     An example of functional expression is:

     Function(a,b) : sum( F1(a), F2(b) );


     An example of logic expression is:

     Predicate(a,b) : P1(a) & P2(b) | P3(a,b);


Monday, March 2, 2009                                                                            17
MU Language (2)
                 MU native types       JSON counterpart

                        BooleanValue      boolean
                        NumericValue      integer / float
                        StringValue       string
                        ListValue         array
                        MapValue          object
                        GraphValue        object
                        JSONValue         object




Monday, March 2, 2009                                      18
MU Language (3)
   MU language types are polymorphic: every native type can be always
   casted to another native type.
   Casting among primitive types is managed by Cast Manager.

                                                                  Boolean




                                            Non
                                                                            Numeric
                                          primitive




                               JSON                                                   String




                                                                             List
                                              Graph

                                                !
                                      Under         Development




                                                                   Map




Monday, March 2, 2009                                                                          19
MU Advanced Language (1)

     MU supports Erlang/Prolog language features like predicate overloading.

     Factorial(0) : 1;
     Factorial(n) : Mult( n , Factorial( Minus(n,1) ) );



     Predicate overloading is based on unification: given a set of predicates with the same name, it
     will be invoked the first predicate in order of definition which signature unifies with given
     arguments.

     Unlike Erlang/Prolog, MU implements unification over JSON data structures.




Monday, March 2, 2009                                                                                 20
MU Advanced Language (2)
     Unification samples:
     # Basic unification #
     P1(a, b, c) =::= (List(1,2,3)) ==> P1(a:=1,b:=2,c:=3)


     # List unification. #
     P1([a,b|c]) =::= (List(1,2,3,4,5)) ==> P1(a:=1,b:=2,c:=[3,4,5])


     # Object unification. #
     P1( { “k1” : a, “k2” : b | o} ) =::= ({“k1” : 1 , “k2” : “2”, “k3” : “3”}) ==> P1(a:=1,b:=”2”,c:={ “k3” : “3” })




Monday, March 2, 2009                                                                                                   21
MU Language Examples (1)
              # This is a comment. #

              PI() : 3.14; # Declaring a const. #

              Const() : quot;This string is const.quot;;

              # Functional programming. #
              TriangleArea(l1, l2) : Div( Mult(l1,l2), 2 );
              MinorOf(a,b) : if( Lt(a,b), a, b );

              # Iterative constructs.
              PrintRange(start, stop) :
              for( Range(start,stop,1), x, Print(x) );




Monday, March 2, 2009                                         22
MU Language Examples (2)
         # Procedural programming. #

         P1(v1, v2) : v3=P2(v1, k1), v4=P3(v3,k2), P4(v4);

         P1(v1, v2);
    # Invoking a predicate. #

         v1=P1(v2, v3), P2(v1, v4);       # Complex invocation. #

         # Predicate Overloading #
         OL([a,b,c] , v) : Print('overload1');
         OL([a,b,c,d], v) : Print('overload2');
         OL({quot;k1quot; : v1, quot;k2quot; : v2} , v) : Print('overload3');
         OL({quot;k1quot; : v1, quot;k2quot; : v2, quot;k3quot; : v3} , v) : Print('overload4');

         # Invocation #
         OL(List(1,2,3) , 4);                # prints: overload1 #
         OL(List(1,2,3,4), 5);               # prints: overload2 #
         OL(Map('k1',1,'k2',2) , 4);         # prints: overload3 #
         OL(Map('k1',1,'k2',2,'k3',3), 5);   # prints: overload4 #

Monday, March 2, 2009                                                      23
MU Language Examples (3)
          # JSON Path integration #

          var = DoSomething(), var.p1.p2.p3[i];

          # XPath integration #

          var = GetFeed(), var//title;




                                                     !
                                             Under       Development




Monday, March 2, 2009                                                  24
MU UI Model

                                        UIButton



                                        UILabel

                         UIComponent

                                       UITextArea



                                         UIList




                                        UIPanel

                         UIContainer

                                       UIWindow




Monday, March 2, 2009                               25
GUI Induction (1)
      The GUI Induction is the ability of the language of
      automatically generate a GUI for a JSON data.                     In




      The Renderize() predicate provides the hidden processing
      flow shown on the right.                                       JSON data




      To customize the GUI generation it is possible to use the
      couple Modelize() / Concretize() instead of the Renderize()   Modelize()


      operation.
                                                                     JSON UI
                                                                                     Apply()
      The Modelize() operation generates a JSON UI Model by           Model


      applying a set of default transformations.
                                                                    Concretize()

      The JSON UI Model can be customized by using the Apply()
      operation.
                                                                    GUI native
                                                                     model

      The Concretize() operation transforms a JSON UI Model in a
      GUI Native Model .
                                                                        Out



                                     !
                             Under       Development
                                                                       Renderize()
Monday, March 2, 2009                                                                          26
GUI Induction (2)
      Examples of GUI Inductions based on the unification are:
      # Change Background color. #
      ChangeBG( { “background” : bg | o } ) : Add(o, Map(“background”, “red”) );

      # Change panel orientation if size exceed 10. #
      ChangePO( { o } ) : if( Gt( Size(o), 10 ) , Add(o, Map(“orientation”, “vertical”) ) );




                                                       !
                                            Under             Development




Monday, March 2, 2009                                                                          27
Validation scenarios

                Validation scenarios are applications of MUp on real and synthetic
                data meant to verify the applicability of all the implemented
                features.




Monday, March 2, 2009                                                                28
Synthetic validation scenario:
                                 description

                “We have a Web service S1 returning a list of restaurants in a
                specified city, providing for each restaurant the street in which it is
                located.

                We've also a Web service S2 returning a list of hotels near a given
                street.

                We want to combine these sources to obtain a list of restaurants
                in a given city with a sublist of hotels near each restaurant.”




Monday, March 2, 2009                                                                    29
Synthetic validation scenario:
                                formalization
        #01# S1(city) : PGet('http://findrestaurants.com/find?city=_', city);
        #02# RawRomeRestaurants() : S1('Rome');
        #03# ListOfRomeRestaurants() : Path( 'html/body/table/tr', RawRomeRestaurants() );
        #04# RestaurantName(row) : Path( 'td[0]' , row );
        #05# RestaurantStreet(row) : Path( 'td[1]' , row );
        #06# S2(city,street) : PGet('http://findhotels.com/find?city=_street=_', List(city, street) );
        #07# HotelsInRomeAtStreet(street) : S2('Rome', street);
        #08# ListOfStreetHotels(street) : Path( 'html/body/table/tr' , HotelsInRomeAtStreet(street) );
        #09# HotelName(row) : Path( 'td[0]', row );
        #10# HotelStars(row) : Path( 'td[1]' , row );
        #11# JsonHotel(row) : Jsonize( '{ hotel-name : quot;_quot;, hotel-stars : quot;_quot; }', List( HotelName(row),
        HotelStars(row) ) );
        #12# HotelsInStreet(street) : for( ListOfStreetHotels(street), hotel, JsonHotel(hotel) );
        #13# Restaurant(row) : Jsonize( '{ restaurant-name : quot;_quot;, restaurant-street : quot;_quot;, hotels : _ }',  
        List(RestaurantName(row), street=RestaurantStreet(row), HotelsInStreet(street)) );
        #14# RomeRestaurants() : for( ListOfRomeRestaurants(), row, Restaurant(row) );



Monday, March 2, 2009                                                                                         30
Synthetic validation scenario:
                                     result
     [
     
       {
     
       
      quot;restaurant-namequot; : quot;RN1Romequot;,
     
       
      quot;restaurant-streetquot; : quot;RS1Romequot;,
     
       
      quot;hotelsquot; : [
     
       
      { quot;hotel-namequot; : quot;HN1RomeRS1Romequot;, quot;hotel-starsquot; : quot;SR1RomeRS1Romequot; },
     
       
      { quot;hotel-namequot; : quot;HN2RomeRS1Romequot;, quot;hotel-starsquot; : quot;SR2RomeRS1Romequot; },
     
       
      { quot;hotel-namequot; : quot;HN3RomeRS1Romequot;, quot;hotel-starsquot; : quot;SR3RomeRS1Romequot; }
     
       
      ]
     
       },
     
       {
     
       
      quot;restaurant-namequot; : quot;RN2Romequot;,
     
       
      quot;restaurant-streetquot; : quot;RS2Romequot;,
     
       
      quot;hotelsquot; : [
     
       
      { quot;hotel-namequot; : quot;HN1RomeRS2Romequot;, quot;hotel-starsquot; : quot;SR1RomeRS2Romequot; },
     
       
      { quot;hotel-namequot; : quot;HN2RomeRS2Romequot;, quot;hotel-starsquot; : quot;SR2RomeRS2Romequot; },
     
       
      { quot;hotel-namequot; : quot;HN3RomeRS2Romequot;, quot;hotel-starsquot; : quot;SR3RomeRS2Romequot; }
     
       
      ]
     
       },
     
       {
     
       
      quot;restaurant-namequot; : quot;RN3Romequot;,
     
       
      quot;restaurant-streetquot; : quot;RS3Romequot;,
     
       
      quot;hotelsquot; : [
     
       
      { quot;hotel-namequot; : quot;HN1RomeRS3Romequot;, quot;hotel-starsquot; : quot;SR1RomeRS3Romequot; },
     
       
      { quot;hotel-namequot; : quot;HN2RomeRS3Romequot;, quot;hotel-starsquot; : quot;SR2RomeRS3Romequot; },
     
       
      { quot;hotel-namequot; : quot;HN3RomeRS3Romequot;, quot;hotel-starsquot; : quot;SR3RomeRS3Romequot; }
     
       
      ]
     
       }
     ]


Monday, March 2, 2009                                                                        31
Real validation scenario:
                               description

                “Given an RSS feed extract all title elements inside it and show a
                panel containing them.”




Monday, March 2, 2009                                                                32
Real validation scenario:
                                 formalization
         #01# Feed() : PGet(quot;http://www.repubblica.it/rss/homepage/rss2.0.xmlquot;, List());

         #02# Titles() : Path( 'title', Feed() );

         #03# JsonTitle(t) : Jsonize('{ quot;titlequot; : %s }', List(t));

         #04# JsonTitles() : for( Titles(), title, JsonTitle(title) );

         #05# Renderize( JsonTitles() );




Monday, March 2, 2009                                                                      33
Real validation scenario:
                                  result




Monday, March 2, 2009                               34
Comparison with
                        similar products




Monday, March 2, 2009                      35
Results / Issues
                    •   The GWT profile raises problems when recompiling with
                        performance flags.

                    •   GWT is not enough mature for the complexity of this
                        project, in the following months resources will be invested
                        on the JRE profile.




Monday, March 2, 2009                                                                 36
RoadMap (1)
                        ( http://code.google.com/p/em-up/wiki/RoadMap )

        Ongoing Tasks

        • Implement the GraphValue data type:
            1. implement the core type. (2) DONE
            2. implement the manipulation operations. (3) DONE
            3. implement the triple syntax. (3)
            4. add graph search and transformation operators. (3)

        • Add support for JSON storaging and querying. (4)
        • Empower the JSON Model syntax. (3)
Monday, March 2, 2009                                                     37
RoadMap (2)
            Rewrite the MUp Console Shell with Gwt-EXT. (3)

            Complete the User Documentation. (3)

            Complete the build system. (2)

            Add command-line console. (3)

            Complete the XPath support (some operators are missing).




Monday, March 2, 2009                                                  38
RoadMap (3)
         Complete the JSONPath support (some operators are missing).

         Add Regexp support for string manipulation. (2)

         TODOs reduction in code and documentation. (10)

          Add arithmetic expression support in language. (2)

         --- MILESTONE ---




Monday, March 2, 2009                                                  39
Documentation & Code
             The MU documentation is hosted in

                                      http://code.google.com/p/em-up/
             and can be found here:

            The MU source code will be released soon under the
            Apache License,Version 2.0 .




Monday, March 2, 2009                                                   40
Articles
                              “MU: an hybrid language for Web Mashups”
                              Davide Palmisano & Michele Mostarda

      TODO: add Article URL




                                                 !
                                      Under            Development




Monday, March 2, 2009                                                    41
Credits
                  Michele Mostarda (michele.mostarda)

                          michele.mostarda

                          michele.mostarda@gmail.com

                          michele@asemantics.com


                             http://www.asemantics.com


Monday, March 2, 2009                                    42
/* EOF */




Monday, March 2, 2009               43

Más contenido relacionado

Similar a MUp Early Preview V6

Itinerary Website (Web Development Document)
Itinerary Website (Web Development Document)Itinerary Website (Web Development Document)
Itinerary Website (Web Development Document)Traitet Thepbandansuk
 
Lightweight Grids With Terracotta
Lightweight Grids With TerracottaLightweight Grids With Terracotta
Lightweight Grids With TerracottaPT.JUG
 
Plugin-able POS Solutions by Javascript @HDM9 Taiwan
Plugin-able POS Solutions by Javascript @HDM9 TaiwanPlugin-able POS Solutions by Javascript @HDM9 Taiwan
Plugin-able POS Solutions by Javascript @HDM9 TaiwanRack Lin
 
Dynamic Synthesis of Mediators to Support Interoperability in Autonomic Systems
Dynamic Synthesis of Mediators to Support Interoperability in Autonomic SystemsDynamic Synthesis of Mediators to Support Interoperability in Autonomic Systems
Dynamic Synthesis of Mediators to Support Interoperability in Autonomic SystemsAmel Bennaceur
 
10 reasons why Nuxeo is using GlassFish
10 reasons why Nuxeo is using GlassFish10 reasons why Nuxeo is using GlassFish
10 reasons why Nuxeo is using GlassFishNuxeo
 
Florian adler minute project
Florian adler   minute projectFlorian adler   minute project
Florian adler minute projectDmitry Buzdin
 
Knitting boar atl_hug_jan2013_v2
Knitting boar atl_hug_jan2013_v2Knitting boar atl_hug_jan2013_v2
Knitting boar atl_hug_jan2013_v2Josh Patterson
 
04.egovFrame Runtime Environment Workshop
04.egovFrame Runtime Environment Workshop04.egovFrame Runtime Environment Workshop
04.egovFrame Runtime Environment WorkshopChuong Nguyen
 
report
reportreport
reportbutest
 
Spring Batch Behind the Scenes
Spring Batch Behind the ScenesSpring Batch Behind the Scenes
Spring Batch Behind the ScenesJoshua Long
 
L0001 - The Terminology of the Eclipse Platform
L0001 - The Terminology of the Eclipse PlatformL0001 - The Terminology of the Eclipse Platform
L0001 - The Terminology of the Eclipse PlatformTonny Madsen
 
01.egovFrame Training Book II
01.egovFrame Training Book II01.egovFrame Training Book II
01.egovFrame Training Book IIChuong Nguyen
 
Hadoop Summit San Diego Feb2013
Hadoop Summit San Diego Feb2013Hadoop Summit San Diego Feb2013
Hadoop Summit San Diego Feb2013Narayan Bharadwaj
 
FOSDEM 2013 : Getting Started with Couchhbase Server 2.0
FOSDEM 2013 : Getting Started with Couchhbase Server 2.0FOSDEM 2013 : Getting Started with Couchhbase Server 2.0
FOSDEM 2013 : Getting Started with Couchhbase Server 2.0Tugdual Grall
 
Parallel Linear Regression in Interative Reduce and YARN
Parallel Linear Regression in Interative Reduce and YARNParallel Linear Regression in Interative Reduce and YARN
Parallel Linear Regression in Interative Reduce and YARNDataWorks Summit
 

Similar a MUp Early Preview V6 (20)

Introducing spring
Introducing springIntroducing spring
Introducing spring
 
Itinerary Website (Web Development Document)
Itinerary Website (Web Development Document)Itinerary Website (Web Development Document)
Itinerary Website (Web Development Document)
 
Lightweight Grids With Terracotta
Lightweight Grids With TerracottaLightweight Grids With Terracotta
Lightweight Grids With Terracotta
 
Nuxeo 5.2 Glassfish
Nuxeo 5.2 GlassfishNuxeo 5.2 Glassfish
Nuxeo 5.2 Glassfish
 
Map Reduce
Map ReduceMap Reduce
Map Reduce
 
Plugin-able POS Solutions by Javascript @HDM9 Taiwan
Plugin-able POS Solutions by Javascript @HDM9 TaiwanPlugin-able POS Solutions by Javascript @HDM9 Taiwan
Plugin-able POS Solutions by Javascript @HDM9 Taiwan
 
Dynamic Synthesis of Mediators to Support Interoperability in Autonomic Systems
Dynamic Synthesis of Mediators to Support Interoperability in Autonomic SystemsDynamic Synthesis of Mediators to Support Interoperability in Autonomic Systems
Dynamic Synthesis of Mediators to Support Interoperability in Autonomic Systems
 
DAC 2012
DAC 2012DAC 2012
DAC 2012
 
10 reasons why Nuxeo is using GlassFish
10 reasons why Nuxeo is using GlassFish10 reasons why Nuxeo is using GlassFish
10 reasons why Nuxeo is using GlassFish
 
Florian adler minute project
Florian adler   minute projectFlorian adler   minute project
Florian adler minute project
 
Knitting boar atl_hug_jan2013_v2
Knitting boar atl_hug_jan2013_v2Knitting boar atl_hug_jan2013_v2
Knitting boar atl_hug_jan2013_v2
 
04.egovFrame Runtime Environment Workshop
04.egovFrame Runtime Environment Workshop04.egovFrame Runtime Environment Workshop
04.egovFrame Runtime Environment Workshop
 
report
reportreport
report
 
Spring Batch Behind the Scenes
Spring Batch Behind the ScenesSpring Batch Behind the Scenes
Spring Batch Behind the Scenes
 
L0001 - The Terminology of the Eclipse Platform
L0001 - The Terminology of the Eclipse PlatformL0001 - The Terminology of the Eclipse Platform
L0001 - The Terminology of the Eclipse Platform
 
01.egovFrame Training Book II
01.egovFrame Training Book II01.egovFrame Training Book II
01.egovFrame Training Book II
 
Hadoop Summit San Diego Feb2013
Hadoop Summit San Diego Feb2013Hadoop Summit San Diego Feb2013
Hadoop Summit San Diego Feb2013
 
FOSDEM 2013 : Getting Started with Couchhbase Server 2.0
FOSDEM 2013 : Getting Started with Couchhbase Server 2.0FOSDEM 2013 : Getting Started with Couchhbase Server 2.0
FOSDEM 2013 : Getting Started with Couchhbase Server 2.0
 
Parallel Linear Regression in Interative Reduce and YARN
Parallel Linear Regression in Interative Reduce and YARNParallel Linear Regression in Interative Reduce and YARN
Parallel Linear Regression in Interative Reduce and YARN
 
Hadoop + Forcedotcom = Like
Hadoop + Forcedotcom = LikeHadoop + Forcedotcom = Like
Hadoop + Forcedotcom = Like
 

Último

Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 

Último (20)

Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 

MUp Early Preview V6

  • 1. M ( em-’up ) A Functional Logic Programming Mashup Language ! Early Preview Monday, March 2, 2009 1
  • 2. Agenda • What is MUp? • Features • How it works • Console & Tools • MUp architecture • MU language • Examples • Validation scenarios • Comparison with similar products • Results • RoadMap • Project Resources Monday, March 2, 2009 2
  • 3. What is MUp (1) • MUp stay for Mash Up. • MUp is a framework for creating mashup of web contents. • MUp is based on a specific high level language called MU. • MUp is written in Java. • MUp defines two runtime profiles : JRE and Javascript. Monday, March 2, 2009 3
  • 4. What is MUp (2) • MUp is compiled in Javascript with GWT (Google Web Toolkit). • MUp Javascript profile runs entirely client side (inside a browser). • MUp can be used client side to define Javascript widgets embedded in Web pages. • MUp can be used server side to integrate heterogeneous contents. Monday, March 2, 2009 4
  • 5. MUp Features • Simplifies data aggregation and transformation. • Provides support for unification of JSON objects over JSON models. • Provides Graph manipulation native support. • Provides Type Morphing support. • Provides (forward) XPath native support. • Provides JSONPath native support. • Provides UI Induction capabilities. Monday, March 2, 2009 5
  • 6. How it works (1) MUp supports a special language to perform data mashing, this language is called MU. MU is both a logic and functional language, it provides also procedural constructs. All predicates provided by MU can be grouped in functional sets. The main functional sets are: Source Operations: allow to retrieve web resources. Inspect Operations: allow to decompose data retrieved from Web. Model Operations: allow to create JSON models from raw data. Renderization Operations: allow to renderize JSON models. Monday, March 2, 2009 6
  • 7. How it works (2) MU functional sets: XPath JPath Get Post Type Source Operations Inspect Operations Context PContext Jsonize Apply Renderize Unify StackTrace Model Operations Context operations Renderization Operations Substring Regex if for Add Put Flow Control String Operations Remove Data operations - Type As<Type> + / * == < % Type Management OR != AND Math Operations Conditional / Logical Operations Monday, March 2, 2009 7
  • 8. A simple processing flow a b Get Post c Source() : Get('http://www.mysource.org/rss'); d Source Operations a Type Path b Entries() : Path('/rss/item/description', Source() ); c d Inspect Operations Jsonize Model() : Jsonize('{ entry : quot;_quot; }', Entries() ); [a,b,c,d] Model Operations a Renderize b GUI() : Renderize( Model() ); c d Renderization Operations Monday, March 2, 2009 8
  • 9. A complex processing flow a e b f Get Post Get Post c g d h Source Operations Source Operations a e b f Type Path Type Path c g Inspect Operations Inspect Operations d h Jsonize [ [a,b,c,d] , [e,f,g,h] ] Model Operations a e b f Renderize Renderization c g Operations d h Monday, March 2, 2009 9
  • 10. MUp Console (1) MUp provides a Web console that can be executed inside any browser supported by GWT (Firefox, Safari, IE). MUp Console provides a text area to launch commands and an operation’s history. Monday, March 2, 2009 10
  • 11. MUp Console (2) Console Tab Executed command Command result command input area Monday, March 2, 2009 11
  • 12. MUp Console: tools (1) Editable Inspector Panel Tree view JSON Inspector Editable Text view Monday, March 2, 2009 12
  • 13. MUp Console: tools (2) Inspector Panel Native predicates User defined predicates Context Inspector Predicate description panel Monday, March 2, 2009 13
  • 14. MUp Architecture (1) Console Tools Cast Processor Digester Parser GUI Manager MU Core Native JRE Native Impl GWT Native Impl Monday, March 2, 2009 14
  • 15. MUp Architecture (2) Console: the MU console. Tools: the tools included in the console. MU Core : provides core functionalities for the MUp framework. Parser: parser for MU language. GUI: GUI abstraction able to renderize JSON objects in widgets. Monday, March 2, 2009 15
  • 16. MUp Architecture (3) Processor: abstract processor able to interpret compiled MU operations. Cast Manager: provides support for type morphing. Digester: XML/HTML generic path digester. Native: abstraction layer of native implementation. JRE Native : implementation of Native layer in Java Runtime Environment. GWT Native : implementation of Native layer on GWT Javascript. Monday, March 2, 2009 16
  • 17. MU Language (1) MU is based on an hybrid programming paradigm based on functional, procedural and logic constructs. An example of procedural expression is: Procedure(a,b) : r1=Process(a), r2=Process(b), if( Gt(r1,r2), Process(r1), Process(r2) ); An example of functional expression is: Function(a,b) : sum( F1(a), F2(b) ); An example of logic expression is: Predicate(a,b) : P1(a) & P2(b) | P3(a,b); Monday, March 2, 2009 17
  • 18. MU Language (2) MU native types JSON counterpart BooleanValue boolean NumericValue integer / float StringValue string ListValue array MapValue object GraphValue object JSONValue object Monday, March 2, 2009 18
  • 19. MU Language (3) MU language types are polymorphic: every native type can be always casted to another native type. Casting among primitive types is managed by Cast Manager. Boolean Non Numeric primitive JSON String List Graph ! Under Development Map Monday, March 2, 2009 19
  • 20. MU Advanced Language (1) MU supports Erlang/Prolog language features like predicate overloading. Factorial(0) : 1; Factorial(n) : Mult( n , Factorial( Minus(n,1) ) ); Predicate overloading is based on unification: given a set of predicates with the same name, it will be invoked the first predicate in order of definition which signature unifies with given arguments. Unlike Erlang/Prolog, MU implements unification over JSON data structures. Monday, March 2, 2009 20
  • 21. MU Advanced Language (2) Unification samples: # Basic unification # P1(a, b, c) =::= (List(1,2,3)) ==> P1(a:=1,b:=2,c:=3) # List unification. # P1([a,b|c]) =::= (List(1,2,3,4,5)) ==> P1(a:=1,b:=2,c:=[3,4,5]) # Object unification. # P1( { “k1” : a, “k2” : b | o} ) =::= ({“k1” : 1 , “k2” : “2”, “k3” : “3”}) ==> P1(a:=1,b:=”2”,c:={ “k3” : “3” }) Monday, March 2, 2009 21
  • 22. MU Language Examples (1) # This is a comment. # PI() : 3.14; # Declaring a const. # Const() : quot;This string is const.quot;; # Functional programming. # TriangleArea(l1, l2) : Div( Mult(l1,l2), 2 ); MinorOf(a,b) : if( Lt(a,b), a, b ); # Iterative constructs. PrintRange(start, stop) : for( Range(start,stop,1), x, Print(x) ); Monday, March 2, 2009 22
  • 23. MU Language Examples (2) # Procedural programming. # P1(v1, v2) : v3=P2(v1, k1), v4=P3(v3,k2), P4(v4); P1(v1, v2); # Invoking a predicate. # v1=P1(v2, v3), P2(v1, v4); # Complex invocation. # # Predicate Overloading # OL([a,b,c] , v) : Print('overload1'); OL([a,b,c,d], v) : Print('overload2'); OL({quot;k1quot; : v1, quot;k2quot; : v2} , v) : Print('overload3'); OL({quot;k1quot; : v1, quot;k2quot; : v2, quot;k3quot; : v3} , v) : Print('overload4'); # Invocation # OL(List(1,2,3) , 4); # prints: overload1 # OL(List(1,2,3,4), 5); # prints: overload2 # OL(Map('k1',1,'k2',2) , 4); # prints: overload3 # OL(Map('k1',1,'k2',2,'k3',3), 5); # prints: overload4 # Monday, March 2, 2009 23
  • 24. MU Language Examples (3) # JSON Path integration # var = DoSomething(), var.p1.p2.p3[i]; # XPath integration # var = GetFeed(), var//title; ! Under Development Monday, March 2, 2009 24
  • 25. MU UI Model UIButton UILabel UIComponent UITextArea UIList UIPanel UIContainer UIWindow Monday, March 2, 2009 25
  • 26. GUI Induction (1) The GUI Induction is the ability of the language of automatically generate a GUI for a JSON data. In The Renderize() predicate provides the hidden processing flow shown on the right. JSON data To customize the GUI generation it is possible to use the couple Modelize() / Concretize() instead of the Renderize() Modelize() operation. JSON UI Apply() The Modelize() operation generates a JSON UI Model by Model applying a set of default transformations. Concretize() The JSON UI Model can be customized by using the Apply() operation. GUI native model The Concretize() operation transforms a JSON UI Model in a GUI Native Model . Out ! Under Development Renderize() Monday, March 2, 2009 26
  • 27. GUI Induction (2) Examples of GUI Inductions based on the unification are: # Change Background color. # ChangeBG( { “background” : bg | o } ) : Add(o, Map(“background”, “red”) ); # Change panel orientation if size exceed 10. # ChangePO( { o } ) : if( Gt( Size(o), 10 ) , Add(o, Map(“orientation”, “vertical”) ) ); ! Under Development Monday, March 2, 2009 27
  • 28. Validation scenarios Validation scenarios are applications of MUp on real and synthetic data meant to verify the applicability of all the implemented features. Monday, March 2, 2009 28
  • 29. Synthetic validation scenario: description “We have a Web service S1 returning a list of restaurants in a specified city, providing for each restaurant the street in which it is located. We've also a Web service S2 returning a list of hotels near a given street. We want to combine these sources to obtain a list of restaurants in a given city with a sublist of hotels near each restaurant.” Monday, March 2, 2009 29
  • 30. Synthetic validation scenario: formalization #01# S1(city) : PGet('http://findrestaurants.com/find?city=_', city); #02# RawRomeRestaurants() : S1('Rome'); #03# ListOfRomeRestaurants() : Path( 'html/body/table/tr', RawRomeRestaurants() ); #04# RestaurantName(row) : Path( 'td[0]' , row ); #05# RestaurantStreet(row) : Path( 'td[1]' , row ); #06# S2(city,street) : PGet('http://findhotels.com/find?city=_street=_', List(city, street) ); #07# HotelsInRomeAtStreet(street) : S2('Rome', street); #08# ListOfStreetHotels(street) : Path( 'html/body/table/tr' , HotelsInRomeAtStreet(street) ); #09# HotelName(row) : Path( 'td[0]', row ); #10# HotelStars(row) : Path( 'td[1]' , row ); #11# JsonHotel(row) : Jsonize( '{ hotel-name : quot;_quot;, hotel-stars : quot;_quot; }', List( HotelName(row), HotelStars(row) ) ); #12# HotelsInStreet(street) : for( ListOfStreetHotels(street), hotel, JsonHotel(hotel) ); #13# Restaurant(row) : Jsonize( '{ restaurant-name : quot;_quot;, restaurant-street : quot;_quot;, hotels : _ }',   List(RestaurantName(row), street=RestaurantStreet(row), HotelsInStreet(street)) ); #14# RomeRestaurants() : for( ListOfRomeRestaurants(), row, Restaurant(row) ); Monday, March 2, 2009 30
  • 31. Synthetic validation scenario: result [ { quot;restaurant-namequot; : quot;RN1Romequot;, quot;restaurant-streetquot; : quot;RS1Romequot;, quot;hotelsquot; : [ { quot;hotel-namequot; : quot;HN1RomeRS1Romequot;, quot;hotel-starsquot; : quot;SR1RomeRS1Romequot; }, { quot;hotel-namequot; : quot;HN2RomeRS1Romequot;, quot;hotel-starsquot; : quot;SR2RomeRS1Romequot; }, { quot;hotel-namequot; : quot;HN3RomeRS1Romequot;, quot;hotel-starsquot; : quot;SR3RomeRS1Romequot; } ] }, { quot;restaurant-namequot; : quot;RN2Romequot;, quot;restaurant-streetquot; : quot;RS2Romequot;, quot;hotelsquot; : [ { quot;hotel-namequot; : quot;HN1RomeRS2Romequot;, quot;hotel-starsquot; : quot;SR1RomeRS2Romequot; }, { quot;hotel-namequot; : quot;HN2RomeRS2Romequot;, quot;hotel-starsquot; : quot;SR2RomeRS2Romequot; }, { quot;hotel-namequot; : quot;HN3RomeRS2Romequot;, quot;hotel-starsquot; : quot;SR3RomeRS2Romequot; } ] }, { quot;restaurant-namequot; : quot;RN3Romequot;, quot;restaurant-streetquot; : quot;RS3Romequot;, quot;hotelsquot; : [ { quot;hotel-namequot; : quot;HN1RomeRS3Romequot;, quot;hotel-starsquot; : quot;SR1RomeRS3Romequot; }, { quot;hotel-namequot; : quot;HN2RomeRS3Romequot;, quot;hotel-starsquot; : quot;SR2RomeRS3Romequot; }, { quot;hotel-namequot; : quot;HN3RomeRS3Romequot;, quot;hotel-starsquot; : quot;SR3RomeRS3Romequot; } ] } ] Monday, March 2, 2009 31
  • 32. Real validation scenario: description “Given an RSS feed extract all title elements inside it and show a panel containing them.” Monday, March 2, 2009 32
  • 33. Real validation scenario: formalization #01# Feed() : PGet(quot;http://www.repubblica.it/rss/homepage/rss2.0.xmlquot;, List()); #02# Titles() : Path( 'title', Feed() ); #03# JsonTitle(t) : Jsonize('{ quot;titlequot; : %s }', List(t)); #04# JsonTitles() : for( Titles(), title, JsonTitle(title) ); #05# Renderize( JsonTitles() ); Monday, March 2, 2009 33
  • 34. Real validation scenario: result Monday, March 2, 2009 34
  • 35. Comparison with similar products Monday, March 2, 2009 35
  • 36. Results / Issues • The GWT profile raises problems when recompiling with performance flags. • GWT is not enough mature for the complexity of this project, in the following months resources will be invested on the JRE profile. Monday, March 2, 2009 36
  • 37. RoadMap (1) ( http://code.google.com/p/em-up/wiki/RoadMap ) Ongoing Tasks • Implement the GraphValue data type: 1. implement the core type. (2) DONE 2. implement the manipulation operations. (3) DONE 3. implement the triple syntax. (3) 4. add graph search and transformation operators. (3) • Add support for JSON storaging and querying. (4) • Empower the JSON Model syntax. (3) Monday, March 2, 2009 37
  • 38. RoadMap (2) Rewrite the MUp Console Shell with Gwt-EXT. (3) Complete the User Documentation. (3) Complete the build system. (2) Add command-line console. (3) Complete the XPath support (some operators are missing). Monday, March 2, 2009 38
  • 39. RoadMap (3) Complete the JSONPath support (some operators are missing). Add Regexp support for string manipulation. (2) TODOs reduction in code and documentation. (10) Add arithmetic expression support in language. (2) --- MILESTONE --- Monday, March 2, 2009 39
  • 40. Documentation & Code The MU documentation is hosted in http://code.google.com/p/em-up/ and can be found here: The MU source code will be released soon under the Apache License,Version 2.0 . Monday, March 2, 2009 40
  • 41. Articles “MU: an hybrid language for Web Mashups” Davide Palmisano & Michele Mostarda TODO: add Article URL ! Under Development Monday, March 2, 2009 41
  • 42. Credits Michele Mostarda (michele.mostarda) michele.mostarda michele.mostarda@gmail.com michele@asemantics.com http://www.asemantics.com Monday, March 2, 2009 42
  • 43. /* EOF */ Monday, March 2, 2009 43