Geeks With Blogs

News Ashraful Alam Joy

Create Your Badge

Ashraful Alam is a Software Architect, who has 8 years of professional experience in Software Development industry. This Bangladeshi national is involved with project management and development of several US based software projects from his country. Already he has managed and developed several software projects, which are being used by several users of different countries, such as USA, Canada, Australia, and Bangladesh. While developing and managing a team, he contains and maintains a set of well defined engineering practices developed by him and other online developer communities.

Due to his willingness to give effort to improve and share better software development practices, Ashraf has been awarded as “Most Valuable Professional” (MVP) in ASP.NET category by Microsoft since year 2007 multiple times, which is a rare honor and prestigious reorganization among the developers around the world.

Check his portfolio to know more about him and his works.

.NETTER Characters... Every part of your life is best, if you can know yourself and thus create your life like an artist!

One of the basic consideration in web 2.0 concept is 'tagging' where any contents in the web can be associated with one or more tags, which can be shared among social community network. It lets others to find any content according to their chosen tag. Tag is nothing, but a way to categorize any web content. In real world, any visitor can quickly reach to a content thru it's associated tags, can thus get a basic idea about whether s/he will consider it to read/download etc. "Search" is older concept to help users to find any desired content, but "Tags" provides users to have an open track to find his own choice which has not been discovered yet!

I am really a tag lover. All of the Web 2.0 sites I am using, I am associating web contents with tags, which helps me to properly organize and structure those. Well, the real world is not bed of roses, so I started to get confused, as soon as my contents get larger. For example, is one of my very favorite site, which is a award winning web 2.0 site, dedicated for bookmarking urls. Using browser buttons of, I can quickly bookmark any web page that I was just visiting into my account, with the URL, title, comment, as well as associate appropriate tags, which I have been defined previously in my account settings. From the beginning it really helped me to keep track of my web studies. So life got easier, it's matter of few seconds for me to find any site of a specific category, that I have been visited and found useful.

The Real World

