Project Name: Creating a user model using component based approach
Inventors: Prof. Tsvi Kuflik, Dr. Eyal Dim
Field Of The Invention
A computerized method of creating a user model, comprising:
1) Providing one or more software component collections containing software components. Each of the software components is associated with a single attribute and has:
a. An attribute generation engine for calculating an attribute data.
b. An attribute repository which stores the attribute data.
c. An output object which outputs the attribute data to another of the plurality of software components.
d. A metadata field which holds an identifier relating to the respective software component.
2) Selecting by a developer, a subset of software components.
3) Defining by the developer, a plurality of data links mapping data flow among the members of the subset.
4) Generating a user model based on the subset and the data links.
5) Outputting the user model.
According to some embodiments of the present invention, there are provided methods of creating a user model. A plurality of software components is provided from one or more collection of software components collections. Each one of the plurality of software components is associated with a single attribute and has:
$1· Attribute generation engine for creating a single attribute value.
$1· Attribute repository field which stores the single attribute value.
$1· Output object which outputs the single attribute value to other software components of the plurality of software components.
$1· Metadata which holds an identifier relating to the respective software component.
The user model developer selects a subset of software components form the plurality of software components and defines a plurality of data links mapping data flow among a plurality of members of the subset. The user model is created based on the subset and the plurality of data links. The user model includes an execution mechanism for instantiating the user model for one or more specific users. The user model is then outputted.
This invention relates to user modeling, and, more specifically, but not exclusively, to user modeling employing component based approach.
According to some embodiments of the present invention there are provided systems and methods for developing a user model employing component based approach by dividing the user model into small, standard and reusable multipurpose building block software components having a common structure that may be integrated to create an abstract user model. The component based approach is an incremental approach for user modeling which is based on defining the building block software components as reusable units for deployment and composition of the user model.
A user model includes a plurality of concepts in which the concepts are composed of one or more of the plurality of software components. The user model is developed by selecting the software components that implement the characteristics and/or features required by the user model. The software components may be retrieved from one or more component collections.
Optionally, group models are modeled using the component based approach to support modeling of a group comprising of two or more user models. The group model may include and/or present characteristics and/or attributes induced from the relationships and/or impacts between two or more of the user model the group model includes.
According to some embodiments of the present invention there are provided systems and methods for creating a plurality of software components to be used for constructing the user model. The software components are created using a common structure so as to maintain a standard representation of the software components. Each of the software components is associated with a single attribute. The component is a small bounded unit which is capable of receiving data through one or more input ports, processing the data to generate an attribute data, storing the attribute data after time tagging it and allowing access to the attribute data from other software components through a single output port. The component may include metadata which holds additional information that relates to the component, for example, software component type, user model or group model identification data, model instance identifier, definition of the attribute and/or software component behavior explanations.
Optionally, the component is capable of generating default attribute data without receiving data from the input port(s).
Optionally, the component may store a plurality of specific attribute values each paired with a time tag to provide multiple values of the attribute over time.
The plurality of software components constituting the user model is connected among themselves with data links according to the concept, capability and/or feature they are required to present. The data link represents a communication and/or interface channel among the software components and/or between the software components and service applications that need the software component information content. The data link defines the flow of data through the user model and delivers attribute data from the software component to a consumer (e.g., another software component and/or another application) as a tuple. The tuple may include a plurality of additional data items, for example, the origin component identification, the sending time and/or a collection of time tagged values of the software components' attributes.
Optionally, the user model and/or the group model hold design information relating to the software components and/or the data links implementing and/or organizing the user model and/or group model respectively.
Dividing the user models into simple and/or small software components may enable the recruiting the effort of a plurality of vendors, organizations and/or sites to map and generate these software components. The software components may be aggregated into a publicly available collection(s). The software components, their dynamically expanding collection and relevant methodologies could become a user-modeling standard supporting component suppliers, user model developers to develop user models and service applications designers using the developed user models for creating their service applications.
Before explaining at least one embodiment of the invention in detail, it is to be understood that the invention is not necessarily limited in its application to the details of construction and the arrangement of the components and/or methods set forth in the following description and/or illustrated in the drawings and/or the Examples. The invention is capable of other embodiments or of being practiced or carried out in various ways.
As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wire line, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer and/or computerized device program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the developer's and/or user's computer, partly on the developer's and/or user's computer, as a stand-alone software package, partly on the developer's and/or user's computer or computerized device (e.g. smart phone, smart object, smart devices, etc.) and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the developer's and/or user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
Aspects of the present invention are described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks