Friday, December 31, 2010

Horizontal Format Data Mining with Extended Bitmaps


My colleague Kathiravelu Pradeeban and the team; Buddhika Alwis, Supun Malinga and I presented the following slides at the 2nd International Conference of Soft Computing and Pattern Recognition, France.

Paper abstract -
Analysing the data warehouses to foresee the patterns of the transactions often needs high computational power and memory space due to the huge set of past history of the data transactions. Apriori algorithm is a mostly learned and implemented algorithm that mines the data warehouses to find the associations. Frequent item set mining with vertical data format has been proposed as an improvement over the basic Apriori algorithm.
In this paper we are proposing an algorithm as an alternative to Apriori algorithm, which will use bitmap indices in conjunction with a horizontal format data set converted to a vertical format data structure to mine frequent itemsets leveraging efficiencies of bitmap based operations and vertical format data orientation.


Mooshabaya: Mashup Generator for XBaya


Last November, I and my team; Buddhika Alwis, Kathiravel Pradeeabn, Supun Malinga presented the following slides at the 8th International Workshop on Middleware for Grids, Clouds and e-Science - Middleware 2010, India.

Paper can be found in http://portal.acm.org/citation.cfm?id=1890807

Paper abstract -
Visual composition of workflows enables end user to visually depict the workflow as a graph of activities in a process. Tools that support visual composition translate those visual models to traditional workflow languages such as BPEL and execute them thus freeing the end user of the need of knowing workflow languages. Mashups on the other hand, provide a lightweight mechanism for ordinary user centric service composition and creation, hence considered to have an active role in the web 2.0 paradigm. In this paper, we extend a visual workflow composition tool to support mashups, thus providing a comprehensive tooling platform for mashup development backed up by workflow style modeling capabilities, while expanding the reach of the workflow domain into web 2.0 resources with the potential of the mashups. Furthermore, our work opens up a new possibility of converging the mashup domain and workflow domain, thus capturing beneficial aspects from each domain.


Saturday, December 25, 2010

Twinkle lights - Eiffel Tower


The Eiffel tower twinkles for few minutes on the hour beginning after dark. I was able to see it four times in different angles. I've heard about it before, but couldn't imagine something like that. I filmed it for few seconds but this HD clip has captured its charm very nicely. Just ignore background voices for a moment :).






Wednesday, December 22, 2010

Louvre Museum: Paris


Few days back I went to Louvre museum, Paris; which is the largest art museum and the most visited museum in the world with over 35,000 exhibits. If you take different routes at the entrance, you can dive into different civilizations like Egyptian antiquities, Near Eastern antiquities, Greek, Etruscan, and Roman masterpieces etc. It's really amazing how they collected that amount of masterpieces like Mona Lisa(La Joconde), Venus de Milo, The Wedding Feast at Cana etc., over several centuries.


At the entrance

I guess it would take at least a week to visit the whole museum. As we even didn't have a single complete day, we managed to visit the most famous exhibits.
My favorite exhibit was The Wedding Feast at Cana which is the largest painting I've ever seen. The artist was Veronese(also Paolo Caliari, 1528-1588) who crowded 130 figures into this almost 10 meters-high painting.

The Wedding Feast at Cana

There were other quite beautiful paintings as well. But the Mona Lisa is the Louvre's most popular attraction. Another place, I liked most was the Napoleon's Apartments.

Napoleon's Apartments

Monday, December 20, 2010

Château de Chantilly


Recently I went to Château de Chantilly, which has one of the finest collections of paintings in France after the Louvre. From outside and inside you can see, so many fine French architecture styles, statues etc. As well, most of the paintings have a story to tell themselves.




















Sunday, December 19, 2010

Heaviest snow to Paris since 1986


On 8th December, I thought it was normal to snow like this in the Paris region. But it was the heaviest snowfall to Paris region after 1986. It was shut airport and bus systems and even the Eiffel tower. I was at Université de Cergy-Pontoise. I skipped the lecture, went outside and observed how the green grass turned into a single blanket of snow. Truly awesome experience!























After two days sun started to shine again.





Thursday, December 2, 2010

Some XPath functions useful in BPEL


In BPEL programming, XPath is heavily used to manipulate XMLs. Here are some WS-BPEL specific XPath functions and common xpath functions that’ll be helpful in writing BPELs . Remember based on the BPEL run-time engine; functionalities of these functions might be changed.

There are some valuable BPEL run time engine related XPath functions, you need to know in XML manipulations.


bpel:getVaribleData(varName, partName, xpathStr) - This function is not defined in WS-BPEL-2.0 specification. But this works in WSO2-BPS and Apache-ODE. It can be used to extract a set of elements from a variable, using a XPath expression.

eg -
<bpel:copy>
    <bpel:from>
        <![CDATA[count(bpel:getVariableData(‘$Variable','$partName')/ns:return)]]>
    </bpel:from>
    <bpel:to variable="itemCount"></bpel:to>
</bpel:copy>

Remember to use ‘’ when passing varName and partName. And here “/ns:return” is the xpath expression.


bpel:getLinkStatus() - This is also not defined in WS-BPEL-2.0 specification. It evaluates and return a boolean whether a particular link is active/inactive.


bpel:getVariableProperty(string, string) - This is helpful in extracting properties in Variables.

eg - (From http://docs.oasis-open.org/wsbpel/2.0/OS/wsbpel-v2.0-OS.html)
<condition>
    bpel:getVariableProperty('stockResult','inventory:level') > 100
</condition>

Remember to use ‘’ when passing parameters.


bpel:doXSLTTransform() - perform XSLT transformations.

eg - (From http://docs.oasis-open.org/wsbpel/2.0/OS/wsbpel-v2.0-OS.html)
<copy>
    <from>
        bpel:doXslTransform("urn:stylesheets:A2B.xsl", $A)
    </from>
    <to variable="B"/>
</copy>


round(input) - used to get an integer closest to the $input. This is become important in converting numbers into integers.

eg - In arrays mostly need to use this operation to traverse.
<bpel:copy>
    <bpel:from>
        <![CDATA[$profileProcessorInput.payload/tns:profiles/tns:profile[round($itemIterator)]/]]>
    </bpel:from>
    <bpel:to variable="itemLine">
        <bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
            <![CDATA[@name]]></bpel:query>
    </bpel:to>
</bpel:copy>


string() - In WSO2 BPS and Apache ODE this method can be used to extract text content out-of elements rather using /text() .



string-length() - Name suggests what it does. But != operator seems not to work with the output from this function. So you can use > or < rather using != .


Avoid name-spaces in xpath manipulation - It becomes cumbersome sometime to concern on name-spaces when it’s not that much essential. We can use Regular expressions to bypass the name-space verification on XPath. eg -
<bpel:copy>
<bpel:from part="payload" variable="profileContext">
<bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
<![CDATA[tns:profiles/*[local-name() = 'Profile'][round($itemIterator)]/*[local-name() = 'club_code']]]>
</bpel:query>

</bpel:from>
<bpel:to part="parameters" variable="Request">
<bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
<![CDATA[ns2:BuildingNo]]>

</bpel:query>
</bpel:to>
</bpel:copy>


contains($regEx, $string) - use to match a $string with a particular $substring. Here you can use Reg-Ex as well.


count() - Returns the count of nodes. Here’s an example of it.

eg -
<bpel:copy>
    <bpel:from>
        <![CDATA[count(bpel:getVariableData('$VariableName','$partName')/ns:SubChildElementName)]]>
    </bpel:from>
    <bpel:to variable="itemCount"></bpel:to>
</bpel:copy>