Rich end-user data views

A system and/or methodology that enables personalization as a platform service for applications via a rich data view. More particularly, the subject invention provides for a rich data view to be rendered to an end-user whereas management of the data can be effected (e.g., personalized) thereafter. In other words, the invention enables a user to establish and access personalized mechanisms via a rich data view. The personalized mechanisms are based upon rule-based logic with respect to application data types.

TECHNICAL FIELD

This invention is related to software that facilitates rich end-user data views, and more specifically, to an end-user programmable rules abstraction platform that facilitates incorporation of end user or developer defined rule-based logic into rich data views and controls provided by applications.

BACKGROUND OF THE INVENTION

Computers and computing have always divided the world of users into two classes: the knowledgeable “high priests” who know how to use computers in complex ways, to shape programs and enable behaviors that are valuable and rich; and the novice users, who are at their mercy, denied easy or cheap access to knowledge or information or the education to make computers serve their needs well. However, major breakthroughs in computing have occurred when technology has broken down some of these barriers to access.

In the world of the mainframe, computers were too expensive for all but the largest businesses to afford. The advent of mini-computers, and then personal computers (PCs), broke down the cost barrier and made computers available to small businesses and individuals.

In the 1980's, programmers struggled to build graphical user interface (GUI) applications, and without rich and consistent GUIs, were unable to build valuable applications for PC users. The Visual Basic revolution and the use of controls and event-based GUI construction enabled a whole army of application developers who could easily build rich applications. This also established a virtuous cycle with many more end-users who could exploit these applications.

In the 1990's, end-users struggled to overcome a lack of access to information. The growth of the Internet and the web transformed this space, making almost all valuable information accessible to anyone with a browser. However, there are still significant barriers to overcome.

Computing is not personal. There is very little about a PC that is truly “personal”. The data on the local disk is personal. However, the behavior of the machine (what it does on behalf of the user) is close to identical across millions of users. Despite owning an amazingly powerful general purpose computer, the average user treats it as a static tool, useful as a communication end-point, useful as a search entry-point, useful to execute some canned mass-market applications, but otherwise incapable of any “personal computing” in the true sense of the word. The personalization capabilities available in current applications just scratch the surface of what is possible and desirable.

Computing is manual. Consider the daily routine of most typical computer end-users. The PC gathers information, reacts to communications, makes decisions and acts upon them-initiates or responds to communications, organizes information, buys and sells goods, travel, etc. Computers have improved communication between people, and have improved access to information. However, PCs have done little to relieve the end-user's responsibility to make decisions and act upon them at the right time. In the business world, there are decision support systems for major organizational decisions. Still software does not help the average PC user in the many everyday, yet important and personal decisions.

Computing is not contextual. Computer software typically provides optional settings that are rather static and unrelated to the actual context of the user (e.g., “Why should I have the same set of messaging buddies at work and at home?”). Thus, users are still in the “pre-industrial age” of software by being increasingly trapped in the tyranny of manual information processing-spending hours every day sifting, sorting, searching, and reacting to e-mail, documents and other personal data.

End-user software should be personalized, aware of the needs and preferences of the end-user, acting specifically in a manner guided by those needs and by the user context. Further, computer systems and software should provide every end-user with a personal executive assistant who works 24 hours a day gathering and sifting information of interest to the end-user, and reacting to that information.

The most valuable class of end-user computing activity deals with information flows and search, such as ensuring the end-user sees relevant information (e.g., “Tell me if there is a school closing due to bad weather.”), enhancing person-to-person communication with personalized behavior (e.g., “If I'm out of the office when my wife calls, let her know when I'll be back.”), ensuring important information is not lost (e.g., “If there's an urgent e-mail, make sure it gets forwarded to me on my mobile device.”), and automating the management of information (e.g., “As new photographs arrive, place them in the right folders and shares based on their timestamp, GPS location, and any relevant calendar entries.”). Moreover, interaction with the computer should provide end-user programmable enhancements in a user-friendly manner. For example, end-user programmed customizations should be available at a platform level whereby the customizations can be accessed in any application. Thus, a user experience can be more customized to specific end-user preferences and the like.

The way to accomplish this is to provide mechanisms by which an end-user can “program” (e.g., customize) the behavior of the computer. However, traditional programming languages are clearly not the answer, in that the end-user is not a trained developer. What is needed is an improved mechanism that allows an end-user to personalize applications. To this end, the file store explorer and/or other application can provide a user with rich data views.

SUMMARY OF THE INVENTION

The subject invention disclosed and claimed herein, in one aspect thereof, comprises a system and/or methodology that enables personalization as a platform service for applications to enable rich data views defined or extended by end users and other developers. More particularly, the subject invention provides for a rich data view can be rendered to an end-user whereas management of the data can be effected (e.g., personalized) thereafter. In other words, the invention enables a user to establish and access personalized mechanisms within a rich data view. In accordance with the invention, an application can get richer, more consistent and extensible by allowing end users and developers to provide rule-based logic within the context of an application.

The personalized mechanisms generated via the rich data view can be applied to data types in countless disparate applications. It is be appreciated that many aspects of data management are the same or similar across varying applications. For example, aspects including, but not limited to, search criterion, data set definition, property editing and property annotation mechanisms share commonality that can be streamlined across countless applications.

In another aspect, this invention is directed to an end-user programming platform that can provide interoperable services and structures for data to assist in addressing end-user issues and/or desires. For example, aspects of the invention are directed to mechanisms for organizing and locating information. Other aspects are directed toward distinguishing relevant information to assist in prevention of information overload thus making the management of a vast amount of data manageable. Still other aspects are directed to automating repetitive and time-consuming tasks with respect to data. It is a novel feature of the invention to enable these and other data management/manipulation to be end-user programmed and/or generated to provide a rich data view.

The invention can push information identified by the end-user into a platform whereby the end-user can generate programs with respect to the information thus permitting access to these programs within rich data views of the disparate applications. In this manner, shared end-user applications (e.g., programs) associated to the platform can enable a level of application interoperability that is not available in conventional platforms. By way of example, if a view is defined by an end user (e.g., with additional personalized definitions of columns also provided by the end user) this “view” of the data can be shared and exposed within the context of an application that is different from the original application employed while defining the view.

In another aspect of the invention, a learning component can be provided that facilitates the application learning end-user behavior, and captures the behavior in the form of rules. Accordingly, customization components can be automatically generated through inference and/or prediction of a user preference/action.

DETAILED DESCRIPTION OF THE INVENTION

The subject invention is directed to a system and/or methodology that enables personalization as a platform service for applications whereby a rich data view can be rendered to an end-user. In other words, the invention enables a user to establish and access personalized mechanisms via the application UIs which use of the rules platform to produce rich data views. These mechanisms can be applied to data types in countless disparate applications. It will be appreciated that many aspects of data management are the same or similar across varying applications. For example, aspects including, but not limited to, search criterion, data set definition, property editing and property annotation mechanisms share commonality that can be streamlined and shared across applications. The personalized mechanisms can be active or automated logic mechanisms where the logic can be used to compute relationships between objects based on links or common value relationships.

This invention is directed to an end-user programming platform that can provide services and structure for data to assist in addressing end-user issues. For example, aspects of the invention are directed to mechanisms for organizing and locating information. Other aspects are directed toward distinguishing relevant information to assist in prevention of information overload thus making the management of a vast amount of data manageable. Still other aspects are directed to automating repetitive and time-consuming tasks with respect to data. These and other aspects will be discussed in greater detail below.

To accomplish the foregoing, the invention can push information identified by the end-user into a platform whereby the end-user can generate programs with respect to the information thus permitting access to these programs via rich data views of the disparate applications. In this manner, shared end-user applications (e.g., programs) associated to the platform can enable a level of application interoperability that is not available in conventional platforms.

Referring initially toFIG. 1, a system100that enables a level of application interoperability of an aspect of the invention is shown. Generally, system100can include an integration component102, a customization component104and a rich data view component106. As described supra, the integration component102facilitates exposing the customization component104to the rich data view component106. As will be described in greater detail below, the integration component102can facilitate exposing the end-user programming (e.g., customization component104) via various disparate applications (not shown). In other words, the integration component104can facilitate enabling an end-user customization platform whereby customization component104can be integrated into disparate views (e.g., rich data view component106).

The customization component104enables a user to program a rules component108that interacts with a data component110in a defined manner. It will be appreciated that a rule can represent an item, an end-user datum or a declarative function. More particularly, a rule can effect management of data based upon type. By way of example, a rule can manipulate data in the following manner: ON input of type IF condition THEN results.

In this example, when data of a particular type is received, the end-user can program a rule to perform an action if a particular condition is met. For example, if an email is received from a particular person, a rule can be programmed to automatically change the color of the text of the email thus, enhancing the rendering of this correspondence. The invention builds upon the rules infrastructure in that it enables a platform whereby rules can be shared between applications and rendered via the rich data view component106.

Every rule can have a signature defining input and resultant types of data. The input can be a schematized file store item. The condition can be a Boolean expression. Therefore, the allowed base conditions can be driven by the schema. It will be understood that a rich set of conditions can be permitted. A more detailed discussion of the rules architecture is provided infra as well as in the aforementioned Related Applications that are incorporated by reference herein.

The Related Applications identified above and incorporated herein essentially define the infrastructure elements related to rules based end-user programming. This invention is directed to a novel platform that enables disparate applications to consistently make these end-user programmed elements (e.g., rules) available via integration component102. In other words, in accordance with this invention, a particular end-user programmed element can be used or reused amongst a variety of applications without the burden of programming or re-defining the element. In accordance with aspects, applications can facilitate defining rules. Effectively, the subject invention can be thought of as a visual programming aid for end users whereby, an end user can define sets, edit properties, generate tasks, etc., that can be employed within disparate applications (e.g., via a rich data view of an application). For example, pull-down menus, click/drag operations or the like can be used to facilitate the end-user to accomplish the foregoing.

Basically the infrastructure of the integration component102can enable, at runtime, the creation of a rich data view that includes end-user defined properties (e.g., customization component104) that extend functionality available for a particular data type. As will be appreciated, this extended functionality can include end-user and third-party developer defined rules-based customizations that enhance the functionality provided by the application developer. For example, when employing a standard file store explorer, the user can be presented with additional customized options that enable sorting, manipulating, editing, etc.

Conventionally, as previously stated, these options were hand-coded by a developer. Accordingly, the end-user did not have the ability to modify the functionality. However, this invention provides the mechanisms to enable end-user programming and functionality to be integrated into applications via a common platform (e.g., file store).

The following examples and scenarios are provided to add context to the invention. It is to be appreciated that these examples and scenarios are not intended to limit the scope and/or functionality of the novel interoperability of the invention. Aspects of the following examples and scenarios are directed to the incorporation of end-user programming into a rich data view associated with a file store explorer application. It is to be understood that this file store explorer application aspect is not intended to limit the invention in any way. It will be appreciated that the platform functionality described herein can be applied to countless varieties of applications and corresponding rich data views.

Rating Data Properties

By way of example, suppose a store explorer can display image data files. Accordingly, the file store explorer can identify the types of data files associated with photos. With this invention, the file store explorer (e.g., via integration component102) can thereafter identify applicable end-user data and processes associated with the data types. Although a disclosed aspect is directed to a file store explorer application, it is to be appreciated that the end-user customization and integration functionality can be employed in accordance with any application where the end-user functionality is applicable and/or desired. By way of further example, assume a user applies a star-rating of the photos within the file store explorer. This star-rating scheme can be employed and integrated into a photo editor application whereby a user can access these predefined ratings via a rich data view or UI browsing mechanism.

FIG. 2illustrates exemplary aspects of rich data views that depict the rating of data properties. In particular, three disparate views are shown, a list view202, a tiles view204and a large thumbnails view206. As illustrated, it will be appreciated that each rich data view shown can employ a rating property of data to construct a dataset prior to rendering. As described, this end-user rating (e.g., star rating) mechanism can be maintained at an end-user programming (EUP) platform level whereby the rule-based mechanisms can be universally applied to any rich data view desired.

Continuing with the file store explorer example, photos can be manually or automatically star-rated in accordance with an end-user preference. In one aspect, a user can rate the photos manually. In another aspect, the photos can be rated based upon pre-defined end-user criteria (e.g., rule) associated with the metadata of the photo. It will be appreciated that an integral component to the rich data aspects of the invention is a consistent base type for an item in the file store. Accordingly, types can be derived from the consistent base type. Therefore, the application, via integration component102, can associate properties to the derived types and can also associate end-user defined types and properties with the base type.

In accordance with the invention, a user can program an application to render the disparate view components illustrated inFIG. 2in any desired order. Additionally, the user can control association of the three exemplary views with a particular type (e.g., photos). In other words, in the file store explorer example, when a user selects to view image files, the three exemplary views ofFIG. 2can be made available and rendered.

In the past, only information that the developer knew about could be coded. With this invention, end-user criteria (e.g., star-ratings) and preferences can be coded, incorporated into an application and rendered in a rich data view. The infrastructure of the subject invention provides extensibility and reflection that enables looking at the designer's (type designer, independent software vendor (ISV), end-user, etc.) associations to a particular type. To be able to employ the associations, the invention can provides a framework (e.g., shell) that enables rendering this information to a user within an application.

Datasets

In another aspect, customized data sets can be defined. For example, a user can define a query that identifies a particular defined subset of data. In one aspect, a user can define “my contacts” or “my personal contacts.” In accordance therewith, disparate applications can take advantage of and employ these defined criteria. As described previously, the rules infrastructure can provide these definitions and, through reflection, the subject invention can enable an application to access these defined mechanisms. The application can employ these mechanisms accordingly by populating the application pane (e.g., rich data view) with the end-user data in addition to the type designer or base type data. As described supra, the subject invention can provide for capability of a standardized framework, standardized extensibility for end-users, standardized mechanism that determines the intent of end-users around data, and a mechanism that gives programming control to the end-user.

In another example, actions and/or tasks can be programmed by an end-user and associated with a particular type and/or dataset. Continuing with the example of viewing image data files by employing a file store explorer, a task such as red eye reduction can be automatically presented when viewing file types associated with photos. A task button can be added to the file store explorer that effects the action of reducing red eye effects on the photos.

As stated previously, a novel aspect of the invention is to associate a particular end-user defined mechanism (e.g., rule, customization component104) to a particular file type. Additionally, it is a novel aspect of the invention to enable extensibility of these mechanisms whereby, the end-user mechanisms can be employed at a platform level and incorporated into disparate applications without the need to code or re-code. These mechanisms can be incorporated into a rich data view within the application.

Different Views

In accordance with the specialized end-user mechanisms, file store explorer views can be employed that enhance the ability to organize and/or manage data. In one aspect, a timeline-type data visualization mechanism can allow a user to inspect a timeline in order to locate documents. It is to be understood that the end-user can specify any data property (e.g., date, type, . . . ) whereby the rich data view can dynamically render data in accordance with the selection.

In accordance with a timeline-type view, a user can inspect a timeline and visualize a number of documents in a particular time period. It is to be appreciated that the population of the view can be dynamically based upon end-user defined mechanisms (e.g., rule). With this specialized view, an assumption can be made that the document being searched might be located in that particular time period.

Referring back to the file store explorer example, the EUP platform of the subject invention provides several novel services to the shell (e.g., rich data view) and other applications. As previously described, these novel services can include a mechanism for determining user-visible types and the user-visible properties for those types (while addressing the extensibility of these types by ISVs and end-users). The subject invention can also facilitate providing a mechanism for defining and persisting queries whether navigational (created through stacking and filtering) or explicit (using a query builder application). As well, the invention can facilitate exposing and extending (by ISVs and end-users) active behaviors (e.g., tasks) associated with file store types.

It is to be appreciated that countless rich data view examples exist however, it is to be understood that the novel EUP platform integration of the invention can be employed with any of the countless examples that exist. In accordance with the invention, rules can be used to store and relate relationships that are displayed in a particular view. These relationships can be described in the rules algebra however, use of relationships (e.g., link based or CVR (common value relationship)) based to control views and defined by end users is particularly powerful. Essentially, the invention can enable the end user to define relationships that the original type authors or application authors had not imagined.

FIG. 3illustrates an exemplary UI that facilitates the aforementioned novel features using an EUP layer in accordance with a disclosed aspect. With respect to user visible types and properties, the UI300ofFIG. 3can reflect over properties302from out-of-the-box (OOTB) properties, ISVs (e.g., new and extended), and end-user defined properties. More particularly, in this example, property columns can be rendered at304, property column picker at306, and property tree at308.

Turning now to the query definition elements ofFIG. 3, the breadcrumb bar310can reflect over filters that apply from OOTB, ISVs and end-users. At312, the system can reflect over properties from OOTB, ISVs and end-users. These properties can be shown as a filter on property column values. Autolists that represent queries for items and can constrain the set of relevant types can be illustrated at314. A query builder that reflects over properties, operators and filters from OOTB, ISVs and end-users can be deployed at316.

Active behaviors can include tasks and item contextual menus. More particularly, tasks that reflect over actions from OOTB, ISVs and end-users can be placed at318. The item contextual menus at320can reflect over actions from OOTB, ISVs and end-users.

User Visible Types and Properties

Referring now to a more detailed discussion of user visible types and properties, as described supra and with reference toFIG. 4, end-users can define queries atop user visible item types and their properties. To determine the set of properties visible to end-users and for which types, applications can query the set of property bindings in the file store. The set of property bindings includes (and can be divided by) properties defined OOTB, ISVs, and end-users themselves. Regardless of the source of a property binding, all can appear in the manager shell where end-users can stack and filter over them.

Property bindings can serve the purpose of simplifying file store schema for end-users both by excluding file store properties that end-users do not need to see and also by flattening schema hierarchy in places where it may be too complex for end-users to comprehend (e.g., consider “Email from” for example). Property bindings (like other binding types) are localizable and associated directly with file store schema types.

Developers can declare and manage property bindings along with the file store schema. At install time, the declarations are compiled into binding items that live in the file store metadata catalog. Likewise, ISVs can define property bindings for new schema and add property bindings to existing schema using extensions.

FIG. 4illustrates the locations and types of binding items in the file store available to file store explorers and other applications. As well,FIG. 4illustrates that the shell and other applications (e.g., ISV applications) include user visible properties that can originate from OOTB, be defined by ISVs, and defined by end-users.

User Defined Properties

User-defined properties can allow end-users to personalize how they annotate and view file store items. The EUP platform can enable end-users to define two types of properties: static and computed. Static properties can be defined as property bindings and associated with a specific file store type. Values of static properties can be stored and associated to a given item. End-users can automatically annotate data using computed properties defined as rules using a query building user interface.

As shown inFIG. 5, in one aspect, a shell can take advantage of end-user defined properties in a number of locations: the Property Pane502, Property Tree504, and Column picker506. It is to be understood that these locations (502,504,506) can represent file store explorer touchpoints for end-user defined properties. The property pane502can reflect on properties for selected item type(s). The property tree504can reflect item properties to assign metadata and navigate within properties. With respect to the property columns506, as illustrated, this location can include end-user defined properties.

Autolists, Property Bindings and Rich Application Views (RAV)

Shell explorers can build directly on autolists and property bindings to provide a consistent and extensible user experience.FIG. 6illustrates the relationship of property bindings, autolists, and the RAV tables. This diagram shown inFIG. 6illustrates how a view with a subset of the data in the store is rendered within an item/data/file explorer pane. RAVs are an efficient view mechanism that allow paging, cursoring, grouping and sorting of result data. In more detail, the set of columns602(e.g., properties) available for stacking/filtering are gathered through the reflection application program interfaces (APIs) fromFIG. 4over OOTB, ISV and end-user property bindings. The set of items rendered to the user can be persisted in an autolist604along with the view definition(s). It will be appreciated that the view definition represents an ordered set of references to binding items.

Filters stored in an autolist (or elsewhere) refer to binding items. In one aspect, filters do not store the definition of the binding. In operation, a RAV table606is created and populated with the set of items matching the query and the properties that are computed from a lookup of the binding definition for each column. Accordingly, the shell list view is bound to the RAV as illustrated.

Query Definition

As described supra, a query can be constructed through implicit or explicit techniques. Essentially, navigation can refer to an implicit method for end-users to build queries while a query builder can provide an explicit means of doing the same.FIG. 7illustrates common elements for implicit and explicit query building. More particularly,FIG. 7illustrates an exemplary rendering of elements within an application in accordance with the invention. Both methods can utilize the same objects in memory and when persisted. As users stack and filter in file store explorers, autolists and filters can be constructed in memory. As illustrated at702, end-users can save the view at any given time (as a file store autolist item) and return to as desired. Since shell navigation is built on property bindings, filters, and autolists, end-users and ISVs can benefit from extensibility, customization, and composition/reuse.

While stacking and filtering can serve the purposes of reducing the set of items in a view based on simple equality clauses (e.g., where Author is “Bob”), a query builder804can allow end-users to expand the set of items in the view, express more complex conditions (e.g., ranges), and use composition to take advantage of existing sets (e.g., where Author is one of “My co-workers”).

While the query builder704can be employed by more advanced users, both it and the file store explorer can function over the same, user-editable autolist objects. Additionally, autolist items (essentially simple end-user programs) can be synchronized and shared along with other file store items.

Turning now toFIG. 8, active behaviors in the EUP platform can include actions (OOTB, ISV, and end-user defined), batches, and agents. While actions can essentially be the tasks and right-click menus in the shell today, actions in the EUP platform can be specifically designed for personalization, composability, and automation. End-users can create new actions by adding conditional filters or naming an ordered series of actions to run in a sequence. Associating actions with a set creates a batch, an action bound to a specific set of items that users need only invoke. Associating actions with an event and a set of items creates an agent, an automated set of logic that runs over the set of items when the given event occurs. In any case, it is to be appreciated the active behavior can be based upon an end-user defined rules infrastructure. It is to be appreciated and understood that active and automated use of rules is described in more detail in the above-identified Related Applications, which are incorporated herein by reference.

The EUP platform of the invention can support at least three types of actions on file store types. The first allows schema developers to define logic directly available from the type. The second allows developers to define code outside of the file store that extends what end-users can do with file store items (e.g., “Remove Red Eye” for photos). The third type of action allows either developers or end-users to take advantage of file store metadata by automating property settings on file store items. For end-users, automatic property setting is one key to addressing the information overload problems that can come from storage at scale. As an example, consider the value of email application rules used to set colors, flags, and alerts for mail from important contacts. The EU platform of the subject invention can extend these application specific scenarios into an interoperable platform whereby, an end-user can create, access and employ such rules (e.g., customizations) from disparate applications (e.g., via rich data view). A novel feature of the invention is that actions and automations can appear within an application UI to allow customization and personalization of the UI.

Of the three types of actions identified above, the set exposed through action bindings can be available everywhere an application reflects over what actions apply to a given type. ISVs can extend this set by providing new action bindings, and (as with user defined properties) end-users can extend the set of actions available by composing new actions with rules.

Referring now toFIG. 9, an architectural diagram of a system900that facilitates integrating custom end-user programming into an application is shown. More particularly,FIG. 9demonstrates that multiple customizations and resulting rich views are possible in accordance with an aspect of the invention. Generally, the system900can include the integration component102, the customization component104and the rich data view component(s)106. The integration component102can facilitate access to the customization component104from 1 to M rich data views, where M is an integer. As illustrated, it is to be appreciated that 1 to M rich data views can be referred to collectively or individually as rich data views106.

The customization component104can include 1 to N custom programming components, where N is an integer. Custom programming components 1 to N can be referred to collectively or individually as custom programming components902. In one aspect, the integration component102can include an analyzer component904and a customization selection component906. The analyzer component904can analyze characteristics (e.g., type, function) to determine appropriate custom programming components902to render. Once identified, the customization selection component906can effect incorporating the custom programming component902into the rich data view component106.

With reference now toFIG. 10, an aspect in accordance with the file store explorer described supra is shown. More particularly, the system1000can include three (or more) custom programming components1002, e.g., a dynamic set component, a property definition component and an action component. Each of these components can have the functionality described earlier. In operation, an end-user can configure the custom programming components1002. Accordingly, each custom programming component can employ the rules component108in relation to the data component110as desired.

At runtime, in accordance with the file store explorer application, the integration component102can analyze the type(s) of the instant data and thereby employ the customization selection component1006to select the appropriate custom programming components1002. As described above, it will be appreciated that this determination can be made based on type information obtained from the application data.

Referring now toFIG. 11, there is illustrated a system1100that employs a learning component1102in accordance with the subject invention. More particular, the system1100includes the learning component1102integral to the integration component102that facilitates the exposing a rich data view in an application to an end-user.

The subject invention can employ various artificial intelligence based schemes (e.g., via learning component1102) for carrying out various aspects of the subject invention. For example, a process for determining the selection of UI elements to be presented based on confidence or classification to provide the best elements for the users consideration can be facilitated via an automatic classifier system and process. A classifier is a function that maps an input attribute vector, x=(x1, x2, x3, x4, xn), to a confidence that the input belongs to a class, that is, f(x)=confidence(class). Such classification can employ a probabilistic and/or statistical-based analysis (e.g., factoring into the analysis utilities and costs) to prognose or infer an action that a user desires to be automatically performed.

As will be readily appreciated from the subject specification, the subject invention can employ classifiers that are explicitly trained (e.g., via a generic training data) as well as implicitly trained (e.g., via observing user behavior, receiving extrinsic information). For example, SVMs are configured via a learning or training phase within a classifier constructor and feature selection module. Thus, the classifier(s) can be used to automatically perform a number of functions, including but not limited to determining the selection of UI elements to be presented based on confidence or classification to provide the best elements for the users' consideration

With reference again toFIG. 12, the exemplary environment1200for implementing various aspects of the invention includes a computer1202, the computer1202including a processing unit1204, a system memory1206and a system bus1208. The system bus1208couples system components including, but not limited to, the system memory1206to the processing unit1204. The processing unit1204can be any of various commercially available processors. Dual microprocessors and other multi-processor architectures may also be employed as the processing unit1204.

The system bus1208can be any of several types of bus structure that may further interconnect to a memory bus (with or without a memory controller), a peripheral bus, and a local bus using any of a variety of commercially available bus architectures. The system memory1206includes read-only memory (ROM)1210and random access memory (RAM)1212. A basic input/output system (BIOS) is stored in a non-volatile memory1210such as ROM, EPROM, EEPROM, which BIOS contains the basic routines that help to transfer information between elements within the computer1202, such as during start-up. The RAM1212can also include a high-speed RAM such as static RAM for caching data.

The computer1202further includes an internal hard disk drive (HDD)1214(e.g., EIDE, SATA), which internal hard disk drive1214may also be configured for external use in a suitable chassis (not shown), a magnetic floppy disk drive (FDD)1216, (e.g., to read from or write to a removable diskette1218) and an optical disk drive1220, (e.g., reading a CD-ROM disk1222or, to read from or write to other high capacity optical media such as the DVD). The hard disk drive1214, magnetic disk drive1216and optical disk drive1220can be connected to the system bus1208by a hard disk drive interface1224, a magnetic disk drive interface1226and an optical drive interface1228, respectively. The interface1224for external drive implementations includes at least one or both of Universal Serial Bus (USB) and IEEE 1394 interface technologies. Other external drive connection technologies are within contemplation of the subject invention.

A number of program modules can be stored in the drives and RAM1212, including an operating system1230, one or more application programs1232, other program modules1234and program data1236. All or portions of the operating system, applications, modules, and/or data can also be cached in the RAM1212. It is appreciated that the invention can be implemented with various commercially available operating systems or combinations of operating systems.

A user can enter commands and information into the computer1202through one or more wired/wireless input devices, e.g., a keyboard1238and a pointing device, such as a mouse1240. Other input devices (not shown) may include a microphone, an IR remote control, a joystick, a game pad, a stylus pen, touch screen, or the like. These and other input devices are often connected to the processing unit1204through an input device interface1242that is coupled to the system bus1208, but can be connected by other interfaces, such as a parallel port, an IEEE 1394 serial port, a game port, a USB port, an IR interface, etc.

A monitor1244or other type of display device is also connected to the system bus1208via an interface, such as a video adapter1246. In addition to the monitor1244, a computer typically includes other peripheral output devices (not shown), such as speakers, printers, etc.

When used in a LAN networking environment, the computer1202is connected to the local network1252through a wired and/or wireless communication network interface or adapter1256. The adaptor1256may facilitate wired or wireless communication to the LAN1252, which may also include a wireless access point disposed thereon for communicating with the wireless adaptor1256.

When used in a WAN networking environment, the computer1202can include a modem1258, or is connected to a communications server on the WAN1254, or has other means for establishing communications over the WAN1254, such as by way of the Internet. The modem1258, which can be internal or external and a wired or wireless device, is connected to the system bus1208via the serial port interface1242. In a networked environment, program modules depicted relative to the computer1202, or portions thereof, can be stored in the remote memory/storage device1250. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers can be used.

Referring now toFIG. 13, there is illustrated a schematic block diagram of an exemplary computing environment1300in accordance with the subject invention. The system1300includes one or more client(s)1302. The client(s)1302can be hardware and/or software (e.g., threads, processes, computing devices). The client(s)1302can house cookie(s) and/or associated contextual information by employing the invention, for example.

The system1300also includes one or more server(s)1304. The server(s)1304can also be hardware and/or software (e.g., threads, processes, computing devices). The servers1304can house threads to perform transformations by employing the invention, for example. One possible communication between a client1302and a server1304can be in the form of a data packet adapted to be transmitted between two or more computer processes. The data packet may include a cookie and/or associated contextual information, for example. The system1300includes a communication framework1306(e.g., a global communications network such as the Internet) that can be employed to facilitate communications between the client(s)1302and the server(s)1304. Communications can be facilitated via a wired (including optical fiber) and/or wireless technology. The client(s)1302are operatively connected to one or more client data store(s)1308that can be employed to store information local to the client(s)1302(e.g., cookie(s) and/or associated contextual information). Similarly, the server(s)1304are operatively connected to one or more server data store(s)1310that can be employed to store information local to the servers1304.