1. Field of Invention
This invention relates to computing and in particular to the field of storing and accessing data in datastores.
2. Description of Related Art
One fundamental choice a developer makes when developing software is the selection of appropriate data structures to facilitate organizing and referencing data. Many different types of data structures are available, including linked lists, stacks, trees, arrays and others. Each data structure is associated with certain advantages and limitations.
The tree is a frequently-used data structure. One common form of tree is composed of a finite set of elements called nodes, linked together from a root to one or more internal nodes, each of which may be linked to one or more nodes, eventually ending in a number of leaf nodes. Data is typically stored in the nodes and can be referenced using the links from root to node to leaf and from parent to child and so on. Consequently, a hierarchal or sequential relationship may be attributed to data stored in the nodes of a tree structure.
One limitation of tree data structures is that typically a tree can only represent one hierarchy. One data structure that permits a plurality of hierarchies is an interlocking trees datastore. An interlocking trees datastore can be referred to as a KStore or merely a K. The structure of interlocking trees datastores, as well as the building and querying of the datastores, are described in U.S. patent application Ser. No. 10/385,421 (titled: SYSTEM AND METHOD FOR STORING AND ACCESSING DATA IN AN INTERLOCKING TREES DATASTORE, and filed on Mar. 10, 2003), Ser. No. 10/666,382 (titled: SYSTEM AND METHOD FOR STORING AND ACCESSING DATA IN AN INTERLOCKING TREES DATASTORE, and filed on Sep. 19, 2003) and Ser. No. 10/759,466 (titled: SAVING AND RESTORING AN INTERLOCKING TREES DATASTORE, and filed on Jan. 16, 2004).
The interlocking trees datastores are accessed by their engine using software that had to be custom built for each application. Furthermore, knowledge of the datastore itself was required in order to design the new interfaces required for each application requiring access to the interlocking trees datastore. Therefore, the use of the prior art datastore, K, with many different applications could be time consuming.
All references cited herein are incorporated herein by reference in their entireties.
A general method for providing a display of data such as charts and graphs, from an interlocking trees datastore in a graphical display system having a graphic display device is disclosed, the method including the steps of collecting display requirements for defining at least one value and at least one display characteristic to be displayed on the graphic display device and querying an interlocking trees datastore in accordance with the display requirements to determine the value to be displayed. At least one graphical display parameter is determined in accordance with the display requirements and the value to be displayed and the graphical display parameter are transmitted to the graphical display device for display of the value by the graphic display device. The step of collecting the display requirements includes the further step of collecting at least one variable constraint and the variable constraint establishes a context. The graph or chart can have an x-axis and a y-axis and the step of collecting the display requirements includes the further step of collecting the display requirements for at least one x-axis value.
At least one constraint set can have a plurality of variable constraints for an x-axis value. At least one variable constraint is collected for an x-axis value and at least one variable constraint is collected for each x-axis value of a plurality of x-axis values. Other variable constraints may be collected to establish a context for the x-axis values, and would be combined with the at least one variable constraint for an x-axis value. The variable constraint establishes a context. The interlocking trees database is queried for at least one constraint count. When the graph or chart has an x-axis and a y-axis and the step of collecting the display requirements includes the further step of collecting at least one focus constraint for determining a y-axis value corresponding to each x-axis value, of the graph or chart.
At least one analytic type is collected and the interlocking trees database is queried in accordance with the analytic type. The interlocking trees datastore has a plurality of data records. At least one focus constraint is determined and the analytic type and the focus constraint are applied to the plurality of data records to determine a y-axis value. When at least one constraint is collected the interlocking trees database is queried for at least one corresponding constraint count in accordance with the number of times the constraint is referenced in the interlocking trees datastore. A plurality of constraints having a plurality of corresponding constraint counts is collected, and the constraints of the plurality of constraints are ordered in accordance with the counts of the plurality of constraint counts to provide ordered constraints. The interlocking trees database is queried in accordance with the ordered constraint counts. At least two constraints of a plurality of constraints are logically associated with each other to provide a constraint set and a y-axis value is determined for the constraint set. The analytic type can be any analytic routine.
The invention will be described in conjunction with the following drawings in which like reference numerals designate like elements and wherein:
Referring now to
In one preferred embodiment of the invention, the block 16 of the graphical display system 10 can be a conventional graphical user interface (GUI) for receiving and transmitting data from the user 12. In this case, the block 16 is referred to as the GUI 16. In another preferred embodiment, the block 16 can be a background application. One background application that is well adapted for use with the graphical display system 10 in this manner is a corporate portal that must constantly update charts and graphs in real time with changing data from the KStore 28, wherein the constraints are fixed. When a user 12 is using the graphical display system 10, the user 12 can enter queries for the KStore 28 by way of the channel 14 and the GUI 16.
The GUI 16 communicates with the process block 24 by way of the bi-directional channel 22 in order to apply input from the user 12 or the background application to the process block 24. In this manner, the process block 24 can collect the display requirements for defining a display on the graphical display device 20. The input of the user 12 or the background application consists of constraints to be used to limit access to only the data of interest from the KStore 28 in order to obtain answers to queries entered. The constraints can include variable constraints (constraints that can vary according to user selections) or partial variable constraints, focus constraints (constraints that determine, for example, a y-axis value), filter constraints (context constraints that are combined with all other constraints to determine the data set to be used by the analysis routine) and others. The constraints collected by the process block 24 are discussed in more detail below.
Thus, when the graphical display process flow 40 receives the input as shown in block 42, a constraint list can be compiled for each data point as shown in block 44. While the system and method of the invention will operate with the constraints in substantially any order, significant improvements in the performance of the graphical display system 10 can be obtained by ordering the constraints received by the process flow 40 before adding them to the KStore 28. Thus, in a preferred embodiment of the invention the constraints are ordered starting with the ones that occur least frequently within the KStore 28 followed by the ones that occur most frequently.
Therefore, the process block 24 queries the KStore 28 for a constraint count corresponding to each constraint in the lists collected during execution of block 44. Using the constraint counts, the constraints are then ordered as shown in block 46. The ordered constraints are added to the KStore 28 as shown in block 48 and a KStore analytic is called as shown in block 50. The result is saved as shown in block 52. If there are any data points that have not been processed execution of the graphical display process flow 40 returns to block 44 as shown in decision 54. Otherwise, a data set is prepared as shown in block 56 and the data is pushed to the graphical display device 20 as shown in block 58 of the graphical display process flow 40.
Referring now to
The interlocking trees datastore 80 is a diagrammatic representation of the KStore 28 of the graphical display system 10. Data records such as the data records shown in the Table below can be imported into the interlocking trees datastore 80 and stored for accessing and display by the user 12 or background application using the graphic display process flow 40. Note that the actual KStore 28 resides in a memory of a computer system (not shown). Furthermore, the nodes of the interlocking trees datastore 80 do not contain any data or strings. All of the links between the nodes of the database 80 are pointers.
The variable constraints collected by block 44 of the process flow 40 when querying the KStore 28 can be, for example, Bill and Monday. The endproduct node 112 represents Bill and Monday is represented by the endproduct node 116. The construction of the endproduct nodes from the elemental nodes, and some of the endproduct nodes are not shown. The count for each constraint is represented in the interlocking trees datastore 80 as a numeral within the corresponding node. Thus, when the counts are obtained by block 46 for ordering the constraints, a count of 10 is obtained for Bill as shown in elemental node 112 and a count of 9 is obtained for Monday as shown in the elemental node 116. Since the count for Monday is lower than the count for Bill, the constraint Monday is added to the KStore 28 before Bill in the preferred embodiment.
The user 12 can input a query into the graphical display system 10 in order to determine how many transactions Bill made on Monday. In response the interlocking trees datastore 80 can be traversed from Monday's endproduct node 116 to nodes 88, 120 and, therefrom, to endproduct nodes 96, 100, 104, 108. The interlocking trees datastore 80 can then be traversed from Bill's endproduct node 112 to node 84 and, therefrom, to endproduct nodes 96, 100. The need to traverse from node 84 to product node 92 is eliminated since it was learned that there are no Monday transactions in that path when traversing from Monday's endproduct node 116. It will be understood that further constraints can be added to the datastore 80 in this manner. For example, the variable constraint ‘sold’ can be added, thereby eliminating endproduct node 100.
The intersection of the traversals for the Bill and Monday constraints is therefore endproduct nodes 96, 100. Product nodes 96, 100 have counts of 1 and 3, respectively. Accordingly, as shown in block 50, a count analytic could be called to add the two counts and determine that Bill had 4 transactions on Monday.
Referring now to
Since the chart being generated using the interface shown in the screen shots 120, 130 is an xy graph the user 12 must select an axis for the constraint to be entered as shown at block 122. Since the y-axis is selected on the screen shot 120 the user is adding a focus or a context constraint. In this example the user has selected the sales field and added it into the selected items box 128. Additionally with additions to the screen, the possible variable constraints are also displayed on the screen shot 120, for example dayoftheweek, sales, salesperson etc. The user could then select a variable constraint for both Bill and Tom by highlighting an item on the list and operating the add button 126 causing the highlighted item to appear in the selected items field 128.
In the screen shot 130 the user 12 is selecting the variable constraints for the values along the x-axis as shown by the highlight 132. As shown by the highlight 134 a ‘salesperson’ is being selected. When salesperson is highlighted in this manner the salespersons available for selection are displayed in the field 136 of the screen shot 130. By highlighting a selection in this manner and operating the add button 137 the user 12 can add salespersons to the list 138 of variable constraints in the selected items field 138. When the user 12 has inputted all of the constraints required the generate chart button 139 can be operated. The graphical display process flow 40 adds the constraints in the field 138 to the interlocking trees datastore 80 as previously described and the graphical representation 140 is provided on the graphical display device 20. Graphical representation 140 includes two bars representing the total sales, as selected on screen shot 120, for both Bill and Tom, as selected on screen shot 130.
Referring now to
The screen shot 150 shows the selection of the variable constraints Bill and Tom substantially as shown in the screen shot 130. However, the screen shot 150 differs from the screen shot 130 in that it includes a field grouping. A field grouping is a constraint set having a user defined logical relation between them, whereby other constraints such as a focus constraint or a filter constraint can be added to the entire set. In the example of the screen shot 150 a field grouping ‘bill tom’ is defined and the sales focus constraint is applied to the field grouping to provide the total sales of both salespersons.
Bill and Tom are selected from the list of possible variable constraints shown in the field 153 of the screen shot 150. When they are selected, and the add button is pressed, they are displayed in the field 156. Additionally, the add button 154 allows the user 12 to select from the same list of possible variable constraints and add the selections to the field grouping list 158. The field grouping list 158 thus shows that Bill and Tom have been added using the add button 154. The field grouping list is given the title ‘bill tom’ as shown in the field 157.
When a field grouping is defined in this manner it can be added to the category list as shown at category 152, which sets forth shown in the screen shot 160 the ‘bill tom’ field group. Using the add button 164 the ‘bill tom’ field group can be added to the selected variable constraints along with ‘salesperson/bill’ and ‘salesperson/tom’. When the generate chart button 166 is operated the graphical representation 170 is produced. The graphical representation 170 includes the total sales for Bill, as represented by the bar 172 and for Tom as represented by bar the 174 . Additionally, the graphical representation 170 includes a bar 176 representing the sum of the bars 172, 174 as determined by an additional call of the sum analytic within the graphical display process flow 40.
Referring now to
Other constraints that can be selected within the graphical display system 10 include the comparison constraint, the count analytic and the delta constraint. The comparison constraint allows the user 12 to select items for comparison with each of the selected x-axis values. The delta constraint permits two items to be subtracted to illustrate a change, typically the items are time to show a change between two time periods.
In addition to the sum analytic, the process flow 40 can include any analytic the user 12 defines. For example, the process flow 40 can include total and percent analytics for accounting. For descriptive statistics it can include analytics such as average, mean, count, distinct count, maximum, minimum, product and rank. Probability analytics include predictive statistics. Analytics for association rules, classification, Bayes classification, market basket and decision trees may be used for data mining. Furthermore, the process flow 40 can include different kinds of predictor analytics. For example, a single variable predictor analytic can be provided for returning the probability of a focus variable, wherein the probability of the focus variable can be the number of data records containing the focus variable divided by the total number of data records. Furthermore, the probabilities can be calculated in any other manner useful to the user 12.
A contexted classification analytic can be provided for returning the classification of a sample within context. This is determined by constraining a data set by the sample variables so that only the records containing all of the variables selected are considered. A Naive Bayes classification analytic can be provided to return the classification of a sample using Bayes theorem.
In the preferred embodiment of the invention the user 12 is permitted to perform all of the operations necessary to provide charts in a useful format. For example, using the GUI 16 the user can name the chart, display text relative to the axes of the chart and sort the chart data. The data can be sorted according to various parameters, such as name, value on the x-axis and comparisons. The values within each x value entry can be stacked and the percentages of the total for each value can be displayed. All settings provided by the user 12 can be saved.
While the invention has been described in detail and with reference to specific examples thereof, it will be apparent to one skilled in the art that various changes and modifications can be made therein without departing from the spirit and scope thereof.
Number | Name | Date | Kind |
---|---|---|---|
4286330 | Isaacson | Aug 1981 | A |
5245337 | Bugajski | Sep 1993 | A |
5293164 | Bugajski | Mar 1994 | A |
5592667 | Bugajski | Jan 1997 | A |
5630125 | Zellweger | May 1997 | A |
5634133 | Kelley | May 1997 | A |
5829004 | Au | Oct 1998 | A |
5894311 | Jackson | Apr 1999 | A |
5918229 | Davis et al. | Jun 1999 | A |
5930805 | Marquis | Jul 1999 | A |
5963965 | Vogel | Oct 1999 | A |
5966709 | Zhang | Oct 1999 | A |
5970490 | Morgenstern | Oct 1999 | A |
5978794 | Agrawal et al. | Nov 1999 | A |
5983232 | Zhang | Nov 1999 | A |
6018734 | Zhang | Jan 2000 | A |
6029170 | Garger | Feb 2000 | A |
6031993 | Andrews et al. | Feb 2000 | A |
6102958 | Meystel | Aug 2000 | A |
6115715 | Traversat et al. | Sep 2000 | A |
6138115 | Agrawal et al. | Oct 2000 | A |
6138117 | Bayardo | Oct 2000 | A |
6144962 | Weinberg et al. | Nov 2000 | A |
6160549 | Touma et al. | Dec 2000 | A |
6233575 | Agrawal et al. | May 2001 | B1 |
6275817 | Reed et al. | Aug 2001 | B1 |
6278987 | Reed et al. | Aug 2001 | B1 |
6286002 | Axaopoulos et al. | Sep 2001 | B1 |
6341281 | MacNicol et al. | Jan 2002 | B1 |
6356902 | Tan et al. | Mar 2002 | B1 |
6360224 | Chickering | Mar 2002 | B1 |
6373484 | Orell et al. | Apr 2002 | B1 |
6381600 | Lau | Apr 2002 | B1 |
6389406 | Reed et al. | May 2002 | B1 |
6394263 | McCrory | May 2002 | B1 |
6453314 | Chan et al. | Sep 2002 | B1 |
6470277 | Chin et al. | Oct 2002 | B1 |
6470344 | Kothuri et al. | Oct 2002 | B1 |
6473757 | Garofalakis et al. | Oct 2002 | B1 |
6477683 | Killian et al. | Nov 2002 | B1 |
6499026 | Smith et al. | Dec 2002 | B1 |
6505184 | Reed et al. | Jan 2003 | B1 |
6505205 | Kothuri et al. | Jan 2003 | B1 |
6581063 | Kirkman | Jun 2003 | B1 |
6591272 | Williams | Jul 2003 | B1 |
6604114 | Toong et al. | Aug 2003 | B1 |
6615202 | Ding et al. | Sep 2003 | B1 |
6624762 | End, III | Sep 2003 | B1 |
6635089 | Burkett et al. | Oct 2003 | B1 |
6662185 | Stark et al. | Dec 2003 | B1 |
6681225 | Uceda-Sosa et al. | Jan 2004 | B1 |
6684207 | Greenfield et al. | Jan 2004 | B1 |
6691109 | Bjornson et al. | Feb 2004 | B2 |
6704729 | Klein et al. | Mar 2004 | B1 |
6711585 | Copperman et al. | Mar 2004 | B1 |
6745194 | Burrows | Jun 2004 | B2 |
6748378 | Lavender et al. | Jun 2004 | B1 |
6751622 | Puri et al. | Jun 2004 | B1 |
6760720 | De Bellis | Jul 2004 | B1 |
6768995 | Thier et al. | Jul 2004 | B2 |
6769124 | Schoening et al. | Jul 2004 | B1 |
6799184 | Bhatt et al. | Sep 2004 | B2 |
6804688 | Kobayashi et al. | Oct 2004 | B2 |
6807541 | Bender et al. | Oct 2004 | B2 |
6816856 | Baskins et al. | Nov 2004 | B2 |
6826556 | Miller et al. | Nov 2004 | B1 |
6831668 | Cras et al. | Dec 2004 | B2 |
6868414 | Khanna et al. | Mar 2005 | B2 |
6900807 | Liongosari et al. | May 2005 | B1 |
6920608 | Davis | Jul 2005 | B1 |
6931401 | Gibson et al. | Aug 2005 | B2 |
6952736 | Westbrook | Oct 2005 | B1 |
6965892 | Uceda-Sosa et al. | Nov 2005 | B1 |
7027052 | Thorn et al. | Apr 2006 | B1 |
7228296 | Matsude | Jun 2007 | B2 |
20020124003 | Rajasekaran et al. | Sep 2002 | A1 |
20020138353 | Schreiber et al. | Sep 2002 | A1 |
20020143735 | Ayi et al. | Oct 2002 | A1 |
20020143783 | Bakalash et al. | Oct 2002 | A1 |
20020188613 | Chakraborty et al. | Dec 2002 | A1 |
20020194173 | Bjornson et al. | Dec 2002 | A1 |
20030009443 | Yatviskly | Jan 2003 | A1 |
20030033279 | Gibson et al. | Feb 2003 | A1 |
20030093424 | Chun et al. | May 2003 | A1 |
20030115176 | Bobroff et al. | Jun 2003 | A1 |
20030120651 | Bernstein | Jun 2003 | A1 |
20030204513 | Bumbulis | Oct 2003 | A1 |
20030204515 | Shadmon et al. | Oct 2003 | A1 |
20030217334 | Chung et al. | Nov 2003 | A1 |
20040107186 | Najork et al. | Jun 2004 | A1 |
20040133590 | Henderson et al. | Jul 2004 | A1 |
20040143571 | Bjornson et al. | Jul 2004 | A1 |
20040169654 | Walker et al. | Sep 2004 | A1 |
20040230560 | Elza et al. | Nov 2004 | A1 |
20040249781 | Anderson | Dec 2004 | A1 |
20050015383 | Harjanto | Jan 2005 | A1 |
20050050054 | Clark et al. | Mar 2005 | A1 |
20050060325 | Bakalash et al. | Mar 2005 | A1 |
20050071370 | Atschul et al. | Mar 2005 | A1 |
20050080800 | Parupudi et al. | Apr 2005 | A1 |
20050097108 | Wang et al. | May 2005 | A1 |
20050102294 | Coldewey | May 2005 | A1 |
20050149503 | Raghavachari | Jul 2005 | A1 |
20050171960 | Lomet | Aug 2005 | A1 |
20050179684 | Wallace | Aug 2005 | A1 |
20050198042 | Davis | Sep 2005 | A1 |
20050262108 | Gupta | Nov 2005 | A1 |
Number | Date | Country |
---|---|---|
0 079 465 | Jan 1985 | EP |
WO 9517783 | Jun 1995 | WO |
WO 9934307 | Jul 1999 | WO |
WO 0146834 | Jun 2001 | WO |
WO 02026498 | Aug 2002 | WO |
Number | Date | Country | |
---|---|---|---|
20060114255 A1 | Jun 2006 | US |