WO2008121410A1 - Interface definition for implementing contextual applications - Google Patents

Interface definition for implementing contextual applications Download PDF

Info

Publication number
WO2008121410A1
WO2008121410A1 PCT/US2008/004223 US2008004223W WO2008121410A1 WO 2008121410 A1 WO2008121410 A1 WO 2008121410A1 US 2008004223 W US2008004223 W US 2008004223W WO 2008121410 A1 WO2008121410 A1 WO 2008121410A1
Authority
WO
WIPO (PCT)
Prior art keywords
item
model
view
query
situated query
Prior art date
Application number
PCT/US2008/004223
Other languages
French (fr)
Inventor
Alan Bush
Michael Galpin
Zahid N. Ahmed
Valeriy V. Pelyushenko
Herbert Wayne Stiel
Shashi P. Suravarapu
Robert Hoexter
Joshua Brunaugh
Original Assignee
Ludi Labs, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ludi Labs, Inc. filed Critical Ludi Labs, Inc.
Publication of WO2008121410A1 publication Critical patent/WO2008121410A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces

Definitions

  • Appendix A (46 pages) is a listing of the base component and types of an exemplary embodiment of the information model (using a Universal Item Description Language described below) and forms part of the specification.
  • Appendix B (7 pages) is a listing of the code for an exemplary Application Definition Language (ADL) extended markup language (XML) schema definition (XSD) and forms part of the specification.
  • ADL Application Definition Language
  • XML extended markup language
  • XSD schema definition
  • Appendix C (13 pages) is a listing for a set of the code for an exemplary Widget Definition Language (WDL) extended markup language (XML) schema definition (XSD) and forms part of the specification.
  • WDL Widget Definition Language
  • XML extended markup language
  • XSD schema definition
  • Appendix D (9 pages) contains two code examples for the format/style sub-elements of the type specific information that is part of the WDL for each presentation element and forms part of the specification.
  • interfaces for different environments such as web browsers, mini browsers, J2ME clients, WAP browsers and voice systems
  • localized interface for different countries
  • multiple mode interfaces such as a conversational interface, an interactive interface and a service oriented user interface.
  • Figure IA illustrates an abstract model for a web presence that uses a widget definition language to define the presentational aspects of the web presence separate from the computational aspects;
  • Figures IBl and 1B2 illustrate further details of the widget definition language portion of the abstract web presence model in Figure IA;
  • Figures ICl - 1C3 illustrate further details of the model portion shown in Figure IB;
  • Figures IDl - 1D5 illustrate further details of the views portion shown in Figure IB;
  • Figure IE illustrates further details of the type specific information portion shown in Figure IB;
  • Figure 2A illustrates an example of a cell instance data structure of a web presence shown in Figure IA;
  • Figure 2B illustrates an example of a contact management web presence for a particular user
  • Figure 3A illustrates the interaction between WDL and ADL objects when a presentation element is requested
  • Figure 3B illustrates the class structure that supports the WDL/ADL interactions
  • FIGS 3C and 3D illustrate the UML for the application and presentation element interactions
  • Figures 4A - 4D illustrates an exemplary message board presentation element implemented using the WDL
  • Figures 5 A-5D illustrates an example of a calendar view implemented using WDL
  • Figure 5E - 5K illustrate a set of examples of the user interface provided by the calendar view
  • FIGS 6A-6B illustrate an example of an add operation and an update operation implemented in WDL
  • Figures 7A-7C illustrates an example of a connected items operation implemented in WDL
  • Figure 8 illustrates an example of the code used to implement a web presence template catalog
  • Figures 9 A and 9B illustrate an example of autos web presence and a book web presence, respectively, generated based on the catalog shown in Figure 8;
  • Figures 10A- 1OC are examples of the WDL and ADL code that generates the auto web presence shown in Figure 9A;
  • Figures 1 IA - 1 IF are example of the WDL and ADL code that generates the books web presence shown in Figure 9B;
  • Figure 12 illustrates a data management system
  • Figure 13A illustrates a storage model of the data management system where a cell instance, functioning as a server that host both application and content server, has a dedicated database container that employs a storage device;
  • FIG. 13B illustrates more details of the data management system shown in Figure
  • Figure 14 illustrates an example of a piece of Java code that can be invoked to create an item instance in a dedicated database container (for a particular cell instance) that can store a collection of XML document instances of any XML type is shown in Figure 12;
  • Figure 15 illustrates a Universal Item Information Model
  • Figure 16 an exemplary implementation of a data structure for an AbstractltemKind
  • Figure 17 illustrates an example definition of BasicItemDescriptorType used to describe the ⁇ ItemDetails> child element included in an AbstractltemKind;
  • Figures 18A and 18B illustrate an example of a Contact item
  • Figures 19A and 19B illustrate an example of a Photo item
  • Figures 2OA and 2OB illustrate an example of a Book item
  • Figures 21 A and 21B illustrate an example of an Auto item
  • Figures 22A and 22B illustrate an external content model
  • Figure 23 illustrates examples of the content kinds encapsulated using the Universal Item Information Model
  • FIGS 24A- 24D illustrate further details of the system tag shown in Figure 17;
  • FIG. 25 illustrates further details of the system defined connections shown in Figure
  • FIGS 26A and 26B illustrate further details of the user defined connections shown in Figure 16;
  • Figure 27 illustrates an example specification of application component that can process Contact items
  • Figure 28A illustrates a set of code for the query to fetch all of the Contactltems in a sorted order
  • Figure 28B illustrates a set of code for the query to fetch all of the connectedContacts for the Contactltem shown in Figure 15;
  • Figure 29 illustrates a conceptual model of user-defined connection from a given an item to a set of related items user-defined connection model
  • Figure 30 illustrates the specification of a situated query having a scope declaration (sc) and a query expression (expr) and the query is evaluated related to a cell (c).
  • a web presence may include a web site, one or more web pages or a web service.
  • the web site may consist of set of data that can be accessed for particular context and a set of applications.
  • An Application Definition Language may be used to define the applications and components (the computational aspects) of a web presence, such as the web site, and made accessible via the pages that are served by the web site (and which reference the application and its components running on the web server of the web site).
  • WDL Widget Description Language
  • the system and method for defining interface definition functionality for general purpose web presences may be implemented, in an exemplary embodiment, using the known XML language with a corresponding WDL XML Schema definition (XSD) which is attached as Appendix C and forms part of this specification.
  • WDL Widget Definition Language
  • XSD WDL XML Schema definition
  • the XSD is merely illustrative since the WDL may be implemented using other XSDs and may be implemented in languages other than XML.
  • the WDL may be used to define the interface of an application that interacts with one or more cells (described below) and one or more components in a standardized language, such as a XML-based language.
  • the XSD definition of the interface may be used to enable the consistent definition of the interface and allow third party application developers to use various known plug-ins to develop interfaces for web presences.
  • the ADL described in a separate co-pending patent application, may be implemented, in an exemplary embodiment, using the known XML language with a corresponding ADL XML Schema definition (XSD) which is attached as Appendix B and forms part of this specification.
  • XSD ADL XML Schema definition
  • the interface definition for an application specifies the user interface and visual components of an application.
  • the user interface and visual components of the application are implemented using one or more presentation elements.
  • Each presentation element includes the data that is used to compute a presentation element state and the presentation of the presentation element.
  • the view (or layout or format) of each presentation element defines how data is presented to end-users and relays user actions back to controller (which includes actions that are local procedures/methods and also optionally event handlers).
  • the WDL may be implemented as code/language that is instantiated in a plurality of lines of computer code that are used to generate the interface aspect of a web presence as described below.
  • the WDL can also be implemented as a schema/data structure that is resident on a memory device.
  • Figure IA illustrates an abstract model for a web presence 100 that uses a widget definition language to provide a model/method for defining the presentational aspects of the web presence.
  • the ADL 106 provides a model/method for defining application functionality for web presences that is described more fully in co-pending patent application serial no. 11/XXX 5 XXX filed on February 2, 2007 and entitled "System and Method for Defining Application Definition Functionality for General Purpose Web Presences" which is incorporated herein by reference.
  • the web presence defined partially by the ADL may include a presence that has a user visual interface portion (such as a web page or a web site) or an application that performs computations, but does not provide a visual user interface, such as a web services.
  • the model for the web presence may include one or more pieces of content 102 (defined using the UIDL described below) and one or more applications 103 that provide functionality to the web presence.
  • Each application is a declarative, nonprocedural definition to a particular functionality that can be part of the web presence.
  • Each application may further comprise a presentation portion 104 (defined using WDL) and a computation portion 106 (defined using the ADL).
  • WDL presentation portion 104
  • ADL ADL provides a framework to define the various computational aspects of the web presence while the WDL defines the presentation aspects of the web presence (and makes the application visible to a user).
  • WDL is an abstract approach to implementing the well known model-view-controller style application interface that provides a web presence developer (without coding) a way to describe the interface/presentation aspects of the application by defining one or more portions of each presentation portion as described below with reference to Figure IB.
  • the WDL permits a developer to generate an interface aspect of the web presence without coding.
  • the WDL also permits the developer to introduce extensions to the interface independently of the specific interface specification and provide type-based interface specifications independent of the specific application features.
  • WDL allows the developer to automatically generate user interfaces based on the feature specifications.
  • WDL also permits a developer to easily generate multiple interfaces for the same underlying application so that the developer can generate interfaces for different level of user sophistication (a beginning user interface vs.
  • interfaces for different environments such as web browsers, mini browsers, J2ME clients, WAP browsers and voice systems
  • environments such as web browsers, mini browsers, J2ME clients, WAP browsers and voice systems
  • localized interface for different countries
  • multiple mode interfaces such as a conversational interface, an interactive interface and a service oriented user interface.
  • Figure IBl illustrates further details of the WDL portion of the abstract web presence model in Figure IA.
  • Figure 1B2 illustrates an example of the UML for the presentation element of the web presence.
  • the WDL portion of the abstract web presence model may be used to define one or more presentation elements that are part of the web presence wherein each presentation element 105 includes one or more sub-elements.
  • the sub-elements may include a model portion 104a, a views portion 104b and a type specific information portion 104c.
  • the model for each presentation element defines the types and instances of data (items in the preferred implementation) displayed/acted on by the particular presentation element, descriptions of the items to be displayed using queries, descriptions of the connected items to be displayed and/or acted on using queries and references to variables in the application component, references to properties that the user can modify to alter the behavior of the presentation element (for example, query's scope, name of the presentation element, and other look and feel attributes of the presentation element that would enable personalization of the presentation element for the user), and the actions/methods/operations that can be taken on all or a portion of the data that are part of the particular presentation element.
  • An example of the operations are described further below with reference to Figures 6A-6D and Figures 7A-7C.
  • the views portion for each presentation element define a number of different ways of presenting the data for a particular presentation element and enabling uses to select some or all of the data and/or allow the user to choose actions to be applied to the selected data.
  • An example of a calendar view is described below in more detail with reference to Figures 5A - 5D.
  • the type specific information portion for each presentation element (described below in more detail with reference to Figure IE) define the data type specific displays, actions and validation rules.
  • An example of a message board presentation element is described below with reference to Figures 4A- 4D.
  • Each presentation element can contain other presentation elements so that nested presentation elements may be provided.
  • the presentation elements have a naming scheme so that messages can be sent to presentation elements within a web presence, or presentation elements within presentation elements, presentation elements via a scoping mechanism, or presentation elements containing a presentation element.
  • Every presentation element has a home web presence that determines absolutely or relatively the base which is used for evaluating computation within the presentation element (especially queries) wherein a presentation element displayed in its home web presence is a local presentation element while a presentation element displayed in a web presence other than its home web presence may be known as an aliased presentation element.
  • Presentation elements can be copied and a copied presentation element can be pasted into any web presence as a local presentation element, or as an aliased presentation element. When pasted as a local presentation element, the presentation element's home web presence is set to the web presence in which it is pasted. When pasted as an aliased presentation element, the presentation element's home web presence is left unchanged.
  • Figure ICl illustrates further details of the model portion 104a shown in Figure IB.
  • Figures 1 C2 and 1 C3 illustrates an example of the UML for the presentation element model and further details of the elements of the model, respectively.
  • the model portion for each presentation element further comprises a set of data 104al (the different types of items defined by the UIDL in the exemplary implementation) that describes the one or more types of data associated with the particular presentation element.
  • the model portion further comprises variables and formulas 104a2 wherein the variables may be presentation element level variables (calculated in a component associated with the web presence within which the presentation element is defined). The variables, like other variables in the system, automatically recalculate their value.
  • the values of variables can be any of the data component kinds, any item kind and/or a list of items.
  • the variable may include a formula (xsd: anyType) wherein the formula can refer to other variables and there may be either constant formulas, variable reference formulas, query- oriented formulas, or compound formulas made up of an operator and some number of sub- formulas.
  • the optional elements for a Variable may include an Order [Reference, e.g., XPath] that has the required attribute of a name.
  • the formula associated with a presentation element may contain a situated query (described below in more detail with reference to the Query Language & Structure section) that retrieves the data to be displayed and/or acted on by the particular presentation element.
  • the model portion 104a further comprises zero or more methods 104a3 that are associated with the particular presentation element.
  • the methods defined in the model are then applied to the data associated with the presentation element.
  • the methods may include standard parts of the presentation element, external calls and/or component level methods.
  • the methods of each presentation element are procedural, with parameters so that, for example, messages can be sent to presentation element methods.
  • the methods use Java or scripting language for implementation and the implementation may include calls to an underlying operating system.
  • Figure IDl illustrates further details of the views portion 104b shown in Figure IB.
  • Figures 1D2 - 1D5 illustrate the UML diagrams for the views portion, the table view, the list view and the tree view, respectively, that are part of the views portion.
  • the views portion of each presentation element may include one or more views 104bl, a set of view specific attributes for each view 104b2 and one or more view level operations 104b3.
  • Each presentation element has a default view type and the one or more views for each presentation element may include the following illustrative examples: • List view (aka Compressed List) • Detail view (aka Expanded List)
  • Map - address/role - could do location, tags and possibly restricted roles
  • Light-box view - shows one item at a time; and can move backward and forward - for certain kinds of applicable items ⁇ Same as Detail view
  • Each view associated with the presentation element supports the one or more view level operations 104b3 wherein the one or more operations for a particular view are customized to operate with the particular view.
  • An illustrative list of exemplary operations are: ⁇ View as
  • Sort by to sort by basic item attributes (described in the Universal Item Information Model below) that may include source (originator), creation date, date modified, subject and any Kind specific field) and a filter function (to filter by basic item attributes that may include source (originator), creation date, date modified, subject and tags (described below) of the following types: person, location, time, category, kinds, rating and/or general)
  • New Item (if it is a folder presentation element, i.e., item is scoped to a folder)
  • Each presentation element may also include a set of commonly defined item level operations that can operate on the items in the presentation element. These operations may include a send operation, a send as message operation, an add note operation, a show related item operation and a create connection between items operation. For example, the following operations are applicable to one or more selected items:
  • sender/source is addressable (e.g., not for RSS feeds)
  • Context sensitive rules show the items which are related to the selected item. Can show related actions as well.
  • the view specific attributes 104b2 of each presentation element may include Display
  • the Display Fields specify the elements within the ItemKind definition (see the exemplary information item model below in Figure 15) that will be displayed in the presentation element based on the schema definition of the item kind which is defined using Universal Item Description Language (UIDL).
  • UIDL Universal Item Description Language
  • the Sort Elements may include, for example: (a) CreationTime (which is a child element within the ItemDetails element of AbstractltemKind), (b) Title (which is a child element within the ItemDetails element of AbstractltemKind), (c) a user defined tag, and/or (d) system managed tags.
  • Several examples of the Filter Elements may be filtering by all the user-defined tags and system managed tags.
  • the Page Size represents the number of items displayed (and retrieved from the database) in a page that is served to the user for the presentation element.
  • the Refresh Rate describes the interval of time before the data displayed in a presentation element is updated by pulling fresh data from the database of the cell associated with the items.
  • the initialization of actions allows for the state of the presentation element to be changed when switching views. These drive the table view (also known as “list view”), lists (also known as “expanded list view”) , calendar, and tree views.
  • the "detail view” of an item should be driven by the Item kind definition, expressed using the Universal Item Description Language (UIDL), for the item kind which specifies which elements to show to the user.
  • the Actions pertain to the set of data displayed in the presentation element or a subset of data displayed in the presentation element such that the selected data (i.e., items) can be processed by the action selected by the user, such as for example, updating an item or copying item(s) or sending item(s) to some target destination.
  • Figure IE illustrates further details of the type specific information portion 104c shown in Figure IB.
  • the type specific information portion for each presentation element may include one or more packages of formats/styles 104cl, one or more packages of validation rules 104c2 and one or more packages of type specific actions 104c3.
  • the format is a structural description of layout and the style allows specification of hints for rendering the user interface associated with the presentation element.
  • Each presentation element can be rendered on any of the supported devices wherein each device has a presentation element renderer and each renderer can make use of the style hints.
  • An example of two code snippets that contain the style and format information are contained in Appendix D that forms part of this specification.
  • FIG 2A illustrates an example of a cell instance data structure of the web presence shown in Figure IA.
  • the web presence model may include a presentation layer 110 and an application layer 112.
  • each element of the application layer has a corresponding presentation layer element.
  • each cell 100 corresponds to a web presence 114 wherein each web presence is an instance of the cell that has the presentation portion and the computation portion as described above.
  • a particular web presence 114 may include one or more presentations that are defined by the presentation definition (the WDL).
  • a particular cell 100 may include one or more component instances 116 that are defined by the component definitions.
  • Each component instance (a particular action/operation of the web presence) has a corresponding presentation portion 118.
  • Each cell instance is a packaged web application in that it contains the application as well as the data/content associated with the application that may be stored in a database contained within the cell instance.
  • Each component 116 contains definitions of variables, properties etc. that determine the computational model of the application while each corresponding presentation defines a mapping from the component model to visual components, e.g., what data is involved to compute presentation state.
  • Figure 2B an example of a structure of a web presence 114.
  • Each web presence is a set of one or more applications and a database local to the web presence, with a member list and role based permissions.
  • the application is a set of interrelated components with variables.
  • Each view on a web presence has its own instance of the application, with its own set of variable values.
  • the web presence may include the one or more applications 120 that define declarative aspects of the web presence, procedural method for the web presence and the presentation for the particular web presence and a database 122 associated with the web presence that may include an index.
  • the web presence may implement one or more processes/operations/functions 124.
  • the operations may include role based permissions for the web presence that define which users can view/modify/delete the information associated with the web presence.
  • the web presence may also include object oriented recalculation in which, when information or data is modified in the web presence, any other information or data in the web presence that has an association with the modified information or data is automatically recalculated and updated (which may be known as a refresh.)
  • the web presence also includes business process and workflow processes as well as inter-application communication (events and messaging) between the one or more applications that are part of the web presence and other web presences.
  • the web presence may also include automatic data transformation in which the web presence transforms data as needed, type based actionability and an activity log, audit trail and metrics. Now, examples of the interaction between WDL and ADL objects is described in more detail.
  • Figure 3A illustrates the interaction between WDL and ADL objects when the presentation element is requested.
  • the diagrams illustrate that the ADL code (used to implement the computational aspects of an application) interact with the WDL code (used to implement the presentational elements of the application) to provide the application functionality to the user.
  • the interaction also means that, for example, a change in a variable caused by the execution of the ADL code will cause that variable to change in the WDL code and also change the view presented to the user.
  • a change in a variable during the execution of the WDL code will cause the same variable in the ADL code to change which may affect the computational aspects of the application implemented by the ADL code.
  • a client computing device that is going to display a presentation element of a web presence requests a particular presentation element of a web presence, such as a message board presentation element described below, by providing the client device information, user context, a particular view for the presentation element (or the default view if one is not specified) and the cell containing the requested presentation element (A).
  • a widget model is initialized based on the definition of the particular presentation element (implemented as WDL code 104), the device information (which may influence the style hints), the user context (to determine the proper objects acted on the presentation element and the cell (B).
  • a query is submitted by the application component associated with cell in which the presentation element is located (C).
  • the query results are used to set or reset the variable in the application component (D).
  • the presentation element model that obtains the value of the variable or the results of the query via referencing or events (E). Then, the data in the presentation element model (e.g., one or more items with different kinds in the exemplary implementation) are used to render the visual output of the presentation element using the style/format and using a particular view type as specified by the request (F).
  • Figure 3B illustrates the class structure of the WDL/ ADL interactions that is used to implement the process shown in Figure 3A.
  • the presentation element model notion is divided into a domain model and a view model.
  • the domain model is a classic domain model, containing methods for retrieving data (getltems) and for performing operations (executeAction.)
  • the ComponentBaseModel class implements this by using a component that is defined in using ADL code. It uses methods such as getValue to retrieve data and set Value to change the value of variables in the Component. It also uses the getAction method to retrieve an Action object that can then be used for performing an operation defined in the Component.
  • the ViewModel deals with more UI related things. Subclasses add features specific to their UI representation, such as a TableViewModel.
  • the TableViewModellmpl is a full implementation that can be used for a single view of a presentation element (TableModel) or as one view of a multi-view presentation element.
  • TableModel uses the ComponentBasedDomainModel for its DomainModel implementation and a Table ViewModellmpl for its ViewModel implementation. It also implements the Generic WidgetModel interface. This is the interface dealt with by the WidgetController.
  • Figures 3C and 3D illustrate an example of the presentation element reference to the application component UML diagram that further illustrate the interaction between the WDL (the presentation element code) and the ADL (the application component code).
  • WidgetModel interface specification shown in Figure 3B is a public interface for WidgetModel that includes the following variables and methods:
  • the AbstractWidgetModel is a public abstract class that implements the WidgetModel and has the following variables and methods:
  • Widget getWidgetDefinition() returns the WDL definition of a widget
  • the Generic WidgetModel Class is a public interface that extends WidgetModel and has the following variables and methods:
  • ViewModel getViewModel() returns a reference to the view model in terms of the type of the view and identifier to the view •
  • String getXmlStringO returns the string representation of the underlying XML-based data in the model
  • the ComponentBasedDomainModel Class is a public class that extends the
  • Item may be defined in Universal Item Description Language
  • ActionReturnType executeAction(String actionName, Object[] params) - returns the result of executing an action.
  • Figures 4A - 4D illustrates an exemplary message board presentation element implemented using the WDL.
  • Figure 4A illustrates an example of the user interface of a message board presentation element
  • Figure 4B illustrates the parameters for the server call to implement the message board
  • Figure 4C illustrates an example of the WDL code to implement the message board
  • Figure 4D illustrates an example of the user interface code to implement the message board.
  • the message board presentation element is driven by a data structure.
  • the message board presentation element shows threads
  • Each of the items seen in Figure 4 A is a MessageBoardltem and a MessageBoardltem contains exactly one Comment, as well as a Thread ID indicating the thread to which it belongs.
  • the Comment contains a title, author, date, and a path indicating its location in the tree.
  • the MessageBoardltem can be treated as any other item, so it can be tagged, etc.
  • An item can also be commented on and each item has a MessageBoardContainer within it and the MessageBoardContainer can have one or many Comments. These Comments have a path, thus they can be represented in a tree structure. However, these comments are not themselves items so they cannot be tagged, etc.
  • the message board presentation element may introduce a new type of view, a tree view which is similar to a list, but possesses an inherent action for "expanding" a branch of the tree. This tree view may then be used by any other presentation element.
  • the UI will call a special update and pass in a set of field values specified in the WDL and expanding a branch returns the complete structure under that branch.
  • the branching action may return all the comments on the thread being expanded.
  • the detail view of an item may show the threads for that item. The names of all of the threads will be sent as part of the item detail, so it is immediately available to the UI with no server call. Once the threads are shown for the item, a thread can be expanded.
  • the message board presentation element may include the ability to update an item.
  • the message board presentation element also may contain the ability to delete a comment that may delete all comments "below" the comment.
  • FIG. 4C the WDL code for expanding a thread of the message board presentation element is shown.
  • Figure 4B shows the parameters used for the call to the server to implement the expansion of a thread in the message board may be accomplished generically by expanding a branch in the tree view.
  • the response from the server as shown in Figure 4D that contains a list of items arranged in a tree structure is to allow the UI code to create the appropriate presentation by only iterating over the list of items exactly once.
  • the level element is supplied to allow for easy formatting on the UI.
  • Figures 5A-5D illustrates an example of a calendar view implemented using WDL which is an example of a view that may be part of a presentation element.
  • WDL WDL code
  • Figure 5 A The data behind the calendar needs to support start/end times and the code for the presentation element needs to have these canonical properties declared as shown in Figure 5B.
  • the evaluation of the properties shown in Figure 5B points to fields declared in the code for the item kind.
  • the XPaths for these fields are used to create a filter expression for the query used to retrieve the items as shown in Figure 5C.
  • the application component (shown in Figure 2 A above) backing the presentation element has a date filter that allows a component action to be called that will create the appropriate filter by examining all the kinds in the presentation element.
  • a date range based query will be executed by default.
  • the default range will be the current month. This is calculated by looking at the current date.
  • the start date for the range is set to the first day of the current month at midnight.
  • the end date is calculated by taking the first day of the next month and subtracting one second. Any presentation element with a default view of calendar will have this calculation computed and used for the start/end dates of a date range based query.
  • AJAX Asynchronous JavaScript and XML
  • HTTP the parameters of this request is shown in Figure 5D
  • Figure 5E — 5K illustrate a set of examples of the user interface provided by the calendar view.
  • Figure 5E illustrates a default calendar view while
  • Figure 5F illustrates the calendar view with an overlay containing upcoming items.
  • Figure 5G illustrates a detailed calendar item view and
  • Figures 5H and 51 illustrate a calendar item list view that lists a short version of the various calendar items.
  • Figure 5 J illustrates a new calendar item input view of the calendar view (using an add item operation).
  • Figure 5K illustrates a pop up view of a calendar that is part of the new item operation for the calendar view.
  • FIGS. 6A-6B illustrate an example of an add and an update operation implemented using the WDL.
  • Each item document describes an item kind that includes the logical fields of the kind and these fields available to a Widget Developer for display in a presentation element. An expanded use of these fields may be used for the reusable add/update operations.
  • the fields already contain an XPath used to extract the value of the field from the underlying item XML.
  • the "web item XML" is a simplified form of the item XML data used by the UI. It is a tighter, flatter structure than the typical item XML data and is made from the fields defined in the code that typically looks like:
  • the UI uses the field name for describing what data to show in different views of the data, i.e. tables, lists, detail views, etc. This structure is only used for display of item data.
  • the UI simply passes parameter data to the server. It does not have to reconstruct the "web item XML", it simply treats the add item action like any other action, collecting parameters and passing them to the server.
  • the combination of these two features allows for succinct data transfer between client and server and minimal coupling between the UI and the application.
  • Figure 6A illustrates further details of the add operation.
  • a client computing device that is going to display a presentation element of a web presence requests a particular presentation element of a web presence, such as a message board presentation element described below, by providing the client device information, user context, a particular view for the presentation element (or the default view if one is not specified) and the cell containing the requested presentation element (A).
  • a widget model is initialized based on the definition of the particular presentation element (implemented as WDL code 104), the device information (which may influence the style hints), the user context (to determine the proper objects acted on the presentation element and the cell (B).
  • the client submits a new item using the presentation element by entering the values of the relevant fields for the item (C).
  • the widget model invokes the generic Addltem action to save any kind of item in the cell's database (D).
  • the application component uses the query expression (with the scope of the cell) and inserts the item as a document-style XML instance whose schema may be specified using the Universal Item Description Language (UIDL) (E).
  • the application component returns the ItemID of the newly created and inserted item to the presentation element which subsequently returns the ItemID to the client device (F).
  • UIDL Universal Item Description Language
  • Figure 6B illustrates further details of the add operation.
  • a client computing device that is going to display a presentation element of a web presence requests a particular presentation element of a web presence, such as a message board presentation element described below, by providing the client device information, user context, a particular view for the presentation element (or the default view if one is not specified) and the cell containing the requested presentation element (A).
  • a widget model is initialized based on the definition of the particular presentation element (implemented as WDL code 104), the device information (which may influence the style hints), the user context (to determine the proper objects acted on the presentation element and the cell (B).
  • the client updates an item using the presentation element by modifying values of the relevant fields for the item (C).
  • the widget model invokes the generic Updateltem action to save any kind of item in the cell's database (D).
  • the application component uses the query expression (with the scope of the cell) and updates the item as a document-style XML instance whose schema may be specified using the Universal Item Description Language (UIDL) (E).
  • the application component returns the ItemID of the newly updated item to the presentation element which subsequently returns the ItemID to the client device (F).
  • UIDL Universal Item Description Language
  • Figures 7A-7C illustrates an example of a connected items operation implemented in
  • Figure 8 illustrates an example of a set of code 130 used to implement a web presence template catalog.
  • the code is XML code as shown in Figure 8.
  • the web presence template may be used to generate a visual catalog from which a user of the system may select a pre-defined web presence.
  • the web presence catalog may include an auto web presence 131 and a book web presence 132 wherein examples of the user interface of the autos web presence and book web presence are shown in Figures 5 A and 5B and examples of the code used to implement the autos web presence and book web presence are shown in Figures 10 and 11.
  • FIGs 9A and 9B illustrate an example of autos web presence and a book web presence, respectively, generated based on the catalog shown in Figure 8.
  • An autos web presence user interface 140 is shown in Figure 5 A wherein the web presence has an autos portion 141, a notes portion 142, an images portion 143 and an application portion 144. Additional applications can be added to a web presence (i.e., making the application web accessible) from an application catalog.
  • a books web presence user interface 145 is shown in Figure 5B wherein the web presence has a books portion 146, a notes portion 147, an images portion 148 and an application portion 149.
  • Figures 10A- 1OC are examples of the WDL and ADL code that generates the auto web presence shown in Figure 9 A and Figures 1 IA — 1 IF are example of the WDL and ADL code that generates the books web presence shown in Figure 9B.
  • Figures 1OC and 11C the WDL code for auto component and the books component, respectively, is shown wherein the code have the model code, the view code, etc. as described above in more detail.
  • the web presences are formed by a combination of ADL code and WDL code that operate together to create the web presence.
  • FIG. 12 illustrates a data management system 250 wherein one or more cells 252 (such as Cell A, Cell B and Cell C as shown in Figure 12) manage the storage, access, update and integration of typed objects and other information associated with the typed objects.
  • Each cell may also include one or more instances 254 of various types of objects that are contained within the cell.
  • cells may also contain any number of applications.
  • the server that hosts a cell instance manages both the hosting of applications and local storage of content.
  • An exemplary embodiment of each cell may be a XML document-oriented container in a commercially available XMLDB database as described in more detail below.
  • each cell may have a set of indices 256.
  • each object in a cell may be an item that is an instance of a type that extends from the AbstractltemKind base type as described below in more detail.
  • an object may be connected to another object in the same cell or in a different cell via a connection 258 as shown in Figure 12.
  • Each connection may be implemented as a field/container/record within an object record of the data management system.
  • the connections permit a user of the data management system to associate one or more objects with each other wherein the connections may be generated by a user or automatically generated by the system.
  • An example of a ContactltemKind object with one or more user generated connections as well as one or more automatically system generated connections is described in more detail below.
  • Each object in the cell may also have zero or more tags associated with the object wherein each tag associate a piece of information with the particular object wherein the tags may be generated by a user or automatically generated by the system.
  • An example of a ContactltemKind object with one or more user generated tags as well as one or more automatically system generated tags is described in more detail below.
  • each cell contains a data base (the objects in the cell) so that the data for the cell is contained within the cell.
  • the data management system may also implement a situated query language (described below in more detail) wherein the query is composed and processed from the perspective of a Cell X (i.e., query is processed based on the object(s) within Cell X) and other cells in certain relationships to Cell X.
  • Such queries may be known as situated queries.
  • the query language may leverage XQuery 1.0 (an XML-based Query Language standard developed by W3C). Situated queries will allow queries to be expressed according to the personal situation of the user such that user can retrieve and compare information from specifically identified and/or relationally described context; and that the meaning of these queries persist as the applications which contain them when moved from one cell to another cell.
  • Figure 13A illustrates a storage model of the data management system.
  • item instances or object instances pertaining to a particular cell may be stored in a document container managed by a XML Database System.
  • each cell may be stored in its own XML DB document container that functions as a document-centric container for all of the item instances belonging with that cell.
  • the document-centric container of the XML DB holds a collection of item instances as XML documents
  • each cell instance can have a collection of heterogeneous content that employs the Universal Item Information Model (UHM) to enforce a consistent data type model that is object- and semantic-oriented and extensible and uniformly represented as item instances in the DB container whose types are described using the Universal Item Description Language (UIDL).
  • UHM Universal Item Information Model
  • This approach to data management is fundamentally different than existing web and enterprise applications that maintain a dedicated database table, possibly on a dedicated database host, for each type of content.
  • content for example media (including photos, videos, audio and podcasts), blogs, calendar, contacts, email, and other structured data (including automobile, books, movies, etc.) which are supported by specific third-parties that specialize in specific types of e-commerce services and catalogs of items, and other unstructured content that may be generated by end users, it will be an expensive scalability and extensibility approach to maintain dedicated database tables for each type of content.
  • the above described approach of maintaining dedicated database instance for a cell which hosts both application and its content such that it allows storage, access and integration of various types of content to be more scaleable and extensible than existing database-driven web and enterprise applications.
  • a commercially available Berkeley XML embeddable database is used as the storage device for the cells and the one or more items in each cell.
  • the objects stored within cells use the object- and semantic-oriented Universal Item Description Language (UIDL) (extending the well known XML Schema definition language) to describe those objects.
  • UIDL object- and semantic-oriented Universal Item Description Language
  • the cell interfaces with an embeddable XML database (whose document-centric container is used to store and access any type of content) which provides native XML support and no processing overhead cost due to XML-to-Java-to-SQL transformation (typically expected in existing Java-based database driven applications).
  • the system may utilize an XML database for content storage in combination with the Universal Item Information Model (UIIM) and XML-based Universal Item Description Language (UIDL) described above in the exemplary embodiment.
  • UIIM Universal Item Information Model
  • UIDL Universal Item Description Language
  • Figure 13B illustrates more details of the data management system 60 that interacts with a client 62 in order to host applications and manage storage, finding and retrieval of typed items with support for tagging, connections, and situated queries.
  • the data management system may further include an application server 64 and an XML database 66 as described above wherein the application server interacts with the XML database.
  • the application server 64 may further include a content processor 68, an application component 70, an item processor 72 and a query processor 74.
  • the content processor 68 may receive information and content such as RSS data, email messages and structured data such as books, and process that data to add item(s) into a cell that is stored in the XML database using the item processor 72.
  • the application component 70 may be a piece of code that performs various operations and functions on the items in a cell wherein certain elements (an XML document insert or update or query) interact with the XML database 66. For example, the application component may add item(s) or update item(s) in a cell (using the item processor 72) in order to perform an XML document insert or update operation with the XML database 66. The application component may also generate a situated query (described below in more detail) for item(s) in the one or more cells which is processed by the query processor 74 in order to generate a XQuery expression that is applied to the XML database 66.
  • the content processor, item processor and the query processor may be implemented, in an exemplary embodiment, a plurality of pieces of computer code that are executed by the application server.
  • Figure 14 illustrates an example of Java code that can be invoked at run-time to create a document instance in the XML embedded database that may be used in the exemplary implementation of the data management system.
  • the document instance represents any user- defined content that is defined as an instance of a specific XML object type (that is derived from the base object type (the Abstractltem type in the exemplary embodiment).
  • the data storage model can be used to store any type of XML content such that all content stored in the DB container are XML document instances of various types.
  • the data management system can store heterogeneous types of objects for a given cell. Each cell has a dedicated DB container which is used to manage storage and access of required content/objects contained in the cell.
  • the transaction parameter in the code is the transaction that is participating and/or processing a document instance represented by the document parameter in the code such that the document instance (representing an item) is created in the specified XML database container whose name is specified along with the document name and related data and metadata.
  • UIIM Universal Item Information Model
  • a Universal Item Information Model (UIIM) is presented that accomplishes several goals and overcomes certain problems that have existed.
  • the universal item information model can be used to personalize and simplify the process of content consumption, sharing and publishing in a system in which various types of existing and new user-defined content needs to published, consumed and shared by and from various sources.
  • the universal item information model addresses data integration from disparate sources as is needed currently in the areas of social networking, consumer-oriented and business-oriented application integration platforms.
  • the Universal Item Information Model also provides the ability to preserve and leverage existing and legacy content formats within the Universal Item Information Model (UIIM) such that interoperability with existing consumers and publishers and their applications is possible within a networked community environment where a system supports the handling of all kinds of new and existing content.
  • Figure 15 illustrates a Universal Item Information Model 310 for an item that is an exemplary embodiment of the Universal Item Information Model.
  • the Universal Item Information Model for an item may be used to support a pluggable content model such that the model can describe any item using a generic item description (an AbstractltemKind 312) that is applicable to any type of information item.
  • the underlying item's format is preserved via encapsulating (or wrapping) the original item in a type-specific container item defined within the universal information model.
  • the type-specific container items are created using specialized component types that employ the Universal Item Information Model that has an Abstractltem kind component which describes any item using a generic abstract definition.
  • Extending the Abstractltem component via type-specific container item kinds allows the creation of a universal item information taxonomy that comprises various types of information, for example, BlogKind, CalendarKind, ContactKind, DocumentKind, LinkKind, MediaKind, etc.
  • the direct extensions from the AbstractltemKind are referred to as the base component types (and their instances are referred to as base components) since they describe generally an item component within a general domain, for example, a MediaKind component refers to generally all kinds of media item.
  • the base component types can be extended to additional specialized types to express specific characteristics, for example a PhotoKind extends the MediaKind.
  • the universal item information taxonomy will also be referred as the universal item taxonomy.
  • the type-specific container item kinds extend the Abstractltem component which is the base type of the model.
  • the Universal Item Information Model allows a system to represent and manage the access, distribution, management and actionability of any type of item by describing its schema using the Universal Item Description Language (UIDL).
  • UIDL Universal Item Description Language
  • the initial set of universal information item component types within the UIDL schema framework are expressed using the W3C XML Schema Definition (XSD) Language, but it is possible to describe the base and derived components of UIDL in various other object-oriented languages.
  • New types of content created by a user or a user-defined application can be expressed by defining a new component type that extends from the Abstractltem base type and/or from one of the existing base component types already defined within the Universal Item Taxonomy, for example, the DocumentKind or MediaKind if it is a new type of document-oriented or media-oriented content.
  • the new user-defined content (also referred as a new type of item) can be published or shared within a community of users as an instant of the newly defined component type.
  • the Universal Information Model supports an extensibility mechanism that is needed to model, describe and instantiate new content generated or consumed by a user or a community or an application. This extensibility mechanism is within the framework of abstracting an information item as an Abstractltem from which any specific kind of information item can be derived as a specialized type.
  • UIIM Universal Item Information Model
  • UIDL Universal Item Description Language
  • items expressed in UIDL can be stored in a database or in- memory cache, or transmitted on-the-wire over any communication channel (for example, HTTP, TLS, SMTP, SMS), or instantiated by an application service - all of these scenarios can employ the same description of the item based on UIDL.
  • Figure 16 illustrates an exemplary implementation of a data structure for an Abstractltem
  • Figure 17 illustrates an example of a schema describing an AbstractltemKind.
  • the AbstractltemKind is an abstract base type for all item content definitions (since all of the other item definitions are based on the Abstractltem and inherit the characteristics of the Abstractltem due to the inheritance of the object model) and is therefore reusable.
  • the Abstractltem provides the base characteristics of each item in a system.
  • the AbstractltemKind includes sub-components that describe the general characteristics of any item in one or more general characteristics elements, such as the data structure fields shown in Figure 17. These general characteristics are independent of the type of item and are included as part of the ⁇ ItemDetails> sub-element that Item instances inherit from the base type AbstractltemKind.
  • a set of examples of the general characteristics of an item are:
  • LogicalServerID this refers to some logical application and content server where the item is located and managed; this is also known as the cell server ID;
  • CreationTime the date and time when the item was published (or inserted) via an application; this time may or may not be original publication date or time of the content rather the time when the user actually inserted the content in a particular application and content server;
  • ItemID - specifies the unique item identifier of the information item
  • Title - specifies a title of the item, e.g., this may be the Subject of the email or title of a book instance;
  • the Abstractltem kind also includes sub-components that describe various semantic characteristics of any item (using one or more semantic property elements) as part of the ⁇ ItemDetails> child element that Item instances inherit from the Abstractltem component. These semantic characteristics provide capabilities to describe additional information about a specific content, i.e., item instance, in a personalized and context specific way such that it can be used for various search, information navigation and filtering and other actions applicable to a content of a certain type.
  • the semantic properties can be expressed uniformly for all kinds of information items by defining various semantic components within the Abstractltem component.
  • Zero or more system-defined connections (described in terms of Source and SysConnID) which are generated automatically.
  • certain types of content are received via a communication channel such as email instances (via SMTP protocol) or RSS data feed (via HTTP protocol) and there is a need to connect the received content (e.g., the email) with additional content that is referenced and/or is part of it.
  • email instances via SMTP protocol
  • RSS data feed via HTTP protocol
  • a Photo attachment or a URL link included in an email would result in system-defined connections between the email message instance and the Photo item and Link item instances.
  • the system- defined connections are described in more detail below with reference to
  • the Abstractltem specifies one or more general characteristic elements (that can contain general characteristics) and one or more semantic property elements (that can contain the semantic properties of a particular instance of an item) of each item in the model. Since the above generic characteristics and semantic characteristics are described in a generic way for any type of item (that may be content), the universal item information model can be used by various types of applications wherein the applications can uniformly process the generic and semantic components of any type of item. In one example of the use of the universal item information model, the flexibility of the universal information model can be used by a scalable and extensible media operating system which can host media-rich applications that will be shared and customized by a consumer-oriented user community or a business-oriented user community.
  • the model may have one or more core component types that are use case independent and are primitive data types.
  • the core component types may include an amount type, a binary content type, an identifier type, a measure type, a numeric type, a quantity type and a text type.
  • the listing of the core component types for the exemplary embodiment of the information model is attached as Appendix A that forms part of the specification and in incorporated herein by reference.
  • the model may also include one or more base components 314 (children of the Abstractltem) that are reusable item kinds that permit, in this example, a particular type of item/content to be stored using each particular type of item kind.
  • the base components may include a BlogKind, a ContactKind, a LinkKind, a MediaKind, a DocumentKind, a MessageKind, a CalendarKind, an EventKind, a To-DoKind, a TaskKind, a PhotoKind, etc wherein each of these base components inherit characteristics from the AbstractltemKind and then further define the characteristics associated with the particular type of item, such as a photo piece of content defined by the PhotoKind.
  • Some of the base components may have one or more extensions to additional of specialized kinds of sub-items, such as the MediaKind having an AudioKind, a VideoKind and a PhotoKind or the MessageKind having Email-MessageKind and a Text-MessageKind (that has a EVl MessageKind) wherein the sub-items inherit the characteristics of the ItemKind from which the sub-item is based and then contain further characteristics of the particular type of sub-item/content.
  • the BinaryDocument Kind inherits the characteristics of the DocumentKind and then has further characteristics that are associated with the binary document kind.
  • the schema may also include one or more aggregated components 316 that consist of combining and encapsulating multiple types of item kinds to create new complex item kinds focused on a particular industry or area. For example, we could combine as child elements a photo item of type PhotoKind with a note item of type NoteKind by defining a new aggregate and complex content type that encapsulates such item instances.
  • the schema may further include vertical application domain extensions that are specialized extensions of the AbstractltemKind. These items can be used for a particular vertical and/or community application domains.
  • the StructuredDataKind may include an ApparelKind, an AutoKind, a BookKind, a MovieKind, a MusicKind, a Real- EstateKind (for real estate related content/items), a VideoGameKind and a WineKind.
  • the universal information model also may include elements (for example data structure fields) that allow zero or more views, zero or more actions or zero or more constraints.
  • the views, actions and constraints can be described separately from the schema definition of the item kind such that they are referenced back to the item kind identifier. This way we can ensure that views, actions, and constraints can be associated with the type of the item.
  • views, actions, constraints can be defined at the AbstractltemKind component level such that they are inherited by the base components and other derived types of the base components.
  • the zero or more views describe ways of displaying instances of the particular base component type (such as an Contactltem kind in the example above). Examples of some views that could be supported for a specific kind of item may include 1) display the item in a list view. E.g., for a contact item display the first name and last name elements such that each contact item appears in a single line; or 2) display an expanded view that displays all base component meta-data that is applicable to that kind of base component. In both cases the applicable elements are specified as part of the view specification for the particular base component type.
  • Actions The zero or more actions may be applicable to processing an item of a given type.
  • Examples of generic actions that can be supported for all kinds of items are: Addltem, Updateltem, and Deleteltem.
  • Examples of some of the actions that could be supported for an item that is of particular type, for example, a Contact kind may include: addMember or import VCard.
  • Each type of action for a specific base component kind of an item in the item model shown in Figure 15
  • the action specification for the import VCard action for the Contact item kind may be:
  • a second example of an action that can be associated with an item kind are ones which refer to a one or more service providers that can process an item.
  • a photo item may have PrintAction that is processed by a web-based photo printing service provided by a third-party.
  • PrintAction that is processed by a web-based photo printing service provided by a third-party.
  • service provider that can process an action associated with a specific item kind:
  • the invocation mechanism and parameters are included in the specification such that the consuming application can compose and invoke the URL at run-time.
  • a third example is of an action (associated with an item kind) that is processed by a business process which is invoked by an API.
  • the zero or more constraints may be applicable to items of a given type (i.e., an instance of an item kind in the exemplary universal item information model).
  • the constraints may include type constraints and/or semantic constraints.
  • the type constraints for each child element of an item are part of the XML schema definition.
  • the semantic constraints may be applicable to any or all elements within the item.
  • the semantic constraints express which combinations of item element values are acceptable as possible values within the information system. For example, for an element representing a ⁇ PostalCode>, the constraint can limit the data entered by the end user to be numeric even if the type definition of this element is xsd:string type within the XML schema namespace.
  • the constraint can limit the data entered to be of a specific format and length.
  • Another example is that of a contact item can not have a child element ⁇ Gender> with value equal to "Male” and an another child element ⁇ Relationship> with value equal to "Mother".
  • the views, actions and constraints may be expressed in data structure specifications outside the item kind definition such that they are referenced (and inherited) via an identifier to the AbstractltemKind component which is the base type of all items, or referenced via an ItemKindID identifier to another base component that is derived from the Abstractltem kind, or referenced via an ItemKindID identifier directly to a particular item kind definition.
  • This way these views, actions and constraints can be applied to an item kind included in the universal item information model.
  • Figures 18A and 18B illustrate an example of a Contactltem kind.
  • the Contactltem kind has the item details and also has examples of the system and user defined tags wherein the system tags are generated by a system that utilizes the universal item information model while the user tags may be generated by the user of the system that uses the universal item information model.
  • Figures 19A and 19B show a PhotoKind that has the item details (the generic characteristics of the Photoltem) and both system and user tags.
  • the PhotoKind example also includes a photo and thumbnail that are incorporated into the PhotoKind.
  • the BookKind (shown in Figures 2OA and 20B) includes the item details, the system and user tags and also encapsulates a particular book ("The Haunted House") along with information about the particular book and the AutoKind (shown in Figures 21 A and 21B) includes the item details, the system and user tags and also encapsulates a particular car (a "Honda Accord") along with information about the particular car.
  • the universal item information model may have vertical application domain extensions that are specialized extensions of the ItemKind.
  • vertical application domain extensions that are specialized extensions of the ItemKind.
  • three techniques can be used to support extensions for vertical application domains and those techniques are:
  • Certain application domains may also need to combine existing kinds of content together for specialized complex types, for example, ⁇ Note> and ⁇ Photo> component may need to be combined for a particular type of aggregated component needed for the real- estate domain.
  • the new types of schema components could also be defined in its own XML schema namespace that is dedicated to a particular vertical application domain such that all the general and semantic characteristics and other applicable base component characteristics (if extension carried out from an existing base component type) are inherited by the extension defined within the namespace of the vertical application domain.
  • Figures 22A and 22B illustrate an external content model and Figure 23 illustrates examples of the content kinds generated using the universal information model.
  • the universal information model provides a model for handling external content.
  • External content typically will be in existing formats that are standardized for media files (for example, jpeg photo file or .mpeg video file formats), documents produced by various authoring tools (for example, .doc, or .txt or .pdf file formats), or other business documents that are formally defined and used by a community of users via XML-based Web Services (for example using an Item schema component representing an item for sale at Amazon.com or an item that is being auctioned by a seller at eBay.com; or, a Rental item described at some realtor site).
  • the mechanism employed to handle (i.e., allow storage, access and processing of) externally defined content will be by:
  • any kind of content will have fundamentally identical base type definitions that allow external content created by third parties to be generally processed by a system that uses the information model via a combination of generic Abstractltem handler for common information item processing functions and content-type specific handler to process the underlying format-specific content using a 3 rd party specific application library.
  • This approach allows seamless integration of external content which can be "plugged-in” to any system which uses the Universal Item Taxonomy since there is no need to transform the format of the external content.
  • Figure 9B illustrates an example of the data structure for the Kind that handles the external binary content.
  • FIGS 24A- 24D illustrate further details of the system-managed tag ⁇ SysTag> shown in Figure 17.
  • System-managed tags are used by a unit that stores the cells (a cell server) to automatically categorize an item based on a fixed set of semantic attributes of Time, Person, Location, Category and Rating which are refered to as the system-managed tag types. These system-managed tag types allow the system to extract relevant attributes from any type of item when it is published (i.e., created or inserted into the cell's database) and automatically categorize and map the value of the specific element within the item to a particular system-managed tag type.
  • system-managed tags are to enable searching, querying across a database containing many different types of content such in a way that allows certain common concepts to be accessed via system-managed tag types.
  • This automatic process of semantic categorization is uniformly carried out as part of inserting or updating any type of an item into the database locally managed by a cell.
  • Figure 24 A an example of the data structure for a system-managed tag is shown in Figure 24 A and an example of a model for the system-managed tag is shown in Figure 24B.
  • Each system- managed tag type may support one or more roles. The roles refer to specific elements within the ⁇ ItemDetails> child element within the AbstractltemKind and/or elements within specific base component type (extending the AbstractltemKind) that the item is an instance of.
  • the roles are used at run-time by the system to extract particular characteristics of an item that can be normalized (or mapped) to specific dimensions, i.e., types of system-level tags.
  • the values of these roles can either be determined on-the-fly at run-time by, for example, the XPath references to the actual values within the specific elements that are referenced for the roles or stored explicitly with item instances when they are inserted or published into the information system.
  • the system-managed tag model and structure implies that multiple roles can be specified for a particular type of system-level tag.
  • the above description related to system-managed tags implies that is applicable in a type- independent way to semantically extract relevant characteristics of any type of items according to well-known system level tag types.
  • the system-managed tags and roles are used to configure indices for each cell's database such that queries made as part of various search sessions directed at a particular cell's database can efficiently retrieve relevant items from the database based on the keywords entered by the user in the search interface.
  • the indices based on the system-level tags and roles are automatically cleared out and then the system-level tags are regenerated based on the updated information about the object in the database.
  • Figure 24C illustrates a general example of system-level tag types along with exemplary set of one or more possible roles and purposes associated with each type of system-managed tag.
  • the system-level tag type Time may define roles that reference the elements ⁇ CreationTime> and ⁇ ModifiedTime> (in the ⁇ ItemDetails> child element defined in the AbstractltemKind).
  • the two roles specified in this example for Time tag type for an item have the purpose of finding an item based on when the item was created or modified.
  • the Person system-managed tag type may have roles defined that reference the elements ⁇ CreatedBy>, ⁇ Source> and ⁇ Artist>.
  • the three roles specified in this example for the Person tag type have purposes of finding an item based on who created or owns or sent or published an item; or was the artist mentioned in the item.
  • the system-managed tag type Location may have roles defined that reference ⁇ WebPage> child element within a specific kind of item's definition (for example, a Contactltem kind), a ⁇ CityName> child element within an Address component of a specific kind of item (for example an Eventltem kind or Contactltem kind), ⁇ Postalcode> child element within an Address component of some specific kind of item, and ⁇ Geo-location> element that identifies the (latitude, longitude) of an item.
  • the roles specified in this example for the Location tag type have the purposes of finding an item based on where the item is located on the web or physically.
  • the Category system-managed tag type may have roles defined that reference elements ⁇ Organization> and ⁇ Genre>.
  • the two roles specified in this example for the Category tag type have purposes of finding an item based on the organization affiliated with the item; for example, this may be needed to find the contact item of a friend who works in a particular organization or company, or find an item based on the general concept or classification scheme that is associated with the item that happens to be a book item.
  • Rating system-managed tag type may have roles defined that reference the elements ⁇ Feedback_Rating> or ⁇ Movie_Rating> or ⁇ Reputation> or
  • Figure 24D illustrates an example of the system- level tags for the Contactltem kind shown in Figures 18A and 18B with the one or more roles and the purpose of each type of system-level tag for the Contactltem Kind shown in Figure 24D.
  • the ⁇ PersonName> child element of the Contactltem kind would be employed automatically by the system to generate a set of system-managed tags for the Person tag type with roles of ⁇ FirstName>, ⁇ LastName>, and ⁇ FullName>.
  • the values of these tags can be determined at run-time (using an XPath reference) by the system from the contents of the contact item (i.e., from the ⁇ PersonName> element).
  • the system also creates index entry corresponding to these elements representing roles for the particular type of system-managed tag.
  • such indices are updated in the document container of the XML database associated with the cell where the new item is inserted.
  • the roles associated with a particular system- managed tag will be driven by the type of system-level tag and the type of content (i.e., item kind).
  • item kind the type of content
  • the following pre-defined set of roles and XPath specifications would be employed at the time the contact item instance is inserted into the database of a given cell:
  • contextual information extracted from the item allows the system to aid in the finding experience of the user by exploiting at run-time system-managed indices that are generated automatically by the system against a standard set of tag types and a pre-defined set of roles corresponding to the set of tag types.
  • system tags when an object/item is modified in the data management system, the corresponding system-managed index entries for the item are automatically updated based on the new values of the roles (corresponding to the system-managed tag types) associated with the item/object.
  • the system-managed and user generated tags stored with item allow the uniform processing of semantic properties extracted from the items which are stored as document instance in the database and permit the data management system to provide searching capabilities wherein the searches can be based on the system and user defined tags consistently. Additionally, it should be appreciated that current keyword based searches to find relevant content available on the internet is limited since keywords may represent from the user's perspective various purposes that are not restricted or qualified by roles (as applied to system-managed tag types).
  • Figure 25 illustrates further details of the system defined connections shown in Figure 17.
  • System defined connection allow 1 -to-many relationships between a given item X and its associated items ⁇ A, B, C, ... ⁇ .
  • the origins of the item X is expected to be over some communication channel, for example an email transmitted over SMTP or a RSS data feed accessed over a transport protocol (for example HTTP or HTTPS).
  • a transport protocol for example HTTP or HTTPS.
  • associated items for the given item X there may be one or more associated items that are transmitted with or accessible via item X.
  • photo attachment that can be processed by the data management and subsequently saved as a Photo item (of type PhotoItemKind) in the database of the cell that belongs to the user who received the email.
  • contact information or web links embedded in the body of the email which when processed can be extracted as a contact item kind or as link item kind respectively.
  • RSS data feed there may be related set of content that can be parsed as corresponding item kinds and stored in the database of the cell that belongs to the user who subscribed to the RSS data feed. It is desirable that in such cases where the underlying content X has distinct set of content ⁇ A, B, C, ... ⁇ included with it or content ⁇ A, B, C, ...
  • the data management system which processes the content and subsequently stores it should preserve the relationships between the content such that when we access original content X the user has means to easily access the content connected to X, i.e., ⁇ A, B, C, .. ⁇ .
  • system defined connections can be between items of any types as defined in the Universal Item Information Model (UHM) and models 1 -to-many relationships using schema component defined within the Universal Item Description Language (UIDL).
  • UHM Universal Item Information Model
  • UIDL Universal Item Description Language
  • each system defined connection may include a ⁇ SysConnID> element and a ⁇ Source> element which are defined as child elements of the ⁇ ItemDetails> child element of the AbstractltemKind component type.
  • the ⁇ SysConnID> element describes a unique identifier for each system defined connection which is set by the system in the parent item X and all the child items ⁇ A, B, C, ... ⁇ which are system connected to the parent item.
  • the ⁇ Source> element could describe an email address or other unique identifier which is used to identify the source of the parent item wherein all items below the parent (i.e., contained child items such as attachments in emails) include the ⁇ Source> element.
  • the email address value representing the source can be determined from the contact item that the system generates from the "From:" field in the email header.
  • the format of the source will be a URI of the following format [Transport_Type]:[ID].
  • the [Transport Type] component could describe an identifier for some communication medium to push or pull content; for example acceptable values for Transport Type could be ⁇ Email, RSS,.. ⁇ .
  • the [ID] component could describe an identifier for the source that generated or published the content which implicitly has multiple items connected to it; for example, an email address of the user who sent the email could be the [ID] of the source, or username of the source, or URL where the the RSS data feed is available, etc.
  • the system will automatically add the ⁇ SystemConnection> elements ⁇ SysConnID> and ⁇ Source> in all child items ⁇ A, B, C, .. ⁇ connected to the parent item X.
  • the system will also automatically add in the parent item X the ⁇ SystemConnection> elements ⁇ SysConnID> and ⁇ Source>.
  • This will allow user to subsequently retrieve the parent item X such that the system can on-demand facilitate the retrieval of the child items ⁇ A, B, C, ... ⁇ via system connection links.
  • this will also allow user to subsequently retrieve the child items ⁇ A, B, C, ... ⁇ such that the system can on-demand facilitate the retrieval of the parent item X via system connection links.
  • Figures 26 A and 26B illustrate further details of the user defined connections shown in Figure 17.
  • the user defined connections permit a user to relate a given item with one or more related items in an information management system such that the connections between the items are implemented as two-way links specified in the item instance.
  • the user defined connections allow capturing of 1 -to- 1 relationships between two items of any type.
  • Figure 26A illustrates an example of the data structure for the related item type (which is the schema component for the user defined connection within the ⁇ ItemDetails> child element of the AbstractltemKind).
  • each related item has a URI that identifies the connected item, a KindID that identifies the kind of item on the other end, and a relation type element that defines the type of relationship by which the item containing the connection is related to the item at the other end of the connection.
  • the creation of an item-specific relation from Item A to Item B implies that two links are created (i.e., URIs being instantiated for two-way links), one from A to B and the other from B to A, such that the connection from A to B results in the update of Item A in the database and the connection from B to A results in the update of Item B in the database.
  • the relation URIs are then included as part of the XML data associated with the items.
  • the related item links are actionable since a user can click on a link to be transported instantaneously to the relevant item or display a list view of the connected item(s).
  • connection between the items that are 2-way links i.e., user can browse from item A to B using the link present in item A; or given item B browse from item B to A using the link present in itemB
  • connection between the item is typed, i.e., user can know what type of item is connected on the other end rather than the current web link scheme which is just a web page
  • actionable item which can be acted on locally, i.e., we can navigate from item A to item B or from item B to item A via the 2-way links as if the connected items were present locally (using the user defined connection mechanism).
  • the Situated Query Language of the data management system will be described in the context of the exemplary implementation that uses the Universal Item Information Model (UIIM) as the underlying information model for the data management system.
  • UIIM Universal Item Information Model
  • the query language can be used to formulate and capture "situated queries" that can be executed in a particular context, for example a query can be processed that returns information in context of a specified cell where a cell organizes a set of applications together with a database for those applications.
  • This approach of specifying a query is different from an SQL query. SQL queries are formulated "outside" the relational database and have no context beyond the database as a whole.
  • every Situated Query Language query is executed in the context of some cell.
  • a query can access various different contexts via a scoping qualifier which is used to specify the cells where the desired information items of interest may be present.
  • situated queries allow flexible search sessions to discover relevant items in an absolutely and/or relatively defined set of sources such that the underlying meaning of the query remains the same as we shift the context of the query. For example, "My Friend's music" has a different result but the same meaning for me than for you.
  • queries will be very useful to interactively search within different information bases and also allow integration of relevant content in a purposeful way.
  • Such queries can also be defined and employed in the simple creation of applications which can be used in multiple contexts (with the same meaning) without rewrites.
  • the query language and model described can leverage the standard XQuery Language and operates on any item that is modeled using Universal Item Information Model (UHM) and defined using the XML-based Universal Item Description Language (UIDL).
  • UHM Universal Item Information Model
  • UIDL Universal Item Description Language
  • the advantages of situated query language are: (a) the queries allow context to be addressed absolutely and/or relatively to the current cell; (b) queries take place "in context" as opposed to outside of the database; this means that applications developed in the context of given cell or a given account can be used with the same meaning in other cells or other accounts without change; this is essential for sharing of user constructed applications and the resulting network effects of sharing of user constructed applications; (c) the query model takes advantage of tagging, connections and user account (i.e., membership) in order to build the most general framework for access to content.
  • the query structure for the data management system will be of the following: Query [Type] [Scope] [PageSize] [MaxSize] [Expression] wherein each query has following required top-level components [Type], [Scope] and an [Expression] component and following optional top-level components: [PageSize] and [MaxSize].
  • the [Expression] component comprises the sub-components ⁇ conditions>, ⁇ kind>, ⁇ orderby>, ⁇ filter>, ⁇ connect>, ⁇ tag>, ⁇ groupby> and ⁇ count>.
  • Figure 30 illustrates the specification of a situated query having a scope declaration (sc) and a query expression (expr) and the query is evaluated related to a cell (c).
  • the specification of the operation scope (sc,c) has inputs that are the scope declaration sc and a cell instance c and the output returns a set of cells which have the value of the scope declaration sc.
  • the specification of the operation evaluation (expr, c) has inputs that are the expression and the cell instance and the output returns all items in the one or more cells (identified by the scope declaration) that match the expression.
  • the result of the query ⁇ sc,expr> evaluated at cell c is shown in Figure 30.
  • the [Type] of the query specifies the general type of content that the query intended to return.
  • the [Type] can be used to express that a query is for cells or items or tags or user accounts or application components or mixed set of resources (using a union operator).
  • the [Scope] is a formula determining a set of cells from which the result set will be generated.
  • the scope of the query enables targeted search to take place.
  • the scope may be 'THIS cell'; or 'My Photo Cell'; or 'All Cells owned by My Account'; or 'All cells to which my account belongs'; or 'All cells belonging to my friends'; or 'All cells belonging to contacts that have been tagged "friends" or 'music'", etc.
  • the query may be processed in two stages: first a computation of the scope yielding a set of cells that are relevant to the query; and second, the computation of the expression part of the query within each of those cells with the query result being the union of the results of evaluating [Expression] for each cell in the result of evaluating [Scope].
  • the format of the [Scope] specification may consist of 1) scope actions and/or 2) two or more scope actions combined together in various ways using set operations wherein the set operations may include "union" to aggregate cells, "collect” to chain one scope action with another scope action and other known set operations.
  • the scope actions are all evaluated in the in context of a cell instance such that we can qualify the results of the query (which in the most common case is the information item instances for which we are searching).
  • the expression of the scope actions may include any of the following methods: getCellOwner Action to retrieve information about the owner of cell from the database; getCellMembersAction to retrieve information about all members of the specified cell from the database; getCellsOwnedByAccountAction to retrieve information about all the web presences that a user has access to as specified in the database; getCellsWhoseMemberlsAccountAction to retrieve information for all the web presences that a user has access to as specified by the database; FilterByTag to filter provided objects (for example, cells and accounts) based on tag value such that the filter functions as a predicate which is evaluated in terms of the conditions being true or false.
  • the FilterByTag method will be very useful in situations where a user account is tagged in a particular way.
  • a private tag "friend" may be defined by a user for a particular account.
  • Such tags will be private tags such that only the user who defined the private tag can see and apply it as a filter using the FilterByTag method.
  • the FilterByTag can be used as a scope action to find cells belonging to particular accounts that have been tagged with a private tag.
  • the account of a particular user may be tagged privately as "friend" by a user that only the user can see and apply as a filter as part of subsequent query processing.
  • the user X can tag the contact item for the user Y as "friend” which may be public tag (on the contact item) and also tag the account of the same user Y as "friend” that is private tag such that the scope action can filter and search for cells that are belonging to accounts that are known by the user X to be of his or her friends using the private tags at the account level.
  • scope action specification which involves combining cell instances owned by a user with the cell instances that the user is a member of:
  • the [PageSize] of the query can optionally be used to specify the number of items (or objects) in the page of data to be returned in the query result such that the calling application can control the size of the result as a small subset within pages.
  • the [MaxSize] of the query can optionally be used to specify the maximum number of objects (for example items) to be returned in the query result.
  • the [Expression] of the query is used to specify the criteria of finding and returning information items stored in an application database (i.e., specific database containers associated with cell instances).
  • the format of the expression may consist of one or more of the following components: ⁇ conditions>, ⁇ kind>, ⁇ orderby>, ⁇ filter>, ⁇ connect>, ⁇ tag>, ⁇ groupby> and ⁇ count>.
  • the ⁇ kind> is used to specify the type of content the query will be returning, i.e., the query results will be of the type of content identified by the ⁇ kind> identifier.
  • the query will be processed by a cell that has a database of items of the ⁇ kind> equal to 'Photoltem' or a 'Contactltem'.
  • the ⁇ orderby> component is used to specify the XPath value to reference the child element within the item such that the query results can be ordered by the specific child element within item instances (in the result of the query).
  • the ⁇ orderby> component will also have the ⁇ direction> attribute that specifies whether the results are ordered in 'ascending' or 'descending' order, for example in terms of the last modified date of the item instance.
  • the ⁇ filter> component is used to specify the XPath value to reference the child element such that results of the query can be filtered by a specific child-element within the returned item instances.
  • the ⁇ connect> component is used to specify that the returned items should be connected to (i.e., related to) the item referenced by the specified ItemID (which uniquely identifies an item instance).
  • the ⁇ tag> component is used to specify that the returned item instances have a specific tag value which may be in either the user-defined tag or system-managed tag.
  • the ⁇ groupby> element can optionally be used to specify the format of the results of the query, i.e., how the returned information or items should be grouped, for example, using one or more key values in particular elements within an item to group the data in the query result.
  • the ⁇ count> element can optionally be used to specify the number of items to be returned in the query result.
  • two or more sub-expressions may be combined using the ⁇ join> operation element with the ⁇ type> attribute used to specify whether the sub-expressions will be combined using the logical operators such as 'or', 'and', and 'not'.
  • Figure 27 illustrates an example of an application component definition for a ContactComponent which includes a query to retrieve a Contactltem.
  • the Contactltem includes a Contacts ItemList and a ConnectedContacts wherein both include a query as shown in Figure 27.
  • Figure 28A illustrates a set of run-time code for the query to fetch all of the Contact items in a sorted order using the known W3C XQuery's FLWOR (for-let-where- orderby-return) expression.
  • the XQuery is executed by the XML Database which returns the contact items, as an ordered list based on person's last name, from a DB container (associated with the cell) which has a collection of XML document-style item instances.
  • Figure 28B illustrates a set of code for the query to fetch all of the connected items for a given contact item (identified by an itemID) and for a given cell. This code is generated by the query processor. To further illustrate the query language of the system, several additional examples of cell-level queries are provided below.
  • the query (which is formulated in this example using the provided Java code sample) returns all that are of type ContentKind or LinkKind such that they are present in cells that either the specified user owns or the specified user is a member of the cells:
  • the query returns all items that are of type ContactltemKind and filters the result using the ⁇ FirstName> of the contact instance such that the specified user owns or is member of the underlying cell where the item is present:
  • the query returns all items that have the specified URI link (referencing specific content) such that the specified user owns or is member of the underlying cell where the contact is present:
  • the query returns all items that are connected to the specified item instance such that the specified user owns or is member of the underlying cell where the item is present:
  • the query returns all items that are of specified Item kinds (identified as Item KindIDs) and connected to specified item instances and including specific system- or user-specified tags and sort the results in descending order by the last modified date such that the specified user owns or is member of the underlying cell where the item is present:
  • the query returns all items that are of specified ItemKinds (identified as Item KindIDs) and connected to the specified item instance and including specific system-managed tag of specified type and with specified role and sort the results in descending order by the last modified date such that the specified user owns or is member of the underlying cell where the item is present:
  • the tags permit items to be sorted and filtered.
  • the items can be sorted by basic item attributes (as defined in the Abstractltem Kind definition) such as source (originator), creation date, date modified, subject, and system-managed tags such as person (for example, the item creator), location, time, category, kinds, ratings and other general tags, i.e., user-defined tags.
  • the filtering may be done based on the tags, such as the Person tag, the Location tag, the Time tag, the Category tag, the Kinds tag, the Rating tag, the user-defined tag or all of the tags.
  • Figure 29 illustrates a connection model of the data management system.
  • the item connection model will be described in the context of the Universal Item Information Model (U ⁇ M) of the exemplary embodiment of the data management system.
  • an item may refer to a related item via a connection relationship model where item relationships are specified by ns:RelatedItemType that describes an Item Reference that is a URI and a relation type that is a user-defined tag to describe the type of relation between the two item instances.
  • ns:RelatedItemType that describes an Item Reference that is a URI and a relation type that is a user-defined tag to describe the type of relation between the two item instances.
  • two connections/relationships are shown along with the ns:RelatedItemType data structure.
  • Figures 18A and 18B also illustrate a Contentltem type that has the connections using the RelatedltemType data structure.
  • the connections and relationships permit the data management system to provide one or more zoom-levels to access an item instance.
  • each instance may have a default zoom- level for the particular ItemKind.
  • the Zoom levels may include Zoom Level 0 (where metadata only is retrieved along with any encapsulated data components), Zoom Level 1 (where metadata and all immediately related item instances are retrieved), Zoom Level 2 (where metadata and any specific related items specified by the user are retrieved, Zoom Level 3 (where no metadata, but all related items are retrieved) and Zoom Level 4(where no metadata, but all specific related items are retrieved).
  • connections may be stored in a connection element for each item and may be either system generated or user generated.
  • the user generated connections permit purpose-based and object-oriented, two-way linking of related items. Examples of system generated connections for a contact item are shown in Figure 18A above.
  • a transport-oriented source e.g., email
  • the content is parsed into its applicable item kinds that may include, for an email message for example: attachments, sender information (parsed from the 'From:' header field of the email) and the message body including Links and Embedded Photos.
  • a user can connect any item of any type with an item of any other item type wherein an item can be connected to n number of other items.
  • only persons authorized to work with a particular item can create connections from/to that item.
  • the data management system permits queries to retrieve the related items.
  • the query will return for a given cell (a) all system defined connections (i.e., all items that came in with the selected item), (b) all items that are first level of user defined connections, (c) and the contact that sent the item.
  • the connected items would be accessed by the data management system using the ItemID of the connected item which would be the value set in the ⁇ ItemReference> element within the ⁇ RelatedItem> child element of the base type AbstractltemKind.
  • the query for retrieving related items wherein the user has selected a contact item and needs to see all items connected to the selected contact item instance, the query needs to fetch all the items from the contact and show them as related items to the Contact item selected.
  • the query results returned for a given cell in the data management system will include (a) contact (which should correspond to the ⁇ Source> element in the related items), (b) all items sent from that contact (for example, emails, photos, and any other type of items), (c) all items connected to the selected contact item.
  • the ItemID which is set in the ⁇ ItemReference> element within the ⁇ RelatedItem> child element of the base type AbstractltemKind
  • the query for retrieving related items wherein the item is of type EmailMessageKind i.e., user has selected an email and user wants to see connected item to the selected email.
  • the query results returned for a given cell in the data management system will include (a) the selected email item , (b) all items that are system defined to the email, i.e., all items that were originally to the email and/or parsed from the message body (for example, a web URL link or an email address embedded in the email message body), and (c) the contact item for the person who sent the message (i.e., the 'From:' field of the email header).
  • the ItemID which is set in the ⁇ ItemReference> element within the ⁇ RelatedItem> child element of the base type AbstractltemKind

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

An application interface model and method are provided that specifies the user interface and visual components of an application including the data that is involved to compute a presentation element state and the presentation of the presentation element. The view (or layout or format) of each presentation element defines how data is presented to end-users and relays user actions back to controller (which includes actions that are local procedures/methods and also optionally event handlers).

Description

INTERFACE DEFINITION FOR IMPLEMENTING CONTEXTUAL APPLICATIONS
Dr. Alan Bush
Michael Galpin
Zahid N.Ahmed
Valeriy V. Pelyushenko
Herbert Wayne Stiel
Shashi P. Suravarapu
Rob Hoexter Joshua Brunaugh
Priority Claim
This application claims priority under 35 USC 119(e) and 120 to US Provisional Patent application Serial No. 60/921,052, filed on March 29, 2007 and entitled "Interface Definition for Implementing contextual applications" which is incorporated herein by reference.
Appendices
Appendix A (46 pages) is a listing of the base component and types of an exemplary embodiment of the information model (using a Universal Item Description Language described below) and forms part of the specification.
Appendix B (7 pages) is a listing of the code for an exemplary Application Definition Language (ADL) extended markup language (XML) schema definition (XSD) and forms part of the specification.
Appendix C (13 pages) is a listing for a set of the code for an exemplary Widget Definition Language (WDL) extended markup language (XML) schema definition (XSD) and forms part of the specification.
Appendix D (9 pages) contains two code examples for the format/style sub-elements of the type specific information that is part of the WDL for each presentation element and forms part of the specification. Field of the Invention
An interface definition for implementing contextual applications is provided. Background
Currently it is a difficult and costly process to develop, re-use, share and modify interactive web applications that take advantage of local and remote services and functions in context of general purpose web sites. Typically a web site development process requires that the web site builder develop the application (that will be employed by the pages served by the web site) using some programming language, such as PHP which is a common language amongst web site and internet application programmers, that typically implement the presentation logic, application logic and data access logic in a monolithic program. Although rapid prototyping and deployment of application may be possible for some programmers, it would be time consuming for non-programmers to develop interactive web applications and components. This is a major limiting factor in supporting mass development, customization, revision, and re-use of web application and components and also a major limiting factor in the design, building and re-use of web sites that host pages that have embedded in them various web components that invoke web accessible applications and services on a web site. Conventional web site development tools require a developer to write code in order to generate the interfaces for the web site. However, it is desirable to provide a system that quickly creates interfaces for a web site without coding. With the current system, a developer cannot introduce extensions to the interface independently of the specific interface specification and cannot provide type-based interface specifications independent of the specific application features. In addition, a developer with the typical system that requires coding cannot automatically generate user interfaces based on the feature specifications. These conventional systems also do not permit the developer to easily generate multiple interfaces for the same underlying application. The lack of ability to easily generate the multiple interfaces means that it is more difficult for a developer using the typical tools to generate interfaces for different levels of user sophistication (a beginning user interface vs. an experienced user interface), interfaces for different environments (such as web browsers, mini browsers, J2ME clients, WAP browsers and voice systems) , localized interface for different countries and multiple mode interfaces (such as a conversational interface, an interactive interface and a service oriented user interface.) Thus, it is desirable to provide a system and method for defining the interface specifications for general purpose web presences, such as web sites and web services wherein the interface specification (for example, the user interface) is decoupled from the computational aspects of the web presence and overcomes the above limitations with typical systems and it is to this end that the present invention is directed.
Brief Description of the Drawings
Figure IA illustrates an abstract model for a web presence that uses a widget definition language to define the presentational aspects of the web presence separate from the computational aspects;
Figures IBl and 1B2 illustrate further details of the widget definition language portion of the abstract web presence model in Figure IA;
Figures ICl - 1C3 illustrate further details of the model portion shown in Figure IB;
Figures IDl - 1D5 illustrate further details of the views portion shown in Figure IB;
Figure IE illustrates further details of the type specific information portion shown in Figure IB;
Figure 2A illustrates an example of a cell instance data structure of a web presence shown in Figure IA;
Figure 2B illustrates an example of a contact management web presence for a particular user;
Figure 3A illustrates the interaction between WDL and ADL objects when a presentation element is requested;
Figure 3B illustrates the class structure that supports the WDL/ADL interactions;
Figures 3C and 3D illustrate the UML for the application and presentation element interactions;
Figures 4A - 4D illustrates an exemplary message board presentation element implemented using the WDL; Figures 5 A-5D illustrates an example of a calendar view implemented using WDL;
Figure 5E - 5K illustrate a set of examples of the user interface provided by the calendar view;
Figures 6A-6B illustrate an example of an add operation and an update operation implemented in WDL;
Figures 7A-7C illustrates an example of a connected items operation implemented in WDL;
Figure 8 illustrates an example of the code used to implement a web presence template catalog;
Figures 9 A and 9B illustrate an example of autos web presence and a book web presence, respectively, generated based on the catalog shown in Figure 8;
Figures 10A- 1OC are examples of the WDL and ADL code that generates the auto web presence shown in Figure 9A;
Figures 1 IA - 1 IF are example of the WDL and ADL code that generates the books web presence shown in Figure 9B;
Figure 12 illustrates a data management system;
Figure 13A illustrates a storage model of the data management system where a cell instance, functioning as a server that host both application and content server, has a dedicated database container that employs a storage device;
Figure 13B illustrates more details of the data management system shown in Figure
13 A;
Figure 14 illustrates an example of a piece of Java code that can be invoked to create an item instance in a dedicated database container (for a particular cell instance) that can store a collection of XML document instances of any XML type is shown in Figure 12;
Figure 15 illustrates a Universal Item Information Model; Figure 16 an exemplary implementation of a data structure for an AbstractltemKind;
Figure 17 illustrates an example definition of BasicItemDescriptorType used to describe the <ItemDetails> child element included in an AbstractltemKind;
Figures 18A and 18B illustrate an example of a Contact item;
Figures 19A and 19B illustrate an example of a Photo item;
Figures 2OA and 2OB illustrate an example of a Book item;
Figures 21 A and 21B illustrate an example of an Auto item;
Figures 22A and 22B illustrate an external content model;
Figure 23 illustrates examples of the content kinds encapsulated using the Universal Item Information Model;
Figures 24A- 24D illustrate further details of the system tag shown in Figure 17;
Figure 25 illustrates further details of the system defined connections shown in Figure
17;
Figures 26A and 26B illustrate further details of the user defined connections shown in Figure 16;
Figure 27 illustrates an example specification of application component that can process Contact items;
Figure 28A illustrates a set of code for the query to fetch all of the Contactltems in a sorted order;
Figure 28B illustrates a set of code for the query to fetch all of the connectedContacts for the Contactltem shown in Figure 15;
Figure 29 illustrates a conceptual model of user-defined connection from a given an item to a set of related items user-defined connection model; and Figure 30 illustrates the specification of a situated query having a scope declaration (sc) and a query expression (expr) and the query is evaluated related to a cell (c).
Detailed Description of an Exemplary Embodiment
The invention is particularly applicable to a XML-based interface definition that uses a Universal Item Information Model (UIIM) and it is in this context that the system and method will be described. It will be appreciated, however, that the interface specification system and method may use other types of information that is not specifically stored in the described Universal Item Information Model and may be implemented using languages and schema other than XML. A web presence may include a web site, one or more web pages or a web service. The web site may consist of set of data that can be accessed for particular context and a set of applications. An Application Definition Language may be used to define the applications and components (the computational aspects) of a web presence, such as the web site, and made accessible via the pages that are served by the web site (and which reference the application and its components running on the web server of the web site). A Widget Definition
Language (WDL) may define the interface aspects of each web presence including the user facing aspects of each application of the web presence. All the data of any type managed by the abstract web presence can be described in the exemplary implementation using a Universal Item Description Language (UIDL) and the presentation of the applications can be described in the Widget Description Language (WDL).
The system and method for defining interface definition functionality for general purpose web presences (using a Widget Definition Language (WDL)) may be implemented, in an exemplary embodiment, using the known XML language with a corresponding WDL XML Schema definition (XSD) which is attached as Appendix C and forms part of this specification. The XSD is merely illustrative since the WDL may be implemented using other XSDs and may be implemented in languages other than XML. The WDL may be used to define the interface of an application that interacts with one or more cells (described below) and one or more components in a standardized language, such as a XML-based language. The XSD definition of the interface may be used to enable the consistent definition of the interface and allow third party application developers to use various known plug-ins to develop interfaces for web presences. The ADL, described in a separate co-pending patent application, may be implemented, in an exemplary embodiment, using the known XML language with a corresponding ADL XML Schema definition (XSD) which is attached as Appendix B and forms part of this specification.
The interface definition for an application specifies the user interface and visual components of an application. The user interface and visual components of the application are implemented using one or more presentation elements. Each presentation element includes the data that is used to compute a presentation element state and the presentation of the presentation element. The view (or layout or format) of each presentation element defines how data is presented to end-users and relays user actions back to controller (which includes actions that are local procedures/methods and also optionally event handlers). The WDL may be implemented as code/language that is instantiated in a plurality of lines of computer code that are used to generate the interface aspect of a web presence as described below. The WDL can also be implemented as a schema/data structure that is resident on a memory device. Figure IA illustrates an abstract model for a web presence 100 that uses a widget definition language to provide a model/method for defining the presentational aspects of the web presence. The ADL 106 provides a model/method for defining application functionality for web presences that is described more fully in co-pending patent application serial no. 11/XXX5XXX filed on February 2, 2007 and entitled "System and Method for Defining Application Definition Functionality for General Purpose Web Presences" which is incorporated herein by reference. The web presence defined partially by the ADL may include a presence that has a user visual interface portion (such as a web page or a web site) or an application that performs computations, but does not provide a visual user interface, such as a web services. Thus, the model for the web presence may include one or more pieces of content 102 (defined using the UIDL described below) and one or more applications 103 that provide functionality to the web presence. Each application is a declarative, nonprocedural definition to a particular functionality that can be part of the web presence. Each application may further comprise a presentation portion 104 (defined using WDL) and a computation portion 106 (defined using the ADL). ADL provides a framework to define the various computational aspects of the web presence while the WDL defines the presentation aspects of the web presence (and makes the application visible to a user). WDL is an abstract approach to implementing the well known model-view-controller style application interface that provides a web presence developer (without coding) a way to describe the interface/presentation aspects of the application by defining one or more portions of each presentation portion as described below with reference to Figure IB. The WDL permits a developer to generate an interface aspect of the web presence without coding. The WDL also permits the developer to introduce extensions to the interface independently of the specific interface specification and provide type-based interface specifications independent of the specific application features. In addition, WDL allows the developer to automatically generate user interfaces based on the feature specifications. WDL also permits a developer to easily generate multiple interfaces for the same underlying application so that the developer can generate interfaces for different level of user sophistication (a beginning user interface vs. an experienced user interface), interfaces for different environments (such as web browsers, mini browsers, J2ME clients, WAP browsers and voice systems) , localized interface for different countries and multiple mode interfaces (such as a conversational interface, an interactive interface and a service oriented user interface.)
Figure IBl illustrates further details of the WDL portion of the abstract web presence model in Figure IA. Figure 1B2 illustrates an example of the UML for the presentation element of the web presence. In particular, the WDL portion of the abstract web presence model may be used to define one or more presentation elements that are part of the web presence wherein each presentation element 105 includes one or more sub-elements. The sub-elements may include a model portion 104a, a views portion 104b and a type specific information portion 104c. The model for each presentation element (described below in more detail with reference to Figure 1C) defines the types and instances of data (items in the preferred implementation) displayed/acted on by the particular presentation element, descriptions of the items to be displayed using queries, descriptions of the connected items to be displayed and/or acted on using queries and references to variables in the application component, references to properties that the user can modify to alter the behavior of the presentation element (for example, query's scope, name of the presentation element, and other look and feel attributes of the presentation element that would enable personalization of the presentation element for the user), and the actions/methods/operations that can be taken on all or a portion of the data that are part of the particular presentation element. An example of the operations are described further below with reference to Figures 6A-6D and Figures 7A-7C. The views portion for each presentation element (described below in more detail with reference to Figure ID) define a number of different ways of presenting the data for a particular presentation element and enabling uses to select some or all of the data and/or allow the user to choose actions to be applied to the selected data. An example of a calendar view is described below in more detail with reference to Figures 5A - 5D. The type specific information portion for each presentation element (described below in more detail with reference to Figure IE) define the data type specific displays, actions and validation rules. An example of a message board presentation element is described below with reference to Figures 4A- 4D.
Each presentation element can contain other presentation elements so that nested presentation elements may be provided. The presentation elements have a naming scheme so that messages can be sent to presentation elements within a web presence, or presentation elements within presentation elements, presentation elements via a scoping mechanism, or presentation elements containing a presentation element. Every presentation element has a home web presence that determines absolutely or relatively the base which is used for evaluating computation within the presentation element (especially queries) wherein a presentation element displayed in its home web presence is a local presentation element while a presentation element displayed in a web presence other than its home web presence may be known as an aliased presentation element. Presentation elements can be copied and a copied presentation element can be pasted into any web presence as a local presentation element, or as an aliased presentation element. When pasted as a local presentation element, the presentation element's home web presence is set to the web presence in which it is pasted. When pasted as an aliased presentation element, the presentation element's home web presence is left unchanged.
Figure ICl illustrates further details of the model portion 104a shown in Figure IB. Figures 1 C2 and 1 C3 illustrates an example of the UML for the presentation element model and further details of the elements of the model, respectively. The model portion for each presentation element further comprises a set of data 104al (the different types of items defined by the UIDL in the exemplary implementation) that describes the one or more types of data associated with the particular presentation element. The model portion further comprises variables and formulas 104a2 wherein the variables may be presentation element level variables (calculated in a component associated with the web presence within which the presentation element is defined). The variables, like other variables in the system, automatically recalculate their value. In the exemplary implementation, the values of variables can be any of the data component kinds, any item kind and/or a list of items. The variable may include a formula (xsd: anyType) wherein the formula can refer to other variables and there may be either constant formulas, variable reference formulas, query- oriented formulas, or compound formulas made up of an operator and some number of sub- formulas. The optional elements for a Variable may include an Order [Reference, e.g., XPath] that has the required attribute of a name. The formula associated with a presentation element may contain a situated query (described below in more detail with reference to the Query Language & Structure section) that retrieves the data to be displayed and/or acted on by the particular presentation element.
The model portion 104a further comprises zero or more methods 104a3 that are associated with the particular presentation element. The methods defined in the model are then applied to the data associated with the presentation element. The methods may include standard parts of the presentation element, external calls and/or component level methods. The methods of each presentation element are procedural, with parameters so that, for example, messages can be sent to presentation element methods. The methods use Java or scripting language for implementation and the implementation may include calls to an underlying operating system.
Figure IDl illustrates further details of the views portion 104b shown in Figure IB. Figures 1D2 - 1D5 illustrate the UML diagrams for the views portion, the table view, the list view and the tree view, respectively, that are part of the views portion. The views portion of each presentation element may include one or more views 104bl, a set of view specific attributes for each view 104b2 and one or more view level operations 104b3. Each presentation element has a default view type and the one or more views for each presentation element may include the following illustrative examples: • List view (aka Compressed List) • Detail view (aka Expanded List)
• Icons
• Calendar - date/role - do by the date tag and possibly restrict roles
Relevant to CalendarKind ■ Same as List view
• Map - address/role - could do location, tags and possibly restricted roles
Applicable to all item kinds that have a location tag and/or an address element
• Tags list (system/user) ■ Expose tag filtering operation at web presence or page level
Item instances will be tagged initially
Click a tag at web presence level, all item instances (with matching tags) shown will be with respect to that tag in all the presentation elements ■ Related items shown will also be with respect to tag
• Group by kinds
Groups the items by kinds
• Light-box view - shows one item at a time; and can move backward and forward - for certain kinds of applicable items ■ Same as Detail view
An example of a calendar view and its details are described below with reference to Figures 5A - 5D.
Each view associated with the presentation element supports the one or more view level operations 104b3 wherein the one or more operations for a particular view are customized to operate with the particular view. An illustrative list of exemplary operations are: View as
• Sort by (to sort by basic item attributes (described in the Universal Item Information Model below) that may include source (originator), creation date, date modified, subject and any Kind specific field) and a filter function (to filter by basic item attributes that may include source (originator), creation date, date modified, subject and tags (described below) of the following types: person, location, time, category, kinds, rating and/or general)
Filter by
Next Item - only apply to certain view types ■ Previous Item - only apply to certain view types
Inspect — any kind of presentation element (or item)
New Item (if it is a folder presentation element, i.e., item is scoped to a folder)
Paste (if it is a folder presentation element)
Paste as list (if it is a folder presentation element) ■ Select All
Select multiple items (via cntl+click) — these are disjointed items
Select single item
Select a range of items.
Each presentation element may also include a set of commonly defined item level operations that can operate on the items in the presentation element. These operations may include a send operation, a send as message operation, an add note operation, a show related item operation and a create connection between items operation. For example, the following operations are applicable to one or more selected items:
• Send [selected item(s) via message] o Message includes one attachment per item instance o Attachments include item specific meta data but not the file/content (e.g., jpeg). Recipients could be system based or external addresses o For external addresses we will need to include the attachment as pass- by-value o For internal addresses we will need to include the attachment as pass- by-reference • Send [selected item(s)] to: o Send mail message operation exposed at web presence level for a given account o To: a destination (see Recipients below) o Recipients ■ Web presence - ability to send to a folder presentation element within a web presence
Account (i.e., home web presence) • Member
Email Address (internal Roost-based or external e-mail address)
• Print
• Delete
• Add Tag (general tags)
• Add User defined Connection
As another example, these operations are applicable to a single selected item:
Reply/Reply All
■ Applicable on single item
■ Applicable if sender/source is addressable (e.g., not for RSS feeds)
Detail View (i.e., full view of an item) by double click ■ Add notes
■ Items have notes as part of the item instance ■ User can only add notes if he/she has "write" access-rights
■ Notes can be added to a single item that has been selected
■ Show Related Item(s)
■ Context sensitive rules show the items which are related to the selected item. Can show related actions as well.
• (For Contact items only) Add Contact as a Member
Triggers invitation from one member to another member that is a contact
Edit Item
Allows item contents to be edited.
The view specific attributes 104b2 of each presentation element may include Display
Fields, Sort Elements, Filter Elements, Page Size, Refresh Rate and Actions. The Display Fields specify the elements within the ItemKind definition (see the exemplary information item model below in Figure 15) that will be displayed in the presentation element based on the schema definition of the item kind which is defined using Universal Item Description Language (UIDL).
The Sort Elements may include, for example: (a) CreationTime (which is a child element within the ItemDetails element of AbstractltemKind), (b) Title (which is a child element within the ItemDetails element of AbstractltemKind), (c) a user defined tag, and/or (d) system managed tags. Several examples of the Filter Elements may be filtering by all the user-defined tags and system managed tags. The Page Size represents the number of items displayed (and retrieved from the database) in a page that is served to the user for the presentation element. The Refresh Rate describes the interval of time before the data displayed in a presentation element is updated by pulling fresh data from the database of the cell associated with the items.
The initialization of actions allows for the state of the presentation element to be changed when switching views. These drive the table view (also known as "list view"), lists (also known as "expanded list view") , calendar, and tree views. The "detail view" of an item, should be driven by the Item kind definition, expressed using the Universal Item Description Language (UIDL), for the item kind which specifies which elements to show to the user. The Actions pertain to the set of data displayed in the presentation element or a subset of data displayed in the presentation element such that the selected data (i.e., items) can be processed by the action selected by the user, such as for example, updating an item or copying item(s) or sending item(s) to some target destination.
Figure IE illustrates further details of the type specific information portion 104c shown in Figure IB. The type specific information portion for each presentation element may include one or more packages of formats/styles 104cl, one or more packages of validation rules 104c2 and one or more packages of type specific actions 104c3. The format is a structural description of layout and the style allows specification of hints for rendering the user interface associated with the presentation element. Each presentation element can be rendered on any of the supported devices wherein each device has a presentation element renderer and each renderer can make use of the style hints. An example of two code snippets that contain the style and format information are contained in Appendix D that forms part of this specification.
Figure 2A illustrates an example of a cell instance data structure of the web presence shown in Figure IA. The web presence model may include a presentation layer 110 and an application layer 112. Thus, each element of the application layer has a corresponding presentation layer element. For example, each cell 100 corresponds to a web presence 114 wherein each web presence is an instance of the cell that has the presentation portion and the computation portion as described above. A particular web presence 114 may include one or more presentations that are defined by the presentation definition (the WDL). A particular cell 100 may include one or more component instances 116 that are defined by the component definitions. Each component instance (a particular action/operation of the web presence) has a corresponding presentation portion 118. Each cell instance is a packaged web application in that it contains the application as well as the data/content associated with the application that may be stored in a database contained within the cell instance. Each component 116 contains definitions of variables, properties etc. that determine the computational model of the application while each corresponding presentation defines a mapping from the component model to visual components, e.g., what data is involved to compute presentation state. Figure 2B an example of a structure of a web presence 114. Each web presence is a set of one or more applications and a database local to the web presence, with a member list and role based permissions. The application is a set of interrelated components with variables. Each view on a web presence has its own instance of the application, with its own set of variable values. As shown in Figure 3 A, the web presence may include the one or more applications 120 that define declarative aspects of the web presence, procedural method for the web presence and the presentation for the particular web presence and a database 122 associated with the web presence that may include an index. The web presence may implement one or more processes/operations/functions 124. The operations may include role based permissions for the web presence that define which users can view/modify/delete the information associated with the web presence. The web presence may also include object oriented recalculation in which, when information or data is modified in the web presence, any other information or data in the web presence that has an association with the modified information or data is automatically recalculated and updated (which may be known as a refresh.) The web presence also includes business process and workflow processes as well as inter-application communication (events and messaging) between the one or more applications that are part of the web presence and other web presences. The web presence may also include automatic data transformation in which the web presence transforms data as needed, type based actionability and an activity log, audit trail and metrics. Now, examples of the interaction between WDL and ADL objects is described in more detail.
Figure 3A illustrates the interaction between WDL and ADL objects when the presentation element is requested. The diagrams illustrate that the ADL code (used to implement the computational aspects of an application) interact with the WDL code (used to implement the presentational elements of the application) to provide the application functionality to the user. The interaction also means that, for example, a change in a variable caused by the execution of the ADL code will cause that variable to change in the WDL code and also change the view presented to the user. Similarly, a change in a variable during the execution of the WDL code will cause the same variable in the ADL code to change which may affect the computational aspects of the application implemented by the ADL code. As shown in Figure 3A, a client computing device that is going to display a presentation element of a web presence requests a particular presentation element of a web presence, such as a message board presentation element described below, by providing the client device information, user context, a particular view for the presentation element (or the default view if one is not specified) and the cell containing the requested presentation element (A). Next, a widget model is initialized based on the definition of the particular presentation element (implemented as WDL code 104), the device information (which may influence the style hints), the user context (to determine the proper objects acted on the presentation element and the cell (B). Based on the user context contained in the presentation element, a query is submitted by the application component associated with cell in which the presentation element is located (C). The query results are used to set or reset the variable in the application component (D). The presentation element model that obtains the value of the variable or the results of the query via referencing or events (E). Then, the data in the presentation element model (e.g., one or more items with different kinds in the exemplary implementation) are used to render the visual output of the presentation element using the style/format and using a particular view type as specified by the request (F).
Figure 3B illustrates the class structure of the WDL/ ADL interactions that is used to implement the process shown in Figure 3A. The presentation element model notion is divided into a domain model and a view model. The domain model is a classic domain model, containing methods for retrieving data (getltems) and for performing operations (executeAction.) The ComponentBaseModel class implements this by using a component that is defined in using ADL code. It uses methods such as getValue to retrieve data and set Value to change the value of variables in the Component. It also uses the getAction method to retrieve an Action object that can then be used for performing an operation defined in the Component. The ViewModel deals with more UI related things. Subclasses add features specific to their UI representation, such as a TableViewModel. The TableViewModellmpl is a full implementation that can be used for a single view of a presentation element (TableModel) or as one view of a multi-view presentation element. The single view model, TableModel uses the ComponentBasedDomainModel for its DomainModel implementation and a Table ViewModellmpl for its ViewModel implementation. It also implements the Generic WidgetModel interface. This is the interface dealt with by the WidgetController. Figures 3C and 3D illustrate an example of the presentation element reference to the application component UML diagram that further illustrate the interaction between the WDL (the presentation element code) and the ADL (the application component code).
Returning to Figure 3B, the WidgetModel interface specification shown in Figure 3B is a public interface for WidgetModel that includes the following variables and methods:
• String getUiLabel - returns the UILabel
• String getWidgetld - returns the ID of the Widget which is used to uniquely identify a widget
• String getWidgetType - returns the type of widget
The AbstractWidgetModel is a public abstract class that implements the WidgetModel and has the following variables and methods:
• String getUiLabelO - returns the UILabel
• Widget getWidgetDefinition() - returns the WDL definition of a widget
• String getWidgetldO - returns the ID of the Widget which is used to uniquely identify a widget
• String getWidgetType() - returns the type of widget
The Generic WidgetModel Class is a public interface that extends WidgetModel and has the following variables and methods:
• DomainModel getDomainModel() - returns an instance of the Model which encapsulates the variables, actions, and items.
• ViewModel getViewModel() - returns a reference to the view model in terms of the type of the view and identifier to the view • String getXmlStringO - returns the string representation of the underlying XML-based data in the model
• Element toXml() - returns the XML document instance corresponding to the model
The ComponentBasedDomainModel Class is a public class that extends the
AbstractWidgetModel that implements DomainModel and has the following variables and methods:
• AbstractItemKind[] getltem - returns an array of items instances corresponding to the underlying WDL model where the item data model may be based on Universal Item Information Model and corresponding XML instance of the
Item may be defined in Universal Item Description Language
• ActionReturnType executeAction(String actionName, Object[] params) - returns the result of executing an action.
Figures 4A - 4D illustrates an exemplary message board presentation element implemented using the WDL. In particular, Figure 4A illustrates an example of the user interface of a message board presentation element, Figure 4B illustrates the parameters for the server call to implement the message board, Figure 4C illustrates an example of the WDL code to implement the message board and Figure 4D illustrates an example of the user interface code to implement the message board. The message board presentation element is driven by a data structure. The message board presentation element shows threads
(discussions) and a thread contains the "top level" comment as shown in Figure 4A and there can then be subsequent comments to the top level comment wherein the subsequent comments may be displayed in a tree structure below the top level comment.
Each of the items seen in Figure 4 A is a MessageBoardltem and a MessageBoardltem contains exactly one Comment, as well as a Thread ID indicating the thread to which it belongs. The Comment contains a title, author, date, and a path indicating its location in the tree. The MessageBoardltem can be treated as any other item, so it can be tagged, etc. An item can also be commented on and each item has a MessageBoardContainer within it and the MessageBoardContainer can have one or many Comments. These Comments have a path, thus they can be represented in a tree structure. However, these comments are not themselves items so they cannot be tagged, etc.
The message board presentation element may introduce a new type of view, a tree view which is similar to a list, but possesses an inherent action for "expanding" a branch of the tree. This tree view may then be used by any other presentation element. To expand a branch, the UI will call a special update and pass in a set of field values specified in the WDL and expanding a branch returns the complete structure under that branch. For the message board presentation element, the branching action may return all the comments on the thread being expanded. The detail view of an item may show the threads for that item. The names of all of the threads will be sent as part of the item detail, so it is immediately available to the UI with no server call. Once the threads are shown for the item, a thread can be expanded.
When a comment is added to an existing comment on the message board, a new message board item is inserted in the cell. Then, the thread (the message board item whose Item ID is equal to the Thread ID) needs to have its last updated time changed to the current time which requires locking the cell for the duration of this process. When a comment is added to an existing comment on an item, a new comment is simply inserted into the MessageBoardContainer of the item.
The message board presentation element may include the ability to update an item. The message board presentation element also may contain the ability to delete a comment that may delete all comments "below" the comment.
As shown in Figure 4C, the WDL code for expanding a thread of the message board presentation element is shown. Figure 4B shows the parameters used for the call to the server to implement the expansion of a thread in the message board may be accomplished generically by expanding a branch in the tree view. An example to the call to the server may be: http://<domain>/widget.htm?update=branch&widgetId=messageBoard & view=treeView&branchId=threadl23
The response from the server as shown in Figure 4D that contains a list of items arranged in a tree structure: The goal is to allow the UI code to create the appropriate presentation by only iterating over the list of items exactly once. The level element is supplied to allow for easy formatting on the UI.
Figures 5A-5D illustrates an example of a calendar view implemented using WDL which is an example of a view that may be part of a presentation element. To denote a calendar view in a presentation element, the calendar view may be listed as another view as part of the WDL code of the presentation element as shown in Figure 5 A. The data behind the calendar needs to support start/end times and the code for the presentation element needs to have these canonical properties declared as shown in Figure 5B. The evaluation of the properties shown in Figure 5B points to fields declared in the code for the item kind. The XPaths for these fields are used to create a filter expression for the query used to retrieve the items as shown in Figure 5C. Thus the application component (shown in Figure 2 A above) backing the presentation element has a date filter that allows a component action to be called that will create the appropriate filter by examining all the kinds in the presentation element. If the default view of the presentation element is a calendar view, then a date range based query will be executed by default. The default range will be the current month. This is calculated by looking at the current date. The start date for the range is set to the first day of the current month at midnight. The end date is calculated by taking the first day of the next month and subtracting one second. Any presentation element with a default view of calendar will have this calculation computed and used for the start/end dates of a date range based query. To switch the date range of the presentation element, a typical AJAX (Asynchronous JavaScript and XML) call over HTTP (the parameters of this request is shown in Figure 5D) is made that may be, for example: http ://<host>/widget.htm?update=dateRange&startDate=01 / 17/2007% 2001 :00%20AM&endDate=01/19/2007%2011 :00%20AM&widgetId= calendar
Figure 5E — 5K illustrate a set of examples of the user interface provided by the calendar view. Figure 5E illustrates a default calendar view while Figure 5F illustrates the calendar view with an overlay containing upcoming items. Figure 5G illustrates a detailed calendar item view and Figures 5H and 51 illustrate a calendar item list view that lists a short version of the various calendar items. Figure 5 J illustrates a new calendar item input view of the calendar view (using an add item operation). Figure 5K illustrates a pop up view of a calendar that is part of the new item operation for the calendar view.
Figures 6A-6B illustrate an example of an add and an update operation implemented using the WDL. Each item document describes an item kind that includes the logical fields of the kind and these fields available to a Widget Developer for display in a presentation element. An expanded use of these fields may be used for the reusable add/update operations. The fields already contain an XPath used to extract the value of the field from the underlying item XML. The "web item XML" is a simplified form of the item XML data used by the UI. It is a tighter, flatter structure than the typical item XML data and is made from the fields defined in the code that typically looks like:
<item>
<field 1 >value 1 </field 1 > <field2>value2</field2>
</item>
The UI then uses the field name for describing what data to show in different views of the data, i.e. tables, lists, detail views, etc. This structure is only used for display of item data. When an add item action is invoked, the UI simply passes parameter data to the server. It does not have to reconstruct the "web item XML", it simply treats the add item action like any other action, collecting parameters and passing them to the server. The combination of these two features allows for succinct data transfer between client and server and minimal coupling between the UI and the application.
Figure 6A illustrates further details of the add operation. As shown in Figure 6 A, a client computing device that is going to display a presentation element of a web presence requests a particular presentation element of a web presence, such as a message board presentation element described below, by providing the client device information, user context, a particular view for the presentation element (or the default view if one is not specified) and the cell containing the requested presentation element (A). Next, a widget model is initialized based on the definition of the particular presentation element (implemented as WDL code 104), the device information (which may influence the style hints), the user context (to determine the proper objects acted on the presentation element and the cell (B). Based on the user context contained in the presentation element, the client submits a new item using the presentation element by entering the values of the relevant fields for the item (C). Then, the widget model invokes the generic Addltem action to save any kind of item in the cell's database (D). Then, the application component uses the query expression (with the scope of the cell) and inserts the item as a document-style XML instance whose schema may be specified using the Universal Item Description Language (UIDL) (E). Then, the application component returns the ItemID of the newly created and inserted item to the presentation element which subsequently returns the ItemID to the client device (F).
Figure 6B illustrates further details of the add operation. As shown in Figure 6B, a client computing device that is going to display a presentation element of a web presence requests a particular presentation element of a web presence, such as a message board presentation element described below, by providing the client device information, user context, a particular view for the presentation element (or the default view if one is not specified) and the cell containing the requested presentation element (A). Next, a widget model is initialized based on the definition of the particular presentation element (implemented as WDL code 104), the device information (which may influence the style hints), the user context (to determine the proper objects acted on the presentation element and the cell (B). Based on the user context contained in the presentation element, the client updates an item using the presentation element by modifying values of the relevant fields for the item (C). Then, the widget model invokes the generic Updateltem action to save any kind of item in the cell's database (D). Then, the application component uses the query expression (with the scope of the cell) and updates the item as a document-style XML instance whose schema may be specified using the Universal Item Description Language (UIDL) (E). Then, the application component returns the ItemID of the newly updated item to the presentation element which subsequently returns the ItemID to the client device (F).
Figures 7A-7C illustrates an example of a connected items operation implemented in
WDL. The call for the connected items operation is as shown in Figure 7A with the code as well as the parameters contained in the code. The output of the above code results in the following output:
<?xml version="1.0" encoding="UTF-8"?> <ajax-response>
<response type="" id=""> <xml> <actionResponse type="connections"> <widget id="contacts"> <item> <phone>
</phone><phonetype></phonetype><updatedby>123</updatedbyxjobtitle></jobtitle><kind >ContactItem</kind><itemid>Item( 113000,Cell( 112000))</itemid><companyname></comp anyname><firstname>Bob</firstname><nickname></nickname><lastname>McAdoo</lastna me><im></im><tags></tags><lastmodified>2006-l 1-05T13: 13:24.828- 08:00</lastmodified><email>bm@bm.com</email><photo></photo><birthdayx/birthday> </item>
<itemxphone></phone><phonetype></phonetype><updatedby>123</updatedby><j obtitle></jobtitle><kind>ContactItem</kind><itemid>Item( 115000,Cell( 112000))</itemid>< companyname></companyname><firstname>Don</firstname><nickname></nickname><last name>Kwak</lastname><imx/im><tags></tags><lastmodified>2006-l l-05T14:39:30.765- 08:00</lastmodifiedxemail>dk@dk.com</emailxphoto></photo><birthdayx/birthday></ item> <connecteditemcount>2</connecteditemcount>
</widget> <widget id="mail">
<connecteditemcount>0</connecteditemcount> </widget> <widget id="links">
<connecteditemcount>0</connecteditemcount> </widget> <widget id="photos">
<connecteditemcount>0</connecteditemcount> </widget>
<widget id="documents">
<connecteditemcount>0</connecteditemcount> </widget> </actionResponse> </xml>
</response> </aj ax-response>
There are two different kind of calls for managing connections: making connections between two items and deleting connections between two items. First, for making connections, the URL and an explanation of its parameters are shown in Figure 7B. Figure 7C shows the URL and the parameters for deleting connections.
Figure 8 illustrates an example of a set of code 130 used to implement a web presence template catalog. In an exemplary implementation, the code is XML code as shown in Figure 8. The web presence template may be used to generate a visual catalog from which a user of the system may select a pre-defined web presence. The web presence catalog may include an auto web presence 131 and a book web presence 132 wherein examples of the user interface of the autos web presence and book web presence are shown in Figures 5 A and 5B and examples of the code used to implement the autos web presence and book web presence are shown in Figures 10 and 11.
Figures 9A and 9B illustrate an example of autos web presence and a book web presence, respectively, generated based on the catalog shown in Figure 8. An autos web presence user interface 140 is shown in Figure 5 A wherein the web presence has an autos portion 141, a notes portion 142, an images portion 143 and an application portion 144. Additional applications can be added to a web presence (i.e., making the application web accessible) from an application catalog. A books web presence user interface 145 is shown in Figure 5B wherein the web presence has a books portion 146, a notes portion 147, an images portion 148 and an application portion 149.
Figures 10A- 1OC are examples of the WDL and ADL code that generates the auto web presence shown in Figure 9 A and Figures 1 IA — 1 IF are example of the WDL and ADL code that generates the books web presence shown in Figure 9B. As shown in Figures 1OC and 11C, the WDL code for auto component and the books component, respectively, is shown wherein the code have the model code, the view code, etc. as described above in more detail. As noted above, the web presences are formed by a combination of ADL code and WDL code that operate together to create the web presence.
Figure 12 illustrates a data management system 250 wherein one or more cells 252 (such as Cell A, Cell B and Cell C as shown in Figure 12) manage the storage, access, update and integration of typed objects and other information associated with the typed objects. Each cell may also include one or more instances 254 of various types of objects that are contained within the cell. Moreover, cells may also contain any number of applications. Hence, the server that hosts a cell instance manages both the hosting of applications and local storage of content. An exemplary embodiment of each cell may be a XML document-oriented container in a commercially available XMLDB database as described in more detail below. In general, each cell may have a set of indices 256. In an exemplary embodiment, each object in a cell may be an item that is an instance of a type that extends from the AbstractltemKind base type as described below in more detail. In the data management system, an object may be connected to another object in the same cell or in a different cell via a connection 258 as shown in Figure 12. Each connection may be implemented as a field/container/record within an object record of the data management system. The connections permit a user of the data management system to associate one or more objects with each other wherein the connections may be generated by a user or automatically generated by the system. An example of a ContactltemKind object with one or more user generated connections as well as one or more automatically system generated connections is described in more detail below. Each object in the cell may also have zero or more tags associated with the object wherein each tag associate a piece of information with the particular object wherein the tags may be generated by a user or automatically generated by the system. An example of a ContactltemKind object with one or more user generated tags as well as one or more automatically system generated tags is described in more detail below. Hence, each cell contains a data base (the objects in the cell) so that the data for the cell is contained within the cell. The data management system may also implement a situated query language (described below in more detail) wherein the query is composed and processed from the perspective of a Cell X (i.e., query is processed based on the object(s) within Cell X) and other cells in certain relationships to Cell X. Such queries may be known as situated queries. In the exemplary embodiment, the query language may leverage XQuery 1.0 (an XML-based Query Language standard developed by W3C). Situated queries will allow queries to be expressed according to the personal situation of the user such that user can retrieve and compare information from specifically identified and/or relationally described context; and that the meaning of these queries persist as the applications which contain them when moved from one cell to another cell.
Figure 13A illustrates a storage model of the data management system. In the storage model, item instances or object instances pertaining to a particular cell may be stored in a document container managed by a XML Database System. Hence, each cell may be stored in its own XML DB document container that functions as a document-centric container for all of the item instances belonging with that cell. Furthermore, since the document-centric container of the XML DB holds a collection of item instances as XML documents, each cell instance can have a collection of heterogeneous content that employs the Universal Item Information Model (UHM) to enforce a consistent data type model that is object- and semantic-oriented and extensible and uniformly represented as item instances in the DB container whose types are described using the Universal Item Description Language (UIDL). This approach to data management is fundamentally different than existing web and enterprise applications that maintain a dedicated database table, possibly on a dedicated database host, for each type of content. For an application that needs to integrate and have access to a wide variety of content, for example media (including photos, videos, audio and podcasts), blogs, calendar, contacts, email, and other structured data (including automobile, books, movies, etc.) which are supported by specific third-parties that specialize in specific types of e-commerce services and catalogs of items, and other unstructured content that may be generated by end users, it will be an expensive scalability and extensibility approach to maintain dedicated database tables for each type of content. The above described approach of maintaining dedicated database instance for a cell which hosts both application and its content such that it allows storage, access and integration of various types of content to be more scaleable and extensible than existing database-driven web and enterprise applications.
In an exemplary implementation of the data management system, a commercially available Berkeley XML embeddable database is used as the storage device for the cells and the one or more items in each cell. In the exemplary implementation, the objects stored within cells use the object- and semantic-oriented Universal Item Description Language (UIDL) (extending the well known XML Schema definition language) to describe those objects. The cell interfaces with an embeddable XML database (whose document-centric container is used to store and access any type of content) which provides native XML support and no processing overhead cost due to XML-to-Java-to-SQL transformation (typically expected in existing Java-based database driven applications). Elimination of such data transformation and SQL round-trips over the network will result in decrease in cost of procuring server hardware and a scalable and extensible data management solution. Since there will be no SQL call-outs due to the content being locally accessed, inserted and updated there will also be better performance and response time. Furthermore, the model partitions large data sets of heterogeneous items into smaller contextual subsets containing items likely to be processed at the same time together with applications which will do the processing. In addition, for the exemplary implementation, there is no need to develop another XML querying mechanism since the system can exploit XML Query support in the commercially available Berkeley Database XML using the W3C XQuery Language. Thus, the system may utilize an XML database for content storage in combination with the Universal Item Information Model (UIIM) and XML-based Universal Item Description Language (UIDL) described above in the exemplary embodiment.
Figure 13B illustrates more details of the data management system 60 that interacts with a client 62 in order to host applications and manage storage, finding and retrieval of typed items with support for tagging, connections, and situated queries. The data management system may further include an application server 64 and an XML database 66 as described above wherein the application server interacts with the XML database. The application server 64 may further include a content processor 68, an application component 70, an item processor 72 and a query processor 74. The content processor 68 may receive information and content such as RSS data, email messages and structured data such as books, and process that data to add item(s) into a cell that is stored in the XML database using the item processor 72. The application component 70 may be a piece of code that performs various operations and functions on the items in a cell wherein certain elements (an XML document insert or update or query) interact with the XML database 66. For example, the application component may add item(s) or update item(s) in a cell (using the item processor 72) in order to perform an XML document insert or update operation with the XML database 66. The application component may also generate a situated query (described below in more detail) for item(s) in the one or more cells which is processed by the query processor 74 in order to generate a XQuery expression that is applied to the XML database 66. The content processor, item processor and the query processor may be implemented, in an exemplary embodiment, a plurality of pieces of computer code that are executed by the application server.
Figure 14 illustrates an example of Java code that can be invoked at run-time to create a document instance in the XML embedded database that may be used in the exemplary implementation of the data management system. The document instance represents any user- defined content that is defined as an instance of a specific XML object type (that is derived from the base object type (the Abstractltem type in the exemplary embodiment). The data storage model can be used to store any type of XML content such that all content stored in the DB container are XML document instances of various types. Hence, the data management system can store heterogeneous types of objects for a given cell. Each cell has a dedicated DB container which is used to manage storage and access of required content/objects contained in the cell. The transaction parameter in the code is the transaction that is participating and/or processing a document instance represented by the document parameter in the code such that the document instance (representing an item) is created in the specified XML database container whose name is specified along with the document name and related data and metadata. It should be appreciated that this is basically the generic use of the XML Database System for cells that function as server instances which host applications and manage content. Now, an example of a Universal Item Information Model (UIIM) that may be used to model types of content stored and accessed using data management system will be described in more detail. A Universal Item Information Model (UIIM) is presented that accomplishes several goals and overcomes certain problems that have existed. In particular, the universal item information model can be used to personalize and simplify the process of content consumption, sharing and publishing in a system in which various types of existing and new user-defined content needs to published, consumed and shared by and from various sources. The universal item information model addresses data integration from disparate sources as is needed currently in the areas of social networking, consumer-oriented and business-oriented application integration platforms. The Universal Item Information Model (UIIM) also provides the ability to preserve and leverage existing and legacy content formats within the Universal Item Information Model (UIIM) such that interoperability with existing consumers and publishers and their applications is possible within a networked community environment where a system supports the handling of all kinds of new and existing content.
Figure 15 illustrates a Universal Item Information Model 310 for an item that is an exemplary embodiment of the Universal Item Information Model. The Universal Item Information Model for an item may be used to support a pluggable content model such that the model can describe any item using a generic item description (an AbstractltemKind 312) that is applicable to any type of information item. The underlying item's format is preserved via encapsulating (or wrapping) the original item in a type-specific container item defined within the universal information model. The type-specific container items are created using specialized component types that employ the Universal Item Information Model that has an Abstractltem kind component which describes any item using a generic abstract definition. Extending the Abstractltem component via type-specific container item kinds allows the creation of a universal item information taxonomy that comprises various types of information, for example, BlogKind, CalendarKind, ContactKind, DocumentKind, LinkKind, MediaKind, etc. The direct extensions from the AbstractltemKind are referred to as the base component types (and their instances are referred to as base components) since they describe generally an item component within a general domain, for example, a MediaKind component refers to generally all kinds of media item. The base component types can be extended to additional specialized types to express specific characteristics, for example a PhotoKind extends the MediaKind. The universal item information taxonomy will also be referred as the universal item taxonomy. Hence, the type-specific container item kinds (representing specialized types of content and information) extend the Abstractltem component which is the base type of the model. The Universal Item Information Model allows a system to represent and manage the access, distribution, management and actionability of any type of item by describing its schema using the Universal Item Description Language (UIDL). The initial set of universal information item component types within the UIDL schema framework are expressed using the W3C XML Schema Definition (XSD) Language, but it is possible to describe the base and derived components of UIDL in various other object-oriented languages. New types of content created by a user or a user-defined application can be expressed by defining a new component type that extends from the Abstractltem base type and/or from one of the existing base component types already defined within the Universal Item Taxonomy, for example, the DocumentKind or MediaKind if it is a new type of document-oriented or media-oriented content. The new user-defined content (also referred as a new type of item) can be published or shared within a community of users as an instant of the newly defined component type. Hence, the Universal Information Model supports an extensibility mechanism that is needed to model, describe and instantiate new content generated or consumed by a user or a community or an application. This extensibility mechanism is within the framework of abstracting an information item as an Abstractltem from which any specific kind of information item can be derived as a specialized type.
Since the Universal Item Information Model (UIIM) and Universal Item Description Language (UIDL) can be employed to model and represent various types of information items, it should be noted that items expressed in UIDL can be stored in a database or in- memory cache, or transmitted on-the-wire over any communication channel (for example, HTTP, TLS, SMTP, SMS), or instantiated by an application service - all of these scenarios can employ the same description of the item based on UIDL.
Figure 16 illustrates an exemplary implementation of a data structure for an Abstractltem and Figure 17 illustrates an example of a schema describing an AbstractltemKind. The AbstractltemKind is an abstract base type for all item content definitions (since all of the other item definitions are based on the Abstractltem and inherit the characteristics of the Abstractltem due to the inheritance of the object model) and is therefore reusable. Hence, the Abstractltem provides the base characteristics of each item in a system. The AbstractltemKind includes sub-components that describe the general characteristics of any item in one or more general characteristics elements, such as the data structure fields shown in Figure 17. These general characteristics are independent of the type of item and are included as part of the <ItemDetails> sub-element that Item instances inherit from the base type AbstractltemKind. A set of examples of the general characteristics of an item are:
• LogicalServerID - this refers to some logical application and content server where the item is located and managed; this is also known as the cell server ID;
• Contents ize - the size of the underlying content in bytes; • CreatedBy - the user who published (or inserted) an item; this user may or may not be the original publisher of the content rather the user who actually inserted (or copied) the content to a particular application and content server;
• CreationTime - the date and time when the item was published (or inserted) via an application; this time may or may not be original publication date or time of the content rather the time when the user actually inserted the content in a particular application and content server;
• ItemID - specifies the unique item identifier of the information item;
• KindID - specifies the unique identifier to identify the type of content that the item instance is of; • LastModified — specified the date and time when the item was last modified;
• Title - specifies a title of the item, e.g., this may be the Subject of the email or title of a book instance;
• UpdatedBy - specifies the user who last modified the item; The Abstractltem kind also includes sub-components that describe various semantic characteristics of any item (using one or more semantic property elements) as part of the <ItemDetails> child element that Item instances inherit from the Abstractltem component. These semantic characteristics provide capabilities to describe additional information about a specific content, i.e., item instance, in a personalized and context specific way such that it can be used for various search, information navigation and filtering and other actions applicable to a content of a certain type. The semantic properties can be expressed uniformly for all kinds of information items by defining various semantic components within the Abstractltem component. This approach implies that derived types of content (e.g., a item instances of the types PhotoKind or a BlogKind or an AutoKind) that are extensions of the AbstractltemKind component would inherit identical sets of semantic properties which are therefore applicable to all instances of those derived item types. Following is a set of semantic elements defined as part of the <ItemDetails> child element of the Abstractltem component:
• Zero or more user-defined tags (represented by the <UserTags> child element) which are free-form text entered by the user to add additional meaning or context to a specific information item;
• Multiple system-managed tags (represented by the <SysTag> child element) which are generated automatically by a system along some standardized set of attributes, for example, Time, Person, Location, Category, and Rating. It is expected that an application and content server, i.e., the system that processes the publishing or creation of an item would have capabilities to process the generic, semantic and type-specific descriptions of an item to generate the derived system-managed tags. The details of the system-managed tag model and structure is described in more detail below with reference to Figures 24A - 24D; • Zero or more Notes (represented by the <Note> child element) which can be created by different users to describe an item in additional detail depending on the user's context and situation;
• Zero or more user-defined connections which are used to connect related items to other item instances. The user-defined connections are described in more detail below with reference to Figures 26A and 26B;
• Zero or more system-defined connections (described in terms of Source and SysConnID) which are generated automatically. For example, certain types of content are received via a communication channel such as email instances (via SMTP protocol) or RSS data feed (via HTTP protocol) and there is a need to connect the received content (e.g., the email) with additional content that is referenced and/or is part of it. E.g., a Photo attachment or a URL link included in an email would result in system-defined connections between the email message instance and the Photo item and Link item instances. The system- defined connections are described in more detail below with reference to
Figure 25.
Thus, the Abstractltem specifies one or more general characteristic elements (that can contain general characteristics) and one or more semantic property elements (that can contain the semantic properties of a particular instance of an item) of each item in the model. Since the above generic characteristics and semantic characteristics are described in a generic way for any type of item (that may be content), the universal item information model can be used by various types of applications wherein the applications can uniformly process the generic and semantic components of any type of item. In one example of the use of the universal item information model, the flexibility of the universal information model can be used by a scalable and extensible media operating system which can host media-rich applications that will be shared and customized by a consumer-oriented user community or a business-oriented user community.
Returning to Figure 15, the model may have one or more core component types that are use case independent and are primitive data types. The core component types may include an amount type, a binary content type, an identifier type, a measure type, a numeric type, a quantity type and a text type. The listing of the core component types for the exemplary embodiment of the information model is attached as Appendix A that forms part of the specification and in incorporated herein by reference. The model may also include one or more base components 314 (children of the Abstractltem) that are reusable item kinds that permit, in this example, a particular type of item/content to be stored using each particular type of item kind. The base components may include a BlogKind, a ContactKind, a LinkKind, a MediaKind, a DocumentKind, a MessageKind, a CalendarKind, an EventKind, a To-DoKind, a TaskKind, a PhotoKind, etc wherein each of these base components inherit characteristics from the AbstractltemKind and then further define the characteristics associated with the particular type of item, such as a photo piece of content defined by the PhotoKind. Some of the base components may have one or more extensions to additional of specialized kinds of sub-items, such as the MediaKind having an AudioKind, a VideoKind and a PhotoKind or the MessageKind having Email-MessageKind and a Text-MessageKind (that has a EVl MessageKind) wherein the sub-items inherit the characteristics of the ItemKind from which the sub-item is based and then contain further characteristics of the particular type of sub-item/content. For example, the BinaryDocument Kind inherits the characteristics of the DocumentKind and then has further characteristics that are associated with the binary document kind. The schema may also include one or more aggregated components 316 that consist of combining and encapsulating multiple types of item kinds to create new complex item kinds focused on a particular industry or area. For example, we could combine as child elements a photo item of type PhotoKind with a note item of type NoteKind by defining a new aggregate and complex content type that encapsulates such item instances. The schema may further include vertical application domain extensions that are specialized extensions of the AbstractltemKind. These items can be used for a particular vertical and/or community application domains. For example, the StructuredDataKind may include an ApparelKind, an AutoKind, a BookKind, a MovieKind, a MusicKind, a Real- EstateKind (for real estate related content/items), a VideoGameKind and a WineKind.
For each base component (a kind of item in the example shown in Figure 15), the universal information model also may include elements (for example data structure fields) that allow zero or more views, zero or more actions or zero or more constraints. The views, actions and constraints can be described separately from the schema definition of the item kind such that they are referenced back to the item kind identifier. This way we can ensure that views, actions, and constraints can be associated with the type of the item. Furthermore, views, actions, constraints can be defined at the AbstractltemKind component level such that they are inherited by the base components and other derived types of the base components.
Views
The zero or more views describe ways of displaying instances of the particular base component type (such as an Contactltem kind in the example above). Examples of some views that could be supported for a specific kind of item may include 1) display the item in a list view. E.g., for a contact item display the first name and last name elements such that each contact item appears in a single line; or 2) display an expanded view that displays all base component meta-data that is applicable to that kind of base component. In both cases the applicable elements are specified as part of the view specification for the particular base component type.
Actions The zero or more actions may be applicable to processing an item of a given type.
Examples of generic actions that can be supported for all kinds of items are: Addltem, Updateltem, and Deleteltem. Examples of some of the actions that could be supported for an item that is of particular type, for example, a Contact kind (shown in Figure 15) may include: addMember or import VCard. Each type of action for a specific base component (kind of an item in the item model shown in Figure 15) can be expressed in terms of the name of the action, parameters that will be passed to the method that will process the action, and the type of return value. For example, the action specification for the import VCard action for the Contact item kind may be:
<action name="importVCard" componentAction="contact.ImportVCard" uiLabel="ImportVCard">
<parameter dataType="stream" name="vcard" uiLabel="VCard file"/>
<returnType>items</returnType>
</action> A second example of an action that can be associated with an item kind are ones which refer to a one or more service providers that can process an item. For example, a photo item may have PrintAction that is processed by a web-based photo printing service provided by a third-party. Here is an example specification to reference a service provider that can process an action associated with a specific item kind:
<xs:complexType name="ltemActionLinkKind">
<xs:complexContent> <xs:extension base="ns:AbstractltemKind">
<xs:annotation> <xs:documentation>
This specifies the invocation of a third-party web application or resource over HTTP Protocol. The invocation mechanism and parameters are included in the specification such that the consuming application can compose and invoke the URL at run-time.
</xs:documentation> </xs:annotation> <xs:sequence>
<xs:element name="Name" type="xs:string"/> <xs:element name="Description" type="xs:string" minOccurs="0"/>
<xs:element name="ltemKindlD" type="xs:string"/> <xs:element name="BaseURL" type="xs:anyURI" minOccurs="07> <xs:element name="lnvocationType" type="ns:HttplnvocationType"/> <xs:element name="Parameter" type="ns:ltemActionParameter" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="category" type="xs:string" use="optional"/> </xs:extension> </xs:complexContent> </xs:complexType>
A third example is of an action (associated with an item kind) that is processed by a business process which is invoked by an API.
Constraints The zero or more constraints may be applicable to items of a given type (i.e., an instance of an item kind in the exemplary universal item information model). The constraints may include type constraints and/or semantic constraints. The type constraints for each child element of an item are part of the XML schema definition. The semantic constraints may be applicable to any or all elements within the item. Furthermore, the semantic constraints express which combinations of item element values are acceptable as possible values within the information system. For example, for an element representing a <PostalCode>, the constraint can limit the data entered by the end user to be numeric even if the type definition of this element is xsd:string type within the XML schema namespace. For an element representing <Phone>, the constraint can limit the data entered to be of a specific format and length. Another example is that of a contact item can not have a child element <Gender> with value equal to "Male" and an another child element <Relationship> with value equal to "Mother".
The views, actions and constraints may be expressed in data structure specifications outside the item kind definition such that they are referenced (and inherited) via an identifier to the AbstractltemKind component which is the base type of all items, or referenced via an ItemKindID identifier to another base component that is derived from the Abstractltem kind, or referenced via an ItemKindID identifier directly to a particular item kind definition. This way these views, actions and constraints can be applied to an item kind included in the universal item information model.
Figures 18A and 18B illustrate an example of a Contactltem kind. The Contactltem kind has the item details and also has examples of the system and user defined tags wherein the system tags are generated by a system that utilizes the universal item information model while the user tags may be generated by the user of the system that uses the universal item information model. Similarly, Figures 19A and 19B show a PhotoKind that has the item details (the generic characteristics of the Photoltem) and both system and user tags. The PhotoKind example also includes a photo and thumbnail that are incorporated into the PhotoKind. Similarly, the BookKind (shown in Figures 2OA and 20B) includes the item details, the system and user tags and also encapsulates a particular book ("The Haunted House") along with information about the particular book and the AutoKind (shown in Figures 21 A and 21B) includes the item details, the system and user tags and also encapsulates a particular car (a "Honda Accord") along with information about the particular car.
As set forth above, the universal item information model may have vertical application domain extensions that are specialized extensions of the ItemKind. There are multiples ways to extend the Universal Item Information Model to support domain specific needs of a particular class of applications. For example, three techniques can be used to support extensions for vertical application domains and those techniques are:
1) To support specialized extensions needed by a particular domain or use case, for example, a real-estate application, it is possible to extend the existing types of item kinds. As an example, it is possible that the <Note> component (shown in Figure 5A) needs to have additional properties such as a special identifier of the EmployeeID of the real-estate broker as part of the extended <Note> component. Such additional properties can be added for a vertical application domain by extending existing NoteKind XML complex type as follows: <xs:complexType name="RealEstateNoteKind">
<xs:complexContent> <xs:extension base="ns:NoteKind"> <xs:sequence>
<xs:element name="EmployeelD" type="xs:string"/> </xs:sequence>
</xs:extension> </xs:complexContent> </xs:complexType>
2) Certain application domains may also need to combine existing kinds of content together for specialized complex types, for example, <Note> and <Photo> component may need to be combined for a particular type of aggregated component needed for the real- estate domain.
3) If the above two methods of extensions do not address the needs of a specific domain, it is possible to extend the Abstractltem component to a specialized base type.
The new types of schema components could also be defined in its own XML schema namespace that is dedicated to a particular vertical application domain such that all the general and semantic characteristics and other applicable base component characteristics (if extension carried out from an existing base component type) are inherited by the extension defined within the namespace of the vertical application domain.
Figures 22A and 22B illustrate an external content model and Figure 23 illustrates examples of the content kinds generated using the universal information model. The universal information model provides a model for handling external content. External content typically will be in existing formats that are standardized for media files (for example, jpeg photo file or .mpeg video file formats), documents produced by various authoring tools (for example, .doc, or .txt or .pdf file formats), or other business documents that are formally defined and used by a community of users via XML-based Web Services (for example using an Item schema component representing an item for sale at Amazon.com or an item that is being auctioned by a seller at eBay.com; or, a Rental item described at some realtor site). The mechanism employed to handle (i.e., allow storage, access and processing of) externally defined content (as shown in Figure 22A) will be by:
1) Describing the underlying externally defined content using generic meta data description included in the AbstractlteniKind component which is applicable to any information item (or content), i.e., both user-defined content and other externally-defined content. Such generic meta-data description for any information item (whether defined externally by a 3 rd party or directly and locally as user-defined content) is expressed within the <ItemDetail> element of the Abstractltem component; and
2) Wrapping the externally-defined content into an external content element that can carry any kind of content, i.e., including binary content or other specially formatted content as well as content that have a formalized XML schema definition within a namespace owned or managed by a particular business service entity.
Since external content would be processed as a derived type of Abstractltem kind, any kind of content will have fundamentally identical base type definitions that allow external content created by third parties to be generally processed by a system that uses the information model via a combination of generic Abstractltem handler for common information item processing functions and content-type specific handler to process the underlying format-specific content using a 3rd party specific application library. This approach allows seamless integration of external content which can be "plugged-in" to any system which uses the Universal Item Taxonomy since there is no need to transform the format of the external content. Figure 9B illustrates an example of the data structure for the Kind that handles the external binary content. The approach of representing an external content kind permits re-use of externally defined content from various sources via a generic meta data expression and processing mechanism (for any kind of external content) which will allow interoperability with existing content service providers and applications that use or generate content in various existing content formats and also make the content into derived type within Universal Item Taxonomy.
Figures 24A- 24D illustrate further details of the system-managed tag <SysTag> shown in Figure 17. System-managed tags are used by a unit that stores the cells (a cell server) to automatically categorize an item based on a fixed set of semantic attributes of Time, Person, Location, Category and Rating which are refered to as the system-managed tag types. These system-managed tag types allow the system to extract relevant attributes from any type of item when it is published (i.e., created or inserted into the cell's database) and automatically categorize and map the value of the specific element within the item to a particular system-managed tag type. Hence, the purpose of system-managed tags is to enable searching, querying across a database containing many different types of content such in a way that allows certain common concepts to be accessed via system-managed tag types. This automatic process of semantic categorization is uniformly carried out as part of inserting or updating any type of an item into the database locally managed by a cell. In particular, an example of the data structure for a system-managed tag is shown in Figure 24 A and an example of a model for the system-managed tag is shown in Figure 24B. Each system- managed tag type may support one or more roles. The roles refer to specific elements within the <ItemDetails> child element within the AbstractltemKind and/or elements within specific base component type (extending the AbstractltemKind) that the item is an instance of.
Hence, the roles are used at run-time by the system to extract particular characteristics of an item that can be normalized (or mapped) to specific dimensions, i.e., types of system-level tags. Moreover, the values of these roles can either be determined on-the-fly at run-time by, for example, the XPath references to the actual values within the specific elements that are referenced for the roles or stored explicitly with item instances when they are inserted or published into the information system. Also, the system-managed tag model and structure implies that multiple roles can be specified for a particular type of system-level tag. Finally, the above description related to system-managed tags implies that is applicable in a type- independent way to semantically extract relevant characteristics of any type of items according to well-known system level tag types. The system-managed tags and roles are used to configure indices for each cell's database such that queries made as part of various search sessions directed at a particular cell's database can efficiently retrieve relevant items from the database based on the keywords entered by the user in the search interface. When an object in the database is updated, the indices based on the system-level tags and roles are automatically cleared out and then the system-level tags are regenerated based on the updated information about the object in the database. Figure 24C illustrates a general example of system-level tag types along with exemplary set of one or more possible roles and purposes associated with each type of system-managed tag. In particular, for a given kind of item, the system-level tag type Time may define roles that reference the elements <CreationTime> and <ModifiedTime> (in the <ItemDetails> child element defined in the AbstractltemKind). The two roles specified in this example for Time tag type for an item have the purpose of finding an item based on when the item was created or modified. Similarly, the Person system-managed tag type may have roles defined that reference the elements <CreatedBy>, <Source> and <Artist>. The three roles specified in this example for the Person tag type have purposes of finding an item based on who created or owns or sent or published an item; or was the artist mentioned in the item. Similarly, the system-managed tag type Location may have roles defined that reference <WebPage> child element within a specific kind of item's definition (for example, a Contactltem kind), a <CityName> child element within an Address component of a specific kind of item (for example an Eventltem kind or Contactltem kind), <Postalcode> child element within an Address component of some specific kind of item, and <Geo-location> element that identifies the (latitude, longitude) of an item. The roles specified in this example for the Location tag type have the purposes of finding an item based on where the item is located on the web or physically. Similarly, the Category system-managed tag type may have roles defined that reference elements <Organization> and <Genre>. The two roles specified in this example for the Category tag type have purposes of finding an item based on the organization affiliated with the item; for example, this may be needed to find the contact item of a friend who works in a particular organization or company, or find an item based on the general concept or classification scheme that is associated with the item that happens to be a book item. Similarly Rating system-managed tag type may have roles defined that reference the elements <Feedback_Rating> or <Movie_Rating> or <Reputation> or
<Recommendation>. These roles specified in this example have purposes of finding an item based on ratings that may be associated with an item that are defined by a community of users or a third-party content service provider. Figure 24D illustrates an example of the system- level tags for the Contactltem kind shown in Figures 18A and 18B with the one or more roles and the purpose of each type of system-level tag for the Contactltem Kind shown in Figure 24D. As an example, when a contact item is created and inserted into the database of a particular cell server that a user is interacting with over the web, the <PersonName> child element of the Contactltem kind would be employed automatically by the system to generate a set of system-managed tags for the Person tag type with roles of <FirstName>, <LastName>, and <FullName>. The values of these tags can be determined at run-time (using an XPath reference) by the system from the contents of the contact item (i.e., from the <PersonName> element). Once the system-managed tags are determined, the system also creates index entry corresponding to these elements representing roles for the particular type of system-managed tag. In specific implementation example of using the XML Database, such indices are updated in the document container of the XML database associated with the cell where the new item is inserted. Lastly, the roles associated with a particular system- managed tag will be driven by the type of system-level tag and the type of content (i.e., item kind). Thus, for the contact item kind case the following pre-defined set of roles and XPath specifications would be employed at the time the contact item instance is inserted into the database of a given cell:
Figure imgf000044_0001
Hence, contextual information extracted from the item, allows the system to aid in the finding experience of the user by exploiting at run-time system-managed indices that are generated automatically by the system against a standard set of tag types and a pre-defined set of roles corresponding to the set of tag types. Lastly, for the system tags, when an object/item is modified in the data management system, the corresponding system-managed index entries for the item are automatically updated based on the new values of the roles (corresponding to the system-managed tag types) associated with the item/object.
The above has been a description of the pre-defined set of system-managed tag types and the corresponding roles that are applicable to each type of system-managed tag for a given type of item (i.e., content). It is also possible for an administrator of the system to define additional roles for a given type of system-managed tag for a given type of item. For example, we may want to do that to optimize searches for a particular kind of item or for a new kind of item that extends from AbstractltemKind or some other base type from the
AbstractltemKind. It is also possible to support new types of system-managed tags that can be generally applicable across various types of items (i.e., content). It should be appreciated that such capabilities will allow the administrator of the data management system to extend the semantic capabilities of the system to support specific types of system-managed tags and their applicable roles.
From above description of the tag model and processing mechanism, it should be appreciated that the system-managed and user generated tags stored with item (via the AbstractltemKind component model) allow the uniform processing of semantic properties extracted from the items which are stored as document instance in the database and permit the data management system to provide searching capabilities wherein the searches can be based on the system and user defined tags consistently. Additionally, it should be appreciated that current keyword based searches to find relevant content available on the internet is limited since keywords may represent from the user's perspective various purposes that are not restricted or qualified by roles (as applied to system-managed tag types). This means that when, for example, a user enters "1974" it could mean the year "1974" or the user's intention could have been to find some information about a location with "1974" representing the numeric part of a street address. The approach described above to semantically extend the XML-based database system that manages items as documents with user-defined and system- managed tags as well as additional semantic properties previously identified (for example, notes that a user can add to an item and which is stored as an integral part of the item via the Abstractltem kind that has a <Notes> child element) allows effective means of characterizing content in a personalized and contextualized manner such that system can take advantage of these across the types of content in a uniform manner. This approach will make it easier and efficient to integrate different types of content and navigate between different types of content since all types of content will be stored in one database instance that is locally controlled by the cell server which functions as an application and content server.
Figure 25 illustrates further details of the system defined connections shown in Figure 17. System defined connection allow 1 -to-many relationships between a given item X and its associated items {A, B, C, ... } . The origins of the item X is expected to be over some communication channel, for example an email transmitted over SMTP or a RSS data feed accessed over a transport protocol (for example HTTP or HTTPS). Furthermore, for the given item X there may be one or more associated items that are transmitted with or accessible via item X. For example, in the case of email there may be a photo attachment that can be processed by the data management and subsequently saved as a Photo item (of type PhotoItemKind) in the database of the cell that belongs to the user who received the email. Also, in the case of email there may be some contact information or web links embedded in the body of the email which when processed can be extracted as a contact item kind or as link item kind respectively. As another example, in the case of RSS data feed there may be related set of content that can be parsed as corresponding item kinds and stored in the database of the cell that belongs to the user who subscribed to the RSS data feed. It is desirable that in such cases where the underlying content X has distinct set of content {A, B, C, ... } included with it or content {A, B, C, ... } that can be accessed via it, the data management system which processes the content and subsequently stores it should preserve the relationships between the content such that when we access original content X the user has means to easily access the content connected to X, i.e., {A, B, C, ..} . This requires that the system explicitly capture such connections between items at the time the items are persisted in the database of a cell using the concept of system defined connections such that this information be available with the connected items. Furthermore, such system defined connections can be between items of any types as defined in the Universal Item Information Model (UHM) and models 1 -to-many relationships using schema component defined within the Universal Item Description Language (UIDL). As shown in Figure 17, each system defined connection may include a <SysConnID> element and a <Source> element which are defined as child elements of the <ItemDetails> child element of the AbstractltemKind component type. Hence, all types of items that extend from AbstractltemKind can explicitly record the system connections with one or more items. The <SysConnID> element describes a unique identifier for each system defined connection which is set by the system in the parent item X and all the child items {A, B, C, ... } which are system connected to the parent item. The <Source> element could describe an email address or other unique identifier which is used to identify the source of the parent item wherein all items below the parent (i.e., contained child items such as attachments in emails) include the <Source> element. For example, for an email message, the email address value representing the source can be determined from the contact item that the system generates from the "From:" field in the email header. The format of the source will be a URI of the following format [Transport_Type]:[ID]. The [Transport Type] component could describe an identifier for some communication medium to push or pull content; for example acceptable values for Transport Type could be {Email, RSS,..}. The [ID] component could describe an identifier for the source that generated or published the content which implicitly has multiple items connected to it; for example, an email address of the user who sent the email could be the [ID] of the source, or username of the source, or URL where the the RSS data feed is available, etc.
Hence, to preserve the relationships between items when a particular content is processed and subsequently stored in the database of a particular cell, the system will automatically add the <SystemConnection> elements <SysConnID> and <Source> in all child items {A, B, C, ..} connected to the parent item X. Similarly, the system will also automatically add in the parent item X the <SystemConnection> elements <SysConnID> and <Source>. This will allow user to subsequently retrieve the parent item X such that the system can on-demand facilitate the retrieval of the child items {A, B, C, ...} via system connection links. Likewise, this will also allow user to subsequently retrieve the child items {A, B, C, ...} such that the system can on-demand facilitate the retrieval of the parent item X via system connection links.
Figures 26 A and 26B illustrate further details of the user defined connections shown in Figure 17. The user defined connections permit a user to relate a given item with one or more related items in an information management system such that the connections between the items are implemented as two-way links specified in the item instance. Hence, the user defined connections allow capturing of 1 -to- 1 relationships between two items of any type. Figure 26A illustrates an example of the data structure for the related item type (which is the schema component for the user defined connection within the <ItemDetails> child element of the AbstractltemKind). As shown in Figure 26A (and in the example shown in Figure 18A), each related item has a URI that identifies the connected item, a KindID that identifies the kind of item on the other end, and a relation type element that defines the type of relationship by which the item containing the connection is related to the item at the other end of the connection.
The creation of an item-specific relation from Item A to Item B implies that two links are created (i.e., URIs being instantiated for two-way links), one from A to B and the other from B to A, such that the connection from A to B results in the update of Item A in the database and the connection from B to A results in the update of Item B in the database. The relation URIs are then included as part of the XML data associated with the items. The related item links are actionable since a user can click on a link to be transported instantaneously to the relevant item or display a list view of the connected item(s). Hence, such user defined connections is an advancement of the current simple URL links used on the web in following three ways: (a) user can define connection between the items that are 2-way links, i.e., user can browse from item A to B using the link present in item A; or given item B browse from item B to A using the link present in itemB; (b) the connection between the item is typed, i.e., user can know what type of item is connected on the other end rather than the current web link scheme which is just a web page; (c) actionable item which can be acted on locally, i.e., we can navigate from item A to item B or from item B to item A via the 2-way links as if the connected items were present locally (using the user defined connection mechanism).
Query Structure and Language
The Situated Query Language of the data management system will be described in the context of the exemplary implementation that uses the Universal Item Information Model (UIIM) as the underlying information model for the data management system. However, the data management system and method can be used with any information model. The query language can be used to formulate and capture "situated queries" that can be executed in a particular context, for example a query can be processed that returns information in context of a specified cell where a cell organizes a set of applications together with a database for those applications. This approach of specifying a query is different from an SQL query. SQL queries are formulated "outside" the relational database and have no context beyond the database as a whole. On the other hand, every Situated Query Language query is executed in the context of some cell. A query can access various different contexts via a scoping qualifier which is used to specify the cells where the desired information items of interest may be present. Hence, situated queries allow flexible search sessions to discover relevant items in an absolutely and/or relatively defined set of sources such that the underlying meaning of the query remains the same as we shift the context of the query. For example, "My Friend's music" has a different result but the same meaning for me than for you. Moreover, such queries will be very useful to interactively search within different information bases and also allow integration of relevant content in a purposeful way. Such queries can also be defined and employed in the simple creation of applications which can be used in multiple contexts (with the same meaning) without rewrites.
Furthermore, the query language and model described can leverage the standard XQuery Language and operates on any item that is modeled using Universal Item Information Model (UHM) and defined using the XML-based Universal Item Description Language (UIDL). The advantages of situated query language are: (a) the queries allow context to be addressed absolutely and/or relatively to the current cell; (b) queries take place "in context" as opposed to outside of the database; this means that applications developed in the context of given cell or a given account can be used with the same meaning in other cells or other accounts without change; this is essential for sharing of user constructed applications and the resulting network effects of sharing of user constructed applications; (c) the query model takes advantage of tagging, connections and user account (i.e., membership) in order to build the most general framework for access to content.
The query structure for the data management system will be of the following: Query [Type] [Scope] [PageSize] [MaxSize] [Expression] wherein each query has following required top-level components [Type], [Scope] and an [Expression] component and following optional top-level components: [PageSize] and [MaxSize]. The [Expression] component comprises the sub-components <conditions>, <kind>, <orderby>, <filter>, <connect>, <tag>, <groupby> and <count>.
Figure 30 illustrates the specification of a situated query having a scope declaration (sc) and a query expression (expr) and the query is evaluated related to a cell (c). The specification of the operation scope (sc,c) has inputs that are the scope declaration sc and a cell instance c and the output returns a set of cells which have the value of the scope declaration sc. The specification of the operation evaluation (expr, c) has inputs that are the expression and the cell instance and the output returns all items in the one or more cells (identified by the scope declaration) that match the expression. The result of the query <sc,expr> evaluated at cell c is shown in Figure 30.
The [Type] of the query specifies the general type of content that the query intended to return. For example, the [Type] can be used to express that a query is for cells or items or tags or user accounts or application components or mixed set of resources (using a union operator).
The [Scope] is a formula determining a set of cells from which the result set will be generated. Hence, the scope of the query enables targeted search to take place. For example, the scope may be 'THIS cell'; or 'My Photo Cell'; or 'All Cells owned by My Account'; or 'All cells to which my account belongs'; or 'All cells belonging to my friends'; or 'All cells belonging to contacts that have been tagged "friends" or 'music'", etc. Hence, typically, the query may be processed in two stages: first a computation of the scope yielding a set of cells that are relevant to the query; and second, the computation of the expression part of the query within each of those cells with the query result being the union of the results of evaluating [Expression] for each cell in the result of evaluating [Scope]. The format of the [Scope] specification may consist of 1) scope actions and/or 2) two or more scope actions combined together in various ways using set operations wherein the set operations may include "union" to aggregate cells, "collect" to chain one scope action with another scope action and other known set operations.
The scope actions are all evaluated in the in context of a cell instance such that we can qualify the results of the query (which in the most common case is the information item instances for which we are searching). The expression of the scope actions may include any of the following methods: getCellOwner Action to retrieve information about the owner of cell from the database; getCellMembersAction to retrieve information about all members of the specified cell from the database; getCellsOwnedByAccountAction to retrieve information about all the web presences that a user has access to as specified in the database; getCellsWhoseMemberlsAccountAction to retrieve information for all the web presences that a user has access to as specified by the database; FilterByTag to filter provided objects (for example, cells and accounts) based on tag value such that the filter functions as a predicate which is evaluated in terms of the conditions being true or false. The FilterByTag method will be very useful in situations where a user account is tagged in a particular way. For example, a private tag "friend" may be defined by a user for a particular account. Such tags will be private tags such that only the user who defined the private tag can see and apply it as a filter using the FilterByTag method. Furthermore, the FilterByTag can be used as a scope action to find cells belonging to particular accounts that have been tagged with a private tag. For example, the account of a particular user may be tagged privately as "friend" by a user that only the user can see and apply as a filter as part of subsequent query processing. In this way the user X can tag the contact item for the user Y as "friend" which may be public tag (on the contact item) and also tag the account of the same user Y as "friend" that is private tag such that the scope action can filter and search for cells that are belonging to accounts that are known by the user X to be of his or her friends using the private tags at the account level. This implies that web accessible content belonging to a particular contact that has been privately tagged (for example, with private tag "friend" at the account level) could also be filtered using the FilterByTag method.
An example of the scope action specification is the following:
<scope xmlns=http://www.ludilabs.com/all/definition> <op name=scope.GetCellsOwnedByAccount>$ {cell, owner} </op>
</scope>
Another example of scope action specification which involves combining cell instances owned by a user with the cell instances that the user is a member of:
<scope xmlns=http://www.ludilabs.com/all/definition> <op name=union>
<op name=scope.GetCellsOwnedByAccount>$ {cell. owner} </op> <op name=scope.GetCellsWhoseMemberIsAccount>$ {cell. owner} </op> </op> </scope>
The [PageSize] of the query can optionally be used to specify the number of items (or objects) in the page of data to be returned in the query result such that the calling application can control the size of the result as a small subset within pages.
The [MaxSize] of the query can optionally be used to specify the maximum number of objects (for example items) to be returned in the query result.
The [Expression] of the query is used to specify the criteria of finding and returning information items stored in an application database (i.e., specific database containers associated with cell instances). The format of the expression may consist of one or more of the following components: <conditions>, <kind>, <orderby>, <filter>, <connect>, <tag>, <groupby> and <count>.
The <condition> specified for the query expression are dependent on [Type] of query. For example, if [Type]='Account\ the query conditions would be limited to returning list of user account or member list.
The <kind> is used to specify the type of content the query will be returning, i.e., the query results will be of the type of content identified by the <kind> identifier. For example, the query will be processed by a cell that has a database of items of the <kind> equal to 'Photoltem' or a 'Contactltem'.
The <orderby> component is used to specify the XPath value to reference the child element within the item such that the query results can be ordered by the specific child element within item instances (in the result of the query). The <orderby> component will also have the <direction> attribute that specifies whether the results are ordered in 'ascending' or 'descending' order, for example in terms of the last modified date of the item instance.
The <filter> component is used to specify the XPath value to reference the child element such that results of the query can be filtered by a specific child-element within the returned item instances. The <connect> component is used to specify that the returned items should be connected to (i.e., related to) the item referenced by the specified ItemID (which uniquely identifies an item instance).
The <tag> component is used to specify that the returned item instances have a specific tag value which may be in either the user-defined tag or system-managed tag.
The <groupby> element can optionally be used to specify the format of the results of the query, i.e., how the returned information or items should be grouped, for example, using one or more key values in particular elements within an item to group the data in the query result. The <count> element can optionally be used to specify the number of items to be returned in the query result.
Furthermore two or more sub-expressions may be combined using the <join> operation element with the <type> attribute used to specify whether the sub-expressions will be combined using the logical operators such as 'or', 'and', and 'not'. There can be multiple joined sub-expressions using the <join> operation element.
The following is an example of a query expression that filters for items which are contact items and have LastName (in contact item) having value equal to "Hayes" or tagged with the keyword value of "cool" such that the query results are sorted in order by LastName and then FirstName:
<expression xmlns=\"urn:com:sharefare:webos:basecomponents-1.0\"> <join type=\"or\"> <filter>
/ludi : contactltemKind/ludi : PersonName/ludi : LastName=\"Hayes\" </filter>
<tag> cool </tag> </join> <kind>
Contact </kind>
<orderby direction=\"asc\\">
/ludi : contactltemKind/ludi : PersonName/ludi : LastName </orderby>
<orderby direction=\"asc\">
/ludi : contactltemKind/ludi : PersonName/ludi : FirstName </orderby> </expression>;
Furthermore, here is the sample Java code for creating the application-level query which carries out the query within the cell that is the context for the query:
// prepare query
Query q = queryService.createQuery(
"<query><scope type=\"cell\" value=\"${this.cell}\"/>" + "<expression><kind>" + kindID + "</kind></expression></query>");
Figure 27 illustrates an example of an application component definition for a ContactComponent which includes a query to retrieve a Contactltem. The Contactltem includes a Contacts ItemList and a ConnectedContacts wherein both include a query as shown in Figure 27. Figure 28A illustrates a set of run-time code for the query to fetch all of the Contact items in a sorted order using the known W3C XQuery's FLWOR (for-let-where- orderby-return) expression. The XQuery is executed by the XML Database which returns the contact items, as an ordered list based on person's last name, from a DB container (associated with the cell) which has a collection of XML document-style item instances. Figure 28B illustrates a set of code for the query to fetch all of the connected items for a given contact item (identified by an itemID) and for a given cell. This code is generated by the query processor. To further illustrate the query language of the system, several additional examples of cell-level queries are provided below.
In a first example, the query (which is formulated in this example using the provided Java code sample) returns all that are of type ContentKind or LinkKind such that they are present in cells that either the specified user owns or the specified user is a member of the cells:
String queryXml = "<query xmlns=\"http://www.ludilabs.com/all/definition\">" +
" <scope>" +
" <op name=\"union\">" + " <op name=\"scope.GetCellsOwnedByAccount\">${cell.owner}</op>" +
" <op name=\"scope.GetCellsWhoseMemberIsAccount\">$ {cell. owner} </op>" +
" </op>" +
" </scope>" +
" <expression>" + " <join type=\"or\">" +
" <kind>ContactItem</kind>" +
" <kind>LinkItem</kind>" +
" </join>" + " </expression>" + "</query>";
In the second example, the query returns all items that are of type ContactltemKind and filters the result using the <FirstName> of the contact instance such that the specified user owns or is member of the underlying cell where the item is present:
String queryXml = "<query xmlns=\"http://www.ludilabs.com/all/definition\">" +
" <scope>" + " <op name=\"union\">" +
11 <op name=\"scope.GetCellsOwnedByAccount\">$ {cell.owner} </op>" +
" <op name=\"scope.GetCellsWhoseMemberIsAccount\">$ {cell.owner} </op>" +
11 </op>" +
" </scope>" + " <expression>" +
" <kind>ContactItem</kind>" +
11 <filter>//ludi:FirstName=\"" + firstName + "\"</filter>" +
" </expression>" +
"</query>";
In a third example, the query returns all items that have the specified URI link (referencing specific content) such that the specified user owns or is member of the underlying cell where the contact is present:
String queryXml = "<query xmlns-\"http://www.ludilabs.com/all/definition\">" +
11 <scope>" +
" <op name=\"union\">" +
" <op name=\"scope.GetCellsOwnedByAccount\">$ {cell.owner} </op>" +
" <op name=\"scope.GetCellsWhoseMemberIsAccount\">$ {cell. owner} </op>" + " </op>" +
" </scope>" +
" <expression>" +
" <filter>//ludi:Content=\'m + url + "\"</filter>" +
" </expression>" + "</qιiery>";
In a fourth example, the query returns all items that are connected to the specified item instance such that the specified user owns or is member of the underlying cell where the item is present: String queryXml = "<query xmlns=\"http://www.ludilabs,com/all/definition\">" + 11 <scope>" +
" <op name=\"union\">" + " <op name=\"scope.GetCellsOwnedByAccount\">${cell.owner}</op>" +
" <op name=\"scope.GetCellsWhoseMemberIsAccount\">$ {cell. owner} </op>" + " </op>" + " </scope>" + " <expression>" + " <connect>" + item.getldO + "</connect>" +
" </expression>" + "</query>";
In a fifth example, the query returns all items that are of specified Item kinds (identified as Item KindIDs) and connected to specified item instances and including specific system- or user-specified tags and sort the results in descending order by the last modified date such that the specified user owns or is member of the underlying cell where the item is present:
String queryXml = "<query xmlns=\"http://www.ludilabs.com/all/definition\">" +
" <scope>" +
" <op name=\"union\">" +
" <op name=\"scope.GetCellsOwnedByAccount\">${cell.owner}</op>" +
" <op name=\"scope.GetCellsWhoseMemberIsAccount\">$ {cell. owner} </op>" + " </op>" +
" </scope>" +
" <expression>" +
(kind = null ? "" : "<kind>" + kind + "</kind>") +
(tag == null ? "" : "<tag>" + tag + "</tag>") + (connect == null ? "" : "<connect>" + connect + "</connect>") +
(orderby == null ? "" : "<orderby direction=\"descending\">" + orderby + "</orderby>") +
" </expression>" +
"</query>";
In an sixth example, the query returns all items that are of specified ItemKinds (identified as Item KindIDs) and connected to the specified item instance and including specific system-managed tag of specified type and with specified role and sort the results in descending order by the last modified date such that the specified user owns or is member of the underlying cell where the item is present: String queryXml = "<query xmlns=\"http://www.ludilabs.com/all/definition\">" +
" <scope>" +
" <op name=\"union\">" +
" <op name=\"scope.GetCellsOwnedByAccount\">${cell.owner}</op>" + " <op name=\"scope.GetCellsWhoseMemberIsAccount\">$ {cell. owner} </op>" +
" </op>" +
" </scope>" +
" <expression>" +
(kind == null ? "" : "<kind>" + kind + "</kind>") + (tag == null ? "" : "<tag type=\"SystemTagType\" role=\"" + role + "\" name=\"" + category + "\">" + tag + "</tag>") +
(connect == null ? "" : "<connect>" + connect + "</connect>") +
(orderby == null ? "" : "<orderby direction=\"descending\">" + orderby + "</orderby>") " </expression>" +
"</query>";
In addition to the queries, the tags permit items to be sorted and filtered. The items can be sorted by basic item attributes (as defined in the Abstractltem Kind definition) such as source (originator), creation date, date modified, subject, and system-managed tags such as person (for example, the item creator), location, time, category, kinds, ratings and other general tags, i.e., user-defined tags. The filtering may be done based on the tags, such as the Person tag, the Location tag, the Time tag, the Category tag, the Kinds tag, the Rating tag, the user-defined tag or all of the tags.
Query Design for Retrieving Connected Items
Figure 29 illustrates a connection model of the data management system. The item connection model will be described in the context of the Universal Item Information Model (UπM) of the exemplary embodiment of the data management system. In the item connection model, an item may refer to a related item via a connection relationship model where item relationships are specified by ns:RelatedItemType that describes an Item Reference that is a URI and a relation type that is a user-defined tag to describe the type of relation between the two item instances. As shown in the example shown in Figure 29, two connections/relationships are shown along with the ns:RelatedItemType data structure. Figures 18A and 18B also illustrate a Contentltem type that has the connections using the RelatedltemType data structure. The connections and relationships permit the data management system to provide one or more zoom-levels to access an item instance. When an item instance is accessed via a query and actions, each instance may have a default zoom- level for the particular ItemKind. The Zoom levels may include Zoom Level 0 (where metadata only is retrieved along with any encapsulated data components), Zoom Level 1 (where metadata and all immediately related item instances are retrieved), Zoom Level 2 (where metadata and any specific related items specified by the user are retrieved, Zoom Level 3 (where no metadata, but all related items are retrieved) and Zoom Level 4(where no metadata, but all specific related items are retrieved).
As discussed earlier, the connections may be stored in a connection element for each item and may be either system generated or user generated. The user generated connections permit purpose-based and object-oriented, two-way linking of related items. Examples of system generated connections for a contact item are shown in Figure 18A above. For the system generated connections, when a piece of content originates from a transport-oriented source (e.g., email), the content is parsed into its applicable item kinds that may include, for an email message for example: attachments, sender information (parsed from the 'From:' header field of the email) and the message body including Links and Embedded Photos. For the user generated connections, a user can connect any item of any type with an item of any other item type wherein an item can be connected to n number of other items. Furthermore, in the data management system only persons authorized to work with a particular item can create connections from/to that item.
Once items are connected to each other, the items can be viewed by a "Connected
View" feature of the data management system. Once the items are connected, the data management system permits queries to retrieve the related items. Hence, for the example of where the user has selected an item that is of any type and the user needs to see all the connected items to the selected item instance, the query will return for a given cell (a) all system defined connections (i.e., all items that came in with the selected item), (b) all items that are first level of user defined connections, (c) and the contact that sent the item. Furthermore, the connected items would be accessed by the data management system using the ItemID of the connected item which would be the value set in the <ItemReference> element within the <RelatedItem> child element of the base type AbstractltemKind. As another example, the query for retrieving related items wherein the user has selected a contact item and needs to see all items connected to the selected contact item instance, the query needs to fetch all the items from the contact and show them as related items to the Contact item selected. The query results returned for a given cell in the data management system will include (a) contact (which should correspond to the <Source> element in the related items), (b) all items sent from that contact (for example, emails, photos, and any other type of items), (c) all items connected to the selected contact item. Similar to previous example, the ItemID (which is set in the <ItemReference> element within the <RelatedItem> child element of the base type AbstractltemKind) will be used to retrieve the connected items.
As another example, the query for retrieving related items wherein the item is of type EmailMessageKind, i.e., user has selected an email and user wants to see connected item to the selected email. The query results returned for a given cell in the data management system will include (a) the selected email item , (b) all items that are system defined to the email, i.e., all items that were originally to the email and/or parsed from the message body (for example, a web URL link or an email address embedded in the email message body), and (c) the contact item for the person who sent the message (i.e., the 'From:' field of the email header). Similar to previous examples, the ItemID (which is set in the <ItemReference> element within the <RelatedItem> child element of the base type AbstractltemKind) will be used to retrieve the connected items.
While the foregoing has been with reference to a particular embodiment of the invention, it will be appreciated by those skilled in the art that changes in this embodiment may be made without departing from the principles and spirit of the invention, the scope of which is defined by the appended claims.

Claims

Claims:
1. A computer-implemented web presence interface model, the model comprising: one or more presentation elements wherein each presentation element defines a visual component of the web presence and how one or more objects in the web presence are displayed to the user and interacted with by the user wherein a computation portion of the web presence is defined separately from the one or more presentation elements; and each presentation element further comprising a model portion defining one or more types of objects associated with the presentation element and a variable having a value associated with the presentation element to identify a set of objects to be displayed by the presentation element, a view portion defining at least one view associated with the presentation element and one or more view level operations and a type specific information portion defining a format for the presentation element and object type specific actions.
2. The model of claim 1, wherein the view portion defined a plurality of views for the presentation element wherein each view defines a different way to display the set of objects in the presentation element.
3. The model of claim 2, wherein the plurality of views further comprises a list view, a detail view, an icons view, a calendar view, a map view, a tags list view, a group by kinds view, or a light box view.
4. The model of claim 2, wherein each particular view further comprises one or more view level operations that can be performed on the set of objects within the particular view.
5. The model of claim 4, wherein the one or more view level operations further comprise a view as operation, a sorting operation, a filtering operation, a next item operation, a previous item operation an inspect operation, a new item operation, a paste operation or a select item operation.
6. The model of claim 1, wherein the variable further comprises a formula used to identify the set of objects to be displayed by the presentation element.
7. The model of claim 6, wherein the formula further comprises a situated query formula.
8. The model of claim 1, wherein each presentation element is defined using a plurality of lines of widget definition language code.
9. The model of claim 8, wherein the plurality of lines of widget definition language code are extended markup language code.
10. The model of claim 1, wherein the variable further comprise an object having a type specified by an information model or a list of objects having a type specified by an information model.
11. The model of claim 7, wherein the situated query further comprises a type specification that specifies a type of item to be returned by the situated query.
12. The model of claim 7, wherein the situated query further comprises a scope where the scope describes a set of cells from which the situated query is to retrieve data.
13. The model of claim 12, wherein the scope further comprises absolute references and/or relative references combined with one or more operators.
14. The model of claim 13, wherein the relative references are resolved relative to the context cell for the query.
15. The model of claim 12, wherein the situated query has a expression wherein the situated query with the expression returns all items in the one or more cells identified by the scope which further match the expression.
16. The model of claim 7, wherein the situated query further comprises a page size that define a number of items to be returned at a time by the situated query.
17. The model of claim 7, wherein the situated query further comprises a maximum size that define a maximum number of items returned by the situated query.
18. The model of claim 15, wherein the expression of the situated query further comprises a kind element that defines a type of item which the situated query is supposed to return.
19. The model of claim 15, wherein the expression of the situated query further comprises a filter element that filters the items returned by the situated query.
20. The model of claim 15, wherein the expression of the situated query further comprises a connect element so that the situated query returns all items related to a defined item.
21. The model of claim 15, wherein the expression of the situated query further comprises a tag element so that the situated query returns all items that match the tag element with respect to the tags and their values.
22. The model of claim 15, wherein the expression of the situated query further comprises an orderby element that orders the items returned by the situated query based on the values of a child element within each item.
23. The model of claim 15, wherein the expression of the situated query further comprises a groupby element that groups the items returned by the situated query based on the values of a child element within each item.
24. The model of claim 15, wherein the expression of the situated query further comprises a count element such that the situated query returns the count of items.
25. The model of claim 15, wherein the expression of the situated query further comprises a condition element that limits the situated query based on the type of entities to be returned.
26. The model of claim 15, wherein the situated query further comprises some number of expressions wherein the situated query returns all items in the cells identified by the scope that match all or some of those expressions and wherein the expressions are combined using a join operation element, indicating either "and" or "or" respectively.
27. The model of claim 1, wherein each presentation element further comprises one or more presentation elements nested within the presentation element.
28. A computer implemented method for specifying a web presence interface, the method comprising: providing one or more presentation elements wherein each presentation element defines a visual component of the web presence and how one or more objects in the web presence are displayed to the user and interacted with by the user wherein a computation portion of the web presence is defined separately from the one or more presentation elements; and each presentation element further comprising a model portion defining one or more types of objects associated with the presentation element and a variable having a value associated with the presentation element to identify a set of objects to be displayed by the presentation element, a view portion defining at least one view associated with the presentation element and one or more view level operations and a type specific information portion defining a format for the presentation element and object type specific actions.
29. The method of claim 28, wherein the view portion defined a plurality of views for the presentation element wherein each view defines a different way to display the set of objects in the presentation element.
30. The method of claim 29, wherein the plurality of views further comprises a list view, a detail view, an icons view, a calendar view, a map view, a tags list view, a group by kinds view, or a light box view.
31. The method of claim 29, wherein each particular view further comprises one or more view level operations that can be performed on the set of objects within the particular view.
32. The method of claim 31, wherein the one or more view level operations further comprise a view as operation, a sorting operation, a filtering operation, a next item operation, a previous item operation an inspect operation, a new item operation, a paste operation or a select item operation.
33. The method of claim 28, wherein the variable further comprises a formula used to identify the set of objects to be displayed by the presentation element.
34. The method of claim 33, wherein the formula further comprises a situated query formula.
35. The method of claim 28, wherein each presentation element is defined using a plurality of lines of widget definition language code.
36. The method of claim 35, wherein the plurality of lines of widget definition language code are extended markup language code.
37. The method of claim 28, wherein the variable further comprise an object having a type specified by an information method or a list of objects having a type specified by an information method.
38. The method of claim 34, wherein the situated query further comprises a type specification that specifies a type of item to be returned by the situated query.
39. The method of claim 34, wherein the situated query further comprises a scope where the scope describes a set of cells from which the situated query is to retrieve data.
40. The method of claim 39, wherein the scope further comprises absolute references and/or relative references combined with one or more operators.
41. The method of claim 40, wherein the relative references are resolved relative to the context cell for the query.
42. The method of claim 39, wherein the situated query has a expression wherein the situated query with the expression returns all items in the one or more cells identified by the scope which further match the expression.
43. The method of claim 34, wherein the situated query further comprises a page size that define a number of items to be returned at a time by the situated query.
44. The method of claim 34, wherein the situated query further comprises a maximum size that define a maximum number of items returned by the situated query.
45. The method of claim 42, wherein the expression of the situated query further comprises a kind element that defines a type of item which the situated query is supposed to return.
46. The method of claim 42, wherein the expression of the situated query further comprises a filter element that filters the items returned by the situated query.
47. The method of claim 42, wherein the expression of the situated query further comprises a connect element so that the situated query returns all items related to a defined item.
48. The method of claim 42, wherein the expression of the situated query further comprises a tag element so that the situated query returns all items that match the tag element with respect to the tags and their values.
49. The method of claim 42, wherein the expression of the situated query further comprises an orderby element that orders the items returned by the situated query based on the values of a child element within each item.
50. The method of claim 42, wherein the expression of the situated query further comprises a groupby element that groups the items returned by the situated query based on the values of a child element within each item.
51. The method of claim 42, wherein the expression of the situated query further comprises a count element such that the situated query returns the count of items.
52. The method of claim 42, wherein the expression of the situated query further comprises a condition element that limits the situated query based on the type of entities to be returned.
53. The method of claim 42, wherein the situated query further comprises some number of expressions wherein the situated query returns all items in the cells identified by the scope that match all or some of those expressions and wherein the expressions are combined using a join operation element, indicating either "and" or "or" respectively.
54. The method of claim 28, wherein each presentation element further comprises one or more presentation elements nested within the presentation element.
PCT/US2008/004223 2007-03-29 2008-03-31 Interface definition for implementing contextual applications WO2008121410A1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US92105207P 2007-03-29 2007-03-29
US60/921,052 2007-03-29
US5817508A 2008-03-28 2008-03-28
US12/058,175 2008-03-28

Publications (1)

Publication Number Publication Date
WO2008121410A1 true WO2008121410A1 (en) 2008-10-09

Family

ID=39808618

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2008/004223 WO2008121410A1 (en) 2007-03-29 2008-03-31 Interface definition for implementing contextual applications

Country Status (1)

Country Link
WO (1) WO2008121410A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105677346A (en) * 2016-01-04 2016-06-15 浪潮软件集团有限公司 Dynamic expansion method of web interface and server

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030158975A1 (en) * 2002-02-15 2003-08-21 Tridium Real-time data interface and method for browsers and the like
US20050193368A1 (en) * 2004-02-26 2005-09-01 International Business Machines Corporation Rendering GUI widgets with generic look and feel
US20060015818A1 (en) * 2004-06-25 2006-01-19 Chaudhri Imran A Unified interest layer for user interface
US20060168536A1 (en) * 2003-06-05 2006-07-27 Swiss Reinsurance Company Method and terminal for generating uniform device-independent graphical user interfaces
US20060224250A1 (en) * 2005-04-01 2006-10-05 Rockwell Automation Technologies, Inc. Industrial automation interface systems and methods

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030158975A1 (en) * 2002-02-15 2003-08-21 Tridium Real-time data interface and method for browsers and the like
US20060168536A1 (en) * 2003-06-05 2006-07-27 Swiss Reinsurance Company Method and terminal for generating uniform device-independent graphical user interfaces
US20050193368A1 (en) * 2004-02-26 2005-09-01 International Business Machines Corporation Rendering GUI widgets with generic look and feel
US20060015818A1 (en) * 2004-06-25 2006-01-19 Chaudhri Imran A Unified interest layer for user interface
US20060224250A1 (en) * 2005-04-01 2006-10-05 Rockwell Automation Technologies, Inc. Industrial automation interface systems and methods

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105677346A (en) * 2016-01-04 2016-06-15 浪潮软件集团有限公司 Dynamic expansion method of web interface and server

Similar Documents

Publication Publication Date Title
US10120952B2 (en) System and method for defining application definition functionality for general purpose web presences
US10528555B2 (en) Data management system and method to host applications and manage storage, finding and retrieval of typed items with support for tagging, connections, and situated queries
US10033799B2 (en) Semantically representing a target entity using a semantic object
US8161066B2 (en) Methods and systems for creating a semantic object
US7398261B2 (en) Method and system for managing and tracking semantic objects
Di Lorenzo et al. Data integration in mashups
RU2421798C2 (en) Data model for object-relation data
US20050246686A1 (en) Rules framework for definition and execution of end-user rules logic
US20090019020A1 (en) Query templates and labeled search tip system, methods, and techniques
Suleman Open digital libraries
EP1625513A2 (en) Rules framework for definition and execution of end-user rules logic
JP2006505872A (en) Techniques for managing multiple hierarchies of data from a single interface
US20080162548A1 (en) Object oriented, semantically-rich universal item information model
Werbrouck et al. Mapping federated AEC projects to industry standards using dynamic views
WO2008121410A1 (en) Interface definition for implementing contextual applications
Amdouni Web services composition in uncertain environments
WALES Mashups for Data Integration: An Analysis
Özyönüm Semantic service discovery with heuristic relevance calculation
Baddam Knowledge Extraction from Heterogeneous Information Models

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 08742443

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 08742443

Country of ref document: EP

Kind code of ref document: A1