One skilled in the art will readily recognize from the following discussion that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles of the invention described herein.
The present invention enables a user to contribute to a logical taxonomy and extend a database schema from within a record, without requiring the user to switch to a database administration mode. Modifications and additions of attributes are automatically made to the schema and to existing records in the database without requiring additional administration.
Taxonomy engine 106 includes logic for executing SQL logic on taxonomy database 104. Taxonomy engine 106 enables the addition by users of attributes and values associated with nodes in taxonomy database 104, as well as searching the database 104 for records having specified attribute values.
Taxonomy database 104 may be a relational database or any other type of database that stores the data usable by the taxonomy engine 106. Taxonomy engine 106, taxonomy database 104, and server 102 may be stored and operated on a single computer or on separate computer systems communicating with each other through a network.
One skilled in the art will recognize that the system architecture illustrated in
The ability to extend the schema and add to the logical taxonomy from within a record allows a user of the database to remain in the context of the particular record being viewed while still making changes to the underlying schema, as opposed to having to switch to a database editing view and then modifying the schema.
Continuing, non-fiction books include, for example, history books 212 and science books 214. Science books include math books 216 and physics books 218. Math books may be textbooks 220 or treatises 222, and textbooks are current 224 or superseded 226. Node 228 is a leaf node containing a record for a book titled “Math Made Easy”. Additional attributes include the book's author, publisher, publication date, binding, and price.
Next, and as illustrated in
In
Next, in
In
Initially, a record is retrieved from the database 902. This retrieval takes place, for example, when user computer 110 makes a request for a web page displaying content of the type stored in database 104. Once retrieved, the record is displayed to the user 904. For example, server 102 obtains the record from the database, assembles a web page including the retrieved record and any other components of the page, and supplies the web page to user computer 110. Note that multiple records may be retrieved and displayed to a user in a single web page, though for clarity of description we describe a single record—no loss of generality is intended.
When a user of system 100 determines that she would like to extend the database schema, she supplies via user computer 110 a new attribute and value for the attribute. In the example described previously, the user determines that “Includes Problem Solutions” would be a useful attribute to include in records relating to math textbooks. The new attribute and value are received by server 102 and communicated in turn to taxonomy engine 106 at step 906. Also communicated to taxonomy engine 106 is an indication, for example a record ID, of the database record where the schema modification request was initiated—for example, the record a user was viewing when she selected a modification option.
In one embodiment, prior to modifying the schema, taxonomy engine 106 determines whether the user has permission to modify the schema. As will be understood by those of skill in the art, different users may be given different levels of access to extend the schema, including restrictions as to which portions of the schema can be extended. Taxonomy engine 106 accordingly determines, for example by reference to a user's account information and the security policy settings for the schema, whether the user is entitled to perform the requested modification. Once taxonomy engine 106 has determined that the user is entitled to perform the modification, it implements the modification by adding the new attribute to the schema 908. Taxonomy engine 106 also adds the value for the attribute supplied by user computer 110 to the record that originated the modification 910, and stores the updated record in the database 912. In one embodiment, values are left blank for other records to which the attribute is applicable. In another embodiment, the affected records are flagged for review so that a value can be supplied for each record, either by a system administrator or by other users of the system.
In one embodiment, users are allowed to supply values to attributes that already have values. This is particularly useful in cases where an attribute is subjective—describing matters of opinion such as whether a store has “easy parking”, or “friendly staff”. When a record is displayed, in one embodiment a number or percentage of contributing users who have selected each value for an attribute is displayed. For example, “30% of users agree that this location has easy parking.” Alternatively, the record can display only a composite value for the attribute, determined according to a rule defined by a system administrator. For example, if an attribute requires a Yes/No response, in one embodiment the attribute will be set to “Yes” if more than 50% of respondents indicate “Yes”. If the attribute is of another type, such as numeric or free text, then a rule can be established for resolving attribute values during search, such that a value is “true” if more than a threshold number, e.g., 20%, of all values supplied for the attribute responses contain that value. Thus, if 20% of respondents indicate that a restaurant serves “Italian” food, then that restaurant will be displayed when a user searches for Italian restaurants. Note that 30% of respondents might have indicated that the same restaurant serves “Continental” food, and the restaurant would also show up in a search for restaurants serving Continental food. Accordingly, a restaurant can have attribute values that are “true” for multiple values. Composite values in one embodiment are stored in the database but do not replace the individual values supplied by users. These analytically-determined composite values may be updated and stored each time a new value is received for an attribute, or they may be determined in real time prior to being displayed or used for a search.
In one embodiment, system 100 enables searching of attribute values including those contributed by other users. For example, a user may be interested in locating all current math textbooks that include problem solutions, or all Italian restaurants with easy parking. Because some visitors to the Terry's Books web site might indicate that Math Made Easy includes problem solutions, while other visitors indicate that it does not include solutions, a composite value for the attribute as described above enables the search to proceed and return results consistent with the composite value rules. Thus, if a rule provides that the “Includes problem solutions” attribute should be true if more than 20% of contributing users indicate that it is true, then a search for math textbooks that include problem solutions will return Math Made Easy if more than 20% of contributing users have so indicated.
Because system 100 enables not just extension of the database schema but also additions to the taxonomy by contribution of attribute values, it is helpful to allow either manual or automatic override of the supplied values in some cases, particularly where the attribute describes a subjective measurement, such as whether restaurant staff is friendly.
In one embodiment administrators of system 100 and users of system 100 can assign relationships between different type values in order to recompress the type list and increase relevancy in searching. For example, for a “Food Type” attribute in a restaurant database, “Dutch” and “Netherlands” should be normalized to either one term or the other. If some reviewers choose “Dutch” and some choose “Netherlands” when assigning a value to the attribute, an assigned relationship of “Dutch=Netherlands”, set either by users or by an administrator will ensure that search results remain accurate and relevant.
The present invention has been described in particular detail with respect to a subset of possible embodiments. Those of skill in the art will appreciate that the invention may be practiced in other embodiments. First, the particular naming of the components, capitalization of terms, the attributes, data structures, or any other programming or structural aspect is not mandatory or significant, and the mechanisms that implement the invention or its features may have different names, formats, or protocols. Further, the system may be implemented via a combination of hardware and software, as described, or entirely in hardware elements. Also, the particular division of functionality between the various system components described herein is merely exemplary, and not mandatory; functions performed by a single system component may instead be performed by multiple components, and functions performed by multiple components may instead performed by a single component.
Some portions of this description present the features of the present invention in terms of algorithms and symbolic representations of operations on information. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. These operations, while described functionally or logically, are understood to be implemented by computer programs. Furthermore, it has also proven convenient at times, to refer to these arrangements of operations as modules or by functional names, without loss of generality.
Unless specifically stated otherwise as apparent from the above discussion, it is appreciated that throughout the description, discussions utilizing terms such as “determining” or “displaying” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system memories or registers or other such information storage, transmission or display devices.
Certain aspects of the present invention include process steps and instructions described herein in the form of an algorithm. It should be noted that the process steps and instructions of the present invention could be embodied in software, firmware or hardware, and when embodied in software, could be downloaded to reside on and be operated from different platforms used by real time network operating systems.
The present invention also relates to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored on a computer readable medium that can be accessed by the computer. Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, application specific integrated circuits (ASICs), or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus. Furthermore, the computers referred to in the specification may include a single processor or may be architectures employing multiple processor designs for increased computing capability.
The algorithms and operations presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may also be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will be apparent to those of skill in the, along with equivalent variations. In addition, the present invention is not described with reference to any particular programming language. It is appreciated that a variety of programming languages may be used to implement the teachings of the present invention as described herein, and any references to specific languages are provided for invention of enablement and best mode of the present invention.
The present invention is well suited to a wide variety of computer network systems over numerous topologies. Within this field, the configuration and management of large networks comprise storage devices and computers that are communicatively coupled to dissimilar computers and storage devices over a network, such as the Internet.
Finally, it should be noted that the language used in the specification has been principally selected for readability and instructional purposes, and may not have been selected to delineate or circumscribe the inventive subject matter. Accordingly, the disclosure of the present invention is intended to be illustrative, but not limiting, of the scope of the invention, which is set forth in the following claims.