Unfortunately, I am really a nerd reader :P So with in few months, number of my bookmarks crossed couple of hundreds. It turns to a bit problem to me, to find any URL through tag/category, as some of tags already have over hundreds of urls. More over, there are few tags, with similar or nearer meaning (for example: software-development, .NET, C#), and while searching, I didn't get sure that, in which tag, I have been associated the content, that I am just searching for!

So I started to feel that, I need to organize my tags in more intelligent way, so that for a long term period, all of my contents can be grouped together and found in much quicker time.

In the coming days, tags are getting more important place over the web, so we need to have some good concept and convention while tagging! Well, the popularity of tags lies due to its simplicity, so it will be used by the web users in very quick but un-structured way in the maximum time. That's great tho, you are free to choose your tags, but for important contents, "Intelligent" tags will really save lots of our time and effort!

Intelligent? Huh! Tags will be intelligent?

Well, tags can't be intelligent, it's true, but the fact is it can be designed and considered in intelligent way!

Object Oriented Tagging

Object Oriented concept has achieved a great deal of popularity among software developers in previous 2 decades. According to this concept, all real world entities, regarding a given context (or software requirements) are classified into separate areas and utilize each other as needed. One of the basic principal of Object Oriented technology is "Inheritance", where new classes can be inherited from super or base classes, that includes properties of it's parent class. This design idea facilitates the management of software architecture and codes very effectively, specially for large scale software. 

When we have large number of contents (for example: URL, image etc), the associated tags can utilized in according to the concept of "Inheritance" to manage all contents properly. Here tags should be structured like the "Tree" data structure (root node, parent node, child node, siblings node etc)! For example, we have a base tag "Software Development", clicking on which will result all the contents related to software development. Now consider another tag, named ".NET", which is a sub tag or sub category of "Software Development" tag. Clicking on the tag ".NET" should list the result related to ".NET", which will include a sub portion of "Software Development" tag. Clicking on the tag "Software Development" will considers the contents all the sub tags of "Software Development", including ".NET" tag contents.

It would be great, if users can define the tree structure of the "Tag Inheritance" tree structure through the web application and thus create the life easy while putting the tags for a content, as well as searching contents through tags will work in much meaningful and faster way. If we have a built-in support for defining tag tree structure, it would take only one "Tag" defining a content in .NET, along with relating the content with "Software Development" tag category. Otherwise both tags "Software Development" and ".NET" needs to be considered with independent (and meaningless) relation among these two tags.

A Sample Structure

To understand the problem in deeper sense, lets go with more complicated example. Consider the following tag structure.

                    {Software Development}                                       {Microsoft}

 ________________|      |__________________________      ____________|          |_________

|                                                                       |     |                                           |     

{...}                                                                  {.NET}                                                    {...}

                                                                         |    |

                                   __________________________     ____________________

                                   |                                                                         |

                              {ASP.NET}                                                             {C#}


In the given example, all ASP.NET and C# contents are in sub tag of .NET. But an ASP.NET content might not related to C#, can be VB.NET or other stuffs and vice versa. So they lies in the same layer. In this context, considering ".NET" tag, it includes all tags related to "ASP.NET" and "C#" tag, but "ASP.NET" tag contents don't include "C#" tag contents.

Also, .NET can be a sub category of "Software Development", as this is a software development framework. But "Software Development" tag might have other issues, which are not related to .NET. As well as, .NET can be a sub category of "Microsoft", as this is a development framework by Microsoft. But "Microsoft" tag might have other issues, which are not related to .NET. So considering the tag "Software Development" or "Microsoft" guarantees to get the content of ALL of their sub category contents (.NET, ASP.NET, C#) but not vice versa.


Besides the built-in support in web application, we can solve this issues by maintaining our own policy while define and implement our tags. After some brain storming, I found two ways, where this object oriented approach can be fitted!

1. Root level

While bookmarking, consider the lowest level, and DON'T consider the corresponding upper parents. For example, "ASP.NET". We will define the tree structure by creating a special bookmark for each parent node. In this case, in the web application, we need to have a support to merge the contents of tags, which can be used by any other users in later time though a labeled name for that merged list. For example: For the merged list of "Microsoft", we can define it as follows:

Microsoft = ".NET" + "ASP.NET" + "C#" + {unclassifield "Microsoft" list}

2. Node level

While bookmarking any contents, starting from the lowest level, all parents corresponding to that level should be marked.

For example: a content related to "ASP.NET" should be bookmarked as follows:

ASP.NET content = "ASP.NET" + ".NET" + "Microsoft" + "Software Development"

Technically this is the most easiest way, as we don't need any type of support in the web application. All we need, is just to have a flat set of tags, which relations will be maintained while tagging. The problem is, the user always needs to remind the hierarchy of tags. As this is relatively tough for the users to remind the hierarchy, this idea can be used only in special or important content, where we don't have any tree or merge support in the web application. 

kick it on Posted on Saturday, December 9, 2006 12:22 AM My Life , Architecture , Favor[IT]e | Back to top

Comments on this post: Object Oriented Tagging : Adding Power to Web 2.0 Tags!

# Object Oriented Tagging : Adding Power to Web 2.0 Tags!
Requesting Gravatar...
You've been kicked (a good thing) - Trackback from
Left by on Dec 08, 2006 2:47 PM

# Tagging 也要 OO(Object Oriented)
Requesting Gravatar...
?????? OO, Ruby ????? DB ???? OO, ????, Web 2.0 ????? - Tag, ???? OO ?~ XD????: Object Oriented Tagging : Adding Power to Web 2.0 Tags!???????, ??????? Group,...
Left by Tsung's Blog on Dec 10, 2006 3:18 PM

Your comment:
 (will show your gravatar)

Copyright © Ashraf Alam | Powered by: